Fixed nvim stuff

This commit is contained in:
2015-11-30 16:04:45 +01:00
parent ed19b7e164
commit 5821f20967
46 changed files with 125 additions and 110 deletions

View File

@@ -399,7 +399,7 @@ function! s:lod(names, types)
endfunction
function! s:lod_ft(pat, names)
call s:lod(a:names, ['plugin', 'after/plugin'])
call s:lod(a:names, ['plugin', 'after/plugin', 'syntax', 'after/syntax'])
execute 'autocmd! PlugLOD FileType' a:pat
if exists('#filetypeplugin#FileType')
doautocmd filetypeplugin FileType
@@ -646,7 +646,7 @@ function! s:do(pull, force, todo)
endif
let installed = has_key(s:update.new, name)
let updated = installed ? 0 :
\ (a:pull && !empty(s:system_chomp('git log --pretty=format:"%h" "HEAD...HEAD@{1}"', spec.dir)))
\ (a:pull && index(s:update.errors, name) < 0 && !empty(s:system_chomp('git log --pretty=format:"%h" "HEAD...HEAD@{1}"', spec.dir)))
if a:force || installed || updated
execute 'cd' s:esc(spec.dir)
call append(3, '- Post-update hook for '. name .' ... ')
@@ -1050,17 +1050,17 @@ G_LOG_PROB = 1.0 / int(vim.eval('s:update.threads'))
G_STOP = thr.Event()
G_THREADS = {}
class BaseExc(Exception):
class PlugError(Exception):
def __init__(self, msg):
self._msg = msg
@property
def msg(self):
return self._msg
class CmdTimedOut(BaseExc):
class CmdTimedOut(PlugError):
pass
class CmdFailed(BaseExc):
class CmdFailed(PlugError):
pass
class InvalidURI(BaseExc):
class InvalidURI(PlugError):
pass
class Action(object):
INSTALL, UPDATE, ERROR, DONE = ['+', '*', 'x', '-']
@@ -1074,7 +1074,7 @@ class Buffer(object):
self.maxy = int(vim.eval('winheight(".")'))
self.num_plugs = num_plugs
def _where(self, name):
def __where(self, name):
""" Find first line with name in current buffer. Return line num. """
found, lnum = False, 0
matcher = re.compile('^[-+x*] {0}:'.format(name))
@@ -1103,8 +1103,7 @@ class Buffer(object):
def write(self, action, name, lines):
first, rest = lines[0], lines[1:]
msg = ['{0} {1}{2}{3}'.format(action, name, ': ' if first else '', first)]
padded_rest = [' ' + line for line in rest]
msg.extend(padded_rest)
msg.extend([' ' + line for line in rest])
try:
if action == Action.ERROR:
@@ -1114,7 +1113,7 @@ class Buffer(object):
self.bar += '='
curbuf = vim.current.buffer
lnum = self._where(name)
lnum = self.__where(name)
if lnum != -1: # Found matching line num
del curbuf[lnum]
if lnum > self.maxy and action in set([Action.INSTALL, Action.UPDATE]):
@@ -1128,27 +1127,40 @@ class Buffer(object):
pass
class Command(object):
def __init__(self, cmd, cmd_dir=None, timeout=60, ntries=3, cb=None, clean=None):
def __init__(self, cmd, cmd_dir=None, timeout=60, cb=None, clean=None):
self.cmd = cmd
self.cmd_dir = cmd_dir
self.timeout = timeout
self.ntries = ntries
self.callback = cb if cb else (lambda msg: None)
self.clean = clean
self.clean = clean if clean else (lambda: None)
self.proc = None
def attempt_cmd(self):
""" Tries to run the command, returns result if no exceptions. """
attempt = 0
finished = False
limit = self.timeout
@property
def alive(self):
""" Returns true only if command still running. """
return self.proc and self.proc.poll() is None
def execute(self, ntries=3):
""" Execute the command with ntries if CmdTimedOut.
Returns the output of the command if no Exception.
"""
attempt, finished, limit = 0, False, self.timeout
while not finished:
try:
attempt += 1
result = self.timeout_cmd()
result = self.try_command()
finished = True
return result
except CmdTimedOut:
if attempt != self.ntries:
if attempt != ntries:
self.notify_retry()
self.timeout += limit
else:
raise
def notify_retry(self):
""" Retry required for command, notify user. """
for count in range(3, 0, -1):
if G_STOP.is_set():
raise KeyboardInterrupt
@@ -1156,28 +1168,32 @@ class Command(object):
count, 's' if count != 1 else '')
self.callback([msg])
time.sleep(1)
self.timeout += limit
self.callback(['Retrying ...'])
else:
raise
return result
def timeout_cmd(self):
def try_command(self):
""" Execute a cmd & poll for callback. Returns list of output.
Raises CmdFailed -> return code for Popen isn't 0
Raises CmdTimedOut -> command exceeded timeout without new output
"""
proc = None
first_line = True
try:
tfile = tempfile.NamedTemporaryFile(mode='w+b', delete=False)
proc = subprocess.Popen(self.cmd, cwd=self.cmd_dir, stdout=tfile,
stderr=subprocess.STDOUT, shell=True, preexec_fn=os.setsid)
while proc.poll() is None:
# Yield this thread
time.sleep(0.2)
try:
tfile = tempfile.NamedTemporaryFile(mode='w+b')
self.proc = subprocess.Popen(self.cmd, cwd=self.cmd_dir, stdout=tfile,
stderr=subprocess.STDOUT, shell=True,
preexec_fn=os.setsid)
thrd = thr.Thread(target=(lambda proc: proc.wait()), args=(self.proc,))
thrd.start()
thread_not_started = True
while thread_not_started:
try:
thrd.join(0.1)
thread_not_started = False
except RuntimeError:
pass
while self.alive:
if G_STOP.is_set():
raise KeyboardInterrupt
@@ -1191,23 +1207,24 @@ class Command(object):
if time_diff > self.timeout:
raise CmdTimedOut(['Timeout!'])
tfile.seek(0)
result = [line.decode().rstrip() for line in tfile]
thrd.join(0.5)
if proc.returncode != 0:
msg = ['']
msg.extend(result)
raise CmdFailed(msg)
except:
if proc and proc.poll() is None:
os.killpg(proc.pid, signal.SIGTERM)
if self.clean:
self.clean()
raise
finally:
os.remove(tfile.name)
tfile.seek(0)
result = [line.decode('utf-8', 'replace').rstrip() for line in tfile]
if self.proc.returncode != 0:
raise CmdFailed([''] + result)
return result
except:
self.terminate()
raise
def terminate(self):
""" Terminate process and cleanup. """
if self.alive:
os.killpg(self.proc.pid, signal.SIGTERM)
self.clean()
class Plugin(object):
def __init__(self, name, args, buf_q, lock):
@@ -1228,7 +1245,7 @@ class Plugin(object):
self.install()
with self.lock:
thread_vim_command("let s:update.new['{0}'] = 1".format(self.name))
except (CmdTimedOut, CmdFailed, InvalidURI) as exc:
except PlugError as exc:
self.write(Action.ERROR, self.name, exc.msg)
except KeyboardInterrupt:
G_STOP.set()
@@ -1253,11 +1270,18 @@ class Plugin(object):
self.write(Action.INSTALL, self.name, ['Installing ...'])
callback = functools.partial(self.write, Action.INSTALL, self.name)
cmd = 'git clone {0} {1} --recursive {2} -b {3} {4} 2>&1'.format(
'' if self.tag else G_CLONE_OPT, G_PROGRESS, self.args['uri'], self.checkout, esc(target))
com = Command(cmd, None, G_TIMEOUT, G_RETRIES, callback, clean(target))
result = com.attempt_cmd()
'' if self.tag else G_CLONE_OPT, G_PROGRESS, self.args['uri'],
self.checkout, esc(target))
com = Command(cmd, None, G_TIMEOUT, callback, clean(target))
result = com.execute(G_RETRIES)
self.write(Action.DONE, self.name, result[-1:])
def repo_uri(self):
cmd = 'git rev-parse --abbrev-ref HEAD 2>&1 && git config remote.origin.url'
command = Command(cmd, self.args['dir'], G_TIMEOUT,)
result = command.execute(G_RETRIES)
return result[-1]
def update(self):
match = re.compile(r'git::?@')
actual_uri = re.sub(match, '', self.repo_uri())
@@ -1278,18 +1302,12 @@ class Plugin(object):
'git merge --ff-only {0}'.format(self.merge),
'git submodule update --init --recursive']
cmd = ' 2>&1 && '.join(cmds)
com = Command(cmd, self.args['dir'], G_TIMEOUT, G_RETRIES, callback)
result = com.attempt_cmd()
com = Command(cmd, self.args['dir'], G_TIMEOUT, callback)
result = com.execute(G_RETRIES)
self.write(Action.DONE, self.name, result[-1:])
else:
self.write(Action.DONE, self.name, ['Already installed'])
def repo_uri(self):
cmd = 'git rev-parse --abbrev-ref HEAD 2>&1 && git config remote.origin.url'
command = Command(cmd, self.args['dir'], G_TIMEOUT, G_RETRIES)
result = command.attempt_cmd()
return result[-1]
def write(self, action, name, msg):
self.buf_q.put((action, name, msg))
@@ -1326,7 +1344,7 @@ class RefreshThread(thr.Thread):
while self.running:
with self.lock:
thread_vim_command('noautocmd normal! a')
time.sleep(0.2)
time.sleep(0.33)
def stop(self):
self.running = False
@@ -1344,7 +1362,7 @@ def esc(name):
def nonblock_read(fname):
""" Read a file with nonblock flag. Return the last line. """
fread = os.open(fname, os.O_RDONLY | os.O_NONBLOCK)
buf = os.read(fread, 100000).decode()
buf = os.read(fread, 100000).decode('utf-8', 'replace')
os.close(fread)
line = buf.rstrip('\r\n')

