summaryrefslogtreecommitdiffstats
path: root/autoload/plug.vim
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2018-11-07 10:44:44 +0100
committerAhmed Abdelhalim <[email protected]>2018-11-07 10:44:44 +0100
commita4f66ac3c1d589208e15c26442115969671fabb9 (patch)
tree665d9e69124ba26e07b22fea81555125d9bfb30d /autoload/plug.vim
parente526289f667b3946245ede41e7af238010e0ed5e (diff)
Update vim-plug
Diffstat (limited to 'autoload/plug.vim')
-rw-r--r--autoload/plug.vim18
1 files changed, 15 insertions, 3 deletions
diff --git a/autoload/plug.vim b/autoload/plug.vim
index 686dd47..4e05630 100644
--- a/autoload/plug.vim
+++ b/autoload/plug.vim
@@ -193,6 +193,14 @@ function! s:ask_no_interrupt(...)
endtry
endfunction
+function! s:lazy(plug, opt)
+ return has_key(a:plug, a:opt) &&
+ \ (empty(s:to_a(a:plug[a:opt])) ||
+ \ !isdirectory(a:plug.dir) ||
+ \ len(s:glob(s:rtp(a:plug), 'plugin')) ||
+ \ len(s:glob(s:rtp(a:plug), 'after/plugin')))
+endfunction
+
function! plug#end()
if !exists('g:plugs')
return s:err('Call plug#begin() first')
@@ -214,7 +222,7 @@ function! plug#end()
continue
endif
let plug = g:plugs[name]
- if get(s:loaded, name, 0) || !has_key(plug, 'on') && !has_key(plug, 'for')
+ if get(s:loaded, name, 0) || !s:lazy(plug, 'on') && !s:lazy(plug, 'for')
let s:loaded[name] = 1
continue
endif
@@ -1323,7 +1331,7 @@ while 1 " Without TCO, Vim stack is bound to explode
let name = keys(s:update.todo)[0]
let spec = remove(s:update.todo, name)
- let new = !isdirectory(spec.dir)
+ let new = empty(globpath(spec.dir, '.git', 1))
call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...')
redraw
@@ -2412,7 +2420,11 @@ function! s:diff()
call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:')
for [k, v] in plugs
let range = origin ? '..origin/'.v.branch : 'HEAD@{1}..'
- let diff = s:system_chomp('git log --graph --color=never '.join(map(['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range], 's:shellesc(v:val)')), v.dir)
+ let cmd = 'git log --graph --color=never '.join(map(['--pretty=format:%x01%h%x01%d%x01%s%x01%cr', range], 's:shellesc(v:val)'))
+ if has_key(v, 'rtp')
+ let cmd .= ' -- '.s:shellesc(v.rtp)
+ endif
+ let diff = s:system_chomp(cmd, v.dir)
if !empty(diff)
let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : ''
call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)')))