6 Commits

Author SHA1 Message Date
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
+44 -12
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.2
" 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,18 +45,38 @@ 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
@@ -67,7 +90,7 @@ function! pathogen#runtime_prepend_subdirectories(path) " {{{1
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
@@ -90,11 +113,20 @@ function! pathogen#runtime_append_all_bundles(...) " {{{1
let list += [dir] + pathogen#glob_directories(dir.sep.name.sep.'*[^~]')
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') && (!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: