--- 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