View File

@@ -1,4 +1,4 @@
call plug#begin('~/.dotfiles/nvim/.nvim/plugged')
call plug#begin('~/.dotfiles/nvim/.config/nvim/plugged')
Plug 'kien/ctrlp.vim'
Plug 'FelikZ/ctrlp-py-matcher'
Plug 'Raimondi/delimitMate'
@@ -13,22 +13,18 @@ Plug 'tommcdo/vim-exchange'
Plug 'justinmk/vim-matchparenalways'
Plug 'tpope/vim-surround'
Plug 'christoomey/vim-tmux-navigator'
Plug 'vim-scripts/OmniCppComplete'
Plug 'ervandew/supertab'
Plug 'MarcWeber/vim-addon-mw-utils'
Plug 'tomtom/tlib_vim'
Plug 'garbas/vim-snipmate'
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'beyondmarc/glsl.vim'
Plug 'tpope/vim-dispatch'
Plug 'freitass/todo.txt-vim'
Plug 'tpope/vim-unimpaired'
Plug 'milkypostman/vim-togglelist'
Plug 'Valloric/YouCompleteMe'
call plug#end()
let g:neomake_airline=1
" let g:ctrlp_match_func = { 'match': 'pymatcher#PyMatch' }
let g:ctrlp_custom_ignore = '\v[\/](bin|obj)$'
let delimitMate_expand_cr = 1
@@ -38,9 +34,9 @@ set t_Co=256
set t_ZH=
set t_ZR=
set background=dark
" set background=light
let g:indentLine_char = '│'
let g:indentLine_color_term = 239
" map <silent> <M-a> :NERDTreeToggle<cr>
map <silent> <F2> :NERDTreeToggle<cr>
@@ -57,18 +53,20 @@ map <M-j> :TmuxNavigateDown<cr>
map <M-k> :TmuxNavigateUp<cr>
map <M-l> :TmuxNavigateRight<cr>
set omnifunc=syntaxcomplete#Complete " override built-in C omnicomplete with C++ OmniCppComplete plugin
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_DisplayMode = 1
let OmniCpp_ShowScopeInAbbr = 0 "do not show namespace in pop-up
let OmniCpp_ShowPrototypeInAbbr = 1 "show prototype in pop-up
let OmniCpp_ShowAccess = 1 "show access in pop-up
let OmniCpp_SelectFirstItem = 1 "select first item in pop-up
set completeopt=menuone,menu,longest
" set omnifunc=syntaxcomplete#Complete " override built-in C omnicomplete with C++ OmniCppComplete plugin
" let OmniCpp_GlobalScopeSearch = 1
" let OmniCpp_DisplayMode = 1
" let OmniCpp_ShowScopeInAbbr = 0 "do not show namespace in pop-up
" let OmniCpp_ShowPrototypeInAbbr = 1 "show prototype in pop-up
" let OmniCpp_ShowAccess = 1 "show access in pop-up
" let OmniCpp_SelectFirstItem = 1 "select first item in pop-up
let g:SuperTabDefaultCompletionType = "<C-X><C-O>"
set completeopt=menuone,menu,preview
let g:ycm_confirm_extra_conf = 0
let g:ycm_error_symbol = ''
let g:ycm_warning_symbol = ''
" let g:SuperTabDefaultCompletionType = "<c-n>"
let g:UltiSnipsExpandTrigger="<c-s>"
syntax on
filetype plugin indent on
@@ -82,7 +80,8 @@ set shiftwidth=4
set noexpandtab
set completeopt-=preview
set cinkeys=0{,0},0),:,!^F,o,O,e
" I do not remember what this is for
" set cinkeys=0{,0},0),:,!^F,o,O,e
map <silent> <tab> :bn<cr>
map <silent> <S-tab> :bp<cr>
@@ -90,15 +89,11 @@ map <silent> <S-tab> :bp<cr>
map <S-J> 10j
map <S-K> 10k
" map <silent> <F9> :make<cr>:cw<cr>
if $HOST != "hefaistos"
map <F9> :Make<cr>
map <F10> :Make debug<cr>
else
map <F9> :Make CONFIG=legacy<cr>
map <F10> :Make CONFIG=legacy debug<cr>
endif
map <F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
autocmd FileType cpp map <F9> :Make<cr>
autocmd FileType cpp map <F10> :Make debug<cr>
autocmd FileType cpp map <F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
autocmd FileType tex map <F9> :!arara %<cr>
map <silent> <F4> :call ToggleQuickfixList()<cr>
map <silent> <F5> :e ./todo/todo.txt<cr>

