mirror of
https://github.com/gryf/.vim.git
synced 2025-12-18 12:00:30 +01:00
Plugins update
This commit is contained in:
22
.vimrc
22
.vimrc
@@ -197,6 +197,9 @@ let g:ctrlp_custom_ignore = {
|
|||||||
let g:ctrlp_map = '<c-f>'
|
let g:ctrlp_map = '<c-f>'
|
||||||
map <Leader>b :CtrlPBuffer<CR>
|
map <Leader>b :CtrlPBuffer<CR>
|
||||||
"}}}
|
"}}}
|
||||||
|
"NERDCommenter {{{2
|
||||||
|
let g:NERDSpaceDelims=1
|
||||||
|
"}}}
|
||||||
"}}}
|
"}}}
|
||||||
"KEYS: User defined keyboard shortcuts {{{
|
"KEYS: User defined keyboard shortcuts {{{
|
||||||
|
|
||||||
@@ -396,13 +399,20 @@ endfunction
|
|||||||
"}}}
|
"}}}
|
||||||
" GUI: detect graphics mode, set colorscheme {{{
|
" GUI: detect graphics mode, set colorscheme {{{
|
||||||
if has('gui_running')
|
if has('gui_running')
|
||||||
"set guifont=Consolas\ 12 "I like this font, but it looks like crap on linux
|
" I like this font, but it looks like crap on linux
|
||||||
"set guifont=DejaVu\ Sans\ Mono\ 12 "at least, some ttf font that looks good
|
"set guifont=Consolas\ 12
|
||||||
set guifont=Fixed\ 14 "I like this font better.
|
" at least, some ttf font that looks good
|
||||||
|
"set guifont=DejaVu\ Sans\ Mono\ 12
|
||||||
|
" Unfortunately there is a problem with TTF fonts in my gvim instance.
|
||||||
|
" After editing a while there are some leaving trash appearing on the
|
||||||
|
" buffer. Refreshing the screen helps, but is kinda annoying. It is
|
||||||
|
" probably my X11 setup, because on other similar workstations and setup I
|
||||||
|
" didn't noticed such behavior. Fallback to fixed-misc for a while.
|
||||||
|
set guifont=Fixed\ 14
|
||||||
set mouse=a "Enable mouse support
|
set mouse=a "Enable mouse support
|
||||||
"No toolbar, menu, scrollbars, draw simple text tabs. This would keep
|
" No toolbar, menu, scrollbars, draw simple text tabs. This would keep
|
||||||
"window in one place, and also this will conserve space. Tabs are huge
|
" window in one place, and also this will conserve space. Tabs are huge
|
||||||
"under GTK.
|
" under GTK.
|
||||||
set guioptions=agit
|
set guioptions=agit
|
||||||
"add menuitem OpenInWebBrowser
|
"add menuitem OpenInWebBrowser
|
||||||
nmenu 666 PopUp.&Open\ in\ browser :call OpenInWebBrowser()<cr>
|
nmenu 666 PopUp.&Open\ in\ browser :call OpenInWebBrowser()<cr>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ ScriptID SourceID Filename
|
|||||||
3304 17406 gundo.vim
|
3304 17406 gundo.vim
|
||||||
2727 11120 jsbeautify.vim
|
2727 11120 jsbeautify.vim
|
||||||
2289 8922 loremipsum
|
2289 8922 loremipsum
|
||||||
2666 16840 Mark
|
2666 17554 Mark
|
||||||
1218 14455 nerdcommenter
|
1218 14455 nerdcommenter
|
||||||
2262 8944 occur.vim
|
2262 8944 occur.vim
|
||||||
2136 8206 repeat.vim
|
2136 8206 repeat.vim
|
||||||
@@ -21,19 +21,8 @@ ScriptID SourceID Filename
|
|||||||
2321 9055 zoom.vim
|
2321 9055 zoom.vim
|
||||||
52 14880 calendar.vim
|
52 14880 calendar.vim
|
||||||
3736 17319 ctrlp.vim
|
3736 17319 ctrlp.vim
|
||||||
### colors
|
### ftplugin
|
||||||
2855 12456 github.vim
|
3818 16921 MatchTag
|
||||||
1143 11833 inkpot.vim
|
|
||||||
2555 17225 jellybeans.vim
|
|
||||||
2536 16615 lucius.vim
|
|
||||||
3299 16882 sorcerer.vim
|
|
||||||
1165 3741 tolerable.vim
|
|
||||||
3309 15759 vydark
|
|
||||||
2589 15760 vylight
|
|
||||||
415 15531 zenburn
|
|
||||||
#3597 1 ColorV
|
|
||||||
# ftplugin
|
|
||||||
3818 1 MatchTag
|
|
||||||
910 14691 pydoc.vim
|
910 14691 pydoc.vim
|
||||||
2441 14403 pyflakes.vim
|
2441 14403 pyflakes.vim
|
||||||
30 9196 python_fn.vim
|
30 9196 python_fn.vim
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
" File: autoload/ctrlp.vim
|
" File: autoload/ctrlp.vim
|
||||||
" Description: Fuzzy file, buffer, mru and tag finder.
|
" Description: Fuzzy file, buffer, mru and tag finder.
|
||||||
" Author: Kien Nguyen <github.com/kien>
|
" Author: Kien Nguyen <github.com/kien>
|
||||||
" Version: 1.7.1
|
" Version: 1.7.2
|
||||||
" =============================================================================
|
" =============================================================================
|
||||||
|
|
||||||
" Static variables {{{1
|
" Static variables {{{1
|
||||||
@@ -42,6 +42,15 @@ fu! s:opts()
|
|||||||
for [ke, va] in items(opts)
|
for [ke, va] in items(opts)
|
||||||
exe 'let' va[0] '=' string(exists(ke) ? eval(ke) : va[1])
|
exe 'let' va[0] '=' string(exists(ke) ? eval(ke) : va[1])
|
||||||
endfo
|
endfo
|
||||||
|
let new_opts = {
|
||||||
|
\ 'g:ctrlp_open_multiple_files': 's:opmul',
|
||||||
|
\ 'g:ctrlp_regexp': 's:regexp',
|
||||||
|
\ 'g:ctrlp_reuse_window': 's:nosplit',
|
||||||
|
\ 'g:ctrlp_switch_buffer': 's:jmptobuf',
|
||||||
|
\ }
|
||||||
|
for [key, val] in items(new_opts)
|
||||||
|
exe 'let' val '=' string(eval(exists(key) ? key : val))
|
||||||
|
endfo
|
||||||
if !exists('g:ctrlp_newcache') | let g:ctrlp_newcache = 0 | en
|
if !exists('g:ctrlp_newcache') | let g:ctrlp_newcache = 0 | en
|
||||||
let s:maxdepth = min([s:maxdepth, 100])
|
let s:maxdepth = min([s:maxdepth, 100])
|
||||||
let s:mxheight = max([s:mxheight, 1])
|
let s:mxheight = max([s:mxheight, 1])
|
||||||
@@ -49,9 +58,9 @@ fu! s:opts()
|
|||||||
let s:igntype = empty(s:usrign) ? -1 : type(s:usrign)
|
let s:igntype = empty(s:usrign) ? -1 : type(s:usrign)
|
||||||
" Extensions
|
" Extensions
|
||||||
let g:ctrlp_builtins = 2
|
let g:ctrlp_builtins = 2
|
||||||
if !empty(s:extensions) | for each in s:extensions
|
for each in s:extensions
|
||||||
exe 'ru autoload/ctrlp/'.each.'.vim'
|
exe 'ru autoload/ctrlp/'.each.'.vim'
|
||||||
endfo | en
|
endfo
|
||||||
" Keymaps
|
" Keymaps
|
||||||
let [s:lcmap, s:prtmaps] = ['nn <buffer> <silent>', {
|
let [s:lcmap, s:prtmaps] = ['nn <buffer> <silent>', {
|
||||||
\ 'PrtBS()': ['<bs>', '<c-]>'],
|
\ 'PrtBS()': ['<bs>', '<c-]>'],
|
||||||
@@ -60,10 +69,10 @@ fu! s:opts()
|
|||||||
\ 'PrtClear()': ['<c-u>'],
|
\ 'PrtClear()': ['<c-u>'],
|
||||||
\ 'PrtSelectMove("j")': ['<c-j>', '<down>'],
|
\ 'PrtSelectMove("j")': ['<c-j>', '<down>'],
|
||||||
\ 'PrtSelectMove("k")': ['<c-k>', '<up>'],
|
\ 'PrtSelectMove("k")': ['<c-k>', '<up>'],
|
||||||
\ 'PrtSelectMove("t")': ['<home>'],
|
\ 'PrtSelectMove("t")': ['<Home>', '<kHome>'],
|
||||||
\ 'PrtSelectMove("b")': ['<end>'],
|
\ 'PrtSelectMove("b")': ['<End>', '<kEnd>'],
|
||||||
\ 'PrtSelectMove("u")': ['<PageUp>'],
|
\ 'PrtSelectMove("u")': ['<PageUp>', '<kPageUp>'],
|
||||||
\ 'PrtSelectMove("d")': ['<PageDown>'],
|
\ 'PrtSelectMove("d")': ['<PageDown>', '<kPageDown>'],
|
||||||
\ 'PrtHistory(-1)': ['<c-n>'],
|
\ 'PrtHistory(-1)': ['<c-n>'],
|
||||||
\ 'PrtHistory(1)': ['<c-p>'],
|
\ 'PrtHistory(1)': ['<c-p>'],
|
||||||
\ 'AcceptSelection("e")': ['<cr>', '<2-LeftMouse>'],
|
\ 'AcceptSelection("e")': ['<cr>', '<2-LeftMouse>'],
|
||||||
@@ -97,26 +106,11 @@ fu! s:opts()
|
|||||||
if type(s:urprtmaps) == 4
|
if type(s:urprtmaps) == 4
|
||||||
cal extend(s:prtmaps, s:urprtmaps)
|
cal extend(s:prtmaps, s:urprtmaps)
|
||||||
en
|
en
|
||||||
let s:prtunmaps = [
|
|
||||||
\ 'PrtBS()',
|
|
||||||
\ 'PrtDelete()',
|
|
||||||
\ 'PrtDeleteWord()',
|
|
||||||
\ 'PrtClear()',
|
|
||||||
\ 'PrtCurStart()',
|
|
||||||
\ 'PrtCurEnd()',
|
|
||||||
\ 'PrtCurLeft()',
|
|
||||||
\ 'PrtCurRight()',
|
|
||||||
\ 'PrtHistory(-1)',
|
|
||||||
\ 'PrtHistory(1)',
|
|
||||||
\ 'PrtInsert("w")',
|
|
||||||
\ 'PrtInsert("s")',
|
|
||||||
\ 'PrtInsert("v")',
|
|
||||||
\ 'PrtInsert("+")',
|
|
||||||
\ ]
|
|
||||||
" Global options
|
" Global options
|
||||||
let s:glbs = { 'magic': 1, 'to': 1, 'tm': 0, 'sb': 1, 'hls': 0, 'im': 0,
|
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',
|
\ 'report': 9999, 'sc': 0, 'ss': 0, 'siso': 0, 'mfd': 200, 'mouse': 'n',
|
||||||
\ 'gcr': 'a:blinkon0', 'ic': 1, 'scs': 1, 'lmap': '' }
|
\ 'gcr': 'a:blinkon0', 'ic': 1, 'scs': 1, 'lmap': '', 'mousef': 0,
|
||||||
|
\ 'imd': 1 }
|
||||||
if s:lazy
|
if s:lazy
|
||||||
cal extend(s:glbs, { 'ut': ( s:lazy > 1 ? s:lazy : 250 ) })
|
cal extend(s:glbs, { 'ut': ( s:lazy > 1 ? s:lazy : 250 ) })
|
||||||
en
|
en
|
||||||
@@ -136,6 +130,33 @@ let s:fpats = {
|
|||||||
\ '^\S\\?$': '\\?',
|
\ '^\S\\?$': '\\?',
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
|
" Mappings
|
||||||
|
let s:prtunmaps = [
|
||||||
|
\ 'PrtBS()',
|
||||||
|
\ 'PrtDelete()',
|
||||||
|
\ 'PrtDeleteWord()',
|
||||||
|
\ 'PrtClear()',
|
||||||
|
\ 'PrtCurStart()',
|
||||||
|
\ 'PrtCurEnd()',
|
||||||
|
\ 'PrtCurLeft()',
|
||||||
|
\ 'PrtCurRight()',
|
||||||
|
\ 'PrtHistory(-1)',
|
||||||
|
\ 'PrtHistory(1)',
|
||||||
|
\ 'PrtInsert("w")',
|
||||||
|
\ 'PrtInsert("s")',
|
||||||
|
\ 'PrtInsert("v")',
|
||||||
|
\ 'PrtInsert("+")',
|
||||||
|
\ ]
|
||||||
|
|
||||||
|
" Keypad
|
||||||
|
let s:kprange = {
|
||||||
|
\ 'Plus': '+',
|
||||||
|
\ 'Minus': '-',
|
||||||
|
\ 'Divide': '/',
|
||||||
|
\ 'Multiply': '*',
|
||||||
|
\ 'Point': '.',
|
||||||
|
\ }
|
||||||
|
|
||||||
" Highlight groups
|
" Highlight groups
|
||||||
let s:hlgrps = {
|
let s:hlgrps = {
|
||||||
\ 'NoEntries': 'Error',
|
\ 'NoEntries': 'Error',
|
||||||
@@ -149,21 +170,18 @@ let s:hlgrps = {
|
|||||||
\ }
|
\ }
|
||||||
" * Open & Close {{{1
|
" * Open & Close {{{1
|
||||||
fu! s:Open()
|
fu! s:Open()
|
||||||
if exists('g:ctrlp_log') && g:ctrlp_log
|
cal s:log(1)
|
||||||
let cadir = ctrlp#utils#cachedir()
|
|
||||||
sil! exe 'redi! >' cadir.s:lash(cadir).'ctrlp.log'
|
|
||||||
en
|
|
||||||
cal s:getenv()
|
cal s:getenv()
|
||||||
sil! exe 'noa keepa' ( s:mwbottom ? 'bo' : 'to' ) '1new ControlP'
|
sil! exe 'noa keepa' ( s:mwbottom ? 'bo' : 'to' ) '1new ControlP'
|
||||||
let [s:bufnr, s:prompt] = [bufnr('%'), ['', '', '']]
|
let [s:bufnr, s:prompt, s:winw] = [bufnr('%'), ['', '', ''], winwidth(0)]
|
||||||
abc <buffer>
|
abc <buffer>
|
||||||
if !exists('s:hstry')
|
if !exists('s:hstry')
|
||||||
let hst = filereadable(s:gethistloc()[1]) ? s:gethistdata() : ['']
|
let hst = filereadable(s:gethistloc()[1]) ? s:gethistdata() : ['']
|
||||||
let s:hstry = empty(hst) || !s:maxhst ? [''] : hst
|
let s:hstry = empty(hst) || !s:maxhst ? [''] : hst
|
||||||
en
|
en
|
||||||
for [ke, va] in items(s:glbs)
|
for [ke, va] in items(s:glbs) | if exists('+'.ke)
|
||||||
sil! exe 'let s:glb_'.ke.' = &'.ke.' | let &'.ke.' = '.string(va)
|
sil! exe 'let s:glb_'.ke.' = &'.ke.' | let &'.ke.' = '.string(va)
|
||||||
endfo
|
en | endfo
|
||||||
if s:opmul != '0' && has('signs')
|
if s:opmul != '0' && has('signs')
|
||||||
sign define ctrlpmark text=+> texthl=Search
|
sign define ctrlpmark text=+> texthl=Search
|
||||||
en
|
en
|
||||||
@@ -174,21 +192,19 @@ fu! s:Close()
|
|||||||
try | noa bun!
|
try | noa bun!
|
||||||
cat | noa clo! | endt
|
cat | noa clo! | endt
|
||||||
cal s:unmarksigns()
|
cal s:unmarksigns()
|
||||||
for key in keys(s:glbs)
|
for key in keys(s:glbs) | if exists('+'.key)
|
||||||
sil! exe 'let &'.key.' = s:glb_'.key
|
sil! exe 'let &'.key.' = s:glb_'.key
|
||||||
endfo
|
en | endfo
|
||||||
if exists('s:glb_acd') | let &acd = s:glb_acd | en
|
if exists('s:glb_acd') | let &acd = s:glb_acd | en
|
||||||
let [g:ctrlp_lines, g:ctrlp_allfiles] = [[], []]
|
let [g:ctrlp_lines, g:ctrlp_allfiles] = [[], []]
|
||||||
if s:winres[1] >= &lines && s:winres[2] == winnr('$')
|
if s:winres[1] >= &lines && s:winres[2] == winnr('$')
|
||||||
exe s:winres[0]
|
exe s:winres[0]
|
||||||
en
|
en
|
||||||
unl! s:focus s:hisidx s:hstgot s:marked s:statypes s:cline s:init s:savestr
|
unl! s:focus s:hisidx s:hstgot s:marked s:statypes s:cline s:init s:savestr
|
||||||
\ s:winh g:ctrlp_nolimit
|
\ g:ctrlp_nolimit
|
||||||
cal ctrlp#recordhist()
|
cal ctrlp#recordhist()
|
||||||
cal s:onexit()
|
cal s:onexit()
|
||||||
if exists('g:ctrlp_log') && g:ctrlp_log
|
cal s:log(0)
|
||||||
sil! redi END
|
|
||||||
en
|
|
||||||
ec
|
ec
|
||||||
endf
|
endf
|
||||||
" * Clear caches {{{1
|
" * Clear caches {{{1
|
||||||
@@ -210,10 +226,9 @@ fu! ctrlp#reset()
|
|||||||
cal s:opts()
|
cal s:opts()
|
||||||
cal ctrlp#utils#opts()
|
cal ctrlp#utils#opts()
|
||||||
cal ctrlp#mrufiles#opts()
|
cal ctrlp#mrufiles#opts()
|
||||||
unl! s:cline
|
|
||||||
endf
|
endf
|
||||||
" * Files() {{{1
|
" * Files {{{1
|
||||||
fu! s:Files()
|
fu! ctrlp#files()
|
||||||
let [cwd, cafile, g:ctrlp_allfiles] = [getcwd(), ctrlp#utils#cachefile(), []]
|
let [cwd, cafile, g:ctrlp_allfiles] = [getcwd(), ctrlp#utils#cachefile(), []]
|
||||||
if g:ctrlp_newcache || !filereadable(cafile) || !s:caching
|
if g:ctrlp_newcache || !filereadable(cafile) || !s:caching
|
||||||
let lscmd = s:lsCmd()
|
let lscmd = s:lsCmd()
|
||||||
@@ -292,23 +307,17 @@ fu! s:lsCmd()
|
|||||||
retu cmd['types'][key][1]
|
retu cmd['types'][key][1]
|
||||||
en
|
en
|
||||||
endf
|
endf
|
||||||
fu! s:Buffers() "{{{1
|
" Buffers {{{1
|
||||||
let allbufs = []
|
fu! ctrlp#buffers()
|
||||||
for each in range(1, bufnr('$'))
|
retu map(filter(range(1, bufnr('$')), 'empty(getbufvar(v:val, "&bt"))'
|
||||||
if getbufvar(each, '&bl') && each != s:crbufnr
|
\ .' && getbufvar(v:val, "&bl") && strlen(bufname(v:val))'),
|
||||||
let bufname = bufname(each)
|
\ 'fnamemodify(bufname(v:val), ":.")')
|
||||||
if strlen(bufname) && getbufvar(each, '&ma') && bufname != 'ControlP'
|
|
||||||
cal add(allbufs, fnamemodify(bufname, ':.'))
|
|
||||||
en
|
|
||||||
en
|
|
||||||
endfo
|
|
||||||
retu allbufs
|
|
||||||
endf
|
endf
|
||||||
" * MatchedItems() {{{1
|
" * MatchedItems() {{{1
|
||||||
fu! s:MatchIt(items, pat, limit, mfunc)
|
fu! s:MatchIt(items, pat, limit, mfunc, ipt)
|
||||||
let newitems = []
|
let [newitems, crfile] = [[], exists('s:crfilerel') ? s:crfilerel : '']
|
||||||
for item in a:items
|
for item in a:items
|
||||||
try | if call(a:mfunc, [item, a:pat]) >= 0
|
try | if !( a:ipt && item == crfile ) && call(a:mfunc, [item, a:pat]) >= 0
|
||||||
cal add(newitems, item)
|
cal add(newitems, item)
|
||||||
en | cat | brea | endt
|
en | cat | brea | endt
|
||||||
if a:limit > 0 && len(newitems) >= a:limit | brea | en
|
if a:limit > 0 && len(newitems) >= a:limit | brea | en
|
||||||
@@ -316,16 +325,15 @@ fu! s:MatchIt(items, pat, limit, mfunc)
|
|||||||
retu newitems
|
retu newitems
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:MatchedItems(items, pat, limit)
|
fu! s:MatchedItems(items, pat, limit, ipt)
|
||||||
let [items, pat, limit] = [a:items, a:pat, a:limit]
|
let [type, mfunc] = [s:type(1), 'match']
|
||||||
let [type, ipt, mfunc] = [s:type(1), s:ispathitem(), 'match']
|
if s:byfname && a:ipt
|
||||||
if s:byfname && ipt
|
|
||||||
let mfunc = 's:matchfname'
|
let mfunc = 's:matchfname'
|
||||||
elsei s:itemtype > 2
|
elsei s:itemtype > 2
|
||||||
let types = { 'tabs': 's:matchtabs', 'tabe': 's:matchtabe' }
|
let types = { 'tabs': 's:matchtabs', 'tabe': 's:matchtabe' }
|
||||||
if has_key(types, type) | let mfunc = types[type] | en
|
if has_key(types, type) | let mfunc = types[type] | en
|
||||||
en
|
en
|
||||||
let newitems = s:MatchIt(items, pat, limit, mfunc)
|
let newitems = s:MatchIt(a:items, a:pat, a:limit, mfunc, a:ipt)
|
||||||
let s:matches = len(newitems)
|
let s:matches = len(newitems)
|
||||||
retu newitems
|
retu newitems
|
||||||
endf
|
endf
|
||||||
@@ -358,31 +366,31 @@ fu! s:SplitPattern(str) "{{{1
|
|||||||
retu escape(pat, '~')
|
retu escape(pat, '~')
|
||||||
endf
|
endf
|
||||||
" * BuildPrompt() {{{1
|
" * BuildPrompt() {{{1
|
||||||
fu! s:Render(lines, pat)
|
fu! s:Render(lines, pat, ipt)
|
||||||
let lines = a:lines
|
let [&ma, lines, s:height] = [1, a:lines, min([len(a:lines), s:winh])]
|
||||||
" Setup the match window
|
" Setup the match window
|
||||||
let s:height = min([len(lines), s:winh])
|
|
||||||
sil! exe '%d _ | res' s:height
|
sil! exe '%d _ | res' s:height
|
||||||
" Print the new items
|
" Print the new items
|
||||||
if empty(lines)
|
if empty(lines)
|
||||||
setl nocul
|
let s:matched = []
|
||||||
cal setline(1, ' == NO ENTRIES ==')
|
cal setline(1, ' == NO ENTRIES ==')
|
||||||
|
setl noma nocul
|
||||||
cal s:unmarksigns()
|
cal s:unmarksigns()
|
||||||
if s:dohighlight() | cal clearmatches() | en
|
if s:dohighlight() | cal clearmatches() | en
|
||||||
retu
|
retu
|
||||||
en
|
en
|
||||||
setl cul
|
|
||||||
" Sort if not MRU
|
" Sort if not MRU
|
||||||
if ( s:itemtype != 2 && !exists('g:ctrlp_nolimit') )
|
if ( s:itemtype != 2 && !exists('g:ctrlp_nolimit') )
|
||||||
\ || !empty(join(s:prompt, ''))
|
\ || s:prompt != ['', '', '']
|
||||||
let s:compat = a:pat
|
let s:compat = a:pat
|
||||||
cal sort(lines, 's:mixedsort')
|
cal sort(lines, 's:mixedsort')
|
||||||
unl s:compat
|
unl s:compat
|
||||||
en
|
en
|
||||||
if s:mwreverse | cal reverse(lines) | en
|
if s:mwreverse | cal reverse(lines) | en
|
||||||
let s:matched = copy(lines)
|
let s:matched = copy(lines)
|
||||||
cal map(lines, '"> ".v:val')
|
cal map(lines, 's:formatline(v:val, a:ipt)')
|
||||||
cal setline(1, lines)
|
cal setline(1, lines)
|
||||||
|
setl noma cul
|
||||||
exe 'keepj norm!' ( s:mwreverse ? 'G' : 'gg' ).'1|'
|
exe 'keepj norm!' ( s:mwreverse ? 'G' : 'gg' ).'1|'
|
||||||
cal s:unmarksigns()
|
cal s:unmarksigns()
|
||||||
cal s:remarksigns()
|
cal s:remarksigns()
|
||||||
@@ -391,7 +399,7 @@ fu! s:Render(lines, pat)
|
|||||||
en
|
en
|
||||||
" Highlighting
|
" Highlighting
|
||||||
if s:dohighlight()
|
if s:dohighlight()
|
||||||
cal s:highlight(a:pat, s:mathi[1] == '' ? 'Identifier' : s:mathi[1])
|
cal s:highlight(a:pat, s:mathi[1], a:ipt)
|
||||||
en
|
en
|
||||||
endf
|
endf
|
||||||
|
|
||||||
@@ -401,13 +409,11 @@ fu! s:Update(str)
|
|||||||
" Get the new string sans tail
|
" Get the new string sans tail
|
||||||
let str = s:sanstail(a:str)
|
let str = s:sanstail(a:str)
|
||||||
" Stop if the string's unchanged
|
" Stop if the string's unchanged
|
||||||
if str == oldstr && !empty(str) && !exists('s:force')
|
if str == oldstr && !empty(str) && !exists('s:force') | retu | en
|
||||||
retu
|
let [pat, ipt] = [s:SplitPattern(str), s:ispathitem()]
|
||||||
en
|
|
||||||
let pat = s:SplitPattern(str)
|
|
||||||
let lines = exists('g:ctrlp_nolimit') && empty(str) ? copy(g:ctrlp_lines)
|
let lines = exists('g:ctrlp_nolimit') && empty(str) ? copy(g:ctrlp_lines)
|
||||||
\ : s:MatchedItems(g:ctrlp_lines, pat, s:winh)
|
\ : s:MatchedItems(g:ctrlp_lines, pat, s:winh, ipt)
|
||||||
cal s:Render(lines, pat)
|
cal s:Render(lines, pat, ipt)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:ForceUpdate()
|
fu! s:ForceUpdate()
|
||||||
@@ -459,8 +465,7 @@ endf
|
|||||||
|
|
||||||
fu! s:PrtBS()
|
fu! s:PrtBS()
|
||||||
unl! s:hstgot
|
unl! s:hstgot
|
||||||
let [prt, s:matches] = [s:prompt, 1]
|
let [s:prompt[0], s:matches] = [substitute(s:prompt[0], '.$', '', ''), 1]
|
||||||
let prt[0] = substitute(prt[0], '.$', '', '')
|
|
||||||
cal s:BuildPrompt(1)
|
cal s:BuildPrompt(1)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
@@ -485,7 +490,6 @@ endf
|
|||||||
|
|
||||||
fu! s:PrtInsert(type)
|
fu! s:PrtInsert(type)
|
||||||
unl! s:hstgot
|
unl! s:hstgot
|
||||||
" Insert current word, search register, last visual and clipboard
|
|
||||||
let s:prompt[0] .= a:type == 'w' ? s:crword
|
let s:prompt[0] .= a:type == 'w' ? s:crword
|
||||||
\ : a:type == 's' ? getreg('/')
|
\ : a:type == 's' ? getreg('/')
|
||||||
\ : a:type == 'v' ? s:crvisual
|
\ : a:type == 'v' ? s:crvisual
|
||||||
@@ -507,20 +511,18 @@ fu! s:PrtExpandDir()
|
|||||||
endf
|
endf
|
||||||
" Movement {{{2
|
" Movement {{{2
|
||||||
fu! s:PrtCurLeft()
|
fu! s:PrtCurLeft()
|
||||||
if !empty(s:prompt[0])
|
|
||||||
let prt = s:prompt
|
let prt = s:prompt
|
||||||
let prt[2] = prt[1] . prt[2]
|
if !empty(prt[0])
|
||||||
let prt[1] = matchstr(prt[0], '.$')
|
let s:prompt = [substitute(prt[0], '.$', '', ''), matchstr(prt[0], '.$'),
|
||||||
let prt[0] = substitute(prt[0], '.$', '', '')
|
\ prt[1] . prt[2]]
|
||||||
en
|
en
|
||||||
cal s:BuildPrompt(0)
|
cal s:BuildPrompt(0)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:PrtCurRight()
|
fu! s:PrtCurRight()
|
||||||
let prt = s:prompt
|
let prt = s:prompt
|
||||||
let prt[0] .= prt[1]
|
let s:prompt = [prt[0] . prt[1], matchstr(prt[2], '^.'),
|
||||||
let prt[1] = matchstr(prt[2], '^.')
|
\ substitute(prt[2], '^.', '', '')]
|
||||||
let prt[2] = substitute(prt[2], '^.', '', '')
|
|
||||||
cal s:BuildPrompt(0)
|
cal s:BuildPrompt(0)
|
||||||
endf
|
endf
|
||||||
|
|
||||||
@@ -577,7 +579,7 @@ fu! s:PrtClearCache()
|
|||||||
if s:itemtype == 2
|
if s:itemtype == 2
|
||||||
let g:ctrlp_lines = ctrlp#mrufiles#list(-1, 1)
|
let g:ctrlp_lines = ctrlp#mrufiles#list(-1, 1)
|
||||||
el
|
el
|
||||||
cal s:SetLines(s:itemtype)
|
cal ctrlp#setlines(s:itemtype)
|
||||||
en
|
en
|
||||||
let s:force = 1
|
let s:force = 1
|
||||||
cal s:BuildPrompt(1)
|
cal s:BuildPrompt(1)
|
||||||
@@ -585,12 +587,16 @@ fu! s:PrtClearCache()
|
|||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:PrtDeleteMRU()
|
fu! s:PrtDeleteMRU()
|
||||||
if s:itemtype == 2
|
if s:itemtype != 2 | retu | en
|
||||||
let s:force = 1
|
let [s:force, ags] = [1, [-1, 2]]
|
||||||
let g:ctrlp_lines = ctrlp#mrufiles#list(-1, 2)
|
if exists('s:marked')
|
||||||
|
let ags = [-1, 2, values(s:marked)]
|
||||||
|
cal s:unmarksigns()
|
||||||
|
unl s:marked
|
||||||
|
en
|
||||||
|
let g:ctrlp_lines = call('ctrlp#mrufiles#list', ags)
|
||||||
cal s:BuildPrompt(1)
|
cal s:BuildPrompt(1)
|
||||||
unl s:force
|
unl s:force
|
||||||
en
|
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:PrtExit()
|
fu! s:PrtExit()
|
||||||
@@ -616,11 +622,18 @@ endf
|
|||||||
fu! s:MapKeys(...)
|
fu! s:MapKeys(...)
|
||||||
" Normal keys
|
" Normal keys
|
||||||
let pfunc = a:0 && !a:1 ? 'PrtSelectJump' : 'PrtAdd'
|
let pfunc = a:0 && !a:1 ? 'PrtSelectJump' : 'PrtAdd'
|
||||||
let dojmp = s:byfname && pfunc == 'PrtSelectJump' ? ', 1' : ''
|
let dojmp = s:byfname && a:0 && !a:1 ? ', 1' : ''
|
||||||
|
let pcmd = "nn \<buffer> \<silent> \<k%s> :\<c-u>cal \<SID>%s(\"%s\"%s)\<cr>"
|
||||||
|
let cmd = substitute(pcmd, 'k%s', 'char-%d', '')
|
||||||
for each in range(32, 126)
|
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)
|
exe printf(cmd, each, pfunc, escape(nr2char(each), '"|\'), dojmp)
|
||||||
endfo
|
endfo
|
||||||
|
for each in range(0, 9)
|
||||||
|
exe printf(pcmd, each, pfunc, each, dojmp)
|
||||||
|
endfo
|
||||||
|
for [ke, va] in items(s:kprange)
|
||||||
|
exe printf(pcmd, ke, pfunc, va, dojmp)
|
||||||
|
endfo
|
||||||
" Special keys
|
" Special keys
|
||||||
if a:0 < 2
|
if a:0 < 2
|
||||||
cal call('s:MapSpecs', a:0 && !a:1 ? [1] : [])
|
cal call('s:MapSpecs', a:0 && !a:1 ? [1] : [])
|
||||||
@@ -675,9 +688,9 @@ fu! s:ToggleType(dir)
|
|||||||
if s:byfname && !s:ispathitem() | let s:byfname = 0 | en
|
if s:byfname && !s:ispathitem() | let s:byfname = 0 | en
|
||||||
unl! g:ctrlp_nolimit
|
unl! g:ctrlp_nolimit
|
||||||
if has('syntax') && exists('g:syntax_on')
|
if has('syntax') && exists('g:syntax_on')
|
||||||
cal s:syntax()
|
cal ctrlp#syntax()
|
||||||
en
|
en
|
||||||
cal s:SetLines(s:itemtype)
|
cal ctrlp#setlines(s:itemtype)
|
||||||
cal s:PrtSwitcher()
|
cal s:PrtSwitcher()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
@@ -687,7 +700,7 @@ fu! s:PrtSwitcher()
|
|||||||
unl s:force
|
unl s:force
|
||||||
endf
|
endf
|
||||||
fu! s:SetWD(...) "{{{1
|
fu! s:SetWD(...) "{{{1
|
||||||
let pathmode = s:pathmode
|
let [pathmode, s:crfilerel] = [s:wpmode, fnamemodify(s:crfile, ':.')]
|
||||||
if a:0 && strlen(a:1) | if type(a:1)
|
if a:0 && strlen(a:1) | if type(a:1)
|
||||||
cal ctrlp#setdir(a:1) | retu
|
cal ctrlp#setdir(a:1) | retu
|
||||||
el
|
el
|
||||||
@@ -699,7 +712,7 @@ fu! s:SetWD(...) "{{{1
|
|||||||
cal ctrlp#setdir(s:crfpath)
|
cal ctrlp#setdir(s:crfpath)
|
||||||
en
|
en
|
||||||
if pathmode == 1 | retu | en
|
if pathmode == 1 | retu | en
|
||||||
let markers = ['root.dir','.git/','.hg/','_darcs/','.bzr/']
|
let markers = ['root.dir', '.git/', '.hg/', '.svn/', '.bzr/', '_darcs/']
|
||||||
if type(s:rmarkers) == 3 && !empty(s:rmarkers)
|
if type(s:rmarkers) == 3 && !empty(s:rmarkers)
|
||||||
cal extend(markers, s:rmarkers, 0)
|
cal extend(markers, s:rmarkers, 0)
|
||||||
en
|
en
|
||||||
@@ -710,8 +723,8 @@ fu! s:SetWD(...) "{{{1
|
|||||||
unl! s:foundroot
|
unl! s:foundroot
|
||||||
endf
|
endf
|
||||||
" * AcceptSelection() {{{1
|
" * AcceptSelection() {{{1
|
||||||
fu! ctrlp#acceptfile(mode, matchstr, ...)
|
fu! ctrlp#acceptfile(mode, line, ...)
|
||||||
let [md, filpath] = [a:mode, fnamemodify(a:matchstr, ':p')]
|
let [md, filpath] = [a:mode, fnamemodify(a:line, ':p')]
|
||||||
cal s:PrtExit()
|
cal s:PrtExit()
|
||||||
let [bufnr, tail] = [bufnr('^'.filpath.'$'), s:tail()]
|
let [bufnr, tail] = [bufnr('^'.filpath.'$'), s:tail()]
|
||||||
let j2l = a:0 ? a:1 : str2nr(matchstr(tail, '^ +\D*\zs\d\+\ze\D*'))
|
let j2l = a:0 ? a:1 : str2nr(matchstr(tail, '^ +\D*\zs\d\+\ze\D*'))
|
||||||
@@ -752,12 +765,12 @@ fu! s:SpecInputs(str)
|
|||||||
let [str, type] = [a:str, s:type()]
|
let [str, type] = [a:str, s:type()]
|
||||||
if str == '..' && type =~ '\v^(0|dir)$'
|
if str == '..' && type =~ '\v^(0|dir)$'
|
||||||
cal s:parentdir(getcwd())
|
cal s:parentdir(getcwd())
|
||||||
cal s:SetLines(s:itemtype)
|
cal ctrlp#setlines(s:itemtype)
|
||||||
cal s:PrtClear()
|
cal s:PrtClear()
|
||||||
retu 1
|
retu 1
|
||||||
elsei str =~ '^[\/]$' && type =~ '\v^(0|dir)$'
|
elsei str =~ '^[\/]$' && type =~ '\v^(0|dir)$'
|
||||||
cal s:SetWD(2, 0)
|
cal s:SetWD(2, 0)
|
||||||
cal s:SetLines(s:itemtype)
|
cal ctrlp#setlines(s:itemtype)
|
||||||
cal s:PrtClear()
|
cal s:PrtClear()
|
||||||
retu 1
|
retu 1
|
||||||
elsei str == '?'
|
elsei str == '?'
|
||||||
@@ -773,17 +786,16 @@ fu! s:AcceptSelection(mode)
|
|||||||
let str = join(s:prompt, '')
|
let str = join(s:prompt, '')
|
||||||
if a:mode == 'e' | if s:SpecInputs(str) | retu | en | en
|
if a:mode == 'e' | if s:SpecInputs(str) | retu | en | en
|
||||||
" Get the selected line
|
" Get the selected line
|
||||||
let line = getline('.')
|
let line = !empty(s:matched) ? s:matched[line('.') - 1] : ''
|
||||||
if a:mode != 'e' && s:itemtype < 3 && line == ' == NO ENTRIES =='
|
if a:mode != 'e' && s:itemtype < 3 && line == ''
|
||||||
\ && str !~ '\v^(\.\.|/|\\|\?)$'
|
\ && str !~ '\v^(\.\.|/|\\|\?)$'
|
||||||
cal s:CreateNewFile(a:mode) | retu
|
cal s:CreateNewFile(a:mode) | retu
|
||||||
en
|
en
|
||||||
let matchstr = matchstr(line, '^> \zs.\+\ze\t*$')
|
if empty(line) | retu | en
|
||||||
if empty(matchstr) | retu | en
|
|
||||||
" Do something with it
|
" Do something with it
|
||||||
let actfunc = s:itemtype < 3 ? 'ctrlp#acceptfile'
|
let actfunc = s:itemtype < 3 ? 'ctrlp#acceptfile'
|
||||||
\ : g:ctrlp_ext_vars[s:itemtype - ( g:ctrlp_builtins + 1 )]['accept']
|
\ : g:ctrlp_ext_vars[s:itemtype - ( g:ctrlp_builtins + 1 )]['accept']
|
||||||
cal call(actfunc, [a:mode, matchstr])
|
cal call(actfunc, [a:mode, line])
|
||||||
endf
|
endf
|
||||||
fu! s:CreateNewFile(...) "{{{1
|
fu! s:CreateNewFile(...) "{{{1
|
||||||
let [md, str] = ['', join(s:prompt, '')]
|
let [md, str] = ['', join(s:prompt, '')]
|
||||||
@@ -807,7 +819,7 @@ fu! s:CreateNewFile(...) "{{{1
|
|||||||
en
|
en
|
||||||
if !exists('optyp') | retu | en
|
if !exists('optyp') | retu | en
|
||||||
let [filpath, tail] = [fnamemodify(optyp, ':p'), s:tail()]
|
let [filpath, tail] = [fnamemodify(optyp, ':p'), s:tail()]
|
||||||
cal s:insertcache(str)
|
if !stridx(filpath, getcwd()) | cal s:insertcache(str) | en
|
||||||
cal s:PrtExit()
|
cal s:PrtExit()
|
||||||
let cmd = md == 'r' ? ctrlp#normcmd('e') :
|
let cmd = md == 'r' ? ctrlp#normcmd('e') :
|
||||||
\ s:newfop =~ '1\|t' || ( a:0 && a:1 == 't' ) || md == 't' ? 'tabe' :
|
\ s:newfop =~ '1\|t' || ( a:0 && a:1 == 't' ) || md == 't' ? 'tabe' :
|
||||||
@@ -822,9 +834,9 @@ fu! s:MarkToOpen()
|
|||||||
\ || ( s:itemtype > g:ctrlp_builtins && s:type() !~ 'rts' )
|
\ || ( s:itemtype > g:ctrlp_builtins && s:type() !~ 'rts' )
|
||||||
retu
|
retu
|
||||||
en
|
en
|
||||||
let matchstr = matchstr(getline('.'), '^> \zs.\+\ze\t*$')
|
let line = !empty(s:matched) ? s:matched[line('.') - 1] : ''
|
||||||
if empty(matchstr) | retu | en
|
if empty(line) | retu | en
|
||||||
let filpath = fnamemodify(matchstr, ':p')
|
let filpath = fnamemodify(line, ':p')
|
||||||
if exists('s:marked') && s:dictindex(s:marked, filpath) > 0
|
if exists('s:marked') && s:dictindex(s:marked, filpath) > 0
|
||||||
" Unmark and remove the file from s:marked
|
" Unmark and remove the file from s:marked
|
||||||
let key = s:dictindex(s:marked, filpath)
|
let key = s:dictindex(s:marked, filpath)
|
||||||
@@ -861,8 +873,8 @@ fu! s:OpenMulti()
|
|||||||
cal s:sanstail(join(s:prompt, ''))
|
cal s:sanstail(join(s:prompt, ''))
|
||||||
cal s:PrtExit()
|
cal s:PrtExit()
|
||||||
" Move the cursor to a reusable window
|
" Move the cursor to a reusable window
|
||||||
let tail = s:tail()
|
let [tail, fnesc] = [s:tail(), exists('*fnameescape') && v:version > 701]
|
||||||
let emptytail = empty(tail)
|
let [emptytail, nwpt] = [empty(tail), exists('g:ctrlp_open_multiple_files')]
|
||||||
let useb = bufnr('^'.mkd[0].'$') > 0 && emptytail
|
let useb = bufnr('^'.mkd[0].'$') > 0 && emptytail
|
||||||
let fst = call('ctrlp#normcmd', useb ? ['b', 'bo vert sb'] : ['e'])
|
let fst = call('ctrlp#normcmd', useb ? ['b', 'bo vert sb'] : ['e'])
|
||||||
" Check if it's a replaceable buffer
|
" Check if it's a replaceable buffer
|
||||||
@@ -875,12 +887,19 @@ fu! s:OpenMulti()
|
|||||||
for va in mkd
|
for va in mkd
|
||||||
let bufnr = bufnr('^'.va.'$')
|
let bufnr = bufnr('^'.va.'$')
|
||||||
let useb = bufnr > 0 && emptytail
|
let useb = bufnr > 0 && emptytail
|
||||||
let snd = md != '' && has_key(cmds, md)
|
let snd = md != '' && has_key(cmds, md) ?
|
||||||
\ ? ( useb ? cmds[md][0] : cmds[md][1] ) : ( useb ? 'vert sb' : 'vne' )
|
\ ( useb ? cmds[md][0] : cmds[md][1] ) : ( useb ? 'vert sb' : 'vne' )
|
||||||
let fid = useb ? bufnr : va
|
let cmd = ic == 1 && ( ucr == 'r' || repabl ) ? fst : snd
|
||||||
cal s:openfile(ic == 1 && ( ucr == 'r' || repabl ) ? fst : snd, fid, tail)
|
let conds = [( nr != '' && nr > 1 && nr < ic ) || ( nr == '' && ic > 1 ),
|
||||||
if ( nr != '' && nr > 1 && nr < ic ) || ( nr == '' && ic > 1 )
|
\ nr != '' && nr < ic]
|
||||||
sil! hid clo! | el | let ic += 1
|
if conds[nwpt]
|
||||||
|
if bufnr <= 0 | if fnesc
|
||||||
|
cal s:openfile('bad', fnamemodify(va, ':.'), '')
|
||||||
|
el
|
||||||
|
cal s:openfile(cmd, va, tail) | sil! hid clo!
|
||||||
|
en | en
|
||||||
|
el
|
||||||
|
cal s:openfile(cmd, useb ? bufnr : va, tail) | let ic += 1
|
||||||
en
|
en
|
||||||
endfo
|
endfo
|
||||||
let &swb = swb
|
let &swb = swb
|
||||||
@@ -919,6 +938,13 @@ fu! s:comparent(s1, s2)
|
|||||||
retu 0
|
retu 0
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
fu! s:compfnlen(s1, s2)
|
||||||
|
" By filename length
|
||||||
|
let len1 = strlen(split(a:s1, s:lash)[-1])
|
||||||
|
let len2 = strlen(split(a:s2, s:lash)[-1])
|
||||||
|
retu len1 == len2 ? 0 : len1 > len2 ? 1 : -1
|
||||||
|
endf
|
||||||
|
|
||||||
fu! s:matchlens(str, pat, ...)
|
fu! s:matchlens(str, pat, ...)
|
||||||
if empty(a:pat) || index(['^', '$'], a:pat) >= 0 | retu {} | en
|
if empty(a:pat) || index(['^', '$'], a:pat) >= 0 | retu {} | en
|
||||||
let st = a:0 ? a:1 : 0
|
let st = a:0 ? a:1 : 0
|
||||||
@@ -940,11 +966,12 @@ endf
|
|||||||
fu! s:mixedsort(s1, s2)
|
fu! s:mixedsort(s1, s2)
|
||||||
let [cml, cln] = [s:compmatlen(a:s1, a:s2), ctrlp#complen(a:s1, a:s2)]
|
let [cml, cln] = [s:compmatlen(a:s1, a:s2), ctrlp#complen(a:s1, a:s2)]
|
||||||
if s:itemtype < 3 && s:height < 51
|
if s:itemtype < 3 && s:height < 51
|
||||||
let par = s:comparent(a:s1, a:s2)
|
let [par, cfn] = [s:comparent(a:s1, a:s2), s:compfnlen(a:s1, a:s2)]
|
||||||
if s:height < 21
|
if s:height < 21
|
||||||
retu 6 * cml + 3 * par + 2 * s:comptime(a:s1, a:s2) + cln
|
let ctm = s:comptime(a:s1, a:s2)
|
||||||
|
retu 12 * cml + 6 * par + 3 * cfn + 2 * ctm + cln
|
||||||
en
|
en
|
||||||
retu 3 * cml + 2 * par + cln
|
retu 6 * cml + 3 * par + 2 * cfn + cln
|
||||||
en
|
en
|
||||||
retu 2 * cml + cln
|
retu 2 * cml + cln
|
||||||
endf
|
endf
|
||||||
@@ -973,7 +1000,7 @@ fu! ctrlp#statusline()
|
|||||||
let focus = s:Focus() ? 'prt' : 'win'
|
let focus = s:Focus() ? 'prt' : 'win'
|
||||||
let byfname = s:byfname ? 'file' : 'path'
|
let byfname = s:byfname ? 'file' : 'path'
|
||||||
let marked = s:opmul != '0' ?
|
let marked = s:opmul != '0' ?
|
||||||
\ exists('s:marked') ? ' <'.s:dismrk().'>' : ' <+>' : ''
|
\ exists('s:marked') ? ' <'.s:dismrk().'>' : ' <->' : ''
|
||||||
if has_key(s:status, 'main')
|
if has_key(s:status, 'main')
|
||||||
let args = [focus, byfname, s:regexp, prv, item, nxt, marked]
|
let args = [focus, byfname, s:regexp, prv, item, nxt, marked]
|
||||||
let &l:stl = call(s:status['main'], args)
|
let &l:stl = call(s:status['main'], args)
|
||||||
@@ -989,7 +1016,7 @@ fu! ctrlp#statusline()
|
|||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:dismrk()
|
fu! s:dismrk()
|
||||||
retu has('signs') ? '+'.len(s:marked) :
|
retu has('signs') ? len(s:marked) :
|
||||||
\ '%<'.join(values(map(copy(s:marked), 'split(v:val, "[\\/]")[-1]')), ', ')
|
\ '%<'.join(values(map(copy(s:marked), 'split(v:val, "[\\/]")[-1]')), ', ')
|
||||||
endf
|
endf
|
||||||
|
|
||||||
@@ -997,9 +1024,14 @@ fu! ctrlp#progress(enum)
|
|||||||
if has('macunix') || has('mac') | sl 1m | en
|
if has('macunix') || has('mac') | sl 1m | en
|
||||||
let &l:stl = has_key(s:status, 'prog') ? call(s:status['prog'], [a:enum])
|
let &l:stl = has_key(s:status, 'prog') ? call(s:status['prog'], [a:enum])
|
||||||
\ : '%#CtrlPStats# '.a:enum.' %* %=%<%#CtrlPMode2# '.getcwd().' %*'
|
\ : '%#CtrlPStats# '.a:enum.' %* %=%<%#CtrlPMode2# '.getcwd().' %*'
|
||||||
redr
|
redraws
|
||||||
endf
|
endf
|
||||||
" Paths {{{2
|
" Paths {{{2
|
||||||
|
fu! s:formatline(str, ipt)
|
||||||
|
let cond = a:ipt && ( s:winw - 4 ) < s:strwidth(a:str)
|
||||||
|
retu '> '.( cond ? pathshorten(a:str) : a:str )
|
||||||
|
endf
|
||||||
|
|
||||||
fu! s:dircompl(be, sd)
|
fu! s:dircompl(be, sd)
|
||||||
if a:sd == '' | retu [] | en
|
if a:sd == '' | retu [] | en
|
||||||
let [be, sd] = a:be == '' ? [getcwd(), a:sd] : [a:be, a:be.s:lash(a:be).a:sd]
|
let [be, sd] = a:be == '' ? [getcwd(), a:sd] : [a:be, a:be.s:lash(a:be).a:sd]
|
||||||
@@ -1124,9 +1156,16 @@ endf
|
|||||||
fu! ctrlp#setdir(path, ...)
|
fu! ctrlp#setdir(path, ...)
|
||||||
let cmd = a:0 ? a:1 : 'lc!'
|
let cmd = a:0 ? a:1 : 'lc!'
|
||||||
sil! exe cmd ctrlp#fnesc(a:path)
|
sil! exe cmd ctrlp#fnesc(a:path)
|
||||||
|
let s:crfilerel = fnamemodify(s:crfile, ':.')
|
||||||
|
endf
|
||||||
|
|
||||||
|
fu! ctrlp#setlcdir()
|
||||||
|
if exists('*haslocaldir')
|
||||||
|
cal ctrlp#setdir(getcwd(), haslocaldir() ? 'lc!' : 'cd!')
|
||||||
|
en
|
||||||
endf
|
endf
|
||||||
" Highlighting {{{2
|
" Highlighting {{{2
|
||||||
fu! s:syntax()
|
fu! ctrlp#syntax()
|
||||||
for [ke, va] in items(s:hlgrps) | if !hlexists('CtrlP'.ke)
|
for [ke, va] in items(s:hlgrps) | if !hlexists('CtrlP'.ke)
|
||||||
exe 'hi link CtrlP'.ke va
|
exe 'hi link CtrlP'.ke va
|
||||||
en | endfo
|
en | endfo
|
||||||
@@ -1140,9 +1179,9 @@ fu! s:syntax()
|
|||||||
en
|
en
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:highlight(pat, grp)
|
fu! s:highlight(pat, grp, ipt)
|
||||||
cal clearmatches()
|
cal clearmatches()
|
||||||
if !empty(a:pat) && s:ispathitem()
|
if !empty(a:pat) && a:ipt
|
||||||
let pat = s:regexp ? substitute(a:pat, '\\\@<!\^', '^> \\zs', 'g') : a:pat
|
let pat = s:regexp ? substitute(a:pat, '\\\@<!\^', '^> \\zs', 'g') : a:pat
|
||||||
if s:byfname
|
if s:byfname
|
||||||
" Match only filename
|
" Match only filename
|
||||||
@@ -1157,7 +1196,7 @@ fu! s:highlight(pat, grp)
|
|||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:dohighlight()
|
fu! s:dohighlight()
|
||||||
retu len(s:mathi) > 1 && s:mathi[0] && exists('*clearmatches')
|
retu s:mathi[0] && exists('*clearmatches')
|
||||||
endf
|
endf
|
||||||
" Prompt history {{{2
|
" Prompt history {{{2
|
||||||
fu! s:gethistloc()
|
fu! s:gethistloc()
|
||||||
@@ -1218,37 +1257,21 @@ fu! s:buftab(bufnr, md)
|
|||||||
let buflist = tabpagebuflist(tabnr)
|
let buflist = tabpagebuflist(tabnr)
|
||||||
if index(buflist, a:bufnr) >= 0
|
if index(buflist, a:bufnr) >= 0
|
||||||
for winnr in range(1, tabpagewinnr(tabnr, '$'))
|
for winnr in range(1, tabpagewinnr(tabnr, '$'))
|
||||||
if buflist[winnr - 1] == a:bufnr
|
if buflist[winnr - 1] == a:bufnr | retu [tabnr, winnr] | en
|
||||||
retu [tabnr, winnr]
|
|
||||||
en
|
|
||||||
endfo
|
endfo
|
||||||
en
|
en
|
||||||
endfo
|
endfo
|
||||||
retu [0, 0]
|
retu [0, 0]
|
||||||
endf
|
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, ...)
|
fu! ctrlp#normcmd(cmd, ...)
|
||||||
if s:nosplit()
|
if s:nosplit() | retu a:cmd | en
|
||||||
retu a:cmd
|
let norwins = filter(range(1, winnr('$')),
|
||||||
en
|
\ 'empty(getbufvar(winbufnr(v:val), "&bt"))')
|
||||||
let norwins = s:normbuf()
|
|
||||||
for each in norwins
|
for each in norwins
|
||||||
let bufnr = winbufnr(each)
|
let bufnr = winbufnr(each)
|
||||||
if empty(bufname(bufnr)) && empty(getbufvar(bufnr, '&ft'))
|
if empty(bufname(bufnr)) && empty(getbufvar(bufnr, '&ft'))
|
||||||
let fstemp = each
|
let fstemp = each | brea
|
||||||
brea
|
|
||||||
en
|
en
|
||||||
endfo
|
endfo
|
||||||
let norwin = empty(norwins) ? 0 : norwins[0]
|
let norwin = empty(norwins) ? 0 : norwins[0]
|
||||||
@@ -1262,7 +1285,7 @@ fu! ctrlp#normcmd(cmd, ...)
|
|||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:nosplit()
|
fu! s:nosplit()
|
||||||
retu !empty(s:nosplit) && match([bufname('%'), &l:ft], s:nosplit) >= 0
|
retu !empty(s:nosplit) && match([bufname('%'), &l:ft, &l:bt], s:nosplit) >= 0
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:setupblank()
|
fu! s:setupblank()
|
||||||
@@ -1274,8 +1297,7 @@ fu! s:setupblank()
|
|||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:leavepre()
|
fu! s:leavepre()
|
||||||
if s:clrex && ( !has('clientserver') ||
|
if s:clrex && !( has('clientserver') && len(split(serverlist(), "\n")) > 1 )
|
||||||
\ ( has('clientserver') && len(split(serverlist(), "\n")) == 1 ) )
|
|
||||||
cal ctrlp#clra()
|
cal ctrlp#clra()
|
||||||
en
|
en
|
||||||
endf
|
endf
|
||||||
@@ -1320,18 +1342,37 @@ fu! s:argmaps(md, ...)
|
|||||||
retu a:md
|
retu a:md
|
||||||
endf
|
endf
|
||||||
" Misc {{{2
|
" Misc {{{2
|
||||||
|
fu! s:log(m)
|
||||||
|
if exists('g:ctrlp_log') && g:ctrlp_log | if a:m
|
||||||
|
let cadir = ctrlp#utils#cachedir()
|
||||||
|
sil! exe 'redi! >' cadir.s:lash(cadir).'ctrlp.log'
|
||||||
|
el
|
||||||
|
sil! redi END
|
||||||
|
en | en
|
||||||
|
endf
|
||||||
|
|
||||||
|
fu! s:strwidth(str)
|
||||||
|
retu exists('*strdisplaywidth') ? strdisplaywidth(a:str) : strlen(a:str)
|
||||||
|
endf
|
||||||
|
|
||||||
fu! s:getenv()
|
fu! s:getenv()
|
||||||
let s:winh = min([s:mxheight, &lines])
|
|
||||||
let [s:cwd, s:winres] = [getcwd(), [winrestcmd(), &lines, winnr('$')]]
|
let [s:cwd, s:winres] = [getcwd(), [winrestcmd(), &lines, winnr('$')]]
|
||||||
let [s:crfile, s:crfpath] = [expand('%:p', 1), expand('%:p:h', 1)]
|
let [s:crfile, s:crfpath] = [expand('%:p', 1), expand('%:p:h', 1)]
|
||||||
let [s:crword, s:crline] = [expand('<cword>'), getline('.')]
|
let [s:crword, s:crline] = [expand('<cword>'), getline('.')]
|
||||||
let [s:tagfiles, s:crcursor] = [s:tagfiles(), getpos('.')]
|
let [s:winh, s:crcursor] = [min([s:mxheight, &lines]), getpos('.')]
|
||||||
let [s:crbufnr, s:crvisual] = [bufnr('%'), s:lastvisual()]
|
let [s:crbufnr, s:crvisual] = [bufnr('%'), s:lastvisual()]
|
||||||
if exists('g:ctrlp_extensions') && index(g:ctrlp_extensions, 'undo') >= 0
|
let s:currwin = s:mwbottom ? winnr() : winnr() + has('autocmd')
|
||||||
\ && v:version > 702 && has('patch005') && exists('*undotree')
|
let s:wpmode = exists('b:ctrlp_working_path_mode')
|
||||||
|
\ ? b:ctrlp_working_path_mode : s:pathmode
|
||||||
|
if exists('g:ctrlp_extensions')
|
||||||
|
if index(g:ctrlp_extensions, 'undo') >= 0 && exists('*undotree')
|
||||||
|
\ && ( v:version > 703 || ( v:version == 703 && has('patch005') ) )
|
||||||
let s:undotree = undotree()
|
let s:undotree = undotree()
|
||||||
en
|
en
|
||||||
let s:currwin = s:mwbottom ? winnr() : winnr() + has('autocmd')
|
if index(g:ctrlp_extensions, 'tag') >= 0
|
||||||
|
let s:tagfiles = s:tagfiles()
|
||||||
|
en
|
||||||
|
en
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! s:lastvisual()
|
fu! s:lastvisual()
|
||||||
@@ -1373,8 +1414,8 @@ fu! s:openfile(cmd, fid, tail, ...)
|
|||||||
if !empty(a:tail) || j2l
|
if !empty(a:tail) || j2l
|
||||||
sil! norm! zvzz
|
sil! norm! zvzz
|
||||||
en
|
en
|
||||||
if exists('*haslocaldir')
|
if cmd != 'bad'
|
||||||
cal ctrlp#setdir(getcwd(), haslocaldir() ? 'lc!' : 'cd!')
|
cal ctrlp#setlcdir()
|
||||||
en
|
en
|
||||||
endf
|
endf
|
||||||
|
|
||||||
@@ -1452,20 +1493,6 @@ fu! s:onexit()
|
|||||||
en
|
en
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! ctrlp#allbufs()
|
|
||||||
let bufs = []
|
|
||||||
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)')
|
|
||||||
retu bufs
|
|
||||||
endf
|
|
||||||
|
|
||||||
fu! ctrlp#exit()
|
fu! ctrlp#exit()
|
||||||
cal s:PrtExit()
|
cal s:PrtExit()
|
||||||
endf
|
endf
|
||||||
@@ -1473,17 +1500,13 @@ endf
|
|||||||
fu! ctrlp#prtclear()
|
fu! ctrlp#prtclear()
|
||||||
cal s:PrtClear()
|
cal s:PrtClear()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! ctrlp#setlines(type)
|
|
||||||
cal s:SetLines(a:type)
|
|
||||||
endf
|
|
||||||
"}}}1
|
"}}}1
|
||||||
" * Initialization {{{1
|
" * Initialization {{{1
|
||||||
fu! s:SetLines(type)
|
fu! ctrlp#setlines(type)
|
||||||
let s:itemtype = a:type
|
let s:itemtype = a:type
|
||||||
let types = [
|
let types = [
|
||||||
\ 's:Files()',
|
\ 'ctrlp#files()',
|
||||||
\ 's:Buffers()',
|
\ 'ctrlp#buffers()',
|
||||||
\ 'ctrlp#mrufiles#list(-1)',
|
\ 'ctrlp#mrufiles#list(-1)',
|
||||||
\ ]
|
\ ]
|
||||||
if exists('g:ctrlp_ext_vars')
|
if exists('g:ctrlp_ext_vars')
|
||||||
@@ -1499,9 +1522,9 @@ fu! ctrlp#init(type, ...)
|
|||||||
cal s:SetWD(a:0 ? a:1 : '')
|
cal s:SetWD(a:0 ? a:1 : '')
|
||||||
cal s:MapKeys()
|
cal s:MapKeys()
|
||||||
if has('syntax') && exists('g:syntax_on')
|
if has('syntax') && exists('g:syntax_on')
|
||||||
cal s:syntax()
|
cal ctrlp#syntax()
|
||||||
en
|
en
|
||||||
cal s:SetLines(a:type)
|
cal ctrlp#setlines(a:type)
|
||||||
cal s:BuildPrompt(1)
|
cal s:BuildPrompt(1)
|
||||||
endf
|
endf
|
||||||
if has('autocmd') "{{{1
|
if has('autocmd') "{{{1
|
||||||
|
|||||||
@@ -198,17 +198,20 @@ fu! s:parseline(line)
|
|||||||
endf
|
endf
|
||||||
" Public {{{1
|
" Public {{{1
|
||||||
fu! ctrlp#buffertag#init(fname)
|
fu! ctrlp#buffertag#init(fname)
|
||||||
let fname = exists('s:bufname') ? s:bufname : a:fname
|
let bufs = exists('s:btmode') && s:btmode
|
||||||
let bufs = exists('s:btmode') && s:btmode ? ctrlp#allbufs() : [fname]
|
\ ? filter(ctrlp#buffers(), 'filereadable(v:val)')
|
||||||
|
\ : [exists('s:bufname') ? s:bufname : a:fname]
|
||||||
let lines = []
|
let lines = []
|
||||||
for each in bufs
|
for each in bufs
|
||||||
let tftype = get(split(getbufvar(each, '&ft'), '\.'), 0, '')
|
let tftype = get(split(getbufvar(each, '&ft'), '\.'), 0, '')
|
||||||
cal extend(lines, s:process(each, tftype))
|
cal extend(lines, s:process(each, tftype))
|
||||||
endfo
|
endfo
|
||||||
|
if has('syntax') && exists('g:syntax_on')
|
||||||
if !hlexists('CtrlPTabExtra')
|
if !hlexists('CtrlPTabExtra')
|
||||||
hi link CtrlPTabExtra Comment
|
hi link CtrlPTabExtra Comment
|
||||||
en
|
en
|
||||||
sy match CtrlPTabExtra '\zs\t.*\ze$'
|
sy match CtrlPTabExtra '\zs\t.*\ze$'
|
||||||
|
en
|
||||||
retu lines
|
retu lines
|
||||||
endf
|
endf
|
||||||
|
|
||||||
|
|||||||
106
bundle/git_ctrlp/autoload/ctrlp/changes.vim
Normal file
106
bundle/git_ctrlp/autoload/ctrlp/changes.vim
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
" =============================================================================
|
||||||
|
" File: autoload/ctrlp/changes.vim
|
||||||
|
" Description: Change list extension - Jump to a recent change in any buffer
|
||||||
|
" Author: Kien Nguyen <github.com/kien>
|
||||||
|
" =============================================================================
|
||||||
|
|
||||||
|
" User Configuration {{{1
|
||||||
|
" Enable:
|
||||||
|
" let g:ctrlp_extensions += ['changes']
|
||||||
|
" Create Some Commands:
|
||||||
|
" " Single buffer
|
||||||
|
" com! -n=? -com=buffer CtrlPChange
|
||||||
|
" \ cal ctrlp#init(ctrlp#changes#cmd(0, <q-args>))
|
||||||
|
" " All listed buffers
|
||||||
|
" com! CtrlPChangeAll cal ctrlp#init(ctrlp#changes#cmd(1))
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" Init {{{1
|
||||||
|
if exists('g:loaded_ctrlp_changes') && g:loaded_ctrlp_changes
|
||||||
|
fini
|
||||||
|
en
|
||||||
|
let g:loaded_ctrlp_changes = 1
|
||||||
|
|
||||||
|
let s:changes_var = {
|
||||||
|
\ 'init': 'ctrlp#changes#init(s:bufnr, s:crfile)',
|
||||||
|
\ 'accept': 'ctrlp#changes#accept',
|
||||||
|
\ 'lname': 'changes',
|
||||||
|
\ 'sname': 'chs',
|
||||||
|
\ 'exit': 'ctrlp#changes#exit()',
|
||||||
|
\ 'type': 'tabe',
|
||||||
|
\ }
|
||||||
|
|
||||||
|
let g:ctrlp_ext_vars = exists('g:ctrlp_ext_vars') && !empty(g:ctrlp_ext_vars)
|
||||||
|
\ ? add(g:ctrlp_ext_vars, s:changes_var) : [s:changes_var]
|
||||||
|
|
||||||
|
let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)
|
||||||
|
" Utilities {{{1
|
||||||
|
fu! s:changelist(bufnr)
|
||||||
|
sil! exe 'noa hid b' a:bufnr
|
||||||
|
redi => result
|
||||||
|
sil! changes
|
||||||
|
redi END
|
||||||
|
retu map(split(result, "\n")[1:], 'tr(v:val, " ", " ")')
|
||||||
|
endf
|
||||||
|
|
||||||
|
fu! s:process(clines, ...)
|
||||||
|
let [clines, evas] = [[], []]
|
||||||
|
for each in a:clines
|
||||||
|
let parts = matchlist(each, '\v^.\s*\d+\s+(\d+)\s+(\d+)\s(.*)$')
|
||||||
|
if !empty(parts)
|
||||||
|
if parts[3] == '' | let parts[3] = ' ' | en
|
||||||
|
cal add(clines, parts[3].' |'.a:1.':'.a:2.'|'.parts[1].':'.parts[2].'|')
|
||||||
|
en
|
||||||
|
endfo
|
||||||
|
retu reverse(filter(clines, 'count(clines, v:val) == 1'))
|
||||||
|
endf
|
||||||
|
" Public {{{1
|
||||||
|
fu! ctrlp#changes#init(original_bufnr, fname)
|
||||||
|
let fname = exists('s:bufname') ? s:bufname : a:fname
|
||||||
|
let bufs = exists('s:clmode') && s:clmode
|
||||||
|
\ ? filter(ctrlp#buffers(), 'filereadable(v:val)') : [fname]
|
||||||
|
let [swb, &swb] = [&swb, '']
|
||||||
|
let lines = []
|
||||||
|
for each in bufs
|
||||||
|
let [bufnr, fnamet] = [bufnr('^'.each.'$'), fnamemodify(each, ':t')]
|
||||||
|
if bufnr > 0
|
||||||
|
cal extend(lines, s:process(s:changelist(bufnr), bufnr, fnamet))
|
||||||
|
en
|
||||||
|
endfo
|
||||||
|
sil! exe 'noa hid b' a:original_bufnr
|
||||||
|
let &swb = swb
|
||||||
|
let g:ctrlp_nolimit = 1
|
||||||
|
if has('syntax') && exists('g:syntax_on')
|
||||||
|
cal ctrlp#syntax()
|
||||||
|
if !hlexists('CtrlPTabExtra')
|
||||||
|
hi link CtrlPTabExtra Comment
|
||||||
|
en
|
||||||
|
sy match CtrlPTabExtra '\zs\t.*\ze$'
|
||||||
|
en
|
||||||
|
retu lines
|
||||||
|
endf
|
||||||
|
|
||||||
|
fu! ctrlp#changes#accept(mode, str)
|
||||||
|
let info = matchlist(a:str, '\t|\(\d\+\):[^|]\+|\(\d\+\):\(\d\+\)|$')
|
||||||
|
let bufnr = str2nr(get(info, 1))
|
||||||
|
if bufnr
|
||||||
|
cal ctrlp#acceptfile(a:mode, fnamemodify(bufname(bufnr), ':p'))
|
||||||
|
cal cursor(get(info, 2), get(info, 3))
|
||||||
|
sil! norm! zvzz
|
||||||
|
en
|
||||||
|
endf
|
||||||
|
|
||||||
|
fu! ctrlp#changes#cmd(mode, ...)
|
||||||
|
let s:clmode = a:mode
|
||||||
|
if a:0 && !empty(a:1)
|
||||||
|
let s:bufname = fnamemodify(a:1, ':p')
|
||||||
|
en
|
||||||
|
retu s:id
|
||||||
|
endf
|
||||||
|
|
||||||
|
fu! ctrlp#changes#exit()
|
||||||
|
unl! s:clmode s:bufname
|
||||||
|
endf
|
||||||
|
"}}}
|
||||||
|
|
||||||
|
" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2
|
||||||
@@ -31,30 +31,31 @@ let g:ctrlp_ext_vars = exists('g:ctrlp_ext_vars') && !empty(g:ctrlp_ext_vars)
|
|||||||
let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)
|
let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)
|
||||||
" Public {{{1
|
" Public {{{1
|
||||||
fu! ctrlp#line#init()
|
fu! ctrlp#line#init()
|
||||||
let [bufs, lines] = [ctrlp#allbufs(), []]
|
let [bufs, lines] = [filter(ctrlp#buffers(), 'filereadable(v:val)'), []]
|
||||||
for each in bufs
|
for each in bufs
|
||||||
let from_file = readfile(each)
|
let [fnamet, from_file] = [fnamemodify(each, ':t'), readfile(each)]
|
||||||
cal map(from_file, 'tr(v:val, '' '', '' '')')
|
cal map(from_file, 'tr(v:val, '' '', '' '')')
|
||||||
let [id, len_ff, bufnr] = [1, len(from_file), bufnr('^'.each.'$')]
|
let [id, len_ff, bufnr] = [1, len(from_file), bufnr('^'.each.'$')]
|
||||||
wh id <= len_ff
|
wh id <= len_ff
|
||||||
let from_file[id-1] .= ' #:'.bufnr.':'.id
|
let from_file[id-1] .= ' |'.fnamet.'|'.bufnr.':'.id.'|'
|
||||||
let id += 1
|
let id += 1
|
||||||
endw
|
endw
|
||||||
cal filter(from_file, 'v:val !~ ''^\s*\t#:\d\+:\d\+$''')
|
cal filter(from_file, 'v:val !~ ''^\s*\t|[^|]\+|\d\+:\d\+|$''')
|
||||||
cal extend(lines, from_file)
|
cal extend(lines, from_file)
|
||||||
endfo
|
endfo
|
||||||
|
if has('syntax') && exists('g:syntax_on')
|
||||||
if !hlexists('CtrlPTabExtra')
|
if !hlexists('CtrlPTabExtra')
|
||||||
hi link CtrlPTabExtra Comment
|
hi link CtrlPTabExtra Comment
|
||||||
en
|
en
|
||||||
sy match CtrlPTabExtra '\zs\t.*\ze$'
|
sy match CtrlPTabExtra '\zs\t.*\ze$'
|
||||||
|
en
|
||||||
retu lines
|
retu lines
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! ctrlp#line#accept(mode, str)
|
fu! ctrlp#line#accept(mode, str)
|
||||||
let info = get(split(a:str, '\t#:\ze\d\+:\d\+$'), 1, 0)
|
let info = matchlist(a:str, '\t|[^|]\+|\(\d\+\):\(\d\+\)|$')
|
||||||
let bufnr = str2nr(get(split(info, ':'), 0, 0))
|
let [bufnr, linenr] = [str2nr(get(info, 1)), get(info, 2)]
|
||||||
let linenr = get(split(info, ':'), 1, 0)
|
if bufnr > 0
|
||||||
if bufnr
|
|
||||||
cal ctrlp#acceptfile(a:mode, fnamemodify(bufname(bufnr), ':p'), linenr)
|
cal ctrlp#acceptfile(a:mode, fnamemodify(bufname(bufnr), ':p'), linenr)
|
||||||
en
|
en
|
||||||
endf
|
endf
|
||||||
|
|||||||
@@ -36,8 +36,13 @@ fu! ctrlp#mrufiles#list(bufnr, ...) "{{{1
|
|||||||
let s:cafile = s:cadir.ctrlp#utils#lash().'cache.txt'
|
let s:cafile = s:cadir.ctrlp#utils#lash().'cache.txt'
|
||||||
en
|
en
|
||||||
if a:0 && a:1 == 2
|
if a:0 && a:1 == 2
|
||||||
cal ctrlp#utils#writecache([], s:cadir, s:cafile)
|
let mrufs = []
|
||||||
retu []
|
if a:0 == 2
|
||||||
|
let mrufs = ctrlp#utils#readfile(s:cafile)
|
||||||
|
cal filter(mrufs, 'index(a:2, v:val) < 0')
|
||||||
|
en
|
||||||
|
cal ctrlp#utils#writecache(mrufs, s:cadir, s:cafile)
|
||||||
|
retu map(mrufs, 'fnamemodify(v:val, '':.'')')
|
||||||
en
|
en
|
||||||
" Get the list
|
" Get the list
|
||||||
let mrufs = ctrlp#utils#readfile(s:cafile)
|
let mrufs = ctrlp#utils#readfile(s:cafile)
|
||||||
@@ -52,15 +57,11 @@ fu! ctrlp#mrufiles#list(bufnr, ...) "{{{1
|
|||||||
en
|
en
|
||||||
" Return the list with the active buffer removed
|
" Return the list with the active buffer removed
|
||||||
if bufnr == -1
|
if bufnr == -1
|
||||||
let crf = fnamemodify(bufname(winbufnr(winnr('#'))), ':p')
|
|
||||||
let crf = exists('+ssl') ? tr(crf, '/', '\') : crf
|
|
||||||
let mrufs = empty(crf) ? mrufs : filter(mrufs, 'v:val !='.s:csen.' crf')
|
|
||||||
if s:re
|
if s:re
|
||||||
let cwd = exists('+ssl') ? tr(getcwd(), '/', '\') : getcwd()
|
let cwd = exists('+ssl') ? tr(getcwd(), '/', '\') : getcwd()
|
||||||
cal filter(mrufs, '!stridx(v:val, cwd)')
|
cal filter(mrufs, '!stridx(v:val, cwd)')
|
||||||
en
|
en
|
||||||
cal map(mrufs, 'fnamemodify(v:val, '':.'')')
|
retu map(mrufs, 'fnamemodify(v:val, '':.'')')
|
||||||
retu mrufs
|
|
||||||
en
|
en
|
||||||
" Remove old entry
|
" Remove old entry
|
||||||
cal filter(mrufs, 'v:val !='.s:csen.' fn')
|
cal filter(mrufs, 'v:val !='.s:csen.' fn')
|
||||||
|
|||||||
@@ -30,10 +30,12 @@ endf
|
|||||||
" Public {{{1
|
" Public {{{1
|
||||||
fu! ctrlp#quickfix#init()
|
fu! ctrlp#quickfix#init()
|
||||||
let g:ctrlp_nolimit = 1
|
let g:ctrlp_nolimit = 1
|
||||||
|
if has('syntax') && exists('g:syntax_on')
|
||||||
if !hlexists('CtrlPqfLineCol')
|
if !hlexists('CtrlPqfLineCol')
|
||||||
hi link CtrlPqfLineCol Search
|
hi link CtrlPqfLineCol Search
|
||||||
en
|
en
|
||||||
sy match CtrlPqfLineCol '|\zs\d\+:\d\+\ze|'
|
sy match CtrlPqfLineCol '|\zs\d\+:\d\+\ze|'
|
||||||
|
en
|
||||||
retu map(getqflist(), 's:lineout(v:val)')
|
retu map(getqflist(), 's:lineout(v:val)')
|
||||||
endf
|
endf
|
||||||
|
|
||||||
@@ -48,6 +50,7 @@ fu! ctrlp#quickfix#accept(mode, str)
|
|||||||
exe cmd ctrlp#fnesc(filpath)
|
exe cmd ctrlp#fnesc(filpath)
|
||||||
cal cursor(items[2], items[3])
|
cal cursor(items[2], items[3])
|
||||||
sil! norm! zvzz
|
sil! norm! zvzz
|
||||||
|
cal ctrlp#setlcdir()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! ctrlp#quickfix#id()
|
fu! ctrlp#quickfix#id()
|
||||||
|
|||||||
@@ -23,14 +23,6 @@ let g:ctrlp_ext_vars = exists('g:ctrlp_ext_vars') && !empty(g:ctrlp_ext_vars)
|
|||||||
|
|
||||||
let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)
|
let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars)
|
||||||
" Utilities {{{1
|
" 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)
|
fu! s:findcount(str)
|
||||||
let [tg, fname] = split(a:str, '\t\+\ze[^\t]\+$')
|
let [tg, fname] = split(a:str, '\t\+\ze[^\t]\+$')
|
||||||
let [fname, tgs] = [expand(fname, 1), taglist('^'.tg.'$')]
|
let [fname, tgs] = [expand(fname, 1), taglist('^'.tg.'$')]
|
||||||
@@ -67,30 +59,32 @@ endf
|
|||||||
" Public {{{1
|
" Public {{{1
|
||||||
fu! ctrlp#tag#init(tagfiles)
|
fu! ctrlp#tag#init(tagfiles)
|
||||||
if empty(a:tagfiles) | retu [] | en
|
if empty(a:tagfiles) | retu [] | en
|
||||||
let [tagfiles, g:ctrlp_alltags] = [sort(s:nodup(a:tagfiles)), []]
|
let g:ctrlp_alltags = []
|
||||||
|
let tagfiles = sort(filter(a:tagfiles, 'count(a:tagfiles, v:val) == 1'))
|
||||||
for each in tagfiles
|
for each in tagfiles
|
||||||
let alltags = s:filter(ctrlp#utils#readfile(each))
|
let alltags = s:filter(ctrlp#utils#readfile(each))
|
||||||
cal extend(g:ctrlp_alltags, alltags)
|
cal extend(g:ctrlp_alltags, alltags)
|
||||||
endfo
|
endfo
|
||||||
|
if has('syntax') && exists('g:syntax_on')
|
||||||
if !hlexists('CtrlPTabExtra')
|
if !hlexists('CtrlPTabExtra')
|
||||||
hi link CtrlPTabExtra Comment
|
hi link CtrlPTabExtra Comment
|
||||||
en
|
en
|
||||||
sy match CtrlPTabExtra '\zs\t.*\ze$'
|
sy match CtrlPTabExtra '\zs\t.*\ze$'
|
||||||
|
en
|
||||||
retu g:ctrlp_alltags
|
retu g:ctrlp_alltags
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! ctrlp#tag#accept(mode, str)
|
fu! ctrlp#tag#accept(mode, str)
|
||||||
cal ctrlp#exit()
|
cal ctrlp#exit()
|
||||||
let str = matchstr(a:str, '^[^\t]\+\t\+[^\t]\+\ze\t')
|
let str = matchstr(a:str, '^[^\t]\+\t\+[^\t]\+\ze\t')
|
||||||
let [md, tg] = [a:mode, split(str, '^[^\t]\+\zs\t')[0]]
|
let [tg, fnd] = [split(str, '^[^\t]\+\zs\t')[0], s:findcount(str)]
|
||||||
let fnd = s:findcount(str)
|
|
||||||
let cmds = {
|
let cmds = {
|
||||||
\ 't': ['tab sp', 'tab stj'],
|
\ 't': ['tab sp', 'tab stj'],
|
||||||
\ 'h': ['sp', 'stj'],
|
\ 'h': ['sp', 'stj'],
|
||||||
\ 'v': ['vs', 'vert stj'],
|
\ 'v': ['vs', 'vert stj'],
|
||||||
\ 'e': ['', 'tj'],
|
\ 'e': ['', 'tj'],
|
||||||
\ }
|
\ }
|
||||||
let cmd = fnd[0] == 1 ? cmds[md][0] : cmds[md][1]
|
let cmd = fnd[0] == 1 ? cmds[a:mode][0] : cmds[a:mode][1]
|
||||||
let cmd = cmd == 'tj' && &modified ? 'hid '.cmd : cmd
|
let cmd = cmd == 'tj' && &modified ? 'hid '.cmd : cmd
|
||||||
let cmd = cmd =~ '^tab' ? tabpagenr('$').cmd : cmd
|
let cmd = cmd =~ '^tab' ? tabpagenr('$').cmd : cmd
|
||||||
if fnd[0] == 1
|
if fnd[0] == 1
|
||||||
@@ -101,6 +95,7 @@ fu! ctrlp#tag#accept(mode, str)
|
|||||||
el
|
el
|
||||||
exe cmd tg
|
exe cmd tg
|
||||||
en
|
en
|
||||||
|
cal ctrlp#setlcdir()
|
||||||
endf
|
endf
|
||||||
|
|
||||||
fu! ctrlp#tag#id()
|
fu! ctrlp#tag#id()
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
" Init {{{1
|
" Init {{{1
|
||||||
if ( exists('g:loaded_ctrlp_undo') && g:loaded_ctrlp_undo )
|
if ( exists('g:loaded_ctrlp_undo') && g:loaded_ctrlp_undo )
|
||||||
\ || !( v:version > 702 && has('patch005') )
|
\ || !( v:version > 703 || ( v:version == 703 && has('patch005') ) )
|
||||||
fini
|
fini
|
||||||
en
|
en
|
||||||
let g:loaded_ctrlp_undo = 1
|
let g:loaded_ctrlp_undo = 1
|
||||||
@@ -102,7 +102,9 @@ endf
|
|||||||
fu! ctrlp#undo#init(undo)
|
fu! ctrlp#undo#init(undo)
|
||||||
let entries = a:undo['entries']
|
let entries = a:undo['entries']
|
||||||
if empty(entries) | retu [] | en
|
if empty(entries) | retu [] | en
|
||||||
|
if has('syntax') && exists('g:syntax_on')
|
||||||
cal s:syntax()
|
cal s:syntax()
|
||||||
|
en
|
||||||
let g:ctrlp_nolimit = 1
|
let g:ctrlp_nolimit = 1
|
||||||
let entries = sort(s:dict2list(s:flatten(entries)), 's:compval')
|
let entries = sort(s:dict2list(s:flatten(entries)), 's:compval')
|
||||||
retu map(entries, 'v:val[1]." [".v:val[0]."]"')
|
retu map(entries, 'v:val[1]." [".v:val[0]."]"')
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
*ctrlp.txt* Fuzzy file, buffer, mru and tag finder. v1.7.1
|
*ctrlp.txt* Fuzzy file, buffer, mru and tag finder. v1.7.2
|
||||||
*CtrlP* *ControlP* *'ctrlp'* *'ctrl-p'*
|
*CtrlP* *ControlP* *'ctrlp'* *'ctrl-p'*
|
||||||
===============================================================================
|
===============================================================================
|
||||||
# #
|
# #
|
||||||
@@ -21,7 +21,7 @@ CONTENTS *ctrlp-contents*
|
|||||||
6. Extensions...................................|ctrlp-extensions|
|
6. Extensions...................................|ctrlp-extensions|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
1. Intro *ctrlp-intro*
|
INTRO *ctrlp-intro*
|
||||||
|
|
||||||
Full path fuzzy file, buffer, mru and tag finder with an intuitive interface.
|
Full path fuzzy file, buffer, mru and tag finder with an intuitive interface.
|
||||||
Written in pure Vimscript for MacVim and Vim version 7.0+. Has full support for
|
Written in pure Vimscript for MacVim and Vim version 7.0+. Has full support for
|
||||||
@@ -31,7 +31,7 @@ finder, and more.
|
|||||||
To enable optional extensions (tag, dir, rtscript...), see |ctrlp-extensions|.
|
To enable optional extensions (tag, dir, rtscript...), see |ctrlp-extensions|.
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
2. Options *ctrlp-options*
|
OPTIONS *ctrlp-options*
|
||||||
|
|
||||||
Below are the available options and their default values:~
|
Below are the available options and their default values:~
|
||||||
|
|
||||||
@@ -51,14 +51,16 @@ Use this to disable the plugin completely: >
|
|||||||
<
|
<
|
||||||
|
|
||||||
*'g:ctrlp_by_filename'*
|
*'g:ctrlp_by_filename'*
|
||||||
Set this to 1 to set search by filename (not full path) as the default: >
|
Set this to 1 to set searching by filename (not full path) as the default: >
|
||||||
let g:ctrlp_by_filename = 0
|
let g:ctrlp_by_filename = 0
|
||||||
<
|
<
|
||||||
|
Can be toggled on/off by pressing <c-d> inside the prompt.
|
||||||
|
|
||||||
*'g:ctrlp_regexp_search'*
|
*'g:ctrlp_regexp'*
|
||||||
Set this to 1 to set |regexp| search as the default: >
|
Set this to 1 to set |regexp| search as the default: >
|
||||||
let g:ctrlp_regexp_search = 0
|
let g:ctrlp_regexp = 0
|
||||||
<
|
<
|
||||||
|
Can be toggled on/off by pressing <c-r> inside the prompt.
|
||||||
|
|
||||||
*'g:ctrlp_match_window_bottom'*
|
*'g:ctrlp_match_window_bottom'*
|
||||||
Set this to 0 to show the match window at the top of the screen: >
|
Set this to 0 to show the match window at the top of the screen: >
|
||||||
@@ -66,8 +68,8 @@ Set this to 0 to show the match window at the top of the screen: >
|
|||||||
<
|
<
|
||||||
|
|
||||||
*'g:ctrlp_match_window_reversed'*
|
*'g:ctrlp_match_window_reversed'*
|
||||||
Change the listing order of the matched files in the match window. The default
|
Change the listing order of the files in the match window. The default setting
|
||||||
setting (1) is from bottom to top: >
|
(1) is from bottom to top: >
|
||||||
let g:ctrlp_match_window_reversed = 1
|
let g:ctrlp_match_window_reversed = 1
|
||||||
<
|
<
|
||||||
|
|
||||||
@@ -76,28 +78,37 @@ Set the maximum height of the match window: >
|
|||||||
let g:ctrlp_max_height = 10
|
let g:ctrlp_max_height = 10
|
||||||
<
|
<
|
||||||
|
|
||||||
*'g:ctrlp_jump_to_buffer'*
|
*'g:ctrlp_switch_buffer'*
|
||||||
When opening a file with <cr> or <c-t>, if the file's already opened somewhere
|
When opening a file with <cr> or <c-t>, if the file’s already opened somewhere
|
||||||
|CtrlP| will try to jump to it instead of opening a new instance: >
|
|CtrlP| will try to jump to it instead of opening a new instance: >
|
||||||
let g:ctrlp_jump_to_buffer = 2
|
let g:ctrlp_switch_buffer = 2
|
||||||
<
|
<
|
||||||
1 - only jump to the buffer if it’s opened in the current tab.
|
1 - only jump to the buffer if it’s opened in the current tab.
|
||||||
2 - jump tab as well if the buffer's opened in another tab.
|
2 - jump tab as well if the buffer’s opened in another tab.
|
||||||
0 - disable this feature.
|
0 - disable this feature.
|
||||||
|
|
||||||
|
*'g:ctrlp_reuse_window'*
|
||||||
|
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_reuse_window = 'netrw'
|
||||||
|
<
|
||||||
|
Acceptable values are partial name, filetype or buftype of the special buffers.
|
||||||
|
Use |regexp| to specify the pattern.
|
||||||
|
Example: >
|
||||||
|
let g:ctrlp_reuse_window = 'netrw\|help\|quickfix'
|
||||||
|
<
|
||||||
|
|
||||||
*'g:ctrlp_working_path_mode'*
|
*'g:ctrlp_working_path_mode'*
|
||||||
When starting up, |CtrlP| sets its local working directory according to this
|
When starting up, |CtrlP| sets its local working directory according to this
|
||||||
variable: >
|
variable: >
|
||||||
let g:ctrlp_working_path_mode = 2
|
let g:ctrlp_working_path_mode = 2
|
||||||
<
|
<
|
||||||
1 - the parent directory of the current file.
|
1 - the parent directory of the current file.
|
||||||
2 - the nearest ancestor that contains one of these directories/files:
|
2 - the nearest ancestor that contains one of these directories or files:
|
||||||
.git/
|
.git/ .hg/ .svn/ .bzr/ _darcs/
|
||||||
.hg/
|
|
||||||
.bzr/
|
|
||||||
_darcs/
|
|
||||||
root.dir
|
|
||||||
0 - don’t manage working directory.
|
0 - don’t manage working directory.
|
||||||
|
Note: you can use b:ctrlp_working_path_mode (a |b:var|) to set this option on a
|
||||||
|
per buffer basis.
|
||||||
|
|
||||||
*'g:ctrlp_root_markers'*
|
*'g:ctrlp_root_markers'*
|
||||||
Use this to set your own root markers in addition to the default ones. Your
|
Use this to set your own root markers in addition to the default ones. Your
|
||||||
@@ -105,7 +116,7 @@ markers will take precedence: >
|
|||||||
let g:ctrlp_root_markers = ['']
|
let g:ctrlp_root_markers = ['']
|
||||||
<
|
<
|
||||||
These markers (builtins and yours) will serve as identifiers for the '/' and
|
These markers (builtins and yours) will serve as identifiers for the '/' and
|
||||||
'\' special inputs (section 5.e).
|
'\' special inputs (|ctrlp-input-formats| (e)).
|
||||||
|
|
||||||
*'g:ctrlp_use_caching'*
|
*'g:ctrlp_use_caching'*
|
||||||
Set this to 0 to disable per-session caching. When disabled, caching will still
|
Set this to 0 to disable per-session caching. When disabled, caching will still
|
||||||
@@ -165,11 +176,10 @@ only need to keep the lines that you’ve changed the values (inside []): >
|
|||||||
<
|
<
|
||||||
Note: In some terminals, it’s not possible to remap <c-h> without also changing
|
Note: In some terminals, it’s not possible to remap <c-h> without also changing
|
||||||
<bs> (|key-codes|). So if pressing <bs> moves the cursor to the left instead of
|
<bs> (|key-codes|). So if pressing <bs> moves the cursor to the left instead of
|
||||||
deleting a char for you, add this to your |vimrc| to change the default <c-h>
|
deleting a char for you, add this to your |vimrc| to disable the default <c-h>
|
||||||
mapping: >
|
mapping: >
|
||||||
let g:ctrlp_prompt_mappings = {
|
let g:ctrlp_prompt_mappings = {
|
||||||
\ 'PrtBS()': ['<bs>', '<c-]>', '<c-h>'],
|
\ 'PrtCurLeft()': ['<left>', '<c-^>']
|
||||||
\ 'PrtCurLeft()': ['<left>', '<c-^>'],
|
|
||||||
\ }
|
\ }
|
||||||
<
|
<
|
||||||
|
|
||||||
@@ -213,7 +223,7 @@ Set to 1 to sort the MRU file list to most-recently-entered-buffer order: >
|
|||||||
<
|
<
|
||||||
|
|
||||||
*'g:ctrlp_dotfiles'*
|
*'g:ctrlp_dotfiles'*
|
||||||
Set this to 0 if you don’t want |CtrlP| to search for dotfiles and dotdirs: >
|
Set this to 0 if you don’t want |CtrlP| to scan for dotfiles and dotdirs: >
|
||||||
let g:ctrlp_dotfiles = 1
|
let g:ctrlp_dotfiles = 1
|
||||||
<
|
<
|
||||||
You can use |'wildignore'| to exclude anything from the search.
|
You can use |'wildignore'| to exclude anything from the search.
|
||||||
@@ -225,9 +235,9 @@ Examples: >
|
|||||||
Note #1: the `*/` in front of each directory glob is required.
|
Note #1: the `*/` in front of each directory glob is required.
|
||||||
|
|
||||||
Note #2: |wildignore| influences the result of |expand()|, |globpath()| and
|
Note #2: |wildignore| influences the result of |expand()|, |globpath()| and
|
||||||
|glob()| which many plugins use to find stuff on the system (e.g. fugitive.vim
|
|glob()| which many plugins use to find stuff on the system (e.g. VCS related
|
||||||
looks for .git/, some other plugins look for external .exe tools on Windows).
|
plugins look for .git/, .hg/,... some other plugins look for external *.exe
|
||||||
So be a little mindful of what you put in your |wildignore|.
|
tools on Windows). So be a little mindful of what you put in your |wildignore|.
|
||||||
|
|
||||||
*'g:ctrlp_custom_ignore'*
|
*'g:ctrlp_custom_ignore'*
|
||||||
In addition to |'wildignore'|, use this for files and directories you want only
|
In addition to |'wildignore'|, use this for files and directories you want only
|
||||||
@@ -243,12 +253,6 @@ Examples: >
|
|||||||
\ }
|
\ }
|
||||||
<
|
<
|
||||||
|
|
||||||
*'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'*
|
*'g:ctrlp_max_files'*
|
||||||
The maximum number of files to scan, set to 0 for no limit: >
|
The maximum number of files to scan, set to 0 for no limit: >
|
||||||
let g:ctrlp_max_files = 10000
|
let g:ctrlp_max_files = 10000
|
||||||
@@ -317,20 +321,21 @@ pressing <c-y>:
|
|||||||
let g:ctrlp_open_new_file = 'v'
|
let g:ctrlp_open_new_file = 'v'
|
||||||
<
|
<
|
||||||
|
|
||||||
*'g:ctrlp_open_multi'*
|
*'g:ctrlp_open_multiple_files'*
|
||||||
If non-zero, this will enable opening multiple files with <c-z> and <c-o>: >
|
If non-zero, this will enable opening multiple files with <c-z> and <c-o>: >
|
||||||
let g:ctrlp_open_multi = '1v'
|
let g:ctrlp_open_multiple_files = 'v'
|
||||||
|
<
|
||||||
|
Example: >
|
||||||
|
let g:ctrlp_open_multiple_files = '2vr'
|
||||||
<
|
<
|
||||||
For the number:
|
For the number:
|
||||||
- If bigger than 1, it’ll be used as the maximum number of windows or tabs to
|
- If given, it’ll be used as the maximum number of windows or tabs to create
|
||||||
create when opening the files (the rest will be hidden buffers).
|
when opening the files (the rest will be opened as hidden buffers).
|
||||||
- If is 1, <c-o> will open all files, each in a new window or new tab.
|
- If not given, <c-o> will open all files, each in a new window or new tab.
|
||||||
- If no number is given, only the first file will be opened in a window,
|
|
||||||
either new window or reused, and the rest will be hidden buffers.
|
|
||||||
For the letters:
|
For the letters:
|
||||||
t - each in a new tab
|
t - each file in a new tab.
|
||||||
h - each in a new horizontal split
|
h - each file in a new horizontal split.
|
||||||
v - each in a new vertical split
|
v - each file in a new vertical split.
|
||||||
Reuse the current window:
|
Reuse the current window:
|
||||||
tr,
|
tr,
|
||||||
hr,
|
hr,
|
||||||
@@ -349,17 +354,7 @@ Pressing <c-o> or <c-y> will then prompt for a keypress. The key can be:
|
|||||||
r - open in current window (for <c-y> only)
|
r - open in current window (for <c-y> only)
|
||||||
<esc>, <c-c> - cancel and go back to the prompt.
|
<esc>, <c-c> - cancel and go back to the prompt.
|
||||||
Any other key - use the behavior specified with |g:ctrlp_open_new_file| and
|
Any other key - use the behavior specified with |g:ctrlp_open_new_file| and
|
||||||
|g:ctrlp_open_multi|.
|
|g:ctrlp_open_multiple_files|.
|
||||||
|
|
||||||
*'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 = 'netrw'
|
|
||||||
<
|
|
||||||
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\|quickfix'
|
|
||||||
<
|
|
||||||
|
|
||||||
*'g:ctrlp_follow_symlinks'*
|
*'g:ctrlp_follow_symlinks'*
|
||||||
Set this to 1 to follow symbolic links when listing files: >
|
Set this to 1 to follow symbolic links when listing files: >
|
||||||
@@ -394,7 +389,7 @@ Example: >
|
|||||||
See https://gist.github.com/1610859 for a working example.
|
See https://gist.github.com/1610859 for a working example.
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
3. Commands *ctrlp-commands*
|
COMMANDS *ctrlp-commands*
|
||||||
|
|
||||||
*:CtrlP*
|
*:CtrlP*
|
||||||
:CtrlP [starting-directory]
|
:CtrlP [starting-directory]
|
||||||
@@ -412,19 +407,19 @@ See https://gist.github.com/1610859 for a working example.
|
|||||||
:CtrlPMRU
|
:CtrlPMRU
|
||||||
Open |CtrlP| in find Most-Recently-Used file mode.
|
Open |CtrlP| in find Most-Recently-Used file mode.
|
||||||
|
|
||||||
*:ClearCtrlPCache*
|
*:CtrlPClearCache*
|
||||||
:ClearCtrlPCache
|
:CtrlPClearCache
|
||||||
Flush the cache for the current working directory. The same as pressing <F5>
|
Flush the cache for the current working directory. The same as pressing <F5>
|
||||||
inside |CtrlP|.
|
inside |CtrlP|.
|
||||||
You can also enable/disable caching with the option |g:ctrlp_use_caching|.
|
You can also enable/disable caching with the option |g:ctrlp_use_caching|.
|
||||||
|
|
||||||
*:ClearAllCtrlPCaches*
|
*:CtrlPClearAllCaches*
|
||||||
:ClearAllCtrlPCaches
|
:CtrlPClearAllCaches
|
||||||
Delete all the cache files saved in |g:ctrlp_cache_dir|.
|
Delete all the cache files saved in |g:ctrlp_cache_dir|.
|
||||||
|
|
||||||
*:ResetCtrlP*
|
*:CtrlPReload*
|
||||||
:ResetCtrlP
|
:CtrlPReload
|
||||||
Reset all options and take in new values of the option variables.
|
Load new values for the option variables.
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
The following commands ignore the current value of |g:ctrlp_working_path_mode|:
|
The following commands ignore the current value of |g:ctrlp_working_path_mode|:
|
||||||
@@ -439,7 +434,7 @@ The following commands ignore the current value of |g:ctrlp_working_path_mode|:
|
|||||||
This acts like |:CtrlP| with |path_mode| = 2
|
This acts like |:CtrlP| with |path_mode| = 2
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
4. Mappings *ctrlp-mappings*
|
MAPPINGS *ctrlp-mappings*
|
||||||
|
|
||||||
*'ctrlp-<c-p>'*
|
*'ctrlp-<c-p>'*
|
||||||
<c-p>
|
<c-p>
|
||||||
@@ -448,14 +443,14 @@ The following commands ignore the current value of |g:ctrlp_working_path_mode|:
|
|||||||
Once inside the prompt:~
|
Once inside the prompt:~
|
||||||
|
|
||||||
<c-r> *'ctrlp-fullregexp'*
|
<c-r> *'ctrlp-fullregexp'*
|
||||||
Toggle between the string mode (section 5.a & b) and full |regexp| mode.
|
Toggle between the string mode and full |regexp| mode.
|
||||||
(note: in full |regexp| mode, the prompt’s base is 'r>>' instead of '>>>')
|
Note: in full |regexp| mode, the prompt’s base is 'r>>' instead of '>>>'
|
||||||
|
|
||||||
See also |input-formats| (guide) and |g:ctrlp_regexp_search| (option).
|
See also |input-formats| (guide) and |g:ctrlp_regexp_search| (option).
|
||||||
|
|
||||||
<c-d>
|
<c-d>
|
||||||
Toggle between full-path search and filename only search.
|
Toggle between full-path search and filename only search.
|
||||||
(note: in filename mode, the prompt’s base is '>d>' instead of '>>>')
|
Note: in filename mode, the prompt’s base is '>d>' instead of '>>>'
|
||||||
|
|
||||||
<c-f>, 'forward'
|
<c-f>, 'forward'
|
||||||
<c-up>
|
<c-up>
|
||||||
@@ -543,7 +538,8 @@ Once inside the prompt:~
|
|||||||
- Remove deleted files from MRU list.
|
- Remove deleted files from MRU list.
|
||||||
|
|
||||||
<F7>
|
<F7>
|
||||||
Clear MRU list.
|
- Wipe MRU list.
|
||||||
|
- Delete MRU entries marked by <c-z>.
|
||||||
|
|
||||||
<insert>
|
<insert>
|
||||||
Insert the word under the cursor (in the active buffer) into the prompt.
|
Insert the word under the cursor (in the active buffer) into the prompt.
|
||||||
@@ -552,7 +548,7 @@ Once inside the prompt:~
|
|||||||
<c-c>,
|
<c-c>,
|
||||||
<c-g>
|
<c-g>
|
||||||
Exit |CtrlP|.
|
Exit |CtrlP|.
|
||||||
<c-c> can also be used to stop the scan if it’s taking too long.
|
Note: <c-c> can also be used to stop the scan if it’s taking too long.
|
||||||
|
|
||||||
Choose your own mappings with |g:ctrlp_prompt_mappings|.
|
Choose your own mappings with |g:ctrlp_prompt_mappings|.
|
||||||
|
|
||||||
@@ -565,7 +561,7 @@ When inside the match window (press <s-tab> to switch):~
|
|||||||
matches that key.
|
matches that key.
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
5. Input Formats *ctrlp-input-formats*
|
INPUT FORMATS *ctrlp-input-formats*
|
||||||
|
|
||||||
Formats for inputting in the prompt:~
|
Formats for inputting in the prompt:~
|
||||||
|
|
||||||
@@ -613,7 +609,7 @@ f) Type the name of a non-existent file and press <c-y> to create it. Mark a
|
|||||||
g) Submit ? to open this help file.
|
g) Submit ? to open this help file.
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
6. Extensions *g:ctrlp-extensions*
|
EXTENSIONS *g:ctrlp-extensions*
|
||||||
|
|
||||||
Extensions are optional. To enable an extension, add its name to the variable
|
Extensions are optional. To enable an extension, add its name to the variable
|
||||||
g:ctrlp_extensions: >
|
g:ctrlp_extensions: >
|
||||||
@@ -720,6 +716,48 @@ Statuslines:~
|
|||||||
|
|
||||||
For rebuilding the statuslines, see |g:ctrlp_status_func|.
|
For rebuilding the statuslines, see |g:ctrlp_status_func|.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
MISCELLANEOUS CONFIGS *ctrlp-miscellaneous-configs*
|
||||||
|
|
||||||
|
* Use |wildignore| for |g:ctrlp_user_command|:
|
||||||
|
>
|
||||||
|
function! s:wig2cmd()
|
||||||
|
" Change wildignore into space or | separated groups
|
||||||
|
" e.g. .aux .out .toc .jpg .bmp .gif
|
||||||
|
" or .aux$\|.out$\|.toc$\|.jpg$\|.bmp$\|.gif$
|
||||||
|
let pats = ['[*\/]*\([?_.0-9A-Za-z]\+\)\([*\/]*\)\(\\\@<!,\|$\)','\\\@<!,']
|
||||||
|
let subs = has('win32') || has('win64') ? ['\1\3', ' '] : ['\1\2\3', '\\|']
|
||||||
|
let expr = substitute(&wig, pats[0], subs[0], 'g')
|
||||||
|
let expr = substitute(expr, pats[1], subs[1], 'g')
|
||||||
|
let expr = substitute(expr, '\\,', ',', 'g')
|
||||||
|
|
||||||
|
" Set the user_command option
|
||||||
|
let g:ctrlp_user_command = has('win32') || has('win64')
|
||||||
|
\ ? 'dir %s /-n /b /s /a-d | findstr /V /l "'.expr.'"'
|
||||||
|
\ : 'find %s -type f | grep -v "'.expr .'"'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call s:wig2cmd()
|
||||||
|
<
|
||||||
|
(submitted by Rich Alesi <github.com/ralesi>)
|
||||||
|
|
||||||
|
* A standalone function to set the working directory to the project’s root, or
|
||||||
|
to the parent directory of the current file if a root can’t be found:
|
||||||
|
>
|
||||||
|
function! s:setcwd()
|
||||||
|
let cph = expand('%:p:h', 1)
|
||||||
|
if match(cph, '\v^<.+>://') >= 0 | retu | en
|
||||||
|
for mkr in ['.git/', '.hg/', '.svn/', '.bzr/', '_darcs/', '.vimprojects']
|
||||||
|
let wd = call('find'.(mkr =~ '/$' ? 'dir' : 'file'), [mkr, cph.';'])
|
||||||
|
if wd != '' | let &acd = 0 | brea | en
|
||||||
|
endfo
|
||||||
|
exe 'lc!' fnameescape(wd == '' ? cph : substitute(wd, mkr.'$', '.', ''))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
autocmd BufEnter * call s:setcwd()
|
||||||
|
<
|
||||||
|
(requires Vim 7.1.299+)
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
CREDITS *ctrlp-credits*
|
CREDITS *ctrlp-credits*
|
||||||
|
|
||||||
@@ -736,32 +774,37 @@ gibhub, bitbucket, and through email.
|
|||||||
Special thanks:~
|
Special thanks:~
|
||||||
|
|
||||||
* Woojong Koh <github.com/wjkoh>
|
* 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 filenames.
|
|
||||||
|
|
||||||
* Kyo Nagashima <github.com/hail2u>
|
|
||||||
Made some enhancements to file opening mappings.
|
|
||||||
|
|
||||||
* Piet Delport <github.com/pjdelport>
|
|
||||||
Changed the default cache directory to meet XDG spec.
|
|
||||||
|
|
||||||
* Kent Sibilev <github.com/datanoise>
|
|
||||||
Debugged and made various patches.
|
|
||||||
|
|
||||||
* Simon Ruderich
|
* Simon Ruderich
|
||||||
|
* Yasuhiro Matsumoto <github.com/mattn>
|
||||||
* Ken Earley <github.com/kenearley>
|
* Ken Earley <github.com/kenearley>
|
||||||
|
* Kyo Nagashima <github.com/hail2u>
|
||||||
* Zak Johnson <github.com/zakj>
|
* Zak Johnson <github.com/zakj>
|
||||||
* Diego Viola <github.com/diegoviola>
|
* Diego Viola <github.com/diegoviola>
|
||||||
|
* Piet Delport <github.com/pjdelport>
|
||||||
* Thibault Duplessis <github.com/ornicar>
|
* Thibault Duplessis <github.com/ornicar>
|
||||||
|
* Kent Sibilev <github.com/datanoise>
|
||||||
* Tacahiroy <github.com/tacahiroy>
|
* Tacahiroy <github.com/tacahiroy>
|
||||||
Bugfixes/Corrections.
|
* Luca Pette <github.com/lucapette>
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
CHANGELOG *ctrlp-changelog*
|
CHANGELOG *ctrlp-changelog*
|
||||||
|
|
||||||
+ New option: |g:ctrlp_mruf_last_entered| change MRU to recently-entered.
|
+ Rename:
|
||||||
|
*ClearCtrlPCache* -> |CtrlPClearCache|
|
||||||
|
*ClearAllCtrlPCaches* -> |CtrlPClearAllCaches|
|
||||||
|
*ResetCtrlP* -> |CtrlPReload|
|
||||||
|
|
||||||
|
Before 2012/03/02~
|
||||||
|
|
||||||
|
+ Rename:
|
||||||
|
*g:ctrlp_regexp_search* -> |g:ctrlp_regexp|,
|
||||||
|
*g:ctrlp_dont_split* -> |g:ctrlp_reuse_window|,
|
||||||
|
*g:ctrlp_jump_to_buffer* -> |g:ctrlp_switch_buffer|.
|
||||||
|
+ Rename and tweak:
|
||||||
|
*g:ctrlp_open_multi* -> |g:ctrlp_open_multiple_files|.
|
||||||
|
+ Deprecate *g:ctrlp_highlight_match*
|
||||||
|
+ Extend |g:ctrlp_user_command| to support multiple commands.
|
||||||
|
+ New option: |g:ctrlp_mruf_last_entered| change MRU to Recently-Entered.
|
||||||
|
|
||||||
Before 2012/01/15~
|
Before 2012/01/15~
|
||||||
|
|
||||||
@@ -770,7 +813,7 @@ Before 2012/01/15~
|
|||||||
+ New options: |g:ctrlp_arg_map| for <c-y>, <c-o> to accept an argument.
|
+ New options: |g:ctrlp_arg_map| for <c-y>, <c-o> to accept an argument.
|
||||||
|g:ctrlp_status_func| custom statusline.
|
|g:ctrlp_status_func| custom statusline.
|
||||||
|g:ctrlp_mruf_relative| show only MRU files inside cwd.
|
|g:ctrlp_mruf_relative| show only MRU files inside cwd.
|
||||||
+ Extend |g:ctrlp_open_multi| with new optional values: tr, hr, vr.
|
+ Extend g:ctrlp_open_multi with new optional values: tr, hr, vr.
|
||||||
+ Extend |g:ctrlp_custom_ignore| to specifically filter dir, file and link.
|
+ Extend |g:ctrlp_custom_ignore| to specifically filter dir, file and link.
|
||||||
|
|
||||||
Before 2012/01/05~
|
Before 2012/01/05~
|
||||||
@@ -790,29 +833,29 @@ Before 2011/11/30~
|
|||||||
|
|
||||||
Before 2011/11/13~
|
Before 2011/11/13~
|
||||||
|
|
||||||
+ New special input: '/' and '\' find root (section 5.e)
|
+ New special input: '/' and '\' find root (|ctrlp-input-formats| (e))
|
||||||
+ Remove ctrlp#SetWorkingPath().
|
+ Remove ctrlp#SetWorkingPath().
|
||||||
+ Remove |g:ctrlp_mru_files|, make MRU permanent.
|
+ Remove *g:ctrlp_mru_files* and make MRU mode permanent.
|
||||||
+ Extend |g:ctrlp_open_multi|, add new ways to open files.
|
+ Extend g:ctrlp_open_multi, add new ways to open files.
|
||||||
+ New option: |g:ctrlp_dont_split|,
|
+ New option: g:ctrlp_dont_split,
|
||||||
|g:ctrlp_mruf_case_sensitive|
|
|g:ctrlp_mruf_case_sensitive|
|
||||||
|
|
||||||
Before 2011/10/30~
|
Before 2011/10/30~
|
||||||
|
|
||||||
+ New feature: Support for custom extensions.
|
+ New feature: Support for custom extensions.
|
||||||
<F5> also removes non-existent files from MRU list.
|
<F5> also removes non-existent files from MRU list.
|
||||||
+ New option: |g:ctrlp_jump_to_buffer|
|
+ New option: g:ctrlp_jump_to_buffer
|
||||||
|
|
||||||
Before 2011/10/12~
|
Before 2011/10/12~
|
||||||
|
|
||||||
+ New features: Open multiple files.
|
+ New features: Open multiple files.
|
||||||
Pass Vim’s |++opt| and |+cmd| to the opening file
|
Pass Vim’s |++opt| and |+cmd| to the opening file
|
||||||
(section 5.c)
|
(|ctrlp-input-formats| (c))
|
||||||
Auto-complete each dir for |:CtrlP| [starting-directory]
|
Auto-complete each dir for |:CtrlP| [starting-directory]
|
||||||
+ New mappings: <c-z> mark/unmark a file to be opened with <c-o>.
|
+ New mappings: <c-z> mark/unmark a file to be opened with <c-o>.
|
||||||
<c-o> open all marked files.
|
<c-o> open all marked files.
|
||||||
+ New option: |g:ctrlp_open_multi|
|
+ New option: g:ctrlp_open_multi
|
||||||
+ Remove |g:ctrlp_persistent_input|, |g:ctrlp_live_update| and <c-^>.
|
+ Remove *g:ctrlp_persistent_input* *g:ctrlp_live_update* and <c-^>.
|
||||||
|
|
||||||
Before 2011/09/29~
|
Before 2011/09/29~
|
||||||
|
|
||||||
@@ -824,22 +867,22 @@ Before 2011/09/29~
|
|||||||
|
|
||||||
Before 2011/09/19~
|
Before 2011/09/19~
|
||||||
|
|
||||||
+ New command: |ResetCtrlP|
|
+ New command: ResetCtrlP
|
||||||
+ New options: |g:ctrlp_max_files|,
|
+ New options: |g:ctrlp_max_files|,
|
||||||
|g:ctrlp_max_depth|,
|
|g:ctrlp_max_depth|,
|
||||||
|g:ctrlp_live_update|
|
g:ctrlp_live_update
|
||||||
+ New mapping: <c-^>
|
+ New mapping: <c-^>
|
||||||
|
|
||||||
Before 2011/09/12~
|
Before 2011/09/12~
|
||||||
|
|
||||||
+ Ability to cycle through matched lines in the match window.
|
+ Ability to cycle through matched lines in the match window.
|
||||||
+ Extend the behavior of |g:ctrlp_persistent_input|
|
+ Extend the behavior of g:ctrlp_persistent_input
|
||||||
+ Extend the behavior of |:CtrlP|
|
+ Extend the behavior of |:CtrlP|
|
||||||
+ New options: |g:ctrlp_dotfiles|,
|
+ New options: |g:ctrlp_dotfiles|,
|
||||||
|g:ctrlp_clear_cache_on_exit|,
|
|g:ctrlp_clear_cache_on_exit|,
|
||||||
|g:ctrlp_highlight_match|,
|
g:ctrlp_highlight_match,
|
||||||
|g:ctrlp_user_command|
|
|g:ctrlp_user_command|
|
||||||
+ New special input: '..' (section 5.d)
|
+ New special input: '..' (|ctrlp-input-formats| (d))
|
||||||
+ New mapping: <F5>.
|
+ New mapping: <F5>.
|
||||||
+ New commands: |:CtrlPCurWD|,
|
+ New commands: |:CtrlPCurWD|,
|
||||||
|:CtrlPCurFile|,
|
|:CtrlPCurFile|,
|
||||||
@@ -848,11 +891,11 @@ Before 2011/09/12~
|
|||||||
+ New feature: Search in most recently used (MRU) files
|
+ New feature: Search in most recently used (MRU) files
|
||||||
+ New mapping: <c-b>.
|
+ New mapping: <c-b>.
|
||||||
+ Extended the behavior of <c-f>.
|
+ Extended the behavior of <c-f>.
|
||||||
+ New options: |g:ctrlp_mru_files|,
|
+ New options: g:ctrlp_mru_files,
|
||||||
|g:ctrlp_mruf_max|,
|
|g:ctrlp_mruf_max|,
|
||||||
|g:ctrlp_mruf_exclude|,
|
|g:ctrlp_mruf_exclude|,
|
||||||
|g:ctrlp_mruf_include|
|
|g:ctrlp_mruf_include|
|
||||||
+ New command: |:CtrlPMRUFiles|
|
+ New command: |:CtrlPMRU|
|
||||||
|
|
||||||
First public release: 2011/09/06~
|
First public release: 2011/09/06~
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ com! -n=? -com=dir CtrlP cal ctrlp#init(0, <q-args>)
|
|||||||
com! CtrlPBuffer cal ctrlp#init(1)
|
com! CtrlPBuffer cal ctrlp#init(1)
|
||||||
com! CtrlPMRUFiles cal ctrlp#init(2)
|
com! CtrlPMRUFiles cal ctrlp#init(2)
|
||||||
|
|
||||||
|
com! CtrlPClearCache cal ctrlp#clr()
|
||||||
|
com! CtrlPClearAllCaches cal ctrlp#clra()
|
||||||
|
com! CtrlPReload cal ctrlp#reset()
|
||||||
|
|
||||||
com! ClearCtrlPCache cal ctrlp#clr()
|
com! ClearCtrlPCache cal ctrlp#clr()
|
||||||
com! ClearAllCtrlPCaches cal ctrlp#clra()
|
com! ClearAllCtrlPCaches cal ctrlp#clra()
|
||||||
com! ResetCtrlP cal ctrlp#reset()
|
com! ResetCtrlP cal ctrlp#reset()
|
||||||
@@ -26,7 +30,7 @@ com! CtrlPCurWD cal ctrlp#init(0, 0)
|
|||||||
com! CtrlPCurFile cal ctrlp#init(0, 1)
|
com! CtrlPCurFile cal ctrlp#init(0, 1)
|
||||||
com! CtrlPRoot cal ctrlp#init(0, 2)
|
com! CtrlPRoot cal ctrlp#init(0, 2)
|
||||||
|
|
||||||
if g:ctrlp_map != ''
|
if g:ctrlp_map != '' && !hasmapto(':<c-u>'.g:ctrlp_cmd.'<cr>', 'n')
|
||||||
exe 'nn <silent>' g:ctrlp_map ':<c-u>'.g:ctrlp_cmd.'<cr>'
|
exe 'nn <silent>' g:ctrlp_map ':<c-u>'.g:ctrlp_cmd.'<cr>'
|
||||||
en
|
en
|
||||||
|
|
||||||
|
|||||||
@@ -16,14 +16,17 @@ Full path fuzzy __file__, __buffer__, __mru__ and __tag__ finder for Vim.
|
|||||||
|
|
||||||
Once CtrlP is open:
|
Once CtrlP is open:
|
||||||
|
|
||||||
* Press `<c-f>` and `<c-b>` to switch between find file, buffer, and MRU file modes.
|
* Press `<c-f>` and `<c-b>` to switch between find file, buffer, and MRU file
|
||||||
|
modes.
|
||||||
* Press `<c-d>` to switch to filename only search instead of full path.
|
* Press `<c-d>` to switch to filename only search instead of full path.
|
||||||
* Press `<F5>` to purge the cache for the current directory and get new files.
|
* Press `<F5>` to purge the cache for the current directory and get new files.
|
||||||
* Use `*` or `|` in the prompt to submit the string as a Vim’s regexp pattern.
|
* Use `*` or `|` in the prompt to submit the string as a Vim’s regexp pattern.
|
||||||
* Or press `<c-r>` to switch to regexp mode.
|
* Or press `<c-r>` to switch to regexp mode.
|
||||||
* End the input string with a colon `:` followed by a command to execute after opening the file.
|
* End the input string with a colon `:` followed by a command to execute after
|
||||||
|
opening the file.
|
||||||
e.g. `abc:45` will open the file matched the pattern and jump to line 45.
|
e.g. `abc:45` will open the file matched the pattern and jump to line 45.
|
||||||
* Submit two dots `..` as the input string to go backward the directory tree by 1 level.
|
* Submit two dots `..` as the input string to go backward the directory tree by
|
||||||
|
1 level.
|
||||||
* Use `<c-y>` to create a new file and its parent dirs.
|
* Use `<c-y>` to create a new file and its parent dirs.
|
||||||
* Use `<c-z>` to mark/unmark files and `<c-o>` to open them.
|
* Use `<c-z>` to mark/unmark files and `<c-o>` to open them.
|
||||||
|
|
||||||
@@ -34,7 +37,8 @@ e.g. `abc:45` will open the file matched the pattern and jump to line 45.
|
|||||||
let g:ctrlp_map = '<c-p>'
|
let g:ctrlp_map = '<c-p>'
|
||||||
```
|
```
|
||||||
|
|
||||||
* When CtrlP is invoked, it automatically sets the working directory according to this variable:
|
* When CtrlP is invoked, it automatically sets its local working directory
|
||||||
|
according to this variable:
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
let g:ctrlp_working_path_mode = 2
|
let g:ctrlp_working_path_mode = 2
|
||||||
@@ -43,19 +47,14 @@ e.g. `abc:45` will open the file matched the pattern and jump to line 45.
|
|||||||
0 - don’t manage working directory.
|
0 - don’t manage working directory.
|
||||||
1 - the parent directory of the current file.
|
1 - the parent directory of the current file.
|
||||||
2 - the nearest ancestor that contains one of these directories or files:
|
2 - the nearest ancestor that contains one of these directories or files:
|
||||||
|
`.git/` `.hg/` `.svn/` `.bzr/` `_darcs/`
|
||||||
|
|
||||||
.git/
|
* If you want to exclude directories or files from the search, use the Vim’s
|
||||||
.hg/
|
option `wildignore` and/or the option `g:ctrlp_custom_ignore`. Examples:
|
||||||
.bzr/
|
|
||||||
_darcs/
|
|
||||||
root.dir
|
|
||||||
|
|
||||||
* If you want to exclude directories or files from the search, you can use the Vim’s option `wildignore`
|
|
||||||
and/or the option `g:ctrlp_custom_ignore`. Examples:
|
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
set wildignore+=*/.git/*,*/.hg/*,*/.svn/* " for Linux/MacOSX
|
set wildignore+=*/tmp/*,*.so,*.swp,*.zip " MacOSX/Linux
|
||||||
set wildignore+=.git\*,.hg\*,.svn\* " for Windows
|
set wildignore+=tmp\*,*.swp,*.zip,*.exe " Windows
|
||||||
|
|
||||||
let g:ctrlp_custom_ignore = '\.git$\|\.hg$\|\.svn$'
|
let g:ctrlp_custom_ignore = '\.git$\|\.hg$\|\.svn$'
|
||||||
let g:ctrlp_custom_ignore = {
|
let g:ctrlp_custom_ignore = {
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ Installation
|
|||||||
cd ~/.vim/bundle
|
cd ~/.vim/bundle
|
||||||
git clone https://github.com/scrooloose/syntastic.git
|
git clone https://github.com/scrooloose/syntastic.git
|
||||||
|
|
||||||
Then reload vim, run `:helptags`, and check out `:help syntastic.txt`.
|
Then reload vim, run `:Helptags`, and check out `:help syntastic.txt`.
|
||||||
|
|
||||||
|
|
||||||
Google group
|
Google group
|
||||||
@@ -64,6 +64,16 @@ Google group
|
|||||||
To get information or make suggestions check out the [google group](https://groups.google.com/group/vim-syntastic).
|
To get information or make suggestions check out the [google group](https://groups.google.com/group/vim-syntastic).
|
||||||
|
|
||||||
|
|
||||||
|
FAQ
|
||||||
|
---
|
||||||
|
|
||||||
|
__Q. I installed syntastic but it isn't reporting any errors ...__
|
||||||
|
|
||||||
|
A. The most likely reason is that the syntax checker that it requires isn't installed. For example: python requires either `flake8`, `pyflakes` or `pylint` to be installed and in `$PATH`. To see which executable is required, just look in `syntax_checkers/<filetype>.vim`.
|
||||||
|
|
||||||
|
Another reason it could fail is that the error output for the syntax checker may have changed. In this case, make sure you have the latest version of the syntax checker installed. If it still fails then create an issue - or better yet, create a pull request.
|
||||||
|
|
||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
---------
|
---------
|
||||||
2.3.0 (16-feb-2012)
|
2.3.0 (16-feb-2012)
|
||||||
|
|||||||
@@ -38,6 +38,34 @@ function! s:Init()
|
|||||||
call s:RegHandler('php\.h', 'syntastic#c#CheckPhp', [])
|
call s:RegHandler('php\.h', 'syntastic#c#CheckPhp', [])
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" default include directories
|
||||||
|
let s:default_includes = [ '.', '..', 'include', 'includes',
|
||||||
|
\ '../include', '../includes' ]
|
||||||
|
|
||||||
|
" uniquify the input list
|
||||||
|
function! s:Unique(list)
|
||||||
|
let l = []
|
||||||
|
for elem in a:list
|
||||||
|
if index(l, elem) == -1
|
||||||
|
let l = add(l, elem)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
return l
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" get the gcc include directory argument depending on the default
|
||||||
|
" includes and the optional user-defined 'g:syntastic_c_include_dirs'
|
||||||
|
function! syntastic#c#GetIncludeDirs(filetype)
|
||||||
|
let include_dirs = copy(s:default_includes)
|
||||||
|
|
||||||
|
if exists('g:syntastic_'.a:filetype.'_include_dirs')
|
||||||
|
call extend(include_dirs, g:syntastic_{a:filetype}_include_dirs)
|
||||||
|
endif
|
||||||
|
|
||||||
|
return join(map(s:Unique(include_dirs), '"-I" . v:val'), ' ')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
" search the first 100 lines for include statements that are
|
" search the first 100 lines for include statements that are
|
||||||
" given in the handlers dictionary
|
" given in the handlers dictionary
|
||||||
function! syntastic#c#SearchHeaders()
|
function! syntastic#c#SearchHeaders()
|
||||||
|
|||||||
@@ -127,6 +127,10 @@ function! s:UpdateErrors(auto_invoked)
|
|||||||
call s:RefreshSigns()
|
call s:RefreshSigns()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if g:syntastic_enable_highlighting
|
||||||
|
call s:HightlightErrors()
|
||||||
|
endif
|
||||||
|
|
||||||
if g:syntastic_auto_jump && s:BufHasErrorsOrWarningsToDisplay()
|
if g:syntastic_auto_jump && s:BufHasErrorsOrWarningsToDisplay()
|
||||||
silent! ll
|
silent! ll
|
||||||
endif
|
endif
|
||||||
@@ -160,8 +164,10 @@ function! s:LocList()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"clear the loc list for the buffer
|
"clear the loc list for the buffer
|
||||||
function! s:ClearLocList()
|
function! s:ClearCache()
|
||||||
let b:syntastic_loclist = []
|
let b:syntastic_loclist = []
|
||||||
|
unlet! b:syntastic_errors
|
||||||
|
unlet! b:syntastic_warnings
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"detect and cache all syntax errors in this buffer
|
"detect and cache all syntax errors in this buffer
|
||||||
@@ -169,7 +175,7 @@ endfunction
|
|||||||
"depends on a function called SyntaxCheckers_{&ft}_GetLocList() existing
|
"depends on a function called SyntaxCheckers_{&ft}_GetLocList() existing
|
||||||
"elsewhere
|
"elsewhere
|
||||||
function! s:CacheErrors()
|
function! s:CacheErrors()
|
||||||
call s:ClearLocList()
|
call s:ClearCache()
|
||||||
|
|
||||||
if filereadable(expand("%"))
|
if filereadable(expand("%"))
|
||||||
|
|
||||||
@@ -195,7 +201,7 @@ function! s:ToggleMode()
|
|||||||
let g:syntastic_mode_map['mode'] = "active"
|
let g:syntastic_mode_map['mode'] = "active"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call s:ClearLocList()
|
call s:ClearCache()
|
||||||
call s:UpdateErrors(1)
|
call s:UpdateErrors(1)
|
||||||
|
|
||||||
echo "Syntastic: " . g:syntastic_mode_map['mode'] . " mode enabled"
|
echo "Syntastic: " . g:syntastic_mode_map['mode'] . " mode enabled"
|
||||||
@@ -217,30 +223,22 @@ function! s:ModeMapAllowsAutoChecking()
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"return true if there are cached errors/warnings for this buf
|
|
||||||
function! s:BufHasErrorsOrWarnings()
|
|
||||||
return !empty(s:LocList())
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
"return true if there are cached errors for this buf
|
|
||||||
function! s:BufHasErrors()
|
|
||||||
return len(s:ErrorsForType('E')) > 0
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:BufHasErrorsOrWarningsToDisplay()
|
function! s:BufHasErrorsOrWarningsToDisplay()
|
||||||
return s:BufHasErrors() || (!g:syntastic_quiet_warnings && s:BufHasErrorsOrWarnings())
|
return len(s:Errors()) || (!g:syntastic_quiet_warnings && !empty(s:LocList()))
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:ErrorsForType(type)
|
|
||||||
return s:FilterLocList({'type': a:type})
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:Errors()
|
function! s:Errors()
|
||||||
return s:ErrorsForType("E")
|
if !exists("b:syntastic_errors")
|
||||||
|
let b:syntastic_errors = s:FilterLocList({'type': "E"})
|
||||||
|
endif
|
||||||
|
return b:syntastic_errors
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:Warnings()
|
function! s:Warnings()
|
||||||
return s:ErrorsForType("W")
|
if !exists("b:syntastic_warnings")
|
||||||
|
let b:syntastic_warnings = s:FilterLocList({'type': "W"})
|
||||||
|
endif
|
||||||
|
return b:syntastic_warnings
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"Filter a loc list (defaults to s:LocList()) by a:filters
|
"Filter a loc list (defaults to s:LocList()) by a:filters
|
||||||
@@ -253,16 +251,21 @@ endfunction
|
|||||||
function! s:FilterLocList(filters, ...)
|
function! s:FilterLocList(filters, ...)
|
||||||
let llist = a:0 ? a:1 : s:LocList()
|
let llist = a:0 ? a:1 : s:LocList()
|
||||||
|
|
||||||
let rv = deepcopy(llist)
|
let rv = []
|
||||||
for error in llist
|
|
||||||
for key in keys(a:filters)
|
|
||||||
let rhs = a:filters[key]
|
|
||||||
if type(rhs) == 1 "string
|
|
||||||
let rhs = '"' . rhs . '"'
|
|
||||||
endif
|
|
||||||
|
|
||||||
call filter(rv, "v:val['".key."'] ==? " . rhs)
|
for error in llist
|
||||||
|
|
||||||
|
let passes_filters = 1
|
||||||
|
for key in keys(a:filters)
|
||||||
|
if error[key] !=? a:filters[key]
|
||||||
|
let passes_filters = 0
|
||||||
|
break
|
||||||
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
|
if passes_filters
|
||||||
|
call add(rv, error)
|
||||||
|
endif
|
||||||
endfor
|
endfor
|
||||||
return rv
|
return rv
|
||||||
endfunction
|
endfunction
|
||||||
@@ -351,6 +354,43 @@ function! s:ShowLocList()
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
"highlight the current errors using matchadd()
|
||||||
|
"
|
||||||
|
"The function `Syntastic_{&ft}_GetHighlightRegex` is used to get the regex to
|
||||||
|
"highlight errors that do not have a 'col' key (and hence cant be done
|
||||||
|
"automatically). This function must take one arg (an error item) and return a
|
||||||
|
"regex to match that item in the buffer.
|
||||||
|
"
|
||||||
|
"If the 'force_highlight_callback' key is set for an error item, then invoke
|
||||||
|
"the callback even if it can be highlighted automatically.
|
||||||
|
function! s:HightlightErrors()
|
||||||
|
call s:ClearErrorHighlights()
|
||||||
|
|
||||||
|
let fts = substitute(&ft, '-', '_', 'g')
|
||||||
|
for ft in split(fts, '\.')
|
||||||
|
|
||||||
|
for item in s:LocList()
|
||||||
|
|
||||||
|
let force_callback = has_key(item, 'force_highlight_callback') && item['force_highlight_callback']
|
||||||
|
|
||||||
|
let group = item['type'] == 'E' ? 'SyntasticError' : 'SyntasticWarning'
|
||||||
|
if item['col'] && !force_callback
|
||||||
|
let lastcol = col([item['lnum'], '$'])
|
||||||
|
let lcol = min([lastcol, item['col']])
|
||||||
|
call matchadd(group, '\%'.item['lnum'].'l\%'.lcol.'c')
|
||||||
|
else
|
||||||
|
|
||||||
|
if exists("*SyntaxCheckers_". ft ."_GetHighlightRegex")
|
||||||
|
let term = SyntaxCheckers_{ft}_GetHighlightRegex(item)
|
||||||
|
if len(term) > 0
|
||||||
|
call matchadd(group, '\%' . item['lnum'] . 'l' . term)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
"remove all error highlights from the window
|
"remove all error highlights from the window
|
||||||
function! s:ClearErrorHighlights()
|
function! s:ClearErrorHighlights()
|
||||||
for match in getmatches()
|
for match in getmatches()
|
||||||
@@ -439,30 +479,33 @@ function! SyntasticStatuslineFlag()
|
|||||||
let errors = s:Errors()
|
let errors = s:Errors()
|
||||||
let warnings = s:Warnings()
|
let warnings = s:Warnings()
|
||||||
|
|
||||||
|
let num_errors = len(errors)
|
||||||
|
let num_warnings = len(warnings)
|
||||||
|
|
||||||
let output = g:syntastic_stl_format
|
let output = g:syntastic_stl_format
|
||||||
|
|
||||||
"hide stuff wrapped in %E(...) unless there are errors
|
"hide stuff wrapped in %E(...) unless there are errors
|
||||||
let output = substitute(output, '\C%E{\([^}]*\)}', len(errors) ? '\1' : '' , 'g')
|
let output = substitute(output, '\C%E{\([^}]*\)}', num_errors ? '\1' : '' , 'g')
|
||||||
|
|
||||||
"hide stuff wrapped in %W(...) unless there are warnings
|
"hide stuff wrapped in %W(...) unless there are warnings
|
||||||
let output = substitute(output, '\C%W{\([^}]*\)}', len(warnings) ? '\1' : '' , 'g')
|
let output = substitute(output, '\C%W{\([^}]*\)}', num_warnings ? '\1' : '' , 'g')
|
||||||
|
|
||||||
"hide stuff wrapped in %B(...) unless there are both errors and warnings
|
"hide stuff wrapped in %B(...) unless there are both errors and warnings
|
||||||
let output = substitute(output, '\C%B{\([^}]*\)}', (len(warnings) && len(errors)) ? '\1' : '' , 'g')
|
let output = substitute(output, '\C%B{\([^}]*\)}', (num_warnings && num_errors) ? '\1' : '' , 'g')
|
||||||
|
|
||||||
"sub in the total errors/warnings/both
|
"sub in the total errors/warnings/both
|
||||||
let output = substitute(output, '\C%w', len(warnings), 'g')
|
let output = substitute(output, '\C%w', num_warnings, 'g')
|
||||||
let output = substitute(output, '\C%e', len(errors), 'g')
|
let output = substitute(output, '\C%e', num_errors, 'g')
|
||||||
let output = substitute(output, '\C%t', len(s:LocList()), 'g')
|
let output = substitute(output, '\C%t', len(s:LocList()), 'g')
|
||||||
|
|
||||||
"first error/warning line num
|
"first error/warning line num
|
||||||
let output = substitute(output, '\C%F', s:LocList()[0]['lnum'], 'g')
|
let output = substitute(output, '\C%F', s:LocList()[0]['lnum'], 'g')
|
||||||
|
|
||||||
"first error line num
|
"first error line num
|
||||||
let output = substitute(output, '\C%fe', len(errors) ? errors[0]['lnum'] : '', 'g')
|
let output = substitute(output, '\C%fe', num_errors ? errors[0]['lnum'] : '', 'g')
|
||||||
|
|
||||||
"first warning line num
|
"first warning line num
|
||||||
let output = substitute(output, '\C%fw', len(warnings) ? warnings[0]['lnum'] : '', 'g')
|
let output = substitute(output, '\C%fw', num_warnings ? warnings[0]['lnum'] : '', 'g')
|
||||||
|
|
||||||
return output
|
return output
|
||||||
else
|
else
|
||||||
@@ -539,37 +582,6 @@ function! SyntasticErrorBalloonExpr()
|
|||||||
return get(b:syntastic_balloons, v:beval_lnum, '')
|
return get(b:syntastic_balloons, v:beval_lnum, '')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
"highlight the list of errors (a:errors) using matchadd()
|
|
||||||
"
|
|
||||||
"a:termfunc is provided to highlight errors that do not have a 'col' key (and
|
|
||||||
"hence cant be done automatically). This function must take one arg (an error
|
|
||||||
"item) and return a regex to match that item in the buffer.
|
|
||||||
"
|
|
||||||
"an optional boolean third argument can be provided to force a:termfunc to be
|
|
||||||
"used regardless of whether a 'col' key is present for the error
|
|
||||||
function! SyntasticHighlightErrors(errors, termfunc, ...)
|
|
||||||
if !g:syntastic_enable_highlighting
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
call s:ClearErrorHighlights()
|
|
||||||
|
|
||||||
let force_callback = a:0 && a:1
|
|
||||||
for item in a:errors
|
|
||||||
let group = item['type'] == 'E' ? 'SyntasticError' : 'SyntasticWarning'
|
|
||||||
if item['col'] && !force_callback
|
|
||||||
let lastcol = col([item['lnum'], '$'])
|
|
||||||
let lcol = min([lastcol, item['col']])
|
|
||||||
call matchadd(group, '\%'.item['lnum'].'l\%'.lcol.'c')
|
|
||||||
else
|
|
||||||
let term = a:termfunc(item)
|
|
||||||
if len(term) > 0
|
|
||||||
call matchadd(group, '\%' . item['lnum'] . 'l' . term)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
"take a list of errors and add default values to them from a:options
|
"take a list of errors and add default values to them from a:options
|
||||||
function! SyntasticAddToErrors(errors, options)
|
function! SyntasticAddToErrors(errors, options)
|
||||||
for i in range(0, len(a:errors)-1)
|
for i in range(0, len(a:errors)-1)
|
||||||
|
|||||||
@@ -64,56 +64,33 @@ endif
|
|||||||
let s:save_cpo = &cpo
|
let s:save_cpo = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
" default include directories
|
if !exists('g:syntastic_c_compiler_options')
|
||||||
let s:default_includes = [ '.', '..', 'include', 'includes',
|
let g:syntastic_c_compiler_options = '-std=gnu99'
|
||||||
\ '../include', '../includes' ]
|
endif
|
||||||
|
|
||||||
" uniquify the input list
|
|
||||||
function! s:Unique(list)
|
|
||||||
let l = []
|
|
||||||
for elem in a:list
|
|
||||||
if index(l, elem) == -1
|
|
||||||
let l = add(l, elem)
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
return l
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" get the gcc include directory argument depending on the default
|
|
||||||
" includes and the optional user-defined 'g:syntastic_c_include_dirs'
|
|
||||||
function! s:GetIncludeDirs()
|
|
||||||
let include_dirs = s:default_includes
|
|
||||||
|
|
||||||
if exists('g:syntastic_c_include_dirs')
|
|
||||||
call extend(include_dirs, g:syntastic_c_include_dirs)
|
|
||||||
endif
|
|
||||||
|
|
||||||
return join(map(s:Unique(include_dirs), '"-I" . v:val'), ' ')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! SyntaxCheckers_c_GetLocList()
|
function! SyntaxCheckers_c_GetLocList()
|
||||||
let makeprg = 'gcc -fsyntax-only -std=gnu99 '.shellescape(expand('%')).
|
let makeprg = 'gcc -fsyntax-only '
|
||||||
\ ' '.s:GetIncludeDirs()
|
|
||||||
let errorformat = '%-G%f:%s:,%-G%f:%l: %#error: %#(Each undeclared '.
|
let errorformat = '%-G%f:%s:,%-G%f:%l: %#error: %#(Each undeclared '.
|
||||||
\ 'identifier is reported only%.%#,%-G%f:%l: %#error: %#for '.
|
\ 'identifier is reported only%.%#,%-G%f:%l: %#error: %#for '.
|
||||||
\ 'each function it appears%.%#,%-GIn file included%.%#,'.
|
\ 'each function it appears%.%#,%-GIn file included%.%#,'.
|
||||||
\ '%-G %#from %f:%l\,,%f:%l:%c: %m,%f:%l: %trror: %m,%f:%l: %m'
|
\ '%-G %#from %f:%l\,,%f:%l:%c: %m,%f:%l: %trror: %m,%f:%l: %m'
|
||||||
|
|
||||||
|
" add optional user-defined compiler options
|
||||||
|
let makeprg .= g:syntastic_c_compiler_options
|
||||||
|
|
||||||
|
let makeprg .= ' '.shellescape(expand('%')).
|
||||||
|
\ ' '.syntastic#c#GetIncludeDirs('c')
|
||||||
|
|
||||||
" determine whether to parse header files as well
|
" determine whether to parse header files as well
|
||||||
if expand('%') =~? '.h$'
|
if expand('%') =~? '.h$'
|
||||||
if exists('g:syntastic_c_check_header')
|
if exists('g:syntastic_c_check_header')
|
||||||
let makeprg = 'gcc -c '.shellescape(expand('%')).
|
let makeprg = 'gcc -c '.shellescape(expand('%')).
|
||||||
\ ' '.s:GetIncludeDirs()
|
\ ' '.syntastic#c#GetIncludeDirs('c')
|
||||||
else
|
else
|
||||||
return []
|
return []
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" add optional user-defined compiler options
|
|
||||||
if exists('g:syntastic_c_compiler_options')
|
|
||||||
let makeprg .= g:syntastic_c_compiler_options
|
|
||||||
endif
|
|
||||||
|
|
||||||
" check if the user manually set some cflags
|
" check if the user manually set some cflags
|
||||||
if !exists('b:syntastic_c_cflags')
|
if !exists('b:syntastic_c_cflags')
|
||||||
" check whether to search for include files at all
|
" check whether to search for include files at all
|
||||||
|
|||||||
@@ -20,6 +20,12 @@
|
|||||||
"
|
"
|
||||||
" let g:syntastic_cpp_no_include_search = 1
|
" let g:syntastic_cpp_no_include_search = 1
|
||||||
"
|
"
|
||||||
|
" In order to add some custom include directories that should be added to the
|
||||||
|
" gcc command line you can add those to the global variable
|
||||||
|
" g:syntastic_cpp_include_dirs. This list can be used like this:
|
||||||
|
"
|
||||||
|
" let g:syntastic_cpp_include_dirs = [ 'includes', 'headers' ]
|
||||||
|
"
|
||||||
" To enable header files being re-checked on every file write add the
|
" To enable header files being re-checked on every file write add the
|
||||||
" following line to your .vimrc. Otherwise the header files are checked only
|
" following line to your .vimrc. Otherwise the header files are checked only
|
||||||
" one time on initially loading the file.
|
" one time on initially loading the file.
|
||||||
@@ -39,6 +45,12 @@
|
|||||||
" checking execution via the variable 'g:syntastic_cpp_compiler_options':
|
" checking execution via the variable 'g:syntastic_cpp_compiler_options':
|
||||||
"
|
"
|
||||||
" let g:syntastic_cpp_compiler_options = ' -std=c++0x'
|
" let g:syntastic_cpp_compiler_options = ' -std=c++0x'
|
||||||
|
"
|
||||||
|
" Using the global variable 'g:syntastic_cpp_remove_include_errors' you can
|
||||||
|
" specify whether errors of files included via the
|
||||||
|
" g:syntastic_cpp_include_dirs' setting are removed from the result set:
|
||||||
|
"
|
||||||
|
" let g:syntastic_cpp_remove_include_errors = 1
|
||||||
|
|
||||||
if exists('loaded_cpp_syntax_checker')
|
if exists('loaded_cpp_syntax_checker')
|
||||||
finish
|
finish
|
||||||
@@ -53,21 +65,25 @@ let s:save_cpo = &cpo
|
|||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
function! SyntaxCheckers_cpp_GetLocList()
|
function! SyntaxCheckers_cpp_GetLocList()
|
||||||
let makeprg = 'g++ -fsyntax-only '.shellescape(expand('%'))
|
let makeprg = 'g++ -fsyntax-only '
|
||||||
let errorformat = '%-G%f:%s:,%f:%l:%c: %m,%f:%l: %m'
|
let errorformat = '%-G%f:%s:,%f:%l:%c: %m,%f:%l: %m'
|
||||||
|
|
||||||
if expand('%') =~? '\%(.h\|.hpp\|.hh\)$'
|
|
||||||
if exists('g:syntastic_cpp_check_header')
|
|
||||||
let makeprg = 'g++ -c '.shellescape(expand('%'))
|
|
||||||
else
|
|
||||||
return []
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
if exists('g:syntastic_cpp_compiler_options')
|
if exists('g:syntastic_cpp_compiler_options')
|
||||||
let makeprg .= g:syntastic_cpp_compiler_options
|
let makeprg .= g:syntastic_cpp_compiler_options
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let makeprg .= ' ' . shellescape(expand('%')) .
|
||||||
|
\ ' ' . syntastic#c#GetIncludeDirs('cpp')
|
||||||
|
|
||||||
|
if expand('%') =~? '\%(.h\|.hpp\|.hh\)$'
|
||||||
|
if exists('g:syntastic_cpp_check_header')
|
||||||
|
let makeprg = 'g++ -c '.shellescape(expand('%')).
|
||||||
|
\ ' ' . syntastic#c#GetIncludeDirs('cpp')
|
||||||
|
else
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
if !exists('b:syntastic_cpp_cflags')
|
if !exists('b:syntastic_cpp_cflags')
|
||||||
if !exists('g:syntastic_cpp_no_include_search') ||
|
if !exists('g:syntastic_cpp_no_include_search') ||
|
||||||
\ g:syntastic_cpp_no_include_search != 1
|
\ g:syntastic_cpp_no_include_search != 1
|
||||||
@@ -85,7 +101,18 @@ function! SyntaxCheckers_cpp_GetLocList()
|
|||||||
let makeprg .= b:syntastic_cpp_cflags
|
let makeprg .= b:syntastic_cpp_cflags
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
" process makeprg
|
||||||
|
let errors = SyntasticMake({ 'makeprg': makeprg,
|
||||||
|
\ 'errorformat': errorformat })
|
||||||
|
|
||||||
|
" filter the processed errors if desired
|
||||||
|
if exists('g:syntastic_cpp_remove_include_errors') &&
|
||||||
|
\ g:syntastic_cpp_remove_include_errors != 0
|
||||||
|
return filter(errors,
|
||||||
|
\ 'has_key(v:val, "bufnr") && v:val["bufnr"]=='.bufnr(''))
|
||||||
|
else
|
||||||
|
return errors
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let &cpo = s:save_cpo
|
let &cpo = s:save_cpo
|
||||||
|
|||||||
@@ -23,9 +23,6 @@ endfunction
|
|||||||
function! SyntaxCheckers_javascript_GetLocList()
|
function! SyntaxCheckers_javascript_GetLocList()
|
||||||
let makeprg = "jslint " . g:syntastic_javascript_jslint_conf . " " . shellescape(expand('%'))
|
let makeprg = "jslint " . g:syntastic_javascript_jslint_conf . " " . shellescape(expand('%'))
|
||||||
let errorformat='%E %##%n %m,%-Z%.%#Line %l\, Pos %c,%-G%.%#'
|
let errorformat='%E %##%n %m,%-Z%.%#Line %l\, Pos %c,%-G%.%#'
|
||||||
let errors = SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat, 'defaults': {'bufnr': bufnr("")} })
|
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat, 'defaults': {'bufnr': bufnr("")} })
|
||||||
call SyntasticHighlightErrors(errors, function('SyntaxCheckers_javascript_HighlightTerm'))
|
|
||||||
|
|
||||||
return errors
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ if !executable('luac')
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! SyntaxCheckers_lua_Term(pos)
|
function! SyntaxCheckers_lua_GetHighlightRegex(pos)
|
||||||
let near = matchstr(a:pos['text'], "near '[^']\\+'")
|
let near = matchstr(a:pos['text'], "near '[^']\\+'")
|
||||||
let result = ''
|
let result = ''
|
||||||
if len(near) > 0
|
if len(near) > 0
|
||||||
@@ -47,12 +47,9 @@ function! SyntaxCheckers_lua_GetLocList()
|
|||||||
let makeprg = 'luac -p ' . shellescape(expand('%'))
|
let makeprg = 'luac -p ' . shellescape(expand('%'))
|
||||||
let errorformat = 'luac: %#%f:%l: %m'
|
let errorformat = 'luac: %#%f:%l: %m'
|
||||||
|
|
||||||
let loclist = SyntasticMake({ 'makeprg': makeprg,
|
return SyntasticMake({ 'makeprg': makeprg,
|
||||||
\ 'errorformat': errorformat,
|
\ 'errorformat': errorformat,
|
||||||
\ 'defaults': { 'bufnr': bufnr(''), 'type': 'E' } })
|
\ 'defaults': { 'bufnr': bufnr(''), 'type': 'E' } })
|
||||||
|
|
||||||
call SyntasticHighlightErrors(loclist, function("SyntaxCheckers_lua_Term"))
|
|
||||||
|
|
||||||
return loclist
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
32
bundle/git_syntastic/syntax_checkers/nasm.vim
Normal file
32
bundle/git_syntastic/syntax_checkers/nasm.vim
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
"============================================================================
|
||||||
|
"File: nasm.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic.vim
|
||||||
|
"Maintainer: Håvard Pettersson <haavard.pettersson at gmail dot com>
|
||||||
|
"License: This program is free software. It comes without any warranty,
|
||||||
|
" to the extent permitted by applicable law. You can redistribute
|
||||||
|
" it and/or modify it under the terms of the Do What The Fuck You
|
||||||
|
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||||
|
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||||
|
"
|
||||||
|
"============================================================================
|
||||||
|
if exists("loaded_nasm_syntax_checker")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let loaded_nasm_syntax_checker = 1
|
||||||
|
|
||||||
|
"bail if the user doesnt have nasm installed
|
||||||
|
if !executable("nasm")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! SyntaxCheckers_nasm_GetLocList()
|
||||||
|
if has("win32")
|
||||||
|
let outfile="NUL"
|
||||||
|
else
|
||||||
|
let outfile="/dev/null"
|
||||||
|
endif
|
||||||
|
let wd = shellescape(expand("%:p:h") . "/")
|
||||||
|
let makeprg = "nasm -X gnu -f elf -I " . wd . " -o " . outfile . " " . shellescape(expand("%"))
|
||||||
|
let errorformat = '%f:%l: %t%*[^:]: %m'
|
||||||
|
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
||||||
|
endfunction
|
||||||
@@ -28,9 +28,11 @@ if !exists("g:syntastic_phpcs_disable")
|
|||||||
let g:syntastic_phpcs_disable = 0
|
let g:syntastic_phpcs_disable = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! SyntaxCheckers_php_Term(item)
|
function! SyntaxCheckers_php_GetHighlightRegex(item)
|
||||||
let unexpected = matchstr(a:item['text'], "unexpected '[^']\\+'")
|
let unexpected = matchstr(a:item['text'], "unexpected '[^']\\+'")
|
||||||
if len(unexpected) < 1 | return '' | end
|
if len(unexpected) < 1
|
||||||
|
return ''
|
||||||
|
endif
|
||||||
return '\V'.split(unexpected, "'")[1]
|
return '\V'.split(unexpected, "'")[1]
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -38,7 +40,7 @@ function! SyntaxCheckers_php_GetLocList()
|
|||||||
|
|
||||||
let errors = []
|
let errors = []
|
||||||
|
|
||||||
let makeprg = "php -l ".shellescape(expand('%'))
|
let makeprg = "php -l -d error_reporting=E_PARSE -d display_errors=0 -d error_log='' ".shellescape(expand('%'))
|
||||||
let errorformat='%-GNo syntax errors detected in%.%#,PHP Parse error: %#syntax %trror\, %m in %f on line %l,PHP Fatal %trror: %m in %f on line %l,%-GErrors parsing %.%#,%-G\s%#,Parse error: %#syntax %trror\, %m in %f on line %l,Fatal %trror: %m in %f on line %l'
|
let errorformat='%-GNo syntax errors detected in%.%#,PHP Parse error: %#syntax %trror\, %m in %f on line %l,PHP Fatal %trror: %m in %f on line %l,%-GErrors parsing %.%#,%-G\s%#,Parse error: %#syntax %trror\, %m in %f on line %l,Fatal %trror: %m in %f on line %l'
|
||||||
let errors = SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
let errors = SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
||||||
|
|
||||||
@@ -46,8 +48,6 @@ function! SyntaxCheckers_php_GetLocList()
|
|||||||
let errors = errors + s:GetPHPCSErrors()
|
let errors = errors + s:GetPHPCSErrors()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call SyntasticHighlightErrors(errors, function('SyntaxCheckers_php_Term'))
|
|
||||||
|
|
||||||
return errors
|
return errors
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
@@ -6,75 +6,22 @@
|
|||||||
" kstep <me@kstep.me>
|
" kstep <me@kstep.me>
|
||||||
" Parantapa Bhattacharya <parantapa@gmail.com>
|
" Parantapa Bhattacharya <parantapa@gmail.com>
|
||||||
"
|
"
|
||||||
"============================================================================
|
|
||||||
"
|
"
|
||||||
" For forcing the use of flake8, pyflakes, or pylint set
|
" For forcing the use of flake8, pyflakes, or pylint set
|
||||||
"
|
"
|
||||||
" let g:syntastic_python_checker = 'pyflakes'
|
" let g:syntastic_python_checker = 'pyflakes'
|
||||||
"
|
"
|
||||||
" in your .vimrc. Default is flake8.
|
" in your .vimrc. Default is flake8.
|
||||||
|
"============================================================================
|
||||||
|
|
||||||
if exists("loaded_python_syntax_checker")
|
if exists("loaded_python_syntax_checker")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let loaded_python_syntax_checker = 1
|
let loaded_python_syntax_checker = 1
|
||||||
|
|
||||||
"bail if the user doesnt have his favorite checker or flake8 or pyflakes installed
|
|
||||||
if !exists('g:syntastic_python_checker') || !executable(g:syntastic_python_checker)
|
|
||||||
if executable("flake8")
|
|
||||||
let g:syntastic_python_checker = 'flake8'
|
|
||||||
elseif executable("pyflakes")
|
|
||||||
let g:syntastic_python_checker = 'pyflakes'
|
|
||||||
elseif executable("pylint")
|
|
||||||
let g:syntastic_python_checker = 'pylint'
|
|
||||||
else
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
if !exists('g:syntastic_python_checker_args')
|
if !exists('g:syntastic_python_checker_args')
|
||||||
let g:syntastic_python_checker_args = ''
|
let g:syntastic_python_checker_args = ''
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! SyntaxCheckers_python_Term(i)
|
let s:supported_checkers = ["flake8", "pyflakes", "pylint"]
|
||||||
if a:i['type'] ==# 'E'
|
call SyntasticLoadChecker(s:supported_checkers)
|
||||||
let a:i['text'] = "Syntax error"
|
|
||||||
endif
|
|
||||||
if match(a:i['text'], 'is assigned to but never used') > -1
|
|
||||||
\ || match(a:i['text'], 'imported but unused') > -1
|
|
||||||
\ || match(a:i['text'], 'undefined name') > -1
|
|
||||||
\ || match(a:i['text'], 'redefinition of') > -1
|
|
||||||
\ || match(a:i['text'], 'referenced before assignment') > -1
|
|
||||||
\ || match(a:i['text'], 'duplicate argument') > -1
|
|
||||||
\ || match(a:i['text'], 'after other statements') > -1
|
|
||||||
\ || match(a:i['text'], 'shadowed by loop variable') > -1
|
|
||||||
|
|
||||||
let term = split(a:i['text'], "'", 1)[1]
|
|
||||||
return '\V\<'.term.'\>'
|
|
||||||
endif
|
|
||||||
return ''
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
if g:syntastic_python_checker == 'pylint'
|
|
||||||
function! SyntaxCheckers_python_GetLocList()
|
|
||||||
let makeprg = 'pylint -f parseable -r n -i y ' .
|
|
||||||
\ shellescape(expand('%')) .
|
|
||||||
\ ' \| sed ''s_: \[[RC]_: \[W_''' .
|
|
||||||
\ ' \| sed ''s_: \[[F]_:\ \[E_'''
|
|
||||||
let errorformat = '%f:%l: [%t%n] %m,%-GNo config%m'
|
|
||||||
let errors = SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
|
||||||
|
|
||||||
return errors
|
|
||||||
endfunction
|
|
||||||
else
|
|
||||||
function! SyntaxCheckers_python_GetLocList()
|
|
||||||
let makeprg = g:syntastic_python_checker.' '.g:syntastic_python_checker_args.' '.shellescape(expand('%'))
|
|
||||||
let errorformat =
|
|
||||||
\ '%E%f:%l: could not compile,%-Z%p^,%W%f:%l:%c: %m,%W%f:%l: %m,%-G%.%#'
|
|
||||||
|
|
||||||
let errors = SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
|
||||||
|
|
||||||
call SyntasticHighlightErrors(errors, function('SyntaxCheckers_python_Term'))
|
|
||||||
|
|
||||||
return errors
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|||||||
31
bundle/git_syntastic/syntax_checkers/python/flake8.vim
Normal file
31
bundle/git_syntastic/syntax_checkers/python/flake8.vim
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
"============================================================================
|
||||||
|
"File: flake8.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic.vim
|
||||||
|
"Authors: Sylvain Soliman <Sylvain dot Soliman+git at gmail dot com>
|
||||||
|
" kstep <me@kstep.me>
|
||||||
|
"
|
||||||
|
"============================================================================
|
||||||
|
function! SyntaxCheckers_python_GetHighlightRegex(i)
|
||||||
|
if a:i['type'] ==# 'E'
|
||||||
|
let a:i['text'] = "Syntax error"
|
||||||
|
endif
|
||||||
|
if match(a:i['text'], 'is assigned to but never used') > -1
|
||||||
|
\ || match(a:i['text'], 'imported but unused') > -1
|
||||||
|
\ || match(a:i['text'], 'undefined name') > -1
|
||||||
|
\ || match(a:i['text'], 'redefinition of') > -1
|
||||||
|
\ || match(a:i['text'], 'referenced before assignment') > -1
|
||||||
|
\ || match(a:i['text'], 'duplicate argument') > -1
|
||||||
|
\ || match(a:i['text'], 'after other statements') > -1
|
||||||
|
\ || match(a:i['text'], 'shadowed by loop variable') > -1
|
||||||
|
|
||||||
|
let term = split(a:i['text'], "'", 1)[1]
|
||||||
|
return '\V\<'.term.'\>'
|
||||||
|
endif
|
||||||
|
return ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! SyntaxCheckers_python_GetLocList()
|
||||||
|
let makeprg = 'flake8 '.g:syntastic_python_checker_args.' '.shellescape(expand('%'))
|
||||||
|
let errorformat = '%E%f:%l: could not compile,%-Z%p^,%W%f:%l:%c: %m,%W%f:%l: %m,%-G%.%#'
|
||||||
|
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
||||||
|
endfunction
|
||||||
34
bundle/git_syntastic/syntax_checkers/python/pyflakes.vim
Normal file
34
bundle/git_syntastic/syntax_checkers/python/pyflakes.vim
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
"============================================================================
|
||||||
|
"File: pyflakes.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic.vim
|
||||||
|
"Authors: Martin Grenfell <martin.grenfell@gmail.com>
|
||||||
|
" kstep <me@kstep.me>
|
||||||
|
" Parantapa Bhattacharya <parantapa@gmail.com>
|
||||||
|
"
|
||||||
|
"============================================================================
|
||||||
|
function! SyntaxCheckers_python_GetHighlightRegex(i)
|
||||||
|
if match(a:i['text'], 'is assigned to but never used') > -1
|
||||||
|
\ || match(a:i['text'], 'imported but unused') > -1
|
||||||
|
\ || match(a:i['text'], 'undefined name') > -1
|
||||||
|
\ || match(a:i['text'], 'redefinition of') > -1
|
||||||
|
\ || match(a:i['text'], 'referenced before assignment') > -1
|
||||||
|
\ || match(a:i['text'], 'duplicate argument') > -1
|
||||||
|
\ || match(a:i['text'], 'after other statements') > -1
|
||||||
|
\ || match(a:i['text'], 'shadowed by loop variable') > -1
|
||||||
|
|
||||||
|
let term = split(a:i['text'], "'", 1)[1]
|
||||||
|
return '\V\<'.term.'\>'
|
||||||
|
endif
|
||||||
|
return ''
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! SyntaxCheckers_python_GetLocList()
|
||||||
|
let makeprg = 'pyflakes '.g:syntastic_python_checker_args.' '.shellescape(expand('%'))
|
||||||
|
let errorformat = '%E%f:%l: could not compile,%-Z%p^,%E%f:%l:%c: %m,%E%f:%l: %m,%-G%.%#'
|
||||||
|
|
||||||
|
let errors = SyntasticMake({ 'makeprg': makeprg,
|
||||||
|
\ 'errorformat': errorformat,
|
||||||
|
\ 'defaults': {'text': "Syntax error"} })
|
||||||
|
|
||||||
|
return errors
|
||||||
|
endfunction
|
||||||
14
bundle/git_syntastic/syntax_checkers/python/pylint.vim
Normal file
14
bundle/git_syntastic/syntax_checkers/python/pylint.vim
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
"============================================================================
|
||||||
|
"File: pylint.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic.vim
|
||||||
|
"Author: Parantapa Bhattacharya <parantapa at gmail dot com>
|
||||||
|
"
|
||||||
|
"============================================================================
|
||||||
|
function! SyntaxCheckers_python_GetLocList()
|
||||||
|
let makeprg = 'pylint -f parseable -r n -i y ' .
|
||||||
|
\ shellescape(expand('%')) .
|
||||||
|
\ ' \| sed ''s_: \[[RC]_: \[W_''' .
|
||||||
|
\ ' \| sed ''s_: \[[F]_:\ \[E_'''
|
||||||
|
let errorformat = '%f:%l: [%t%n%.%#] %m,%-GNo config%m'
|
||||||
|
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
||||||
|
endfunction
|
||||||
@@ -24,7 +24,7 @@ if !executable("rst2pseudoxml.py")
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
function! SyntaxCheckers_rst_GetLocList()
|
function! SyntaxCheckers_rst_GetLocList()
|
||||||
let makeprg = 'rst2pseudoxml.py --report=1 --exit-status=1 ' .
|
let makeprg = 'rst2pseudoxml.py --report=2 --exit-status=1 ' .
|
||||||
\ shellescape(expand('%')) . ' /dev/null'
|
\ shellescape(expand('%')) . ' /dev/null'
|
||||||
|
|
||||||
let errorformat = '%f:%l:\ (%tNFO/1)\ %m,
|
let errorformat = '%f:%l:\ (%tNFO/1)\ %m,
|
||||||
|
|||||||
@@ -8,6 +8,10 @@
|
|||||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||||
"
|
"
|
||||||
|
"Supports MRI and JRuby but loads the MRI syntax checker by default.
|
||||||
|
"
|
||||||
|
"Use the g:syntastic_ruby_checker option to specify which checker to load -
|
||||||
|
"set it to "jruby" to load the jruby checker.
|
||||||
"============================================================================
|
"============================================================================
|
||||||
if exists("loaded_ruby_syntax_checker")
|
if exists("loaded_ruby_syntax_checker")
|
||||||
finish
|
finish
|
||||||
@@ -19,14 +23,8 @@ if !executable("ruby")
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! SyntaxCheckers_ruby_GetLocList()
|
if !exists("g:syntastic_ruby_checker")
|
||||||
" we cannot set RUBYOPT on windows like that
|
let g:syntastic_ruby_checker = "mri"
|
||||||
if has('win32') || has('win64')
|
endif
|
||||||
let makeprg = 'ruby -W1 -T1 -c '.shellescape(expand('%'))
|
exec "runtime! syntax_checkers/ruby/" . g:syntastic_ruby_checker . ".vim"
|
||||||
else
|
|
||||||
let makeprg = 'RUBYOPT= ruby -W1 -c '.shellescape(expand('%'))
|
|
||||||
endif
|
|
||||||
let errorformat = '%-GSyntax OK,%E%f:%l: syntax error\, %m,%Z%p^,%W%f:%l: warning: %m,%Z%p^,%W%f:%l: %m,%-C%.%#'
|
|
||||||
|
|
||||||
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
|
||||||
endfunction
|
|
||||||
|
|||||||
16
bundle/git_syntastic/syntax_checkers/ruby/jruby.vim
Normal file
16
bundle/git_syntastic/syntax_checkers/ruby/jruby.vim
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
"============================================================================
|
||||||
|
"File: jruby.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic.vim
|
||||||
|
"Maintainer: Leonid Shevtsov <leonid at shevtsov dot me>
|
||||||
|
"License: This program is free software. It comes without any warranty,
|
||||||
|
" to the extent permitted by applicable law. You can redistribute
|
||||||
|
" it and/or modify it under the terms of the Do What The Fuck You
|
||||||
|
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||||
|
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||||
|
"
|
||||||
|
"============================================================================
|
||||||
|
function! SyntaxCheckers_ruby_GetLocList()
|
||||||
|
"let makeprg = ''
|
||||||
|
"let errorformat = ''
|
||||||
|
"return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
||||||
|
endfunction
|
||||||
22
bundle/git_syntastic/syntax_checkers/ruby/mri.vim
Normal file
22
bundle/git_syntastic/syntax_checkers/ruby/mri.vim
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
"============================================================================
|
||||||
|
"File: mri.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic.vim
|
||||||
|
"Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
|
||||||
|
"License: This program is free software. It comes without any warranty,
|
||||||
|
" to the extent permitted by applicable law. You can redistribute
|
||||||
|
" it and/or modify it under the terms of the Do What The Fuck You
|
||||||
|
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||||
|
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||||
|
"
|
||||||
|
"============================================================================
|
||||||
|
function! SyntaxCheckers_ruby_GetLocList()
|
||||||
|
" we cannot set RUBYOPT on windows like that
|
||||||
|
if has('win32') || has('win64')
|
||||||
|
let makeprg = 'ruby -W1 -T1 -c '.shellescape(expand('%'))
|
||||||
|
else
|
||||||
|
let makeprg = 'RUBYOPT= ruby -W1 -c '.shellescape(expand('%'))
|
||||||
|
endif
|
||||||
|
let errorformat = '%-GSyntax OK,%E%f:%l: syntax error\, %m,%Z%p^,%W%f:%l: warning: %m,%Z%p^,%W%f:%l: %m,%-C%.%#'
|
||||||
|
|
||||||
|
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
||||||
|
endfunction
|
||||||
33
bundle/git_syntastic/syntax_checkers/scala.vim
Normal file
33
bundle/git_syntastic/syntax_checkers/scala.vim
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
"============================================================================
|
||||||
|
"File: scala.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic.vim
|
||||||
|
"Maintainer: Rickey Visinski <rickeyvisinski at gmail dot com>
|
||||||
|
"License: This program is free software. It comes without any warranty,
|
||||||
|
" to the extent permitted by applicable law. You can redistribute
|
||||||
|
" it and/or modify it under the terms of the Do What The Fuck You
|
||||||
|
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||||
|
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||||
|
"
|
||||||
|
"============================================================================
|
||||||
|
if exists("loaded_scala_syntax_checker")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let loaded_scala_syntax_checker = 1
|
||||||
|
|
||||||
|
"bail if the user doesnt have the scala binary installed
|
||||||
|
if !executable("scala")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:syntastic_scala_options")
|
||||||
|
let g:syntastic_scala_options = " "
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! SyntaxCheckers_scala_GetLocList()
|
||||||
|
let makeprg = 'scala '. g:syntastic_scala_options .' '. shellescape(expand('%')) . ' /dev/null'
|
||||||
|
|
||||||
|
let errorformat = '%f\:%l: %trror: %m'
|
||||||
|
|
||||||
|
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
||||||
|
endfunction
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ if exists('g:syntastic_vala_check_disabled') && g:syntastic_vala_check_disabled
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
function! SyntaxCheckers_vala_Term(pos)
|
function! SyntaxCheckers_vala_GetHighlightRegex(pos)
|
||||||
let strlength = strlen(matchstr(a:pos['text'], '\^\+$'))
|
let strlength = strlen(matchstr(a:pos['text'], '\^\+$'))
|
||||||
return '\%>'.(a:pos.col-1).'c.*\%<'.(a:pos.col+strlength+1).'c'
|
return '\%>'.(a:pos.col-1).'c.*\%<'.(a:pos.col+strlength+1).'c'
|
||||||
endfunction
|
endfunction
|
||||||
@@ -49,8 +49,8 @@ function! SyntaxCheckers_vala_GetLocList()
|
|||||||
let makeprg = 'valac -C ' . vala_pkg_args . ' ' .shellescape(expand('%'))
|
let makeprg = 'valac -C ' . vala_pkg_args . ' ' .shellescape(expand('%'))
|
||||||
let errorformat = '%A%f:%l.%c-%\d%\+.%\d%\+: %t%[a-z]%\+: %m,%C%m,%Z%m'
|
let errorformat = '%A%f:%l.%c-%\d%\+.%\d%\+: %t%[a-z]%\+: %m,%C%m,%Z%m'
|
||||||
|
|
||||||
let loclist = SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
return SyntasticMake({ 'makeprg': makeprg,
|
||||||
call SyntasticHighlightErrors(loclist, function("SyntaxCheckers_vala_Term"), 1)
|
\ 'errorformat': errorformat,
|
||||||
return loclist
|
\ 'defaults': {'force_highlight_callback': 1} })
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
31
bundle/git_syntastic/syntax_checkers/z80.vim
Normal file
31
bundle/git_syntastic/syntax_checkers/z80.vim
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
"============================================================================
|
||||||
|
"File: z80.vim
|
||||||
|
"Description: Syntax checking plugin for syntastic.vim
|
||||||
|
"Maintainer: Romain Giot <giot.romain at gmail dot com>
|
||||||
|
"License: This program is free software. It comes without any warranty,
|
||||||
|
" to the extent permitted by applicable law. You can redistribute
|
||||||
|
" it and/or modify it under the terms of the Do What The Fuck You
|
||||||
|
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||||
|
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||||
|
"
|
||||||
|
"============================================================================
|
||||||
|
if exists("loaded_z80_syntax_checker")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let loaded_z80_syntax_checker = 1
|
||||||
|
|
||||||
|
"bail if the user doesnt have z80_syntax_checker.py installed
|
||||||
|
"To obtain this application there are two solutions:
|
||||||
|
" - Install this python package: https://github.com/rgiot/pycpcdemotools
|
||||||
|
" - Copy/paste this script in your search path: https://raw.github.com/rgiot/pycpcdemotools/master/cpcdemotools/source_checker/z80_syntax_checker.py
|
||||||
|
if !executable("z80_syntax_checker.py")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
function! SyntaxCheckers_z80_GetLocList()
|
||||||
|
let makeprg = 'z80_syntax_checker.py '.shellescape(expand('%'))
|
||||||
|
let errorformat = '%f:%l %m'
|
||||||
|
let loclist = SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })
|
||||||
|
return loclist
|
||||||
|
endfunction
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
" Author: Eric Van Dewoestine
|
" Author: Eric Van Dewoestine
|
||||||
"
|
"
|
||||||
" License: {{{
|
" License: {{{
|
||||||
" Copyright (c) 2005 - 2011, Eric Van Dewoestine
|
" Copyright (c) 2005 - 2012, Eric Van Dewoestine
|
||||||
" All rights reserved.
|
" All rights reserved.
|
||||||
"
|
"
|
||||||
" Redistribution and use of this software in source and binary forms, with
|
" Redistribution and use of this software in source and binary forms, with
|
||||||
@@ -980,15 +980,9 @@ function! s:Window(settings, tags) " {{{
|
|||||||
|
|
||||||
let winnum = s:GetTagListWinnr()
|
let winnum = s:GetTagListWinnr()
|
||||||
if winnum == -1
|
if winnum == -1
|
||||||
if exists('g:VerticalToolWindowSide') &&
|
|
||||||
\ g:VerticalToolWindowSide == g:TaglistTooPosition
|
|
||||||
call eclim#display#window#VerticalToolWindowOpen(s:taglisttoo_title, 10, 1)
|
|
||||||
else
|
|
||||||
let position = g:TaglistTooPosition == 'right' ? 'botright' : 'topleft'
|
let position = g:TaglistTooPosition == 'right' ? 'botright' : 'topleft'
|
||||||
silent exec
|
exec position . ' vertical ' . g:Tlist_WinWidth .
|
||||||
\ position . ' vertical ' . g:Tlist_WinWidth .
|
|
||||||
\ ' split ' . escape(s:taglisttoo_title, ' ')
|
\ ' split ' . escape(s:taglisttoo_title, ' ')
|
||||||
endif
|
|
||||||
|
|
||||||
let winnum = s:GetTagListWinnr()
|
let winnum = s:GetTagListWinnr()
|
||||||
exe winnum . 'wincmd w'
|
exe winnum . 'wincmd w'
|
||||||
@@ -1182,8 +1176,6 @@ function! s:FileSupported(filename, ftype) " {{{
|
|||||||
endfunction " }}}
|
endfunction " }}}
|
||||||
|
|
||||||
function! s:CloseIfLastWindow() " {{{
|
function! s:CloseIfLastWindow() " {{{
|
||||||
if histget(':', -1) !~ '^bd'
|
|
||||||
let numtoolwindows = 0
|
|
||||||
if winnr('$') == 1
|
if winnr('$') == 1
|
||||||
if tabpagenr('$') > 1
|
if tabpagenr('$') > 1
|
||||||
tabclose
|
tabclose
|
||||||
@@ -1191,7 +1183,6 @@ function! s:CloseIfLastWindow() " {{{
|
|||||||
quitall
|
quitall
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
|
||||||
endfunction " }}}
|
endfunction " }}}
|
||||||
|
|
||||||
function! s:GetTagListBufnr() " {{{
|
function! s:GetTagListBufnr() " {{{
|
||||||
|
|||||||
@@ -23,7 +23,8 @@
|
|||||||
" set l:isWrapped instead.
|
" set l:isWrapped instead.
|
||||||
" - FIX: Wrong logic for determining l:isWrapped lets wrap-around go undetected
|
" - FIX: Wrong logic for determining l:isWrapped lets wrap-around go undetected
|
||||||
" when v:count >= number of total matches. [l:startLine, l:startCol] must
|
" when v:count >= number of total matches. [l:startLine, l:startCol] must
|
||||||
" be updated on every iteration.
|
" be updated on every iteration, and should therefore be named [l:prevLine,
|
||||||
|
" l:prevCol].
|
||||||
"
|
"
|
||||||
" 17-May-2011, Ingo Karkat
|
" 17-May-2011, Ingo Karkat
|
||||||
" - Make s:GetVisualSelection() public to allow use in suggested
|
" - Make s:GetVisualSelection() public to allow use in suggested
|
||||||
@@ -531,7 +532,7 @@ function! s:Search( pattern, isBackward, currentMarkPosition, searchType )
|
|||||||
let l:isMatch = 0
|
let l:isMatch = 0
|
||||||
let l:line = 0
|
let l:line = 0
|
||||||
while l:count > 0
|
while l:count > 0
|
||||||
let [l:startLine, l:startCol] = [line('.'), col('.')]
|
let [l:prevLine, l:prevCol] = [line('.'), col('.')]
|
||||||
|
|
||||||
" Search for next match, 'wrapscan' applies.
|
" Search for next match, 'wrapscan' applies.
|
||||||
let [l:line, l:col] = searchpos( a:pattern, (a:isBackward ? 'b' : '') )
|
let [l:line, l:col] = searchpos( a:pattern, (a:isBackward ? 'b' : '') )
|
||||||
@@ -571,9 +572,9 @@ function! s:Search( pattern, isBackward, currentMarkPosition, searchType )
|
|||||||
|
|
||||||
" Note: No need to check 'wrapscan'; the wrapping can only occur if
|
" Note: No need to check 'wrapscan'; the wrapping can only occur if
|
||||||
" 'wrapscan' is actually on.
|
" 'wrapscan' is actually on.
|
||||||
if ! a:isBackward && (l:startLine > l:line || l:startLine == l:line && l:startCol >= l:col)
|
if ! a:isBackward && (l:prevLine > l:line || l:prevLine == l:line && l:prevCol >= l:col)
|
||||||
let l:isWrapped = 1
|
let l:isWrapped = 1
|
||||||
elseif a:isBackward && (l:startLine < l:line || l:startLine == l:line && l:startCol <= l:col)
|
elseif a:isBackward && (l:prevLine < l:line || l:prevLine == l:line && l:prevCol <= l:col)
|
||||||
let l:isWrapped = 1
|
let l:isWrapped = 1
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -176,6 +176,9 @@ your vimrc file (or anywhere before this plugin is sourced), in the following
|
|||||||
form (where N = 1..): >
|
form (where N = 1..): >
|
||||||
highlight MarkWordN ctermbg=Cyan ctermfg=Black guibg=#8CCBEA guifg=Black
|
highlight MarkWordN ctermbg=Cyan ctermfg=Black guibg=#8CCBEA guifg=Black
|
||||||
Higher numbers always take precedence and are displayed above lower ones.
|
Higher numbers always take precedence and are displayed above lower ones.
|
||||||
|
If you want to avoid losing the highlightings on |:colorscheme| commands, you
|
||||||
|
need to re-apply your highlights on the |ColorScheme| event, similar to how
|
||||||
|
this plugin does.
|
||||||
|
|
||||||
The search type highlighting (in the search message) can be changed via: >
|
The search type highlighting (in the search message) can be changed via: >
|
||||||
highlight link SearchSpecialSearchType MoreMsg
|
highlight link SearchSpecialSearchType MoreMsg
|
||||||
@@ -249,6 +252,10 @@ http://vim.wikia.com/wiki/Highlight_multiple_words:
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
HISTORY *mark-history*
|
HISTORY *mark-history*
|
||||||
|
|
||||||
|
2.5.3 02-Mar-2012
|
||||||
|
- BUG: Version check mistakenly excluded Vim 7.1 versions that do have the
|
||||||
|
matchadd() function. Thanks to Philipp Marek for sending a patch.
|
||||||
|
|
||||||
2.5.2 09-Nov-2011
|
2.5.2 09-Nov-2011
|
||||||
Fixed various problems with wrap-around warnings:
|
Fixed various problems with wrap-around warnings:
|
||||||
- BUG: With a single match and 'wrapscan' set, a search error was issued.
|
- BUG: With a single match and 'wrapscan' set, a search error was issued.
|
||||||
@@ -397,8 +404,8 @@ Last version published by Yuheng Xie on vim.org.
|
|||||||
Initial version published by Yuheng Xie on vim.org.
|
Initial version published by Yuheng Xie on vim.org.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
Copyright: (C) 2005-2008 by Yuheng Xie
|
Copyright: (C) 2005-2008 Yuheng Xie
|
||||||
(C) 2008-2011 by Ingo Karkat
|
(C) 2008-2012 Ingo Karkat
|
||||||
The VIM LICENSE applies to this script; see|copyright|.
|
The VIM LICENSE applies to this script; see|copyright|.
|
||||||
|
|
||||||
Maintainer: Ingo Karkat <ingo@karkat.de>
|
Maintainer: Ingo Karkat <ingo@karkat.de>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
" Script Name: mark.vim
|
" Script Name: mark.vim
|
||||||
" Description: Highlight several words in different colors simultaneously.
|
" Description: Highlight several words in different colors simultaneously.
|
||||||
"
|
"
|
||||||
" Copyright: (C) 2005-2008 by Yuheng Xie
|
" Copyright: (C) 2005-2008 Yuheng Xie
|
||||||
" (C) 2008-2011 by Ingo Karkat
|
" (C) 2008-2012 Ingo Karkat
|
||||||
" The VIM LICENSE applies to this script; see ':help copyright'.
|
" The VIM LICENSE applies to this script; see ':help copyright'.
|
||||||
"
|
"
|
||||||
" Maintainer: Ingo Karkat <ingo@karkat.de>
|
" Maintainer: Ingo Karkat <ingo@karkat.de>
|
||||||
@@ -13,8 +13,12 @@
|
|||||||
" - Requires Vim 7.1 with "matchadd()", or Vim 7.2 or higher.
|
" - Requires Vim 7.1 with "matchadd()", or Vim 7.2 or higher.
|
||||||
" - mark.vim autoload script.
|
" - mark.vim autoload script.
|
||||||
"
|
"
|
||||||
" Version: 2.5.0
|
" Version: 2.5.3
|
||||||
" Changes:
|
" Changes:
|
||||||
|
" 02-Mar-2012, Philipp Marek
|
||||||
|
" - BUG: Version check mistakenly excluded Vim 7.1 versions that do have the
|
||||||
|
" matchadd() function.
|
||||||
|
"
|
||||||
" 06-May-2011, Ingo Karkat
|
" 06-May-2011, Ingo Karkat
|
||||||
" - By default, enable g:mwAutoSaveMarks, so that marks are always persisted,
|
" - By default, enable g:mwAutoSaveMarks, so that marks are always persisted,
|
||||||
" but disable g:mwAutoLoadMarks, so that persisted marks have to be explicitly
|
" but disable g:mwAutoLoadMarks, so that persisted marks have to be explicitly
|
||||||
@@ -152,7 +156,7 @@
|
|||||||
" -> e.g. :Mark Mark.\{-}\ze(
|
" -> e.g. :Mark Mark.\{-}\ze(
|
||||||
|
|
||||||
" Avoid installing twice or when in unsupported Vim version.
|
" Avoid installing twice or when in unsupported Vim version.
|
||||||
if exists('g:loaded_mark') || (v:version == 701 && ! exists('*matchadd')) || (v:version < 702)
|
if exists('g:loaded_mark') || (v:version == 701 && ! exists('*matchadd')) || (v:version < 701)
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let g:loaded_mark = 1
|
let g:loaded_mark = 1
|
||||||
|
|||||||
Reference in New Issue
Block a user