2769ab7796c0

vim: The Great Vimfiles Cleanup of January 2011
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Wed, 02 Feb 2011 15:21:47 -0500
parents ab9db71ab5ab
children f987dd76cc9f 864f758f326d
branches/tags (none)
files vim/.vimrc vim/after/syntax/css.vim vim/after/syntax/less.vim vim/bundle/camelcasemotion/autoload/camelcasemotion.vim vim/bundle/camelcasemotion/doc/camelcasemotion.txt vim/bundle/camelcasemotion/plugin/camelcasemotion.vim vim/bundle/pydoc/plugin/pydoc.vim vim/bundle/vcscommand/doc/vcscommand.txt vim/bundle/vcscommand/plugin/vcscommand.vim vim/bundle/vcscommand/plugin/vcsgit.vim vim/bundle/vcscommand/plugin/vcshg.vim vim/bundle/vcscommand/syntax/gitannotate.vim vim/bundle/vcscommand/syntax/hgannotate.vim vim/bundle/vcscommand/syntax/vcscommit.vim vim/ftplugin/python.vim vim/ftplugin/python/folding.vim vim/plugin/BufClose.vim vim/plugin/hexHighlight.vim vim/plugin/slime.vim vim/syntax/scss.vim

Changes

--- a/vim/.vimrc	Wed Feb 02 14:07:42 2011 -0500
+++ b/vim/.vimrc	Wed Feb 02 15:21:47 2011 -0500
@@ -1,20 +1,22 @@
+" .vimrc
+" Author: Steve Losh <steve@stevelosh.com>
+" Source: http://bitbucket.org/sjl/dotfiles/src/tip/vim/
+"
+" This file changes a lot.  I'll try to document pieces of it whenever I have
+" a few minutes to kill.
+
+" Preamble -------------------------------------------------------------------- {{{
+
 filetype off
 call pathogen#runtime_append_all_bundles()
 filetype plugin indent on
-
 set nocompatible
 
-" Security
-set modelines=0
+" }}}
+" Basic options --------------------------------------------------------------- {{{
 
-" Tabs/spaces
-set tabstop=4
-set shiftwidth=4
-set softtabstop=4
-set expandtab
-
-" Basic options
 set encoding=utf-8
+set modelines=0
 set scrolloff=3
 set autoindent
 set showmode
@@ -32,62 +34,73 @@
 set undofile
 set undoreload=10000
 set cpoptions+=J
+set list
+set listchars=tab:▸\ ,eol:¬
 
-" Status line
+" Save when losing focus
+au FocusLost * :wa
+
+" Tabs, spaces, wrapping {{{
+
+set tabstop=4
+set shiftwidth=4
+set softtabstop=4
+set expandtab
+set wrap
+set textwidth=79
+set formatoptions=qrn1
+set colorcolumn=85
+
+" }}}
+" Status line {{{
+
 set statusline=%F%m%r%h%w%=(%{&ff}/%Y)\ (line\ %l\/%L,\ col\ %c)
 
-" Backups
+" }}}
+" Backups {{{
+
 set backupdir=~/.vim/tmp/backup// " backups
 set directory=~/.vim/tmp/swap//   " swap files
 set backup                        " enable backups
 
-" Leader
+" }}}
+" Leader {{{
+
 let mapleader = ","
 let maplocalleader = "\\"
 
-" Make Y not dumb
-nnoremap Y y$
+" }}}
+" Color scheme (terminal) {{{
 
-" Searching
+syntax on
+set background=dark
+colorscheme molokai
+
+" }}}
+
+" }}}
+" Searching and Movement ------------------------------------------------------ {{{
+
 nnoremap / /\v
 vnoremap / /\v
+
 set ignorecase
 set smartcase
 set incsearch
 set showmatch
 set hlsearch
 set gdefault
+
 map <leader><space> :noh<cr>
+
 runtime macros/matchit.vim
 nmap <tab> %
 vmap <tab> %
 
-" Soft/hard wrapping
-set wrap
-set textwidth=79
-set formatoptions=qrn1
-set colorcolumn=85
-
-" Use the same symbols as TextMate for tabstops and EOLs
-set list
-set listchars=tab:▸\ ,eol:¬
+nnoremap Y y$
+nnoremap D d$
 
-" Color scheme (terminal)
-syntax on
-set background=dark
-colorscheme molokai
-
-" NERD Tree
-map <F2> :NERDTreeToggle<cr>
-let NERDTreeIgnore=['.vim$', '\~$', '.*\.pyc$', 'pip-log\.txt$', 'whoosh_index', 'xapian_index', '.*.pid', 'monitor.py', '.*-fixtures-.*.json']
-
-" MOVEMENT ---------------------------------------
-
-" Use the damn jkl; keys
-"nnoremap <up> <nop>
-"nnoremap <down> <nop>
-"nnoremap <left> <nop>
-"nnoremap <right> <nop>
+" Directional Keys {{{
 
 " Why stretch?
 noremap h ;
@@ -109,14 +122,17 @@
 noremap <C-g>  <C-w>l
 noremap <leader>w <C-w>v<C-w>l
 
-" Folding ----------------------------------------
+" }}}
+
+" }}}
+" Folding --------------------------------------------------------------------- {{{
 
 set foldlevelstart=0
 nnoremap <Space> za
 vnoremap <Space> za
 nnoremap zO zCzO
 
-function! MyFoldText()
+function! MyFoldText() " {{{
     let line = getline(v:foldstart)
 
     let nucolwidth = &fdc + &number * &numberwidth
@@ -130,63 +146,86 @@
     let line = strpart(line, 0, windowwidth - 2 -len(foldedlinecount))
     let fillcharcount = windowwidth - len(line) - len(foldedlinecount) - 4
     return line . '…' . repeat(" ",fillcharcount) . foldedlinecount . '…' . ' '
-endfunction
+endfunction " }}}
 set foldtext=MyFoldText()
 
+" }}}
+" Destroy infuriating keys ---------------------------------------------------- {{{
+
 " Fuck you, help key.
 set fuoptions=maxvert,maxhorz
 inoremap <F1> <ESC>:set invfullscreen<CR>a
 noremap <F1> :set invfullscreen<CR>
 
-" Fuck you too, manual key
+" Fuck you too, manual key.
 nnoremap K <nop>
 
-" Various filetype-specific stuff
+" Stop it, hash key.
+inoremap # X<BS>#
+
+" }}}
+" Various filetype-specific stuff --------------------------------------------- {{{
 
+" Cram {{{
+au BufNewFile,BufRead *.t set filetype=cram
+let cram_fold=1
+autocmd Syntax cram setlocal foldlevel=1
+" }}}
+" Clojure {{{
 au BufNewFile,BufRead *.clj nmap <localleader>ee 0;\et
-
+au FileType clojure call TurnOnClojureFolding()
+" }}}
+" HTML and HTMLDjango {{{
 au BufNewFile,BufRead *.html setlocal filetype=htmldjango
 au BufNewFile,BufRead *.html setlocal foldmethod=manual
 au BufNewFile,BufRead *.html nnoremap <buffer> <localleader>f Vatzf
 au BufNewFile,BufRead *.html inoremap <buffer> <s-cr> <cr><esc>kA<cr>
 au BufNewFile,BufRead *.html imap <buffer> <d-e><cr> <d-e><s-cr>
 au BufNewFile,BufRead *.html imap <buffer> <d-e><space> <d-e>.<bs>
-
+au BufNewFile,BufRead *.html nnoremap <s-cr> vit<esc>a<cr><esc>vito<esc>i<cr><esc>
+" }}}
+" LessCSS {{{
 au BufNewFile,BufRead *.less setlocal filetype=less
 au BufNewFile,BufRead *.less setlocal foldmethod=marker
 au BufNewFile,BufRead *.less setlocal foldmarker={,}
 au BufNewFile,BufRead *.less setlocal nocursorline
 au BufNewFile,BufRead *.less nnoremap <buffer> cc ddko
 au BufNewFile,BufRead *.less nnoremap <buffer> <localleader>S ?{<CR>jV/^\s*\}?$<CR>k:sort<CR>:noh<CR>
