Fixed nvim stuff

This commit is contained in:
Dreaded_X 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,56 +1127,73 @@ 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:
for count in range(3, 0, -1):
if G_STOP.is_set():
raise KeyboardInterrupt
msg = 'Timeout. Will retry in {0} second{1} ...'.format(
count, 's' if count != 1 else '')
self.callback([msg])
time.sleep(1)
if attempt != ntries:
self.notify_retry()
self.timeout += limit
self.callback(['Retrying ...'])
else:
raise
return result
def notify_retry(self):
""" Retry required for command, notify user. """
for count in range(3, 0, -1):
if G_STOP.is_set():
raise KeyboardInterrupt
msg = 'Timeout. Will retry in {0} second{1} ...'.format(
count, 's' if count != 1 else '')
self.callback([msg])
time.sleep(1)
self.callback(['Retrying ...'])
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
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!'])
thrd.join(0.5)
tfile.seek(0)
result = [line.decode().rstrip() for line in tfile]
result = [line.decode('utf-8', 'replace').rstrip() for line in tfile]
if proc.returncode != 0:
msg = ['']
msg.extend(result)
raise CmdFailed(msg)
if self.proc.returncode != 0:
raise CmdFailed([''] + result)
return result
except:
if proc and proc.poll() is None:
os.killpg(proc.pid, signal.SIGTERM)
if self.clean:
self.clean()
self.terminate()
raise
finally:
os.remove(tfile.name)
return result
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>

@ -0,0 +1 @@
Subproject commit 0352ed9b1f8f6bb4b9cdc1c164b564573243aecc

@ -0,0 +1 @@
Subproject commit 8bc47fd1c40cdad9ea1f36c0cf13592c70ea65e9

@ -0,0 +1 @@
Subproject commit e4ba7abe5ccccc0ebea0e33a4e045f96311020d8

@ -0,0 +1 @@
Subproject commit 6011a6132c40d7f8fecadd7b44677f539289ea4c

@ -0,0 +1 @@
Subproject commit 0b44415a3302030b56755cc1135ca9ca57dc1ada

@ -0,0 +1 @@
Subproject commit c067932263fbb8add3c330485b14f31f791418f0

@ -0,0 +1 @@
Subproject commit 04b1b1de812f521a88e42df387695c5c6378eac2

@ -0,0 +1 @@
Subproject commit b3d9e18b081bfdfeec50af58fa7eb5a353a10675

@ -0,0 +1 @@
Subproject commit c9699feed1cc301826fdb36ad3bb37e14be1d4ea

@ -0,0 +1 @@
Subproject commit 14d14cf951c08fc88ca6c3e6f28fe47b99421e23

@ -0,0 +1 @@
Subproject commit 9373a8471cd968e5e4605c3487f80c9364d412b2

@ -0,0 +1 @@
Subproject commit 8cb1d88e475ac3c109f56ebd5379c07d3ed83a9f

@ -0,0 +1 @@
Subproject commit 754871fc6e523133921cb4f72b26111ff61cd7dd

@ -0,0 +1 @@
Subproject commit 23f471ad0f00e2fab097f9d67ffd770881d4b35a

View File

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

@ -1 +0,0 @@
Subproject commit 2fac015957895dffa6b298e3c028ac30560d015b

@ -1 +0,0 @@
Subproject commit d24ad6b301685cd3b9278420248cc780fdc8fc59

@ -1 +0,0 @@
Subproject commit 289094bce953f98c5c871ff28492b0034ade55b5

@ -1 +0,0 @@
Subproject commit 300c719b3e0348a65457109386ded3f32f7cd319

@ -1 +0,0 @@
Subproject commit bcf3de4fdffae45fc7c85b6b84a01b37177924aa

@ -1 +0,0 @@
Subproject commit c8bfeceb1fc92ad58f2ae6967cbfcd6fbcb0d6e7

@ -1 +0,0 @@
Subproject commit d39c7dbc83c07f36cf7a3287a30a51b3dfc4a0f4

@ -1 +0,0 @@
Subproject commit 4c128ee2fee6d97cc5c6089e7797b4ad536de2a4

@ -1 +0,0 @@
Subproject commit c13a277e2a14b9826682ad2bac89de59b98b3c8b

@ -1 +0,0 @@
Subproject commit cdc6d98a09db60d3dda58815616f78338cbdaa9d

@ -1 +0,0 @@
Subproject commit 0ae5d5ea9953d55768bede9759af636a773ce5a8

@ -1 +0,0 @@
Subproject commit c86c64508a5b0309040429460c3a13fb90ac708e

@ -1 +0,0 @@
Subproject commit 8a501edad81e8d4421bc58577373087c6b24478e

@ -1 +0,0 @@
Subproject commit 176452ead44118174ddad3502709a247d9c24bb4

@ -1 +0,0 @@
Subproject commit 1ec6af944e3bac5f8ccf0bfa18692a83828bde04

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"