Submodule nvim/.config/nvim/plugged/YouCompleteMe added at 0352ed9b1f

Submodule nvim/.config/nvim/plugged/delimitMate added at 8bc47fd1c4

Submodule nvim/.config/nvim/plugged/gruvbox added at e4ba7abe5c

Submodule nvim/.config/nvim/plugged/indentLine added at 6011a6132c

Submodule nvim/.config/nvim/plugged/nerdtree added at 0b44415a33

Submodule nvim/.config/nvim/plugged/tcomment_vim added at c067932263

Submodule nvim/.config/nvim/plugged/tlib_vim added at 04b1b1de81

Submodule nvim/.config/nvim/plugged/todo.txt-vim added at b3d9e18b08

Submodule nvim/.config/nvim/plugged/ultisnips added at c9699feed1

Submodule nvim/.config/nvim/plugged/vim-airline added at 14d14cf951

Submodule nvim/.config/nvim/plugged/vim-exchange added at 9373a8471c

Submodule nvim/.config/nvim/plugged/vim-snippets added at 8cb1d88e47

Submodule nvim/.config/nvim/plugged/vim-tmux-navigator added at 754871fc6e

Submodule nvim/.config/nvim/plugged/vim-unimpaired added at 23f471ad0f

View File

@@ -8,6 +8,6 @@ snippet header
#endif
snippet incl
# include "Standard.h"
#include "standard.h"
${0}