-au BufNewFile,BufRead *.less inoremap <buffer> {<cr> {<cr><space><space><space><space>.<cr><bs>}<esc>kA<bs>
-
+au BufNewFile,BufRead *.less inoremap <buffer> {<cr> {}<left><cr>.<cr><esc>kA<bs><space><space><space><space>
+" }}}
+" Javascript {{{
 au BufNewFile,BufRead *.js setlocal foldmethod=marker
 au BufNewFile,BufRead *.js setlocal foldmarker={,}
-
+" }}}
+" Confluence {{{
 au BufRead,BufNewFile *.confluencewiki setlocal filetype=confluencewiki
 au BufRead,BufNewFile *.confluencewiki setlocal wrap linebreak nolist
-
+" }}}
+" Fish {{{
 au BufNewFile,BufRead *.fish setlocal filetype=fish
-
+" }}}
+" Markdown {{{
 au BufNewFile,BufRead *.m*down setlocal filetype=markdown
 au BufNewFile,BufRead *.m*down nnoremap <buffer> <localleader>1 yypVr=
 au BufNewFile,BufRead *.m*down nnoremap <buffer> <localleader>2 yypVr-
 au BufNewFile,BufRead *.m*down nnoremap <buffer> <localleader>3 I### <ESC>
-
-au BufNewFile,BufRead *.vim setlocal foldmethod=marker
-
-au FileType python,man map <buffer> <localleader>d :call ShowPyDoc('<C-R><C-W>', 1)<CR>
-au FileType python,man map <buffer> <localleader>D :call ShowPyDoc('<C-R><C-A>', 1)<CR>
-
+" }}}
+" Vim {{{
+au FileType vim setlocal foldmethod=marker
+" }}}
+" Django {{{
 au BufNewFile,BufRead urls.py      setlocal nowrap
 au BufNewFile,BufRead settings.py  normal! zR
 au BufNewFile,BufRead dashboard.py normal! zR
-
+" }}}
+" Nginx {{{
 au BufRead,BufNewFile /etc/nginx/conf/* set ft=nginx
 au BufRead,BufNewFile /etc/nginx/sites-available/* set ft=nginx
 au BufRead,BufNewFile /usr/local/etc/nginx/sites-available/* set ft=nginx
+" }}}
 
-autocmd FileType clojure call TurnOnClojureFolding()
+" }}}
+" Convenience mappings -------------------------------------------------------- {{{
 
 " Clean whitespace
 map <leader>W :%s/\s\+$//<cr>:let @/=''<CR>
@@ -195,7 +234,7 @@
 map <leader>a :Ack 
 
 " Yankring
-nnoremap <silent> <leader>y :YRShow<cr>
+nnoremap <silent> <F6> :YRShow<cr>
 
 " Formatting, TextMate-style
 nnoremap <leader>q gqip
@@ -203,10 +242,6 @@
 " Faster Make
 nnoremap <leader>m :make<cr>
 
-" Google's JSLint
-au BufNewFile,BufRead *.js set makeprg=gjslint\ %
-au BufNewFile,BufRead *.js set errorformat=%-P-----\ FILE\ \ :\ \ %f\ -----,Line\ %l\\,\ E:%n:\ %m,%-Q,%-GFound\ %s,%-GSome\ %s,%-Gfixjsstyle%s,%-Gscript\ can\ %s,%-G
-
 " Easier linewise reselection
 nnoremap <leader>v V`]
 
@@ -215,9 +250,6 @@
 
 " Faster Esc
 inoremap jk <ESC>
-inoremap kj <ESC>
-inoremap kl <ESC>
-inoremap lk <ESC>
 
 " TextMate-Style Autocomplete
 inoremap <ESC> <C-P>
@@ -233,7 +265,7 @@
 " Rainbows!
 nmap <leader>R :RainbowParenthesesToggle<CR>
 
-" Edit vim stuff.
+" Edit vim stuff
 nnoremap <leader>ev <C-w>s<C-w>j<C-w>L:e $MYVIMRC<cr>
 nnoremap <leader>es <C-w>s<C-w>j<C-w>L:e ~/.vim/snippets/<cr>
 
@@ -246,49 +278,20 @@
 nnoremap _cw :set ft=confluencewiki<CR>
 nnoremap _pd :set ft=python.django<CR>
 
-" Python docs
-nnoremap <leader>P :Pydoc<space>
+" }}}
+" Plugin Settings ------------------------------------------------------------- {{{
 
-" HALP
-nnoremap _wtfcw :!open 'http://confluence.atlassian.com/renderer/notationhelp.action?section=all'<cr>
-
-" VCS Stuff
-let VCSCommandMapPrefix = "<leader>h"
-
-" Disable useless HTML5 junk
+" NERD Tree {{{
+map <F2> :NERDTreeToggle<cr>
+let NERDTreeIgnore=['.vim$', '\~$', '.*\.pyc$', 'pip-log\.txt$', 'whoosh_index', 'xapian_index', '.*.pid', 'monitor.py', '.*-fixtures-.*.json']
+" }}}
+" HTML5 {{{
 let g:event_handler_attributes_complete = 0
 let g:rdfa_attributes_complete = 0
 let g:microdata_attributes_complete = 0
 let g:atia_attributes_complete = 0
-
-" Save when losing focus
-au FocusLost * :wa
-
-" Stop it, hash key
-inoremap # X<BS>#
-
-" Cram tests
-au BufNewFile,BufRead *.t set filetype=cram
-let cram_fold=1
-autocmd Syntax cram setlocal foldlevel=1
-
-" Show syntax highlighting groups for word under cursor
-nmap <C-S> :call SynStack()<CR>
-function! SynStack()
-  if !exists("*synstack")
-    return
-  endif
-  echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
-endfunc
-
-" Tags!
-let Tlist_Ctags_Cmd = "/usr/local/bin/ctags"
-let Tlist_WinWidth = 50
-let Tlist_Show_One_File = 1
-map <F4> :TlistToggle<cr>
-map <leader>T :!/usr/local/bin/ctags --exclude='**/ckeditor' -R . $(test -f .venv && echo ~/lib/virtualenvs/`cat .venv`)<CR>
-
-" Rope and Bike.
+" }}}
+" Rope and Bike {{{
 let g:bike_exceptions=1
 source $HOME/.vim/sadness/sadness.vim
 
@@ -297,17 +300,55 @@
 noremap <leader>rr :RopeRename<CR>
 vnoremap <leader>rm :RopeExtractMethod<CR>
 noremap <leader>roi :RopeOrganizeImports<CR>
-
-" Gundo
+" }}}
+" Gundo {{{
 nnoremap <F5> :GundoToggle<CR>
 let g:gundo_debug = 1
 let g:gundo_preview_bottom = 1
+" }}}
+" VimClojure {{{
+let vimclojure#HighlightBuiltins = 1
+let vimclojure#ParenRainbow = 1
+let vimclojure#WantNailgun = 1
+let vimclojure#NailgunClient = $HOME . "/.vim/bundle/vimclojure/bin/ng"
+let vimclojure#SplitPos = "right"
+" }}}
+" Syntastic {{{
+let g:syntastic_enable_signs=1
+let g:syntastic_disabled_filetypes = ['html', 'python']
+" }}}
 
-" Shortcut for square brackets
+" }}}
+" Synstack -------------------------------------------------------------------- {{{
+
+function! SynStack() " {{{
+  if !exists("*synstack")
+    return
+  endif
+  echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
+endfunc " }}}
+nmap <C-S> :call SynStack()<CR>
+
+" }}}
+" Tags! ----------------------------------------------------------------------- {{{
+
+let Tlist_Ctags_Cmd = "/usr/local/bin/ctags"
+let Tlist_WinWidth = 50
+let Tlist_Show_One_File = 1
+
+map <F4> :TlistToggle<cr>
+map <leader>T :!/usr/local/bin/ctags --exclude='**/ckeditor' -R . $(test -f .venv && echo ~/lib/virtualenvs/`cat .venv`)<CR>
+
+" }}}
+" Text objects ---------------------------------------------------------------- {{{
+
+" Shortcut for [] {{{
+
 onoremap id i[
 onoremap ad a[
 
-" Next ()
+" }}}
+" Next () {{{
 vnoremap <silent> inb :<C-U>normal! f(vib<cr>
 onoremap <silent> inb :<C-U>normal! f(vib<cr>
 vnoremap <silent> anb :<C-U>normal! f(vab<cr>
@@ -316,8 +357,8 @@
 onoremap <silent> in( :<C-U>normal! f(vi(<cr>
 vnoremap <silent> an( :<C-U>normal! f(va(<cr>
 onoremap <silent> an( :<C-U>normal! f(va(<cr>
-
-" Next {}
+" }}}
+" Next {} {{{
 vnoremap <silent> inB :<C-U>normal! f{viB<cr>
 onoremap <silent> inB :<C-U>normal! f{viB<cr>
 vnoremap <silent> anB :<C-U>normal! f{vaB<cr>
@@ -326,8 +367,8 @@
 onoremap <silent> in{ :<C-U>normal! f{vi{<cr>
 vnoremap <silent> an{ :<C-U>normal! f{va{<cr>
 onoremap <silent> an{ :<C-U>normal! f{va{<cr>
-
-" Next []
+" }}}
+" Next [] {{{
 vnoremap <silent> ind :<C-U>normal! f[vi[<cr>
 onoremap <silent> ind :<C-U>normal! f[vi[<cr>
 vnoremap <silent> and :<C-U>normal! f[va[<cr>
@@ -336,44 +377,38 @@
 onoremap <silent> in[ :<C-U>normal! f[vi[<cr>
 vnoremap <silent> an[ :<C-U>normal! f[va[<cr>
 onoremap <silent> an[ :<C-U>normal! f[va[<cr>
-
-" Next <>
+" }}}
+" Next <> {{{
 vnoremap <silent> in< :<C-U>normal! f<vi<<cr>
 onoremap <silent> in< :<C-U>normal! f<vi<<cr>
 vnoremap <silent> an< :<C-U>normal! f<va<<cr>
 onoremap <silent> an< :<C-U>normal! f<va<<cr>
-
-" Next ''
+" }}}
+" Next '' {{{
 vnoremap <silent> in' :<C-U>normal! f'vi'<cr>
 onoremap <silent> in' :<C-U>normal! f'vi'<cr>
 vnoremap <silent> an' :<C-U>normal! f'va'<cr>
 onoremap <silent> an' :<C-U>normal! f'va'<cr>
-
-" Next ""
+" }}}
+" Next "" {{{
 vnoremap <silent> in" :<C-U>normal! f"vi"<cr>
 onoremap <silent> in" :<C-U>normal! f"vi"<cr>
 vnoremap <silent> an" :<C-U>normal! f"va"<cr>
 onoremap <silent> an" :<C-U>normal! f"va"<cr>
+" }}}
 
-" Skipreturn
+" }}}
+" Quickreturn ----------------------------------------------------------------- {{{
+
 inoremap <c-cr> <esc>A<cr>
 inoremap <s-cr> <esc>A:<cr>
-au BufNewFile,BufRead *.html nnoremap <s-cr> vit<esc>a<cr><esc>vito<esc>i<cr><esc>
 
-" VimClojure
-let vimclojure#HighlightBuiltins = 1
-let vimclojure#ParenRainbow = 1
-let vimclojure#WantNailgun = 1
-let vimclojure#NailgunClient = $HOME . "/.vim/bundle/vimclojure/bin/ng"
-let vimclojure#SplitPos = "right"
-
-" Syntastic
-let g:syntastic_enable_signs=1
-let g:syntastic_disabled_filetypes = ['html', 'python']
+" }}}
+" Error toggle ---------------------------------------------------------------- {{{
 
 nmap <silent> <f3> :ErrorsToggle<cr>
 command! ErrorsToggle call ErrorsToggle()
-function! ErrorsToggle()
+function! ErrorsToggle() " {{{
   if exists("w:is_error_window")
     unlet w:is_error_window
     exec "q"
@@ -382,18 +417,14 @@
     lopen
     let w:is_error_window = 1
   endif
-endfunction
+endfunction " }}}
 
-" Camel Case Motion
-map <silent> ∑ <Plug>CamelCaseMotion_w
-map <silent> ∫ <Plug>CamelCaseMotion_b
-map <silent> \e <Plug>CamelCaseMotion_e
-omap <silent> i∑ <Plug>CamelCaseMotion_iw
-xmap <silent> i∑ <Plug>CamelCaseMotion_iw
+" }}}
+" Diff ------------------------------------------------------------------------ {{{
 
-" Diff
 let g:HgDiffing = 0
-function! s:HgDiffCurrentFile()
+
+function! s:HgDiffCurrentFile() " {{{
     if g:HgDiffing == 1
         if bufwinnr(bufnr('__HGDIFF__')) != -1
             exe bufwinnr(bufnr('__HGDIFF__')) . "wincmd w"
@@ -434,13 +465,14 @@
     let g:HgDiffing = 1
 
     return
-endfunction
+endfunction " }}}
 
 command! HgDiffCurrent call s:HgDiffCurrentFile()
-
 nmap <leader>d :HgDiffCurrent<cr>
 
-" MacVim
+" }}}
+" MacVim ---------------------------------------------------------------------- {{{
+
 if has('gui_running')
     set guifont=Menlo:h12
 
@@ -459,9 +491,8 @@
     let g:sparkupExecuteMapping = '<D-e>'
 
     highlight SpellBad term=underline gui=undercurl guisp=Orange
-
-    inoremenu <silent>&Plugin.QuickCursor.CloseBuffer <Esc>:w<cr>:BufClose<cr>
-    nnoremenu <silent>&Plugin.QuickCursor.CloseBuffer :w<cr>:BufClose<cr>
 else
     set nocursorline
 endif
+
+" }}}
--- a/vim/after/syntax/css.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,318 +0,0 @@
-" Language:	   Colored CSS Color Preview
-" Maintainer:	Niklas Hofer <niklas+vim@lanpartei.de>
-" URL:		   svn://lanpartei.de/vimrc/after/syntax/css.vim
-" Last Change:	2008 Feb 12
-" Licence:     No Warranties. Do whatever you want with this. But please tell me!
-" Version:     0.6
-
-function! s:FGforBG(bg)
-   " takes a 6hex color code and returns a matching color that is visible
-   let pure = substitute(a:bg,'^#','','')
-   let r = eval('0x'.pure[0].pure[1])
-   let g = eval('0x'.pure[2].pure[3])
-   let b = eval('0x'.pure[4].pure[5])
-   if r*30 + g*59 + b*11 > 12000
-      return '#000000'
-   else
-      return '#ffffff'
-   end
-endfunction
-
-function! s:SetMatcher(clr,pat)
-   let group = 'cssColor'.substitute(a:clr,'^#','','')
-   redir => s:currentmatch
-      silent! exe 'syn list '.group
-   redir END
-   if s:currentmatch !~ a:pat.'\/'
-      exe 'syn match '.group.' /'.a:pat.'\>/ contained'
-      exe 'syn cluster cssColors add='.group
-      if has('gui_running')
-        exe 'hi '.group.' guifg='.s:FGforBG(a:clr)
-        exe 'hi '.group.' guibg='.a:clr
-      elseif &t_Co == 256
-        exe 'hi '.group.' ctermfg='.s:Rgb2xterm(s:FGforBG(a:clr))
-        exe 'hi '.group.' ctermbg='.s:Rgb2xterm(a:clr)
-      endif
-      return 1
-   else
-      return 0
-   endif
-endfunction
-
-"" the 6 value iterations in the xterm color cube
-let s:valuerange = [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]
-"
-"" 16 basic colors
-let s:basic16 = [ [ 0x00, 0x00, 0x00 ], [ 0xCD, 0x00, 0x00 ], [ 0x00, 0xCD, 0x00 ], [ 0xCD, 0xCD, 0x00 ], [ 0x00, 0x00, 0xEE ], [ 0xCD, 0x00, 0xCD ], [ 0x00, 0xCD, 0xCD ], [ 0xE5, 0xE5, 0xE5 ], [ 0x7F, 0x7F, 0x7F ], [ 0xFF, 0x00, 0x00 ], [ 0x00, 0xFF, 0x00 ], [ 0xFF, 0xFF, 0x00 ], [ 0x5C, 0x5C, 0xFF ], [ 0xFF, 0x00, 0xFF ], [ 0x00, 0xFF, 0xFF ], [ 0xFF, 0xFF, 0xFF ] ]
-:
-function! s:Xterm2rgb(color) 
-	" 16 basic colors
-   let r=0
-   let g=0
-   let b=0
-   if a:color<16
-      let r = s:basic16[a:color][0]
-      let g = s:basic16[a:color][1]
-      let b = s:basic16[a:color][2]
-   endif
-	
-	" color cube color
-   if a:color>=16 && a:color<=232
-      let color=a:color-16
-      let r = s:valuerange[(color/36)%6]
-      let g = s:valuerange[(color/6)%6]
-      let b = s:valuerange[color%6]
-   endif
-	
-	" gray tone
-	if a:color>=233 && a:color<=253
-      let r=8+(a:color-232)*0x0a
-      let g=r
-      let b=r
-   endif
-   let rgb=[r,g,b]
-   return rgb
-endfunction
-
-function! s:pow(x, n)
-   let x = a:x
-   for i in range(a:n-1)
-      let x = x*a:x
-   return x
-endfunction
-
-let s:colortable=[]
-for c in range(0, 254)
-   let color = s:Xterm2rgb(c)
-   call add(s:colortable, color)
-endfor
-
-" selects the nearest xterm color for a rgb value like #FF0000
-function! s:Rgb2xterm(color)
-   let best_match=0
-   let smallest_distance = 10000000000
-   let r = eval('0x'.a:color[1].a:color[2])
-   let g = eval('0x'.a:color[3].a:color[4])
-   let b = eval('0x'.a:color[5].a:color[6])
-   for c in range(0,254)
-      let d = s:pow(s:colortable[c][0]-r,2) + s:pow(s:colortable[c][1]-g,2) + s:pow(s:colortable[c][2]-b,2)
-      if d<smallest_distance
-      let smallest_distance = d
-      let best_match = c
-      endif
-   endfor
-   return best_match
-endfunction
-
-function! s:SetNamedColor(clr,name)
-   let group = 'cssColor'.substitute(a:clr,'^#','','')
-   exe 'syn keyword '.group.' '.a:name.' contained'
-   exe 'syn cluster cssColors add='.group
-   if has('gui_running')
-     exe 'hi '.group.' guifg='.s:FGforBG(a:clr)
-     exe 'hi '.group.' guibg='.a:clr
-   elseif &t_Co == 256
-     exe 'hi '.group.' ctermfg='.s:Rgb2xterm(s:FGforBG(a:clr))
-     exe 'hi '.group.' ctermbg='.s:Rgb2xterm(a:clr)
-   endif
-   return 23
-endfunction
-
-function! s:PreviewCSSColorInLine(where)
-   " TODO use cssColor matchdata
-   let foundcolor = matchstr( getline(a:where), '#[0-9A-Fa-f]\{3,6\}\>' )
-   let color = ''
-   if foundcolor != ''
-      if foundcolor =~ '#\x\{6}$'
-         let color = foundcolor
-      elseif foundcolor =~ '#\x\{3}$'
-         let color = substitute(foundcolor, '\(\x\)\(\x\)\(\x\)', '\1\1\2\2\3\3', '')
-      else
-         let color = ''
-      endif
-      if color != ''
-         return s:SetMatcher(color,foundcolor)
-      else
-         return 0
-      endif
-   else
-      return 0
-   endif
-endfunction
-
-if has("gui_running") || &t_Co==256
-   " HACK modify cssDefinition to add @cssColors to its contains
-   redir => s:olddef
-      silent!  syn list cssDefinition
-   redir END
-   if s:olddef != ''
-      let s:b = strridx(s:olddef,'matchgroup')
-      if s:b != -1
-         exe 'syn region cssDefinition '.strpart(s:olddef,s:b).',@cssColors'
-      endif
-   endif
-
-   " w3c Colors
-   let i = s:SetNamedColor('#800000', 'maroon')
-   let i = s:SetNamedColor('#ff0000', 'red')
-   let i = s:SetNamedColor('#ffA500', 'orange')
-   let i = s:SetNamedColor('#ffff00', 'yellow')
-   let i = s:SetNamedColor('#808000', 'olive')
-   let i = s:SetNamedColor('#800080', 'purple')
-   let i = s:SetNamedColor('#ff00ff', 'fuchsia')
-   let i = s:SetNamedColor('#ffffff', 'white')
-   let i = s:SetNamedColor('#00ff00', 'lime')
-   let i = s:SetNamedColor('#008000', 'green')
-   let i = s:SetNamedColor('#000080', 'navy')
-   let i = s:SetNamedColor('#0000ff', 'blue')
-   let i = s:SetNamedColor('#00ffff', 'aqua')
-   let i = s:SetNamedColor('#008080', 'teal')
-   let i = s:SetNamedColor('#000000', 'black')
-   let i = s:SetNamedColor('#c0c0c0', 'silver')
-   let i = s:SetNamedColor('#808080', 'gray')
-
-   " extra colors
-   let i = s:SetNamedColor('#F0F8FF','AliceBlue')
-   let i = s:SetNamedColor('#FAEBD7','AntiqueWhite')
-   let i = s:SetNamedColor('#7FFFD4','Aquamarine')
-   let i = s:SetNamedColor('#F0FFFF','Azure')
-   let i = s:SetNamedColor('#F5F5DC','Beige')
-   let i = s:SetNamedColor('#FFE4C4','Bisque')
-   let i = s:SetNamedColor('#FFEBCD','BlanchedAlmond')
-   let i = s:SetNamedColor('#8A2BE2','BlueViolet')
-   let i = s:SetNamedColor('#A52A2A','Brown')
-   let i = s:SetNamedColor('#DEB887','BurlyWood')
-   let i = s:SetNamedColor('#5F9EA0','CadetBlue')
-   let i = s:SetNamedColor('#7FFF00','Chartreuse')
-   let i = s:SetNamedColor('#D2691E','Chocolate')
-   let i = s:SetNamedColor('#FF7F50','Coral')
-   let i = s:SetNamedColor('#6495ED','CornflowerBlue')
-   let i = s:SetNamedColor('#FFF8DC','Cornsilk')
-   let i = s:SetNamedColor('#DC143C','Crimson')
-   let i = s:SetNamedColor('#00FFFF','Cyan')
-   let i = s:SetNamedColor('#00008B','DarkBlue')
-   let i = s:SetNamedColor('#008B8B','DarkCyan')
-   let i = s:SetNamedColor('#B8860B','DarkGoldenRod')
-   let i = s:SetNamedColor('#A9A9A9','DarkGray')
-   let i = s:SetNamedColor('#A9A9A9','DarkGrey')
-   let i = s:SetNamedColor('#006400','DarkGreen')
-   let i = s:SetNamedColor('#BDB76B','DarkKhaki')
-   let i = s:SetNamedColor('#8B008B','DarkMagenta')
-   let i = s:SetNamedColor('#556B2F','DarkOliveGreen')
-   let i = s:SetNamedColor('#FF8C00','Darkorange')
-   let i = s:SetNamedColor('#9932CC','DarkOrchid')
-   let i = s:SetNamedColor('#8B0000','DarkRed')
-   let i = s:SetNamedColor('#E9967A','DarkSalmon')
-   let i = s:SetNamedColor('#8FBC8F','DarkSeaGreen')
-   let i = s:SetNamedColor('#483D8B','DarkSlateBlue')
-   let i = s:SetNamedColor('#2F4F4F','DarkSlateGray')
-   let i = s:SetNamedColor('#2F4F4F','DarkSlateGrey')
-   let i = s:SetNamedColor('#00CED1','DarkTurquoise')
-   let i = s:SetNamedColor('#9400D3','DarkViolet')
-   let i = s:SetNamedColor('#FF1493','DeepPink')
-   let i = s:SetNamedColor('#00BFFF','DeepSkyBlue')
-   let i = s:SetNamedColor('#696969','DimGray')
-   let i = s:SetNamedColor('#696969','DimGrey')
-   let i = s:SetNamedColor('#1E90FF','DodgerBlue')
-   let i = s:SetNamedColor('#B22222','FireBrick')
-   let i = s:SetNamedColor('#FFFAF0','FloralWhite')
-   let i = s:SetNamedColor('#228B22','ForestGreen')
-   let i = s:SetNamedColor('#DCDCDC','Gainsboro')
-   let i = s:SetNamedColor('#F8F8FF','GhostWhite')
-   let i = s:SetNamedColor('#FFD700','Gold')
-   let i = s:SetNamedColor('#DAA520','GoldenRod')
-   let i = s:SetNamedColor('#808080','Grey')
-   let i = s:SetNamedColor('#ADFF2F','GreenYellow')
-   let i = s:SetNamedColor('#F0FFF0','HoneyDew')
-   let i = s:SetNamedColor('#FF69B4','HotPink')
-   let i = s:SetNamedColor('#CD5C5C','IndianRed')
-   let i = s:SetNamedColor('#4B0082','Indigo')
-   let i = s:SetNamedColor('#FFFFF0','Ivory')
-   let i = s:SetNamedColor('#F0E68C','Khaki')
-   let i = s:SetNamedColor('#E6E6FA','Lavender')
-   let i = s:SetNamedColor('#FFF0F5','LavenderBlush')
-   let i = s:SetNamedColor('#7CFC00','LawnGreen')
-   let i = s:SetNamedColor('#FFFACD','LemonChiffon')
-   let i = s:SetNamedColor('#ADD8E6','LightBlue')
-   let i = s:SetNamedColor('#F08080','LightCoral')
-   let i = s:SetNamedColor('#E0FFFF','LightCyan')
-   let i = s:SetNamedColor('#FAFAD2','LightGoldenRodYellow')
-   let i = s:SetNamedColor('#D3D3D3','LightGray')
-   let i = s:SetNamedColor('#D3D3D3','LightGrey')
-   let i = s:SetNamedColor('#90EE90','LightGreen')
-   let i = s:SetNamedColor('#FFB6C1','LightPink')
-   let i = s:SetNamedColor('#FFA07A','LightSalmon')
-   let i = s:SetNamedColor('#20B2AA','LightSeaGreen')
-   let i = s:SetNamedColor('#87CEFA','LightSkyBlue')
-   let i = s:SetNamedColor('#778899','LightSlateGray')
-   let i = s:SetNamedColor('#778899','LightSlateGrey')
-   let i = s:SetNamedColor('#B0C4DE','LightSteelBlue')
-   let i = s:SetNamedColor('#FFFFE0','LightYellow')
-   let i = s:SetNamedColor('#32CD32','LimeGreen')
-   let i = s:SetNamedColor('#FAF0E6','Linen')
-   let i = s:SetNamedColor('#FF00FF','Magenta')
-   let i = s:SetNamedColor('#66CDAA','MediumAquaMarine')
-   let i = s:SetNamedColor('#0000CD','MediumBlue')
-   let i = s:SetNamedColor('#BA55D3','MediumOrchid')
-   let i = s:SetNamedColor('#9370D8','MediumPurple')
-   let i = s:SetNamedColor('#3CB371','MediumSeaGreen')
-   let i = s:SetNamedColor('#7B68EE','MediumSlateBlue')
-   let i = s:SetNamedColor('#00FA9A','MediumSpringGreen')
-   let i = s:SetNamedColor('#48D1CC','MediumTurquoise')
-   let i = s:SetNamedColor('#C71585','MediumVioletRed')
-   let i = s:SetNamedColor('#191970','MidnightBlue')
-   let i = s:SetNamedColor('#F5FFFA','MintCream')
-   let i = s:SetNamedColor('#FFE4E1','MistyRose')
-   let i = s:SetNamedColor('#FFE4B5','Moccasin')
-   let i = s:SetNamedColor('#FFDEAD','NavajoWhite')
-   let i = s:SetNamedColor('#FDF5E6','OldLace')
-   let i = s:SetNamedColor('#6B8E23','OliveDrab')
-   let i = s:SetNamedColor('#FF4500','OrangeRed')
-   let i = s:SetNamedColor('#DA70D6','Orchid')
-   let i = s:SetNamedColor('#EEE8AA','PaleGoldenRod')
-   let i = s:SetNamedColor('#98FB98','PaleGreen')
-   let i = s:SetNamedColor('#AFEEEE','PaleTurquoise')
-   let i = s:SetNamedColor('#D87093','PaleVioletRed')
-   let i = s:SetNamedColor('#FFEFD5','PapayaWhip')
-   let i = s:SetNamedColor('#FFDAB9','PeachPuff')
-   let i = s:SetNamedColor('#CD853F','Peru')
-   let i = s:SetNamedColor('#FFC0CB','Pink')
-   let i = s:SetNamedColor('#DDA0DD','Plum')
-   let i = s:SetNamedColor('#B0E0E6','PowderBlue')
-   let i = s:SetNamedColor('#BC8F8F','RosyBrown')
-   let i = s:SetNamedColor('#4169E1','RoyalBlue')
-   let i = s:SetNamedColor('#8B4513','SaddleBrown')
-   let i = s:SetNamedColor('#FA8072','Salmon')
-   let i = s:SetNamedColor('#F4A460','SandyBrown')
-   let i = s:SetNamedColor('#2E8B57','SeaGreen')
-   let i = s:SetNamedColor('#FFF5EE','SeaShell')
-   let i = s:SetNamedColor('#A0522D','Sienna')
-   let i = s:SetNamedColor('#87CEEB','SkyBlue')
-   let i = s:SetNamedColor('#6A5ACD','SlateBlue')
-   let i = s:SetNamedColor('#708090','SlateGray')
-   let i = s:SetNamedColor('#708090','SlateGrey')
-   let i = s:SetNamedColor('#FFFAFA','Snow')
-   let i = s:SetNamedColor('#00FF7F','SpringGreen')
-   let i = s:SetNamedColor('#4682B4','SteelBlue')
-   let i = s:SetNamedColor('#D2B48C','Tan')
-   let i = s:SetNamedColor('#D8BFD8','Thistle')
-   let i = s:SetNamedColor('#FF6347','Tomato')
-   let i = s:SetNamedColor('#40E0D0','Turquoise')
-   let i = s:SetNamedColor('#EE82EE','Violet')
-   let i = s:SetNamedColor('#F5DEB3','Wheat')
-   let i = s:SetNamedColor('#F5F5F5','WhiteSmoke')
-   let i = s:SetNamedColor('#9ACD32','YellowGreen')
-
-
-
-   let i = 1
-   while i <= line("$")
-      call s:PreviewCSSColorInLine(i)
-      let i = i+1
-   endwhile
-   unlet i
-
-   autocmd CursorHold * silent call s:PreviewCSSColorInLine('.')
-   autocmd CursorHoldI * silent call s:PreviewCSSColorInLine('.')
-   set ut=100
-endif		" has("gui_running")
--- a/vim/after/syntax/less.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-/Users/sjl/lib/dotfiles/vim/after/syntax/css.vim
\ No newline at end of file
--- a/vim/bundle/camelcasemotion/autoload/camelcasemotion.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-" camelcasemotion.vim: Motion through CamelCaseWords and underscore_notation. 
-"
-" DEPENDENCIES:
-"   - Requires Vim 7.0 or higher. 
-"
-" Copyright: (C) 2007-2009 by Ingo Karkat
-"   The VIM LICENSE applies to this script; see ':help copyright'. 
-"
-" Maintainer:	Ingo Karkat <ingo@karkat.de>
-" REVISION	DATE		REMARKS 
-"   1.50.001	05-May-2009	Do not create mappings for select mode;
-"				according to|Select-mode|, printable character
-"				commands should delete the selection and insert
-"				the typed characters. 
-"				Moved functions from plugin to separate autoload
-"				script. 
-"   				file creation
-
-"- functions ------------------------------------------------------------------"
-function! s:Move( direction, count, mode )
-    " Note: There is no inversion of the regular expression character class
-    " 'keyword character' (\k). We need an inversion "non-keyword" defined as
-    " "any non-whitespace character that is not a keyword character" (e.g.
-    " [!@#$%^&*()]). This can be specified via a non-whitespace character in
-    " whose place no keyword character matches (\k\@!\S). 
-
-    "echo "count is " . a:count
-    let l:i = 0
-    while l:i < a:count
-	if a:direction == 'e'
-	    " "Forward to end" motion. 
-	    "call search( '\>\|\(\a\|\d\)\+\ze_', 'We' )
-	    " end of ...
-	    " number | ACRONYM followed by CamelCase or number | CamelCase | underscore_notation | non-keyword | word
-	    call search( '\d\+\|\u\+\ze\%(\u\l\|\d\)\|\u\l\+\|\%(\a\|\d\)\+\ze_\|\%(\k\@!\S\)\+\|\%(_\@!\k\)\+\>', 'We' )
-	    " Note: word must be defined as '\k\>'; '\>' on its own somehow
-	    " dominates over the previous branch. Plus, \k must exclude the
-	    " underscore, or a trailing one will be incorrectly moved over:
-	    " '\%(_\@!\k\)'. 
-	    if a:mode == 'o'
-		" Note: Special additional treatment for operator-pending mode
-		" "forward to end" motion. 
-		" The difference between normal mode, operator-pending and visual
-		" mode is that in the latter two, the motion must go _past_ the
-		" final "word" character, so that all characters of the "word" are
-		" selected. This is done by appending a 'l' motion after the
-		" search for the next "word". 
-		"
-		" In operator-pending mode, the 'l' motion only works properly
-		" at the end of the line (i.e. when the moved-over "word" is at
-		" the end of the line) when the 'l' motion is allowed to move
-		" over to the next line. Thus, the 'l' motion is added
-		" temporarily to the global 'whichwrap' setting. 
-		" Without this, the motion would leave out the last character in
-		" the line. I've also experimented with temporarily setting
-		" "set virtualedit=onemore" , but that didn't work. 
-		let l:save_ww = &whichwrap
-		set whichwrap+=l
-		normal! l
-		let &whichwrap = l:save_ww
-	    endif
-	else
-	    " Forward (a:direction == '') and backward (a:direction == 'b')
-	    " motion. 
-
-	    let l:direction = (a:direction == 'w' ? '' : a:direction)
-
-	    " CamelCase: Jump to beginning of either (start of word, Word, WORD,
-	    " 123). 
-	    " Underscore_notation: Jump to the beginning of an underscore-separated
-	    " word or number. 
-	    "call search( '\<\|\u', 'W' . l:direction )
-	    "call search( '\<\|\u\(\l\+\|\u\+\ze\u\)\|\d\+', 'W' . l:direction )
-	    "call search( '\<\|\u\(\l\+\|\u\+\ze\u\)\|\d\+\|_\zs\(\a\|\d\)\+', 'W' . l:direction )
-	    " beginning of ...
-	    " word | empty line | non-keyword after whitespaces | non-whitespace after word | number | ACRONYM followed by CamelCase or number | CamelCase | underscore followed by ACRONYM, Camel, lowercase or number
-	    call search( '\<\D\|^$\|\%(^\|\s\)\+\zs\k\@!\S\|\>\S\|\d\+\|\u\+\ze\%(\u\l\|\d\)\|\u\l\+\|_\zs\%(\u\+\|\u\l\+\|\l\+\|\d\+\)', 'W' . l:direction )
-	    " Note: word must be defined as '\<\D' to avoid that a word like
-	    " 1234Test is moved over as [1][2]34[T]est instead of [1]234[T]est
-	    " because \< matches with zero width, and \d\+ will then start
-	    " matching '234'. To fix that, we make \d\+ be solely responsible
-	    " for numbers by taken this away from \< via \<\D. (An alternative
-	    " would be to replace \d\+ with \D\%#\zs\d\+, but that one is more
-	    " complex.) All other branches are not affected, because they match
-	    " multiple characters and not the same character multiple times. 
-	endif
-	let l:i = l:i + 1
-    endwhile
-endfunction
-
-function! camelcasemotion#Motion( direction, count, mode )
-"*******************************************************************************
-"* PURPOSE:
-"   Perform the motion over CamelCaseWords or underscore_notation. 
-"* ASSUMPTIONS / PRECONDITIONS:
-"   none
-"* EFFECTS / POSTCONDITIONS:
-"   Move cursor / change selection. 
-"* INPUTS:
-"   a:direction	one of 'w', 'b', 'e'
-"   a:count	number of "words" to move over
-"   a:mode	one of 'n', 'o', 'v', 'iv' (latter one is a special visual mode
-"		when inside the inner "word" text objects. 
-"* RETURN VALUES: 
-"   none
-"*******************************************************************************
-    " Visual mode needs special preparations and postprocessing; 
-    " normal and operator-pending mode breeze through to s:Move(). 
-
-    if a:mode == 'v'
-	" Visual mode was left when calling this function. Reselecting the current
-	" selection returns to visual mode and allows to call search() and issue
-	" normal mode motions while staying in visual mode. 
-	normal! gv
-    endif
-    if a:mode == 'v' || a:mode == 'iv'
-
-	" Note_1a:
-	if &selection != 'exclusive' && a:direction == 'w'
-	    normal! l
-	endif
-    endif
-
-    call s:Move( a:direction, a:count, a:mode )
-
-    if a:mode == 'v' || a:mode == 'iv'
-	" Note: 'selection' setting. 
-	if &selection == 'exclusive' && a:direction == 'e'
-	    " When set to 'exclusive', the "forward to end" motion (',e') does not
-	    " include the last character of the moved-over "word". To include that, an
-	    " additional 'l' motion is appended to the motion; similar to the
-	    " special treatment in operator-pending mode. 
-	    normal! l
-	elseif &selection != 'exclusive' && a:direction != 'e'
-	    " Note_1b:
-	    " The forward and backward motions move to the beginning of the next "word".
-	    " When 'selection' is set to 'inclusive' or 'old', this is one character too far. 
-	    " The appended 'h' motion undoes this. Because of this backward step,
-	    " though, the forward motion finds the current "word" again, and would
-	    " be stuck on the current "word". An 'l' motion before the CamelCase
-	    " motion (see Note_1a) fixes that. 
-	    normal! h
-	endif
-    endif
-endfunction
-
-function! camelcasemotion#InnerMotion( direction, count )
-    " If the cursor is positioned on the first character of a CamelWord, the
-    " backward motion would move to the previous word, which would result in a
-    " wrong selection. To fix this, first move the cursor to the right, so that
-    " the backward motion definitely will cover the current "word" under the
-    " cursor. 
-    normal! l
-    
-    " Move "word" backwards, enter visual mode, then move "word" forward. This
-    " selects the inner "word" in visual mode; the operator-pending mode takes
-    " this selection as the area covered by the motion. 
-    if a:direction == 'b'
-	" Do not do the selection backwards, because the backwards "word" motion
-	" in visual mode + selection=inclusive has an off-by-one error. 
-	call camelcasemotion#Motion( 'b', a:count, 'n' )
-	normal! v
-	" We decree that 'b' is the opposite of 'e', not 'w'. This makes more
-	" sense at the end of a line and for underscore_notation. 
-	call camelcasemotion#Motion( 'e', a:count, 'iv' )
-    else
-	call camelcasemotion#Motion( 'b', 1, 'n' )
-	normal! v
-	call camelcasemotion#Motion( a:direction, a:count, 'iv' )
-    endif
-endfunction
-
-" vim: set sts=4 sw=4 noexpandtab ff=unix fdm=syntax :
\ No newline at end of file
--- a/vim/bundle/camelcasemotion/doc/camelcasemotion.txt	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-*camelcasemotion.txt*   Motion through CamelCaseWords and underscore_notation. 
-
-		     CAMEL CASE MOTION    by Ingo Karkat
-							 *camelcasemotion.vim*
-description			|camelcasemotion-description|
-usage	    			|camelcasemotion-usage|
-installation   			|camelcasemotion-installation|
-configuration  			|camelcasemotion-configuration|
-known problems			|camelcasemotion-known-problems|
-todo				|camelcasemotion-todo|
-history				|camelcasemotion-history|
-
-==============================================================================
-DESCRIPTION					 *camelcasemotion-description*
-
-Vim provides many built-in motions, e.g. to move to the next word, or end of
-the current word. Most programming languages use either CamelCase
-("anIdentifier") or underscore_notation ("an_identifier") naming conventions
-for identifiers. The best way to navigate inside those identifiers using Vim
-built-in motions is the [count]f{char} motion, i.e. f{uppercase-char} or f_,
-respectively. But we can make this easier: 
-
-This script defines motions|,w|,|,b| and|,e|(similar to |w|,|b|,|e|), which do
-not move word-wise (forward/backward), but Camel-wise; i.e. to word boundaries
-and uppercase letters. The motions also work on underscore notation, where
-words are delimited by underscore ('_') characters. From here on, both
-CamelCase and underscore_notation entities are referred to as "words" (in
-double quotes). Just like with the regular motions, a [count] can be prepended
-to move over multiple "words" at once. Outside of "words" (e.g. in non-keyword
-characters like // or ;), the new motions move just like the regular motions. 
-
-Vim provides a built-in|iw|text object called 'inner word', which works in
-operator-pending and visual mode. Analog to that, this script defines inner
-"word" motions |i,w|,|i,b| and|i,e|, which select the "word" (or multiple
-"words" if a [count] is given) where the cursor is located. 
-
-==============================================================================
-USAGE						       *camelcasemotion-usage*
-								*,w* *,b* *,e*
-Use the new motions|,w|,|,b| and|,e| in normal mode, operator-pending mode
-(cp.|operator|), and visual mode. For example, type 'bc,w' to change 'Camel'
-in 'CamelCase' to something else. 
-
-
-EXAMPLE: motions
-Given the following CamelCase identifiers in a source code fragment:
-    set Script31337PathAndNameWithoutExtension11=%~dpn0 ~
-    set Script31337PathANDNameWITHOUTExtension11=%~dpn0 ~
-and the corresponding identifiers in underscore_notation:
-    set script_31337_path_and_name_without_extension_11=%~dpn0 ~
-    set SCRIPT_31337_PATH_AND_NAME_WITHOUT_EXTENSION_11=%~dpn0 ~
-
-,w moves to ([x] is cursor position): [s]et, [s]cript, [3]1337, [p]ath,
-    [a]nd, [n]ame, [w]ithout, [e]xtension, [1]1, [d]pn0, dpn[0], [s]et
-,b moves to: [d]pn0, [1]1, [e]xtension, [w]ithout, ...
-,e moves to: se[t], scrip[t], 3133[7], pat[h], an[d], nam[e], withou[t],
-    extensio[n], 1[1], dpn[0]
-
-
-EXAMPLE: inner motions
-Given the following identifier, with the cursor positioned at [x]:
-    script_31337_path_and_na[m]e_without_extension_11 ~
-
-v3i,w selects script_31337_path_and_[name_without_extension_]11
-v3i,b selects script_31337_[path_and_name]_without_extension_11
-v3i,e selects script_31337_path_and_[name_without_extension]_11
-Instead of visual mode, you can also use c3i,w to change, d3i,w to delete,
-gU3i,w to upper-case, and so on. 
-
-==============================================================================
-INSTALLATION					*camelcasemotion-installation*
-
-This script is packaged as a|vimball|. If you have the "gunzip" decompressor
-in your PATH, simply edit the *.vba.gz package in Vim; otherwise, decompress
-the archive first, e.g. using WinZip. Inside Vim, install by sourcing the
-vimball or via the|:UseVimball|command. >
-    vim camelcasemotion.vba.gz
-    :so %
-To uninstall, use the|:RmVimball|command. 
-
-DEPENDENCIES					*camelcasemotion-dependencies*
-
-- Requires Vim 7.0 or higher. 
-
-==============================================================================
-CONFIGURATION				       *camelcasemotion-configuration*
-
-If you want to use different mappings, map your keys to the
-<Plug>CamelCaseMotion_? mapping targets _before_ sourcing this script (e.g. in
-your|vimrc|).  
-
-EXAMPLE: Replace the default|w|,|b| and|e| mappings instead of defining
-additional mappings|,w|,|,b| and|,e|: >
-    map <silent> w <Plug>CamelCaseMotion_w
-    map <silent> b <Plug>CamelCaseMotion_b
-    map <silent> e <Plug>CamelCaseMotion_e
-    sunmap w
-    sunmap b
-    sunmap e
-
-EXAMPLE: Replace default|iw|text-object and define|ib|and |ie|motions: >
-    omap <silent> iw <Plug>CamelCaseMotion_iw
-    xmap <silent> iw <Plug>CamelCaseMotion_iw
-    omap <silent> ib <Plug>CamelCaseMotion_ib
-    xmap <silent> ib <Plug>CamelCaseMotion_ib
-    omap <silent> ie <Plug>CamelCaseMotion_ie
-    xmap <silent> ie <Plug>CamelCaseMotion_ie
-
-==============================================================================
-KNOWN PROBLEMS				      *camelcasemotion-known-problems*
-
-- A degenerate CamelCaseWord containing '\U\u\d' (e.g. "MaP1Roblem") confuses
-  the operator-pending and visual mode ,e mapping if 'selection' is not set to
-  "exclusive". It'll skip "P" and select "P1" in one step. As a workaround,
-  use ',w' instead of ',e'; those two mappings have the same effect inside
-  CamelCaseWords, anyway. 
-- The operator-pending and visual mode ,e mapping doesn't work properly when
-  it reaches the end of the buffer; the final character of the moved-over
-  "word" remains. As a workaround, use the default 'e' motion instead of ',e'. 
-- When the Vim setting 'selection' is not set to "exclusive", a
-  forward-backward combination in visual mode (e.g. 'v,w,b') selects one
-  additional character to the left, instead of only the character where the
-  motion started. Likewise, extension of the visual selection from the front
-  end is off by one additional character. 
-
-==============================================================================
-TODO							*camelcasemotion-todo*
-
-==============================================================================
-HISTORY						     *camelcasemotion-history*
-
-1.50	05-May-2009
-- Do not create mappings for select mode; according to|Select-mode|, printable
-  character commands should delete the selection and insert the typed
-  characters. Now using :xmap to only target visual mode. 
-- Moved functions from plugin to separate autoload script. 
-- Split off documentation into separate help file. 
-
-1.40	30-Jun-2008
-BF: Now using :normal! to be independent from any user mappings. Thanks to
-Neil Walker for the patch.
-
-1.40	19-May-2008
-BF: Wrong forward motion stop at the second digit if a word starts with
-multiple numbers (e.g. 1234.56789). Thanks to Wasim Ahmed for reporting this.
-
-1.40	24-Apr-2008
-ENH: Added inner "word" text objects 'i,w' etc. that work analoguous to the
-built-in |iw| text object. Thanks to David Kotchan for this suggestion.
-
-1.30	20-Apr-2008
-The motions now also stop at non-keyword boundaries, just like the regular
-motions. This has no effect inside a CamelCaseWord or inside
-underscore_notation, but it makes the motions behave like the regular motions
-(which is important if you replace the default motions). Thanks to Mun Johl
-for reporting this. 
-
-1.30	09-Apr-2008
-- Allowing users to use mappings different than ,w ,b ,e by defining
-  <Plug>CamelCaseMotion_? target mappings. This can even be used to replace
-  the default 'w', 'b' and 'e' mappings, as suggested by Mun Johl.
-- Now requires VIM 7.0 or higher. 
-
-1.20	29-May-2007
-ENH: The visual mode motions now also (mostly) work with the (default) setting
-'set selection=inclusive', instead of selecting one character too much. 
-
-1.10	28-May-2007
-Incorporated major improvements and simplifications done by Joseph Barker. 
-
-1.00	22-May-2007
-First published version. 
-
-0.01	11-Oct-2005
-Started development based on vimtip #1016 by Anthony Van Ham. 
-
-==============================================================================
-Copyright: (C) 2007-2009 by Ingo Karkat
-The VIM LICENSE applies to this script; see|copyright|. 
-
-Maintainer:	Ingo Karkat <ingo@karkat.de>
-==============================================================================
- vim:tw=78:ts=8:ft=help:norl:
\ No newline at end of file
--- a/vim/bundle/camelcasemotion/plugin/camelcasemotion.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-" camelcasemotion.vim: Motion through CamelCaseWords and underscore_notation. 
-"
-" DEPENDENCIES:
-"   - Requires Vim 7.0 or higher. 
-"
-" Copyright: (C) 2007-2009 by Ingo Karkat
-"   The VIM LICENSE applies to this script; see ':help copyright'. 
-"
-" Source: Based on vimtip #1016 by Anthony Van Ham. 
-" Maintainer:	Ingo Karkat <ingo@karkat.de>
-" REVISION	DATE		REMARKS 
-"   1.50.019	05-May-2009	Do not create mappings for select mode;
-"				according to|Select-mode|, printable character
-"				commands should delete the selection and insert
-"				the typed characters. 
-"   				Moved functions from plugin to separate autoload
-"				script. 
-"   				Split off documentation into separate help file. 
-"   				Now cleaning up Create...Mappings functions. 
-"   1.40.018	30-Jun-2008	Minor: Removed unnecessary <script> from
-"				mappings. 
-"   1.40.017	19-May-2008	BF: Now using :normal! to be independent from
-"				any user mappings. Thanks to Neil Walker for the
-"				patch. 
-"   1.40.016	28-Apr-2008	BF: Wrong forward motion stop at the second
-"				digit if a word starts with multiple numbers
-"				(e.g. 1234.56789). Thanks to Wasim Ahmed for
-"				reporting this. 
-"   1.40.015	24-Apr-2008	ENH: Added inner "word" text objects 'i,w' etc.
-"				that work analogous to the built-in 'iw' text
-"				object. Thanks to David Kotchan for this
-"				suggestion. 
-"   1.30.014	20-Apr-2008	The motions now also stop at non-keyword
-"				boundaries, just like the regular motions. This
-"				has no effect inside a CamelCaseWord or inside
-"				underscore_notation, but it makes the motions
-"				behave like the regular motions (which is
-"				important if you replace the default motions). 
-"				Thanks to Mun Johl for reporting this. 
-"				Now using non-capturing parentheses \%() in the
-"				patterns. 
-"   1.30.013	09-Apr-2008	Refactored away s:VisualCamelCaseMotion(). 
-"				Allowing users to use mappings different than
-"				,w ,b ,e by defining <Plug>CamelCaseMotion_?
-"				target mappings. This can even be used to
-"				replace the default 'w', 'b' and 'e' mappings,
-"				as suggested by Mun Johl. 
-"				Mappings are now created in a generic function. 
-"				Now requires Vim 7.0 or higher. 
-"   1.20.012	02-Jun-2007	BF: Corrected motions through mixed
-"				CamelCase_and_UnderScore words by re-ordering
-"				and narrowing the search patterns.  
-"   1.20.011	02-Jun-2007	Thanks again to Joseph Barker for discussing the
-"				complicated visual mode mapping on the vim-dev
-"				mailing list and coming up with a great
-"				simplification:
-"				Removed s:CheckForChangesToTheSelectionSetting().
-"				Introduced s:VisualCamelCaseMotion(), which
-"				handles the differences depending on the
-"				'selection' setting. 
-"				Visual mode mappings now directly map to the
-"				s:VisualCamelCaseMotion() function; no mark is
-"				clobbered, the complex mapping with the inline
-"				expression has been retired. 
-"   1.20.010	29-May-2007	BF: The operator-pending and visual mode ,e
-"				mapping doesn't work properly when it reaches
-"				the end of line; the final character of the
-"				moved-over "word" remains. Fixed this problem
-"				unless the "word" is at the very end of the
-"				buffer. 
-"				ENH: The visual mode motions now also (mostly)
-"				work with the (default) setting
-"				'set selection=inclusive', instead of selecting
-"				one character too much. 
-"				ENH: All mappings will check for changes to the
-"				'selection' setting and remap the visual mode
-"				mappings via function
-"				s:SetupVisualModeMappings(). We cannot rely on
-"				the setting while sourcing camelcasemotion.vim
-"				because the mswin.vim script may be sourced
-"				afterwards, and its 'behave mswin' changes
-"				'selection'. 
-"				Refactored the arguments of function 
-"				s:CamelCaseMotion(...). 
-"   1.10.009	28-May-2007	BF: Degenerate CamelCaseWords that consist of
-"				only a single uppercase letter (e.g. "P" in
-"				"MapPRoblem") are skipped by all motions. Thanks
-"				to Joseph Barker for reporting this. 
-"				BF: In CamelCaseWords that consist of uppercase
-"				letters followed by decimals (e.g.
-"				"MyUPPER123Problem", the uppercase "word" is
-"				skipped by all motions. 
-"   1.10.008	28-May-2007	Incorporated major improvements and
-"				simplifications done by Joseph Barker:
-"				Operator-pending and visual mode motions now
-"				accept [count] of more than 9. 
-"				Visual selections can now be extended from
-"				either end. 
-"				Instead of misusing the :[range], the special
-"				variable v:count1 is used. Custom commands are
-"				not needed anymore. 
-"				Operator-pending and visual mode mappings are
-"				now generic: There's only a single mapping for
-"				,w that can be repeated, rather than having a
-"				separate mapping for 1,w 2,w 3,w ...
-"   1.00.007	22-May-2007	Added documentation for publication. 
-"	006	20-May-2007	BF: visual mode [1,2,3],e on pure CamelCase
-"				mistakenly marks [2,4,6] words. If the cursor is
-"				on a uppercase letter, the search pattern
-"				'\u\l\+' doesn't match at the cursor position,
-"				so another match won. Changed search pattern
-"				from '\l\+', 
-"	005	16-May-2007	Added support for underscore notation. 
-"				Added support for "forward to end of word"
-"				(',e') motion. 
-"	004	16-May-2007	Improved search pattern so that
-"				UppercaseWORDSInBetween and digits are handled,
-"				too. 
-"	003	15-May-2007	Changed mappings from <Leader>w to ,w; 
-"				other \w mappings interfere here, because it's
-"				irritating when the cursor jump doesn't happen
-"				immediately, because Vim waits whether the
-"				mapping is complete. ,w is faster to type that
-"				\w (and, because of the left-right touch,
-"				preferred over gw). 
-"				Added visual mode mappings. 
-"	0.02	15-Feb-2006	BF: missing <SID> for omaps. 
-"	0.01	11-Oct-2005	file creation
-
-" Avoid installing twice or when in compatible mode
-if exists('g:loaded_camelcasemotion') || (v:version < 700)
-    finish
-endif
-let g:loaded_camelcasemotion = 1
-
-"- mappings -------------------------------------------------------------------
-" The count is passed into the function through the special variable 'v:count1',
-" which is easier than misusing the :[range] that :call supports. 
-" <C-U> is used to delete the unused range. 
-" Another option would be to use a custom 'command! -count=1', but that doesn't
-" work with the normal mode mapping: When a count is typed before the mapping,
-" the ':' will convert a count of 3 into ':.,+2MyCommand', but ':3MyCommand'
-" would be required to use -count and <count>. 
-"
-" We do not provide the fourth "backward to end" motion (,E), because it is
-" seldomly used. 
-
-function! s:CreateMotionMappings()
-    " Create mappings according to this template:
-    " (* stands for the mode [nov], ? for the underlying motion [wbe].) 
-    "
-    " *noremap <Plug>CamelCaseMotion_? :<C-U>call camelcasemotion#Motion('?',v:count1,'*')<CR>
-    " if ! hasmapto('<Plug>CamelCaseMotion_?', '*')
-    "	  *map <silent> ,? <Plug>CamelCaseMotion_?
-    " endif
-
-    for l:mode in ['n', 'o', 'v']
-	for l:motion in ['w', 'b', 'e']
-	    let l:targetMapping = '<Plug>CamelCaseMotion_' . l:motion
-	    execute l:mode . 'noremap ' . l:targetMapping . ' :<C-U>call camelcasemotion#Motion(''' . l:motion . ''',v:count1,''' . l:mode . ''')<CR>'
-	    if ! hasmapto(l:targetMapping, l:mode)
-		execute (l:mode ==# 'v' ? 'x' : l:mode) . 'map <silent> ,' . l:motion . ' ' . l:targetMapping 
-	    endif
-	endfor
-    endfor
-endfunction
-
-" To create a text motion, a mapping for operator-pending mode needs to be
-" defined. This mapping should move the cursor according to the implemented
-" motion, or mark the covered text via a visual selection. As inner text motions
-" need to mark both to the left and right of the cursor position, the visual
-" selection needs to be used. 
-"
-" Vim's built-in inner text objects also work in visual mode; they have
-" different behavior depending on whether visual mode has just been entered or
-" whether text has already been selected. 
-" We deviate from that and always override the existing selection. 
-function! s:CreateInnerMotionMappings()
-    " Create mappings according to this template:
-    " (* stands for the mode [ov], ? for the underlying motion [wbe].) 
-    "
-    " *noremap <Plug>CamelCaseMotion_i? :<C-U>call camelcasemotion#InnerMotion('?',v:count1)<CR>
-    " if ! hasmapto('<Plug>CamelCaseInnerMotion_i?', '*')
-    "	  *map <silent> i,? <Plug>CamelCaseInnerMotion_i?
-    " endif
-
-    for l:mode in ['o', 'v']
-	for l:motion in ['w', 'b', 'e']
-	    let l:targetMapping = '<Plug>CamelCaseMotion_i' . l:motion
-	    execute l:mode . 'noremap ' . l:targetMapping . ' :<C-U>call camelcasemotion#InnerMotion(''' . l:motion . ''',v:count1)<CR>'
-	    if ! hasmapto(l:targetMapping, l:mode)
-		execute (l:mode ==# 'v' ? 'x' : l:mode) . 'map <silent> i,' . l:motion . ' ' . l:targetMapping 
-	    endif
-	endfor
-    endfor
-endfunction
-
-call s:CreateMotionMappings()
-call s:CreateInnerMotionMappings()
-
-delfunction s:CreateMotionMappings
-delfunction s:CreateInnerMotionMappings
-
-" vim: set sts=4 sw=4 noexpandtab ff=unix fdm=syntax :
\ No newline at end of file
--- a/vim/bundle/pydoc/plugin/pydoc.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-"pydoc.vim: pydoc integration for vim
-"performs searches and can display the documentation of python modules
-"Author: André Kelpe <efeshundertelf at googlemail dot com>
-"Author: Romain Chossart <romainchossat at gmail dot com>
-"Author: Matthias Vogelgesang
-"http://www.vim.org/scripts/script.php?script_id=910
-"This plugin integrates the pydoc into vim. You can view the
-"documentation of a module by using :Pydoc foo.bar.baz or search
-"a word (uses pydoc -k) in the documentation by typing PydocSearch
-"foobar. You can also view the documentation of the word under the
-"cursor by pressing <leader>pw or the WORD (see :help WORD) by pressing
-"<leader>pW.  "This is very useful if you want to jump to a module which was found by
-"PydocSearch. To have a browser like feeling you can use u and CTRL-R to
-"go back and forward, just like editing normal text.
-
-"If you want to use the script and pydoc is not in your PATH, just put a
-"line like  
-
-" let g:pydoc_cmd = \"/usr/bin/pydoc" (without the backslash!!)
-
-"in your .vimrc
-
-
-"pydoc.vim is free software, you can redistribute or modify
-"it under the terms of the GNU General Public License Version 2 or any
-"later Version (see http://www.gnu.org/copyleft/gpl.html for details). 
-
-"Please feel free to contact me.
-
-
-set switchbuf=useopen
-function! ShowPyDoc(name, type)
-    if !exists('g:pydoc_cmd')
-        let g:pydoc_cmd = 'pydoc'
-    endif
-
-    if bufloaded("__doc__") >0
-        let l:buf_is_new = 0
-    else
-        let l:buf_is_new = 1
-    endif
-
-    if bufnr("__doc__") >0
-        execute "sb __doc__"
-    else
-        execute 'split __doc__'
-    endif
-    setlocal noswapfile
-    set buftype=nofile
-    setlocal modifiable
-    normal ggdG
-    let s:name2 = substitute(a:name, '(.*', '', 'g' )
-    let s:name2 = substitute(a:name, ':', '', 'g' )
-    if a:type==1
-        execute  "silent read ! " . g:pydoc_cmd . " " . s:name2 
-    else 
-        execute  "silent read ! " . g:pydoc_cmd . " -k " . s:name2 
-    endif	
-    setlocal nomodified
-    set filetype=man
-    normal 1G
-
-    if !exists('g:pydoc_wh')
-        let g:pydoc_wh = 10
-    end
-    resize -999
-    execute "silent resize +" . g:pydoc_wh 
-
-    if !exists('g:pydoc_highlight')
-        let g:pydoc_highlight = 1
-    endif
-    if g:pydoc_highlight == 1
-        call Highlight(s:name2)
-    endif	
-
-    let l:line = getline(2)
-    if l:line =~ "^no Python documentation found for.*$" 
-        if l:buf_is_new
-            execute "bd!"
-        else
-            normal u
-        endif
-        redraw
-        echohl WarningMsg | echo l:line | echohl None
-    endif
-endfunction
-
-
-function! Highlight(name)
-    execute "sb __doc__"
-    set filetype=man
-    syn on
-    execute 'syntax keyword pydoc '.s:name2
-    hi pydoc gui=reverse
-endfunction
-
-
-"mappings
-au FileType python,man map <buffer> <leader>pw :call ShowPyDoc('<C-R><C-W>', 1)<CR>
-au FileType python,man map <buffer> <leader>pW :call ShowPyDoc('<C-R><C-A>', 1)<CR>
-au FileType python,man map <buffer> <leader>pk :call ShowPyDoc('<C-R><C-W>', 0)<CR>
-au FileType python,man map <buffer> <leader>pK :call ShowPyDoc('<C-R><C-A>', 0)<CR>
-
-" remap the K (or 'help') key
-nnoremap <silent> <buffer> K :call ShowPyDoc(expand("<cword>"), 1)<CR>
-
-
-"commands
-command! -nargs=1 Pydoc :call ShowPyDoc('<args>', 1)
-command! -nargs=*  PydocSearch :call ShowPyDoc('<args>', 0)
--- a/vim/bundle/vcscommand/doc/vcscommand.txt	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,819 +0,0 @@
-*vcscommand.txt*	vcscommand
-Copyright (c) 2007 Bob Hiestand
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to
-deal in the Software without restriction, including without limitation the
-rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-sell copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-
-For instructions on installing this file, type
-	:help add-local-help
-inside Vim.
-
-Author:  Bob Hiestand <bob.hiestand@gmail.com>
-Credits:  Benji Fisher's excellent MatchIt documentation
-
-==============================================================================
-1. Contents						*vcscommand-contents*
-
-	Installation		: |vcscommand-install|
-	vcscommand Intro	: |vcscommand|
-	vcscommand Manual	: |vcscommand-manual|
-	Customization		: |vcscommand-customize|
-	SSH "integration"	: |vcscommand-ssh|
-	Changes from cvscommand	: |cvscommand-changes|
-	Bugs			: |vcscommand-bugs|
-
-==============================================================================
-
-2. vcscommand Installation				*vcscommand-install*
-
-The vcscommand plugin comprises five files: vcscommand.vim, vcssvn.vim,
-vcscvs.vim, vcssvk.vim and vcscommand.txt (this file).  In order to install
-the plugin, place the vcscommand.vim, vcssvn.vim, vcssvk.vim, and vcscvs.vim
-files into a plugin directory in your runtime path (please see
-|add-global-plugin| and |'runtimepath'|. 
-
-This help file can be included in the VIM help system by copying it into a
-'doc' directory in your runtime path and then executing the |:helptags|
-command, specifying the full path of the 'doc' directory.  Please see
-|add-local-help| for more details.
-
-vcscommand may be customized by setting variables, creating maps, and
-specifying event handlers.  Please see |vcscommand-customize| for more
-details.
-
-==============================================================================
-
-3. vcscommand Intro					*vcscommand*
-							*vcscommand-intro*
-
-The vcscommand plugin provides global ex commands for manipulating
-version-controlled source files, currently those controlled either by CVS or
-Subversion.  In general, each command operates on the current buffer and
-accomplishes a separate source control function, such as update, commit, log,
-and others (please see |vcscommand-commands| for a list of all available
-commands).  The results of each operation are displayed in a scratch buffer.
-Several buffer variables are defined for those scratch buffers (please see
-|vcscommand-buffer-variables|).
-
-The notion of "current file" means either the current buffer, or, in the case
-of a directory buffer (such as Explorer or netrw buffers), the directory (and
-all subdirectories) represented by the the buffer.
-
-For convenience, any vcscommand invoked on a vcscommand scratch buffer acts as
-though it was invoked on the original file and splits the screen so that the
-output appears in a new window.
-
-Many of the commands accept revisions as arguments.  By default, most operate
-on the most recent revision on the current branch if no revision is specified.
-
-Each vcscommand is mapped to a key sequence starting with the |<Leader>|
-keystroke.  The default mappings may be overridden by supplying different
-mappings before the plugin is loaded, such as in the vimrc, in the standard
-fashion for plugin mappings.  For examples, please see
-|vcscommand-mappings-override|.
-
-The vcscommand plugin may be configured in several ways.  For more details,
-please see |vcscommand-customize|.
-
-==============================================================================
-
-4. vcscommand Manual					*vcscommand-manual*
-
-4.1 vcscommand commands					*vcscommand-commands*
-
-vcscommand defines the following commands:
-
-|:VCSAdd|
-|:VCSAnnotate|
-|:VCSBlame|
-|:VCSCommit|
-|:VCSDelete|
-|:VCSDiff|
-|:VCSGotoOriginal|
-|:VCSLog|
-|:VCSRemove|
-|:VCSRevert|
-|:VCSReview|
-|:VCSStatus|
-|:VCSUpdate|
-|:VCSVimDiff|
-
-The following commands are specific to CVS files:
-
-|:CVSEdit|
-|:CVSEditors|
-|:CVSUnedit|
-|:CVSWatch|
-|:CVSWatchAdd|
-|:CVSWatchOn|
-|:CVSWatchOff|
-|:CVSWatchRemove|
-|:CVSWatchers|
-
-:VCSAdd							*:VCSAdd*
-
-This command adds the current file to source control.  Please note, this does
-not commit the newly-added file.  All parameters to the command are passed to
-the underlying VCS.
-
-:VCSAnnotate[!]						*:VCSAnnotate*
-
-This command displays the current file with each line annotated with the
-version in which it was most recently changed.  If an argument is given, the
-argument is used as a revision number to display.  If not given an argument,
-it uses the most recent version of the file (on the current branch, if under
-CVS control).  Additionally, if the current buffer is a VCSAnnotate buffer
-already, the version number on the current line is used.
-
-If '!' is used, the view of the annotated buffer is split so that the
-annotation is in a separate window from the content, and each is highlighted
-separately.
-
-For CVS buffers, the 'VCSCommandCVSAnnotateParent' option, if set to non-zero,
-will cause the above behavior to change.  Instead of annotating the version on
-the current line, the parent revision is used instead, crossing branches if
-necessary.
-
-With no arguments the cursor will jump to the line in the annotated buffer
-corresponding to the current line in the source buffer.
-
-:VCSBlame[!]						*:VCSBlame*
-
-Alias for |:VCSAnnotate|.
-
-:VCSCommit[!]						*:VCSCommit*
-
-This command commits changes to the current file to source control.
-
-If called with arguments, the arguments are the log message.
-
-If '!' is used, an empty log message is committed.
-
-If called with no arguments, this is a two-step command.  The first step opens
-a buffer to accept a log message.  When that buffer is written, it is
-automatically closed and the file is committed using the information from that
-log message.  The commit can be abandoned if the log message buffer is deleted
-or wiped before being written.
-
-Alternatively, the mapping that is used to invoke :VCSCommit (by default
-|<Leader>|cc, please see |vcscommand-mappings|) can be used in the log message
-buffer in Normal mode to immediately commit.  This is useful if the
-|VCSCommandCommitOnWrite| variable is set to 0 to disable the normal
-commit-on-write behavior.
-
-:VCSDelete						*:VCSDelete*
-
-Deletes the current file and removes it from source control.  All parameters
-to the command are passed to the underlying VCS.
-
-:VCSDiff						*:VCSDiff*
-
-With no arguments, this displays the differences between the current file and
-its parent version under source control in a new scratch buffer.
-
-With one argument, the diff is performed on the current file against the
-specified revision.
-
-With two arguments, the diff is performed between the specified revisions of
-the current file.
-
-For CVS, this command uses the |VCSCommandCVSDiffOpt| variable to specify diff
-options.  If that variable does not exist, a plugin-specific default is used.
-If you wish to have no options, then set it to the empty string.
-
-For SVN, this command uses the |VCSCommandSVNDiffOpt| variable to specify diff
-options.  If that variable does not exist, the SVN default is used.
-Additionally, |VCSCommandSVNDiffExt| can be used to select an external diff
-application.
-
-:VCSGotoOriginal					*:VCSGotoOriginal*
-
-This command jumps to the source buffer if the current buffer is a VCS scratch
-buffer.
-
-:VCSGotoOriginal!
-
-Like ":VCSGotoOriginal" but also executes :bufwipeout on all VCS scrach
-buffers associated with the original file.
-
-:VCSInfo						*:VCSInfo*
-
-This command displays extended information about the current file in a new
-scratch buffer. 
-
-:VCSLock						*:VCSLock*
-
-This command locks the current file in order to prevent other users from
-concurrently modifying it.  The exact semantics of this command depend on the
-underlying VCS.  This does nothing in CVS.  All parameters are passed to the
-underlying VCS.
-
-:VCSLog							*:VCSLog*
-
-Displays the version history of the current file in a new scratch buffer.  If
-there is one parameter supplied, it is taken as as a revision parameters to be
-passed through to the underlying VCS.  Otherwise, all parameters are passed to
-the underlying VCS.
-
-:VCSRemove						*:VCSRemove*
-
-Alias for |:VCSDelete|.
-
-:VCSRevert						*:VCSRevert*
-
-This command replaces the current file with the most recent version from the
-repository in order to wipe out any undesired changes.
-
-:VCSReview						*:VCSReview*
-
-Displays a particular version of the current file in a new scratch buffer.  If
-no argument is given, the most recent version of the file on the current
-branch is retrieved.
-
-:VCSStatus						*:VCSStatus*
-
-Displays versioning information about the current file in a new scratch
-buffer.  All parameters are passed to the underlying VCS.
-
-
-:VCSUnlock						*:VCSUnlock*
-
-Unlocks the current file in order to allow other users from concurrently
-modifying it.  The exact semantics of this command depend on the underlying
-VCS.  All parameters are passed to the underlying VCS.
-
-:VCSUpdate						*:VCSUpdate*
-
-Updates the current file with any relevant changes from the repository.  This
-intentionally does not automatically reload the current buffer, though vim
-should prompt the user to do so if the underlying file is altered by this
-command.
-
-:VCSVimDiff						*:VCSVimDiff*
-
-Uses vimdiff to display differences between versions of the current file.
-
-If no revision is specified, the most recent version of the file on the
-current branch is used.  With one argument, that argument is used as the
-revision as above.  With two arguments, the differences between the two
-revisions is displayed using vimdiff.
-                                                            
-With either zero or one argument, the original buffer is used to perform the
-vimdiff.  When the scratch buffer is closed, the original buffer will be
-returned to normal mode.
-                                                            
-Once vimdiff mode is started using the above methods, additional vimdiff
-buffers may be added by passing a single version argument to the command.
-There may be up to 4 vimdiff buffers total.
-                                                            
-Using the 2-argument form of the command resets the vimdiff to only those 2
-versions.  Additionally, invoking the command on a different file will close
-the previous vimdiff buffers.
-
-:CVSEdit						*:CVSEdit*
-
-This command performs "cvs edit" on the current file.  Yes, the output buffer
-in this case is almost completely useless.
-
-:CVSEditors						*:CVSEditors*
-
-This command performs "cvs edit" on the current file.
-
-:CVSUnedit						*:CVSUnedit*
-
-Performs "cvs unedit" on the current file.  Again, yes, the output buffer here
-is basically useless.
-
-:CVSWatch						*:CVSWatch*
-
-This command takes an argument which must be one of [on|off|add|remove].  The
-command performs "cvs watch" with the given argument on the current file.
-
-:CVSWatchAdd						*:CVSWatchAdd*
-
-This command is an alias for ":CVSWatch add"
-
-:CVSWatchOn						*:CVSWatchOn*
-
-This command is an alias for ":CVSWatch on"
-
-:CVSWatchOff						*:CVSWatchOff*
-
-This command is an alias for ":CVSWatch off"
-
-:CVSWatchRemove						*:CVSWatchRemove*
-
-This command is an alias for ":CVSWatch remove"
-
-:CVSWatchers						*:CVSWatchers*
-
-This command performs "cvs watchers" on the current file.
-
-4.2 Mappings						*vcscommand-mappings*
-
-By default, a mapping is defined for each command.  These mappings execute the
-default (no-argument) form of each command.
-
-|<Leader>|ca VCSAdd
-|<Leader>|cn VCSAnnotate
-|<Leader>|cN VCSAnnotate!
-|<Leader>|cc VCSCommit
-|<Leader>|cD VCSDelete
-|<Leader>|cd VCSDiff
-|<Leader>|cg VCSGotoOriginal
-|<Leader>|cG VCSGotoOriginal!
-|<Leader>|ci VCSInfo
-|<Leader>|cl VCSLog
-|<Leader>|cL VCSLock
-|<Leader>|cr VCSReview
-|<Leader>|cs VCSStatus
-|<Leader>|cu VCSUpdate
-|<Leader>|cU VCSUnlock
-|<Leader>|cv VCSVimDiff
-
-Only for CVS buffers:
-
-|<Leader>|ce CVSEdit
-|<Leader>|cE CVSEditors
-|<Leader>|ct CVSUnedit
-|<Leader>|cwv CVSWatchers
-|<Leader>|cwa CVSWatchAdd
-|<Leader>|cwn CVSWatchOn
-|<Leader>|cwf CVSWatchOff
-|<Leader>|cwf CVSWatchRemove
-
-						*vcscommand-mappings-override*
-
-The default mappings can be overridden by user-provided instead by mapping to
-<Plug>CommandName.  This is especially useful when these mappings collide with
-other existing mappings (vim will warn of this during plugin initialization,
-but will not clobber the existing mappings).
-
-There are three methods for controlling mapping:
-
-First, maps can be overriden for individual commands.  For instance, to
-override the default mapping for :VCSAdd to set it to '\add', add the
-following to the vimrc:
-
-nmap \add <Plug>VCSAdd
-
-Second, the default map prefix ('<Leader>c') can be overridden by defining the
-|VCSCommandMapPrefix| variable.
-
-Third, the entire set of default maps can be overridden by defining the
-|VCSCommandMappings| variable.
-
-
-4.3 Automatic buffer variables			*vcscommand-buffer-variables*
-
-Several buffer variables are defined in each vcscommand result buffer.	These
-may be useful for additional customization in callbacks defined in the event
-handlers (please see |vcscommand-events|).
-
-The following variables are automatically defined:
-
-b:VCSCommandOriginalBuffer			*b:VCSCommandOriginalBuffer*
-
-This variable is set to the buffer number of the source file.
-
-b:VCSCommandCommand				*b:VCSCommandCommand*
-
-This variable is set to the name of the vcscommand that created the result
-buffer.
-
-b:VCSCommandSourceFile				*b:VCSCommandSourceFile*
-
-This variable is set to the name of the original file under source control.
-
-b:VCSCommandVCSType				*b:VCSCommandVCSType*
-
-This variable is set to the type of the source control.  This variable is also
-set on the original file itself.
-==============================================================================
-
-5. Configuration and customization			*vcscommand-customize*
-							*vcscommand-config*
-
-The vcscommand plugin can be configured in several ways:  by setting
-configuration variables (see |vcscommand-options|) or by defining vcscommand
-event handlers (see |vcscommand-events|).  Additionally, the vcscommand plugin
-supports a customized status line (see |vcscommand-statusline| and
-|vcscommand-buffer-management|).
-
-5.1 vcscommand configuration variables			*vcscommand-options*
-
-Several variables affect the plugin's behavior.  These variables are checked
-at time of execution, and may be defined at the window, buffer, or global
-level and are checked in that order of precedence.
-
-
-The following variables are available:
-
-|VCSCommandCommitOnWrite|
-|VCSCommandCVSDiffOpt|
-|VCSCommandCVSExec|
-|VCSCommandDeleteOnHide|
-|VCSCommandDiffSplit|
-|VCSCommandDisableAll|
-|VCSCommandDisableMappings|
-|VCSCommandDisableExtensionMappings|
-|VCSCommandEdit|
-|VCSCommandEnableBufferSetup|
-|VCSCommandMappings|
-|VCSCommandMapPrefix|
-|VCSCommandResultBufferNameExtension|
-|VCSCommandResultBufferNameFunction|
-|VCSCommandSplit|
-|VCSCommandSVKExec|
-|VCSCommandSVNDiffExt|
-|VCSCommandSVNDiffOpt|
-|VCSCommandSVNExec|
-|VCSCommandVCSTypeOverride|
-
-VCSCommandCommitOnWrite				*VCSCommandCommitOnWrite*
-
-This variable, if set to a non-zero value, causes the pending commit
-to take place immediately as soon as the log message buffer is written.
-If set to zero, only the VCSCommit mapping will cause the pending commit to
-occur.	If not set, it defaults to 1.
-
-VCSCommandCVSExec				*VCSCommandCVSExec*
-
-This variable controls the executable used for all CVS commands  If not set,
-it defaults to "cvs".
-
-VCSCommandDeleteOnHide				*VCSCommandDeleteOnHide*
-
-This variable, if set to a non-zero value, causes the temporary result buffers
-to automatically delete themselves when hidden.
-
-VCSCommandCVSDiffOpt				*VCSCommandCVSDiffOpt*
-
-This variable, if set, determines the options passed to the diff command of
-CVS.  If not set, it defaults to 'u'.
-
-VCSCommandDiffSplit				*VCSCommandDiffSplit*
-
-This variable overrides the |VCSCommandSplit| variable, but only for buffers
-created with |:VCSVimDiff|.
-
-VCSCommandDisableAll				*VCSCommandDisableAll*
-
-This variable, if set, prevents the plugin or any extensions from loading at
-all.  This is useful when a single runtime distribution is used on multiple
-systems with varying versions.
-
-VCSCommandDisableMappings			*VCSCommandDisableMappings*
-
-This variable, if set to a non-zero value, prevents the default command
-mappings from being set.  This supercedes 
-|VCSCommandDisableExtensionMappings|.
-
-VCSCommandDisableExtensionMappings	*VCSCommandDisableExtensionMappings*
-
-This variable, if set to a non-zero value, prevents the default command
-mappings from being set for commands specific to an individual VCS.
-
-VCSCommandEdit					*VCSCommandEdit*
-
-This variable controls whether the original buffer is replaced ('edit') or
-split ('split').  If not set, it defaults to 'split'.
-
-VCSCommandEnableBufferSetup			*VCSCommandEnableBufferSetup*
-
-This variable, if set to a non-zero value, activates VCS buffer management
-mode see (|vcscommand-buffer-management|).  This mode means that the
-'VCSCommandBufferInfo' variable is filled with version information if the file
-is VCS-controlled.  This is useful for displaying version information in the
-status bar.
-
-VCSCommandMappings				*VCSCommandMappings*
-
-This variable, if set, overrides the default mappings used for shortcuts.  It
-should be a List of 2-element Lists, each containing a shortcut and function
-name pair.  The value of the '|VCSCommandMapPrefix|' variable will be added to
-each shortcut.
-
-VCSCommandMapPrefix				*VCSCommandMapPrefix*
-
-This variable, if set, overrides the default mapping prefix ('<Leader>c').
-This allows customization of the mapping space used by the vcscommand
-shortcuts.
-
-VCSCommandResultBufferNameExtension	*VCSCommandResultBufferNameExtension*
-
-This variable, if set to a non-blank value, is appended to the name of the VCS
-command output buffers.  For example, '.vcs'.  Using this option may help
-avoid problems caused by autocommands dependent on file extension.
-
-VCSCommandResultBufferNameFunction	*VCSCommandResultBufferNameFunction*
-
-This variable, if set, specifies a custom function for naming VCS command
-output buffers.  This function is expected to return the new buffer name, and
-will be passed the following arguments:
-
-  command - name of the VCS command being executed (such as 'Log' or
-  'Diff').
-  
-  originalBuffer - buffer number of the source file.
-  
-  vcsType - type of VCS controlling this file (such as 'CVS' or 'SVN').
-  
-  statusText - extra text associated with the VCS action (such as version
-  numbers).
-
-VCSCommandSplit					*VCSCommandSplit*
-
-This variable controls the orientation of the various window splits that
-may occur.
-
-If set to 'horizontal', the resulting windows will be on stacked on top of
-one another.  If set to 'vertical', the resulting windows will be
-side-by-side.  If not set, it defaults to 'horizontal' for all but
-VCSVimDiff windows.  VCSVimDiff windows default to the user's 'diffopt'
-setting, if set, otherwise 'vertical'.
-
-VCSCommandSVKExec				*VCSCommandSVKExec*
-
-This variable controls the executable used for all SVK commands  If not set,
-it defaults to "svk".
-
-VCSCommandSVNDiffExt				*VCSCommandSVNDiffExt*
-
-This variable, if set, is passed to SVN via the --diff-cmd command to select
-an external application for performing the diff.
-
-VCSCommandSVNDiffOpt				*VCSCommandSVNDiffOpt*
-
-This variable, if set, determines the options passed with the '-x' parameter
-to the SVN diff command.  If not set, no options are passed.
-
-VCSCommandSVNExec				*VCSCommandSVNExec*
-
-This variable controls the executable used for all SVN commands  If not set,
-it defaults to "svn".
-
-VCSCommandVCSTypeOverride			*VCSCommandVCSTypeOverride*
-
-This variable allows the VCS type detection to be overridden on a path-by-path
-basis.  The value of this variable is expected to be a List of Lists.  Each
-item in the high-level List is a List containing two elements.  The first
-element is a regular expression that will be matched against the full file
-name of a given buffer.  If it matches, the second element will be used as the
-VCS type.
-
-5.2 VCSCommand events				*vcscommand-events*
-
-For additional customization, vcscommand can trigger user-defined events.
-Event handlers are provided by defining User event autocommands (see
-|autocommand|, |User|) in the vcscommand group with patterns matching the
-event name.
-
-For instance, the following could be added to the vimrc to provide a 'q'
-mapping to quit a vcscommand scratch buffer:
-
-augroup VCSCommand
-  au User VCSBufferCreated silent! nmap <unique> <buffer> q :bwipeout<cr>
-augroup END
-
-The following hooks are available:
-
-VCSBufferCreated		This event is fired just after a vcscommand
-                                result buffer is created and populated.  It is
-                                executed within the context of the vcscommand
-                                buffer.  The vcscommand buffer variables may
-                                be useful for handlers of this event (please
-                                see |vcscommand-buffer-variables|).
-
-VCSBufferSetup			This event is fired just after vcscommand buffer
-                                setup occurs, if enabled.
-
-VCSPluginInit			This event is fired when the vcscommand plugin
-				first loads.
-
-VCSPluginFinish			This event is fired just after the vcscommand
-				plugin loads.
-
-VCSVimDiffFinish		This event is fired just after the VCSVimDiff
-				command executes to allow customization of,
-				for instance, window placement and focus.
-
-Additionally, there is another hook which is used internally to handle loading
-the multiple scripts in order.  This hook should probably not be used by an
-end user without a good idea of how it works.  Among other things, any events
-associated with this hook are cleared after they are executed (during
-vcscommand.vim script initialization).
-
-VCSLoadExtensions		This event is fired just before the
-                                VCSPluginFinish.  It is used internally to
-                                execute any commands from the VCS
-                                implementation plugins that needs to be
-                                deferred until the primary plugin is
-                                initialized.
-
-5.3 vcscommand buffer naming				*vcscommand-naming*
-
-vcscommand result buffers use the following naming convention:
-[{VCS type} {VCS command} {Source file name}]
-
-If additional buffers are created that would otherwise conflict, a
-distinguishing number is added:
-
-[{VCS type} {VCS command} {Source file name}] (1,2, etc)
-
-5.4 vcscommand status line support			*vcscommand-statusline*
-
-It is intended that the user will customize the |'statusline'| option to
-include vcscommand result buffer attributes.  A sample function that may be
-used in the |'statusline'| option is provided by the plugin,
-VCSCommandGetStatusLine().  In order to use that function in the status line, do
-something like the following:
-
-set statusline=%<%f\ %{VCSCommandGetStatusLine()}\ %h%m%r%=%l,%c%V\ %P
-
-of which %{VCSCommandGetStatusLine()} is the relevant portion.
-
-The sample VCSCommandGetStatusLine() function handles both vcscommand result
-buffers and VCS-managed files if vcscommand buffer management is enabled
-(please see |vcscommand-buffer-management|).
-
-5.5 vcscommand buffer management		*vcscommand-buffer-management*
-
-The vcscommand plugin can operate in buffer management mode, which means that
-it attempts to set a buffer variable ('VCSCommandBufferInfo') upon entry into
-a buffer.  This is rather slow because it means that the VCS will be invoked
-at each entry into a buffer (during the |BufEnter| autocommand).
-
-This mode is disabled by default.  In order to enable it, set the
-|VCSCommandEnableBufferSetup| variable to a true (non-zero) value.  Enabling
-this mode simply provides the buffer variable mentioned above.  The user must
-explicitly include information from the variable in the |'statusline'| option
-if they are to appear in the status line (but see |vcscommand-statusline| for
-a simple way to do that).
-
-The 'VCSCommandBufferInfo' variable is a list which contains, in order, the
-revision of the current file, the latest revision of the file in the
-repository, and (for CVS) the name of the branch.  If those values cannot be
-determined, the list is a single element:  'Unknown'.
-
-==============================================================================
-
-6. SSH "integration"					*vcscommand-ssh*
-
-The following instructions are intended for use in integrating the
-vcscommand.vim plugin with an SSH-based CVS environment.
-
-Familiarity with SSH and CVS are assumed.
-
-These instructions assume that the intent is to have a message box pop up in
-order to allow the user to enter a passphrase.  If, instead, the user is
-comfortable using certificate-based authentication, then only instructions
-6.1.1 and 6.1.2 (and optionally 6.1.4) need to be followed; ssh should then
-work transparently.
-
-6.1 Environment settings				*vcscommand-ssh-env*
-
-6.1.1 CVSROOT should be set to something like:
-
-	:ext:user@host:/path_to_repository
-
-6.1.2 CVS_RSH should be set to:
-
-	ssh
-
-	Together, those settings tell CVS to use ssh as the transport when
-	performing CVS calls.
-
-6.1.3 SSH_ASKPASS should be set to the password-dialog program.  In my case,
-	running gnome, it's set to:
-
-	/usr/libexec/openssh/gnome-ssh-askpass
-
-	This tells SSH how to get passwords if no input is available.
-
-6.1.4 OPTIONAL.  You may need to set SSH_SERVER to the location of the cvs
-	executable on the remote (server) machine.
-
-6.2 CVS wrapper program				*vcscommand-ssh-wrapper*
-
-Now you need to convince SSH to use the password-dialog program.  This means
-you need to execute SSH (and therefore CVS) without standard input.  The
-following script is a simple perl wrapper that dissasociates the CVS command
-from the current terminal.  Specific steps to do this may vary from system to
-system; the following example works for me on linux.
-
-#!/usr/bin/perl -w
-use strict;
-use POSIX qw(setsid);
-open STDIN, '/dev/null';
-fork and do {wait; exit;};
-setsid;
-exec('cvs', @ARGV);
-
-6.3 Configuring vcscommand.vim			*vcscommand-ssh-config*
-
-At this point, you should be able to use your wrapper script to invoke CVS with
-various commands, and get the password dialog.  All that's left is to make CVS
-use your newly-created wrapper script.
-
-6.3.1 Tell vcscommand.vim what CVS executable to use.  The easiest way to do this
-	is globally, by putting the following in your .vimrc:
-
-	let VCSCommandCVSExec=/path/to/cvs/wrapper/script
-
-6.4 Where to go from here			*vcscommand-ssh-other*
-
-The script given above works even when non-SSH CVS connections are used,
-except possibly when interactively entering the message for CVS commit log
-(depending on the editor you use... VIM works fine).  Since the vcscommand.vim
-plugin handles that message without a terminal, the wrapper script can be used
-all the time.
-
-This allows mixed-mode operation, where some work is done with SSH-based CVS
-repositories, and others with pserver or local access.
-
-It is possible, though beyond the scope of the plugin, to dynamically set the
-CVS executable based on the CVSROOT for the file being edited.  The user
-events provided (such as VCSBufferCreated and VCSBufferSetup) can be used to
-set a buffer-local value (b:VCSCommandCVSExec) to override the CVS executable
-on a file-by-file basis.  Alternatively, much the same can be done (less
-automatically) by the various project-oriented plugins out there.
-
-It is highly recommended for ease-of-use that certificates with no passphrase
-or ssh-agent are employed so that the user is not given the password prompt
-too often.
-
-==============================================================================
-
-7. Changes from cvscommand				*cvscommand-changes*
-
-1.  Require Vim 7 in order to leverage several convenient features; also
-because I wanted to play with Vim 7.
-
-2.  Renamed commands to start with 'VCS' instead of 'CVS'.  The exceptions are
-the 'CVSEdit' and 'CVSWatch' family of commands, which are specific to CVS.
-
-3.  Renamed options, events to start with 'VCSCommand'.
-
-4.  Removed option to jump to the parent version of the current line in an
-annotated buffer, as opposed to the version on the current line.  This made
-little sense in the branching scheme used by subversion, where jumping to a
-parent branch required finding a different location in the repository.  It
-didn't work consistently in CVS anyway.
-
-5.  Removed option to have nameless scratch buffers.
-
-6.  Changed default behavior of scratch buffers to split the window instead of
-displaying in the current window.  This may still be overridden using the
-'VCSCommandEdit' option.
-
-7.  Split plugin into multiple plugins.
-
-8.  Added 'VCSLock' and 'VCSUnlock' commands.  These are implemented for
-subversion but not for CVS.  These were not kept specific to subversion as they
-seemed more general in nature and more likely to be supported by any future VCS
-supported by this plugin.
-
-9.  Changed name of buffer variables set by commands.
-
-'b:cvsOrigBuffNR' became 'b:VCSCommandOriginalBuffer'
-'b:cvscmd' became 'b:VCSCommandCommand'
-
-10.  Added new automatic variables to command result buffers.
-
-'b:VCSCommandSourceFile'
-'b:VCSCommandVCSType'
-
-==============================================================================
-
-8. Known bugs						*vcscommand-bugs*
-
-Please let me know if you run across any.
-
-CVSUnedit may, if a file is changed from the repository, provide prompt text
-to determine whether the changes should be thrown away.  Currently, that text
-shows up in the CVS result buffer as information; there is no way for the user
-to actually respond to the prompt and the CVS unedit command does nothing.  If
-this really bothers anyone, please let me know.
-
-VCSVimDiff, when using the original (real) source buffer as one of the diff
-buffers, uses some hacks to try to restore the state of the original buffer
-when the scratch buffer containing the other version is destroyed.  There may
-still be bugs in here, depending on many configuration details.
-
-vim:tw=78:ts=8:ft=help
--- a/vim/bundle/vcscommand/plugin/vcscommand.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1397 +0,0 @@
-" vim600: set foldmethod=marker:
-"
-" Vim plugin to assist in working with files under control of various Version
-" Control Systems, such as CVS, SVN, SVK, and git.
-"
-" Maintainer:    Bob Hiestand <bob.hiestand@gmail.com>
-" License:
-" Copyright (c) 2008 Bob Hiestand
-"
-" Permission is hereby granted, free of charge, to any person obtaining a copy
-" of this software and associated documentation files (the "Software"), to
-" deal in the Software without restriction, including without limitation the
-" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-" sell copies of the Software, and to permit persons to whom the Software is
-" furnished to do so, subject to the following conditions:
-"
-" The above copyright notice and this permission notice shall be included in
-" all copies or substantial portions of the Software.
-"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-" IN THE SOFTWARE.
-"
-" Section: Documentation {{{1
-"
-" Provides functions to invoke various source control commands on the current
-" file (either the current buffer, or, in the case of an directory buffer, the
-" directory and all subdirectories associated with the current buffer).  The
-" output of the commands is captured in a new scratch window.
-"
-" This plugin needs additional extension plugins, each specific to a source
-" control system, to function.  Several options include the name of the
-" version control system in the option name.  Such options use the placeholder
-" text '{VCSType}', which would be replaced in actual usage with 'CVS' or
-" 'SVN', for instance.
-"
-" Command documentation {{{2
-"
-" VCSAdd           Adds the current file to source control.
-"
-" VCSAnnotate[!]   Displays the current file with each line annotated with the
-"                  version in which it was most recently changed.  If an
-"                  argument is given, the argument is used as a revision
-"                  number to display.  If not given an argument, it uses the
-"                  most recent version of the file on the current branch.
-"                  Additionally, if the current buffer is a VCSAnnotate buffer
-"                  already, the version number on the current line is used.
-"
-"                  If '!' is used, the view of the annotated buffer is split
-"                  so that the annotation is in a separate window from the
-"                  content, and each is highlighted separately.
-"
-" VCSBlame         Alias for 'VCSAnnotate'.
-"
-" VCSCommit[!]     Commits changes to the current file to source control.
-"
-"                  If called with arguments, the arguments are the log message.
-"
-"                  If '!' is used, an empty log message is committed.
-"
-"                  If called with no arguments, this is a two-step command.
-"                  The first step opens a buffer to accept a log message.
-"                  When that buffer is written, it is automatically closed and
-"                  the file is committed using the information from that log
-"                  message.  The commit can be abandoned if the log message
-"                  buffer is deleted or wiped before being written.
-"
-" VCSDelete        Deletes the current file and removes it from source control.
-"
-" VCSDiff          With no arguments, this displays the differences between
-"                  the current file and its parent version under source
-"                  control in a new scratch buffer.
-"
-"                  With one argument, the diff is performed on the
-"                  current file against the specified revision.
-"
-"                  With two arguments, the diff is performed between the
-"                  specified revisions of the current file.
-"
-"                  This command uses the 'VCSCommand{VCSType}DiffOpt' variable
-"                  to specify diff options.  If that variable does not exist,
-"                  a plugin-specific default is used.  If you wish to have no
-"                  options, then set it to the empty string.
-"
-" VCSGotoOriginal  Jumps to the source buffer if the current buffer is a VCS
-"                  scratch buffer.  If VCSGotoOriginal[!] is used, remove all
-"                  VCS scratch buffers associated with the original file.
-"
-" VCSInfo          Displays extended information about the current file in a
-"                  new scratch buffer.
-"
-" VCSLock          Locks the current file in order to prevent other users from
-"                  concurrently modifying it.  The exact semantics of this
-"                  command depend on the underlying VCS.
-"
-" VCSLog           Displays the version history of the current file in a new
-"                  scratch buffer.
-"
-" VCSRemove        Alias for 'VCSDelete'.
-"
-" VCSRevert        Replaces the modified version of the current file with the
-"                  most recent version from the repository.
-"
-" VCSReview        Displays a particular version of the current file in a new
-"                  scratch buffer.  If no argument is given, the most recent
-"                  version of the file on the current branch is retrieved.
-"
-" VCSStatus        Displays versioning information about the current file in a
-"                  new scratch buffer.
-"
-" VCSUnlock        Unlocks the current file in order to allow other users from
-"                  concurrently modifying it.  The exact semantics of this
-"                  command depend on the underlying VCS.
-"
-" VCSUpdate        Updates the current file with any relevant changes from the
-"                  repository.
-"
-" VCSVimDiff       Uses vimdiff to display differences between versions of the
-"                  current file.
-"
-"                  If no revision is specified, the most recent version of the
-"                  file on the current branch is used.  With one argument,
-"                  that argument is used as the revision as above.  With two
-"                  arguments, the differences between the two revisions is
-"                  displayed using vimdiff.
-"
-"                  With either zero or one argument, the original buffer is
-"                  used to perform the vimdiff.  When the scratch buffer is
-"                  closed, the original buffer will be returned to normal
-"                  mode.
-"
-"                  Once vimdiff mode is started using the above methods,
-"                  additional vimdiff buffers may be added by passing a single
-"                  version argument to the command.  There may be up to 4
-"                  vimdiff buffers total.
-"
-"                  Using the 2-argument form of the command resets the vimdiff
-"                  to only those 2 versions.  Additionally, invoking the
-"                  command on a different file will close the previous vimdiff
-"                  buffers.
-"
-" Mapping documentation: {{{2
-"
-" By default, a mapping is defined for each command.  User-provided mappings
-" can be used instead by mapping to <Plug>CommandName, for instance:
-"
-" nmap ,ca <Plug>VCSAdd
-"
-" The default mappings are as follow:
-"
-"   <Leader>ca VCSAdd
-"   <Leader>cn VCSAnnotate
-"   <Leader>cN VCSAnnotate!
-"   <Leader>cc VCSCommit
-"   <Leader>cD VCSDelete
-"   <Leader>cd VCSDiff
-"   <Leader>cg VCSGotoOriginal
-"   <Leader>cG VCSGotoOriginal!
-"   <Leader>ci VCSInfo
-"   <Leader>cl VCSLog
-"   <Leader>cL VCSLock
-"   <Leader>cr VCSReview
-"   <Leader>cs VCSStatus
-"   <Leader>cu VCSUpdate
-"   <Leader>cU VCSUnlock
-"   <Leader>cv VCSVimDiff
-"
-" Options documentation: {{{2
-"
-" Several variables are checked by the script to determine behavior as follow:
-"
-" VCSCommandCommitOnWrite
-"   This variable, if set to a non-zero value, causes the pending commit to
-"   take place immediately as soon as the log message buffer is written.  If
-"   set to zero, only the VCSCommit mapping will cause the pending commit to
-"   occur.  If not set, it defaults to 1.
-"
-" VCSCommandDeleteOnHide
-"   This variable, if set to a non-zero value, causes the temporary VCS result
-"   buffers to automatically delete themselves when hidden.
-"
-" VCSCommand{VCSType}DiffOpt
-"   This variable, if set, determines the options passed to the diff command
-"   of the underlying VCS.  Each VCS plugin defines a default value.
-"
-" VCSCommandDiffSplit
-"   This variable overrides the VCSCommandSplit variable, but only for buffers
-"   created with VCSVimDiff.
-"
-" VCSCommandDisableAll
-"   This variable, if set, prevents the plugin or any extensions from loading
-"   at all.  This is useful when a single runtime distribution is used on
-"   multiple systems with varying versions.
-"
-" VCSCommandDisableMappings
-"   This variable, if set to a non-zero value, prevents the default command
-"   mappings from being set.
-"
-" VCSCommandDisableExtensionMappings
-"   This variable, if set to a non-zero value, prevents the default command
-"   mappings from being set for commands specific to an individual VCS.
-"
-" VCSCommandEdit
-"   This variable controls whether to split the current window to display a
-"   scratch buffer ('split'), or to display it in the current buffer ('edit').
-"   If not set, it defaults to 'split'.
-"
-" VCSCommandEnableBufferSetup
-"   This variable, if set to a non-zero value, activates VCS buffer management
-"   mode.  This mode means that the buffer variable 'VCSRevision' is set if
-"   the file is VCS-controlled.  This is useful for displaying version
-"   information in the status bar.  Additional options may be set by
-"   individual VCS plugins.
-"
-" VCSCommandMappings
-"   This variable, if set, overrides the default mappings used for shortcuts.
-"   It should be a List of 2-element Lists, each containing a shortcut and
-"   function name pair.
-"
-" VCSCommandMapPrefix
-"   This variable, if set, overrides the default mapping prefix ('<Leader>c').
-"   This allows customization of the mapping space used by the vcscommand
-"   shortcuts.
-"
-" VCSCommandResultBufferNameExtension
-"   This variable, if set to a non-blank value, is appended to the name of the
-"   VCS command output buffers.  For example, '.vcs'.  Using this option may
-"   help avoid problems caused by autocommands dependent on file extension.
-"
-" VCSCommandResultBufferNameFunction
-"   This variable, if set, specifies a custom function for naming VCS command
-"   output buffers.  This function will be passed the following arguments:
-"
-"   command - name of the VCS command being executed (such as 'Log' or
-"   'Diff').
-"
-"   originalBuffer - buffer number of the source file.
-"
-"   vcsType - type of VCS controlling this file (such as 'CVS' or 'SVN').
-"
-"   statusText - extra text associated with the VCS action (such as version
-"   numbers).
-"
-" VCSCommandSplit
-"   This variable controls the orientation of the various window splits that
-"   may occur (such as with VCSVimDiff, when using a VCS command on a VCS
-"   command buffer, or when the 'VCSCommandEdit' variable is set to 'split'.
-"   If set to 'horizontal', the resulting windows will be on stacked on top of
-"   one another.  If set to 'vertical', the resulting windows will be
-"   side-by-side.  If not set, it defaults to 'horizontal' for all but
-"   VCSVimDiff windows.
-"
-" VCSCommandVCSTypeOverride
-"   This variable allows the VCS type detection to be overridden on a
-"   path-by-path basis.  The value of this variable is expected to be a List
-"   of Lists.  Each high-level List item is a List containing two elements.
-"   The first element is a regular expression that will be matched against the
-"   full file name of a given buffer.  If it matches, the second element will
-"   be used as the VCS type.
-"
-" Event documentation {{{2
-"   For additional customization, VCSCommand.vim uses User event autocommand
-"   hooks.  Each event is in the VCSCommand group, and different patterns
-"   match the various hooks.
-"
-"   For instance, the following could be added to the vimrc to provide a 'q'
-"   mapping to quit a VCS scratch buffer:
-"
-"   augroup VCSCommand
-"     au VCSCommand User VCSBufferCreated silent! nmap <unique> <buffer> q :bwipeout<cr>
-"   augroup END
-"
-"   The following hooks are available:
-"
-"   VCSBufferCreated           This event is fired just after a VCS command
-"                              output buffer is created.  It is executed
-"                              within the context of the new buffer.
-"
-"   VCSBufferSetup             This event is fired just after VCS buffer setup
-"                              occurs, if enabled.
-"
-"   VCSPluginInit              This event is fired when the VCSCommand plugin
-"                              first loads.
-"
-"   VCSPluginFinish            This event is fired just after the VCSCommand
-"                              plugin loads.
-"
-"   VCSVimDiffFinish           This event is fired just after the VCSVimDiff
-"                              command executes to allow customization of,
-"                              for instance, window placement and focus.
-"
-" Section: Plugin header {{{1
-
-" loaded_VCSCommand is set to 1 when the initialization begins, and 2 when it
-" completes.  This allows various actions to only be taken by functions after
-" system initialization.
-
-if exists('VCSCommandDisableAll')
-	finish
-endif
-
-if exists('loaded_VCSCommand')
-	finish
-endif
-let loaded_VCSCommand = 1
-
-if v:version < 700
-	echohl WarningMsg|echomsg 'VCSCommand requires at least VIM 7.0'|echohl None
-	finish
-endif
-
-let s:save_cpo=&cpo
-set cpo&vim
-
-" Section: Event group setup {{{1
-
-augroup VCSCommand
-augroup END
-
-augroup VCSCommandCommit
-augroup END
-
-" Section: Plugin initialization {{{1
-silent do VCSCommand User VCSPluginInit
-
-" Section: Constants declaration {{{1
-
-let g:VCSCOMMAND_IDENTIFY_EXACT = 1
-let g:VCSCOMMAND_IDENTIFY_INEXACT = -1
-
-" Section: Script variable initialization {{{1
-
-" Hidden functions for use by extensions
-let s:VCSCommandUtility = {}
-
-" plugin-specific information:  {vcs -> [script, {command -> function}, {key -> mapping}]}
-let s:plugins = {}
-
-" temporary values of overridden configuration variables
-let s:optionOverrides = {}
-
-" state flag used to vary behavior of certain automated actions
-let s:isEditFileRunning = 0
-
-" commands needed to restore diff buffers to their original state
-unlet! s:vimDiffRestoreCmd
-
-" original buffer currently reflected in vimdiff windows
-unlet! s:vimDiffSourceBuffer
-
-"
-unlet! s:vimDiffScratchList
-
-" Section: Utility functions {{{1
-
-" Function: s:ReportError(mapping) {{{2
-" Displays the given error in a consistent faction.  This is intended to be
-" invoked from a catch statement.
-
-function! s:ReportError(error)
-	echohl WarningMsg|echomsg 'VCSCommand:  ' . a:error|echohl None
-endfunction
-
-" Function s:VCSCommandUtility.system(...) {{{2
-" Replacement for system() function.  This version protects the quoting in the
-" command line on Windows systems.
-
-function! s:VCSCommandUtility.system(...)
-	if (has("win32") || has("win64")) && &sxq !~ '"'
-		let save_sxq = &sxq
-		set sxq=\"
-	endif
-	try
-		return call('system', a:000)
-	finally
-		if exists("save_sxq")
-			let &sxq = save_sxq
-		endif
-	endtry
-endfunction
-
-" Function: s:CreateMapping(shortcut, expansion, display) {{{2
-" Creates the given mapping by prepending the contents of
-" 'VCSCommandMapPrefix' (by default '<Leader>c') to the given shortcut and
-" mapping it to the given plugin function.  If a mapping exists for the
-" specified shortcut + prefix, emit an error but continue.  If a mapping
-" exists for the specified function, do nothing.
-
-function! s:CreateMapping(shortcut, expansion, display)
-	let lhs = VCSCommandGetOption('VCSCommandMapPrefix', '<Leader>c') . a:shortcut
-	if !hasmapto(a:expansion)
-		try
-			execute 'nmap <silent> <unique>' lhs a:expansion
-		catch /^Vim(.*):E227:/
-			if(&verbose != 0)
-				echohl WarningMsg|echomsg 'VCSCommand:  mapping ''' . lhs . ''' already exists, refusing to overwrite.  The mapping for ' . a:display . ' will not be available.'|echohl None
-			endif
-		endtry
-	endif
-endfunction
-
-" Function: s:ExecuteExtensionMapping(mapping) {{{2
-" Invokes the appropriate extension mapping depending on the type of the
-" current buffer.
-
-function! s:ExecuteExtensionMapping(mapping)
-	let buffer = bufnr('%')
-	let vcsType = VCSCommandGetVCSType(buffer)
-	if !has_key(s:plugins, vcsType)
-		throw 'Unknown VCS type:  ' . vcsType
-	endif
-	if !has_key(s:plugins[vcsType][2], a:mapping)
-		throw 'This extended mapping is not defined for ' . vcsType
-	endif
-	silent execute 'normal' ':' .  s:plugins[vcsType][2][a:mapping] . "\<CR>"
-endfunction
-
-" Function: s:ExecuteVCSCommand(command, argList) {{{2
-" Calls the indicated plugin-specific VCS command on the current buffer.
-" Returns: buffer number of resulting output scratch buffer, or -1 if an error
-" occurs.
-
-function! s:ExecuteVCSCommand(command, argList)
-	try
-		let buffer = bufnr('%')
-
-		let vcsType = VCSCommandGetVCSType(buffer)
-		if !has_key(s:plugins, vcsType)
-			throw 'Unknown VCS type:  ' . vcsType
-		endif
-
-		let originalBuffer = VCSCommandGetOriginalBuffer(buffer)
-		let bufferName = bufname(originalBuffer)
-
-		" It is already known that the directory is under VCS control.  No further
-		" checks are needed.  Otherwise, perform some basic sanity checks to avoid
-		" VCS-specific error messages from confusing things.
-		if !isdirectory(bufferName)
-			if !filereadable(bufferName)
-				throw 'No such file ' . bufferName
-			endif
-		endif
-
-		let functionMap = s:plugins[vcsType][1]
-		if !has_key(functionMap, a:command)
-			throw 'Command ''' . a:command . ''' not implemented for ' . vcsType
-		endif
-		return functionMap[a:command](a:argList)
-	catch
-		call s:ReportError(v:exception)
-		return -1
-	endtry
-endfunction
-
-" Function: s:GenerateResultBufferName(command, originalBuffer, vcsType, statusText) {{{2
-" Default method of generating the name for VCS result buffers.  This can be
-" overridden with the VCSResultBufferNameFunction variable.
-
-function! s:GenerateResultBufferName(command, originalBuffer, vcsType, statusText)
-	let fileName = bufname(a:originalBuffer)
-	let bufferName = a:vcsType . ' ' . a:command
-	if strlen(a:statusText) > 0
-		let bufferName .= ' ' . a:statusText
-	endif
-	let bufferName .= ' ' . fileName
-	let counter = 0
-	let versionedBufferName = bufferName
-	while bufexists(versionedBufferName)
-		let counter += 1
-		let versionedBufferName = bufferName . ' (' . counter . ')'
-	endwhile
-	return versionedBufferName
-endfunction
-
-" Function: s:GenerateResultBufferNameWithExtension(command, originalBuffer, vcsType, statusText) {{{2
-" Method of generating the name for VCS result buffers that uses the original
-" file name with the VCS type and command appended as extensions.
-
-function! s:GenerateResultBufferNameWithExtension(command, originalBuffer, vcsType, statusText)
-	let fileName = bufname(a:originalBuffer)
-	let bufferName = a:vcsType . ' ' . a:command
-	if strlen(a:statusText) > 0
-		let bufferName .= ' ' . a:statusText
-	endif
-	let bufferName .= ' ' . fileName . VCSCommandGetOption('VCSCommandResultBufferNameExtension', '.vcs')
-	let counter = 0
-	let versionedBufferName = bufferName
-	while bufexists(versionedBufferName)
-		let counter += 1
-		let versionedBufferName = '(' . counter . ') ' . bufferName
-	endwhile
-	return versionedBufferName
-endfunction
-
-" Function: s:EditFile(command, originalBuffer, statusText) {{{2
-" Creates a new buffer of the given name and associates it with the given
-" original buffer.
-
-function! s:EditFile(command, originalBuffer, statusText)
-	let vcsType = getbufvar(a:originalBuffer, 'VCSCommandVCSType')
-
-	" Protect against useless buffer set-up
-	let s:isEditFileRunning += 1
-	try
-		let editCommand = VCSCommandGetOption('VCSCommandEdit', 'split')
-		if editCommand == 'split'
-			if VCSCommandGetOption('VCSCommandSplit', 'horizontal') == 'horizontal'
-				rightbelow split
-			else
-				vert rightbelow split
-			endif
-		endif
-
-		enew
-
-		call s:SetupScratchBuffer(a:command, vcsType, a:originalBuffer, a:statusText)
-
-	finally
-		let s:isEditFileRunning -= 1
-	endtry
-endfunction
-
-" Function: s:SetupScratchBuffer(command, vcsType, originalBuffer, statusText) {{{2
-" Creates convenience buffer variables and the name of a vcscommand result
-" buffer.
-
-function! s:SetupScratchBuffer(command, vcsType, originalBuffer, statusText)
-	let nameExtension = VCSCommandGetOption('VCSCommandResultBufferNameExtension', '')
-	if nameExtension == ''
-		let nameFunction = VCSCommandGetOption('VCSCommandResultBufferNameFunction', 's:GenerateResultBufferName')
-	else
-		let nameFunction = VCSCommandGetOption('VCSCommandResultBufferNameFunction', 's:GenerateResultBufferNameWithExtension')
-	endif
-
-	let name = call(nameFunction, [a:command, a:originalBuffer, a:vcsType, a:statusText])
-
-	let b:VCSCommandCommand = a:command
-	let b:VCSCommandOriginalBuffer = a:originalBuffer
-	let b:VCSCommandSourceFile = bufname(a:originalBuffer)
-	let b:VCSCommandVCSType = a:vcsType
-	if a:statusText != ''
-		let b:VCSCommandStatusText = a:statusText
-	endif
-
-	setlocal buftype=nofile
-	setlocal noswapfile
-	let &filetype = tolower(a:vcsType . a:command)
-
-	if VCSCommandGetOption('VCSCommandDeleteOnHide', 0)
-		setlocal bufhidden=delete
-	endif
-	silent noautocmd file `=name`
-endfunction
-
-" Function: s:SetupBuffer() {{{2
-" Attempts to set the b:VCSCommandBufferInfo variable
-
-function! s:SetupBuffer()
-	if (exists('b:VCSCommandBufferSetup') && b:VCSCommandBufferSetup)
-		" This buffer is already set up.
-		return
-	endif
-
-	if !isdirectory(@%) && (strlen(&buftype) > 0 || !filereadable(@%))
-		" No special status for special buffers other than directory buffers.
-		return
-	endif
-
-	if !VCSCommandGetOption('VCSCommandEnableBufferSetup', 0) || s:isEditFileRunning > 0
-		unlet! b:VCSCommandBufferSetup
-		return
-	endif
-
-	try
-		let vcsType = VCSCommandGetVCSType(bufnr('%'))
-		let b:VCSCommandBufferInfo = s:plugins[vcsType][1].GetBufferInfo()
-		silent do VCSCommand User VCSBufferSetup
-	catch /No suitable plugin/
-		" This is not a VCS-controlled file.
-		let b:VCSCommandBufferInfo = []
-	endtry
-
-	let b:VCSCommandBufferSetup = 1
-endfunction
-
-" Function: s:MarkOrigBufferForSetup(buffer) {{{2
-" Resets the buffer setup state of the original buffer for a given VCS scratch
-" buffer.
-" Returns:  The VCS buffer number in a passthrough mode.
-
-function! s:MarkOrigBufferForSetup(buffer)
-	checktime
-	if a:buffer > 0
-		let origBuffer = VCSCommandGetOriginalBuffer(a:buffer)
-		" This should never not work, but I'm paranoid
-		if origBuffer != a:buffer
-			call setbufvar(origBuffer, 'VCSCommandBufferSetup', 0)
-		endif
-	endif
-	return a:buffer
-endfunction
-
-" Function: s:OverrideOption(option, [value]) {{{2
-" Provides a temporary override for the given VCS option.  If no value is
-" passed, the override is disabled.
-
-function! s:OverrideOption(option, ...)
-	if a:0 == 0
-		call remove(s:optionOverrides[a:option], -1)
-	else
-		if !has_key(s:optionOverrides, a:option)
-			let s:optionOverrides[a:option] = []
-		endif
-		call add(s:optionOverrides[a:option], a:1)
-	endif
-endfunction
-
-" Function: s:WipeoutCommandBuffers() {{{2
-" Clears all current VCS output buffers of the specified type for a given source.
-
-function! s:WipeoutCommandBuffers(originalBuffer, VCSCommand)
-	let buffer = 1
-	while buffer <= bufnr('$')
-		if getbufvar(buffer, 'VCSCommandOriginalBuffer') == a:originalBuffer
-			if getbufvar(buffer, 'VCSCommandCommand') == a:VCSCommand
-				execute 'bw' buffer
-			endif
-		endif
-		let buffer = buffer + 1
-	endwhile
-endfunction
-
-" Function: s:VimDiffRestore(vimDiffBuff) {{{2
-" Checks whether the given buffer is one whose deletion should trigger
-" restoration of an original buffer after it was diffed.  If so, it executes
-" the appropriate setting command stored with that original buffer.
-
-function! s:VimDiffRestore(vimDiffBuff)
-	let s:isEditFileRunning += 1
-	try
-		if exists('s:vimDiffSourceBuffer')
-			if a:vimDiffBuff == s:vimDiffSourceBuffer
-				" Original file is being removed.
-				unlet! s:vimDiffSourceBuffer
-				unlet! s:vimDiffRestoreCmd
-				unlet! s:vimDiffScratchList
-			else
-				let index = index(s:vimDiffScratchList, a:vimDiffBuff)
-				if index >= 0
-					call remove(s:vimDiffScratchList, index)
-					if len(s:vimDiffScratchList) == 0
-						if exists('s:vimDiffRestoreCmd')
-							" All scratch buffers are gone, reset the original.
-							" Only restore if the source buffer is still in Diff mode
-
-							let sourceWinNR = bufwinnr(s:vimDiffSourceBuffer)
-							if sourceWinNR != -1
-								" The buffer is visible in at least one window
-								let currentWinNR = winnr()
-								while winbufnr(sourceWinNR) != -1
-									if winbufnr(sourceWinNR) == s:vimDiffSourceBuffer
-										execute sourceWinNR . 'wincmd w'
-										if getwinvar(0, '&diff')
-											execute s:vimDiffRestoreCmd
-										endif
-									endif
-									let sourceWinNR = sourceWinNR + 1
-								endwhile
-								execute currentWinNR . 'wincmd w'
-							else
-								" The buffer is hidden.  It must be visible in order to set the
-								" diff option.
-								let currentBufNR = bufnr('')
-								execute 'hide buffer' s:vimDiffSourceBuffer
-								if getwinvar(0, '&diff')
-									execute s:vimDiffRestoreCmd
-								endif
-								execute 'hide buffer' currentBufNR
-							endif
-
-							unlet s:vimDiffRestoreCmd
-						endif
-						" All buffers are gone.
-						unlet s:vimDiffSourceBuffer
-						unlet s:vimDiffScratchList
-					endif
-				endif
-			endif
-		endif
-	finally
-		let s:isEditFileRunning -= 1
-	endtry
-endfunction
-
-" Section: Generic VCS command functions {{{1
-
-" Function: s:VCSAnnotate(...) {{{2
-function! s:VCSAnnotate(bang, ...)
-	try
-		let line = line('.')
-		let currentBuffer = bufnr('%')
-		let originalBuffer = VCSCommandGetOriginalBuffer(currentBuffer)
-
-		let annotateBuffer = s:ExecuteVCSCommand('Annotate', a:000)
-		if annotateBuffer == -1
-			return -1
-		endif
-		if a:bang == '!' && VCSCommandGetOption('VCSCommandDisableSplitAnnotate', 0) == 0
-			let vcsType = VCSCommandGetVCSType(annotateBuffer)
-			let functionMap = s:plugins[vcsType][1]
-			let splitRegex = ''
-			if has_key(s:plugins[vcsType][1], 'AnnotateSplitRegex')
-				let splitRegex = s:plugins[vcsType][1]['AnnotateSplitRegex']
-			endif
-			let splitRegex = VCSCommandGetOption('VCSCommand' . vcsType . 'AnnotateSplitRegex', splitRegex)
-			if splitRegex == ''
-				return annotateBuffer
-			endif
-			let originalFileType = getbufvar(originalBuffer, '&ft')
-			let annotateFileType = getbufvar(annotateBuffer, '&ft')
-			execute "normal 0zR\<c-v>G/" . splitRegex . "/e\<cr>d"
-			call setbufvar('%', '&filetype', getbufvar(originalBuffer, '&filetype'))
-			set scrollbind
-			leftabove vert new
-			normal 0P
-			execute "normal" . col('$') . "\<c-w>|"
-			call s:SetupScratchBuffer('annotate', vcsType, originalBuffer, 'header')
-			wincmd l
-		endif
-
-		if currentBuffer == originalBuffer
-			" Starting from the original source buffer, so the
-			" current line is relevant.
-			if a:0 == 0
-				" No argument list means that we're annotating
-				" the current version, so jumping to the same
-				" line is the expected action.
-				execute "normal" line . 'G'
-				if has('folding')
-					" The execution of the buffer created autocommand
-					" re-folds the buffer.  Display the current line
-					" unfolded.
-					normal zv
-				endif
-			endif
-		endif
-
-		return annotateBuffer
-	catch
-		call s:ReportError(v:exception)
-		return -1
-	endtry
-endfunction
-
-" Function: s:VCSCommit() {{{2
-function! s:VCSCommit(bang, message)
-	try
-		let vcsType = VCSCommandGetVCSType(bufnr('%'))
-		if !has_key(s:plugins, vcsType)
-			throw 'Unknown VCS type:  ' . vcsType
-		endif
-
-		let originalBuffer = VCSCommandGetOriginalBuffer(bufnr('%'))
-
-		" Handle the commit message being specified.  If a message is supplied, it
-		" is used; if bang is supplied, an empty message is used; otherwise, the
-		" user is provided a buffer from which to edit the commit message.
-
-		if strlen(a:message) > 0 || a:bang == '!'
-			return s:VCSFinishCommit([a:message], originalBuffer)
-		endif
-
-		call s:EditFile('commitlog', originalBuffer, '')
-		setlocal ft=vcscommit
-
-		" Create a commit mapping.
-
-		nnoremap <silent> <buffer> <Plug>VCSCommit :call <SID>VCSFinishCommitWithBuffer()<CR>
-
-		silent 0put ='VCS: ----------------------------------------------------------------------'
-		silent put ='VCS: Please enter log message.  Lines beginning with ''VCS:'' are removed automatically.'
-		silent put ='VCS: To finish the commit, Type <leader>cc (or your own <Plug>VCSCommit mapping)'
-
-		if VCSCommandGetOption('VCSCommandCommitOnWrite', 1) == 1
-			setlocal buftype=acwrite
-			au VCSCommandCommit BufWriteCmd <buffer> call s:VCSFinishCommitWithBuffer()
-			silent put ='VCS: or write this buffer'
-		endif
-
-		silent put ='VCS: ----------------------------------------------------------------------'
-		$
-		setlocal nomodified
-		silent do VCSCommand User VCSBufferCreated
-	catch
-		call s:ReportError(v:exception)
-		return -1
-	endtry
-endfunction
-
-" Function: s:VCSFinishCommitWithBuffer() {{{2
-" Wrapper for s:VCSFinishCommit which is called only from a commit log buffer
-" which removes all lines starting with 'VCS:'.
-
-function! s:VCSFinishCommitWithBuffer()
-	setlocal nomodified
-	let currentBuffer = bufnr('%')
-	let logMessageList = getbufline('%', 1, '$')
-	call filter(logMessageList, 'v:val !~ ''^\s*VCS:''')
-	let resultBuffer = s:VCSFinishCommit(logMessageList, b:VCSCommandOriginalBuffer)
-	if resultBuffer >= 0
-		execute 'bw' currentBuffer
-	endif
-	return resultBuffer
-endfunction
-
-" Function: s:VCSFinishCommit(logMessageList, originalBuffer) {{{2
-function! s:VCSFinishCommit(logMessageList, originalBuffer)
-	let messageFileName = tempname()
-	call writefile(a:logMessageList, messageFileName)
-	try
-		let resultBuffer = s:ExecuteVCSCommand('Commit', [messageFileName])
-		if resultBuffer < 0
-			return resultBuffer
-		endif
-		return s:MarkOrigBufferForSetup(resultBuffer)
-	finally
-		call delete(messageFileName)
-	endtry
-endfunction
-
-" Function: s:VCSGotoOriginal(bang) {{{2
-function! s:VCSGotoOriginal(bang)
-	let originalBuffer = VCSCommandGetOriginalBuffer(bufnr('%'))
-	if originalBuffer > 0
-		let origWinNR = bufwinnr(originalBuffer)
-		if origWinNR == -1
-			execute 'buffer' originalBuffer
-		else
-			execute origWinNR . 'wincmd w'
-		endif
-		if a:bang == '!'
-			let buffnr = 1
-			let buffmaxnr = bufnr('$')
-			while buffnr <= buffmaxnr
-				if getbufvar(buffnr, 'VCSCommandOriginalBuffer') == originalBuffer
-					execute 'bw' buffnr
-				endif
-				let buffnr = buffnr + 1
-			endwhile
-		endif
-	endif
-endfunction
-
-function! s:VCSDiff(...)  "{{{2
-	let resultBuffer = s:ExecuteVCSCommand('Diff', a:000)
-	if resultBuffer > 0
-		let &filetype = 'diff'
-	elseif resultBuffer == 0
-		echomsg 'No differences found'
-	endif
-	return resultBuffer
-endfunction
-
-function! s:VCSReview(...)  "{{{2
-	let resultBuffer = s:ExecuteVCSCommand('Review', a:000)
-	if resultBuffer > 0
-		let &filetype = getbufvar(b:VCSCommandOriginalBuffer, '&filetype')
-	endif
-	return resultBuffer
-endfunction
-
-" Function: s:VCSVimDiff(...) {{{2
-function! s:VCSVimDiff(...)
-	try
-		let vcsType = VCSCommandGetVCSType(bufnr('%'))
-		if !has_key(s:plugins, vcsType)
-			throw 'Unknown VCS type:  ' . vcsType
-		endif
-		let originalBuffer = VCSCommandGetOriginalBuffer(bufnr('%'))
-		let s:isEditFileRunning = s:isEditFileRunning + 1
-		try
-			" If there's already a VimDiff'ed window, restore it.
-			" There may only be one VCSVimDiff original window at a time.
-
-			if exists('s:vimDiffSourceBuffer') && s:vimDiffSourceBuffer != originalBuffer
-				" Clear the existing vimdiff setup by removing the result buffers.
-				call s:WipeoutCommandBuffers(s:vimDiffSourceBuffer, 'vimdiff')
-			endif
-
-			let orientation = &diffopt =~ 'horizontal' ? 'horizontal' : 'vertical'
-			let orientation = VCSCommandGetOption('VCSCommandSplit', orientation)
-			let orientation = VCSCommandGetOption('VCSCommandDiffSplit', orientation)
-
-			" Split and diff
-			if(a:0 == 2)
-				" Reset the vimdiff system, as 2 explicit versions were provided.
-				if exists('s:vimDiffSourceBuffer')
-					call s:WipeoutCommandBuffers(s:vimDiffSourceBuffer, 'vimdiff')
-				endif
-				let resultBuffer = s:VCSReview(a:1)
-				if resultBuffer < 0
-					echomsg 'Can''t open revision ' . a:1
-					return resultBuffer
-				endif
-				let b:VCSCommandCommand = 'vimdiff'
-				diffthis
-				let s:vimDiffScratchList = [resultBuffer]
-				" If no split method is defined, cheat, and set it to vertical.
-				try
-					call s:OverrideOption('VCSCommandSplit', orientation)
-					let resultBuffer = s:VCSReview(a:2)
-				finally
-					call s:OverrideOption('VCSCommandSplit')
-				endtry
-				if resultBuffer < 0
-					echomsg 'Can''t open revision ' . a:1
-					return resultBuffer
-				endif
-				let b:VCSCommandCommand = 'vimdiff'
-				diffthis
-				let s:vimDiffScratchList += [resultBuffer]
-			else
-				" Add new buffer
-				call s:OverrideOption('VCSCommandEdit', 'split')
-				try
-					" Force splitting behavior, otherwise why use vimdiff?
-					call s:OverrideOption('VCSCommandSplit', orientation)
-					try
-						if(a:0 == 0)
-							let resultBuffer = s:VCSReview()
-						else
-							let resultBuffer = s:VCSReview(a:1)
-						endif
-					finally
-						call s:OverrideOption('VCSCommandSplit')
-					endtry
-				finally
-					call s:OverrideOption('VCSCommandEdit')
-				endtry
-				if resultBuffer < 0
-					echomsg 'Can''t open current revision'
-					return resultBuffer
-				endif
-				let b:VCSCommandCommand = 'vimdiff'
-				diffthis
-
-				if !exists('s:vimDiffSourceBuffer')
-					" New instance of vimdiff.
-					let s:vimDiffScratchList = [resultBuffer]
-
-					" This could have been invoked on a VCS result buffer, not the
-					" original buffer.
-					wincmd W
-					execute 'buffer' originalBuffer
-					" Store info for later original buffer restore
-					let s:vimDiffRestoreCmd =
-								\    'call setbufvar('.originalBuffer.', ''&diff'', '.getbufvar(originalBuffer, '&diff').')'
-								\ . '|call setbufvar('.originalBuffer.', ''&foldcolumn'', '.getbufvar(originalBuffer, '&foldcolumn').')'
-								\ . '|call setbufvar('.originalBuffer.', ''&foldenable'', '.getbufvar(originalBuffer, '&foldenable').')'
-								\ . '|call setbufvar('.originalBuffer.', ''&foldmethod'', '''.getbufvar(originalBuffer, '&foldmethod').''')'
-								\ . '|call setbufvar('.originalBuffer.', ''&foldlevel'', '''.getbufvar(originalBuffer, '&foldlevel').''')'
-								\ . '|call setbufvar('.originalBuffer.', ''&scrollbind'', '.getbufvar(originalBuffer, '&scrollbind').')'
-								\ . '|call setbufvar('.originalBuffer.', ''&wrap'', '.getbufvar(originalBuffer, '&wrap').')'
-								\ . '|if &foldmethod==''manual''|execute ''normal zE''|endif'
-					diffthis
-					wincmd w
-				else
-					" Adding a window to an existing vimdiff
-					let s:vimDiffScratchList += [resultBuffer]
-				endif
-			endif
-
-			let s:vimDiffSourceBuffer = originalBuffer
-
-			" Avoid executing the modeline in the current buffer after the autocommand.
-
-			let currentBuffer = bufnr('%')
-			let saveModeline = getbufvar(currentBuffer, '&modeline')
-			try
-				call setbufvar(currentBuffer, '&modeline', 0)
-				silent do VCSCommand User VCSVimDiffFinish
-			finally
-				call setbufvar(currentBuffer, '&modeline', saveModeline)
-			endtry
-			return resultBuffer
-		finally
-			let s:isEditFileRunning = s:isEditFileRunning - 1
-		endtry
-	catch
-		call s:ReportError(v:exception)
-		return -1
-	endtry
-endfunction
-
-" Section: Public functions {{{1
-
-" Function: VCSCommandGetVCSType() {{{2
-" Sets the b:VCSCommandVCSType variable in the given buffer to the
-" appropriate source control system name.
-"
-" This uses the Identify extension function to test the buffer.  If the
-" Identify function returns VCSCOMMAND_IDENTIFY_EXACT, the match is considered
-" exact.  If the Identify function returns VCSCOMMAND_IDENTIFY_INEXACT, the
-" match is considered inexact, and is only applied if no exact match is found.
-" Multiple inexact matches is currently considered an error.
-
-function! VCSCommandGetVCSType(buffer)
-	let vcsType = getbufvar(a:buffer, 'VCSCommandVCSType')
-	if strlen(vcsType) > 0
-		return vcsType
-	endif
-	if exists("g:VCSCommandVCSTypeOverride")
-		let fullpath = fnamemodify(bufname(a:buffer), ':p')
-		for [path, vcsType] in g:VCSCommandVCSTypeOverride
-			if match(fullpath, path) > -1
-				call setbufvar(a:buffer, 'VCSCommandVCSType', vcsType)
-				return vcsType
-			endif
-		endfor
-	endif
-	let matches = []
-	for vcsType in keys(s:plugins)
-		let identified = s:plugins[vcsType][1].Identify(a:buffer)
-		if identified
-			if identified == g:VCSCOMMAND_IDENTIFY_EXACT
-				let matches = [vcsType]
-				break
-			else
-				let matches += [vcsType]
-			endif
-		endif
-	endfor
-	if len(matches) == 1
-		call setbufvar(a:buffer, 'VCSCommandVCSType', matches[0])
-		return matches[0]
-	elseif len(matches) == 0
-		throw 'No suitable plugin'
-	else
-		throw 'Too many matching VCS:  ' . join(matches)
-	endif
-endfunction
-
-" Function: VCSCommandChdir(directory) {{{2
-" Changes the current directory, respecting :lcd changes.
-
-function! VCSCommandChdir(directory)
-	let command = 'cd'
-	if exists("*haslocaldir") && haslocaldir()
-		let command = 'lcd'
-	endif
-	execute command escape(a:directory, ' ')
-endfunction
-
-" Function: VCSCommandChangeToCurrentFileDir() {{{2
-" Go to the directory in which the given file is located.
-
-function! VCSCommandChangeToCurrentFileDir(fileName)
-	let oldCwd = getcwd()
-	let newCwd = fnamemodify(resolve(a:fileName), ':p:h')
-	if strlen(newCwd) > 0
-		call VCSCommandChdir(newCwd)
-	endif
-	return oldCwd
-endfunction
-
-" Function: VCSCommandGetOriginalBuffer(vcsBuffer) {{{2
-" Attempts to locate the original file to which VCS operations were applied
-" for a given buffer.
-
-function! VCSCommandGetOriginalBuffer(vcsBuffer)
-	let origBuffer = getbufvar(a:vcsBuffer, 'VCSCommandOriginalBuffer')
-	if origBuffer
-		if bufexists(origBuffer)
-			return origBuffer
-		else
-			" Original buffer no longer exists.
-			throw 'Original buffer for this VCS buffer no longer exists.'
-		endif
-	else
-		" No original buffer
-		return a:vcsBuffer
-	endif
-endfunction
-
-" Function: VCSCommandRegisterModule(name, file, commandMap) {{{2
-" Allows VCS modules to register themselves.
-
-function! VCSCommandRegisterModule(name, path, commandMap, mappingMap)
-	let s:plugins[a:name] = [a:path, a:commandMap, a:mappingMap]
-	if !empty(a:mappingMap)
-				\ && !VCSCommandGetOption('VCSCommandDisableMappings', 0)
-				\ && !VCSCommandGetOption('VCSCommandDisableExtensionMappings', 0)
-		for shortcut in keys(a:mappingMap)
-			let expansion = ":call <SID>ExecuteExtensionMapping('" . shortcut . "')<CR>"
-			call s:CreateMapping(shortcut, expansion, a:name . " extension mapping " . shortcut)
-		endfor
-	endif
-	return s:VCSCommandUtility
-endfunction
-
-" Function: VCSCommandDoCommand(cmd, cmdName, statusText, [options]) {{{2
-" General skeleton for VCS function execution.  The given command is executed
-" after appending the current buffer name (or substituting it for
-" <VCSCOMMANDFILE>, if such a token is present).  The output is captured in a
-" new buffer.
-"
-" The optional 'options' Dictionary may contain the following options:
-" 	allowNonZeroExit:  if non-zero, if the underlying VCS command has a
-"		non-zero exit status, the command is still considered
-"		successfuly.  This defaults to zero.
-" Returns: name of the new command buffer containing the command results
-
-function! VCSCommandDoCommand(cmd, cmdName, statusText, options)
-	let allowNonZeroExit = 0
-	if has_key(a:options, 'allowNonZeroExit')
-		let allowNonZeroExit = a:options.allowNonZeroExit
-	endif
-
-	let originalBuffer = VCSCommandGetOriginalBuffer(bufnr('%'))
-	if originalBuffer == -1
-		throw 'Original buffer no longer exists, aborting.'
-	endif
-
-	let path = resolve(bufname(originalBuffer))
-
-	" Work with netrw or other systems where a directory listing is displayed in
-	" a buffer.
-
-	if isdirectory(path)
-		let fileName = '.'
-	else
-		let fileName = fnamemodify(path, ':t')
-	endif
-
-	if match(a:cmd, '<VCSCOMMANDFILE>') > 0
-		let fullCmd = substitute(a:cmd, '<VCSCOMMANDFILE>', fileName, 'g')
-	else
-		let fullCmd = a:cmd . ' -- "' . fileName . '"'
-	endif
-
-	" Change to the directory of the current buffer.  This is done for CVS, but
-	" is left in for other systems as it does not affect them negatively.
-
-	let oldCwd = VCSCommandChangeToCurrentFileDir(path)
-	try
-		let output = s:VCSCommandUtility.system(fullCmd)
-	finally
-		call VCSCommandChdir(oldCwd)
-	endtry
-
-	" HACK:  if line endings in the repository have been corrupted, the output
-	" of the command will be confused.
-	let output = substitute(output, "\r", '', 'g')
-
-	if v:shell_error && !allowNonZeroExit
-		if strlen(output) == 0
-			throw 'Version control command failed'
-		else
-			let output = substitute(output, '\n', '  ', 'g')
-			throw 'Version control command failed:  ' . output
-		endif
-	endif
-
-	if strlen(output) == 0
-		" Handle case of no output.  In this case, it is important to check the
-		" file status, especially since cvs edit/unedit may change the attributes
-		" of the file with no visible output.
-
-		checktime
-		return 0
-	endif
-
-	call s:EditFile(a:cmdName, originalBuffer, a:statusText)
-
-	silent 0put=output
-
-	" The last command left a blank line at the end of the buffer.  If the
-	" last line is folded (a side effect of the 'put') then the attempt to
-	" remove the blank line will kill the last fold.
-	"
-	" This could be fixed by explicitly detecting whether the last line is
-	" within a fold, but I prefer to simply unfold the result buffer altogether.
-
-	if has('folding')
-		normal zR
-	endif
-
-	$d
-	1
-
-	" Define the environment and execute user-defined hooks.
-
-	silent do VCSCommand User VCSBufferCreated
-	return bufnr('%')
-endfunction
-
-" Function: VCSCommandGetOption(name, default) {{{2
-" Grab a user-specified option to override the default provided.  Options are
-" searched in the window, buffer, then global spaces.
-
-function! VCSCommandGetOption(name, default)
-	if has_key(s:optionOverrides, a:name) && len(s:optionOverrides[a:name]) > 0
-		return s:optionOverrides[a:name][-1]
-	elseif exists('w:' . a:name)
-		return w:{a:name}
-	elseif exists('b:' . a:name)
-		return b:{a:name}
-	elseif exists('g:' . a:name)
-		return g:{a:name}
-	else
-		return a:default
-	endif
-endfunction
-
-" Function: VCSCommandDisableBufferSetup() {{{2
-" Global function for deactivating the buffer autovariables.
-
-function! VCSCommandDisableBufferSetup()
-	let g:VCSCommandEnableBufferSetup = 0
-	silent! augroup! VCSCommandPlugin
-endfunction
-
-" Function: VCSCommandEnableBufferSetup() {{{2
-" Global function for activating the buffer autovariables.
-
-function! VCSCommandEnableBufferSetup()
-	let g:VCSCommandEnableBufferSetup = 1
-	augroup VCSCommandPlugin
-		au!
-		au BufEnter * call s:SetupBuffer()
-	augroup END
-
-	" Only auto-load if the plugin is fully loaded.  This gives other plugins a
-	" chance to run.
-	if g:loaded_VCSCommand == 2
-		call s:SetupBuffer()
-	endif
-endfunction
-
-" Function: VCSCommandGetStatusLine() {{{2
-" Default (sample) status line entry for VCS-controlled files.  This is only
-" useful if VCS-managed buffer mode is on (see the VCSCommandEnableBufferSetup
-" variable for how to do this).
-
-function! VCSCommandGetStatusLine()
-	if exists('b:VCSCommandCommand')
-		" This is a result buffer.  Return nothing because the buffer name
-		" contains information already.
-		return ''
-	endif
-
-	if exists('b:VCSCommandVCSType')
-				\ && exists('g:VCSCommandEnableBufferSetup')
-				\ && g:VCSCommandEnableBufferSetup
-				\ && exists('b:VCSCommandBufferInfo')
-		return '[' . join(extend([b:VCSCommandVCSType], b:VCSCommandBufferInfo), ' ') . ']'
-	else
-		return ''
-	endif
-endfunction
-
-" Section: Command definitions {{{1
-" Section: Primary commands {{{2
-com! -nargs=* VCSAdd call s:MarkOrigBufferForSetup(s:ExecuteVCSCommand('Add', [<f-args>]))
-com! -nargs=* -bang VCSAnnotate call s:VCSAnnotate(<q-bang>, <f-args>)
-com! -nargs=* -bang VCSBlame call s:VCSAnnotate(<q-bang>, <f-args>)
-com! -nargs=? -bang VCSCommit call s:VCSCommit(<q-bang>, <q-args>)
-com! -nargs=* VCSDelete call s:ExecuteVCSCommand('Delete', [<f-args>])
-com! -nargs=* VCSDiff call s:VCSDiff(<f-args>)
-com! -nargs=0 -bang VCSGotoOriginal call s:VCSGotoOriginal(<q-bang>)
-com! -nargs=* VCSInfo call s:ExecuteVCSCommand('Info', [<f-args>])
-com! -nargs=* VCSLock call s:MarkOrigBufferForSetup(s:ExecuteVCSCommand('Lock', [<f-args>]))
-com! -nargs=* VCSLog call s:ExecuteVCSCommand('Log', [<f-args>])
-com! -nargs=* VCSRemove call s:ExecuteVCSCommand('Delete', [<f-args>])
-com! -nargs=0 VCSRevert call s:MarkOrigBufferForSetup(s:ExecuteVCSCommand('Revert', []))
-com! -nargs=? VCSReview call s:VCSReview(<f-args>)
-com! -nargs=* VCSStatus call s:ExecuteVCSCommand('Status', [<f-args>])
-com! -nargs=* VCSUnlock call s:MarkOrigBufferForSetup(s:ExecuteVCSCommand('Unlock', [<f-args>]))
-com! -nargs=0 VCSUpdate call s:MarkOrigBufferForSetup(s:ExecuteVCSCommand('Update', []))
-com! -nargs=* VCSVimDiff call s:VCSVimDiff(<f-args>)
-
-" Section: VCS buffer management commands {{{2
-com! VCSCommandDisableBufferSetup call VCSCommandDisableBufferSetup()
-com! VCSCommandEnableBufferSetup call VCSCommandEnableBufferSetup()
-
-" Allow reloading VCSCommand.vim
-com! VCSReload let savedPlugins = s:plugins|let s:plugins = {}|aunmenu Plugin.VCS|unlet! g:loaded_VCSCommand|runtime plugin/vcscommand.vim|for plugin in values(savedPlugins)|execute 'source' plugin[0]|endfor|unlet savedPlugins
-
-" Section: Plugin command mappings {{{1
-nnoremap <silent> <Plug>VCSAdd :VCSAdd<CR>
-nnoremap <silent> <Plug>VCSAnnotate :VCSAnnotate<CR>
-nnoremap <silent> <Plug>VCSCommit :VCSCommit<CR>
-nnoremap <silent> <Plug>VCSDelete :VCSDelete<CR>
-nnoremap <silent> <Plug>VCSDiff :VCSDiff<CR>
-nnoremap <silent> <Plug>VCSGotoOriginal :VCSGotoOriginal<CR>
-nnoremap <silent> <Plug>VCSClearAndGotoOriginal :VCSGotoOriginal!<CR>
-nnoremap <silent> <Plug>VCSInfo :VCSInfo<CR>
-nnoremap <silent> <Plug>VCSLock :VCSLock<CR>
-nnoremap <silent> <Plug>VCSLog :VCSLog<CR>
-nnoremap <silent> <Plug>VCSRevert :VCSRevert<CR>
-nnoremap <silent> <Plug>VCSReview :VCSReview<CR>
-nnoremap <silent> <Plug>VCSSplitAnnotate :VCSAnnotate!<CR>
-nnoremap <silent> <Plug>VCSStatus :VCSStatus<CR>
-nnoremap <silent> <Plug>VCSUnlock :VCSUnlock<CR>
-nnoremap <silent> <Plug>VCSUpdate :VCSUpdate<CR>
-nnoremap <silent> <Plug>VCSVimDiff :VCSVimDiff<CR>
-
-" Section: Default mappings {{{1
-
-let s:defaultMappings = [
-			\['a', 'VCSAdd'],
-			\['c', 'VCSCommit'],
-			\['D', 'VCSDelete'],
-			\['d', 'VCSDiff'],
-			\['G', 'VCSClearAndGotoOriginal'],
-			\['g', 'VCSGotoOriginal'],
-			\['i', 'VCSInfo'],
-			\['L', 'VCSLock'],
-			\['l', 'VCSLog'],
-			\['N', 'VCSSplitAnnotate'],
-			\['n', 'VCSAnnotate'],
-			\['q', 'VCSRevert'],
-			\['r', 'VCSReview'],
-			\['s', 'VCSStatus'],
-			\['U', 'VCSUnlock'],
-			\['u', 'VCSUpdate'],
-			\['v', 'VCSVimDiff'],
-			\]
-
-if !VCSCommandGetOption('VCSCommandDisableMappings', 0)
-	for [shortcut, vcsFunction] in VCSCommandGetOption('VCSCommandMappings', s:defaultMappings)
-		call s:CreateMapping(shortcut, '<Plug>' . vcsFunction, '''' . vcsFunction . '''')
-	endfor
-endif
-
-" Section: Menu items {{{1
-amenu <silent> &Plugin.VCS.&Add        <Plug>VCSAdd
-amenu <silent> &Plugin.VCS.A&nnotate   <Plug>VCSAnnotate
-amenu <silent> &Plugin.VCS.&Commit     <Plug>VCSCommit
-amenu <silent> &Plugin.VCS.Delete      <Plug>VCSDelete
-amenu <silent> &Plugin.VCS.&Diff       <Plug>VCSDiff
-amenu <silent> &Plugin.VCS.&Info       <Plug>VCSInfo
-amenu <silent> &Plugin.VCS.&Log        <Plug>VCSLog
-amenu <silent> &Plugin.VCS.Revert      <Plug>VCSRevert
-amenu <silent> &Plugin.VCS.&Review     <Plug>VCSReview
-amenu <silent> &Plugin.VCS.&Status     <Plug>VCSStatus
-amenu <silent> &Plugin.VCS.&Update     <Plug>VCSUpdate
-amenu <silent> &Plugin.VCS.&VimDiff    <Plug>VCSVimDiff
-
-" Section: Autocommands to restore vimdiff state {{{1
-augroup VimDiffRestore
-	au!
-	au BufUnload * call s:VimDiffRestore(str2nr(expand('<abuf>')))
-augroup END
-
-" Section: Optional activation of buffer management {{{1
-
-if VCSCommandGetOption('VCSCommandEnableBufferSetup', 0)
-	call VCSCommandEnableBufferSetup()
-endif
-
-" Section: VIM shutdown hook {{{1
-
-" Close all result buffers when VIM exits, to prevent them from being restored
-" via viminfo.
-
-" Function: s:CloseAllResultBuffers() {{{2
-" Closes all vcscommand result buffers.
-function! s:CloseAllResultBuffers()
-	" This avoids using bufdo as that may load buffers already loaded in another
-	" vim process, resulting in an error.
-	let buffnr = 1
-	let buffmaxnr = bufnr('$')
-	while buffnr <= buffmaxnr
-		if getbufvar(buffnr, 'VCSCommandOriginalBuffer') != ""
-			execute 'bw' buffnr
-		endif
-		let buffnr = buffnr + 1
-	endwhile
-endfunction
-
-augroup VCSCommandVIMShutdown
-	au!
-	au VimLeavePre * call s:CloseAllResultBuffers()
-augroup END
-
-" Section: Plugin completion {{{1
-
-let loaded_VCSCommand = 2
-
-silent do VCSCommand User VCSPluginFinish
-
-let &cpo = s:save_cpo
--- a/vim/bundle/vcscommand/plugin/vcsgit.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,248 +0,0 @@
-" vim600: set foldmethod=marker:
-"
-" git extension for VCSCommand.
-"
-" Version:       VCS development
-" Maintainer:    Bob Hiestand <bob.hiestand@gmail.com>
-" License:
-" Copyright (c) 2008 Bob Hiestand
-"
-" Permission is hereby granted, free of charge, to any person obtaining a copy
-" of this software and associated documentation files (the "Software"), to
-" deal in the Software without restriction, including without limitation the
-" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-" sell copies of the Software, and to permit persons to whom the Software is
-" furnished to do so, subject to the following conditions:
-"
-" The above copyright notice and this permission notice shall be included in
-" all copies or substantial portions of the Software.
-"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-" IN THE SOFTWARE.
-"
-" Section: Documentation {{{1
-"
-" Options documentation: {{{2
-"
-" VCSCommandGitExec
-"   This variable specifies the git executable.  If not set, it defaults to
-"   'git' executed from the user's executable path.
-"
-" VCSCommandGitDiffOpt
-"   This variable, if set, determines the default options passed to the
-"   VCSDiff command.  If any options (starting with '-') are passed to the
-"   command, this variable is not used.
-
-" Section: Plugin header {{{1
-
-if exists('VCSCommandDisableAll')
-	finish
-endif
-
-if v:version < 700
-	echohl WarningMsg|echomsg 'VCSCommand requires at least VIM 7.0'|echohl None
-	finish
-endif
-
-runtime plugin/vcscommand.vim
-
-if !executable(VCSCommandGetOption('VCSCommandGitExec', 'git'))
-	" git is not installed
-	finish
-endif
-
-let s:save_cpo=&cpo
-set cpo&vim
-
-" Section: Variable initialization {{{1
-
-let s:gitFunctions = {}
-
-" Section: Utility functions {{{1
-
-" Function: s:Executable() {{{2
-" Returns the executable used to invoke git suitable for use in a shell
-" command.
-function! s:Executable()
-	return shellescape(VCSCommandGetOption('VCSCommandGitExec', 'git'))
-endfunction
-
-" Function: s:DoCommand(cmd, cmdName, statusText, options) {{{2
-" Wrapper to VCSCommandDoCommand to add the name of the git executable to the
-" command argument.
-function! s:DoCommand(cmd, cmdName, statusText, options)
-	if VCSCommandGetVCSType(expand('%')) == 'git'
-		let fullCmd = s:Executable() . ' ' . a:cmd
-		return VCSCommandDoCommand(fullCmd, a:cmdName, a:statusText, a:options)
-	else
-		throw 'git VCSCommand plugin called on non-git item.'
-	endif
-endfunction
-
-" Section: VCS function implementations {{{1
-
-" Function: s:gitFunctions.Identify(buffer) {{{2
-" This function only returns an inexact match due to the detection method used
-" by git, which simply traverses the directory structure upward.
-function! s:gitFunctions.Identify(buffer)
-	let oldCwd = VCSCommandChangeToCurrentFileDir(resolve(bufname(a:buffer)))
-	try
-		call s:VCSCommandUtility.system(s:Executable() . ' rev-parse --is-inside-work-tree')
-		if(v:shell_error)
-			return 0
-		else
-			return g:VCSCOMMAND_IDENTIFY_INEXACT
-		endif
-	finally
-		call VCSCommandChdir(oldCwd)
-	endtry
-endfunction
-
-" Function: s:gitFunctions.Add(argList) {{{2
-function! s:gitFunctions.Add(argList)
-	return s:DoCommand(join(['add'] + ['-v'] + a:argList, ' '), 'add', join(a:argList, ' '), {})
-endfunction
-
-" Function: s:gitFunctions.Annotate(argList) {{{2
-function! s:gitFunctions.Annotate(argList)
-	if len(a:argList) == 0
-		if &filetype == 'gitannotate'
-			" Perform annotation of the version indicated by the current line.
-			let options = matchstr(getline('.'),'^\x\+')
-		else
-			let options = ''
-		endif
-	elseif len(a:argList) == 1 && a:argList[0] !~ '^-'
-		let options = a:argList[0]
-	else
-		let options = join(a:argList, ' ')
-	endif
-
-	return s:DoCommand('blame ' . options, 'annotate', options, {})
-endfunction
-
-" Function: s:gitFunctions.Commit(argList) {{{2
-function! s:gitFunctions.Commit(argList)
-	try
-		return s:DoCommand('commit -F "' . a:argList[0] . '"', 'commit', '', {})
-	catch /\m^Version control command failed.*nothing\%( added\)\? to commit/
-		echomsg 'No commit needed.'
-	endtry
-endfunction
-
-" Function: s:gitFunctions.Delete() {{{2
-" All options are passed through.
-function! s:gitFunctions.Delete(argList)
-	let options = a:argList
-	let caption = join(a:argList, ' ')
-	return s:DoCommand(join(['rm'] + options, ' '), 'delete', caption, {})
-endfunction
-
-" Function: s:gitFunctions.Diff(argList) {{{2
-" Pass-through call to git-diff.  If no options (starting with '-') are found,
-" then the options in the 'VCSCommandGitDiffOpt' variable are added.
-function! s:gitFunctions.Diff(argList)
-	let gitDiffOpt = VCSCommandGetOption('VCSCommandGitDiffOpt', '')
-	if gitDiffOpt == ''
-		let diffOptions = []
-	else
-		let diffOptions = [gitDiffOpt]
-		for arg in a:argList
-			if arg =~ '^-'
-				let diffOptions = []
-				break
-			endif
-		endfor
-	endif
-
-	return s:DoCommand(join(['diff'] + diffOptions + a:argList), 'diff', join(a:argList), {})
-endfunction
-
-" Function: s:gitFunctions.GetBufferInfo() {{{2
-" Provides version control details for the current file.  Current version
-" number and current repository version number are required to be returned by
-" the vcscommand plugin.  This CVS extension adds branch name to the return
-" list as well.
-" Returns: List of results:  [revision, repository, branch]
-
-function! s:gitFunctions.GetBufferInfo()
-	let oldCwd = VCSCommandChangeToCurrentFileDir(resolve(bufname('%')))
-	try
-		let branch = substitute(s:VCSCommandUtility.system(s:Executable() . ' symbolic-ref -q HEAD'), '\n$', '', '')
-		if v:shell_error
-			let branch = 'DETACHED'
-		else
-			let branch = substitute(branch, '^refs/heads/', '', '')
-		endif
-
-		let info = [branch]
-
-		for method in split(VCSCommandGetOption('VCSCommandGitDescribeArgList', (',tags,all,always')), ',', 1)
-			if method != ''
-				let method = ' --' . method
-			endif
-			let tag = substitute(s:VCSCommandUtility.system(s:Executable() . ' describe' . method), '\n$', '', '')
-			if !v:shell_error
-				call add(info, tag)
-				break
-			endif
-		endfor
-
-		return info
-	finally
-		call VCSCommandChdir(oldCwd)
-	endtry
-endfunction
-
-" Function: s:gitFunctions.Log() {{{2
-function! s:gitFunctions.Log(argList)
-	return s:DoCommand(join(['log'] + a:argList), 'log', join(a:argList, ' '), {})
-endfunction
-
-" Function: s:gitFunctions.Revert(argList) {{{2
-function! s:gitFunctions.Revert(argList)
-	return s:DoCommand('checkout', 'revert', '', {})
-endfunction
-
-" Function: s:gitFunctions.Review(argList) {{{2
-function! s:gitFunctions.Review(argList)
-	if len(a:argList) == 0
-		let revision = 'HEAD'
-	else
-		let revision = a:argList[0]
-	endif
-
-	let oldCwd = VCSCommandChangeToCurrentFileDir(resolve(bufname(VCSCommandGetOriginalBuffer('%'))))
-	try
-		let prefix = s:VCSCommandUtility.system(s:Executable() . ' rev-parse --show-prefix')
-	finally
-		call VCSCommandChdir(oldCwd)
-	endtry
-
-	let prefix = substitute(prefix, '\n$', '', '')
-	let blob = '"' . revision . ':' . prefix . '<VCSCOMMANDFILE>"'
-	return s:DoCommand('show ' . blob, 'review', revision, {})
-endfunction
-
-" Function: s:gitFunctions.Status(argList) {{{2
-function! s:gitFunctions.Status(argList)
-	return s:DoCommand(join(['status'] + a:argList), 'status', join(a:argList), {'allowNonZeroExit': 1})
-endfunction
-
-" Function: s:gitFunctions.Update(argList) {{{2
-function! s:gitFunctions.Update(argList)
-	throw "This command is not implemented for git because file-by-file update doesn't make much sense in that context.  If you have an idea for what it should do, please let me know."
-endfunction
-
-" Annotate setting {{{2
-let s:gitFunctions.AnnotateSplitRegex = ') '
-
-" Section: Plugin Registration {{{1
-let s:VCSCommandUtility = VCSCommandRegisterModule('git', expand('<sfile>'), s:gitFunctions, [])
-
-let &cpo = s:save_cpo
--- a/vim/bundle/vcscommand/plugin/vcshg.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,270 +0,0 @@
-" vim600: set foldmethod=marker:
-"
-" Mercurial extension for VCSCommand.
-"
-" Version:       VCS development
-" Maintainer:    Bob Hiestand <bob.hiestand@gmail.com>
-" License:
-" Copyright (c) 2009 Bob Hiestand
-"
-" Permission is hereby granted, free of charge, to any person obtaining a copy
-" of this software and associated documentation files (the "Software"), to
-" deal in the Software without restriction, including without limitation the
-" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-" sell copies of the Software, and to permit persons to whom the Software is
-" furnished to do so, subject to the following conditions:
-"
-" The above copyright notice and this permission notice shall be included in
-" all copies or substantial portions of the Software.
-"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-" IN THE SOFTWARE.
-"
-" Section: Documentation {{{1
-"
-" Options documentation: {{{2
-"
-" VCSCommandHGExec
-"   This variable specifies the mercurial executable.  If not set, it defaults
-"   to 'hg' executed from the user's executable path.
-"
-" VCSCommandHGDiffExt
-"   This variable, if set, sets the external diff program used by Subversion.
-"
-" VCSCommandHGDiffOpt
-"   This variable, if set, determines the options passed to the hg diff
-"   command (such as 'u', 'w', or 'b').
-
-" Section: Plugin header {{{1
-
-if exists('VCSCommandDisableAll')
-	finish
-endif
-
-if v:version < 700
-	echohl WarningMsg|echomsg 'VCSCommand requires at least VIM 7.0'|echohl None
-	finish
-endif
-
-runtime plugin/vcscommand.vim
-
-if !executable(VCSCommandGetOption('VCSCommandHGExec', 'hg'))
-	" HG is not installed
-	finish
-endif
-
-let s:save_cpo=&cpo
-set cpo&vim
-
-" Section: Variable initialization {{{1
-
-let s:hgFunctions = {}
-
-" Section: Utility functions {{{1
-
-" Function: s:Executable() {{{2
-" Returns the executable used to invoke hg suitable for use in a shell
-" command.
-function! s:Executable()
-	return shellescape(VCSCommandGetOption('VCSCommandHGExec', 'hg'))
-endfunction
-
-" Function: s:DoCommand(cmd, cmdName, statusText, options) {{{2
-" Wrapper to VCSCommandDoCommand to add the name of the HG executable to the
-" command argument.
-function! s:DoCommand(cmd, cmdName, statusText, options)
-	if VCSCommandGetVCSType(expand('%')) == 'HG'
-		let fullCmd = s:Executable() . ' ' . a:cmd
-		return VCSCommandDoCommand(fullCmd, a:cmdName, a:statusText, a:options)
-	else
-		throw 'HG VCSCommand plugin called on non-HG item.'
-	endif
-endfunction
-
-" Section: VCS function implementations {{{1
-
-" Function: s:hgFunctions.Identify(buffer) {{{2
-function! s:hgFunctions.Identify(buffer)
-	let oldCwd = VCSCommandChangeToCurrentFileDir(resolve(bufname(a:buffer)))
-	try
-		call s:VCSCommandUtility.system(s:Executable() . ' root')
-		if(v:shell_error)
-			return 0
-		else
-			return g:VCSCOMMAND_IDENTIFY_INEXACT
-		endif
-	finally
-		call VCSCommandChdir(oldCwd)
-	endtry
-endfunction
-
-" Function: s:hgFunctions.Add() {{{2
-function! s:hgFunctions.Add(argList)
-	return s:DoCommand(join(['add -v'] + a:argList, ' '), 'add', join(a:argList, ' '), {})
-endfunction
-
-" Function: s:hgFunctions.Annotate(argList) {{{2
-function! s:hgFunctions.Annotate(argList)
-	if len(a:argList) == 0
-		if &filetype == 'HGannotate'
-			" Perform annotation of the version indicated by the current line.
-			let caption = matchstr(getline('.'),'\v^\s+\zs\d+')
-			let options = ' -r' . caption
-		else
-			let caption = ''
-			let options = ' -un'
-		endif
-	elseif len(a:argList) == 1 && a:argList[0] !~ '^-'
-		let caption = a:argList[0]
-		let options = ' -un -r' . caption
-	else
-		let caption = join(a:argList, ' ')
-		let options = ' ' . caption
-	endif
-
-	return s:DoCommand('blame' . options, 'annotate', caption, {})
-endfunction
-
-" Function: s:hgFunctions.Commit(argList) {{{2
-function! s:hgFunctions.Commit(argList)
-	return s:DoCommand('commit -v -l "' . a:argList[0] . '"', 'commit', '', {})
-endfunction
-
-" Function: s:hgFunctions.Delete() {{{2
-function! s:hgFunctions.Delete(argList)
-	return s:DoCommand(join(['remove'] + a:argList, ' '), 'remove', join(a:argList, ' '), {})
-endfunction
-
-" Function: s:hgFunctions.Diff(argList) {{{2
-function! s:hgFunctions.Diff(argList)
-	if len(a:argList) == 0
-		let revOptions = []
-		let caption = ''
-	elseif len(a:argList) <= 2 && match(a:argList, '^-') == -1
-		let revOptions = ['-r' . join(a:argList, ':')]
-		let caption = '(' . a:argList[0] . ' : ' . get(a:argList, 1, 'current') . ')'
-	else
-		" Pass-through
-		let caption = join(a:argList, ' ')
-		let revOptions = a:argList
-	endif
-
-	let hgDiffExt = VCSCommandGetOption('VCSCommandHGDiffExt', '')
-	if hgDiffExt == ''
-		let diffExt = []
-	else
-		let diffExt = ['--diff-cmd ' . hgDiffExt]
-	endif
-
-	let hgDiffOpt = VCSCommandGetOption('VCSCommandHGDiffOpt', '')
-	if hgDiffOpt == ''
-		let diffOptions = []
-	else
-		let diffOptions = ['-x -' . hgDiffOpt]
-	endif
-
-	return s:DoCommand(join(['diff'] + diffExt + diffOptions + revOptions), 'diff', caption, {})
-endfunction
-
-" Function: s:hgFunctions.Info(argList) {{{2
-function! s:hgFunctions.Info(argList)
-	return s:DoCommand(join(['log --limit 1'] + a:argList, ' '), 'log', join(a:argList, ' '), {})
-endfunction
-
-" Function: s:hgFunctions.GetBufferInfo() {{{2
-" Provides version control details for the current file.  Current version
-" number and current repository version number are required to be returned by
-" the vcscommand plugin.
-" Returns: List of results:  [revision, repository, branch]
-
-function! s:hgFunctions.GetBufferInfo()
-	let originalBuffer = VCSCommandGetOriginalBuffer(bufnr('%'))
-	let fileName = bufname(originalBuffer)
-	let statusText = s:VCSCommandUtility.system(s:Executable() . ' status -- "' . fileName . '"')
-	if(v:shell_error)
-		return []
-	endif
-
-	" File not under HG control.
-	if statusText =~ '^?'
-		return ['Unknown']
-	endif
-
-	let parentsText = s:VCSCommandUtility.system(s:Executable() . ' parents -- "' . fileName . '"')
-	let revision = matchlist(parentsText, '^changeset:\s\+\(\S\+\)\n')[1]
-
-	let logText = s:VCSCommandUtility.system(s:Executable() . ' log -- "' . fileName . '"')
-	let repository = matchlist(logText, '^changeset:\s\+\(\S\+\)\n')[1]
-
-	if revision == ''
-		" Error
-		return ['Unknown']
-	elseif statusText =~ '^A'
-		return ['New', 'New']
-	else
-		return [revision, repository]
-	endif
-endfunction
-
-" Function: s:hgFunctions.Log(argList) {{{2
-function! s:hgFunctions.Log(argList)
-	if len(a:argList) == 0
-		let options = []
-		let caption = ''
-	elseif len(a:argList) <= 2 && match(a:argList, '^-') == -1
-		let options = ['-r' . join(a:argList, ':')]
-		let caption = options[0]
-	else
-		" Pass-through
-		let options = a:argList
-		let caption = join(a:argList, ' ')
-	endif
-
-	let resultBuffer = s:DoCommand(join(['log', '-v'] + options), 'log', caption, {})
-	return resultBuffer
-endfunction
-
-" Function: s:hgFunctions.Revert(argList) {{{2
-function! s:hgFunctions.Revert(argList)
-	return s:DoCommand('revert', 'revert', '', {})
-endfunction
-
-" Function: s:hgFunctions.Review(argList) {{{2
-function! s:hgFunctions.Review(argList)
-	if len(a:argList) == 0
-		let versiontag = '(current)'
-		let versionOption = ''
-	else
-		let versiontag = a:argList[0]
-		let versionOption = ' -r ' . versiontag . ' '
-	endif
-
-	return s:DoCommand('cat' . versionOption, 'review', versiontag, {})
-endfunction
-
-" Function: s:hgFunctions.Status(argList) {{{2
-function! s:hgFunctions.Status(argList)
-	let options = ['-A', '-v']
-	if len(a:argList) != 0
-		let options = a:argList
-	endif
-	return s:DoCommand(join(['status'] + options, ' '), 'status', join(options, ' '), {})
-endfunction
-
-" Function: s:hgFunctions.Update(argList) {{{2
-function! s:hgFunctions.Update(argList)
-	return s:DoCommand('update', 'update', '', {})
-endfunction
-
-" Annotate setting {{{2
-let s:hgFunctions.AnnotateSplitRegex = '\d\+: '
-
-" Section: Plugin Registration {{{1
-let s:VCSCommandUtility = VCSCommandRegisterModule('HG', expand('<sfile>'), s:hgFunctions, [])
-
-let &cpo = s:save_cpo
--- a/vim/bundle/vcscommand/syntax/gitannotate.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-" Vim syntax file
-" Language:	git annotate output
-" Maintainer:	Bob Hiestand <bob.hiestand@gmail.com>
-" Remark:	Used by the vcscommand plugin.
-" License:
-" Copyright (c) 2009 Bob Hiestand
-"
-" Permission is hereby granted, free of charge, to any person obtaining a copy
-" of this software and associated documentation files (the "Software"), to
-" deal in the Software without restriction, including without limitation the
-" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-" sell copies of the Software, and to permit persons to whom the Software is
-" furnished to do so, subject to the following conditions:
-"
-" The above copyright notice and this permission notice shall be included in
-" all copies or substantial portions of the Software.
-"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-" IN THE SOFTWARE.
-
-if exists("b:current_syntax")
-	finish
-endif
-
-syn region gitName start="(\@<=" end="\( \d\d\d\d-\)\@=" contained
-syn match gitCommit /^\^\?\x\+/ contained
-syn match gitDate /\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d [+-]\d\d\d\d/ contained
-syn match gitLineNumber /\d\+)\@=/ contained
-syn region gitAnnotation start="^" end=") " oneline keepend contains=gitCommit,gitLineNumber,gitDate,gitName
-
-if !exists("did_gitannotate_syntax_inits")
-	let did_gitannotate_syntax_inits = 1
-	hi link gitName Type
-	hi link gitCommit Statement
-	hi link gitDate Comment
-	hi link gitLineNumber Label
-endif
-
-let b:current_syntax="gitAnnotate"
--- a/vim/bundle/vcscommand/syntax/hgannotate.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-" Vim syntax file
-" Language:	HG annotate output
-" Maintainer:	Bob Hiestand <bob.hiestand@gmail.com>
-" Remark:	Used by the vcscommand plugin.
-" License:
-" Copyright (c) 2010 Bob Hiestand
-"
-" Permission is hereby granted, free of charge, to any person obtaining a copy
-" of this software and associated documentation files (the "Software"), to
-" deal in the Software without restriction, including without limitation the
-" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-" sell copies of the Software, and to permit persons to whom the Software is
-" furnished to do so, subject to the following conditions:
-"
-" The above copyright notice and this permission notice shall be included in
-" all copies or substantial portions of the Software.
-"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-" IN THE SOFTWARE.
-
-if exists("b:current_syntax")
-	finish
-endif
-
-syn match hgVer /\d\+/ contained
-syn match hgName /^\s*\S\+/ contained
-syn match hgHead /^\s*\S\+\s\+\d\+:/ contains=hgVer,hgName
-
-if !exists("did_hgannotate_syntax_inits")
-	let did_hgannotate_syntax_inits = 1
-	hi link hgName Type
-	hi link hgVer Statement
-endif
-
-let b:current_syntax="hgAnnotate"
--- a/vim/bundle/vcscommand/syntax/vcscommit.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-" Vim syntax file
-" Language:	VCS commit file
-" Maintainer:	Bob Hiestand (bob.hiestand@gmail.com)
-" License:
-" Copyright (c) 2007 Bob Hiestand
-"
-" Permission is hereby granted, free of charge, to any person obtaining a copy
-" of this software and associated documentation files (the "Software"), to
-" deal in the Software without restriction, including without limitation the
-" rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-" sell copies of the Software, and to permit persons to whom the Software is
-" furnished to do so, subject to the following conditions:
-"
-" The above copyright notice and this permission notice shall be included in
-" all copies or substantial portions of the Software.
-"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-" IN THE SOFTWARE.
-
-if exists("b:current_syntax")
-	finish
-endif
-
-syntax region vcsComment start="^VCS: " end="$"
-highlight link vcsComment Comment
-let b:current_syntax = "vcscommit"
--- a/vim/ftplugin/python.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,223 +0,0 @@
-" Fold routines for python code, version 3.2
-" Source: http://www.vim.org/scripts/script.php?script_id=2527
-" Last Change: 2009 Feb 25
-" Author: Jurjen Bos
-" Bug fixes and helpful comments: Grissiom, David Froger, Andrew McNabb
-
-" Principles:
-" - a def/class starts a fold
-" a line with indent less than the previous def/class ends a fold
-" empty lines and comment lines are linked to the previous fold
-" comment lines outside a def/class are never folded
-" other lines outside a def/class are folded together as a group
-" for algorithm, see bottom of script
-
-" - optionally, you can get empty lines between folds, see (***)
-" - another option is to ignore non-python files see (**)
-" - you can also modify the def/class check,
-"    allowing for multiline def and class definitions see (*)
-
-" Note for vim 7 users:
-" Vim 6 line numbers always take 8 columns, while vim 7 has a numberwidth variable
-" you can change the 8 below to &numberwidth if you have vim 7,
-" this is only really useful when you plan to use more than 8 columns (i.e. never)
-
-" Note for masochists trying to read this:
-" I wanted to keep the functions short, so I replaced occurences of
-" if condition
-"     statement
-" by
-" if condition | statement
-" wherever I found that useful
-
-" (*)
-" class definitions are supposed to ontain a colon on the same line.
-" function definitions are *not* required to have a colon, to allow for multiline defs.
-" I you disagree, use instead of the pattern '^\s*\(class\s.*:\|def\s\)'
-" to enforce : for defs:                     '^\s*\(class\|def\)\s.*:'
-" you'll have to do this in two places.
-let s:defpat = '^\s*\(@\|class\s.*:\|def\s\)'
-
-" (**) Ignore non-python files
-" Commented out because some python files are not recognized by Vim
-if &filetype != 'python'
-    finish
-endif
-
-setlocal foldmethod=expr
-setlocal foldexpr=GetPythonFold(v:lnum)
-setlocal foldtext=PythonFoldText()
-
-function! PythonFoldText()
-    " ignore decorators
-    let fs = v:foldstart
-    while getline(fs) =~ '^\s*@' | let fs = nextnonblank(fs + 1)
-    endwhile
-    let line = getline(fs)
-
-    let nucolwidth = &fdc + &number * &numberwidth
-    let windowwidth = winwidth(0) - nucolwidth - 3
-    let foldedlinecount = v:foldend - v:foldstart
-
-    " expand tabs into spaces
-    let onetab = strpart('          ', 0, &tabstop)
-    let line = substitute(line, '\t', onetab, 'g')
-
-    let line = strpart(line, 0, windowwidth - 2 -len(foldedlinecount))
-    let fillcharcount = windowwidth - len(line) - len(foldedlinecount) - 4
-    return line . '…' . repeat(" ",fillcharcount) . foldedlinecount . '…' . ' '
-endfunction
-
-function! GetBlockIndent(lnum)
-    " Auxiliary function; determines the indent level of the surrounding def/class
-    " "global" lines are level 0, first def &shiftwidth, and so on
-    " scan backwards for class/def that is shallower or equal
-    let ind = 100
-    let p = a:lnum+1
-    while indent(p) >= 0
-        let p = p - 1
-        " skip empty and comment lines
-        if getline(p) =~ '^$\|^\s*#' | continue
-        " zero-level regular line
-        elseif indent(p) == 0 | return 0
-        " skip deeper or equal lines
-        elseif indent(p) >= ind || getline(p) =~ '^$\|^\s*#' | continue
-        " indent is strictly less at this point: check for def/class
-        elseif getline(p) =~ s:defpat && getline(p) !~ '^\s*@'
-            " level is one more than this def/class
-            return indent(p) + &shiftwidth
-        endif
-        " shallower line that is neither class nor def: continue search at new level
-        let ind = indent(p)
-    endwhile
-    "beginning of file
-    return 0
-endfunction
-
-" Clever debug code, use as: call PrintIfCount(n,"Line: ".a:lnum.", value: ".x)
-let s:counter=0
-function! PrintIfCount(n,t)
-    "Print text the nth time this function is called
-    let s:counter = s:counter+1
-    if s:counter==a:n | echo a:t
-    endif
-endfunction
-
-function! GetPythonFold(lnum)
-    " Determine folding level in Python source (see "higher foldlevel theory" below)
-    let line = getline(a:lnum)
-    let ind = indent(a:lnum)
-    " Case D***: class and def start a fold
-    " If previous line is @, it is not the first
-    if line =~ s:defpat && getline(prevnonblank(a:lnum-1)) !~ '^\s*@'
-        " let's see if this range of 0 or more @'s end in a class/def
-        let n = a:lnum
-        while getline(n) =~ '^\s*@' | let n = nextnonblank(n + 1)
-        endwhile
-        " yes, we have a match: this is the first of a real def/class with decorators
-        if getline(n) =~ s:defpat
-            return ">".(ind/&shiftwidth+1)
-        endif
-    " Case E***: empty lines fold with previous
-    " (***) change '=' to -1 if you want empty lines/comment out of a fold
-    elseif line == '' && getline(a:lnum-1) == '' | return '-1'
-    elseif line == '' && getline(a:lnum-1) != '' | return '='
-    endif
-    " now we need the indent from previous
-    let p = prevnonblank(a:lnum-1)
-    while p>0 && getline(p) =~ '^\s*#' | let p = prevnonblank(p-1)
-    endwhile
-    let pind = indent(p)
-    " If previous was definition: count as one level deeper
-    if getline(p) =~ s:defpat && getline(prevnonblank(a:lnum - 1)) !~ '^\s*@'
-        let pind = pind + &shiftwidth
-    " if begin of file: take zero
-    elseif p==0 | let pind = 0
-    endif
-    " Case S*=* and C*=*: indent equal
-    if ind>0 && ind==pind | return '='
-    " Case S*>* and C*>*: indent increase
-    elseif ind>pind | return '='
-    " All cases with 0 indent
-    elseif ind==0
-        " Case C*=0*: separate global code blocks
-        if pind==0 && line =~ '^#' | return 0
-        " Case S*<0* and S*=0*: global code
-        elseif line !~'^#'
-            " Case S*<0*: new global statement if/while/for/try/with
-            if 0<pind && line!~'^else\s*:\|^except.*:\|^elif.*:\|^finally\s*:' | return '>1'
-            " Case S*=0*, after level 0 comment
-            elseif 0==pind && getline(prevnonblank(a:lnum-1)) =~ '^\s*#' | return '>1'
-            " Case S*=0*, other, stay 1
-            else | return '='
-            endif
-        endif
-        " Case C*<0= and C*<0<: compute next indent
-        let n = nextnonblank(a:lnum+1)
-        while n>0 && getline(n) =~'^\s*#' | let n = nextnonblank(n+1)
-        endwhile
-        " Case C*<0=: split definitions
-        if indent(n)==0 | return 0
-        " Case C*<0<: shallow comment
-        else | return -1
-        end
-    endif
-    " now we really need to compute the actual fold indent
-    " do the hard computation
-    let blockindent = GetBlockIndent(a:lnum)
-    " Case SG<* and CG<*: global code, level 1
-    if blockindent==0 | return 1
-    endif
-    " now we need the indent from next
-    let n = nextnonblank(a:lnum+1)
-    while n>0 && getline(n) =~'^\s*#' | let n = nextnonblank(n+1)
-    endwhile
-    let nind = indent(n)
-    " Case CR<= and CR<>
-    "if line !~ '^\s*#' | call PrintIfCount(4,"Line: ".a:lnum.", blockindent: ".blockindent.", n: ".n.", nind: ".nind.", p: ".p.", pind: ".pind)
-    endif
-    if line =~ '^\s*#' && ind>=nind | return -1
-    " Case CR<<: return next indent
-    elseif line =~ '^\s*#' | return nind / &shiftwidth
-    " Case SR<*: return actual indent
-    else | return blockindent / &shiftwidth
-    endif
-endfunction
-
-" higher foldlevel theory
-" There are five kinds of statements: S (code), D (def/class), E (empty), C (comment)
-
-" Note that a decorator statement (beginning with @) counts as definition,
-" but that of a sequence of @,@,@,def only the first one counts
-" This means that a definiion only counts if not preceded by a decorator
-
-" There are two kinds of folds: R (regular), G (global statements)
-
-" There are five indent situations with respect to the previous non-emtpy non-comment line:
-" > (indent), < (dedent), = (same); < and = combine with 0 (indent is zero)
-" Note: if the previous line is class/def, its indent is interpreted as one higher
-
-" There are three indent situations with respect to the next (non-E non-C) line:
-" > (dedent), < (indent), = (same)
-
-" Situations (in order of the script):
-" stat  fold prev   next
-" SDEC  RG   ><=00  ><=
-" D     *    *      *     begin fold level if previous is not @: '>'.ind/&sw+1
-" E     *    *      *     keep with previous: '='
-" S     *    =      *     stays the same: '='
-" C     *    =      *     combine with previous: '='
-" S     *    >      *     stays the same: '='
-" C     *    >      *     combine with previous: '='
-" C     *    =0     *     separate blocks: 0
-" S     *    <0     *     becomes new level 1: >1 (except except/else: 1)
-" S     *    =0     *     stays 1: '=' (after level 0 comment: '>1')
-" C     *    <0     =     split definitions: 0
-" C     *    <0     <     shallow comment: -1
-" C     *    <0     >     [never occurs]
-" S     G    <      *     global, not the first: 1
-" C     G    <      *     indent isn't 0: 1
-" C     R    <      =     foldlevel as computed for next line: -1
-" C     R    <      >     foldlevel as computed for next line: -1
-" S     R    <      *     compute foldlevel the hard way: use function
-" C     R    <      <     foldlevel as computed for this line: use function
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vim/ftplugin/python/folding.vim	Wed Feb 02 15:21:47 2011 -0500
@@ -0,0 +1,223 @@
+" Fold routines for python code, version 3.2
+" Source: http://www.vim.org/scripts/script.php?script_id=2527
+" Last Change: 2009 Feb 25
+" Author: Jurjen Bos
+" Bug fixes and helpful comments: Grissiom, David Froger, Andrew McNabb
+
+" Principles:
+" - a def/class starts a fold
+" a line with indent less than the previous def/class ends a fold
+" empty lines and comment lines are linked to the previous fold
+" comment lines outside a def/class are never folded
+" other lines outside a def/class are folded together as a group
+" for algorithm, see bottom of script
+
+" - optionally, you can get empty lines between folds, see (***)
+" - another option is to ignore non-python files see (**)
+" - you can also modify the def/class check,
+"    allowing for multiline def and class definitions see (*)
+
+" Note for vim 7 users:
+" Vim 6 line numbers always take 8 columns, while vim 7 has a numberwidth variable
+" you can change the 8 below to &numberwidth if you have vim 7,
+" this is only really useful when you plan to use more than 8 columns (i.e. never)
+
+" Note for masochists trying to read this:
+" I wanted to keep the functions short, so I replaced occurences of
+" if condition
+"     statement
+" by
+" if condition | statement
+" wherever I found that useful
+
+" (*)
+" class definitions are supposed to ontain a colon on the same line.
+" function definitions are *not* required to have a colon, to allow for multiline defs.
+" I you disagree, use instead of the pattern '^\s*\(class\s.*:\|def\s\)'
+" to enforce : for defs:                     '^\s*\(class\|def\)\s.*:'
+" you'll have to do this in two places.
+let s:defpat = '^\s*\(@\|class\s.*:\|def\s\)'
+
+" (**) Ignore non-python files
+" Commented out because some python files are not recognized by Vim
+if &filetype != 'python'
+    finish
+endif
+
+setlocal foldmethod=expr
+setlocal foldexpr=GetPythonFold(v:lnum)
+setlocal foldtext=PythonFoldText()
+
+function! PythonFoldText()
+    " ignore decorators
+    let fs = v:foldstart
+    while getline(fs) =~ '^\s*@' | let fs = nextnonblank(fs + 1)
+    endwhile
+    let line = getline(fs)
+
+    let nucolwidth = &fdc + &number * &numberwidth
+    let windowwidth = winwidth(0) - nucolwidth - 3
+    let foldedlinecount = v:foldend - v:foldstart
+
+    " expand tabs into spaces
+    let onetab = strpart('          ', 0, &tabstop)
+    let line = substitute(line, '\t', onetab, 'g')
+
+    let line = strpart(line, 0, windowwidth - 2 -len(foldedlinecount))
+    let fillcharcount = windowwidth - len(line) - len(foldedlinecount) - 4
+    return line . '…' . repeat(" ",fillcharcount) . foldedlinecount . '…' . ' '
+endfunction
+
+function! GetBlockIndent(lnum)
+    " Auxiliary function; determines the indent level of the surrounding def/class
+    " "global" lines are level 0, first def &shiftwidth, and so on
+    " scan backwards for class/def that is shallower or equal
+    let ind = 100
+    let p = a:lnum+1
+    while indent(p) >= 0
+        let p = p - 1
+        " skip empty and comment lines
+        if getline(p) =~ '^$\|^\s*#' | continue
+        " zero-level regular line
+        elseif indent(p) == 0 | return 0
+        " skip deeper or equal lines
+        elseif indent(p) >= ind || getline(p) =~ '^$\|^\s*#' | continue
+        " indent is strictly less at this point: check for def/class
+        elseif getline(p) =~ s:defpat && getline(p) !~ '^\s*@'
+            " level is one more than this def/class
+            return indent(p) + &shiftwidth
+        endif
+        " shallower line that is neither class nor def: continue search at new level
+        let ind = indent(p)
+    endwhile
+    "beginning of file
+    return 0
+endfunction
+
+" Clever debug code, use as: call PrintIfCount(n,"Line: ".a:lnum.", value: ".x)
+let s:counter=0
+function! PrintIfCount(n,t)
+    "Print text the nth time this function is called
+    let s:counter = s:counter+1
+    if s:counter==a:n | echo a:t
+    endif
+endfunction
+
+function! GetPythonFold(lnum)
+    " Determine folding level in Python source (see "higher foldlevel theory" below)
+    let line = getline(a:lnum)
+    let ind = indent(a:lnum)
+    " Case D***: class and def start a fold
+    " If previous line is @, it is not the first
+    if line =~ s:defpat && getline(prevnonblank(a:lnum-1)) !~ '^\s*@'
+        " let's see if this range of 0 or more @'s end in a class/def
+        let n = a:lnum
+        while getline(n) =~ '^\s*@' | let n = nextnonblank(n + 1)
+        endwhile
+        " yes, we have a match: this is the first of a real def/class with decorators
+        if getline(n) =~ s:defpat
+            return ">".(ind/&shiftwidth+1)
+        endif
+    " Case E***: empty lines fold with previous
+    " (***) change '=' to -1 if you want empty lines/comment out of a fold
+    elseif line == '' && getline(a:lnum-1) == '' | return '-1'
+    elseif line == '' && getline(a:lnum-1) != '' | return '='
+    endif
+    " now we need the indent from previous
+    let p = prevnonblank(a:lnum-1)
+    while p>0 && getline(p) =~ '^\s*#' | let p = prevnonblank(p-1)
+    endwhile
+    let pind = indent(p)
+    " If previous was definition: count as one level deeper
+    if getline(p) =~ s:defpat && getline(prevnonblank(a:lnum - 1)) !~ '^\s*@'
+        let pind = pind + &shiftwidth
+    " if begin of file: take zero
+    elseif p==0 | let pind = 0
+    endif
+    " Case S*=* and C*=*: indent equal
+    if ind>0 && ind==pind | return '='
+    " Case S*>* and C*>*: indent increase
+    elseif ind>pind | return '='
+    " All cases with 0 indent
+    elseif ind==0
+        " Case C*=0*: separate global code blocks
+        if pind==0 && line =~ '^#' | return 0
+        " Case S*<0* and S*=0*: global code
+        elseif line !~'^#'
+            " Case S*<0*: new global statement if/while/for/try/with
+            if 0<pind && line!~'^else\s*:\|^except.*:\|^elif.*:\|^finally\s*:' | return '>1'
+            " Case S*=0*, after level 0 comment
+            elseif 0==pind && getline(prevnonblank(a:lnum-1)) =~ '^\s*#' | return '>1'
+            " Case S*=0*, other, stay 1
+            else | return '='
+            endif
+        endif
+        " Case C*<0= and C*<0<: compute next indent
+        let n = nextnonblank(a:lnum+1)
+        while n>0 && getline(n) =~'^\s*#' | let n = nextnonblank(n+1)
+        endwhile
+        " Case C*<0=: split definitions
+        if indent(n)==0 | return 0
+        " Case C*<0<: shallow comment
+        else | return -1
+        end
+    endif
+    " now we really need to compute the actual fold indent
+    " do the hard computation
+    let blockindent = GetBlockIndent(a:lnum)
+    " Case SG<* and CG<*: global code, level 1
+    if blockindent==0 | return 1
+    endif
+    " now we need the indent from next
+    let n = nextnonblank(a:lnum+1)
+    while n>0 && getline(n) =~'^\s*#' | let n = nextnonblank(n+1)
+    endwhile
+    let nind = indent(n)
+    " Case CR<= and CR<>
+    "if line !~ '^\s*#' | call PrintIfCount(4,"Line: ".a:lnum.", blockindent: ".blockindent.", n: ".n.", nind: ".nind.", p: ".p.", pind: ".pind)
+    endif
+    if line =~ '^\s*#' && ind>=nind | return -1
+    " Case CR<<: return next indent
+    elseif line =~ '^\s*#' | return nind / &shiftwidth
+    " Case SR<*: return actual indent
+    else | return blockindent / &shiftwidth
+    endif
+endfunction
+
+" higher foldlevel theory
+" There are five kinds of statements: S (code), D (def/class), E (empty), C (comment)
+
+" Note that a decorator statement (beginning with @) counts as definition,
+" but that of a sequence of @,@,@,def only the first one counts
+" This means that a definiion only counts if not preceded by a decorator
+
+" There are two kinds of folds: R (regular), G (global statements)
+
+" There are five indent situations with respect to the previous non-emtpy non-comment line:
+" > (indent), < (dedent), = (same); < and = combine with 0 (indent is zero)
+" Note: if the previous line is class/def, its indent is interpreted as one higher
+
+" There are three indent situations with respect to the next (non-E non-C) line:
+" > (dedent), < (indent), = (same)
+
+" Situations (in order of the script):
+" stat  fold prev   next
+" SDEC  RG   ><=00  ><=
+" D     *    *      *     begin fold level if previous is not @: '>'.ind/&sw+1
+" E     *    *      *     keep with previous: '='
+" S     *    =      *     stays the same: '='
+" C     *    =      *     combine with previous: '='
+" S     *    >      *     stays the same: '='
+" C     *    >      *     combine with previous: '='
+" C     *    =0     *     separate blocks: 0
+" S     *    <0     *     becomes new level 1: >1 (except except/else: 1)
+" S     *    =0     *     stays 1: '=' (after level 0 comment: '>1')
+" C     *    <0     =     split definitions: 0
+" C     *    <0     <     shallow comment: -1
+" C     *    <0     >     [never occurs]
+" S     G    <      *     global, not the first: 1
+" C     G    <      *     indent isn't 0: 1
+" C     R    <      =     foldlevel as computed for next line: -1
+" C     R    <      >     foldlevel as computed for next line: -1
+" S     R    <      *     compute foldlevel the hard way: use function
+" C     R    <      <     foldlevel as computed for this line: use function
--- a/vim/plugin/BufClose.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-" BufClose.vim  -  Close a buffer without closing the window it's in.
-"
-" Copyright February 2003 by Christian J. Robinson <infynity@onewest.net>
-"
-" Distributed under the terms of the Vim license.  See ":help license".
-
-" Usage:
-"
-" :BufClose[!] [buffer]
-"
-" Without any arguments the current buffer in the current window is closed.
-" With an argument that buffer is closed if it exists and is currently being
-" displayed in a window.
-"
-" The buffer argument can be a buffer name or number.
-"
-" In both cases if the buffer is modified you have to use ! or an error will
-" be issued and the buffer will be left loaded.
-"
-" Configuration:
-"
-" g:BufClose_AltBuffer
-"
-" Set this variable if you don't want a blank buffer to be loaded in place of
-" the buffer being closed.  Examples:
-"
-"   :let g:BufClose_AltBuffer = '#'
-"
-" This will cause :BufClose to load the alternate buffer.  See ":help :_#".
-"
-"   :let g:BufClose_AltBuffer = '.'
-"
-" This will cause :BufClose to load the current directory in the file
-" explorer.
-
-command! -nargs=? -complete=buffer -bang BufClose
-    \ :call BufClose(expand('<args>'), expand('<bang>'))
-
-function! BufClose(buffer, bang)
-    if a:buffer == ''
-		" No buffer provided, use current buffer in the current window.
-        let buffer = bufnr('%')
-	elseif (a:buffer + 0) > 0
-		" A buffer number was provided.
-        let buffer = bufnr(a:buffer + 0)
-	else
-		" A buffer name was provided.
-        let buffer = bufnr(a:buffer)
-    endif
-
-    if buffer == -1
-        echohl ErrorMsg
-        echomsg "No matching buffer for" a:buffer
-        echohl None
-        return
-    endif
-
-    let current_window = winnr()
-    let buffer_window = bufwinnr(buffer)
-
-    if buffer_window == -1
-        echohl ErrorMsg
-        echomsg "Buffer" buffer "isn't open in any windows."
-        echohl None
-        return
-    endif
-
-    if a:bang == '' && getbufvar(buffer, '&modified')
-        echohl ErrorMsg
-        echomsg 'No write since last change for buffer'
-            \ buffer '(add ! to override)'
-        echohl None
-        return
-    endif
-
-	" Move to the proper window if necessary, open a blank buffer,
-    " then move back to the original window...
-    if buffer_window >= 0
-		if current_window == buffer_window
-            if exists('g:BufClose_AltBuffer')
-                exe 'e' . a:bang . ' ' . g:BufClose_AltBuffer
-            else
-                exe 'enew' . a:bang
-            endif
-		else
-			exe 'norm ' . buffer_window . "\<C-w>w"
-            if exists('g:BufClose_AltBuffer')
-                exe 'e' . a:bang . ' ' . g:BufClose_AltBuffer
-            else
-                exe 'enew' . a:bang
-            endif
-			exe 'norm ' . current_window . "\<C-w>w"
-		endif
-    endif
-
-	" ...and delete the specified buffer.
-    silent exe 'bdel' . a:bang . ' ' . buffer
-endfunction
--- a/vim/plugin/hexHighlight.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-"gvim plugin for highlighting hex codes to help with tweaking colors
-"Last Change: 2010 Jan 21
-"Maintainer: Yuri Feldman <feldman.yuri1@gmail.com>
-"License: WTFPL - Do What The Fuck You Want To Public License.
-"Email me if you'd like.
-let s:HexColored = 0
-let s:HexColors = []
-
-map <Leader><F2> :call HexHighlight()<Return>
-function! HexHighlight()
-    if has("gui_running")
-        if s:HexColored == 0
-            let hexGroup = 4
-            let lineNumber = 0
-            while lineNumber <= line("$")
-                let currentLine = getline(lineNumber)
-                let hexLineMatch = 1
-                while match(currentLine, '#\x\{6}', 0, hexLineMatch) != -1
-                    let hexMatch = matchstr(currentLine, '#\x\{6}', 0, hexLineMatch)
-                    exe 'hi hexColor'.hexGroup.' guifg='.hexMatch.' guibg='.hexMatch
-                    exe 'let m = matchadd("hexColor'.hexGroup.'", "'.hexMatch.'", 25, '.hexGroup.')'
-                    let s:HexColors += ['hexColor'.hexGroup]
-                    let hexGroup += 1
-                    let hexLineMatch += 1
-                endwhile
-                let lineNumber += 1
-            endwhile
-            unlet lineNumber hexGroup
-            let s:HexColored = 1
-            echo "Highlighting hex colors..."
-        elseif s:HexColored == 1
-            for hexColor in s:HexColors
-                exe 'highlight clear '.hexColor
-            endfor
-            call clearmatches()
-            let s:HexColored = 0
-            echo "Unhighlighting hex colors..."
-        endif
-    else
-        echo "hexHighlight only works with a graphical version of vim"
-    endif
-endfunction
--- a/vim/plugin/slime.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-function Send_to_Screen(text)
-  if !exists("g:screen_sessionname") || !exists("g:screen_windowname")
-    call Screen_Vars()
-  end
-
-  echo system("screen -S " . g:screen_sessionname . " -p " . g:screen_windowname . " -X stuff '" . substitute(a:text, "'", "'\\\\''", 'g') . "'")
-endfunction
-
-function Screen_Session_Names(A,L,P)
-  return system("screen -ls | awk '/Attached/ {print $1}'")
-endfunction
-
-function Screen_Vars()
-  if !exists("g:screen_sessionname") || !exists("g:screen_windowname")
-    let g:screen_sessionname = "slime"
-    let g:screen_windowname = "0"
-  end
-
-  "let g:screen_sessionname = input("session name: ", "", "custom,Screen_Session_Names")
-  "let g:screen_windowname = input("window name: ", g:screen_windowname)
-endfunction
-
-""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-vmap <C-c><C-c> "ry:call Send_to_Screen(@r."\n")<CR>
-nmap <C-c><C-c> vip<C-c><C-c>
-
-nmap <C-c>v :call Screen_Vars()<CR>
--- a/vim/syntax/scss.vim	Wed Feb 02 14:07:42 2011 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-" Vim syntax file
-" Language: SCSS (Sassy CSS)
-" Author: Daniel Hofstetter (daniel.hofstetter@42dh.com)
-" Inspired by the syntax files for sass and css. Thanks to the authors of
-" those files!
-
-if exists("b:current_syntax")
-  finish
-endif
-
-runtime! syntax/css.vim
-
-syn case ignore
-
-syn region scssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssUrl,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,scssDefinition,scssComment,scssIdChar,scssClassChar,scssAmpersand,scssVariable,scssInclude,scssExtend,scssDebug,scssWarn,@scssControl,scssInterpolation,scssNestedSelector
-
-syn region scssInterpolation start="#{" end="}" contains=scssVariable
-
-syn match scssVariable "$[[:alnum:]_-]\+" nextgroup=scssVariableAssignment
-syn match scssVariableAssignment ":" contained nextgroup=scssVariableValue
-syn match scssVariableValue ".*;"me=e-1 contained contains=scssVariable,scssOperator,scssDefault "me=e-1 means that the last char of the pattern is not highlighted
-syn match scssMixin "^@mixin" nextgroup=scssMixinName
-syn match scssMixinName " [[:alnum:]_-]\+" contained nextgroup=scssDefinition
-syn match scssInclude "@include" nextgroup=scssMixinName
-syn match scssExtend "@extend .*[;}]"me=e-1 contains=cssTagName,scssIdChar,scssClassChar
-
-syn match scssColor "#[0-9A-Fa-f]\{3\}\>" contained
-syn match scssColor "#[0-9A-Fa-f]\{6\}\>" contained
-
-syn match scssIdChar "#[[:alnum:]_-]\@=" nextgroup=scssId contains=scssColor
-syn match scssId "[[:alnum:]_-]\+" contained
-syn match scssClassChar "\.[[:alnum:]_-]\@=" nextgroup=scssClass
-syn match scssClass "[[:alnum:]_-]\+" contained
-syn match scssAmpersand "&" nextgroup=cssPseudoClass
-
-syn match scssOperator "+" contained
-syn match scssOperator "-" contained
-syn match scssOperator "/" contained
-syn match scssOperator "*" contained
-
-syn match scssNestedSelector "[^/]* {"me=e-1 contained contains=cssTagName,scssIdChar,scssClassChar,scssAmpersand,scssVariable,scssMixin,@scssControl,scssInterpolation,scssNestedProperty
-syn match scssNestedProperty "[[:alnum:]]\+:"me=e-1 contained
-
-syn match scssDebug "@debug"
-syn match scssWarn "@warn"
-syn match scssDefault "!default" contained
-
-syn match scssIf "@if"
-syn match scssElse "@else"
-syn match scssElseIf "@else if"
-syn match scssWhile "@while"
-syn match scssFor "@for" nextgroup=scssVariable
-syn match scssFrom " from "
-syn match scssTo " to "
-syn match scssThrough " through "
-syn cluster scssControl contains=scssIf,scssElse,scssElseIf,scssWhile,scssFor,scssFrom,scssTo,scssThrough
-
-syn match scssComment "//.*$" contains=@Spell
-
-hi def link scssVariable  Identifier
-hi def link scssVariableValue Constant
-hi def link scssMixin	  PreProc
-hi def link scssMixinName Function
-hi def link scssInclude	  PreProc
-hi def link scssExtend	  PreProc
-hi def link scssComment	  Comment
-hi def link scssColor     Constant
-hi def link scssIdChar	  Special
-hi def link scssClassChar Special
-hi def link scssId	  Identifier
-hi def link scssClass	  Identifier
-hi def link scssAmpersand Character
-hi def link scssNestedProperty Type
-hi def link scssDebug	  Debug
-hi def link scssWarn	  Debug
-hi def link scssDefault   Special
-hi def link scssIf	  Conditional
-hi def link scssElse	  Conditional
-hi def link scssElseIf	  Conditional
-hi def link scssWhile	  Repeat
-hi def link scssFor	  Repeat
-hi def link scssFrom	  Repeat
-hi def link scssTo	  Repeat
-hi def link scssThrough	  Repeat
-hi def link scssInterpolation Delimiter
-
-let b:current_syntax = "scss"
\ No newline at end of file