Extend plug#load to process a list of names instead of varargs

Allows `call plug#load(keys(g:plugs))` for manually loading all plugins
at once. Close #638.
This commit is contained in:
Junegunn Choi
2017-06-06 16:17:30 +09:00
parent 06992bcfb9
commit 802b100415
2 changed files with 9 additions and 2 deletions

View File

@@ -442,12 +442,13 @@ function! plug#load(...)
if !exists('g:plugs')
return s:err('plug#begin was not called')
endif
let unknowns = filter(copy(a:000), '!has_key(g:plugs, v:val)')
let names = a:0 == 1 && type(a:1) == s:TYPE.list ? a:1 : a:000
let unknowns = filter(copy(names), '!has_key(g:plugs, v:val)')
if !empty(unknowns)
let s = len(unknowns) > 1 ? 's' : ''
return s:err(printf('Unknown plugin%s: %s', s, join(unknowns, ', ')))
end
let unloaded = filter(copy(a:000), '!get(s:loaded, v:val, 0)')
let unloaded = filter(copy(names), '!get(s:loaded, v:val, 0)')
if !empty(unloaded)
for name in unloaded
call s:lod([name], ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin'])