Update Plug
This commit is contained in:
parent
4b5bc96115
commit
3ff7565a49
@ -193,6 +193,14 @@ function! s:ask_no_interrupt(...)
|
|||||||
endtry
|
endtry
|
||||||
endfunction
|
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()
|
function! plug#end()
|
||||||
if !exists('g:plugs')
|
if !exists('g:plugs')
|
||||||
return s:err('Call plug#begin() first')
|
return s:err('Call plug#begin() first')
|
||||||
@ -214,7 +222,7 @@ function! plug#end()
|
|||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
let plug = g:plugs[name]
|
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
|
let s:loaded[name] = 1
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
@ -1011,6 +1019,8 @@ function! s:update_impl(pull, force, args) abort
|
|||||||
let s:clone_opt .= ' -c core.eol=lf -c core.autocrlf=input'
|
let s:clone_opt .= ' -c core.eol=lf -c core.autocrlf=input'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let s:submodule_opt = s:git_version_requirement(2, 8) ? ' --jobs='.threads : ''
|
||||||
|
|
||||||
" Python version requirement (>= 2.7)
|
" Python version requirement (>= 2.7)
|
||||||
if python && !has('python3') && !ruby && !use_job && s:update.threads > 1
|
if python && !has('python3') && !ruby && !use_job && s:update.threads > 1
|
||||||
redir => pyv
|
redir => pyv
|
||||||
@ -1102,7 +1112,7 @@ function! s:update_finish()
|
|||||||
if !v:shell_error && filereadable(spec.dir.'/.gitmodules') &&
|
if !v:shell_error && filereadable(spec.dir.'/.gitmodules') &&
|
||||||
\ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir))
|
\ (s:update.force || has_key(s:update.new, name) || s:is_updated(spec.dir))
|
||||||
call s:log4(name, 'Updating submodules. This may take a while.')
|
call s:log4(name, 'Updating submodules. This may take a while.')
|
||||||
let out .= s:bang('git submodule update --init --recursive 2>&1', spec.dir)
|
let out .= s:bang('git submodule update --init --recursive'.s:submodule_opt.' 2>&1', spec.dir)
|
||||||
endif
|
endif
|
||||||
let msg = s:format_message(v:shell_error ? 'x': '-', name, out)
|
let msg = s:format_message(v:shell_error ? 'x': '-', name, out)
|
||||||
if v:shell_error
|
if v:shell_error
|
||||||
@ -1321,7 +1331,7 @@ while 1 " Without TCO, Vim stack is bound to explode
|
|||||||
|
|
||||||
let name = keys(s:update.todo)[0]
|
let name = keys(s:update.todo)[0]
|
||||||
let spec = remove(s:update.todo, name)
|
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 ...')
|
call s:log(new ? '+' : '*', name, pull ? 'Updating ...' : 'Installing ...')
|
||||||
redraw
|
redraw
|
||||||
@ -2214,7 +2224,7 @@ function! s:upgrade()
|
|||||||
let new = tmp . '/plug.vim'
|
let new = tmp . '/plug.vim'
|
||||||
|
|
||||||
try
|
try
|
||||||
let out = s:system(printf('git clone --depth 1 %s %s', s:plug_src, tmp))
|
let out = s:system(printf('git clone --depth 1 %s %s', s:shellesc(s:plug_src), s:shellesc(tmp)))
|
||||||
if v:shell_error
|
if v:shell_error
|
||||||
return s:err('Error upgrading vim-plug: '. out)
|
return s:err('Error upgrading vim-plug: '. out)
|
||||||
endif
|
endif
|
||||||
@ -2410,7 +2420,11 @@ function! s:diff()
|
|||||||
call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:')
|
call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:')
|
||||||
for [k, v] in plugs
|
for [k, v] in plugs
|
||||||
let range = origin ? '..origin/'.v.branch : 'HEAD@{1}..'
|
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)
|
if !empty(diff)
|
||||||
let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : ''
|
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)')))
|
call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)')))
|
||||||
|
Loading…
Reference in New Issue
Block a user