diff --git a/autoload/vundle.vim b/autoload/vundle.vim index d3b5d77..7ca0724 100644 --- a/autoload/vundle.vim +++ b/autoload/vundle.vim @@ -8,40 +8,39 @@ let g:vundle_loaded = 1 au BufRead,BufNewFile {bundlerc} set ft=vim -com! -nargs=+ Bundle call vundle#new_bundle() +com! -nargs=+ Bundle call vundle#add_bundle() com! -nargs=0 BundleInstall call vundle#install_bundles() com! -nargs=0 BundleDocs call vundle#helptagify_bundles() let g:bundle_dir = expand('~/.vim/bundle/') -func! vundle#add_bundle(uri, opts) +func! vundle#rc() + let g:bundles = [] +endf + +func! vundle#add_bundle(...) + let [uri; rest] = a:000 | let opts = {} + if len(rest) == 1 | let opts = rest[0] | endif + let bundle = vundle#new_bundle(uri, opts) + call vundle#require_bundle(bundle) +endf + +func! vundle#new_bundle(uri, opts) let bundle = a:opts let bundle.uri = a:uri - let bundle.name = split(a:uri,'\/')[-1] " potentially break on Windows + let bundle.name = split(a:uri,'\/')[-1] let bundle.path = expand(g:bundle_dir.''.bundle.name) let bundle.rtpath = has_key(bundle, 'rtp') ? join([bundle.path, bundle.rtp], '/') : bundle.path call add(g:bundles, bundle) return bundle endf -func! vundle#new_bundle(...) - let [uri; rest] = a:000 | let opts = {} - if len(rest) == 1 | let opts = rest[0] | endif - let bundle = vundle#add_bundle(uri, opts) - call vundle#require_bundle(bundle) -endf - -func! vundle#rc() - let &rtp = join(filter(split(&rtp, ','),'v:val !~# g:bundle_dir'), ',') - let g:bundles = [] -endf - func! vundle#require_bundle(bundle) - let rtp = filter(split(&rtp, ','),'v:val !~# a:bundle.path') - let after = [] | let before = [] - let path = s:RuntimePath(a:bundle) - let before += path[0] | let after += path[1] - let &rtp = join(before + rtp + after, ',') + let dir = a:bundle.rtpath + exec 'set rtp^='.dir + let after = expand(dir.'/after') | if isdirectory(after) + exec 'set rtp+='.after + endif endf func! vundle#install_bundles() @@ -69,10 +68,3 @@ func! vundle#helptagify_bundles() endif endfor endf - -func! s:RuntimePath(bundle) - let before = [a:bundle.rtpath] | let after = [] - let after_dir = expand(a:bundle.rtpath.'/'.'after') - if isdirectory(after_dir) | let after = [after_dir] | endif - return [before, after] -endf