Merge pull request #16 from CD3/load-order

Respect plug load order (for dependencies)
This commit is contained in:
Junegunn Choi 2014-03-30 12:08:33 +09:00
commit 0c1744a819

View File

@ -88,6 +88,8 @@ function! plug#begin(...)
let g:plug_home = home
let g:plugs = {}
" we want to keep track of the order plugins where registered.
let g:plugs_order = []
command! -nargs=+ Plug call s:add(1, <args>)
command! -nargs=* PlugInstall call s:install(<f-args>)
@ -110,7 +112,12 @@ function! plug#end()
endwhile
filetype off
for plug in values(g:plugs)
" we want to make sure the plugin directories are added to rtp in the same
" order that they are registered with the Plug command. since the s:add_rtp
" function uses ^= to add plugin directories to the front of the rtp, we
" need to loop through the plugins in reverse
for name in reverse(copy(g:plugs_order))
let plug = g:plugs[name]
if has_key(plug, 'on')
let commands = type(plug.on) == 1 ? [plug.on] : plug.on
for cmd in commands
@ -221,6 +228,7 @@ function! s:add(...)
let dir = s:dirpath( fnamemodify(join([g:plug_home, name], '/'), ':p') )
let spec = extend(opts, { 'dir': dir, 'uri': uri })
let g:plugs[name] = spec
let g:plugs_order += [name]
endfunction
function! s:install(...)