125 Commits

Author SHA1 Message Date
Tim Pope bd0c1abcce pathogen.vim 2.3
* Deprecation warnings.
* Introduce pathogen#interpose() to replace incubate().
* Fix glob issues with fish shell.
* Silence all errors in :helptags.
2014-03-21 15:02:02 -04:00
Tim Pope 50531a4102 Make pathogen#uniq unofficial 2014-03-21 15:01:14 -04:00
Tim Pope 2d3784070d Move s:warn down with deprecations 2014-03-21 14:46:14 -04:00
Tim Pope 60c6fd24cf Move unofficial/deprecated functions to separate sections 2014-03-21 14:03:00 -04:00
Tim Pope af23f56f42 Fix message 2014-03-20 17:48:55 -04:00
Tim Pope a341581743 Fix zero arity invocation of runtime_append_all_bundles 2014-03-20 16:59:45 -04:00
Tim Pope 0230129c50 Steer people to pathogen#infect() in deprecations 2014-03-20 15:16:53 -04:00
Tim Pope 5cb9a24de8 Swap out deprecated functions for their replacements 2014-03-20 15:14:33 -04:00
Tim Pope d7be5c7712 Start renaming pathogen_disabled to pathogen_blacklist 2014-03-20 03:09:46 -04:00
Tim Pope 0f43888aba Don't redundantly filter ~ suffixes
This is already handled by glob() due to the 'suffixes' option
2014-03-20 02:59:22 -04:00
Tim Pope 8c54b5ec0d Alias pathogen#interpose() to incubate()
We can do better than cutesy.
2014-03-20 00:32:28 -04:00
Tim Pope 3bc4b397b2 Typo fix 2014-03-19 19:12:28 -04:00
Tim Pope 543041b3ca Better check for help files in doc directory 2014-03-19 12:38:40 -04:00
Tim Pope f45c82a760 Document session options limitations
References #16.
2014-03-18 22:40:55 -04:00
Tim Pope c9ca3770db Use a dictionary to track done bundles 2014-03-17 23:08:24 -04:00
Tim Pope 698239024b Ignore non-string arguments to infect
Allow for an options dictionary to be passed in the future.
2014-03-17 22:34:30 -04:00
Tim Pope 16a1a84072 pathogen#slash() alias for pathogen#separator() 2014-03-17 17:58:20 -04:00
Will Gray 1270dceb1f Update comment to match readme 2013-07-13 22:33:54 -04:00
Tim Pope f1926ab673 Use fnameescape not =... 2013-03-21 13:18:03 -04:00
Tim Pope 0c3769d94e Always warn on deprecated API 2013-03-21 13:12:08 -04:00
Tim Pope 2c14c6095e Silence errors in :helptags
Closes #90.
2013-03-21 13:11:43 -04:00
Tim Pope 3111f06b70 Add a CONTRIBUTING file
Leave the README section in place, as we link to it from all over the
place.
2013-03-10 16:07:37 -04:00
Tim Pope a517eed987 Fix glob issues with fish shell
Closes #83.
2013-02-27 20:42:14 -05:00
Tim Pope 74ae96483b Fix typo 2013-02-27 20:41:50 -05:00
Tim Pope 12c3483515 Fix typo in README
Closes #86.
2013-02-16 21:38:16 -05:00
Tim Pope f195ac5e40 pathogen.vim 2.2
* Accept multiple arguments to pathogen#infect().
* Fix errors in deprecated methods.
2013-01-14 17:54:17 -05:00
Maksim Ryzhikov 1050a784cc Fix error in pathogen#runtime_append_all_bundles 2013-01-14 16:22:57 -05:00
Tim Pope 6cfc5e7759 Fix errors on attempt to warn
Closes #81.
2013-01-14 13:30:43 -05:00
Tim Pope 1b7f130f57 Revert "Point README at stable release"
This reverts commit 95c285e426.
2013-01-13 23:27:54 -05:00
Tim Pope 98659f0af7 Fix multiple arguments to pathogen#infect 2013-01-13 23:17:14 -05:00
Tim Pope a860d000e1 Reveal multiple arguments form of pathogen#infect 2013-01-13 23:09:15 -05:00
Tim Pope 92ca2e574b Accept multiple arguments to pathogen#infect() 2013-01-13 22:55:33 -05:00
Tim Pope 95c285e426 Point README at stable release 2013-01-13 21:06:33 -05:00
Tim Pope a04bd7a195 pathogen.vim 2.1
* Deprecate :Vopen commands in favor of scriptease.vim.
* Deprecate pathogen#infect() calls on paths without explicit globs.
* Introduce pathogen#incubate().
* Deprecate pathogen#runtime_append_all_bundles().
* Introduce pathogen#surround().
* Deprecate pathogen#runtime_prepend_subdirectories().
* Allow absolute paths in g:pathogen_disabled.
2013-01-13 20:27:34 -05:00
Tim Pope a1b2b09e6a Mention deprecation of runtime_prepend_subdirectories 2013-01-13 19:52:43 -05:00
Tim Pope a2f7e9b93f Change incubate to be consistent with surround 2013-01-13 19:45:39 -05:00
Tim Pope 6c741e636a Provide more actionable warnings 2013-01-13 19:17:00 -05:00
Tim Pope 0533e25018 Allow incubate('bundle/{}')
I don't know if this is going to be a supported API, but since this is a
transitional release, let's keep our options open.
2013-01-13 18:27:30 -05:00
Tim Pope 268c6a06c4 Don't use underscored markdown headers
These can confuse the syntax highlighter, and the === version looks like
a conflict marker.
2013-01-13 18:26:49 -05:00
Tim Pope 40dcd3743b Treat infect("~/foo/") as infect("/foo/{}") 2013-01-13 17:46:54 -05:00
Tim Pope 34eff0f3e4 Allow executing multiple commands 2013-01-13 12:56:59 -05:00
Tim Pope 5c657cbe99 Fix :Helptags for globs in path 2013-01-12 03:04:10 -05:00
Tim Pope 619f9ed386 Recommend *, not {}
This looks less weird.  People who want to disable can look it up in the
docs.
2013-01-12 02:55:39 -05:00
Tim Pope f79f1bb82b Clarify difference between {} and * 2013-01-12 02:49:44 -05:00
Tim Pope 54f9afb244 Allow wildcards in pathogen#infect() 2013-01-12 02:48:26 -05:00
Tim Pope bb6c0b8f5b Add missing abort declarations 2013-01-12 02:42:44 -05:00
Tim Pope 5eafb23d9b Don't truncate non-existent directory 2013-01-12 02:27:10 -05:00
Tim Pope d10ce854fc Strip trailing slashes is pathogen#surround() 2013-01-11 23:39:37 -05:00
Tim Pope 34b4567be4 Fix missing fold marker 2013-01-11 23:39:37 -05:00
Tim Pope f467f117c1 Fix typo 2013-01-11 23:20:27 -05:00
Tim Pope 07e7b35aef Actually try things before you commit 2013-01-11 23:12:29 -05:00
Tim Pope 6aa1bbf839 Introduce pathogen#surround() 2013-01-11 22:48:57 -05:00
Tim Pope df8f1b0b30 Rename pathogen#runtime_append_all_bundles
Better a cute name than a verbose yet still cryptic one.
2013-01-11 22:17:03 -05:00
Tim Pope 1fde396c57 Allow/encourage infect paths ending in /{}
I want to break this API.
2013-01-11 22:00:15 -05:00
Tim Pope 5bcf824e21 Formally deprecate :Vopen family 2013-01-11 21:33:02 -05:00
Tim Pope c0dbda5258 Allow disabling absolute path 2013-01-11 19:10:22 -05:00
Tim Pope da1c3c08ed Plug sensible.vim 2013-01-06 14:03:44 -05:00
Tim Pope 532f0ca7d9 Change :call to :execute
I have some ideas about uses for this, such as returning :finish if an
environment variable tells us to skip the vimrc.
2013-01-06 14:03:24 -05:00
Tim Pope 47523d9bc0 Allow for :exe pathogen#infect()
Idea: Return 'finish' here if an environment variable says to skip the
rest of the vimrc.
2013-01-01 21:29:22 -05:00
Tim Pope 1b46b4f991 Remove advice around filetype on
Closes #80.
2012-12-20 09:35:21 -05:00
Tim Pope e5f413f480 Promote scriptease.vim 2012-12-10 20:33:51 -05:00
Tim Pope 49e6d62fb1 Don't override existing :Vedit commands
Guess what my next plugin is going to be.
2012-11-11 10:55:39 -05:00
Tim Pope 96b5726ef3 Drop wget from install instructions
Who's in the wget-but-not-curl boat, anyways?
2012-09-24 13:21:17 -04:00
Tim Pope 11e39a169a Simplify modeline 2012-08-01 15:27:49 -04:00
Tim Pope 5e3fdd3a8a Fix :Vopen tab complete of a/b on Windows
Closes #70.
2012-07-30 11:37:01 -04:00
Tim Pope 2f9fd6de08 Fix :V* commands when file isn't found 2012-07-28 10:55:32 -04:00
Tim Pope 09f2c3b7d3 Fix the URL that GitHub broke
Closes #61.
2012-05-01 20:41:34 -04:00
Alex Efros c9fb89dd6e Fix error in :Helptags
Error happens if ~/.vim/doc/ doesn't contain
any files, but contain some subdirectories.
2012-02-23 16:47:04 -05:00
Tim Pope ab64b4ddd0 Support :Vedit on versions prior to 7.1.299 2011-11-06 02:23:33 -05:00
Tim Pope 00ce0614f0 Don't choke on :Vopen 123.txt
Closes #49.
2011-10-20 02:31:44 -04:00
Tim Pope 4462567926 Fix count argument to :V commands 2011-10-20 02:30:12 -04:00
mattn 4676508001 Expand path in complete candidates 2011-10-20 02:23:05 -04:00
Jared Grippe 7701d82201 Fix typo 2011-09-25 02:26:55 -04:00
Daniel Bolton a32131ce19 Chain install commands; fix curl opts/output 2011-09-18 02:23:45 -04:00
Tim Pope af1361a446 Clarify copyright 2011-09-18 02:23:45 -04:00
Tim Pope 9631019a3e Really fix pathogen#uniq() with empty strings 2011-08-27 17:41:34 -04:00
Tim Pope fbd0cc7040 Account for empty item in pathogen#uniq() 2011-08-27 17:30:22 -04:00
Tim Pope cb9717bba1 Provide cross-platform way to load from submodule
Closes #39.
2011-08-25 20:45:34 -04:00
Tim Pope 82cc6d795e Fix typo 2011-08-21 21:39:23 -04:00
Tim Pope 7804dbd8d5 Document lcd behavior of V commands 2011-08-21 14:55:11 -04:00
Tim Pope 97c27be992 Automatic lcd on :Vsplit, etc. 2011-08-21 14:45:09 -04:00
Maciej Konieczny dc26353727 Typo 2011-08-18 16:16:33 -04:00
Tim Pope b8e184638f Grammar fix 2011-08-18 16:16:33 -04:00
Anton Petrov fb16afe738 Fix hardcoded shellslashes for helptags() 2011-08-17 16:34:30 -04:00
Tim Pope 1e0c2b4393 Rename rtpfindfile to be consistent 2011-08-13 12:24:37 -04:00
Tim Pope ede9571bc3 pathogen.vim 2.0 2011-08-09 20:11:26 -04:00
Tim Pope 040ee8f432 Clean up opening comments 2011-08-09 19:49:15 -04:00
Tim Pope a9fcd31a7e Grammar fix 2011-08-09 19:26:50 -04:00
Tim Pope 3ff705c08e Provide :Vopen 2011-08-09 19:24:15 -04:00
Tim Pope 85040e24e8 Provide V family of commands 2011-08-09 18:38:33 -04:00
Tim Pope 09cf830c77 Spelling fix 2011-08-09 16:09:44 -04:00
Tim Pope 43f6273c3c Accept a full path to pathogen#infect()
This full path is passed to pathogen#runtime_prepend_subdirectories()
instead of pathogen#runtime_append_all_bundles().
2011-08-09 12:34:29 -04:00
Tim Pope 8c46ed160e Tighten $VIMRUNTIME exclusion in :Helptags 2011-08-05 11:46:26 -04:00
Tim Pope b356563fc8 Provide homepage, not email 2011-08-05 11:46:26 -04:00
Tim Pope 0abca7beba Move disabling logic out of glob 2011-08-02 22:59:56 -04:00
Tim Pope f1c0ee6166 Add a note about Vimballs. Closes #6 2011-08-02 22:55:50 -04:00
Tim Pope 0a8144bf3d Add a note about wget 2011-07-25 20:21:43 -04:00
Tim Pope dccb822c0a Add an example minimal vimrc 2011-07-25 19:56:42 -04:00
Tim Pope 3a4129f948 Use HTTPS for GitHub URLs in README 2011-07-25 17:42:51 -04:00
Tim Pope e06454cb49 Tighten curl install URL 2011-07-25 16:36:45 -04:00
Tim Pope 0d230bc4c6 Add a FAQ 2011-07-25 15:24:43 -04:00
Tim Pope 73ba356522 Make note of other comma-delimited path options 2011-07-25 01:57:15 -04:00
Tim Pope 8484839faa Fix typo 2011-07-24 21:01:56 -04:00
Tim Pope f56ab3149a Add License 2011-07-24 18:02:27 -04:00
Tim Pope e9ab337487 Typo 2011-07-24 17:56:40 -04:00
Tim Pope 568eec91d8 More explicit installation instructions 2011-07-24 17:55:20 -04:00
Tim Pope 72586074e5 Add a README 2011-07-24 17:35:26 -04:00
Lucas Parry fcf77f5101 Add option to call infect on non-standard paths
Tweak pathogen#infect to take an optional source path to load plugins
from, instead of the standard 'bundle' directory.
2011-06-13 23:05:31 -04:00
Tim Pope 50650f2531 Extract pathogen#cycle_filetype() 2011-05-13 23:42:40 -04:00
Seth Milliken b147125552 Add pathogen#infect() as primary entry point for basic setup 2011-05-13 20:03:20 -07:00
Tim Pope af5659596e Add :Helptags wrapper for pathogen#helptags() 2011-04-13 12:27:57 -04:00
Tim Pope 3e63bdb7c4 More accurate writability check for helptags 2011-04-13 12:27:57 -04:00
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
3 changed files with 436 additions and 47 deletions
+14
View File
@@ -0,0 +1,14 @@
If your [commit message sucks](http://stopwritingramblingcommitmessages.com/),
I'm not going to accept your pull request. I've explained very politely
dozens of times that
[my general guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
are absolute rules on my own repositories, so I may lack the energy to
explain it to you yet another time. And please, if I ask you to change
something, `git commit --amend`.
Beyond that, don't be shy about asking before patching. What takes you
hours might take me minutes simply because I have both domain knowledge
and a perverse knowledge of Vim script so vast that many would consider
it a symptom of mental illness. On the flip side, some ideas I'll
reject no matter how good the implementation is. "Send a patch" is an
edge case answer in my book.
+143
View File
@@ -0,0 +1,143 @@
# pathogen.vim
Manage your `'runtimepath'` with ease. In practical terms, pathogen.vim
makes it super easy to install plugins and runtime files in their own
private directories.
## Installation
Install to `~/.vim/autoload/pathogen.vim`. Or copy and paste:
mkdir -p ~/.vim/autoload ~/.vim/bundle; \
curl -Sso ~/.vim/autoload/pathogen.vim \
https://raw.github.com/tpope/vim-pathogen/master/autoload/pathogen.vim
If you're using Windows, change all occurrences of `~/.vim` to `~\vimfiles`.
## Runtime Path Manipulation
Add this to your vimrc:
execute pathogen#infect()
If you're brand new to Vim and lacking a vimrc, `vim ~/.vimrc` and paste
in the following super-minimal example:
execute pathogen#infect()
syntax on
filetype plugin indent on
Now any plugins you wish to install can be extracted to a subdirectory
under `~/.vim/bundle`, and they will be added to the `'runtimepath'`.
Observe:
cd ~/.vim/bundle
git clone git://github.com/tpope/vim-sensible.git
Now [sensible.vim](https://github.com/tpope/vim-sensible) is installed.
If you really want to get crazy, you could set it up as a submodule in
whatever repository you keep your dot files in. I don't like to get
crazy.
If you don't like the directory name `bundle`, you can pass a runtime relative
glob as an argument:
execute pathogen#infect('stuff/{}')
The `{}` indicates where the expansion should occur. Currently only a
trailing `{}` is supported.
You can also pass an absolute path instead. I keep the plugins I maintain under `~/src`, and this is how I add them:
execute pathogen#infect('bundle/{}', '~/src/vim/bundle/{}')
Normally to generate documentation, Vim expects you to run `:helptags`
on each directory with documentation (e.g., `:helptags ~/.vim/doc`).
Provided with pathogen.vim is a `:Helptags` command that does this on
every directory in your `'runtimepath'`. If you really want to get
crazy, you could even invoke `Helptags` in your vimrc. I don't like to
get crazy.
Finally, pathogen.vim has a rich API that can manipulate `'runtimepath'`
and other comma-delimited path options in ways most people will never
need to do. If you're one of those edge cases, look at the source.
It's well documented.
## Runtime File Editing
`:Vopen`, `:Vedit`, `:Vsplit`, `:Vvsplit`, `:Vtabedit`, `:Vpedit`, and
`:Vread` have all moved to [scriptease.vim][].
[scriptease.vim]: https://github.com/tpope/vim-scriptease
## FAQ
> Can I put pathogen.vim in a submodule like all my other plugins?
Sure, stick it under `~/.vim/bundle`, and prepend the following to your
vimrc:
runtime bundle/vim-pathogen/autoload/pathogen.vim
Or if your bundles are somewhere other than `~/.vim` (say, `~/src/vim`):
source ~/src/vim/bundle/vim-pathogen/autoload/pathogen.vim
> Will you accept these 14 pull requests adding a `.gitignore` for
> `tags` so I don't see untracked changes in my dot files repository?
No, but I'll teach you how to ignore `tags` globally:
git config --global core.excludesfile '~/.cvsignore'
echo tags >> ~/.cvsignore
While any filename will work, I've chosen to follow the ancient
tradition of `.cvsignore` because utilities like rsync use it, too.
Clever, huh?
> What about Vimballs?
If you really must use one:
:e name.vba
:!mkdir ~/.vim/bundle/name
:UseVimball ~/.vim/bundle/name
> Why don't my plugins load when I use Vim sessions?
Vim sessions default to capturing all global options, which includes the
`'runtimepath'` that pathogen.vim manipulates. This can cause other problems
too, so I recommend turning that behavior off:
set sessionoptions-=options
## Contributing
If your [commit message sucks](http://stopwritingramblingcommitmessages.com/),
I'm not going to accept your pull request. I've explained very politely
dozens of times that
[my general guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
are absolute rules on my own repositories, so I may lack the energy to
explain it to you yet another time. And please, if I ask you to change
something, `git commit --amend`.
Beyond that, don't be shy about asking before patching. What takes you
hours might take me minutes simply because I have both domain knowledge
and a perverse knowledge of Vim script so vast that many would consider
it a symptom of mental illness. On the flip side, some ideas I'll
reject no matter how good the implementation is. "Send a patch" is an
edge case answer in my book.
## Self-Promotion
Like pathogen.vim? Follow the repository on
[GitHub](https://github.com/tpope/vim-pathogen) and vote for it on
[vim.org](http://www.vim.org/scripts/script.php?script_id=2332). And if
you're feeling especially charitable, follow [tpope](http://tpo.pe/) on
[Twitter](http://twitter.com/tpope) and
[GitHub](https://github.com/tpope).
## License
Copyright (c) Tim Pope. Distributed under the same terms as Vim itself.
See `:help license`.
+279 -47
View File
@@ -1,16 +1,44 @@
" pathogen.vim - path option manipulation
" Maintainer: Tim Pope
" Last Change: Oct 24, 2008
" Maintainer: Tim Pope <http://tpo.pe/>
" Version: 2.3
" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
"
" API is documented below.
" For management of individually installed plugins in ~/.vim/bundle (or
" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your
" .vimrc is the only other setup necessary.
"
" The API is documented inline below. For maximum ease of reading,
" :set foldmethod=marker
if exists("g:loaded_pathogen") || &cp
finish
endif
let g:loaded_pathogen = 1
" Point of entry for basic default usage. Give a relative path to invoke
" pathogen#interpose() (defaults to "bundle/{}"), or an absolute path to invoke
" pathogen#surround(). For backwards compatibility purposes, a full path that
" does not end in {} or * is given to pathogen#runtime_prepend_subdirectories()
" instead.
function! pathogen#infect(...) abort " {{{1
for path in a:0 ? filter(reverse(copy(a:000)), 'type(v:val) == type("")') : ['bundle/{}']
if path =~# '^[^\\/]\+$'
call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
call pathogen#interpose(path . '/{}')
elseif path =~# '^[^\\/]\+[\\/]\%({}\|\*\)$'
call pathogen#interpose(path)
elseif path =~# '[\\/]\%({}\|\*\)$'
call pathogen#surround(path)
else
call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
call pathogen#surround(path . '/{}')
endif
endfor
call pathogen#cycle_filetype()
return ''
endfunction " }}}1
" Split a path into a list.
function! pathogen#split(path) abort " {{{1
if type(a:path) == type([]) | return a:path | endif
@@ -20,17 +48,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,59 +73,260 @@ function! pathogen#join(...) abort " {{{1
return substitute(path,'^,','','')
endfunction " }}}1
" \ on Windows unless shellslash is set, / everywhere else
function! pathogen#separator() abort " {{{1
" 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
" Turn filetype detection off and back on again if it was already enabled.
function! pathogen#cycle_filetype() " {{{1
if exists('g:did_load_filetypes')
filetype off
filetype on
endif
endfunction " }}}1
" Check if a bundle is disabled. A bundle is considered disabled if its
" basename or full name is included in the list g:pathogen_disabled.
function! pathogen#is_disabled(path) abort " {{{1
let sep = pathogen#slash()
let blacklist = get(g:, 'pathogen_blacklist', get(g:, 'pathogen_disabled', []))
return index(blacklist, fnamemodify(a:path, ':t')) != -1 || index(blacklist, a:path) != -1
endfunction "}}}1
" Prepend the given directory to the runtime path and append its corresponding
" after directory. If the directory is already included, move it to the
" outermost position. Wildcards are added as is. Ending a path in /{} causes
" all subdirectories to be added (except those in g:pathogen_disabled).
function! pathogen#surround(path) abort " {{{1
let sep = pathogen#slash()
let rtp = pathogen#split(&rtp)
if a:path =~# '[\\/]{}$'
let path = fnamemodify(a:path[0:-4], ':p:s?[\\/]\=$??')
let before = filter(pathogen#glob_directories(path.sep.'*'), '!pathogen#is_disabled(v:val)')
let after = filter(reverse(pathogen#glob_directories(path.sep."*".sep."after")), '!pathogen#is_disabled(v:val[0:-7])')
call filter(rtp,'v:val[0:strlen(path)-1] !=# path')
else
let path = fnamemodify(a:path, ':p:s?[\\/]\=$??')
let before = [path]
let after = [path . sep . 'after']
call filter(rtp, 'index(before + after, v:val) == -1')
endif
let &rtp = pathogen#join(before, rtp, after)
return &rtp
endfunction " }}}1
" For each directory in the runtime path, add a second entry with the given
" argument appended. If the argument ends in '/{}', add a separate entry for
" each subdirectory.
function! pathogen#interpose(name) abort " {{{1
let sep = pathogen#slash()
let name = a:name
if has_key(s:done_bundles, name)
return ""
endif
let s:done_bundles[name] = 1
let list = []
for dir in pathogen#split(&rtp)
if dir =~# '\<after$'
if name =~# '{}$'
let list += filter(pathogen#glob_directories(substitute(dir,'after$',name[0:-3],'').'*'.sep.'after'), '!pathogen#is_disabled(v:val[0:-7])') + [dir]
else
let list += [dir, substitute(dir, 'after$', '', '') . name . sep . 'after']
endif
else
if name =~# '{}$'
let list += [dir] + filter(pathogen#glob_directories(dir.sep.name[0:-3].'*'), '!pathogen#is_disabled(v:val)')
else
let list += [dir . sep . name, dir]
endif
endif
endfor
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() abort " {{{1
let sep = pathogen#slash()
for glob in pathogen#split(&rtp)
for dir in map(split(glob(glob), "\n"), 'v:val.sep."/doc/".sep')
if (dir)[0 : strlen($VIMRUNTIME)] !=# $VIMRUNTIME.sep && filewritable(dir) == 2 && !empty(split(glob(dir.'*.txt'))) && (!filereadable(dir.'tags') || filewritable(dir.'tags'))
silent! execute 'helptags' pathogen#fnameescape(dir)
endif
endfor
endfor
endfunction " }}}1
command! -bar Helptags :call pathogen#helptags()
" Execute the given command. This is basically a backdoor for --remote-expr.
function! pathogen#execute(...) abort " {{{1
for command in a:000
execute command
endfor
return ''
endfunction " }}}1
" Section: Unofficial
" \ on Windows unless shellslash is set, / everywhere else.
function! pathogen#slash() abort " {{{1
return !exists("+shellslash") || &shellslash ? '/' : '\'
endfunction " }}}1
" Convenience wrapper around glob() which returns a list
function! pathogen#separator() abort " {{{1
return pathogen#slash()
endfunction " }}}1
" 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()."/]$","","")')
return map(files,'substitute(v:val,"[".pathogen#slash()."/]$","","")')
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
" 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 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)
return &rtp
" Remove duplicates from a list.
function! pathogen#uniq(list) abort " {{{1
let i = 0
let seen = {}
while i < len(a:list)
if (a:list[i] ==# '' && exists('empty')) || has_key(seen,a:list[i])
call remove(a:list,i)
elseif a:list[i] ==# ''
let i += 1
let empty = 1
else
let seen[a:list[i]] = 1
let i += 1
endif
endwhile
return a:list
endfunction " }}}1
" For each directory in rtp, check for a subdirectory named dir. If it
" exists, add all subdirectories of that subdirectory to the rtp, immediately
" after the original directory. If no argument is given, 'bundle' is used.
" Repeated calls with the same arguments are ignored.
function! pathogen#runtime_append_all_bundles(...) " {{{1
let sep = pathogen#separator()
let name = a:0 ? a:1 : 'bundle'
if "\n".s:done_bundles =~# "\\M\n".name."\n"
return ""
" Backport of fnameescape().
function! pathogen#fnameescape(string) abort " {{{1
if exists('*fnameescape')
return fnameescape(a:string)
elseif a:string ==# '-'
return '\-'
else
return substitute(escape(a:string," \t\n*?[{`$\\%#'\"|!<"),'^[+>]','\\&','')
endif
let s:done_bundles .= name . "\n"
let list = []
for dir in pathogen#split(&rtp)
if dir =~# '\<after$'
let list += pathogen#glob_directories(substitute(dir,'after$',name.sep.'*[^~]'.sep.'after','')) + [dir]
else
let list += [dir] + pathogen#glob_directories(dir.sep.name.sep.'*[^~]')
endif
endfor
let &rtp = pathogen#join(list)
return 1
endfunction " }}}1
" Like findfile(), but hardcoded to use the runtimepath.
function! pathogen#runtime_findfile(file,count) abort "{{{1
let rtp = pathogen#join(1,pathogen#split(&rtp))
let file = findfile(a:file,rtp,a:count)
if file ==# ''
return ''
else
return fnamemodify(file,':p')
endif
endfunction " }}}1
" Section: Deprecated
function! s:warn(msg)
echohl WarningMsg
echomsg a:msg
echohl NONE
endfunction
let s:done_bundles = ''
" }}}1
" Prepend all subdirectories of path to the rtp, and append all 'after'
" directories in those subdirectories. Deprecated.
function! pathogen#runtime_prepend_subdirectories(path) " {{{1
call s:warn('Change pathogen#runtime_prepend_subdirectories('.string(a:path).') to pathogen#infect('.string(a:path.'/{}').')')
return pathogen#surround(a:path . pathogen#slash() . '{}')
endfunction " }}}1
" vim:set ft=vim ts=8 sw=2 sts=2:
function! pathogen#incubate(...) abort " {{{1
let name = a:0 ? a:1 : 'bundle/{}'
call s:warn('Change pathogen#incubate('.(a:0 ? string(a:1) : '').') to pathogen#infect('.string(name).')')
return pathogen#interpose(name)
endfunction " }}}1
" Deprecated alias for pathogen#interpose().
function! pathogen#runtime_append_all_bundles(...) abort " {{{1
if a:0
call s:warn('Change pathogen#runtime_append_all_bundles('.string(a:1).') to pathogen#infect('.string(a:1.'/{}').')')
else
call s:warn('Change pathogen#runtime_append_all_bundles() to pathogen#infect()')
endif
return pathogen#interpose(a:0 ? a:1 . '/{}' : 'bundle/{}')
endfunction " }}}1
if exists(':Vedit')
finish
endif
let s:vopen_warning = 0
function! s:find(count,cmd,file,lcd) " {{{1
let rtp = pathogen#join(1,pathogen#split(&runtimepath))
let file = pathogen#runtime_findfile(a:file,a:count)
if file ==# ''
return "echoerr 'E345: Can''t find file \"".a:file."\" in runtimepath'"
endif
if !s:vopen_warning
let s:vopen_warning = 1
let warning = '|echohl WarningMsg|echo "Install scriptease.vim to continue using :V'.a:cmd.'"|echohl NONE'
else
let warning = ''
endif
if a:lcd
let path = file[0:-strlen(a:file)-2]
execute 'lcd `=path`'
return a:cmd.' '.pathogen#fnameescape(a:file) . warning
else
return a:cmd.' '.pathogen#fnameescape(file) . warning
endif
endfunction " }}}1
function! s:Findcomplete(A,L,P) " {{{1
let sep = pathogen#slash()
let cheats = {
\'a': 'autoload',
\'d': 'doc',
\'f': 'ftplugin',
\'i': 'indent',
\'p': 'plugin',
\'s': 'syntax'}
if a:A =~# '^\w[\\/]' && has_key(cheats,a:A[0])
let request = cheats[a:A[0]].a:A[1:-1]
else
let request = a:A
endif
let pattern = substitute(request,'/\|\'.sep,'*'.sep,'g').'*'
let found = {}
for path in pathogen#split(&runtimepath)
let path = expand(path, ':p')
let matches = split(glob(path.sep.pattern),"\n")
call map(matches,'isdirectory(v:val) ? v:val.sep : v:val')
call map(matches,'expand(v:val, ":p")[strlen(path)+1:-1]')
for match in matches
let found[match] = 1
endfor
endfor
return sort(keys(found))
endfunction " }}}1
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve :execute s:find(<count>,'edit<bang>',<q-args>,0)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit :execute s:find(<count>,'edit<bang>',<q-args>,0)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen :execute s:find(<count>,'edit<bang>',<q-args>,1)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit :execute s:find(<count>,'split',<q-args>,<bang>1)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit :execute s:find(<count>,'vsplit',<q-args>,<bang>1)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(<count>,'tabedit',<q-args>,<bang>1)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit :execute s:find(<count>,'pedit',<q-args>,<bang>1)
command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread :execute s:find(<count>,'read',<q-args>,<bang>1)
" vim:set et sw=2: