[
  {
    "path": ".github/FUNDING.yml",
    "content": "github: tpope\ncustom: [\"https://www.paypal.me/vimpope\"]\n"
  },
  {
    "path": "CONTRIBUTING.markdown",
    "content": "Follow the commit message guidelines at [commit.style](https://commit.style).\nThis is an absolute requirement for my repositories, and doing so proves you\nactually read the contribution guidelines, which makes for a good first\nimpression.\n\nGood commit messages imply good commits.  Pull requests should typically be a\nsingle commit, or for the rare complicated case, a series of atomic commits.\nIf I request a change, use `git commit --amend` or `git rebase --interactive`\nand force push to your branch.\n\nFor feature requests, don't be shy about proposing it in an issue before\ndrafting a patch.  If it's a great idea, I might do it for you.  If it's a\nterrible idea, no patch will change my mind.\n\nThe worst ideas are configuration options.  You'll need to provide a great\njustification in order to persuade me to take on the maintenance and support\nburden it will inevitably entail.  See if you can get away with a custom map\nor autocommand instead.\n"
  },
  {
    "path": "LICENSE",
    "content": "VIM LICENSE\n\nI)  There are no restrictions on distributing unmodified copies of\n    pathogen.vim except that they must include this license text.  You can\n    also distribute unmodified parts of pathogen.vim, likewise unrestricted\n    except that they must include this license text.  You are also allowed to\n    include executables that you made from the unmodified pathogen.vim\n    sources, plus your own usage examples and Vim scripts.\n\nII) It is allowed to distribute a modified (or extended) version of\n    pathogen.vim, including executables and/or source code, when the following\n    four conditions are met:\n    1) This license text must be included unmodified.\n    2) The modified pathogen.vim must be distributed in one of the following\n       five ways:\n       a) If you make changes to pathogen.vim yourself, you must clearly\n          describe in the distribution how to contact you.  When the\n          maintainer asks you (in any way) for a copy of the modified\n          pathogen.vim you distributed, you must make your changes, including\n          source code, available to the maintainer without fee.  The\n          maintainer reserves the right to include your changes in the\n          official version of pathogen.vim.  What the maintainer will do with\n          your changes and under what license they will be distributed is\n          negotiable.  If there has been no negotiation then this license, or\n          a later version, also applies to your changes. The current\n          maintainer is Bram Moolenaar <Bram@vim.org>.  If this changes it\n          will be announced in appropriate places (most likely vim.sf.net,\n          www.vim.org and/or comp.editors). When it is completely impossible\n          to contact the maintainer, the obligation to send him your changes\n          ceases.  Once the maintainer has confirmed that he has received your\n          changes they will not have to be sent again.\n       b) If you have received a modified pathogen.vim that was distributed as\n          mentioned under a) you are allowed to further distribute it\n          unmodified, as mentioned at I).  If you make additional changes the\n          text under a) applies to those changes.\n       c) Provide all the changes, including source code, with every copy of\n          the modified pathogen.vim you distribute.  This may be done in the\n          form of a context diff.  You can choose what license to use for new\n          code you add.  The changes and their license must not restrict\n          others from making their own changes to the official version of\n          pathogen.vim.\n       d) When you have a modified pathogen.vim which includes changes as\n          mentioned under c), you can distribute it without the source code\n          for the changes if the following three conditions are met:\n          - The license that applies to the changes permits you to distribute\n            the changes to the Vim maintainer without fee or restriction, and\n            permits the Vim maintainer to include the changes in the official\n            version of pathogen.vim without fee or restriction.\n          - You keep the changes for at least three years after last\n            distributing the corresponding modified pathogen.vim.  When the\n            maintainer or someone who you distributed the modified\n            pathogen.vim to asks you (in any way) for the changes within this\n            period, you must make them available to him.\n          - You clearly describe in the distribution how to contact you.  This\n            contact information must remain valid for at least three years\n            after last distributing the corresponding modified pathogen.vim,\n            or as long as possible.\n       e) When the GNU General Public License (GPL) applies to the changes,\n          you can distribute the modified pathogen.vim under the GNU GPL\n          version 2 or any later version.\n    3) A message must be added, at least in the output of the \":version\"\n       command and in the intro screen, such that the user of the modified\n       pathogen.vim is able to see that it was modified.  When distributing as\n       mentioned under 2)e) adding the message is only required for as far as\n       this does not conflict with the license used for the changes.\n    4) The contact information as required under 2)a) and 2)d) must not be\n       removed or changed, except that the person himself can make\n       corrections.\n\nIII) If you distribute a modified version of pathogen.vim, you are encouraged\n     to use the Vim license for your changes and make them available to the\n     maintainer, including the source code.  The preferred way to do this is\n     by e-mail or by uploading the files to a server and e-mailing the URL. If\n     the number of changes is small (e.g., a modified Makefile) e-mailing a\n     context diff will do.  The e-mail address to be used is\n     <maintainer@vim.org>\n\nIV)  It is not allowed to remove this license from the distribution of the\n     pathogen.vim sources, parts of it or from a modified version.  You may\n     use this license for previous pathogen.vim releases instead of the\n     license that they came with, at your option.\n"
  },
  {
    "path": "README.markdown",
    "content": "# pathogen.vim\n\nManage your `'runtimepath'` with ease.  In practical terms, pathogen.vim\nmakes it super easy to install plugins and runtime files in their own\nprivate directories.\n\n**For new users, I recommend using Vim's built-in package management\ninstead.**  `:help packages`\n\n## Installation\n\nInstall to `~/.vim/autoload/pathogen.vim`.\nOr copy and paste the following into your terminal/shell:\n\n    mkdir -p ~/.vim/autoload ~/.vim/bundle && \\\n    curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim\n\nIf you're using Windows, change all occurrences of `~/.vim` to `~\\vimfiles`.\n\n## Runtime Path Manipulation\n\nAdd this to your vimrc:\n\n    execute pathogen#infect()\n\nIf you're brand new to Vim and lacking a vimrc, `vim ~/.vimrc` and paste\nin the following super-minimal example:\n\n    execute pathogen#infect()\n    syntax on\n    filetype plugin indent on\n\nNow any plugins you wish to install can be extracted to a subdirectory\nunder `~/.vim/bundle`, and they will be added to the `'runtimepath'`.\nObserve:\n\n    cd ~/.vim/bundle && \\\n    git clone https://github.com/tpope/vim-sensible.git\n\nNow [sensible.vim](https://github.com/tpope/vim-sensible) is installed.\nIf you really want to get crazy, you could set it up as a submodule in\nwhatever repository you keep your dot files in.  I don't like to get\ncrazy.\n\nIf you don't like the directory name `bundle`, you can pass a runtime relative\nglob as an argument:\n\n    execute pathogen#infect('stuff/{}')\n\nThe `{}` indicates where the expansion should occur.\n\nYou can also pass an absolute path instead.  I keep the plugins I maintain under `~/src`, and this is how I add them:\n\n    execute pathogen#infect('bundle/{}', '~/src/vim/bundle/{}')\n\nNormally to generate documentation, Vim expects you to run `:helptags`\non each directory with documentation (e.g., `:helptags ~/.vim/doc`).\nProvided with pathogen.vim is a `:Helptags` command that does this on\nevery directory in your `'runtimepath'`.  If you really want to get\ncrazy, you could even invoke `Helptags` in your vimrc.  I don't like to\nget crazy.\n\nFinally, pathogen.vim has a rich API that can manipulate `'runtimepath'`\nand other comma-delimited path options in ways most people will never\nneed to do.  If you're one of those edge cases, look at the source.\nIt's well documented.\n\n## Native Vim Package Management\n\nVim 8 includes support for package management in a manner similar to\npathogen.vim.  If you'd like to transition to this native support,\npathogen.vim can help.  Calling `pathogen#infect()` on an older version of Vim\nwill supplement the `bundle/{}` default with `pack/{}/start/{}`, effectively\nbackporting a subset of the new native functionality.\n\n## Runtime File Editing\n\n`:Vopen`, `:Vedit`, `:Vsplit`, `:Vvsplit`, `:Vtabedit`, `:Vpedit`, and\n`:Vread` have all moved to [scriptease.vim][].\n\n[scriptease.vim]: https://github.com/tpope/vim-scriptease\n\n## FAQ\n\n> Can I put pathogen.vim in a submodule like all my other plugins?\n\nSure, stick it under `~/.vim/bundle`, and prepend the following to your\nvimrc:\n\n    runtime bundle/vim-pathogen/autoload/pathogen.vim\n\nOr if your bundles are somewhere other than `~/.vim` (say, `~/src/vim`):\n\n    source ~/src/vim/bundle/vim-pathogen/autoload/pathogen.vim\n\n> Will you accept these 14 pull requests adding a `.gitignore` for\n> `tags` so I don't see untracked changes in my dot files repository?\n\nNo, but I'll teach you how to ignore `tags` globally:\n\n    git config --global core.excludesfile '~/.cvsignore'\n    echo tags >> ~/.cvsignore\n\nWhile any filename will work, I've chosen to follow the ancient\ntradition of `.cvsignore` because utilities like rsync use it, too.\nClever, huh?\n\n> What about Vimballs?\n\nIf you really must use one:\n\n    :e name.vba\n    :!mkdir ~/.vim/bundle/name\n    :UseVimball ~/.vim/bundle/name\n\n> Why don't my plugins load when I use Vim sessions?\n\nVim sessions default to capturing all global options, which includes the\n`'runtimepath'` that pathogen.vim manipulates.  This can cause other problems\ntoo, so I recommend turning that behavior off:\n\n    set sessionoptions-=options\n\n## Contributing\n\nIf your [commit message sucks](http://stopwritingramblingcommitmessages.com/),\nI'm not going to accept your pull request.  I've explained very politely\ndozens of times that\n[my general guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)\nare absolute rules on my own repositories, so I may lack the energy to\nexplain it to you yet another time.  And please, if I ask you to change\nsomething, `git commit --amend`.\n\nBeyond that, don't be shy about asking before patching.  What takes you\nhours might take me minutes simply because I have both domain knowledge\nand a perverse knowledge of Vim script so vast that many would consider\nit a symptom of mental illness.  On the flip side, some ideas I'll\nreject no matter how good the implementation is.  \"Send a patch\" is an\nedge case answer in my book.\n\n## Self-Promotion\n\nLike pathogen.vim?  Follow the repository on\n[GitHub](https://github.com/tpope/vim-pathogen) and vote for it on\n[vim.org](http://www.vim.org/scripts/script.php?script_id=2332).  And if\nyou're feeling especially charitable, follow [tpope](http://tpo.pe/) on\n[Twitter](http://twitter.com/tpope) and\n[GitHub](https://github.com/tpope).\n\n## License\n\nCopyright (c) Tim Pope.  Distributed under the same terms as Vim itself.\nSee `:help license`.\n"
  },
  {
    "path": "autoload/pathogen.vim",
    "content": "\" pathogen.vim - path option manipulation\n\" Maintainer:   Tim Pope <http://tpo.pe/>\n\" Version:      2.4\n\n\" Install in ~/.vim/autoload (or ~\\vimfiles\\autoload).\n\"\n\" For management of individually installed plugins in ~/.vim/bundle (or\n\" ~\\vimfiles\\bundle), adding `execute pathogen#infect()` to the top of your\n\" .vimrc is the only other setup necessary.\n\"\n\" The API is documented inline below.\n\nif exists(\"g:loaded_pathogen\") || &cp\n  finish\nendif\nlet g:loaded_pathogen = 1\n\n\" Point of entry for basic default usage.  Give a relative path to invoke\n\" pathogen#interpose() or an absolute path to invoke pathogen#surround().\n\" Curly braces are expanded with pathogen#expand(): \"bundle/{}\" finds all\n\" subdirectories inside \"bundle\" inside all directories in the runtime path.\n\" If no arguments are given, defaults \"bundle/{}\", and also \"pack/{}/start/{}\"\n\" on versions of Vim without native package support.\nfunction! pathogen#infect(...) abort\n  if a:0\n    let paths = filter(reverse(copy(a:000)), 'type(v:val) == type(\"\")')\n  else\n    let paths = ['bundle/{}', 'pack/{}/start/{}']\n  endif\n  if has('packages')\n    call filter(paths, 'v:val !~# \"^pack/[^/]*/start/[^/]*$\"')\n  endif\n  let static = '^\\%([$~\\\\/]\\|\\w:[\\\\/]\\)[^{}*]*$'\n  for path in filter(copy(paths), 'v:val =~# static')\n    call pathogen#surround(path)\n  endfor\n  for path in filter(copy(paths), 'v:val !~# static')\n    if path =~# '^\\%([$~\\\\/]\\|\\w:[\\\\/]\\)'\n      call pathogen#surround(path)\n    else\n      call pathogen#interpose(path)\n    endif\n  endfor\n  call pathogen#cycle_filetype()\n  if pathogen#is_disabled($MYVIMRC)\n    return 'finish'\n  endif\n  return ''\nendfunction\n\n\" Split a path into a list.\nfunction! pathogen#split(path) abort\n  if type(a:path) == type([]) | return a:path | endif\n  if empty(a:path) | return [] | endif\n  let split = split(a:path,'\\\\\\@<!\\%(\\\\\\\\\\)*\\zs,')\n  return map(split,'substitute(v:val,''\\\\\\([\\\\,]\\)'',''\\1'',\"g\")')\nendfunction\n\n\" Convert a list to a path.\nfunction! pathogen#join(...) abort\n  if type(a:1) == type(1) && a:1\n    let i = 1\n    let space = ' '\n  else\n    let i = 0\n    let space = ''\n  endif\n  let path = \"\"\n  while i < a:0\n    if type(a:000[i]) == type([])\n      let list = a:000[i]\n      let j = 0\n      while j < len(list)\n        let escaped = substitute(list[j],'[,'.space.']\\|\\\\[\\,'.space.']\\@=','\\\\&','g')\n        let path .= ',' . escaped\n        let j += 1\n      endwhile\n    else\n      let path .= \",\" . a:000[i]\n    endif\n    let i += 1\n  endwhile\n  return substitute(path,'^,','','')\nendfunction\n\n\" Convert a list to a path with escaped spaces for 'path', 'tag', etc.\nfunction! pathogen#legacyjoin(...) abort\n  return call('pathogen#join',[1] + a:000)\nendfunction\n\n\" Turn filetype detection off and back on again if it was already enabled.\nfunction! pathogen#cycle_filetype() abort\n  if exists('g:did_load_filetypes')\n    filetype off\n    filetype on\n  endif\nendfunction\n\n\" Check if a bundle is disabled.  A bundle is considered disabled if its\n\" basename or full name is included in the list g:pathogen_blacklist or the\n\" comma delimited environment variable $VIMBLACKLIST.\nfunction! pathogen#is_disabled(path) abort\n  if a:path =~# '\\~$'\n    return 1\n  endif\n  let sep = pathogen#slash()\n  let blacklist = get(g:, 'pathogen_blacklist', get(g:, 'pathogen_disabled', [])) + pathogen#split($VIMBLACKLIST)\n  if !empty(blacklist)\n    call map(blacklist, 'substitute(v:val, \"[\\\\/]$\", \"\", \"\")')\n  endif\n  return index(blacklist, fnamemodify(a:path, ':t')) != -1 || index(blacklist, a:path) != -1\nendfunction\n\n\" Prepend the given directory to the runtime path and append its corresponding\n\" after directory.  Curly braces are expanded with pathogen#expand().\nfunction! pathogen#surround(path) abort\n  let sep = pathogen#slash()\n  let rtp = pathogen#split(&rtp)\n  let path = fnamemodify(a:path, ':s?[\\\\/]\\=$??')\n  let before = filter(pathogen#expand(path), '!pathogen#is_disabled(v:val)')\n  let after = filter(reverse(pathogen#expand(path, sep.'after')), '!pathogen#is_disabled(v:val[0 : -7])')\n  call filter(rtp, 'index(before + after, v:val) == -1')\n  let &rtp = pathogen#join(before, rtp, after)\n  return &rtp\nendfunction\n\n\" For each directory in the runtime path, add a second entry with the given\n\" argument appended.  Curly braces are expanded with pathogen#expand().\nfunction! pathogen#interpose(name) abort\n  let sep = pathogen#slash()\n  let name = a:name\n  if has_key(s:done_bundles, name)\n    return \"\"\n  endif\n  let s:done_bundles[name] = 1\n  let list = []\n  for dir in pathogen#split(&rtp)\n    if dir =~# '\\<after$'\n      let list += reverse(filter(pathogen#expand(dir[0 : -6].name, sep.'after'), '!pathogen#is_disabled(v:val[0 : -7])')) + [dir]\n    else\n      let list += [dir] + filter(pathogen#expand(dir.sep.name), '!pathogen#is_disabled(v:val)')\n    endif\n  endfor\n  let &rtp = pathogen#join(pathogen#uniq(list))\n  return 1\nendfunction\n\nlet s:done_bundles = {}\n\n\" Invoke :helptags on all non-$VIM doc directories in runtimepath.\nfunction! pathogen#helptags() abort\n  let sep = pathogen#slash()\n  for glob in pathogen#split(&rtp)\n    for dir in map(split(glob(glob), \"\\n\"), 'v:val.sep.\"/doc/\".sep')\n      if (dir)[0 : strlen($VIMRUNTIME)] !=# $VIMRUNTIME.sep && filewritable(dir) == 2 && !empty(split(glob(dir.'*.txt'))) && (!filereadable(dir.'tags') || filewritable(dir.'tags'))\n        silent! execute 'helptags' pathogen#fnameescape(dir)\n      endif\n    endfor\n  endfor\nendfunction\n\ncommand! -bar Helptags :call pathogen#helptags()\n\n\" Execute the given command.  This is basically a backdoor for --remote-expr.\nfunction! pathogen#execute(...) abort\n  for command in a:000\n    execute command\n  endfor\n  return ''\nendfunction\n\n\" Section: Unofficial\n\nfunction! pathogen#is_absolute(path) abort\n  return a:path =~# (has('win32') ? '^\\%([\\\\/]\\|\\w:\\)[\\\\/]\\|^[~$]' : '^[/~$]')\nendfunction\n\n\" Given a string, returns all possible permutations of comma delimited braced\n\" alternatives of that string.  pathogen#expand('/{a,b}/{c,d}') yields\n\" ['/a/c', '/a/d', '/b/c', '/b/d'].  Empty braces are treated as a wildcard\n\" and globbed.  Actual globs are preserved.\nfunction! pathogen#expand(pattern, ...) abort\n  let after = a:0 ? a:1 : ''\n  let pattern = substitute(a:pattern, '^[~$][^\\/]*', '\\=expand(submatch(0))', '')\n  if pattern =~# '{[^{}]\\+}'\n    let [pre, pat, post] = split(substitute(pattern, '\\(.\\{-\\}\\){\\([^{}]\\+\\)}\\(.*\\)', \"\\\\1\\001\\\\2\\001\\\\3\", ''), \"\\001\", 1)\n    let found = map(split(pat, ',', 1), 'pre.v:val.post')\n    let results = []\n    for pattern in found\n      call extend(results, pathogen#expand(pattern))\n    endfor\n  elseif pattern =~# '{}'\n    let pat = matchstr(pattern, '^.*{}[^*]*\\%($\\|[\\\\/]\\)')\n    let post = pattern[strlen(pat) : -1]\n    let results = map(split(glob(substitute(pat, '{}', '*', 'g')), \"\\n\"), 'v:val.post')\n  else\n    let results = [pattern]\n  endif\n  let vf = pathogen#slash() . 'vimfiles'\n  call map(results, 'v:val =~# \"\\\\*\" ? v:val.after : isdirectory(v:val.vf.after) ? v:val.vf.after : isdirectory(v:val.after) ? v:val.after : \"\"')\n  return filter(results, '!empty(v:val)')\nendfunction\n\n\" \\ on Windows unless shellslash is set, / everywhere else.\nfunction! pathogen#slash() abort\n  return !exists(\"+shellslash\") || &shellslash ? '/' : '\\'\nendfunction\n\nfunction! pathogen#separator() abort\n  return pathogen#slash()\nendfunction\n\n\" Convenience wrapper around glob() which returns a list.\nfunction! pathogen#glob(pattern) abort\n  let files = split(glob(a:pattern),\"\\n\")\n  return map(files,'substitute(v:val,\"[\".pathogen#slash().\"/]$\",\"\",\"\")')\nendfunction\n\n\" Like pathogen#glob(), only limit the results to directories.\nfunction! pathogen#glob_directories(pattern) abort\n  return filter(pathogen#glob(a:pattern),'isdirectory(v:val)')\nendfunction\n\n\" Remove duplicates from a list.\nfunction! pathogen#uniq(list) abort\n  let i = 0\n  let seen = {}\n  while i < len(a:list)\n    if (a:list[i] ==# '' && exists('empty')) || has_key(seen,a:list[i])\n      call remove(a:list,i)\n    elseif a:list[i] ==# ''\n      let i += 1\n      let empty = 1\n    else\n      let seen[a:list[i]] = 1\n      let i += 1\n    endif\n  endwhile\n  return a:list\nendfunction\n\n\" Backport of fnameescape().\nfunction! pathogen#fnameescape(string) abort\n  if exists('*fnameescape')\n    return fnameescape(a:string)\n  elseif a:string ==# '-'\n    return '\\-'\n  else\n    return substitute(escape(a:string,\" \\t\\n*?[{`$\\\\%#'\\\"|!<\"),'^[+>]','\\\\&','')\n  endif\nendfunction\n\n\" Like findfile(), but hardcoded to use the runtimepath.\nfunction! pathogen#runtime_findfile(file,count) abort\n  let rtp = pathogen#join(1,pathogen#split(&rtp))\n  let file = findfile(a:file,rtp,a:count)\n  if file ==# ''\n    return ''\n  else\n    return fnamemodify(file,':p')\n  endif\nendfunction\n\n\" vim:set et sw=2:\n"
  }
]