Submodule nvim/.nvim/plugged/OmniCppComplete deleted from 2fac015957

Submodule nvim/.nvim/plugged/delimitMate deleted from d24ad6b301

Submodule nvim/.nvim/plugged/gruvbox deleted from 289094bce9

Submodule nvim/.nvim/plugged/indentLine deleted from 300c719b3e

Submodule nvim/.nvim/plugged/nerdtree deleted from bcf3de4fdf

Submodule nvim/.nvim/plugged/supertab deleted from c8bfeceb1f

Submodule nvim/.nvim/plugged/tcomment_vim deleted from d39c7dbc83

Submodule nvim/.nvim/plugged/tlib_vim deleted from 4c128ee2fe

Submodule nvim/.nvim/plugged/todo.txt-vim deleted from c13a277e2a

Submodule nvim/.nvim/plugged/vim-airline deleted from cdc6d98a09

Submodule nvim/.nvim/plugged/vim-exchange deleted from 0ae5d5ea99

Submodule nvim/.nvim/plugged/vim-snipmate deleted from c86c64508a

Submodule nvim/.nvim/plugged/vim-snippets deleted from 8a501edad8

Submodule nvim/.nvim/plugged/vim-tmux-navigator deleted from 176452ead4

Submodule nvim/.nvim/plugged/vim-unimpaired deleted from 1ec6af944e

View File

@@ -13,6 +13,9 @@ export PATH="/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/
export PATH="$HOME/.local/bin:$PATH"
export PATH="$HOME/.local/bin/scripts:$PATH"
export TERM="screen-256color"
export SAL_USE_VCLPLUGIN="gtk"
export GOPATH="$HOME/.local/go"
export PATH="$HOME/.local/go/bin:$PATH"
#setting aliases
alias cl="clear"