Mercurial > public > dotfiles
changeset 0:48859d9c82c5
Initial commit, based on settings used at work (minus NERD tree & some
tagging plugins).
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Tue, 03 Jan 2012 20:53:13 -0600 |
parents | |
children | 67f01a4cac4c |
files | vim/.vimrc vim/vimfiles/after/ftplugin/python.vim vim/vimfiles/autoload/ctrlp.vim vim/vimfiles/autoload/ctrlp/dir.vim vim/vimfiles/autoload/ctrlp/line.vim vim/vimfiles/autoload/ctrlp/mrufiles.vim vim/vimfiles/autoload/ctrlp/quickfix.vim vim/vimfiles/autoload/ctrlp/tag.vim vim/vimfiles/autoload/ctrlp/utils.vim vim/vimfiles/colors/Dark.vim vim/vimfiles/colors/peaksea.vim vim/vimfiles/colors/peaksea2.vim vim/vimfiles/doc/ctrlp.txt vim/vimfiles/ftdetect/hut.vim vim/vimfiles/plugin/ctrlp.vim |
diffstat | 15 files changed, 3831 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/.vimrc Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,68 @@ +set nocompatible +"source $VIMRUNTIME/vimrc_example.vim +"source $VIMRUNTIME/mswin.vim +"behave mswin + +set nobackup +set tabstop=3 +set shiftwidth=3 +set backspace=indent,eol,start +set expandtab +set textwidth=120 +set number +set ruler +set history=1000 +set encoding=utf-8 + +" CtrlP related settings +set wildignore+=.git\*,.hg\*,.svn\*,*.d,*.dbo,*.o,*.ti + +" This allows % to toggle on if/elsif/else/end, XML tags, & more +runtime macros/matchit.vim + +" These two options make /-style searching case-sensitive only if there +" is a capital letter in the search expression. +set ignorecase +set smartcase + +" Sets the terminal title when run in an xterm +set title + +" This puts more context around the cursor when scrolling +set scrolloff=3 + +" let g:netrw_sort_sequence = "[\/]$,*,\.bak$,\.o$,\.info$,\.swp$,\.obj$" + +syntax on +filetype on +filetype plugin on +filetype indent on +set hlsearch +set incsearch + +" highlight trailing spaces +let c_space_errors = 1 +" let python_space_error_highlight = 1 + +colorscheme peaksea2 + +" shortcut for word completion in insert mode +imap <S-Tab> <C-n> + +" buffer next and previous commands +nnoremap <Tab> :bnext<CR> +nnoremap <S-Tab> :bprevious<CR> + +" Remove extra trailing spaces +nnoremap <F2> :%s/\s\+$//<CR> + +setlocal spell spelllang=en_us + +let mapleader="," + +" ,/ will clear any highlighted search results +nmap <silent> ,/ :let @/=""<CR> + +" NERD tree plugin +" nmap ,n :NERDTreeToggle<CR> +" let g:NERDTreeQuitOnOpen=1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/after/ftplugin/python.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,4 @@ +setlocal sw=4 +setlocal ts=4 +setlocal tw=80 +let python_space_errors=1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/autoload/ctrlp.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,1323 @@ +" ============================================================================= +" File: autoload/ctrlp.vim +" Description: Fuzzy file, buffer, mru and tag finder. +" Author: Kien Nguyen <github.com/kien> +" Version: 1.6.4 +" ============================================================================= + +" Static variables {{{1 +fu! s:opts() + let hst = exists('+hi') ? &hi : 20 + let opts = { + \ 'g:ctrlp_by_filename': ['s:byfname', 0], + \ 'g:ctrlp_clear_cache_on_exit': ['s:clrex', 1], + \ 'g:ctrlp_dont_split': ['s:nosplit', ''], + \ 'g:ctrlp_dotfiles': ['s:dotfiles', 1], + \ 'g:ctrlp_extensions': ['s:extensions', []], + \ 'g:ctrlp_follow_symlinks': ['s:folsym', 0], + \ 'g:ctrlp_highlight_match': ['s:mathi', [1, 'Identifier']], + \ 'g:ctrlp_lazy_update': ['s:lazy', 0], + \ 'g:ctrlp_jump_to_buffer': ['s:jmptobuf', 1], + \ 'g:ctrlp_match_window_bottom': ['s:mwbottom', 1], + \ 'g:ctrlp_match_window_reversed': ['s:mwreverse', 1], + \ 'g:ctrlp_max_depth': ['s:maxdepth', 40], + \ 'g:ctrlp_max_files': ['s:maxfiles', 20000], + \ 'g:ctrlp_max_height': ['s:mxheight', 10], + \ 'g:ctrlp_max_history': ['s:maxhst', hst], + \ 'g:ctrlp_open_multi': ['s:opmul', '1v'], + \ 'g:ctrlp_open_new_file': ['s:newfop', 3], + \ 'g:ctrlp_prompt_mappings': ['s:urprtmaps', 0], + \ 'g:ctrlp_regexp_search': ['s:regexp', 0], + \ 'g:ctrlp_root_markers': ['s:rmarkers', []], + \ 'g:ctrlp_split_window': ['s:splitwin', 0], + \ 'g:ctrlp_use_caching': ['s:caching', 1], + \ 'g:ctrlp_use_migemo': ['s:migemo', 0], + \ 'g:ctrlp_user_command': ['s:usrcmd', ''], + \ 'g:ctrlp_working_path_mode': ['s:pathmode', 2], + \ } + for [ke, va] in items(opts) + exe 'let' va[0] '=' string(exists(ke) ? eval(ke) : va[1]) + endfo + if !exists('g:ctrlp_newcache') | let g:ctrlp_newcache = 0 | en + let s:glob = s:dotfiles ? '.*\|*' : '*' + let s:maxdepth = min([s:maxdepth, 100]) + let g:ctrlp_builtins = 2 + if !empty(s:extensions) | for each in s:extensions + exe 'ru autoload/ctrlp/'.each.'.vim' + endfo | en +endf +cal s:opts() + +let s:lash = ctrlp#utils#lash() + +" Global options +let s:glbs = { 'magic': 1, 'to': 1, 'tm': 0, 'sb': 1, 'hls': 0, 'im': 0, + \ 'report': 9999, 'sc': 0, 'ss': 0, 'siso': 0, 'mfd': 200, 'mouse': 'n', + \ 'gcr': 'a:block-PmenuSel-blinkon0' } + +if s:lazy + cal extend(s:glbs, { 'ut': ( s:lazy > 1 ? s:lazy : 250 ) }) +en + +" Limiters +let [s:compare_lim, s:nocache_lim, s:mltipats_lim] = [3000, 4000, 2000] +" * Open & Close {{{1 +fu! s:Open() + let [s:cwd, s:winres] = [getcwd(), winrestcmd()] + let [s:crfile, s:crfpath] = [expand('%:p', 1), expand('%:p:h', 1)] + let [s:crword, s:crline] = [expand('<cword>'), getline('.')] + let [s:tagfiles, s:crcursor] = [s:tagfiles(), getpos('.')] + let [s:crbufnr, s:crvisual] = [bufnr('%'), s:lastvisual()] + let s:currwin = s:mwbottom ? winnr() : winnr() + has('autocmd') + sil! exe s:mwbottom ? 'bo' : 'to' '1new ControlP' + let [s:bufnr, s:prompt] = [bufnr('%'), ['', '', '']] + abc <buffer> + if !exists('s:hstry') + let hst = filereadable(s:gethistloc()[1]) ? s:gethistdata() : [''] + let s:hstry = empty(hst) || !s:maxhst ? [''] : hst + en + for [ke, va] in items(s:glbs) + sil! exe 'let s:glb_'.ke.' = &'.ke.' | let &'.ke.' = '.string(va) + endfo + if s:opmul && has('signs') + sign define ctrlpmark text=+> texthl=Search + en + cal s:setupblank() +endf + +fu! s:Close() + try | bun! | cat | clo! | endt + cal s:unmarksigns() + for key in keys(s:glbs) + sil! exe 'let &'.key.' = s:glb_'.key + endfo + if exists('s:glb_acd') | let &acd = s:glb_acd | en + let [g:ctrlp_lines, g:ctrlp_allfiles] = [[], []] + exe s:winres + unl! s:focus s:hisidx s:hstgot s:marked s:statypes s:cline s:init s:savestr + \ s:crfile s:crfpath s:crword s:crvisual s:tagfiles s:crline s:crcursor + \ g:ctrlp_nolimit s:crbufnr + cal ctrlp#recordhist() + ec +endf +" * Clear caches {{{1 +fu! ctrlp#clr(...) + exe 'let g:ctrlp_new'.( exists('a:1') ? a:1 : 'cache' ).' = 1' +endf + +fu! ctrlp#clra(...) + if !exists('a:1') && ( has('dialog_gui') || has('dialog_con') ) && + \ confirm("Delete all cache files?", "&OK\n&Cancel") != 1 | retu | en + let cache_dir = ctrlp#utils#cachedir() + if isdirectory(cache_dir) + let cache_files = split(s:glbpath(cache_dir, '**', 1), "\n") + cal filter(cache_files, '!isdirectory(v:val) && v:val !~ ''\<cache\.txt$''') + sil! cal map(cache_files, 'delete(v:val)') + en + cal ctrlp#clr() +endf + +fu! ctrlp#reset() + if ( has('dialog_gui') || has('dialog_con') ) && + \ confirm("Reset and apply new options?", "&OK\n&Cancel") != 1 | retu | en + cal s:opts() + cal ctrlp#utils#opts() + cal ctrlp#mrufiles#opts() + unl! s:cline +endf +" * Files() {{{1 +fu! s:GlobPath(dirs, allfiles, depth) + let entries = split(globpath(a:dirs, s:glob), "\n") + if !s:folsym + let entries = filter(entries, 'getftype(v:val) != "link"') + en + let g:ctrlp_allfiles = filter(copy(entries), '!isdirectory(v:val)') + let ftrfunc = s:dotfiles ? 'ctrlp#dirfilter(v:val)' : 'isdirectory(v:val)' + let alldirs = filter(entries, ftrfunc) + cal extend(g:ctrlp_allfiles, a:allfiles, 0) + let depth = a:depth + 1 + if !empty(alldirs) && !s:maxfiles(len(g:ctrlp_allfiles)) && depth <= s:maxdepth + sil! cal ctrlp#progress(len(g:ctrlp_allfiles)) + cal s:GlobPath(join(alldirs, ','), g:ctrlp_allfiles, depth) + en +endf + +fu! s:UserCommand(path, lscmd) + let path = a:path + if exists('+ssl') && &ssl + let [ssl, &ssl, path] = [&ssl, 0, tr(path, '/', '\')] + en + let path = exists('*shellescape') ? shellescape(path) : path + let g:ctrlp_allfiles = split(system(printf(a:lscmd, path)), "\n") + if exists('+ssl') && exists('ssl') + let &ssl = ssl + cal map(g:ctrlp_allfiles, 'tr(v:val, "\\", "/")') + en + if exists('s:vcscmd') && s:vcscmd + cal map(g:ctrlp_allfiles, 'tr(v:val, "/", "\\")') + en +endf + +fu! s:Files() + let [cwd, cache_file] = [getcwd(), ctrlp#utils#cachefile()] + if g:ctrlp_newcache || !filereadable(cache_file) || !s:caching + let lscmd = s:lscommand() + " Get the list of files + if empty(lscmd) + cal s:GlobPath(cwd, [], 0) + el + sil! cal ctrlp#progress('Waiting...') + try | cal s:UserCommand(cwd, lscmd) | cat | retu [] | endt + en + " Remove base directory + cal ctrlp#rmbasedir(g:ctrlp_allfiles) + let read_cache = 0 + el + let g:ctrlp_allfiles = ctrlp#utils#readfile(cache_file) + let read_cache = 1 + en + if len(g:ctrlp_allfiles) <= s:compare_lim + cal sort(g:ctrlp_allfiles, 'ctrlp#complen') + en + cal s:writecache(read_cache, cache_file) + retu g:ctrlp_allfiles +endf +fu! s:Buffers() "{{{1 + let allbufs = [] + for each in range(1, bufnr('$')) + if getbufvar(each, '&bl') && each != bufnr('#') + let bufname = bufname(each) + if strlen(bufname) && getbufvar(each, '&ma') && bufname != 'ControlP' + cal add(allbufs, fnamemodify(bufname, ':p')) + en + en + endfo + retu allbufs +endf +" * MatchedItems() {{{1 +fu! s:MatchIt(items, pat, limit, ispathitem) + let [items, pat, limit, newitems] = [a:items, a:pat, a:limit, []] + let mfunc = s:byfname && a:ispathitem ? 's:matchfname' + \ : s:itemtype > 2 && len(items) < 30000 && !a:ispathitem ? 's:matchtab' + \ : 'match' + for item in items + if call(mfunc, [item, pat]) >= 0 | cal add(newitems, item) | en + if limit > 0 && len(newitems) >= limit | brea | en + endfo + retu newitems +endf + +fu! s:MatchedItems(items, pats, limit) + let [items, pats, limit, ipt] = [a:items, a:pats, a:limit, s:ispathitem()] + " If items is longer than s:mltipats_lim, use only the last pattern + if len(items) >= s:mltipats_lim | let pats = [pats[-1]] | en + cal map(pats, 'substitute(v:val, "\\\~", "\\\\\\~", "g")') + if !s:regexp | cal map(pats, 'escape(v:val, ".")') | en + " Loop through the patterns + for each in pats + " If newitems is small, set it as items to search in + if exists('newitems') && len(newitems) < limit + let items = copy(newitems) + en + if empty(items) " End here + retu exists('newitems') ? newitems : [] + el " Start here, go back up if have 2 or more in pats + " Loop through the items + let newitems = s:MatchIt(items, each, limit, ipt) + en + endfo + let s:matches = len(newitems) + retu newitems +endf +fu! s:SplitPattern(str, ...) "{{{1 + let str = s:sanstail(a:str) + if s:migemo && s:regexp && len(str) > 0 && executable('cmigemo') + let dict = s:glbpath(&rtp, printf("dict/%s/migemo-dict", &encoding), 1) + if !len(dict) + let dict = s:glbpath(&rtp, "dict/migemo-dict", 1) + en + if len(dict) + let [tokens, str, cmd] = [split(str, '\s'), '', 'cmigemo -v -w %s -d %s'] + for token in tokens + let rtn = system(printf(cmd, shellescape(token), shellescape(dict))) + let str .= !v:shell_error && len(rtn) > 0 ? '.*'.rtn : token + endfo + en + en + let s:savestr = str + if s:regexp || match(str, '\\\(zs\|ze\|<\|>\)\|[*|]') >= 0 + let array = [s:regexfilter(str)] + el + let array = split(str, '\zs') + if exists('+ssl') && !&ssl + cal map(array, 'substitute(v:val, "\\", "\\\\\\", "g")') + en + " Literal ^ and $ + for each in ['^', '$'] + cal map(array, 'substitute(v:val, "\\\'.each.'", "\\\\\\'.each.'", "g")') + endfo + en + " Build the new pattern + let nitem = !empty(array) ? array[0] : '' + let newpats = [nitem] + if len(array) > 1 + for item in range(1, len(array) - 1) + " Separator + let sep = exists('a:1') ? a:1 : '[^'.array[item-1].']\{-}' + let nitem .= sep.array[item] + cal add(newpats, nitem) + endfo + en + retu newpats +endf +" * BuildPrompt() {{{1 +fu! s:Render(lines, pat) + let lines = a:lines + " Setup the match window + let s:height = min([len(lines), s:mxheight]) + sil! exe '%d _ | res' s:height + " Print the new items + if empty(lines) + setl nocul + cal setline(1, ' == NO ENTRIES ==') + cal s:unmarksigns() + if s:dohighlight() | cal clearmatches() | en + retu + en + setl cul + " Sort if not MRU + if ( s:itemtype != 2 && !exists('g:ctrlp_nolimit') ) + \ || !empty(join(s:prompt, '')) + let s:compat = a:pat + cal sort(lines, 's:mixedsort') + unl s:compat + en + if s:mwreverse | cal reverse(lines) | en + let s:matched = copy(lines) + cal map(lines, 'substitute(v:val, "^", "> ", "")') + cal setline(1, lines) + exe 'keepj norm!' s:mwreverse ? 'G' : 'gg' + keepj norm! 1| + cal s:unmarksigns() + cal s:remarksigns() + if exists('s:cline') | cal cursor(s:cline, 1) | en + " Highlighting + if s:dohighlight() + cal s:highlight(a:pat, empty(s:mathi[1]) ? 'Identifier' : s:mathi[1]) + en +endf + +fu! s:Update(str) + " Get the previous string if existed + let oldstr = exists('s:savestr') ? s:savestr : '' + let pats = s:SplitPattern(a:str) + " Get the new string sans tail + let notail = substitute(a:str, ':\([^:]\|\\:\)*$', '', 'g') + " Stop if the string's unchanged + if notail == oldstr && !empty(notail) && !exists('s:force') + retu + en + let lines = exists('g:ctrlp_nolimit') && empty(notail) ? copy(g:ctrlp_lines) + \ : s:MatchedItems(g:ctrlp_lines, pats, s:mxheight) + cal s:Render(lines, pats[-1]) +endf + +fu! s:ForceUpdate() + let [estr, prt] = ['"\', copy(s:prompt)] + cal map(prt, 'escape(v:val, estr)') + cal s:Update(join(prt, '')) +endf + +fu! s:BuildPrompt(upd, ...) + let base = ( s:regexp ? 'r' : '>' ).( s:byfname ? 'd' : '>' ).'> ' + let [estr, prt] = ['"\', copy(s:prompt)] + cal map(prt, 'escape(v:val, estr)') + let str = join(prt, '') + let lazy = empty(str) || exists('s:force') || !has('autocmd') ? 0 : s:lazy + if a:upd && ( s:matches || s:regexp || match(str, '[*|]') >= 0 ) && !lazy + sil! cal s:Update(str) + en + sil! cal ctrlp#statusline() + " Toggling + let [hiactive, hicursor, base] = exists('a:1') && !a:1 + \ ? ['Comment', 'Comment', tr(base, '>', '-')] + \ : ['Normal', 'Constant', base] + let hibase = 'Comment' + " Build it + redr + exe 'echoh' hibase '| echon "'.base.'" + \ | echoh' hiactive '| echon "'.prt[0].'" + \ | echoh' hicursor '| echon "'.prt[1].'" + \ | echoh' hiactive '| echon "'.prt[2].'" | echoh None' + " Append the cursor at the end + if empty(prt[1]) && ( !exists('a:1') || ( exists('a:1') && a:1 ) ) + exe 'echoh' hibase '| echon "_" | echoh None' + en +endf +" ** Prt Actions {{{1 +" Editing {{{2 +fu! s:PrtClear() + unl! s:hstgot + let [s:prompt, s:matches] = [['', '', ''], 1] + cal s:BuildPrompt(1) +endf + +fu! s:PrtAdd(char) + unl! s:hstgot + let s:prompt[0] = s:prompt[0] . a:char + cal s:BuildPrompt(1) +endf + +fu! s:PrtBS() + unl! s:hstgot + let [prt, s:matches] = [s:prompt, 1] + let prt[0] = strpart(prt[0], -1, strlen(prt[0])) + cal s:BuildPrompt(1) +endf + +fu! s:PrtDelete() + unl! s:hstgot + let [prt, s:matches] = [s:prompt, 1] + let prt[1] = strpart(prt[2], 0, 1) + let prt[2] = strpart(prt[2], 1) + cal s:BuildPrompt(1) +endf + +fu! s:PrtDeleteWord() + unl! s:hstgot + let [str, s:matches] = [s:prompt[0], 1] + let str = match(str, '\W\w\+$') >= 0 ? matchstr(str, '^.\+\W\ze\w\+$') + \ : match(str, '\w\W\+$') >= 0 ? matchstr(str, '^.\+\w\ze\W\+$') + \ : match(str, '\s\+$') >= 0 ? matchstr(str, '^.*[^ \t]\+\ze\s\+$') + \ : match(str, ' ') <= 0 ? '' : str + let s:prompt[0] = str + cal s:BuildPrompt(1) +endf + +fu! s:PrtInsert(type) + unl! s:hstgot + " Insert current word, search register, last visual and clipboard + let s:prompt[0] .= a:type == 'w' ? s:crword + \ : a:type == 's' ? getreg('/') + \ : a:type == 'v' ? s:crvisual + \ : a:type == '+' ? substitute(getreg('+'), '\n', '\\n', 'g') : s:prompt[0] + cal s:BuildPrompt(1) +endf +" Movement {{{2 +fu! s:PrtCurLeft() + if !empty(s:prompt[0]) + let prt = s:prompt + let prt[2] = prt[1] . prt[2] + let prt[1] = strpart(prt[0], strlen(prt[0]) - 1) + let prt[0] = strpart(prt[0], -1, strlen(prt[0])) + en + cal s:BuildPrompt(0) +endf + +fu! s:PrtCurRight() + let prt = s:prompt + let prt[0] = prt[0] . prt[1] + let prt[1] = strpart(prt[2], 0, 1) + let prt[2] = strpart(prt[2], 1) + cal s:BuildPrompt(0) +endf + +fu! s:PrtCurStart() + let prt = s:prompt + let str = join(prt, '') + let [prt[0], prt[1], prt[2]] = ['', strpart(str, 0, 1), strpart(str, 1)] + cal s:BuildPrompt(0) +endf + +fu! s:PrtCurEnd() + let prt = s:prompt + let [prt[0], prt[1], prt[2]] = [join(prt, ''), '', ''] + cal s:BuildPrompt(0) +endf + +fu! s:PrtSelectMove(dir) + exe 'norm!' a:dir + let s:cline = line('.') + if line('$') > winheight(0) | cal s:BuildPrompt(0, s:Focus()) | en +endf + +fu! s:PrtSelectJump(char, ...) + let lines = copy(s:matched) + if exists('a:1') + cal map(lines, 'split(v:val, ''[\/]\ze[^\/]\+$'')[-1]') + en + " Cycle through matches, use s:jmpchr to store last jump + let chr = escape(a:char, '.~') + if match(lines, '\c^'.chr) >= 0 + " If not exists or does but not for the same char + let pos = match(lines, '\c^'.chr) + if !exists('s:jmpchr') || ( exists('s:jmpchr') && s:jmpchr[0] != chr ) + let [jmpln, s:jmpchr] = [pos, [chr, pos]] + elsei exists('s:jmpchr') && s:jmpchr[0] == chr + " Start of lines + if s:jmpchr[1] == -1 | let s:jmpchr[1] = pos | en + let npos = match(lines, '\c^'.chr, s:jmpchr[1] + 1) + let [jmpln, s:jmpchr] = [npos == -1 ? pos : npos, [chr, npos]] + en + keepj exe jmpln + 1 + let s:cline = line('.') + if line('$') > winheight(0) | cal s:BuildPrompt(0, s:Focus()) | en + en +endf +" Misc {{{2 +fu! s:PrtClearCache() + if s:itemtype == 1 | retu | en + if s:itemtype == 0 + cal ctrlp#clr() + elsei s:itemtype > 2 + cal ctrlp#clr(s:statypes[s:itemtype][1]) + en + if s:itemtype == 2 + let g:ctrlp_lines = ctrlp#mrufiles#list(-1, 1) + el + cal s:SetLines(s:itemtype) + en + let s:force = 1 + cal s:BuildPrompt(1) + unl s:force +endf + +fu! s:PrtDeleteMRU() + if s:itemtype == 2 + let s:force = 1 + let g:ctrlp_lines = ctrlp#mrufiles#list(-1, 2) + cal s:BuildPrompt(1) + unl s:force + en +endf + +fu! s:PrtExit() + if !has('autocmd') | cal s:Close() | en + exe s:currwin.'winc w' +endf + +fu! s:PrtHistory(...) + if !s:maxhst | retu | en + let [str, hst, s:matches] = [join(s:prompt, ''), s:hstry, 1] + " Save to history if not saved before + let [hst[0], hslen] = [exists('s:hstgot') ? hst[0] : str, len(hst)] + let idx = exists('s:hisidx') ? s:hisidx + a:1 : a:1 + " Limit idx within 0 and hslen + let idx = idx < 0 ? 0 : idx >= hslen ? hslen > 1 ? hslen - 1 : 0 : idx + let s:prompt = [hst[idx], '', ''] + let [s:hisidx, s:hstgot, s:force] = [idx, 1, 1] + cal s:BuildPrompt(1) + unl s:force +endf +"}}}1 +" * MapKeys() {{{1 +fu! s:MapKeys(...) + " Normal keys + let pfunc = exists('a:1') && !a:1 ? 'PrtSelectJump' : 'PrtAdd' + let dojmp = s:byfname && pfunc == 'PrtSelectJump' ? ', 1' : '' + for each in range(32, 126) + let cmd = "nn \<buffer> \<silent> \<char-%d> :\<c-u>cal \<SID>%s(\"%s\"%s)\<cr>" + exe printf(cmd, each, pfunc, escape(nr2char(each), '"|\'), dojmp) + endfo + if exists('a:2') | retu | en + " Special keys + cal call('s:MapSpecs', exists('a:1') && !a:1 ? [1] : []) +endf + +fu! s:MapSpecs(...) + let [lcmap, prtmaps] = ['nn <buffer> <silent>', { + \ 'PrtBS()': ['<bs>'], + \ 'PrtDelete()': ['<del>'], + \ 'PrtDeleteWord()': ['<c-w>'], + \ 'PrtClear()': ['<c-u>'], + \ 'PrtSelectMove("j")': ['<c-j>', '<down>'], + \ 'PrtSelectMove("k")': ['<c-k>', '<up>'], + \ 'PrtHistory(-1)': ['<c-n>'], + \ 'PrtHistory(1)': ['<c-p>'], + \ 'AcceptSelection("e")': ['<cr>', '<2-LeftMouse>'], + \ 'AcceptSelection("h")': ['<c-x>', '<c-cr>', '<c-s>'], + \ 'AcceptSelection("t")': ['<c-t>', '<MiddleMouse>'], + \ 'AcceptSelection("v")': ['<c-v>', '<c-q>', '<RightMouse>'], + \ 'ToggleFocus()': ['<tab>'], + \ 'ToggleRegex()': ['<c-r>'], + \ 'ToggleByFname()': ['<c-d>'], + \ 'ToggleType(1)': ['<c-f>', '<c-up'], + \ 'ToggleType(-1)': ['<c-b>', '<c-down>'], + \ 'PrtInsert("w")': ['<F2>'], + \ 'PrtInsert("s")': ['<F3>'], + \ 'PrtInsert("v")': ['<F4>'], + \ 'PrtInsert("+")': ['<F6>'], + \ 'PrtCurStart()': ['<c-a>'], + \ 'PrtCurEnd()': ['<c-e>'], + \ 'PrtCurLeft()': ['<c-h>', '<left>'], + \ 'PrtCurRight()': ['<c-l>', '<right>'], + \ 'PrtClearCache()': ['<F5>'], + \ 'PrtDeleteMRU()': ['<F7>'], + \ 'CreateNewFile()': ['<c-y>'], + \ 'MarkToOpen()': ['<c-z>'], + \ 'OpenMulti()': ['<c-o>'], + \ 'PrtExit()': ['<esc>', '<c-c>', '<c-g>'], + \ }] + if type(s:urprtmaps) == 4 + cal extend(prtmaps, s:urprtmaps) + en + " Correct arrow keys in terminal + if ( has('termresponse') && !empty(v:termresponse) ) + \ || &term =~? 'xterm\|\<k\?vt\|gnome\|screen' + for each in ['\A <up>','\B <down>','\C <right>','\D <left>'] + exe lcmap.' <esc>['.each + endfo + en + if exists('a:1') + let prtunmaps = [ + \ 'PrtBS()', + \ 'PrtDelete()', + \ 'PrtDeleteWord()', + \ 'PrtClear()', + \ 'PrtCurStart()', + \ 'PrtCurEnd()', + \ 'PrtCurLeft()', + \ 'PrtCurRight()', + \ 'PrtHistory(-1)', + \ 'PrtHistory(1)', + \ 'PrtInsert("w")', + \ 'PrtInsert("s")', + \ 'PrtInsert("v")', + \ 'PrtInsert("+")', + \ ] + for ke in prtunmaps | for kp in prtmaps[ke] + exe lcmap kp '<Nop>' + endfo | endfo + el + for [ke, va] in items(prtmaps) | for kp in va + exe lcmap kp ':<c-u>cal <SID>'.ke.'<cr>' + endfo | endfo + en +endf +" * Toggling {{{1 +fu! s:Focus() + retu !exists('s:focus') ? 1 : s:focus +endf + +fu! s:ToggleFocus() + let s:focus = !exists('s:focus') || s:focus ? 0 : 1 + cal s:MapKeys(s:focus) + cal s:BuildPrompt(0, s:focus) +endf + +fu! s:ToggleRegex() + let s:regexp = s:regexp ? 0 : 1 + cal s:PrtSwitcher() +endf + +fu! s:ToggleByFname() + if s:ispathitem() + let s:byfname = s:byfname ? 0 : 1 + cal s:MapKeys(s:Focus(), 1) + cal s:PrtSwitcher() + en +endf + +fu! s:ToggleType(dir) + let ext = exists('g:ctrlp_ext_vars') ? len(g:ctrlp_ext_vars) : 0 + let s:itemtype = s:walker(g:ctrlp_builtins + ext, s:itemtype, a:dir) + let s:extid = s:itemtype - ( g:ctrlp_builtins + 1 ) + unl! g:ctrlp_nolimit + cal s:SetLines(s:itemtype) + cal s:PrtSwitcher() + if s:itemtype > 2 + if exists('g:ctrlp_ext_vars['.s:extid.'][4][0]') + let g:ctrlp_nolimit = g:ctrlp_ext_vars[s:extid][4][0] + en + el + cal s:syntax() + en +endf + +fu! s:PrtSwitcher() + let [s:force, s:matches] = [1, 1] + cal s:BuildPrompt(1, s:Focus()) + unl s:force +endf +fu! s:SetWD(...) "{{{1 + let pathmode = s:pathmode + if exists('a:1') && len(a:1) | if type(a:1) + cal ctrlp#setdir(a:1) | retu + el + let pathmode = a:1 + en | en + if !exists('a:2') + if match(s:crfile, '^\<.\+\>://.*') >= 0 || !pathmode | retu | en + if exists('+acd') | let [s:glb_acd, &acd] = [&acd, 0] | en + cal ctrlp#setdir(s:crfpath) + en + if pathmode == 1 | retu | en + let markers = ['root.dir','.git/','.hg/','.vimprojects','_darcs/','.bzr/'] + if type(s:rmarkers) == 3 && !empty(s:rmarkers) + cal extend(markers, s:rmarkers, 0) + en + for marker in markers + cal s:findroot(getcwd(), marker, 0, 0) + if exists('s:foundroot') | brea | en + endfo + unl! s:foundroot +endf +" * AcceptSelection() {{{1 +fu! ctrlp#acceptfile(mode, matchstr, ...) + let [md, matchstr] = [a:mode, a:matchstr] + " Get the full path + let filpath = s:itemtype ? matchstr : getcwd().s:lash.matchstr + cal s:PrtExit() + let bufnum = bufnr(filpath) + if s:jmptobuf && bufnum > 0 && md == 'e' + let [jmpb, bufwinnr] = [1, bufwinnr(bufnum)] + let buftab = s:jmptobuf > 1 ? s:buftab(bufnum) : [0, 0] + let j2l = a:0 ? a:1 : str2nr(matchstr(s:tail(), '^ +\zs\d\+$')) + en + " Switch to existing buffer or open new one + if exists('jmpb') && buftab[0] + exe 'tabn' buftab[1] + exe buftab[0].'winc w' + if j2l | cal s:j2l(j2l) | en + elsei exists('jmpb') && bufwinnr > 0 + exe bufwinnr.'winc w' + if j2l | cal s:j2l(j2l) | en + el + " Determine the command to use + let cmd = md == 't' || s:splitwin == 1 ? 'tabe' + \ : md == 'h' || s:splitwin == 2 ? 'new' + \ : md == 'v' || s:splitwin == 3 ? 'vne' : ctrlp#normcmd('e') + " Open new window/buffer + cal call('s:openfile', a:0 ? [cmd, filpath, ' +'.a:1] : [cmd, filpath]) + en +endf + +fu! s:AcceptSelection(mode) + if a:mode == 'e' | if s:specinputs() | retu | en | en + " Get the selected line + let matchstr = matchstr(getline('.'), '^> \zs.\+\ze\t*$') + if empty(matchstr) | retu | en + " Do something with it + let actfunc = s:itemtype =~ '0\|1\|2' ? 'ctrlp#acceptfile' + \ : g:ctrlp_ext_vars[s:itemtype - ( g:ctrlp_builtins + 1 )][1] + cal call(actfunc, [a:mode, matchstr]) +endf +fu! s:CreateNewFile() "{{{1 + let str = join(s:prompt, '') + if empty(str) | retu | en + let str = s:sanstail(str) + let arr = split(str, '[\/]') + let fname = remove(arr, -1) + if len(arr) | if isdirectory(s:createparentdirs(arr)) + let optyp = str + en | el + let optyp = fname + en + if exists('optyp') + let filpath = getcwd().s:lash.optyp + cal s:insertcache(str) + cal s:PrtExit() + let cmd = s:newfop == 1 ? 'tabe' + \ : s:newfop == 2 ? 'new' + \ : s:newfop == 3 ? 'vne' : ctrlp#normcmd('e') + cal s:openfile(cmd, filpath) + en +endf +" * OpenMulti() {{{1 +fu! s:MarkToOpen() + if s:bufnr <= 0 || !s:opmul || s:itemtype > g:ctrlp_builtins | retu | en + let matchstr = matchstr(getline('.'), '^> \zs.\+\ze\t*$') + if empty(matchstr) | retu | en + let filpath = s:itemtype ? matchstr : getcwd().s:lash.matchstr + if exists('s:marked') && s:dictindex(s:marked, filpath) > 0 + " Unmark and remove the file from s:marked + let key = s:dictindex(s:marked, filpath) + cal remove(s:marked, key) + if empty(s:marked) | unl! s:marked | en + if has('signs') + exe 'sign unplace' key 'buffer='.s:bufnr + en + el + " Add to s:marked and place a new sign + if exists('s:marked') + let vac = s:vacantdict(s:marked) + let key = empty(vac) ? len(s:marked) + 1 : vac[0] + let s:marked = extend(s:marked, { key : filpath }) + el + let [key, s:marked] = [1, { 1 : filpath }] + en + if has('signs') + exe 'sign place' key 'line='.line('.').' name=ctrlpmark buffer='.s:bufnr + en + en + sil! cal ctrlp#statusline() +endf + +fu! s:OpenMulti() + if !exists('s:marked') || !s:opmul + cal s:AcceptSelection('e') + retu + en + let mkd = s:marked + cal s:PrtExit() + " Try not to open a new tab + let [ntab, norwins] = [0, s:normbuf()] + if empty(norwins) | let ntab = 1 | el + for each in norwins + let bufnr = winbufnr(each) + if !empty(bufname(bufnr)) && !empty(getbufvar(bufnr, '&ft')) + \ && bufname(bufnr) != 'ControlP' + let ntab = 1 + en + endfo + if !ntab | let wnr = min(norwins) | en + en + if ntab | tabnew | en + let [ic, wnr] = [1, exists('wnr') ? wnr : 1] + let cmds = { 'v': 'vne', 'h': 'new', 't': 'tabe' } + let spt = len(s:opmul) > 1 ? cmds[matchstr(s:opmul, '\w$')] : 'vne' + let nr = matchstr(s:opmul, '^\d\+') + exe wnr.'winc w' + for [ke, va] in items(mkd) + let cmd = ic == 1 ? 'e' : spt + cal s:openfile(cmd, va) + if nr > 1 && nr < ic | clo! | el | let ic += 1 | en + endfo +endf +" ** Helper functions {{{1 +" Sorting {{{2 +fu! ctrlp#complen(s1, s2) + " By length + let [len1, len2] = [strlen(a:s1), strlen(a:s2)] + retu len1 == len2 ? 0 : len1 > len2 ? 1 : -1 +endf + +fu! s:compmatlen(s1, s2) + " By match length + let mln1 = s:shortest(s:matchlens(a:s1, s:compat)) + let mln2 = s:shortest(s:matchlens(a:s2, s:compat)) + retu mln1 == mln2 ? 0 : mln1 > mln2 ? 1 : -1 +endf + +fu! s:comptime(s1, s2) + " By last modified time + let [time1, time2] = [getftime(a:s1), getftime(a:s2)] + retu time1 == time2 ? 0 : time1 < time2 ? 1 : -1 +endf + +fu! s:comparent(s1, s2) + " By same parent dir + if match(s:crfpath, escape(getcwd(), '.^$*\')) >= 0 + let [as1, as2] = [getcwd().s:lash.a:s1, getcwd().s:lash.a:s2] + let [loc1, loc2] = [s:getparent(as1), s:getparent(as2)] + if loc1 == s:crfpath && loc2 != s:crfpath | retu -1 | en + if loc2 == s:crfpath && loc1 != s:crfpath | retu 1 | en + retu 0 + en + retu 0 +endf + +fu! s:matchlens(str, pat, ...) + if empty(a:pat) || index(['^','$'], a:pat) >= 0 | retu {} | en + let st = exists('a:1') ? a:1 : 0 + let lens = exists('a:2') ? a:2 : {} + let nr = exists('a:3') ? a:3 : 0 + if match(a:str, a:pat, st) != -1 + let [mst, mnd] = [matchstr(a:str, a:pat, st), matchend(a:str, a:pat, st)] + let lens = extend(lens, { nr : [len(mst), mst] }) + let lens = s:matchlens(a:str, a:pat, mnd, lens, nr + 1) + en + retu lens +endf + +fu! s:shortest(lens) + retu min(map(values(a:lens), 'v:val[0]')) +endf + +fu! s:mixedsort(s1, s2) + let [cml, cln] = [s:compmatlen(a:s1, a:s2), ctrlp#complen(a:s1, a:s2)] + if s:itemtype < 3 && s:height < 51 + let par = s:comparent(a:s1, a:s2) + if s:height < 21 + retu 6 * cml + 3 * par + 2 * s:comptime(a:s1, a:s2) + cln + en + retu 3 * cml + 2 * par + cln + en + retu 2 * cml + cln +endf +" Statusline {{{2 +fu! ctrlp#statusline(...) + if !exists('s:statypes') + let s:statypes = [ + \ ['files', 'fil'], + \ ['buffers', 'buf'], + \ ['mru files', 'mru'], + \ ] + if exists('g:ctrlp_ext_vars') + cal map(copy(g:ctrlp_ext_vars), 'add(s:statypes, [ v:val[2], v:val[3] ])') + en + en + let tps = s:statypes + let max = len(tps) - 1 + let nxt = tps[s:walker(max, s:itemtype, 1)][1] + let prv = tps[s:walker(max, s:itemtype, -1)][1] + let item = tps[s:itemtype][0] + let focus = s:Focus() ? 'prt' : 'win' + let byfname = s:byfname ? 'file' : 'path' + let regex = s:regexp ? '%#LineNr# regex %*' : '' + let focus = '%#LineNr# '.focus.' %*' + let byfname = '%#Character# '.byfname.' %*' + let item = '%#Character# '.item.' %*' + let slider = ' <'.prv.'>={'.item.'}=<'.nxt.'>' + let dir = ' %=%<%#LineNr# '.getcwd().' %*' + let marked = s:opmul ? exists('s:marked') ? ' <'.s:dismrk().'>' : ' <+>' : '' + let &l:stl = focus.byfname.regex.slider.marked.dir +endf + +fu! s:dismrk() + retu has('signs') ? '+'.len(s:marked) : + \ '%<'.join(values(map(copy(s:marked), 'split(v:val, "[\\/]")[-1]')), ', ') +endf + +fu! ctrlp#progress(len) + if has('macunix') || has('mac') | sl 1m | en + let &l:stl = '%#Function# '.a:len.' %* %=%<%#LineNr# '.getcwd().' %*' + redr +endf +" Paths {{{2 +fu! ctrlp#dirfilter(val) + retu isdirectory(a:val) && match(a:val, '[\/]\.\{,2}$') < 0 ? 1 : 0 +endf + +fu! s:ispathitem() + let ext = s:itemtype - ( g:ctrlp_builtins + 1 ) + if s:itemtype < 3 || ( s:itemtype > 2 && g:ctrlp_ext_vars[ext][3] == 'dir' ) + retu 1 + en + retu 0 +endf + +fu! ctrlp#rmbasedir(items) + let path = &ssl || !exists('+ssl') ? getcwd().'/' : + \ substitute(getcwd(), '\\', '\\\\', 'g').'\\' + retu map(a:items, 'substitute(v:val, path, "", "g")') +endf + +fu! s:parentdir(curr) + let parent = s:getparent(a:curr) + if parent != a:curr | cal ctrlp#setdir(parent) | en +endf + +fu! s:getparent(item) + retu split(a:item, '[\/]\ze[^\/]\+[\/:]\?$')[0] +endf + +fu! s:getgrand(item) + retu split(a:item, '[\/]\ze[^\/]\+[\/][^\/]\+[\/:]\?$')[0] +endf + +fu! s:createparentdirs(arr) + for each in a:arr + let curr = exists('curr') ? curr.s:lash.each : each + cal ctrlp#utils#mkdir(curr) + endfo + retu curr +endf + +fu! s:listdirs(path, parent) + let [str, dirs] = ['', split(s:glbpath(a:path, '*', 1), "\n")] + for entry in filter(dirs, 'isdirectory(v:val)') + let str .= a:parent . split(entry, '[\/]')[-1] . "\n" + endfo + retu str +endf + +fu! ctrlp#cpl(A, L, P) + let haslash = match(a:A, '[\/]') + let parent = substitute(a:A, '[^\/]*$', '', 'g') + let path = !haslash ? parent : haslash > 0 ? getcwd().s:lash.parent : getcwd() + retu s:listdirs(path, parent) +endf + +fu! s:findroot(curr, mark, depth, type) + let [depth, notfound] = [a:depth + 1, empty(s:glbpath(a:curr, a:mark, 1))] + if !notfound || depth > s:maxdepth + if notfound | cal ctrlp#setdir(s:cwd) | en + if a:type + let s:vcsroot = depth <= s:maxdepth ? a:curr : '' + el + cal ctrlp#setdir(a:curr) + let s:foundroot = 1 + en + el + let parent = s:getparent(a:curr) + if parent != a:curr | cal s:findroot(parent, a:mark, depth, a:type) | en + en +endf + +fu! s:glbpath(...) + retu call('globpath', v:version > 701 ? a:000 : a:000[:1]) +endf + +fu! ctrlp#fnesc(path) + retu exists('*fnameescape') ? fnameescape(a:path) : escape(a:path, " %#*?|<\"\n") +endf + +fu! ctrlp#setdir(path, ...) + let cmd = exists('a:1') ? a:1 : 'lc!' + try + exe cmd.' '.ctrlp#fnesc(a:path) + cat + cal ctrlp#msg("Can't change working dir. Directory not exists.") + endt +endf +" Highlighting {{{2 +fu! s:syntax() + sy match CtrlPNoEntries '^ == NO ENTRIES ==$' + sy match CtrlPLineMarker '^>' + hi link CtrlPNoEntries Error + hi CtrlPLineMarker guifg=bg +endf + +fu! s:highlight(pat, grp) + cal clearmatches() + if !empty(a:pat) && a:pat != '..' && s:itemtype < 3 + let pat = substitute(a:pat, '\~', '\\~', 'g') + if !s:regexp | let pat = escape(pat, '.') | en + " Match only filename + if s:byfname + let pat = substitute(pat, '\[\^\(.\{-}\)\]\\{-}', '[^\\/\1]\\{-}', 'g') + let pat = substitute(pat, '$', '\\ze[^\\/]*$', 'g') + en + cal matchadd(a:grp, '\c'.pat) + cal matchadd('CtrlPLineMarker', '^>') + en +endf + +fu! s:dohighlight() + retu type(s:mathi) == 3 && len(s:mathi) == 2 && s:mathi[0] + \ && exists('*clearmatches') +endf +" Prompt history {{{2 +fu! s:gethistloc() + let cache_dir = ctrlp#utils#cachedir().s:lash.'hist' + retu [cache_dir, cache_dir.s:lash.'cache.txt'] +endf + +fu! s:gethistdata() + retu ctrlp#utils#readfile(s:gethistloc()[1]) +endf + +fu! ctrlp#recordhist() + let str = join(s:prompt, '') + if empty(str) || !s:maxhst | retu | en + let hst = s:hstry + if len(hst) > 1 && hst[1] == str | retu | en + cal extend(hst, [str], 1) + if len(hst) > s:maxhst | cal remove(hst, s:maxhst, -1) | en +endf +" Signs {{{2 +fu! s:unmarksigns() + if !s:dosigns() | retu | en + for key in keys(s:marked) + exe 'sign unplace' key 'buffer='.s:bufnr + endfo +endf + +fu! s:remarksigns() + if !s:dosigns() | retu | en + let nls = s:matched + for ic in range(1, len(nls)) + let filpath = s:itemtype ? nls[ic - 1] : getcwd().s:lash.nls[ic - 1] + let key = s:dictindex(s:marked, filpath) + if key > 0 + exe 'sign place' key 'line='.ic.' name=ctrlpmark buffer='.s:bufnr + en + endfo +endf + +fu! s:dosigns() + retu exists('s:marked') && s:bufnr > 0 && s:opmul && has('signs') +endf +" Dictionaries {{{2 +fu! s:dictindex(dict, expr) + for key in keys(a:dict) + if a:dict[key] == a:expr | retu key | en + endfo + retu -1 +endf + +fu! s:vacantdict(dict) + retu filter(range(1, max(keys(a:dict))), '!has_key(a:dict, v:val)') +endf +" Buffers {{{2 +fu! s:buftab(bufnum) + for nr in range(1, tabpagenr('$')) + let buflist = tabpagebuflist(nr) + if match(buflist, a:bufnum) >= 0 + let [buftabnr, tabwinnrs] = [nr, tabpagewinnr(nr, '$')] + for ewin in range(1, tabwinnrs) + if buflist[ewin - 1] == a:bufnum + retu [ewin, buftabnr] + en + endfo + en + endfo + retu [0, 0] +endf + +fu! s:normbuf() + let winnrs = [] + for each in range(1, winnr('$')) + let bufnr = winbufnr(each) + if getbufvar(bufnr, '&bl') && empty(getbufvar(bufnr, '&bt')) + \ && getbufvar(bufnr, '&ma') + cal add(winnrs, each) + en + endfo + retu winnrs +endf + +fu! ctrlp#normcmd(cmd) + if !empty(s:nosplit) && match([bufname('%'), &l:ft], s:nosplit) >= 0 + retu a:cmd + en + " Find a regular buffer + let norwins = s:normbuf() + let norwin = empty(norwins) ? 0 : norwins[0] + if norwin + if index(norwins, winnr()) < 0 + exe norwin.'winc w' + en + retu a:cmd + en + retu 'bo vne' +endf + +fu! s:setupblank() + setl noswf nobl nonu nowrap nolist nospell nocuc wfh + setl fdc=0 fdl=99 tw=0 bt=nofile bh=unload + if v:version >= 703 + setl nornu noudf cc=0 + en +endf + +fu! s:leavepre() + if s:clrex && ( !has('clientserver') || + \ ( has('clientserver') && len(split(serverlist(), "\n")) == 1 ) ) + cal ctrlp#clra(1) + en + cal ctrlp#utils#writecache(s:hstry, s:gethistloc()[0], s:gethistloc()[1]) +endf + +fu! s:checkbuf() + if exists('s:init') | retu | en + if exists('s:bufnr') && s:bufnr > 0 + exe s:bufnr.'bw!' + en +endf +" Arguments {{{2 +fu! s:tail() + if exists('s:optail') && !empty('s:optail') + let tailpref = match(s:optail, '^\s*+') < 0 ? ' +' : ' ' + retu tailpref.s:optail + en + retu '' +endf + +fu! s:sanstail(str) + " Restore the number of backslashes + let str = substitute(a:str, '\\\\', '\', 'g') + unl! s:optail + if match(str, ':\([^:]\|\\:\)*$') >= 0 + let s:optail = matchstr(str, ':\zs\([^:]\|\\:\)*$') + retu substitute(str, ':\([^:]\|\\:\)*$', '', 'g') + en + retu str +endf +" Misc {{{2 +fu! s:specinputs() + let str = join(s:prompt, '') + let type = s:itemtype > 2 ? + \ g:ctrlp_ext_vars[s:itemtype - ( g:ctrlp_builtins + 1 )][3] : s:itemtype + if str == '..' && type =~ '0\|dir' + cal s:parentdir(getcwd()) + cal s:SetLines(s:itemtype) + cal s:PrtClear() + retu 1 + elsei ( str == '/' || str == '\' ) && type =~ '0\|dir' + cal s:SetWD(2, 0) + cal s:SetLines(s:itemtype) + cal s:PrtClear() + retu 1 + elsei str == '?' + cal s:PrtExit() + let hlpwin = &columns > 159 ? '| vert res 80' : '' + sil! exe 'bo vert h ctrlp-mappings' hlpwin '| norm! 0' + retu 1 + en + retu 0 +endf + +fu! s:lastvisual() + let cview = winsaveview() + let [ovreg, ovtype] = [getreg('v'), getregtype('v')] + let [oureg, outype] = [getreg('"'), getregtype('"')] + sil! norm! gv"vy + let selected = substitute(getreg('v'), '\n', '\\n', 'g') + cal setreg('v', ovreg, ovtype) + cal setreg('"', oureg, outype) + cal winrestview(cview) + retu selected +endf + +fu! ctrlp#msg(msg) + echoh Identifier | echon "CtrlP: ".a:msg | echoh None +endf + +fu! s:openfile(cmd, filpath, ...) + let cmd = a:cmd == 'e' && &modified ? 'hid e' : a:cmd + let tail = a:0 ? a:1 : s:tail() + try + exe cmd.tail.' '.ctrlp#fnesc(a:filpath) + cat + cal ctrlp#msg("Operation can't be completed. Make sure filename is valid.") + fina + if !empty(tail) + sil! norm! zOzz + en + endt +endf + +fu! s:writecache(read_cache, cache_file) + if !a:read_cache && ( ( g:ctrlp_newcache || !filereadable(a:cache_file) ) + \ && s:caching || len(g:ctrlp_allfiles) > s:nocache_lim ) + if len(g:ctrlp_allfiles) > s:nocache_lim | let s:caching = 1 | en + cal ctrlp#utils#writecache(g:ctrlp_allfiles) + en +endf + +fu! s:j2l(nr) + exe a:nr + sil! norm! zOzz +endf + +fu! s:regexfilter(str) + let str = a:str + let pats = { + \ '^\(\\|\)\|\(\\|\)$': '\\|', + \ '^\\\(zs\|ze\|<\|>\)': '^\\\(zs\|ze\|<\|>\)', + \ '^\S\*$': '\*', + \ '^\S\\?$': '\\?', + \ } + for key in keys(pats) | if match(str, key) >= 0 + let str = substitute(str, pats[key], '', 'g') + en | endfo + retu str +endf + +fu! s:walker(max, pos, dir) + retu a:dir > 0 ? a:pos < a:max ? a:pos + 1 : 0 : a:pos > 0 ? a:pos - 1 : a:max +endf + +fu! s:matchfname(item, pat) + retu match(split(a:item, '[\/]\ze[^\/]\+$')[-1], a:pat) +endf + +fu! s:matchtab(item, pat) + retu match(split(a:item, '\t\+[^\t]\+$')[0], a:pat) +endf + +fu! s:maxfiles(len) + retu s:maxfiles && a:len > s:maxfiles ? 1 : 0 +endf + +fu! s:insertcache(str) + let [data, g:ctrlp_newcache, str] = [g:ctrlp_allfiles, 1, a:str] + if strlen(str) <= strlen(data[0]) + let pos = 0 + elsei strlen(str) >= strlen(data[-1]) + let pos = len(data) - 1 + el + let pos = 0 + for each in data + if strlen(each) > strlen(str) | brea | en + let pos += 1 + endfo + en + cal insert(data, str, pos) + cal s:writecache(0, ctrlp#utils#cachefile()) +endf + +fu! s:lscommand() + let cmd = s:usrcmd + if type(cmd) == 1 + retu cmd + elsei type(cmd) == 3 && len(cmd) >= 2 && !empty(cmd[0]) && !empty(cmd[1]) + let rmarker = cmd[0] + " Find a repo root + cal s:findroot(getcwd(), rmarker, 0, 1) + if !exists('s:vcsroot') || ( exists('s:vcsroot') && empty(s:vcsroot) ) + " Try the secondary_command + retu len(cmd) == 3 ? cmd[2] : '' + en + let s:vcscmd = s:lash == '\' ? 1 : 0 + retu cmd[1] + en +endf +" Extensions {{{2 +fu! s:tagfiles() + retu filter(map(tagfiles(), 'fnamemodify(v:val, ":p")'), 'filereadable(v:val)') +endf + +fu! ctrlp#exit() + cal s:PrtExit() +endf + +fu! ctrlp#prtclear() + cal s:PrtClear() +endf + +fu! ctrlp#setlines(type) + cal s:SetLines(a:type) +endf +"}}}1 +" * Initialization {{{1 +fu! s:SetLines(type) + let s:itemtype = a:type + let types = [ + \ 's:Files()', + \ 's:Buffers()', + \ 'ctrlp#mrufiles#list(-1)', + \ ] + if exists('g:ctrlp_ext_vars') + cal map(copy(g:ctrlp_ext_vars), 'add(types, v:val[0])') + en + let g:ctrlp_lines = eval(types[a:type]) +endf + +fu! ctrlp#init(type, ...) + if exists('s:init') | retu | en + let [s:matches, s:init] = [1, 1] + cal s:Open() + cal s:SetWD(exists('a:1') ? a:1 : '') + cal s:MapKeys() + cal s:SetLines(a:type) + cal s:BuildPrompt(1) + if has('syntax') && exists('g:syntax_on') + cal s:syntax() + en +endf +if has('autocmd') "{{{1 + aug CtrlPAug + au! + au BufEnter ControlP cal s:checkbuf() + au BufLeave ControlP cal s:Close() + au VimLeavePre * cal s:leavepre() + if s:lazy + au CursorHold ControlP cal s:ForceUpdate() + en + aug END +en "}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/autoload/ctrlp/dir.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,95 @@ +" ============================================================================= +" File: autoload/ctrlp/dir.vim +" Description: Directory extension +" Author: Kien Nguyen <github.com/kien> +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_dir') && g:loaded_ctrlp_dir + fini +en +let [g:loaded_ctrlp_dir, g:ctrlp_newdir] = [1, 0] + +let s:ars = [ + \ 's:folsym', + \ 's:dotfiles', + \ 's:maxdepth', + \ 's:maxfiles', + \ 's:compare_lim', + \ 's:glob', + \ ] + +let s:dir_var = ['ctrlp#dir#init('.join(s:ars, ', ').')', 'ctrlp#dir#accept', + \ 'dirs', 'dir'] + +let g:ctrlp_ext_vars = exists('g:ctrlp_ext_vars') && !empty(g:ctrlp_ext_vars) + \ ? add(g:ctrlp_ext_vars, s:dir_var) : [s:dir_var] + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) +" Utilities {{{1 +fu! s:globdirs(dirs, depth) + let entries = split(globpath(a:dirs, s:glob), "\n") + if !s:folsym + let entries = filter(entries, 'getftype(v:val) != "link"') + en + let ftrfunc = s:dotfiles ? 'ctrlp#dirfilter(v:val)' : 'isdirectory(v:val)' + let alldirs = filter(entries, ftrfunc) + cal extend(g:ctrlp_alldirs, alldirs) + let depth = a:depth + 1 + if !empty(g:ctrlp_alldirs) && !s:max(len(g:ctrlp_alldirs), s:maxfiles) + \ && depth <= s:maxdepth + sil! cal ctrlp#progress(len(g:ctrlp_alldirs)) + cal s:globdirs(join(alldirs, ','), depth) + en +endf + +fu! s:max(len, max) + retu a:max && a:len > a:max ? 1 : 0 +endf +" Public {{{1 +fu! ctrlp#dir#init(...) + let s:cwd = getcwd() + for each in range(len(s:ars)) + exe 'let' s:ars[each] '=' string(eval('a:'.(each + 1))) + endfo + let cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().s:dir_var[3] + let cafile = cadir.ctrlp#utils#lash().ctrlp#utils#cachefile(s:dir_var[3]) + if g:ctrlp_newdir || !filereadable(cafile) + let g:ctrlp_alldirs = [] + cal s:globdirs(s:cwd, 0) + cal ctrlp#rmbasedir(g:ctrlp_alldirs) + let read_cache = 0 + el + let g:ctrlp_alldirs = ctrlp#utils#readfile(cafile) + let read_cache = 1 + en + if len(g:ctrlp_alldirs) <= s:compare_lim + cal sort(g:ctrlp_alldirs, 'ctrlp#complen') + en + if !read_cache + cal ctrlp#utils#writecache(g:ctrlp_alldirs, cadir, cafile) + let g:ctrlp_newdir = 0 + en + retu g:ctrlp_alldirs +endf + +fu! ctrlp#dir#accept(mode, str) + let path = a:mode == 'h' ? getcwd() : s:cwd.ctrlp#utils#lash().a:str + if a:mode =~ 't\|v\|h' + cal ctrlp#exit() + en + cal ctrlp#setdir(path, a:mode =~ 't\|h' ? 'chd!' : 'lc!') + if a:mode == 'e' + sil! cal ctrlp#statusline() + cal ctrlp#setlines(s:id) + cal ctrlp#recordhist() + cal ctrlp#prtclear() + en +endf + +fu! ctrlp#dir#id() + retu s:id +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/autoload/ctrlp/line.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,61 @@ +" ============================================================================= +" File: autoload/ctrlp/line.vim +" Description: Line extension - find a line in any buffer. +" Author: Kien Nguyen <github.com/kien> +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_line') && g:loaded_ctrlp_line + fini +en +let g:loaded_ctrlp_line = 1 + +let s:line_var = ['ctrlp#line#init()', 'ctrlp#line#accept', 'lines', 'line'] + +let g:ctrlp_ext_vars = exists('g:ctrlp_ext_vars') && !empty(g:ctrlp_ext_vars) + \ ? add(g:ctrlp_ext_vars, s:line_var) : [s:line_var] + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) +" Public {{{1 +fu! ctrlp#line#init() + let [bufs, lines] = [[], []] + for each in range(1, bufnr('$')) + if getbufvar(each, '&bl') + let bufname = bufname(each) + if strlen(bufname) && bufname != 'ControlP' + cal add(bufs, fnamemodify(bufname, ':p')) + en + en + endfo + cal filter(bufs, 'filereadable(v:val)') + for each in bufs + let from_file = readfile(each) + cal map(from_file, 'tr(v:val, '' '', '' '')') + let [id, len_ff, bufnr] = [1, len(from_file), bufnr(each)] + wh id <= len_ff + let from_file[id-1] .= ' #:'.bufnr.':'.id + let id += 1 + endw + cal filter(from_file, 'v:val !~ ''^\s*\t#:\d\+:\d\+$''') + cal extend(lines, from_file) + endfo + sy match CtrlPTabExtra '\zs\t.*\ze$' + hi link CtrlPTabExtra Comment + retu lines +endf + +fu! ctrlp#line#accept(mode, str) + let info = get(split(a:str, '\t#:\ze\d\+:\d\+$'), 1, 0) + let bufnr = str2nr(get(split(info, ':'), 0, 0)) + let linenr = get(split(info, ':'), 1, 0) + if bufnr + cal ctrlp#acceptfile(a:mode, fnamemodify(bufname(bufnr), ':p'), linenr) + en +endf + +fu! ctrlp#line#id() + retu s:id +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/autoload/ctrlp/mrufiles.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,68 @@ +" ============================================================================= +" File: autoload/ctrlp/mrufiles.vim +" Description: Most Recently Used Files extension +" Author: Kien Nguyen <github.com/kien> +" ============================================================================= + +" Static variables {{{1 +fu! ctrlp#mrufiles#opts() + let opts = { + \ 'g:ctrlp_mruf_max': ['s:max', 250], + \ 'g:ctrlp_mruf_include': ['s:include', ''], + \ 'g:ctrlp_mruf_exclude': ['s:exclude', ''], + \ 'g:ctrlp_mruf_case_sensitive': ['s:csen', 1], + \ } + for [ke, va] in items(opts) + exe 'let' va[0] '=' string(exists(ke) ? eval(ke) : va[1]) + endfo +endf +cal ctrlp#mrufiles#opts() +fu! ctrlp#mrufiles#list(bufnr, ...) "{{{1 + if s:locked | retu | en + " Get the list + let cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'mru' + let cafile = cadir.ctrlp#utils#lash().'cache.txt' + let mrufs = ctrlp#utils#readfile(cafile) + " Remove non-existent files + if exists('a:1') && a:1 == 1 + let mrufs = s:rmdeleted(mrufs, cadir, cafile) + elsei exists('a:1') && a:1 == 2 + cal ctrlp#utils#writecache([], cadir, cafile) + retu [] + en + " Return the list + if a:bufnr == -1 | retu mrufs | en + " Filter it + let filename = fnamemodify(bufname(a:bufnr + 0), ':p') + if empty(filename) || !empty(&bt) + \ || ( !empty(s:include) && filename !~# s:include ) + \ || ( !empty(s:exclude) && filename =~# s:exclude ) + \ || ( index(mrufs, filename) == -1 && !filereadable(filename) ) + retu + en + " Remove old matched entry + cal filter(mrufs, 'v:val !='.( s:csen ? "#" : "?" ).' filename') + " Insert new one + cal insert(mrufs, filename) + " Remove oldest entry + if len(mrufs) > s:max | cal remove(mrufs, s:max, -1) | en + cal ctrlp#utils#writecache(mrufs, cadir, cafile) +endf "}}} +fu! s:rmdeleted(mrufs, cadir, cafile) "{{{ + cal filter(a:mrufs, '!empty(ctrlp#utils#glob(v:val, 1))') + cal ctrlp#utils#writecache(a:mrufs, a:cadir, a:cafile) + retu a:mrufs +endf +fu! ctrlp#mrufiles#init() "{{{1 + let s:locked = 0 + aug CtrlPMRUF + au! + au BufReadPost,BufNewFile,BufWritePost * + \ cal ctrlp#mrufiles#list(expand('<abuf>', 1)) + au QuickFixCmdPre *vimgrep* let s:locked = 1 + au QuickFixCmdPost *vimgrep* let s:locked = 0 + aug END +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/autoload/ctrlp/quickfix.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,55 @@ +" ============================================================================= +" File: autoload/ctrlp/quickfix.vim +" Description: Quickfix extension +" Author: Kien Nguyen <github.com/kien> +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_quickfix') && g:loaded_ctrlp_quickfix + fini +en +let g:loaded_ctrlp_quickfix = 1 + +let s:var_qf = ['ctrlp#quickfix#init()', 'ctrlp#quickfix#accept', 'quickfix', + \ 'qfx', [1]] + +let g:ctrlp_ext_vars = exists('g:ctrlp_ext_vars') && !empty(g:ctrlp_ext_vars) + \ ? add(g:ctrlp_ext_vars, s:var_qf) : [s:var_qf] + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) + +fu! s:lineout(dict) + retu printf('%s|%d:%d| %s', bufname(a:dict['bufnr']), a:dict['lnum'], + \ a:dict['col'], matchstr(a:dict['text'], '\s*\zs.*\S')) +endf +" Public {{{1 +fu! ctrlp#quickfix#init() + let g:ctrlp_nolimit = 1 + sy match CtrlPqfLineCol '|\zs\d\+:\d\+\ze|' + hi def link CtrlPqfLineCol Search + retu map(getqflist(), 's:lineout(v:val)') +endf + +fu! ctrlp#quickfix#accept(mode, str) + let items = matchlist(a:str, '^\([^|]\+\ze\)|\(\d\+\):\(\d\+\)|') + let [md, filpath] = [a:mode, fnamemodify(items[1], ':p')] + if empty(filpath) | retu | en + cal ctrlp#exit() + let cmd = md == 't' ? 'tabe' : md == 'h' ? 'new' : md == 'v' ? 'vne' + \ : ctrlp#normcmd('e') + let cmd = cmd == 'e' && &modified ? 'hid e' : cmd + try + exe cmd.' '.ctrlp#fnesc(filpath) + cat + cal ctrlp#msg("Invalid command or argument.") + fina + cal cursor(items[2], items[3]) | sil! norm! zOzz + endt +endf + +fu! ctrlp#quickfix#id() + retu s:id +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/autoload/ctrlp/tag.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,109 @@ +" ============================================================================= +" File: autoload/ctrlp/tag.vim +" Description: Tag file extension +" Author: Kien Nguyen <github.com/kien> +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_tag') && g:loaded_ctrlp_tag + fini +en +let g:loaded_ctrlp_tag = 1 + +let s:tag_var = ['ctrlp#tag#init(s:tagfiles)', 'ctrlp#tag#accept', + \ 'tags', 'tag'] + +let g:ctrlp_ext_vars = exists('g:ctrlp_ext_vars') && !empty(g:ctrlp_ext_vars) + \ ? add(g:ctrlp_ext_vars, s:tag_var) : [s:tag_var] + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) +" Utilities {{{1 +fu! s:nodup(items) + let dict = {} + for each in a:items + cal extend(dict, { each : 0 }) + endfo + retu keys(dict) +endf + +fu! s:findcount(str) + let [tg, fname] = split(a:str, '\t\+\ze[^\t]\+$') + let [&l:tags, fname] = [s:ltags, expand(fname, 1)] + let tgs = taglist('^'.tg.'$') + if empty(tgs) | retu [1, 1] | en + let [fnd, ct, pos] = [0, 0, 0] + for each in tgs + let ct += 1 + let fulname = fnamemodify(each["filename"], ':p') + if stridx(fulname, fname) >= 0 + \ && strlen(fname) + stridx(fulname, fname) == strlen(fulname) + let fnd += 1 + let pos = ct + en + if fnd > 1 | brea | en + endfo + retu [fnd, pos] +endf + +fu! s:filter(tags) + let [nr, alltags] = [0, a:tags] + wh 0 < 1 + if alltags[nr] =~ '^!' && alltags[nr] !~ '^!_TAG_' + let nr += 1 + con + en + if alltags[nr] =~ '^!_TAG_' && len(alltags) > nr + cal remove(alltags, nr) + el + brea + en + endw + retu alltags +endf +" Public {{{1 +fu! ctrlp#tag#init(tagfiles) + if empty(a:tagfiles) | retu [] | en + let tagfiles = sort(s:nodup(a:tagfiles)) + let s:ltags = join(tagfiles, ',') + let g:ctrlp_alltags = [] + for each in tagfiles + let alltags = s:filter(ctrlp#utils#readfile(each)) + cal extend(g:ctrlp_alltags, alltags) + endfo + sy match CtrlPTabExtra '\zs\t.*\ze$' + hi link CtrlPTabExtra Comment + retu g:ctrlp_alltags +endf + +fu! ctrlp#tag#accept(mode, str) + cal ctrlp#exit() + let str = matchstr(a:str, '^[^\t]\+\t\+[^\t]\+\ze\t') + let [md, tg] = [a:mode, split(str, '^[^\t]\+\zs\t')[0]] + let fnd = s:findcount(str) + let cmds = { + \ 't': ['tabe', 'tab stj'], + \ 'h': ['new', 'stj'], + \ 'v': ['vne', 'vert stj'], + \ 'e': ['ene', 'tj'], + \ } + let cmd = fnd[0] == 1 ? cmds[md][0] : cmds[md][1] + let cmd = cmd =~ 'tj\|ene' && &modified ? 'hid '.cmd : cmd + try + if fnd[0] == 1 + exe cmd + let &l:tags = s:ltags + exe fnd[1].'ta' tg + el + exe cmd.' '.tg + en + cat + cal ctrlp#msg("Tag not found.") + endt +endf + +fu! ctrlp#tag#id() + retu s:id +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/autoload/ctrlp/utils.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,68 @@ +" ============================================================================= +" File: autoload/ctrlp/utils.vim +" Description: Utilities +" Author: Kien Nguyen <github.com/kien> +" ============================================================================= + +" Static variables {{{1 +fu! ctrlp#utils#lash() + retu &ssl || !exists('+ssl') ? '/' : '\' +endf +let s:lash = ctrlp#utils#lash() + +fu! ctrlp#utils#opts() + let s:cache_dir = $HOME.s:lash.'.ctrlp_cache' + if exists('g:ctrlp_cache_dir') + let s:cache_dir = expand(g:ctrlp_cache_dir, 1) + if isdirectory(s:cache_dir.s:lash.'.ctrlp_cache') + let s:cache_dir = s:cache_dir.s:lash.'.ctrlp_cache' + en + en +endf +cal ctrlp#utils#opts() +" Files and Directories {{{1 +fu! ctrlp#utils#cachedir() + retu s:cache_dir +endf + +fu! ctrlp#utils#cachefile(...) + let tail = exists('a:1') ? '.'.a:1 : '' + let cache_file = substitute(getcwd(), '\([\/]\|^\a\zs:\)', '%', 'g').tail.'.txt' + retu exists('a:1') ? cache_file : s:cache_dir.s:lash.cache_file +endf + +fu! ctrlp#utils#readfile(file) + if filereadable(a:file) + let data = readfile(a:file) + if empty(data) || type(data) != 3 + unl data + let data = [] + en + retu data + en + retu [] +endf + +fu! ctrlp#utils#mkdir(dir) + if exists('*mkdir') && !isdirectory(a:dir) + sil! cal mkdir(a:dir) + en +endf + +fu! ctrlp#utils#writecache(lines, ...) + let cache_dir = exists('a:1') ? a:1 : s:cache_dir + cal ctrlp#utils#mkdir(cache_dir) + if isdirectory(cache_dir) + sil! cal writefile(a:lines, exists('a:2') ? a:2 : ctrlp#utils#cachefile()) + if !exists('a:1') + let g:ctrlp_newcache = 0 + en + en +endf + +fu! ctrlp#utils#glob(...) + retu call('glob', v:version > 701 ? a:000 : a:1) +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/colors/Dark.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,63 @@ + +" +" Restore default colors +hi clear +set background=dark + + +if exists("syntax_on") + syntax reset +endif + +let g:colors_name = "Dark" + + +hi Normal guibg=grey20 guifg=GhostWhite +hi NonText guibg=grey15 guifg=yellow3 +"hi Cursor guibg=GhostWhite +"hi Cursor guibg=red guifg=white +hi Cursor guibg=green2 guifg=black + +hi Statement guifg=tan +hi Constant guifg=#FF7070 +hi String guifg=#ffa0a0 +hi Comment guifg=SkyBlue +hi PreProc guifg=orchid2 +hi Character guifg=Cyan +hi Type guifg=orange gui=none +hi Special guifg=#DDDD00 +hi Identifier guifg=#60DD60 +hi link Function Identifier +"hi Function guifg=#ffa0a0 + +" Slight tweaks after some time away: +hi Type guifg=LightMagenta +hi PreProc guifg=orange2 + + +hi link SpecialKey Comment +hi link Directory Comment + +" +" Colors not part of the original set: +" +"hi Folded guifg=cyan4 guibg=grey20 +hi Folded guifg=grey90 guibg=grey45 +hi Visual gui=reverse guibg=fg guifg=darkolivegreen +hi Search guifg=black guibg=LightSkyBlue3 gui=none +"hi IncSearch guifg=yellow guibg=LightSkyBlue3 gui=bold +hi IncSearch guibg=blue guifg=yellow gui=bold +hi WarningMsg guifg=red guibg=GhostWhite gui=bold +hi Error guibg=red3 + + +" Here are the original colors: +"hi guifg=grey70 gui=bold +"hi guifg=#FF7070 gui=bold +"hi guifg=green gui=bold +"hi guifg=yellow gui=bold +"hi guifg=SkyBlue gui=bold +"hi guifg=orchid1 gui=bold +"hi guifg=Cyan gui=bold +"hi guifg=White gui=bold +"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/colors/peaksea.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,601 @@ +" Vim color file --- psc (peak sea color) "Lite version" +" Maintainer: Pan, Shi Zhu <Go to the following URL for my email> +" URL: http://vim.sourceforge.net/scripts/script.php?script_id=760 +" Last Change: 5 Feb 2010 +" Version: 3.4 +" +" Comments and e-mails are welcomed, thanks. +" +" The peaksea color is simply a colorscheme with the default settings of +" the original ps_color. Lite version means there's no custom settings +" and fancy features such as integration with reloaded.vim +" +" The full version of ps_color.vim will be maintained until Vim 8. +" By then there will be only the lite version: peaksea.vim +" +" Note: Please set the background option in your .vimrc and/or .gvimrc +" +" It is much better *not* to set 'background' option inside +" a colorscheme file. because ":set background" improperly +" may cause colorscheme be sourced twice +" +" Color Scheme Overview: +" :ru syntax/hitest.vim +" +" Relevant Help: +" :h highlight-groups +" :h psc-cterm-color-table +" +" Colors Order: +" #rrggbb +" + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let g:colors_name = expand("<sfile>:t:r") + +" I don't want to abuse folding, but here folding is used to avoid confusion. +if &background=='light' + " for background=light {{{2 + " LIGHT COLOR DEFINE START + + hi Normal guifg=#000000 guibg=#e0e0e0 gui=NONE + hi Search guifg=NONE guibg=#f8f8f8 gui=NONE + hi Visual guifg=NONE guibg=#a6caf0 gui=NONE + hi Cursor guifg=#f0f0f0 guibg=#008000 gui=NONE + " The idea of CursorIM is pretty good, however, the feature is still buggy + " in the current version (Vim 7.0). + " The following line will be kept commented until the bug fixed. + " + " hi CursorIM guifg=#f0f0f0 guibg=#800080 + hi Special guifg=#907000 guibg=NONE gui=NONE + hi Comment guifg=#606000 guibg=NONE gui=NONE + hi Number guifg=#907000 guibg=NONE gui=NONE + hi Constant guifg=#007068 guibg=NONE gui=NONE + hi StatusLine guifg=fg guibg=#a6caf0 gui=NONE + hi LineNr guifg=#686868 guibg=NONE gui=NONE + hi Question guifg=fg guibg=#d0d090 gui=NONE + hi PreProc guifg=#009030 guibg=NONE gui=NONE + hi Statement guifg=#2060a8 guibg=NONE gui=NONE + hi Type guifg=#0850a0 guibg=NONE gui=NONE + hi Todo guifg=#800000 guibg=#e0e090 gui=NONE + " NOTE THIS IS IN THE WARM SECTION + hi Error guifg=#c03000 guibg=NONE gui=NONE + hi Identifier guifg=#a030a0 guibg=NONE gui=NONE + hi ModeMsg guifg=fg guibg=#b0b0e0 gui=NONE + hi VisualNOS guifg=fg guibg=#b0b0e0 gui=NONE + hi SpecialKey guifg=#1050a0 guibg=NONE gui=NONE + hi NonText guifg=#002090 guibg=#d0d0d0 gui=NONE + hi Directory guifg=#a030a0 guibg=NONE gui=NONE + hi ErrorMsg guifg=fg guibg=#f0b090 gui=NONE + hi MoreMsg guifg=#489000 guibg=NONE gui=NONE + hi Title guifg=#a030a0 guibg=NONE gui=NONE + hi WarningMsg guifg=#b02000 guibg=NONE gui=NONE + hi WildMenu guifg=fg guibg=#d0d090 gui=NONE + hi Folded guifg=NONE guibg=#b0e0b0 gui=NONE + hi FoldColumn guifg=fg guibg=#90e090 gui=NONE + hi DiffAdd guifg=NONE guibg=#b0b0e0 gui=NONE + hi DiffChange guifg=NONE guibg=#e0b0e0 gui=NONE + hi DiffDelete guifg=#002090 guibg=#d0d0d0 gui=NONE + hi DiffText guifg=NONE guibg=#c0e080 gui=NONE + hi SignColumn guifg=fg guibg=#90e090 gui=NONE + + hi IncSearch guifg=#f0f0f0 guibg=#806060 gui=NONE + hi StatusLineNC guifg=fg guibg=#c0c0c0 gui=NONE + hi VertSplit guifg=fg guibg=#c0c0c0 gui=NONE + hi Underlined guifg=#6a5acd guibg=NONE gui=underline + hi Ignore guifg=bg guibg=NONE + " NOTE THIS IS IN THE WARM SECTION + if v:version >= 700 + if has('spell') + hi SpellBad guifg=NONE guibg=NONE guisp=#c03000 + hi SpellCap guifg=NONE guibg=NONE guisp=#2060a8 + hi SpellRare guifg=NONE guibg=NONE guisp=#a030a0 + hi SpellLocal guifg=NONE guibg=NONE guisp=#007068 + endif + hi Pmenu guifg=fg guibg=#e0b0e0 + hi PmenuSel guifg=#f0f0f0 guibg=#806060 gui=NONE + hi PmenuSbar guifg=fg guibg=#c0c0c0 gui=NONE + hi PmenuThumb guifg=fg guibg=#c0e080 gui=NONE + hi TabLine guifg=fg guibg=#c0c0c0 gui=NONE + hi TabLineFill guifg=fg guibg=#c0c0c0 gui=NONE + hi TabLineSel guifg=fg guibg=NONE gui=NONE + hi CursorColumn guifg=NONE guibg=#f0b090 + hi CursorLine guifg=NONE guibg=NONE gui=underline + hi MatchParen guifg=NONE guibg=#c0e080 + endif + + " LIGHT COLOR DEFINE END + + " Vim 7 added stuffs + if v:version >= 700 + hi Ignore gui=NONE + + " the gui=undercurl guisp could only support in Vim 7 + if has('spell') + hi SpellBad gui=undercurl + hi SpellCap gui=undercurl + hi SpellRare gui=undercurl + hi SpellLocal gui=undercurl + endif + hi TabLine gui=underline + hi TabLineFill gui=underline + hi CursorLine gui=underline + endif + + " For reversed stuffs, clear the reversed prop and set the bold prop again + hi IncSearch gui=bold + hi StatusLine gui=bold + hi StatusLineNC gui=bold + hi VertSplit gui=bold + hi Visual gui=bold + + " Enable the bold property + hi Question gui=bold + hi DiffText gui=bold + hi Statement gui=bold + hi Type gui=bold + hi MoreMsg gui=bold + hi ModeMsg gui=bold + hi NonText gui=bold + hi Title gui=bold + hi DiffDelete gui=bold + hi TabLineSel gui=bold + + " gui define for background=light end here + + " generally, a dumb terminal is dark, we assume the light terminal has 256 + " color support. + if &t_Co==8 || &t_Co==16 + set t_Co=256 + endif + if &t_Co==256 + " 256color light terminal support here + + hi Normal ctermfg=16 ctermbg=254 cterm=NONE + " Comment/Uncomment the following line to disable/enable transparency + "hi Normal ctermfg=16 ctermbg=NONE cterm=NONE + hi Search ctermfg=NONE ctermbg=231 cterm=NONE + hi Visual ctermfg=NONE ctermbg=153 cterm=NONE + hi Cursor ctermfg=255 ctermbg=28 cterm=NONE + " hi CursorIM ctermfg=255 ctermbg=90 + hi Special ctermfg=94 ctermbg=NONE cterm=NONE + hi Comment ctermfg=58 ctermbg=NONE cterm=NONE + hi Number ctermfg=94 ctermbg=NONE cterm=NONE + hi Constant ctermfg=23 ctermbg=NONE cterm=NONE + hi StatusLine ctermfg=fg ctermbg=153 cterm=NONE + hi LineNr ctermfg=242 ctermbg=NONE cterm=NONE + hi Question ctermfg=fg ctermbg=186 cterm=NONE + hi PreProc ctermfg=29 ctermbg=NONE cterm=NONE + hi Statement ctermfg=25 ctermbg=NONE cterm=NONE + hi Type ctermfg=25 ctermbg=NONE cterm=NONE + hi Todo ctermfg=88 ctermbg=186 cterm=NONE + " NOTE THIS IS IN THE WARM SECTION + hi Error ctermfg=130 ctermbg=NONE cterm=NONE + hi Identifier ctermfg=133 ctermbg=NONE cterm=NONE + hi ModeMsg ctermfg=fg ctermbg=146 cterm=NONE + hi VisualNOS ctermfg=fg ctermbg=146 cterm=NONE + hi SpecialKey ctermfg=25 ctermbg=NONE cterm=NONE + hi NonText ctermfg=18 ctermbg=252 cterm=NONE + " Comment/Uncomment the following line to disable/enable transparency + "hi NonText ctermfg=18 ctermbg=NONE cterm=NONE + hi Directory ctermfg=133 ctermbg=NONE cterm=NONE + hi ErrorMsg ctermfg=fg ctermbg=216 cterm=NONE + hi MoreMsg ctermfg=64 ctermbg=NONE cterm=NONE + hi Title ctermfg=133 ctermbg=NONE cterm=NONE + hi WarningMsg ctermfg=124 ctermbg=NONE cterm=NONE + hi WildMenu ctermfg=fg ctermbg=186 cterm=NONE + hi Folded ctermfg=NONE ctermbg=151 cterm=NONE + hi FoldColumn ctermfg=fg ctermbg=114 cterm=NONE + hi DiffAdd ctermfg=NONE ctermbg=146 cterm=NONE + hi DiffChange ctermfg=NONE ctermbg=182 cterm=NONE + hi DiffDelete ctermfg=18 ctermbg=252 cterm=NONE + hi DiffText ctermfg=NONE ctermbg=150 cterm=NONE + hi SignColumn ctermfg=fg ctermbg=114 cterm=NONE + + hi IncSearch ctermfg=255 ctermbg=95 cterm=NONE + hi StatusLineNC ctermfg=fg ctermbg=250 cterm=NONE + hi VertSplit ctermfg=fg ctermbg=250 cterm=NONE + hi Underlined ctermfg=62 ctermbg=NONE cterm=underline + hi Ignore ctermfg=bg ctermbg=NONE + " NOTE THIS IS IN THE WARM SECTION + if v:version >= 700 + if has('spell') + if 0 + " ctermsp is not supported in Vim7, we ignore it. + hi SpellBad cterm=undercurl ctermbg=NONE ctermfg=130 + hi SpellCap cterm=undercurl ctermbg=NONE ctermfg=25 + hi SpellRare cterm=undercurl ctermbg=NONE ctermfg=133 + hi SpellLocal cterm=undercurl ctermbg=NONE ctermfg=23 + else + hi SpellBad cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellCap cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellRare cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellLocal cterm=undercurl ctermbg=NONE ctermfg=NONE + endif + endif + hi Pmenu ctermfg=fg ctermbg=182 + hi PmenuSel ctermfg=255 ctermbg=95 cterm=NONE + hi PmenuSbar ctermfg=fg ctermbg=250 cterm=NONE + hi PmenuThumb ctermfg=fg ctermbg=150 cterm=NONE + hi TabLine ctermfg=fg ctermbg=250 cterm=NONE + hi TabLineFill ctermfg=fg ctermbg=250 cterm=NONE + hi TabLineSel ctermfg=fg ctermbg=NONE cterm=NONE + hi CursorColumn ctermfg=NONE ctermbg=216 + hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline + hi MatchParen ctermfg=NONE ctermbg=150 + endif + + hi TabLine cterm=underline + hi TabLineFill cterm=underline + hi CursorLine cterm=underline + + " For reversed stuffs, clear the reversed prop and set the bold prop again + hi IncSearch cterm=bold + hi StatusLine cterm=bold + hi StatusLineNC cterm=bold + hi VertSplit cterm=bold + hi Visual cterm=bold + + hi NonText cterm=bold + hi Question cterm=bold + hi Title cterm=bold + hi DiffDelete cterm=bold + hi DiffText cterm=bold + hi Statement cterm=bold + hi Type cterm=bold + hi MoreMsg cterm=bold + hi ModeMsg cterm=bold + hi TabLineSel cterm=bold + + "hi lCursor ctermfg=bg ctermbg=fg cterm=NONE + endif " t_Co==256 + " }}}2 +elseif &background=='dark' + " for background=dark {{{2 + " DARK COLOR DEFINE START + + hi Normal guifg=#d0d0d0 guibg=#202020 gui=NONE + hi Comment guifg=#d0d090 guibg=NONE gui=NONE + hi Constant guifg=#80c0e0 guibg=NONE gui=NONE + hi Number guifg=#e0c060 guibg=NONE gui=NONE + hi Identifier guifg=#f0c0f0 guibg=NONE gui=NONE + hi Statement guifg=#c0d8f8 guibg=NONE gui=NONE + hi PreProc guifg=#60f080 guibg=NONE gui=NONE + hi Type guifg=#b0d0f0 guibg=NONE gui=NONE + hi Special guifg=#e0c060 guibg=NONE gui=NONE + hi Error guifg=#f08060 guibg=NONE gui=NONE + hi Todo guifg=#800000 guibg=#d0d090 gui=NONE + hi Search guifg=NONE guibg=#800000 gui=NONE + hi Visual guifg=#000000 guibg=#a6caf0 gui=NONE + hi Cursor guifg=#000000 guibg=#00f000 gui=NONE + " NOTE THIS IS IN THE COOL SECTION + " hi CursorIM guifg=#000000 guibg=#f000f0 gui=NONE + hi StatusLine guifg=#000000 guibg=#a6caf0 gui=NONE + hi LineNr guifg=#b0b0b0 guibg=NONE gui=NONE + hi Question guifg=#000000 guibg=#d0d090 gui=NONE + hi ModeMsg guifg=fg guibg=#000080 gui=NONE + hi VisualNOS guifg=fg guibg=#000080 gui=NONE + hi SpecialKey guifg=#b0d0f0 guibg=NONE gui=NONE + hi NonText guifg=#6080f0 guibg=#101010 gui=NONE + hi Directory guifg=#80c0e0 guibg=NONE gui=NONE + hi ErrorMsg guifg=#d0d090 guibg=#800000 gui=NONE + hi MoreMsg guifg=#c0e080 guibg=NONE gui=NONE + hi Title guifg=#f0c0f0 guibg=NONE gui=NONE + hi WarningMsg guifg=#f08060 guibg=NONE gui=NONE + hi WildMenu guifg=#000000 guibg=#d0d090 gui=NONE + hi Folded guifg=NONE guibg=#004000 gui=NONE + hi FoldColumn guifg=#e0e0e0 guibg=#008000 gui=NONE + hi DiffAdd guifg=NONE guibg=#000080 gui=NONE + hi DiffChange guifg=NONE guibg=#800080 gui=NONE + hi DiffDelete guifg=#6080f0 guibg=#202020 gui=NONE + hi DiffText guifg=#000000 guibg=#c0e080 gui=NONE + hi SignColumn guifg=#e0e0e0 guibg=#008000 gui=NONE + hi IncSearch guifg=#000000 guibg=#d0d0d0 gui=NONE + hi StatusLineNC guifg=#000000 guibg=#c0c0c0 gui=NONE + hi VertSplit guifg=#000000 guibg=#c0c0c0 gui=NONE + hi Underlined guifg=#80a0ff guibg=NONE gui=underline + hi Ignore guifg=#000000 guibg=NONE + " NOTE THIS IS IN THE COOL SECTION + if v:version >= 700 + if has('spell') + " the guisp= could only support in Vim 7 + hi SpellBad guifg=NONE guibg=NONE guisp=#f08060 + hi SpellCap guifg=NONE guibg=NONE guisp=#6080f0 + hi SpellRare guifg=NONE guibg=NONE guisp=#f0c0f0 + hi SpellLocal guifg=NONE guibg=NONE guisp=#c0d8f8 + endif + hi Pmenu guifg=fg guibg=#800080 + hi PmenuSel guifg=#000000 guibg=#d0d0d0 gui=NONE + hi PmenuSbar guifg=fg guibg=#000080 gui=NONE + hi PmenuThumb guifg=fg guibg=#008000 gui=NONE + hi TabLine guifg=fg guibg=#008000 gui=NONE + hi TabLineFill guifg=fg guibg=#008000 gui=NONE + hi TabLineSel guifg=fg guibg=NONE gui=NONE + hi CursorColumn guifg=NONE guibg=#800000 gui=NONE + hi CursorLine guifg=NONE guibg=NONE gui=underline + hi MatchParen guifg=NONE guibg=#800080 + endif + + " DARK COLOR DEFINE END + + " Vim 7 added stuffs + if v:version >= 700 + hi Ignore gui=NONE + + " the gui=undercurl could only support in Vim 7 + if has('spell') + hi SpellBad gui=undercurl + hi SpellCap gui=undercurl + hi SpellRare gui=undercurl + hi SpellLocal gui=undercurl + endif + hi TabLine gui=underline + hi TabLineFill gui=underline + hi Underlined gui=underline + hi CursorLine gui=underline + endif + + " gui define for background=dark end here + + if &t_Co==8 || &t_Co==16 + " for 8-color and 16-color term + hi Normal ctermfg=LightGrey ctermbg=Black + hi Special ctermfg=Yellow ctermbg=bg + hi Comment ctermfg=DarkYellow ctermbg=bg + hi Constant ctermfg=Blue ctermbg=bg + hi Number ctermfg=Yellow ctermbg=bg + hi LineNr ctermfg=DarkGrey ctermbg=bg + hi PreProc ctermfg=Green ctermbg=bg + hi Statement ctermfg=Cyan ctermbg=bg + hi Type ctermfg=Cyan ctermbg=bg + hi Error ctermfg=Red ctermbg=bg + hi Identifier ctermfg=Magenta ctermbg=bg + hi SpecialKey ctermfg=Cyan ctermbg=bg + hi NonText ctermfg=Blue ctermbg=bg + hi Directory ctermfg=Blue ctermbg=bg + hi MoreMsg ctermfg=Green ctermbg=bg + hi Title ctermfg=Magenta ctermbg=bg + hi WarningMsg ctermfg=Red ctermbg=bg + hi DiffDelete ctermfg=Blue ctermbg=bg + + hi Search ctermfg=NONE ctermbg=DarkRed + hi Visual ctermfg=Black ctermbg=DarkCyan + hi Cursor ctermfg=Black ctermbg=Green + hi StatusLine ctermfg=Black ctermbg=DarkCyan + hi Question ctermfg=Black ctermbg=DarkYellow + hi Todo ctermfg=DarkRed ctermbg=DarkYellow + hi Folded ctermfg=White ctermbg=DarkGreen + hi ModeMsg ctermfg=Grey ctermbg=DarkBlue + hi VisualNOS ctermfg=Grey ctermbg=DarkBlue + hi ErrorMsg ctermfg=DarkYellow ctermbg=DarkRed + hi WildMenu ctermfg=Black ctermbg=DarkYellow + hi FoldColumn ctermfg=White ctermbg=DarkGreen + hi SignColumn ctermfg=White ctermbg=DarkGreen + hi DiffText ctermfg=Black ctermbg=DarkYellow + + if v:version >= 700 + if has('spell') + hi SpellBad ctermfg=NONE ctermbg=DarkRed + hi SpellCap ctermfg=NONE ctermbg=DarkBlue + hi SpellRare ctermfg=NONE ctermbg=DarkMagenta + hi SpellLocal ctermfg=NONE ctermbg=DarkGreen + endif + hi Pmenu ctermfg=fg ctermbg=DarkMagenta + hi PmenuSel ctermfg=Black ctermbg=fg + hi PmenuSbar ctermfg=fg ctermbg=DarkBlue + hi PmenuThumb ctermfg=fg ctermbg=DarkGreen + hi TabLine ctermfg=fg ctermbg=DarkGreen cterm=underline + hi TabLineFill ctermfg=fg ctermbg=DarkGreen cterm=underline + hi CursorColumn ctermfg=NONE ctermbg=DarkRed + + hi TabLineSel ctermfg=fg ctermbg=bg + hi CursorLine ctermfg=NONE ctermbg=bg cterm=underline + + hi MatchParen ctermfg=NONE ctermbg=DarkMagenta + endif + if &t_Co==8 + " 8 colour terminal support, this assumes 16 colour is available through + " setting the 'bold' attribute, will get bright foreground colour. + " However, the bright background color is not available for 8-color terms. + " + " You can manually set t_Co=16 in your .vimrc to see if your terminal + " supports 16 colours, + hi DiffText cterm=none + hi Visual cterm=none + hi Cursor cterm=none + hi Comment cterm=none + hi Todo cterm=none + hi StatusLine cterm=none + hi Question cterm=none + hi DiffChange cterm=none + hi ModeMsg cterm=none + hi VisualNOS cterm=none + hi ErrorMsg cterm=none + hi WildMenu cterm=none + hi DiffAdd cterm=none + hi Folded cterm=none + hi DiffDelete cterm=none + hi Normal cterm=none + hi PmenuThumb cterm=none + hi Search cterm=bold + hi Special cterm=bold + hi Constant cterm=bold + hi Number cterm=bold + hi LineNr cterm=bold + hi PreProc cterm=bold + hi Statement cterm=bold + hi Type cterm=bold + hi Error cterm=bold + hi Identifier cterm=bold + hi SpecialKey cterm=bold + hi NonText cterm=bold + hi MoreMsg cterm=bold + hi Title cterm=bold + hi WarningMsg cterm=bold + hi FoldColumn cterm=bold + hi SignColumn cterm=bold + hi Directory cterm=bold + hi DiffDelete cterm=bold + else + " Background > 7 is only available with 16 or more colors + + hi WarningMsg cterm=none + hi Search cterm=none + hi Visual cterm=none + hi Cursor cterm=none + hi Special cterm=none + hi Comment cterm=none + hi Constant cterm=none + hi Number cterm=none + hi LineNr cterm=none + hi PreProc cterm=none + hi Todo cterm=none + hi Error cterm=none + hi Identifier cterm=none + hi Folded cterm=none + hi SpecialKey cterm=none + hi Directory cterm=none + hi ErrorMsg cterm=none + hi Normal cterm=none + hi PmenuThumb cterm=none + hi WildMenu cterm=none + hi FoldColumn cterm=none + hi SignColumn cterm=none + hi DiffAdd cterm=none + hi DiffChange cterm=none + hi Question cterm=none + hi StatusLine cterm=none + hi DiffText cterm=none + hi IncSearch cterm=reverse + hi StatusLineNC cterm=reverse + hi VertSplit cterm=reverse + + " Well, well, bold font with color 0-7 is not possible. + " So, the Question, StatusLine, DiffText cannot act as expected. + + hi Statement cterm=none + hi Type cterm=none + hi MoreMsg cterm=none + hi ModeMsg cterm=none + hi NonText cterm=none + hi Title cterm=none + hi VisualNOS cterm=none + hi DiffDelete cterm=none + hi TabLineSel cterm=none + + endif + elseif &t_Co==256 + " 256color dark terminal support here + hi Normal ctermfg=252 ctermbg=234 cterm=NONE + " Comment/Uncomment the following line to disable/enable transparency + "hi Normal ctermfg=252 ctermbg=NONE cterm=NONE + hi Comment ctermfg=186 ctermbg=NONE cterm=NONE + hi Constant ctermfg=110 ctermbg=NONE cterm=NONE + hi Number ctermfg=179 ctermbg=NONE cterm=NONE + hi Identifier ctermfg=219 ctermbg=NONE cterm=NONE + hi Statement ctermfg=153 ctermbg=NONE cterm=NONE + hi PreProc ctermfg=84 ctermbg=NONE cterm=NONE + hi Type ctermfg=153 ctermbg=NONE cterm=NONE + hi Special ctermfg=179 ctermbg=NONE cterm=NONE + hi Error ctermfg=209 ctermbg=NONE cterm=NONE + hi Todo ctermfg=88 ctermbg=186 cterm=NONE + hi Search ctermfg=NONE ctermbg=88 cterm=NONE + hi Visual ctermfg=16 ctermbg=153 cterm=NONE + hi Cursor ctermfg=16 ctermbg=46 cterm=NONE + " NOTE THIS IS IN THE COOL SECTION + " hi CursorIM ctermfg=16 ctermbg=201 cterm=NONE + hi StatusLine ctermfg=16 ctermbg=153 cterm=NONE + hi LineNr ctermfg=249 ctermbg=NONE cterm=NONE + hi Question ctermfg=16 ctermbg=186 cterm=NONE + hi ModeMsg ctermfg=fg ctermbg=18 cterm=NONE + hi VisualNOS ctermfg=fg ctermbg=18 cterm=NONE + hi SpecialKey ctermfg=153 ctermbg=NONE cterm=NONE + hi NonText ctermfg=69 ctermbg=233 cterm=NONE + " Comment/Uncomment the following line to disable/enable transparency + "hi NonText ctermfg=69 ctermbg=NONE cterm=NONE + hi Directory ctermfg=110 ctermbg=NONE cterm=NONE + hi ErrorMsg ctermfg=186 ctermbg=88 cterm=NONE + hi MoreMsg ctermfg=150 ctermbg=NONE cterm=NONE + hi Title ctermfg=219 ctermbg=NONE cterm=NONE + hi WarningMsg ctermfg=209 ctermbg=NONE cterm=NONE + hi WildMenu ctermfg=16 ctermbg=186 cterm=NONE + hi Folded ctermfg=NONE ctermbg=22 cterm=NONE + hi FoldColumn ctermfg=254 ctermbg=28 cterm=NONE + hi DiffAdd ctermfg=NONE ctermbg=18 cterm=NONE + hi DiffChange ctermfg=NONE ctermbg=90 cterm=NONE + hi DiffDelete ctermfg=69 ctermbg=234 cterm=NONE + hi DiffText ctermfg=16 ctermbg=150 cterm=NONE + hi SignColumn ctermfg=254 ctermbg=28 cterm=NONE + hi IncSearch ctermfg=16 ctermbg=252 cterm=NONE + hi StatusLineNC ctermfg=16 ctermbg=250 cterm=NONE + hi VertSplit ctermfg=16 ctermbg=250 cterm=NONE + hi Underlined ctermfg=111 ctermbg=NONE cterm=underline + hi Ignore ctermfg=16 ctermbg=NONE + " NOTE THIS IS IN THE COOL SECTION + if v:version >= 700 + if has('spell') + " the ctermsp= is not supported in Vim 7 we simply ignored + if 0 + hi SpellBad cterm=undercurl ctermbg=NONE ctermfg=209 + hi SpellCap cterm=undercurl ctermbg=NONE ctermfg=69 + hi SpellRare cterm=undercurl ctermbg=NONE ctermfg=219 + hi SpellLocal cterm=undercurl ctermbg=NONE ctermfg=153 + else + hi SpellBad cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellCap cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellRare cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellLocal cterm=undercurl ctermbg=NONE ctermfg=NONE + endif + endif + hi Pmenu ctermfg=fg ctermbg=90 + hi PmenuSel ctermfg=16 ctermbg=252 cterm=NONE + hi PmenuSbar ctermfg=fg ctermbg=18 cterm=NONE + hi PmenuThumb ctermfg=fg ctermbg=28 cterm=NONE + hi TabLine ctermfg=fg ctermbg=28 cterm=NONE + hi TabLineFill ctermfg=fg ctermbg=28 cterm=NONE + hi TabLineSel ctermfg=fg ctermbg=NONE cterm=NONE + hi CursorColumn ctermfg=NONE ctermbg=88 cterm=NONE + hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline + hi MatchParen ctermfg=NONE ctermbg=90 + hi TabLine cterm=underline + hi TabLineFill cterm=underline + hi Underlined cterm=underline + hi CursorLine cterm=underline + endif + + endif " t_Co + + " }}}2 +endif + +" Links: +" +" COLOR LINKS DEFINE START + +hi link String Constant +" Character must be different from strings because in many languages +" (especially C, C++) a 'char' variable is scalar while 'string' is pointer, +" mistaken a 'char' for a 'string' will cause disaster! +hi link Character Number +hi link SpecialChar LineNr +hi link Tag Identifier +hi link cCppOut LineNr +" The following are not standard hi links, +" these are used by DrChip +hi link Warning MoreMsg +hi link Notice Constant +" these are used by Calendar +hi link CalToday PreProc +" these are used by TagList +hi link MyTagListTagName IncSearch +hi link MyTagListTagScope Constant + +" COLOR LINKS DEFINE END + +" vim:et:nosta:sw=2:ts=8: +" vim600:fdm=marker:fdl=1:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/colors/peaksea2.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,601 @@ +" Vim color file --- psc (peak sea color) "Lite version" +" Maintainer: Pan, Shi Zhu <Go to the following URL for my email> +" URL: http://vim.sourceforge.net/scripts/script.php?script_id=760 +" Last Change: 5 Feb 2010 +" Version: 3.4 +" +" Comments and e-mails are welcomed, thanks. +" +" The peaksea color is simply a colorscheme with the default settings of +" the original ps_color. Lite version means there's no custom settings +" and fancy features such as integration with reloaded.vim +" +" The full version of ps_color.vim will be maintained until Vim 8. +" By then there will be only the lite version: peaksea.vim +" +" Note: Please set the background option in your .vimrc and/or .gvimrc +" +" It is much better *not* to set 'background' option inside +" a colorscheme file. because ":set background" improperly +" may cause colorscheme be sourced twice +" +" Color Scheme Overview: +" :ru syntax/hitest.vim +" +" Relevant Help: +" :h highlight-groups +" :h psc-cterm-color-table +" +" Colors Order: +" #rrggbb +" + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let g:colors_name = expand("<sfile>:t:r") + +" I don't want to abuse folding, but here folding is used to avoid confusion. +if &background=='light' + " for background=light {{{2 + " LIGHT COLOR DEFINE START + + hi Normal guifg=#000000 guibg=#e0e0e0 gui=NONE + hi Search guifg=NONE guibg=#f8f8f8 gui=NONE + hi Visual guifg=NONE guibg=#a6caf0 gui=NONE + hi Cursor guifg=#f0f0f0 guibg=#008000 gui=NONE + " The idea of CursorIM is pretty good, however, the feature is still buggy + " in the current version (Vim 7.0). + " The following line will be kept commented until the bug fixed. + " + " hi CursorIM guifg=#f0f0f0 guibg=#800080 + hi Special guifg=#907000 guibg=NONE gui=NONE + hi Comment guifg=#606000 guibg=NONE gui=NONE + hi Number guifg=#907000 guibg=NONE gui=NONE + hi Constant guifg=#007068 guibg=NONE gui=NONE + hi StatusLine guifg=fg guibg=#a6caf0 gui=NONE + hi LineNr guifg=#686868 guibg=NONE gui=NONE + hi Question guifg=fg guibg=#d0d090 gui=NONE + hi PreProc guifg=#009030 guibg=NONE gui=NONE + hi Statement guifg=#2060a8 guibg=NONE gui=NONE + hi Type guifg=#0850a0 guibg=NONE gui=NONE + hi Todo guifg=#800000 guibg=#e0e090 gui=NONE + " NOTE THIS IS IN THE WARM SECTION + hi Error guifg=#c03000 guibg=NONE gui=NONE + hi Identifier guifg=#a030a0 guibg=NONE gui=NONE + hi ModeMsg guifg=fg guibg=#b0b0e0 gui=NONE + hi VisualNOS guifg=fg guibg=#b0b0e0 gui=NONE + hi SpecialKey guifg=#1050a0 guibg=NONE gui=NONE + hi NonText guifg=#002090 guibg=#d0d0d0 gui=NONE + hi Directory guifg=#a030a0 guibg=NONE gui=NONE + hi ErrorMsg guifg=fg guibg=#f0b090 gui=NONE + hi MoreMsg guifg=#489000 guibg=NONE gui=NONE + hi Title guifg=#a030a0 guibg=NONE gui=NONE + hi WarningMsg guifg=#b02000 guibg=NONE gui=NONE + hi WildMenu guifg=fg guibg=#d0d090 gui=NONE + hi Folded guifg=NONE guibg=#b0e0b0 gui=NONE + hi FoldColumn guifg=fg guibg=#90e090 gui=NONE + hi DiffAdd guifg=NONE guibg=#b0b0e0 gui=NONE + hi DiffChange guifg=NONE guibg=#e0b0e0 gui=NONE + hi DiffDelete guifg=#002090 guibg=#d0d0d0 gui=NONE + hi DiffText guifg=NONE guibg=#c0e080 gui=NONE + hi SignColumn guifg=fg guibg=#90e090 gui=NONE + + hi IncSearch guifg=#f0f0f0 guibg=#806060 gui=NONE + hi StatusLineNC guifg=fg guibg=#c0c0c0 gui=NONE + hi VertSplit guifg=fg guibg=#c0c0c0 gui=NONE + hi Underlined guifg=#6a5acd guibg=NONE gui=underline + hi Ignore guifg=bg guibg=NONE + " NOTE THIS IS IN THE WARM SECTION + if v:version >= 700 + if has('spell') + hi SpellBad guifg=NONE guibg=NONE guisp=#c03000 + hi SpellCap guifg=NONE guibg=NONE guisp=#2060a8 + hi SpellRare guifg=NONE guibg=NONE guisp=#a030a0 + hi SpellLocal guifg=NONE guibg=NONE guisp=#007068 + endif + hi Pmenu guifg=fg guibg=#e0b0e0 + hi PmenuSel guifg=#f0f0f0 guibg=#806060 gui=NONE + hi PmenuSbar guifg=fg guibg=#c0c0c0 gui=NONE + hi PmenuThumb guifg=fg guibg=#c0e080 gui=NONE + hi TabLine guifg=fg guibg=#c0c0c0 gui=NONE + hi TabLineFill guifg=fg guibg=#c0c0c0 gui=NONE + hi TabLineSel guifg=fg guibg=NONE gui=NONE + hi CursorColumn guifg=NONE guibg=#f0b090 + hi CursorLine guifg=NONE guibg=NONE gui=underline + hi MatchParen guifg=NONE guibg=#c0e080 + endif + + " LIGHT COLOR DEFINE END + + " Vim 7 added stuffs + if v:version >= 700 + hi Ignore gui=NONE + + " the gui=undercurl guisp could only support in Vim 7 + if has('spell') + hi SpellBad gui=undercurl + hi SpellCap gui=undercurl + hi SpellRare gui=undercurl + hi SpellLocal gui=undercurl + endif + hi TabLine gui=underline + hi TabLineFill gui=underline + hi CursorLine gui=underline + endif + + " For reversed stuffs, clear the reversed prop and set the bold prop again + hi IncSearch gui=bold + hi StatusLine gui=bold + hi StatusLineNC gui=bold + hi VertSplit gui=bold + hi Visual gui=bold + + " Enable the bold property + hi Question gui=bold + hi DiffText gui=bold + hi Statement gui=bold + hi Type gui=bold + hi MoreMsg gui=bold + hi ModeMsg gui=bold + hi NonText gui=bold + hi Title gui=bold + hi DiffDelete gui=bold + hi TabLineSel gui=bold + + " gui define for background=light end here + + " generally, a dumb terminal is dark, we assume the light terminal has 256 + " color support. + if &t_Co==8 || &t_Co==16 + set t_Co=256 + endif + if &t_Co==256 + " 256color light terminal support here + + hi Normal ctermfg=16 ctermbg=254 cterm=NONE + " Comment/Uncomment the following line to disable/enable transparency + "hi Normal ctermfg=16 ctermbg=NONE cterm=NONE + hi Search ctermfg=NONE ctermbg=231 cterm=NONE + hi Visual ctermfg=NONE ctermbg=153 cterm=NONE + hi Cursor ctermfg=255 ctermbg=28 cterm=NONE + " hi CursorIM ctermfg=255 ctermbg=90 + hi Special ctermfg=94 ctermbg=NONE cterm=NONE + hi Comment ctermfg=58 ctermbg=NONE cterm=NONE + hi Number ctermfg=94 ctermbg=NONE cterm=NONE + hi Constant ctermfg=23 ctermbg=NONE cterm=NONE + hi StatusLine ctermfg=fg ctermbg=153 cterm=NONE + hi LineNr ctermfg=242 ctermbg=NONE cterm=NONE + hi Question ctermfg=fg ctermbg=186 cterm=NONE + hi PreProc ctermfg=29 ctermbg=NONE cterm=NONE + hi Statement ctermfg=25 ctermbg=NONE cterm=NONE + hi Type ctermfg=25 ctermbg=NONE cterm=NONE + hi Todo ctermfg=88 ctermbg=186 cterm=NONE + " NOTE THIS IS IN THE WARM SECTION + hi Error ctermfg=130 ctermbg=NONE cterm=NONE + hi Identifier ctermfg=133 ctermbg=NONE cterm=NONE + hi ModeMsg ctermfg=fg ctermbg=146 cterm=NONE + hi VisualNOS ctermfg=fg ctermbg=146 cterm=NONE + hi SpecialKey ctermfg=25 ctermbg=NONE cterm=NONE + hi NonText ctermfg=18 ctermbg=252 cterm=NONE + " Comment/Uncomment the following line to disable/enable transparency + "hi NonText ctermfg=18 ctermbg=NONE cterm=NONE + hi Directory ctermfg=133 ctermbg=NONE cterm=NONE + hi ErrorMsg ctermfg=fg ctermbg=216 cterm=NONE + hi MoreMsg ctermfg=64 ctermbg=NONE cterm=NONE + hi Title ctermfg=133 ctermbg=NONE cterm=NONE + hi WarningMsg ctermfg=124 ctermbg=NONE cterm=NONE + hi WildMenu ctermfg=fg ctermbg=186 cterm=NONE + hi Folded ctermfg=NONE ctermbg=151 cterm=NONE + hi FoldColumn ctermfg=fg ctermbg=114 cterm=NONE + hi DiffAdd ctermfg=NONE ctermbg=146 cterm=NONE + hi DiffChange ctermfg=NONE ctermbg=182 cterm=NONE + hi DiffDelete ctermfg=18 ctermbg=252 cterm=NONE + hi DiffText ctermfg=NONE ctermbg=150 cterm=NONE + hi SignColumn ctermfg=fg ctermbg=114 cterm=NONE + + hi IncSearch ctermfg=255 ctermbg=95 cterm=NONE + hi StatusLineNC ctermfg=fg ctermbg=250 cterm=NONE + hi VertSplit ctermfg=fg ctermbg=250 cterm=NONE + hi Underlined ctermfg=62 ctermbg=NONE cterm=underline + hi Ignore ctermfg=bg ctermbg=NONE + " NOTE THIS IS IN THE WARM SECTION + if v:version >= 700 + if has('spell') + if 0 + " ctermsp is not supported in Vim7, we ignore it. + hi SpellBad cterm=undercurl ctermbg=NONE ctermfg=130 + hi SpellCap cterm=undercurl ctermbg=NONE ctermfg=25 + hi SpellRare cterm=undercurl ctermbg=NONE ctermfg=133 + hi SpellLocal cterm=undercurl ctermbg=NONE ctermfg=23 + else + hi SpellBad cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellCap cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellRare cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellLocal cterm=undercurl ctermbg=NONE ctermfg=NONE + endif + endif + hi Pmenu ctermfg=fg ctermbg=182 + hi PmenuSel ctermfg=255 ctermbg=95 cterm=NONE + hi PmenuSbar ctermfg=fg ctermbg=250 cterm=NONE + hi PmenuThumb ctermfg=fg ctermbg=150 cterm=NONE + hi TabLine ctermfg=fg ctermbg=250 cterm=NONE + hi TabLineFill ctermfg=fg ctermbg=250 cterm=NONE + hi TabLineSel ctermfg=fg ctermbg=NONE cterm=NONE + hi CursorColumn ctermfg=NONE ctermbg=216 + hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline + hi MatchParen ctermfg=NONE ctermbg=150 + endif + + hi TabLine cterm=underline + hi TabLineFill cterm=underline + hi CursorLine cterm=underline + + " For reversed stuffs, clear the reversed prop and set the bold prop again + hi IncSearch cterm=bold + hi StatusLine cterm=bold + hi StatusLineNC cterm=bold + hi VertSplit cterm=bold + hi Visual cterm=bold + + hi NonText cterm=bold + hi Question cterm=bold + hi Title cterm=bold + hi DiffDelete cterm=bold + hi DiffText cterm=bold + hi Statement cterm=bold + hi Type cterm=bold + hi MoreMsg cterm=bold + hi ModeMsg cterm=bold + hi TabLineSel cterm=bold + + "hi lCursor ctermfg=bg ctermbg=fg cterm=NONE + endif " t_Co==256 + " }}}2 +elseif &background=='dark' + " for background=dark {{{2 + " DARK COLOR DEFINE START + + hi Normal guifg=#d0d0d0 guibg=#202020 gui=NONE + hi Comment guifg=#d0d090 guibg=NONE gui=NONE + hi Constant guifg=#80c0e0 guibg=NONE gui=NONE + hi Number guifg=#e0c060 guibg=NONE gui=NONE + hi Identifier guifg=#f0c0f0 guibg=NONE gui=NONE + hi Statement guifg=#c0d8f8 guibg=NONE gui=NONE + hi PreProc guifg=#60f080 guibg=NONE gui=NONE + hi Type guifg=#b0d0f0 guibg=NONE gui=NONE + hi Special guifg=#e0c060 guibg=NONE gui=NONE + hi Error guifg=#f08060 guibg=#800000 gui=NONE + hi Todo guifg=#800000 guibg=#d0d090 gui=NONE + hi Search guifg=NONE guibg=#800000 gui=NONE + hi Visual guifg=#000000 guibg=#a6caf0 gui=NONE + hi Cursor guifg=#000000 guibg=#00f000 gui=NONE + " NOTE THIS IS IN THE COOL SECTION + " hi CursorIM guifg=#000000 guibg=#f000f0 gui=NONE + hi StatusLine guifg=#000000 guibg=#a6caf0 gui=NONE + hi LineNr guifg=#b0b0b0 guibg=NONE gui=NONE + hi Question guifg=#000000 guibg=#d0d090 gui=NONE + hi ModeMsg guifg=fg guibg=#000080 gui=NONE + hi VisualNOS guifg=fg guibg=#000080 gui=NONE + hi SpecialKey guifg=#b0d0f0 guibg=NONE gui=NONE + hi NonText guifg=#6080f0 guibg=#101010 gui=NONE + hi Directory guifg=#80c0e0 guibg=NONE gui=NONE + hi ErrorMsg guifg=#d0d090 guibg=#800000 gui=NONE + hi MoreMsg guifg=#c0e080 guibg=NONE gui=NONE + hi Title guifg=#f0c0f0 guibg=NONE gui=NONE + hi WarningMsg guifg=#f08060 guibg=NONE gui=NONE + hi WildMenu guifg=#000000 guibg=#d0d090 gui=NONE + hi Folded guifg=NONE guibg=#004000 gui=NONE + hi FoldColumn guifg=#e0e0e0 guibg=#008000 gui=NONE + hi DiffAdd guifg=NONE guibg=#000080 gui=NONE + hi DiffChange guifg=NONE guibg=#800080 gui=NONE + hi DiffDelete guifg=#6080f0 guibg=#202020 gui=NONE + hi DiffText guifg=#000000 guibg=#c0e080 gui=NONE + hi SignColumn guifg=#e0e0e0 guibg=#008000 gui=NONE + hi IncSearch guifg=#000000 guibg=#d0d0d0 gui=NONE + hi StatusLineNC guifg=#000000 guibg=#c0c0c0 gui=NONE + hi VertSplit guifg=#000000 guibg=#c0c0c0 gui=NONE + hi Underlined guifg=#80a0ff guibg=NONE gui=underline + hi Ignore guifg=#000000 guibg=NONE + " NOTE THIS IS IN THE COOL SECTION + if v:version >= 700 + if has('spell') + " the guisp= could only support in Vim 7 + hi SpellBad guifg=NONE guibg=NONE guisp=#f08060 + hi SpellCap guifg=NONE guibg=NONE guisp=#6080f0 + hi SpellRare guifg=NONE guibg=NONE guisp=#f0c0f0 + hi SpellLocal guifg=NONE guibg=NONE guisp=#c0d8f8 + endif + hi Pmenu guifg=fg guibg=#800080 + hi PmenuSel guifg=#000000 guibg=#d0d0d0 gui=NONE + hi PmenuSbar guifg=fg guibg=#000080 gui=NONE + hi PmenuThumb guifg=fg guibg=#008000 gui=NONE + hi TabLine guifg=fg guibg=#008000 gui=NONE + hi TabLineFill guifg=fg guibg=#008000 gui=NONE + hi TabLineSel guifg=fg guibg=NONE gui=NONE + hi CursorColumn guifg=NONE guibg=#800000 gui=NONE + hi CursorLine guifg=NONE guibg=NONE gui=underline + hi MatchParen guifg=NONE guibg=#800080 + endif + + " DARK COLOR DEFINE END + + " Vim 7 added stuffs + if v:version >= 700 + hi Ignore gui=NONE + + " the gui=undercurl could only support in Vim 7 + if has('spell') + hi SpellBad gui=undercurl + hi SpellCap gui=undercurl + hi SpellRare gui=undercurl + hi SpellLocal gui=undercurl + endif + hi TabLine gui=underline + hi TabLineFill gui=underline + hi Underlined gui=underline + hi CursorLine gui=underline + endif + + " gui define for background=dark end here + + if &t_Co==8 || &t_Co==16 + " for 8-color and 16-color term + hi Normal ctermfg=LightGrey ctermbg=Black + hi Special ctermfg=Yellow ctermbg=bg + hi Comment ctermfg=DarkYellow ctermbg=bg + hi Constant ctermfg=Blue ctermbg=bg + hi Number ctermfg=Yellow ctermbg=bg + hi LineNr ctermfg=DarkGrey ctermbg=bg + hi PreProc ctermfg=Green ctermbg=bg + hi Statement ctermfg=Cyan ctermbg=bg + hi Type ctermfg=Cyan ctermbg=bg + hi Error ctermfg=Red ctermbg=DarkRed + hi Identifier ctermfg=Magenta ctermbg=bg + hi SpecialKey ctermfg=Cyan ctermbg=bg + hi NonText ctermfg=Blue ctermbg=bg + hi Directory ctermfg=Blue ctermbg=bg + hi MoreMsg ctermfg=Green ctermbg=bg + hi Title ctermfg=Magenta ctermbg=bg + hi WarningMsg ctermfg=Red ctermbg=bg + hi DiffDelete ctermfg=Blue ctermbg=bg + + hi Search ctermfg=NONE ctermbg=DarkRed + hi Visual ctermfg=Black ctermbg=DarkCyan + hi Cursor ctermfg=Black ctermbg=Green + hi StatusLine ctermfg=Black ctermbg=DarkCyan + hi Question ctermfg=Black ctermbg=DarkYellow + hi Todo ctermfg=DarkRed ctermbg=DarkYellow + hi Folded ctermfg=White ctermbg=DarkGreen + hi ModeMsg ctermfg=Grey ctermbg=DarkBlue + hi VisualNOS ctermfg=Grey ctermbg=DarkBlue + hi ErrorMsg ctermfg=DarkYellow ctermbg=DarkRed + hi WildMenu ctermfg=Black ctermbg=DarkYellow + hi FoldColumn ctermfg=White ctermbg=DarkGreen + hi SignColumn ctermfg=White ctermbg=DarkGreen + hi DiffText ctermfg=Black ctermbg=DarkYellow + + if v:version >= 700 + if has('spell') + hi SpellBad ctermfg=NONE ctermbg=DarkRed + hi SpellCap ctermfg=NONE ctermbg=DarkBlue + hi SpellRare ctermfg=NONE ctermbg=DarkMagenta + hi SpellLocal ctermfg=NONE ctermbg=DarkGreen + endif + hi Pmenu ctermfg=fg ctermbg=DarkMagenta + hi PmenuSel ctermfg=Black ctermbg=fg + hi PmenuSbar ctermfg=fg ctermbg=DarkBlue + hi PmenuThumb ctermfg=fg ctermbg=DarkGreen + hi TabLine ctermfg=fg ctermbg=DarkGreen cterm=underline + hi TabLineFill ctermfg=fg ctermbg=DarkGreen cterm=underline + hi CursorColumn ctermfg=NONE ctermbg=DarkRed + + hi TabLineSel ctermfg=fg ctermbg=bg + hi CursorLine ctermfg=NONE ctermbg=bg cterm=underline + + hi MatchParen ctermfg=NONE ctermbg=DarkMagenta + endif + if &t_Co==8 + " 8 colour terminal support, this assumes 16 colour is available through + " setting the 'bold' attribute, will get bright foreground colour. + " However, the bright background color is not available for 8-color terms. + " + " You can manually set t_Co=16 in your .vimrc to see if your terminal + " supports 16 colours, + hi DiffText cterm=none + hi Visual cterm=none + hi Cursor cterm=none + hi Comment cterm=none + hi Todo cterm=none + hi StatusLine cterm=none + hi Question cterm=none + hi DiffChange cterm=none + hi ModeMsg cterm=none + hi VisualNOS cterm=none + hi ErrorMsg cterm=none + hi WildMenu cterm=none + hi DiffAdd cterm=none + hi Folded cterm=none + hi DiffDelete cterm=none + hi Normal cterm=none + hi PmenuThumb cterm=none + hi Search cterm=bold + hi Special cterm=bold + hi Constant cterm=bold + hi Number cterm=bold + hi LineNr cterm=bold + hi PreProc cterm=bold + hi Statement cterm=bold + hi Type cterm=bold + hi Error cterm=bold + hi Identifier cterm=bold + hi SpecialKey cterm=bold + hi NonText cterm=bold + hi MoreMsg cterm=bold + hi Title cterm=bold + hi WarningMsg cterm=bold + hi FoldColumn cterm=bold + hi SignColumn cterm=bold + hi Directory cterm=bold + hi DiffDelete cterm=bold + else + " Background > 7 is only available with 16 or more colors + + hi WarningMsg cterm=none + hi Search cterm=none + hi Visual cterm=none + hi Cursor cterm=none + hi Special cterm=none + hi Comment cterm=none + hi Constant cterm=none + hi Number cterm=none + hi LineNr cterm=none + hi PreProc cterm=none + hi Todo cterm=none + hi Error cterm=none + hi Identifier cterm=none + hi Folded cterm=none + hi SpecialKey cterm=none + hi Directory cterm=none + hi ErrorMsg cterm=none + hi Normal cterm=none + hi PmenuThumb cterm=none + hi WildMenu cterm=none + hi FoldColumn cterm=none + hi SignColumn cterm=none + hi DiffAdd cterm=none + hi DiffChange cterm=none + hi Question cterm=none + hi StatusLine cterm=none + hi DiffText cterm=none + hi IncSearch cterm=reverse + hi StatusLineNC cterm=reverse + hi VertSplit cterm=reverse + + " Well, well, bold font with color 0-7 is not possible. + " So, the Question, StatusLine, DiffText cannot act as expected. + + hi Statement cterm=none + hi Type cterm=none + hi MoreMsg cterm=none + hi ModeMsg cterm=none + hi NonText cterm=none + hi Title cterm=none + hi VisualNOS cterm=none + hi DiffDelete cterm=none + hi TabLineSel cterm=none + + endif + elseif &t_Co==256 + " 256color dark terminal support here + hi Normal ctermfg=252 ctermbg=234 cterm=NONE + " Comment/Uncomment the following line to disable/enable transparency + "hi Normal ctermfg=252 ctermbg=NONE cterm=NONE + hi Comment ctermfg=186 ctermbg=NONE cterm=NONE + hi Constant ctermfg=110 ctermbg=NONE cterm=NONE + hi Number ctermfg=179 ctermbg=NONE cterm=NONE + hi Identifier ctermfg=219 ctermbg=NONE cterm=NONE + hi Statement ctermfg=153 ctermbg=NONE cterm=NONE + hi PreProc ctermfg=84 ctermbg=NONE cterm=NONE + hi Type ctermfg=153 ctermbg=NONE cterm=NONE + hi Special ctermfg=179 ctermbg=NONE cterm=NONE + hi Error ctermfg=209 ctermbg=88 cterm=NONE + hi Todo ctermfg=88 ctermbg=186 cterm=NONE + hi Search ctermfg=NONE ctermbg=88 cterm=NONE + hi Visual ctermfg=16 ctermbg=153 cterm=NONE + hi Cursor ctermfg=16 ctermbg=46 cterm=NONE + " NOTE THIS IS IN THE COOL SECTION + " hi CursorIM ctermfg=16 ctermbg=201 cterm=NONE + hi StatusLine ctermfg=16 ctermbg=153 cterm=NONE + hi LineNr ctermfg=249 ctermbg=NONE cterm=NONE + hi Question ctermfg=16 ctermbg=186 cterm=NONE + hi ModeMsg ctermfg=fg ctermbg=18 cterm=NONE + hi VisualNOS ctermfg=fg ctermbg=18 cterm=NONE + hi SpecialKey ctermfg=153 ctermbg=NONE cterm=NONE + hi NonText ctermfg=69 ctermbg=233 cterm=NONE + " Comment/Uncomment the following line to disable/enable transparency + "hi NonText ctermfg=69 ctermbg=NONE cterm=NONE + hi Directory ctermfg=110 ctermbg=NONE cterm=NONE + hi ErrorMsg ctermfg=186 ctermbg=88 cterm=NONE + hi MoreMsg ctermfg=150 ctermbg=NONE cterm=NONE + hi Title ctermfg=219 ctermbg=NONE cterm=NONE + hi WarningMsg ctermfg=209 ctermbg=NONE cterm=NONE + hi WildMenu ctermfg=16 ctermbg=186 cterm=NONE + hi Folded ctermfg=NONE ctermbg=22 cterm=NONE + hi FoldColumn ctermfg=254 ctermbg=28 cterm=NONE + hi DiffAdd ctermfg=NONE ctermbg=18 cterm=NONE + hi DiffChange ctermfg=NONE ctermbg=90 cterm=NONE + hi DiffDelete ctermfg=69 ctermbg=234 cterm=NONE + hi DiffText ctermfg=16 ctermbg=150 cterm=NONE + hi SignColumn ctermfg=254 ctermbg=28 cterm=NONE + hi IncSearch ctermfg=16 ctermbg=252 cterm=NONE + hi StatusLineNC ctermfg=16 ctermbg=250 cterm=NONE + hi VertSplit ctermfg=16 ctermbg=250 cterm=NONE + hi Underlined ctermfg=111 ctermbg=NONE cterm=underline + hi Ignore ctermfg=16 ctermbg=NONE + " NOTE THIS IS IN THE COOL SECTION + if v:version >= 700 + if has('spell') + " the ctermsp= is not supported in Vim 7 we simply ignored + if 0 + hi SpellBad cterm=undercurl ctermbg=NONE ctermfg=209 + hi SpellCap cterm=undercurl ctermbg=NONE ctermfg=69 + hi SpellRare cterm=undercurl ctermbg=NONE ctermfg=219 + hi SpellLocal cterm=undercurl ctermbg=NONE ctermfg=153 + else + hi SpellBad cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellCap cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellRare cterm=undercurl ctermbg=NONE ctermfg=NONE + hi SpellLocal cterm=undercurl ctermbg=NONE ctermfg=NONE + endif + endif + hi Pmenu ctermfg=fg ctermbg=90 + hi PmenuSel ctermfg=16 ctermbg=252 cterm=NONE + hi PmenuSbar ctermfg=fg ctermbg=18 cterm=NONE + hi PmenuThumb ctermfg=fg ctermbg=28 cterm=NONE + hi TabLine ctermfg=fg ctermbg=28 cterm=NONE + hi TabLineFill ctermfg=fg ctermbg=28 cterm=NONE + hi TabLineSel ctermfg=fg ctermbg=NONE cterm=NONE + hi CursorColumn ctermfg=NONE ctermbg=88 cterm=NONE + hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline + hi MatchParen ctermfg=NONE ctermbg=90 + hi TabLine cterm=underline + hi TabLineFill cterm=underline + hi Underlined cterm=underline + hi CursorLine cterm=underline + endif + + endif " t_Co + + " }}}2 +endif + +" Links: +" +" COLOR LINKS DEFINE START + +hi link String Constant +" Character must be different from strings because in many languages +" (especially C, C++) a 'char' variable is scalar while 'string' is pointer, +" mistaken a 'char' for a 'string' will cause disaster! +hi link Character Number +hi link SpecialChar LineNr +hi link Tag Identifier +hi link cCppOut LineNr +" The following are not standard hi links, +" these are used by DrChip +hi link Warning MoreMsg +hi link Notice Constant +" these are used by Calendar +hi link CalToday PreProc +" these are used by TagList +hi link MyTagListTagName IncSearch +hi link MyTagListTagScope Constant + +" COLOR LINKS DEFINE END + +" vim:et:nosta:sw=2:ts=8: +" vim600:fdm=marker:fdl=1:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/doc/ctrlp.txt Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,670 @@ +*ctrlp.txt* Fuzzy file, buffer, mru and tag finder. v1.6.4 +*CtrlP* *ControlP* *'ctrlp'* *'ctrl-p'* +=============================================================================== +# # +# :::::::: ::::::::::: ::::::::: ::: ::::::::: # +# :+: :+: :+: :+: :+: :+: :+: :+: # +# +:+ +:+ +:+ +:+ +:+ +:+ +:+ # +# +#+ +#+ +#++:++#: +#+ +#++:++#+ # +# +#+ +#+ +#+ +#+ +#+ +#+ # +# #+# #+# #+# #+# #+# #+# #+# # +# ######## ### ### ### ########## ### # +# # +=============================================================================== +CONTENTS *ctrlp-contents* + + 1. Intro........................................|ctrlp-intro| + 2. Options......................................|ctrlp-options| + 3. Commands.....................................|ctrlp-commands| + 4. Mappings.....................................|ctrlp-mappings| + 5. Input Formats................................|ctrlp-input-formats| + 6. Extensions...................................|ctrlp-extensions| + +=============================================================================== +1. Intro *ctrlp-intro* + +Full path fuzzy file, buffer and MRU file finder with an intuitive interface. +Written in pure Vimscript for MacVim and Vim version 7.0+. Has full support for +Vim’s |regexp| as search pattern, built-in MRU monitoring, project’s root +finder, and more. + +To enable optional extensions (tag, quickfix, dir...), see |ctrlp-extensions|. + +=============================================================================== +2. Options *ctrlp-options* + +Below are the available options and their default values:~ + + *'g:ctrlp_map'* +Use this option to change the mapping to invoke |CtrlP| in |Normal| mode: > + let g:ctrlp_map = '<c-p>' +< + + *'g:loaded_ctrlp'* +Use this option to disable the plugin completely: > + let g:loaded_ctrlp = 1 +< + + *'g:ctrlp_by_filename'* +Set this to 1 to set search by filename (not full path) as the default: > + let g:ctrlp_by_filename = 0 +< + + *'g:ctrlp_regexp_search'* +Set this to 1 to set |regexp| search as the default: > + let g:ctrlp_regexp_search = 0 +< + + *'g:ctrlp_match_window_bottom'* +Set this to 0 to show the match window at the top of the screen: > + let g:ctrlp_match_window_bottom = 1 +< + + *'g:ctrlp_match_window_reversed'* +Reverse the sort order of the matched files in the match window. The default +setting is from bottom to top: > + let g:ctrlp_match_window_reversed = 1 +< + + *'g:ctrlp_max_height'* +Set the maximum height of the match window: > + let g:ctrlp_max_height = 10 +< + + *'g:ctrlp_jump_to_buffer'* +Set this to 0 to disable the jump-to-open-buffer feature. Set to 2 to also jump +tab if the selected buffer’s opened in another tab: > + let g:ctrlp_jump_to_buffer = 1 +< + + *'g:ctrlp_working_path_mode'* +When starting up the prompt, temporarily set the working directory (i.e. the +|current-directory|) to: + 1 - the parent directory of the current file. + 2 - the nearest ancestor that contains one of these directories/files: + .git/ + .hg/ + .bzr/ + _darcs/ + root.dir + .vimprojects + 0 - don’t manage working directory. +> + let g:ctrlp_working_path_mode = 2 +< + + *'g:ctrlp_root_markers'* +Use this to set your own root markers in addition to the default ones. Your +markers will take precedence: > + let g:ctrlp_root_markers = [''] +< +These markers (builtins and yours) will serve as identifiers for the '/' and +'\' special inputs (section 5.e) + + *'g:ctrlp_use_caching'* +Set this to 0 to disable per-session caching. When disabled, caching will still +be enabled for directories that have more than 4000 files: > + let g:ctrlp_use_caching = 1 +< +Note: you can quickly purge the cache by pressing <F5> while inside |CtrlP|. + + *'g:ctrlp_clear_cache_on_exit'* +Set this to 0 to enable cross-sessions caching: > + let g:ctrlp_clear_cache_on_exit = 1 +< + + *'g:ctrlp_cache_dir'* +Set the directory to store the cache files: > + let g:ctrlp_cache_dir = $HOME.'/.ctrlp_cache' +< + + *'g:ctrlp_prompt_mappings'* +Use this to customize the mappings inside |CtrlP|’s prompt to your liking. You +only need to keep the lines that you’ve changed the values (inside []): > + let g:ctrlp_prompt_mappings = { + \ 'PrtBS()': ['<bs>'], + \ 'PrtDelete()': ['<del>'], + \ 'PrtDeleteWord()': ['<c-w>'], + \ 'PrtClear()': ['<c-u>'], + \ 'PrtSelectMove("j")': ['<c-j>', '<down>'], + \ 'PrtSelectMove("k")': ['<c-k>', '<up>'], + \ 'PrtHistory(-1)': ['<c-n>'], + \ 'PrtHistory(1)': ['<c-p>'], + \ 'AcceptSelection("e")': ['<cr>', '<2-LeftMouse>'], + \ 'AcceptSelection("h")': ['<c-x>', '<c-cr>', '<c-s>'], + \ 'AcceptSelection("t")': ['<c-t>', '<MiddleMouse>'], + \ 'AcceptSelection("v")': ['<c-v>', '<c-q>', '<RightMouse>'], + \ 'ToggleFocus()': ['<tab>'], + \ 'ToggleRegex()': ['<c-r>'], + \ 'ToggleByFname()': ['<c-d>'], + \ 'ToggleType(1)': ['<c-f>', '<c-up'], + \ 'ToggleType(-1)': ['<c-b>', '<c-down>'], + \ 'PrtCurStart()': ['<c-a>'], + \ 'PrtCurEnd()': ['<c-e>'], + \ 'PrtCurLeft()': ['<c-h>', '<left>'], + \ 'PrtCurRight()': ['<c-l>', '<right>'], + \ 'PrtClearCache()': ['<F5>'], + \ 'PrtDeleteMRU()': ['<F7>'], + \ 'CreateNewFile()': ['<c-y>'], + \ 'MarkToOpen()': ['<c-z>'], + \ 'OpenMulti()': ['<c-o>'], + \ 'PrtExit()': ['<esc>', '<c-c>', '<c-g>'], + \ } +< +If you have problem with <bs> moving left instead of deleting a char, add this +to your |vimrc|: > + let g:ctrlp_prompt_mappings = { + \ 'PrtBS()': ['<c-h>'], + \ 'PrtCurLeft()': ['<left>'], + \ } +< + + *'g:ctrlp_mruf_max'* +Specify the number of recently opened files you want |CtrlP| to remember: > + let g:ctrlp_mruf_max = 250 +< + + *'g:ctrlp_mruf_exclude'* +Files you don’t want |CtrlP| to remember; use |regexp| to specify the patterns: +> + let g:ctrlp_mruf_exclude = '' +< +Examples: > + let g:ctrlp_mruf_exclude = '/tmp/.*\|/temp/.*' " MacOSX/Linux + let g:ctrlp_mruf_exclude = '^C:\\dev\\tmp\\.*' " Windows +< + + *'g:ctrlp_mruf_include'* +And if you want |CtrlP| to only remember some files, specify them here: > + let g:ctrlp_mruf_include = '' +< +Example: > + let g:ctrlp_mruf_include = '\.py$\|\.rb$' +< + + *'g:ctrlp_mruf_case_sensitive'* +Match this with your file system case-sensitivity setting to avoid duplicate +MRU entries: > + let g:ctrlp_mruf_case_sensitive = 1 +< + + *'g:ctrlp_dotfiles'* +Set this to 0 if you don’t want |CtrlP| to search for dotfiles and dotdirs: > + let g:ctrlp_dotfiles = 1 +< +You can also use |'wildignore'| to exclude anything from the search. +e.g. exclude version control directories from the results: > + set wildignore+=*/.git/*,*/.hg/*,*/.svn/* " Linux/MacOSX + set wildignore+=.git\*,.hg\*,.svn\* " Windows +< +Note: the `*/` in front of each dotfile glob is required for the dotfiles +search feature to work correctly along side with |wildignore|. If you’ve +disabled dotfiles search (set |g:ctrlp_dotfiles| to 0), then you can ignore +this. + +Other note: |wildignore| influences the result of |expand()|, |globpath()| and +|glob()| which many plugins use to find stuff on the system (e.g. fugitive.vim +looks for .git/, some other plugins look for external exe tools on Windows). +So be a little mindful of what you put in your |wildignore|. + + *'g:ctrlp_highlight_match'* +Use this to enable/disable highlighting of the matched patterns and to specify +the highlight group that’ll be used: > + let g:ctrlp_highlight_match = [1, 'Identifier'] +< + + *'g:ctrlp_max_files'* +The maximum number of files to scan, set to 0 for no limit: > + let g:ctrlp_max_files = 20000 +< + + *'g:ctrlp_max_depth'* +The maximum depth of a directory tree to recurse into: > + let g:ctrlp_max_depth = 40 +< +Note: the larger these values, the more memory Vim uses. + + *'g:ctrlp_user_command'* +Specify an external tool to use for listing files instead of Vim’s globpath(). +Use %s in place of the target directory: > + let g:ctrlp_user_command = '' +< +Examples: > + let g:ctrlp_user_command = 'find %s -type f' " MacOSX/Linux + let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d' " Windows +< +You can also use 'grep', 'findstr' or something else to filter the results. +Examples: > + let g:ctrlp_user_command = 'find %s -type f | grep (?!tmp/.*)' + let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d | findstr .*\.py$' +< +Use a version control listing command when inside a repository, this is a lot +faster when working with large projects: > + let g:ctrlp_user_command = [repo_marker, vcs_ls_command, fallback_command] +< +If the fallback_command is empty or not defined, globpath() will then be used +when searching outside a repo. +Examples: > + let g:ctrlp_user_command = ['.git/', 'cd %s && git ls-files'] + let g:ctrlp_user_command = ['.hg/', 'hg --cwd %s locate --fullpath -I .'] +< + + *'g:ctrlp_open_new_file'* +Use this option to specify how the newly created file is to be opened when +pressing <c-y>: + 1 - in a new tab + 2 - in a new horizontal split + 3 - in a new vertical split + 0 - in the current window +> + let g:ctrlp_open_new_file = 3 +< + + *'g:ctrlp_max_history'* +The maximum number of input strings you want |CtrlP| to remember. The default +value mirrors Vim’s global |'history'| option: > + let g:ctrlp_max_history = &history +< +Set to 0 to disable prompt’s history. + + *'g:ctrlp_open_multi'* +If non-zero, this will enable opening multiple files with <c-z> and <c-o>: > + let g:ctrlp_open_multi = '1v' +< +For the number: + If bigger than 1, it’ll be used as the maximum number of windows or tabs to + create when opening the files (the rest will be hidden buffers). If is 1, + <c-o> will open all files, each in a new window or new tab. +For the letter: + t - each in a tab + h - each in a horizontal split + v - each in a vertical split + + *'g:ctrlp_dont_split'* +When opening a file with <cr>, |CtrlP| avoids opening it in windows created by +plugins, help and quickfix. Use this to setup some exceptions: > + let g:ctrlp_dont_split = '' +< +Acceptable values are partial names or filetypes of the special buffers. Use +|regexp| to specify the pattern. Example: > + let g:ctrlp_dont_split = 'netrw\|help' +< + + *'g:ctrlp_follow_symlinks'* +Set this to 1 to follow symbolic links when listing files: > + let g:ctrlp_follow_symlinks = 0 +< + + *'g:ctrlp_lazy_update'* +Set this to 1 to enable the lazy-update feature: only update the match window +after typing’s been stopped for a certain amount of time: > + let g:ctrlp_lazy_update = 0 +< +If is 1, update after 250ms. If bigger than 1, the number will be used as the +delay time in milliseconds. + + *'g:ctrlp_use_migemo'* +Set this to 1 to use Migemo Pattern for Japanese filenames. Migemo Search only +works in |regexp| mode. To split the pattern, separate words with space: > + let g:ctrlp_use_migemo = 0 +< + +=============================================================================== +3. Commands *ctrlp-commands* + + *:CtrlP* +:CtrlP [starting-directory] + Open |CtrlP| in find file mode. + + If no argument is given, the value of |g:ctrlp_working_path_mode| will be + used to determine the starting directory. + You can use <tab> to auto-complete the [starting-directory] when typing it. + + *:CtrlPBuffer* +:CtrlPBuffer + Open |CtrlP| in find buffer mode. + + *:CtrlPMRU* +:CtrlPMRU + Open |CtrlP| in find Most-Recently-Used file mode. + + *:ClearCtrlPCache* +:ClearCtrlPCache + Flush the cache for the current working directory. The same as pressing <F5> + inside |CtrlP|. + + *:ClearAllCtrlPCaches* +:ClearAllCtrlPCaches + Delete all the cache files saved in |ctrlp_cache_dir|. + + *:ResetCtrlP* +:ResetCtrlP + Reset all options, take in new values of the option variables in section 2. + +------------------------------------------------------------------------------- +The following commands ignore the current value of |g:ctrlp_working_path_mode|: + +:CtrlPCurWD *:CtrlPCurWD* + This acts like |:CtrlP| with |path_mode| = 0 + +:CtrlPCurFile *:CtrlPCurFile* + This acts like |:CtrlP| with |path_mode| = 1 + +:CtrlPRoot *:CtrlPRoot* + This acts like |:CtrlP| with |path_mode| = 2 + +=============================================================================== +4. Mappings *ctrlp-mappings* + + *'ctrlp-<c-p>'* +<c-p> + Default |Normal| mode mapping to open the |CtrlP| prompt in find file mode. + +Once inside the prompt:~ + + <c-r> *'ctrlp-fullregexp'* + Toggle between the string mode (section 5.a & b) and full |regexp| mode. + (note: in full |regexp| mode, the prompt’s base is 'r>>' instead of '>>>') + + See also |input-formats| and |g:ctrlp_regexp_search|. + + <c-d> + Toggle between full path search and filename only search. + (note: in filename mode, the prompt’s base is '>d>' instead of '>>>') + + <c-f>, 'forward' + <c-up> + Scroll to the 'next' search mode in the sequence. + + <c-b>, 'backward' + <c-down> + Scroll to the 'previous' search mode in the sequence. + + <tab> + Toggle the focus between the match window and the prompt. + + <c-j>, + <down> + Move selection down + + <c-k>, + <up> + Move selection up + + <c-a> + Move the cursor to the 'start' of the prompt + + <c-e> + Move the cursor to the 'end' of the prompt + + <c-h>, + <left> + Move the cursor one character to the 'left' + + <c-l>, + <right> + Move the cursor one character to the 'right' + + <c-w> + Delete a preceding inner word + + <c-u> + Clear the input field + + <cr> + Open selected file in the active window if possible. + + <c-t> + Open selected file in a new 'tab' + + <c-v> + Open selected file in a 'vertical' split + + <c-cr>, + <c-s>, + <c-x> + Open selected file in a 'horizontal' split + + <c-y> + Create a new file and its parent directories. + + <c-n> + Next string in the prompt’s history + + <c-p> + Previous string in the prompt’s history + + <c-z> + Mark/unmark a file to be opened with <c-o>. + + <c-o> + Open files marked by <c-z>. + + <F5> + - Refresh the match window and purge the cache for the current directory. + - Remove deleted files from MRU list. + + <F7> + Clear MRU list. + + <esc>, + <c-c>, + <c-g> + Exit |CtrlP|. <c-c> can also be used to stop the file scan. + +Choose your own mappings with |g:ctrlp_prompt_mappings|. + +When inside the match window (press <tab> to switch):~ + + a-z + 0-9 + ~^-=;`',.+!@#$%&_(){}[] + Cycle through the lines with the first letter (of paths or filenames) that + matches that key. + +=============================================================================== +5. Input Formats *ctrlp-input-formats* + +Formats for inputting in the prompt:~ + +a) Simple string. + e.g. 'abc' is understood internally as 'a[^a]\{-}b[^b]\{-}c' + +b) Vim |regexp|. If the input string contains '*' or '|', it’ll be treated as + a Vim’s |regexp| |pattern| without any modification. + e.g. 'abc\d*efg' will be read as 'abc\d*efg'. + + See also |ctrlp-fullregexp| (key map) and |g:ctrlp_regexp_search| (option). + +c) End the string with a colon ':' followed by a Vim command to execute that + command after opening the file. If you need to use ':' in the command, + escape it with a backslash: '\:'. + e.g. 'abc:45' will open the selected file and jump to line 45. + 'abc:/my\:function' will open the selected file and jump to the first + instance of 'my:function'. + 'abc:+setf\ myfiletype|50' will open the selected file and set its + filetype to 'myfiletype' then jump to line 50. + + See also Vim’s |++opt| and |+cmd|. + +d) Type exactly two dots '..' at the start of the prompt and press enter to go + backward in the directory tree by 1 level. If the parent directory is + large, this might be slow. + +e) Similarly submit '/' or '\' to find and go to the project’s root. If the + project is large, using a VCS listing command to look for files might help + speeding up the intial scan (see |g:ctrlp_user_command| for more details). + +f) Type the name of a non-existent file and press <c-y> to create it. + e.g. 'parentdir/file.txt' will create a directory named 'parentdir' as well + as 'file.txt'. + Use '\' in place of '/' on Windows (if |'ssl'| is not set). + +g) Submit ? to open this help file. + +=============================================================================== +6. Extensions *g:ctrlp-extensions* + +Extensions are optional. To enable an extension, add its name to the variable +g:ctrlp_extensions: > + let g:ctrlp_extensions = ['tag', 'quickfix', 'dir'] +< +The order of the items will be the order they appear on the statusline and when +using <c-f>, <c-b>. + +Available extensions:~ + + *:CtrlPTag* + * Tag mode:~ + - Name: 'tag' + - Command: ':CtrlPTag' + - Search for a tag within a generated central tags file, and jump to the + definition. Use the Vim’s option |'tags'| to specify the names and the + locations of the tags file(s). Example: `set tags+=tags/help,doc/tags` + + *:CtrlPQuickfix* + * Quickfix mode:~ + - Name: 'quickfix' + - Command: ':CtrlPQuickfix' + - Search for an entry in the current quickfix errors and jump to it. + + *:CtrlPDir* + * Directory mode:~ + - Name: 'dir' + - Command: ':CtrlPDir' + - Search for a directory and change the working directory to it. + - Mappings: + + <cr> change the local working directory for |CtrlP| and keep it open. + + <c-t> change the global working directory (exit). + + <c-v> change the local working directory for the current window (exit). + + <c-x> change the global working directory to |CtrlP|’s current local + working directory (exit). + +=============================================================================== +EXTENDING *ctrlp-extending* + +Extending |CtrlP| is very simple. Simply create a vim file following a short +guidelines, place it in autoload/ctrlp/ and add its name to your .vimrc. + +To see how it works, get the sample.vim from the extensions branch on the main +git repository (https://github.com/kien/ctrlp.vim/tree/extensions), and place +it along with the parent directories somewhere in your runtimepath. Then put +this into your .vimrc: > + let g:ctrlp_extensions = ['sample'] +< +A new search type will show up the next time you open |CtrlP|. + +For more details, check out the comments inside sample.vim.~ + +=============================================================================== +CREDITS *ctrlp-credits* + +Developed by Kien Nguyen <github.com/kien>, initially based on the Command-T +and the LustyExplorer plugins. No code was taken from these plugins, but I did +clone the majority of their (awesome) interfaces and the way they work. + +This was originally written as a module for a would-be larger plugin called +AutoDoc.vim which I’ve stopped developing because of lost of interest. I really +liked the way Command-T and LustyExplorer deal with user’s input, so I wrote a +pure Vimscript version of their prompt window, intended to use it for the +aforementioned plugin. + +Homepage: http://kien.github.com/ctrlp.vim +Git repository: https://github.com/kien/ctrlp.vim +Mercurial repository: https://bitbucket.org/kien/ctrlp.vim + +=============================================================================== +THANKS *ctrlp-thanks* + +Thanks to everyone that has submitted ideas, bug reports or helped debugging on +gibhub, bitbucket, and through email. + +Special thanks:~ + + * Woojong Koh <github.com/wjkoh> + Forked and suggested the support for VCS listing commands. + + * Yasuhiro Matsumoto <github.com/mattn> + Added option to use Migemo for Japanese language. + +=============================================================================== +CHANGELOG *ctrlp-changelog* + +Before 2011/11/30~ + + + New features: Tag, Quickfix and Directory extensions. + + New commands: |:CtrlPTag|, |:CtrlPQuickfix|, |:CtrlPDir|. + + New options: |g:ctrlp_use_migemo|, + |g:ctrlp_lazy_update|, + |g:ctrlp_follow_symlinks| + +Before 2011/11/13~ + + + New special input: '/' and '\' find root (section 5.e) + + Remove ctrlp#SetWorkingPath(). + + Remove |g:ctrlp_mru_files|, make MRU permanent. + + Extend |g:ctrlp_open_multi|, add new ways to open files. + + New option: |g:ctrlp_dont_split|, + |g:ctrlp_mruf_case_sensitive| + +Before 2011/10/30~ + + + New feature: Support for custom extensions. + <F5> also removes non-existent files from MRU list. + + New option: |g:ctrlp_jump_to_buffer| + +Before 2011/10/12~ + + + New features: Open multiple files. + Pass Vim’s |++opt| and |+cmd| to the opening file + (section 5.c) + Auto-complete each dir for |:CtrlP| [starting-directory] + + New mappings: <c-z> mark/unmark a file to be opened with <c-o>. + <c-o> open all marked files. + + New option: |g:ctrlp_open_multi| + + Remove |g:ctrlp_persistent_input|, |g:ctrlp_live_update| and <c-^>. + +Before 2011/09/29~ + + + New mappings: <c-n>, <c-p> next/prev string in the input history. + <c-y> create a new file and its parent dirs. + + New options: |g:ctrlp_open_new_file|, + |g:ctrlp_max_history| + + Added a new open-in-horizontal-split mapping: <c-x> + +Before 2011/09/19~ + + + New command: |ResetCtrlP| + + New options: |g:ctrlp_max_files|, + |g:ctrlp_max_depth|, + |g:ctrlp_live_update| + + New mapping: <c-^> + +Before 2011/09/12~ + + + Ability to cycle through matched lines in the match window. + + Extend the behavior of |g:ctrlp_persistent_input| + + Extend the behavior of |:CtrlP| + + New options: |g:ctrlp_dotfiles|, + |g:ctrlp_clear_cache_on_exit|, + |g:ctrlp_highlight_match|, + |g:ctrlp_user_command| + + New special input: '..' (section 5.d) + + New mapping: <F5>. + + New commands: |:CtrlPCurWD|, + |:CtrlPCurFile|, + |:CtrlPRoot| + + + New feature: Search in most recently used (MRU) files + + New mapping: <c-b>. + + Extended the behavior of <c-f>. + + New options: |g:ctrlp_mru_files|, + |g:ctrlp_mruf_max|, + |g:ctrlp_mruf_exclude|, + |g:ctrlp_mruf_include| + + New command: |:CtrlPMRUFiles| + +First public release: 2011/09/06~ + +=============================================================================== +vim:ft=help:et:ts=2:sw=2:sts=2:norl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/ftdetect/hut.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,1 @@ +au BufRead,BufNewFile *.hut set filetype=cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vim/vimfiles/plugin/ctrlp.vim Tue Jan 03 20:53:13 2012 -0600 @@ -0,0 +1,44 @@ +" ============================================================================= +" File: plugin/ctrlp.vim +" Description: Fuzzy file, buffer, mru and tag finder. +" Author: Kien Nguyen <github.com/kien> +" ============================================================================= +" GetLatestVimScripts: 3736 1 :AutoInstall: ctrlp.zip + +if ( exists('g:loaded_ctrlp') && g:loaded_ctrlp ) || v:version < 700 || &cp + fini +en +let [g:loaded_ctrlp, g:ctrlp_lines, g:ctrlp_allfiles] = [1, [], []] + +if !exists('g:ctrlp_map') | let g:ctrlp_map = '<c-p>' | en + +com! -na=? -comp=custom,ctrlp#cpl CtrlP cal ctrlp#init(0, <q-args>) + +com! CtrlPBuffer cal ctrlp#init(1) +com! CtrlPMRUFiles cal ctrlp#init(2) + +com! ClearCtrlPCache cal ctrlp#clr() +com! ClearAllCtrlPCaches cal ctrlp#clra() +com! ResetCtrlP cal ctrlp#reset() + +com! CtrlPCurWD cal ctrlp#init(0, 0) +com! CtrlPCurFile cal ctrlp#init(0, 1) +com! CtrlPRoot cal ctrlp#init(0, 2) + +exe 'nn <silent>' g:ctrlp_map ':<c-u>CtrlP<cr>' + +cal ctrlp#mrufiles#init() + +if !exists('g:ctrlp_extensions') | fini | en + +if index(g:ctrlp_extensions, 'tag') >= 0 + let g:ctrlp_alltags = [] | com! CtrlPTag cal ctrlp#init(ctrlp#tag#id()) +en + +if index(g:ctrlp_extensions, 'quickfix') >= 0 + com! CtrlPQuickfix cal ctrlp#init(ctrlp#quickfix#id()) +en + +if index(g:ctrlp_extensions, 'dir') >= 0 + let g:ctrlp_alldirs = [] | com! CtrlPDir cal ctrlp#init(ctrlp#dir#id()) +en