From: martin f. krafft Date: Tue, 8 Apr 2025 14:50:09 +0000 (+0200) Subject: Squashed '.vim/bundle/vim-pathogen/' content from commit ac4dd949 X-Git-Url: https://git.madduck.net/etc/vim.git/commitdiff_plain/55bf04470ecc026e71c037f0f35402fdeac66767?ds=sidebyside Squashed '.vim/bundle/vim-pathogen/' content from commit ac4dd949 git-subtree-dir: .vim/bundle/vim-pathogen git-subtree-split: ac4dd9494fa9008754e49dff85bff1b5746c89b4 --- 55bf04470ecc026e71c037f0f35402fdeac66767 diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..e2a49d11 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +github: tpope +custom: ["https://www.paypal.me/vimpope"] diff --git a/CONTRIBUTING.markdown b/CONTRIBUTING.markdown new file mode 100644 index 00000000..3bbabf8d --- /dev/null +++ b/CONTRIBUTING.markdown @@ -0,0 +1,18 @@ +Follow the commit message guidelines at [commit.style](https://commit.style). +This is an absolute requirement for my repositories, and doing so proves you +actually read the contribution guidelines, which makes for a good first +impression. + +Good commit messages imply good commits. Pull requests should typically be a +single commit, or for the rare complicated case, a series of atomic commits. +If I request a change, use `git commit --amend` or `git rebase --interactive` +and force push to your branch. + +For feature requests, don't be shy about proposing it in an issue before +drafting a patch. If it's a great idea, I might do it for you. If it's a +terrible idea, no patch will change my mind. + +The worst ideas are configuration options. You'll need to provide a great +justification in order to persuade me to take on the maintenance and support +burden it will inevitably entail. See if you can get away with a custom map +or autocommand instead. diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..99f03caf --- /dev/null +++ b/LICENSE @@ -0,0 +1,81 @@ +VIM LICENSE + +I) There are no restrictions on distributing unmodified copies of + pathogen.vim except that they must include this license text. You can + also distribute unmodified parts of pathogen.vim, likewise unrestricted + except that they must include this license text. You are also allowed to + include executables that you made from the unmodified pathogen.vim + sources, plus your own usage examples and Vim scripts. + +II) It is allowed to distribute a modified (or extended) version of + pathogen.vim, including executables and/or source code, when the following + four conditions are met: + 1) This license text must be included unmodified. + 2) The modified pathogen.vim must be distributed in one of the following + five ways: + a) If you make changes to pathogen.vim yourself, you must clearly + describe in the distribution how to contact you. When the + maintainer asks you (in any way) for a copy of the modified + pathogen.vim you distributed, you must make your changes, including + source code, available to the maintainer without fee. The + maintainer reserves the right to include your changes in the + official version of pathogen.vim. What the maintainer will do with + your changes and under what license they will be distributed is + negotiable. If there has been no negotiation then this license, or + a later version, also applies to your changes. The current + maintainer is Bram Moolenaar . If this changes it + will be announced in appropriate places (most likely vim.sf.net, + www.vim.org and/or comp.editors). When it is completely impossible + to contact the maintainer, the obligation to send him your changes + ceases. Once the maintainer has confirmed that he has received your + changes they will not have to be sent again. + b) If you have received a modified pathogen.vim that was distributed as + mentioned under a) you are allowed to further distribute it + unmodified, as mentioned at I). If you make additional changes the + text under a) applies to those changes. + c) Provide all the changes, including source code, with every copy of + the modified pathogen.vim you distribute. This may be done in the + form of a context diff. You can choose what license to use for new + code you add. The changes and their license must not restrict + others from making their own changes to the official version of + pathogen.vim. + d) When you have a modified pathogen.vim which includes changes as + mentioned under c), you can distribute it without the source code + for the changes if the following three conditions are met: + - The license that applies to the changes permits you to distribute + the changes to the Vim maintainer without fee or restriction, and + permits the Vim maintainer to include the changes in the official + version of pathogen.vim without fee or restriction. + - You keep the changes for at least three years after last + distributing the corresponding modified pathogen.vim. When the + maintainer or someone who you distributed the modified + pathogen.vim to asks you (in any way) for the changes within this + period, you must make them available to him. + - You clearly describe in the distribution how to contact you. This + contact information must remain valid for at least three years + after last distributing the corresponding modified pathogen.vim, + or as long as possible. + e) When the GNU General Public License (GPL) applies to the changes, + you can distribute the modified pathogen.vim under the GNU GPL + version 2 or any later version. + 3) A message must be added, at least in the output of the ":version" + command and in the intro screen, such that the user of the modified + pathogen.vim is able to see that it was modified. When distributing as + mentioned under 2)e) adding the message is only required for as far as + this does not conflict with the license used for the changes. + 4) The contact information as required under 2)a) and 2)d) must not be + removed or changed, except that the person himself can make + corrections. + +III) If you distribute a modified version of pathogen.vim, you are encouraged + to use the Vim license for your changes and make them available to the + maintainer, including the source code. The preferred way to do this is + by e-mail or by uploading the files to a server and e-mailing the URL. If + the number of changes is small (e.g., a modified Makefile) e-mailing a + context diff will do. The e-mail address to be used is + + +IV) It is not allowed to remove this license from the distribution of the + pathogen.vim sources, parts of it or from a modified version. You may + use this license for previous pathogen.vim releases instead of the + license that they came with, at your option. diff --git a/README.markdown b/README.markdown new file mode 100644 index 00000000..8dc6a87a --- /dev/null +++ b/README.markdown @@ -0,0 +1,153 @@ +# 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. + +**For new users, I recommend using Vim's built-in package management +instead.** `:help packages` + +## Installation + +Install to `~/.vim/autoload/pathogen.vim`. +Or copy and paste the following into your terminal/shell: + + mkdir -p ~/.vim/autoload ~/.vim/bundle && \ + curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/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 https://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. + +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. + +## Native Vim Package Management + +Vim 8 includes support for package management in a manner similar to +pathogen.vim. If you'd like to transition to this native support, +pathogen.vim can help. Calling `pathogen#infect()` on an older version of Vim +will supplement the `bundle/{}` default with `pack/{}/start/{}`, effectively +backporting a subset of the new native functionality. + +## 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`. diff --git a/autoload/pathogen.vim b/autoload/pathogen.vim new file mode 100644 index 00000000..8cd8e97b --- /dev/null +++ b/autoload/pathogen.vim @@ -0,0 +1,264 @@ +" pathogen.vim - path option manipulation +" Maintainer: Tim Pope +" Version: 2.4 + +" Install in ~/.vim/autoload (or ~\vimfiles\autoload). +" +" 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. + +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() or an absolute path to invoke pathogen#surround(). +" Curly braces are expanded with pathogen#expand(): "bundle/{}" finds all +" subdirectories inside "bundle" inside all directories in the runtime path. +" If no arguments are given, defaults "bundle/{}", and also "pack/{}/start/{}" +" on versions of Vim without native package support. +function! pathogen#infect(...) abort + if a:0 + let paths = filter(reverse(copy(a:000)), 'type(v:val) == type("")') + else + let paths = ['bundle/{}', 'pack/{}/start/{}'] + endif + if has('packages') + call filter(paths, 'v:val !~# "^pack/[^/]*/start/[^/]*$"') + endif + let static = '^\%([$~\\/]\|\w:[\\/]\)[^{}*]*$' + for path in filter(copy(paths), 'v:val =~# static') + call pathogen#surround(path) + endfor + for path in filter(copy(paths), 'v:val !~# static') + if path =~# '^\%([$~\\/]\|\w:[\\/]\)' + call pathogen#surround(path) + else + call pathogen#interpose(path) + endif + endfor + call pathogen#cycle_filetype() + if pathogen#is_disabled($MYVIMRC) + return 'finish' + endif + return '' +endfunction + +" Split a path into a list. +function! pathogen#split(path) abort + if type(a:path) == type([]) | return a:path | endif + if empty(a:path) | return [] | endif + let split = split(a:path,'\\\@]','\\&','') + endif +endfunction + +" Like findfile(), but hardcoded to use the runtimepath. +function! pathogen#runtime_findfile(file,count) abort + 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 + +" vim:set et sw=2: