13 Commits

Author SHA1 Message Date
Tim Pope 552e5f0bf8 pathogen.vim 1.3 2011-03-10 17:50:22 -05:00
Tim Pope c8f5e6c63c Fix disabling /after in append_all_bundles
[Jeroen Budts]
2011-02-20 17:39:19 -05:00
Tim Pope a50ad7c80e Fix disabling /after directories [Jeroen Budts] 2011-02-20 14:55:02 -05:00
Sebastian Jaeger 968e87ef7f Skip empty directories in pathogen#helptags() 2010-11-07 12:44:24 -05:00
Tim Pope 52b091892c Fix broken function reference 2010-10-24 17:02:50 -04:00
Mathias Gumz 258c47fe06 Exclude bundles in g:pathogen_disabled 2010-10-24 12:48:53 -04:00
Leonardo Luz Almeida f4f79bc720 Fix appending "after" directories on Windows 2010-05-16 20:12:46 -04:00
Tim Pope 9dc6d067fb pathogen.vim 1.2 2010-01-16 19:33:07 -05:00
Tim Pope 40d808db13 Add email address 2010-01-16 18:53:32 -05:00
Tim Pope 720561a037 Add pathogen#uniq() 2010-01-16 16:30:47 -05:00
Tim Pope 7d171d5bd8 Consistently punctuate documentation 2010-01-16 16:14:10 -05:00
Tim Pope c2032bdd90 Add pathogen#helptags() 2010-01-15 02:45:42 -05:00
Tim Pope c3675bda5e Add pathogen#legacyjoin()
Older options like 'path' require you to escape spaces and newer ones
like 'runtimepath' break if you do.  This commit fixes join to not
escape spaces and adds legacyjoin to escape them.
2010-01-14 18:17:07 -05:00
+59 -17
View File
@@ -1,6 +1,6 @@
" pathogen.vim - path option manipulation
" Maintainer: Tim Pope
" Last Change: Oct 24, 2008
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Version: 1.3
" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
"
@@ -20,17 +20,20 @@ endfunction " }}}1
" Convert a list to a path.
function! pathogen#join(...) abort " {{{1
let i = 0
if type(a:1) == type(1) && a:1
let i = 1
let space = ' '
else
let i = 0
let space = ''
endif
let path = ""
while i < a:0
if type(a:000[i]) == type([])
let list = a:000[i]
let j = 0
while j < len(list)
let escaped = substitute(list[j],'[\\, ]','\\&','g')
if exists("+shellslash") && !&shellslash
let escaped = substitute(escaped,'^\(\w:\\\)\\','\1','')
endif
let escaped = substitute(list[j],'[,'.space.']\|\\[\,'.space.']\@=','\\&','g')
let path .= ',' . escaped
let j += 1
endwhile
@@ -42,32 +45,62 @@ function! pathogen#join(...) abort " {{{1
return substitute(path,'^,','','')
endfunction " }}}1
" \ on Windows unless shellslash is set, / everywhere else
" Convert a list to a path with escaped spaces for 'path', 'tag', etc.
function! pathogen#legacyjoin(...) abort " {{{1
return call('pathogen#join',[1] + a:000)
endfunction " }}}1
" Remove duplicates from a list.
function! pathogen#uniq(list) abort " {{{1
let i = 0
let seen = {}
while i < len(a:list)
if has_key(seen,a:list[i])
call remove(a:list,i)
else
let seen[a:list[i]] = 1
let i += 1
endif
endwhile
return a:list
endfunction " }}}1
" \ on Windows unless shellslash is set, / everywhere else.
function! pathogen#separator() abort " {{{1
return !exists("+shellslash") || &shellslash ? '/' : '\'
endfunction " }}}1
" Convenience wrapper around glob() which returns a list
" Convenience wrapper around glob() which returns a list.
function! pathogen#glob(pattern) abort " {{{1
let files = split(glob(a:pattern),"\n")
return map(files,'substitute(v:val,"[".pathogen#separator()."/]$","","")')
endfunction "}}}1
" Like pathogen#glob(), only limit the results to directories
" Like pathogen#glob(), only limit the results to directories.
function! pathogen#glob_directories(pattern) abort " {{{1
return filter(pathogen#glob(a:pattern),'isdirectory(v:val)')
endfunction "}}}1
" Prepend all subdirectories of path to the rtp, and append all after
" Checks if a bundle is 'disabled'. A bundle is considered 'disabled' if
" its 'basename()' is included in g:pathogen_disabled[]'.
function! pathogen#is_disabled(path) " {{{1
if !exists("g:pathogen_disabled")
return 0
endif
let sep = pathogen#separator()
return index(g:pathogen_disabled, strpart(a:path, strridx(a:path, sep)+1)) != -1
endfunction "}}}1
" Prepend all subdirectories of path to the rtp, and append all 'after'
" directories in those subdirectories.
function! pathogen#runtime_prepend_subdirectories(path) " {{{1
let sep = pathogen#separator()
let before = pathogen#glob_directories(a:path.sep."*[^~]")
let after = pathogen#glob_directories(a:path.sep."*[^~]".sep."after")
let before = filter(pathogen#glob_directories(a:path.sep."*[^~]"), '!pathogen#is_disabled(v:val)')
let after = filter(pathogen#glob_directories(a:path.sep."*[^~]".sep."after"), '!pathogen#is_disabled(v:val[0:-7])')
let rtp = pathogen#split(&rtp)
let path = expand(a:path)
call filter(rtp,'v:val[0:strlen(path)-1] !=# path')
let &rtp = pathogen#join(before + rtp + after)
let &rtp = pathogen#join(pathogen#uniq(before + rtp + after))
return &rtp
endfunction " }}}1
@@ -85,16 +118,25 @@ function! pathogen#runtime_append_all_bundles(...) " {{{1
let list = []
for dir in pathogen#split(&rtp)
if dir =~# '\<after$'
let list += pathogen#glob_directories(substitute(dir,'after$',name.sep.'*[^~]'.sep.'after','')) + [dir]
let list += filter(pathogen#glob_directories(substitute(dir,'after$',name,'').sep.'*[^~]'.sep.'after'), '!pathogen#is_disabled(v:val[0:-7])') + [dir]
else
let list += [dir] + pathogen#glob_directories(dir.sep.name.sep.'*[^~]')
let list += [dir] + filter(pathogen#glob_directories(dir.sep.name.sep.'*[^~]'), '!pathogen#is_disabled(v:val)')
endif
endfor
let &rtp = pathogen#join(list)
let &rtp = pathogen#join(pathogen#uniq(list))
return 1
endfunction
let s:done_bundles = ''
" }}}1
" Invoke :helptags on all non-$VIM doc directories in runtimepath.
function! pathogen#helptags() " {{{1
for dir in pathogen#split(&rtp)
if dir[0 : strlen($VIM)-1] !=# $VIM && isdirectory(dir.'/doc') && !empty(glob(dir.'/doc/*')) && (!filereadable(dir.'/doc/tags') || filewritable(dir.'/doc/tags'))
helptags `=dir.'/doc'`
endif
endfor
endfunction " }}}1
" vim:set ft=vim ts=8 sw=2 sts=2: