change &rtp manipulation

- make it append only (instead both append + prepend)
- which draws *_rm_a and *_add_a useless as &rtp order gets preserved
- benefits: simpler, faster, less code
This commit is contained in:
gmarik 2012-04-29 00:24:01 -05:00
parent 8e9b933ed4
commit 1e140c9f6b

View File

@ -1,14 +1,13 @@
func! vundle#config#bundle(arg, ...) func! vundle#config#bundle(arg, ...)
let bundle = vundle#config#init_bundle(a:arg, a:000) let bundle = vundle#config#init_bundle(a:arg, a:000)
call s:rtp_rm_a() call s:rtp_rm(bundle.rtpath)
call add(g:bundles, bundle) call add(g:bundles, bundle)
call s:rtp_add_a() call s:rtp_add(bundle.rtpath)
return bundle return bundle
endf endf
func! vundle#config#init() func! vundle#config#init()
if !exists('g:bundles') | let g:bundles = [] | endif if !exists('g:bundles') | let g:bundles = [] | endif
call s:rtp_rm_a()
let g:bundles = [] let g:bundles = []
endf endf
@ -64,30 +63,17 @@ func! s:parse_name(arg)
return {'name': name, 'uri': uri, 'name_spec': arg } return {'name': name, 'uri': uri, 'name_spec': arg }
endf endf
func! s:rtp_rm_a()
let paths = map(copy(g:bundles), 'v:val.rtpath')
let prepends = join(paths, ',')
let appends = join(paths, '/after,').'/after'
exec 'set rtp-='.fnameescape(prepends)
exec 'set rtp-='.fnameescape(appends)
endf
func! s:rtp_add_a()
let paths = map(copy(g:bundles), 'v:val.rtpath')
let prepends = join(paths, ',')
let appends = join(paths, '/after,').'/after'
exec 'set rtp^='.fnameescape(prepends)
exec 'set rtp+='.fnameescape(appends)
endf
func! s:rtp_rm(dir) abort func! s:rtp_rm(dir) abort
exec 'set rtp-='.fnameescape(expand(a:dir, 1)) exec 'set rtp-='.fnameescape(expand(a:dir, 1))
exec 'set rtp-='.fnameescape(expand(a:dir.'/after', 1)) exec 'set rtp-='.fnameescape(expand(a:dir.'/after', 1))
endf endf
func! s:rtp_add(dir) abort func! s:rtp_add(dir) abort
exec 'set rtp^='.fnameescape(expand(a:dir, 1)) exec 'set rtp+='.fnameescape(expand(a:dir, 1))
exec 'set rtp+='.fnameescape(expand(a:dir.'/after', 1)) let after_dir = expand(a:dir.'/after', 1)
if isdirectory(after_dir)
exec 'set rtp+='.fnameescape(after_dir)
end
endf endf
func! s:expand_path(path) abort func! s:expand_path(path) abort