aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncaen <mail@duncano.de>2017-02-05 02:15:34 +0100
committerDuncaen <mail@duncano.de>2017-02-05 02:15:34 +0100
commit4aade0b49c3d889e9563435476022281b60ddf8c (patch)
tree617250cee10aef788eae0b8c0696764615ea0395
parent7f1988c1f729ff0a6382aae7996567188876fded (diff)
downloaddotfiles-4aade0b49c3d889e9563435476022281b60ddf8c.tar.gz
vim: update vimplug
-rw-r--r--vim/autoload/plug.vim48
1 files changed, 34 insertions, 14 deletions
diff --git a/vim/autoload/plug.vim b/vim/autoload/plug.vim
index d16afe8..f7564ea 100644
--- a/vim/autoload/plug.vim
+++ b/vim/autoload/plug.vim
@@ -18,7 +18,7 @@
" " Any valid git URL is allowed
" Plug 'https://github.com/junegunn/vim-github-dashboard.git'
"
-" " Group dependencies, vim-snippets depends on ultisnips
+" " Multiple Plug commands can be written in a single line using | separators
" Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
"
" " On-demand loading
@@ -40,7 +40,7 @@
" " Unmanaged plugin (manually installed and updated)
" Plug '~/my-prototype-plugin'
"
-" " Add plugins to &runtimepath
+" " Initialize plugin system
" call plug#end()
"
" Then reload .vimrc and :PlugInstall to install plugins.
@@ -61,7 +61,7 @@
" More information: https://github.com/junegunn/vim-plug
"
"
-" Copyright (c) 2016 Junegunn Choi
+" Copyright (c) 2017 Junegunn Choi
"
" MIT License
"
@@ -426,7 +426,10 @@ function! s:dobufread(names)
let path = s:rtp(g:plugs[name]).'/**'
for dir in ['ftdetect', 'ftplugin']
if len(finddir(dir, path))
- return s:doautocmd('BufRead')
+ if exists('#BufRead')
+ doautocmd BufRead
+ endif
+ return
endif
endfor
endfor
@@ -919,7 +922,8 @@ function! s:check_ruby()
endfunction
function! s:update_impl(pull, force, args) abort
- let args = copy(a:args)
+ let sync = index(a:args, '--sync') >= 0 || has('vim_starting')
+ let args = filter(copy(a:args), 'v:val != "--sync"')
let threads = (len(args) > 0 && args[-1] =~ '^[1-9][0-9]*$') ?
\ remove(args, -1) : get(g:, 'plug_threads', 16)
@@ -955,7 +959,7 @@ function! s:update_impl(pull, force, args) abort
let use_job = s:nvim || s:vim8
let python = (has('python') || has('python3')) && !use_job
- let ruby = has('ruby') && !use_job && (v:version >= 703 || v:version == 702 && has('patch374')) && !(s:is_win && has('gui_running')) && s:check_ruby()
+ let ruby = has('ruby') && !use_job && (v:version >= 703 || v:version == 702 && has('patch374')) && !(s:is_win && has('gui_running')) && threads > 1 && s:check_ruby()
let s:update = {
\ 'start': reltime(),
@@ -1020,7 +1024,7 @@ function! s:update_impl(pull, force, args) abort
endtry
else
call s:update_vim()
- while use_job && has('vim_starting')
+ while use_job && sync
sleep 100m
if s:update.fin
break
@@ -1153,7 +1157,7 @@ function! s:job_cb(fn, job, ch, data)
call call(a:fn, [a:job, a:data])
endfunction
-function! s:nvim_cb(job_id, data, event) abort
+function! s:nvim_cb(job_id, data, event) dict abort
return a:event == 'stdout' ?
\ s:job_cb('s:job_out_cb', self, 0, join(a:data, "\n")) :
\ s:job_cb('s:job_exit_cb', self, 0, a:data)
@@ -1181,7 +1185,7 @@ function! s:spawn(name, cmd, opts)
\ 'Invalid arguments (or job table is full)']
endif
elseif s:vim8
- let jid = job_start(argv, {
+ let jid = job_start(s:is_win ? join(argv, ' ') : argv, {
\ 'out_cb': function('s:job_cb', ['s:job_out_cb', job]),
\ 'exit_cb': function('s:job_cb', ['s:job_exit_cb', job]),
\ 'out_mode': 'raw'
@@ -2013,10 +2017,21 @@ function! s:git_validate(spec, check_branch)
\ branch, a:spec.branch)
endif
if empty(err)
- let commits = len(s:lines(s:system(printf('git rev-list origin/%s..HEAD', a:spec.branch), a:spec.dir)))
- if !v:shell_error && commits
- let err = join([printf('Diverged from origin/%s by %d commit(s).', a:spec.branch, commits),
- \ 'Reinstall after PlugClean.'], "\n")
+ let [ahead, behind] = split(s:lastline(s:system(printf(
+ \ 'git rev-list --count --left-right HEAD...origin/%s',
+ \ a:spec.branch), a:spec.dir)), '\t')
+ if !v:shell_error && ahead
+ if behind
+ " Only mention PlugClean if diverged, otherwise it's likely to be
+ " pushable (and probably not that messed up).
+ let err = printf(
+ \ "Diverged from origin/%s (%d commit(s) ahead and %d commit(s) behind!\n"
+ \ .'Backup local changes and run PlugClean and PlugUpdate to reinstall it.', a:spec.branch, ahead, behind)
+ else
+ let err = printf("Ahead of origin/%s by %d commit(s).\n"
+ \ .'Cannot update until local changes are pushed.',
+ \ a:spec.branch, ahead)
+ endif
endif
endif
endif
@@ -2277,7 +2292,12 @@ function! s:preview_commit()
wincmd P
endif
setlocal previewwindow filetype=git buftype=nofile nobuflisted modifiable
- execute 'silent %!cd' s:shellesc(g:plugs[name].dir) '&& git show --no-color --pretty=medium' sha
+ try
+ let [sh, shrd] = s:chsh(1)
+ execute 'silent %!cd' s:shellesc(g:plugs[name].dir) '&& git show --no-color --pretty=medium' sha
+ finally
+ let [&shell, &shellredir] = [sh, shrd]
+ endtry
setlocal nomodifiable
nnoremap <silent> <buffer> q :q<cr>
wincmd p