Improve :
* Improve s:sanstail() and ':' input * Shorten s:samerootsyml(), s:ispathitem() * Add g:ctrlp_log, an option to write all output to .ctrlp_cache/ctrlp.log * Fix an error with ctrlp#utils#glob()
This commit is contained in:
parent
9e88a8c0fc
commit
ea4c6021fc
@ -64,6 +64,9 @@ en
|
||||
let [s:compare_lim, s:nocache_lim, s:mltipats_lim] = [3000, 4000, 2000]
|
||||
" * Open & Close {{{1
|
||||
fu! s:Open()
|
||||
if exists('g:ctrlp_log') && g:ctrlp_log
|
||||
sil! exe 'redi >>' ctrlp#utils#cachedir().s:lash.'ctrlp.log'
|
||||
en
|
||||
let [s:cwd, s:winres] = [getcwd(), winrestcmd()]
|
||||
let [s:crfile, s:crfpath] = [expand('%:p', 1), expand('%:p:h', 1)]
|
||||
let [s:crword, s:crline] = [expand('<cword>'), getline('.')]
|
||||
@ -99,6 +102,9 @@ fu! s:Close()
|
||||
\ s:crfile s:crfpath s:crword s:crvisual s:tagfiles s:crline s:crcursor
|
||||
\ g:ctrlp_nolimit s:crbufnr
|
||||
cal ctrlp#recordhist()
|
||||
if exists('g:ctrlp_log') && g:ctrlp_log
|
||||
redi END
|
||||
en
|
||||
ec
|
||||
endf
|
||||
" * Clear caches {{{1
|
||||
@ -327,13 +333,15 @@ fu! s:Update(str)
|
||||
let oldstr = exists('s:savestr') ? s:savestr : ''
|
||||
let pats = s:SplitPattern(a:str)
|
||||
" Get the new string sans tail
|
||||
let notail = substitute(a:str, '\\\@<!:\([^:]\|\\:\)*$', '', '')
|
||||
let notail = substitute(a:str, '\\\\', '\', 'g')
|
||||
let notail = substitute(notail, '\\\@<!:\([^:]\|\\:\)*$', '', '')
|
||||
let notail = substitute(notail, '\\\ze:', '', 'g')
|
||||
" Stop if the string's unchanged
|
||||
if notail == oldstr && !empty(notail) && !exists('s:force')
|
||||
retu
|
||||
en
|
||||
let lines = exists('g:ctrlp_nolimit') && empty(notail) ? copy(g:ctrlp_lines)
|
||||
\ : s:MatchedItems(g:ctrlp_lines, pats, s:mxheight)
|
||||
\ : s:MatchedItems(g:ctrlp_lines, copy(pats), s:mxheight)
|
||||
cal s:Render(lines, pats[-1])
|
||||
endf
|
||||
|
||||
@ -817,7 +825,7 @@ fu! s:OpenMulti()
|
||||
let spt = len(s:opmul) > 1 ? cmds[matchstr(s:opmul, '\w$')] : 'vne'
|
||||
let nr = matchstr(s:opmul, '^\d\+')
|
||||
exe wnr.'winc w'
|
||||
for [ke, va] in items(mkd)
|
||||
for va in values(mkd)
|
||||
let cmd = ic == 1 ? 'e' : spt
|
||||
cal s:openfile(cmd, va)
|
||||
if nr > 1 && nr < ic | clo! | el | let ic += 1 | en
|
||||
@ -926,14 +934,11 @@ endf
|
||||
" Paths {{{2
|
||||
fu! s:ispathitem()
|
||||
let ext = s:itemtype - ( g:ctrlp_builtins + 1 )
|
||||
if s:itemtype < 3 || ( s:itemtype > 2 && g:ctrlp_ext_vars[ext][3] == 'dir' )
|
||||
retu 1
|
||||
en
|
||||
retu 0
|
||||
retu s:itemtype < 3 || ( s:itemtype > 2 && g:ctrlp_ext_vars[ext][3] == 'dir' )
|
||||
endf
|
||||
|
||||
fu! ctrlp#dirnfile(entries)
|
||||
let items = [[], []]
|
||||
let [items, cwd] = [[[], []], getcwd().s:lash]
|
||||
for each in a:entries
|
||||
let etype = getftype(each)
|
||||
if etype == 'dir'
|
||||
@ -945,7 +950,7 @@ fu! ctrlp#dirnfile(entries)
|
||||
elsei etype == 'link'
|
||||
if s:folsym
|
||||
let isfile = !isdirectory(each)
|
||||
if !s:samerootsyml(each, isfile)
|
||||
if !s:samerootsyml(each, isfile, cwd)
|
||||
cal add(items[isfile], each)
|
||||
en
|
||||
en
|
||||
@ -956,14 +961,10 @@ fu! ctrlp#dirnfile(entries)
|
||||
retu items
|
||||
endf
|
||||
|
||||
fu! s:samerootsyml(each, isfile)
|
||||
let resl = resolve(a:each).( a:isfile ? '' : s:lash )
|
||||
let resl = a:isfile ? fnamemodify(resl, ':p:h').s:lash : resl
|
||||
let cwd = getcwd().s:lash
|
||||
if stridx(resl, cwd) && ( stridx(cwd, resl) || a:isfile )
|
||||
retu 0
|
||||
en
|
||||
retu 1
|
||||
fu! s:samerootsyml(each, isfile, cwd)
|
||||
let resolve = resolve(a:each)
|
||||
let resolve = ( a:isfile ? fnamemodify(resolve, ':p:h') : resolve ).s:lash
|
||||
retu !( stridx(resolve, a:cwd) && ( stridx(a:cwd, resolve) || a:isfile ) )
|
||||
endf
|
||||
|
||||
fu! ctrlp#rmbasedir(items)
|
||||
@ -1050,7 +1051,7 @@ endf
|
||||
|
||||
fu! s:highlight(pat, grp)
|
||||
cal clearmatches()
|
||||
if !empty(a:pat) && a:pat != '..' && s:itemtype < 3
|
||||
if !empty(a:pat) && s:itemtype < 3
|
||||
let pat = substitute(a:pat, '\~', '\\~', 'g')
|
||||
if !s:regexp | let pat = escape(pat, '.') | en
|
||||
" Match only filename
|
||||
@ -1166,7 +1167,7 @@ endf
|
||||
fu! s:setupblank()
|
||||
setl noswf nobl nonu nowrap nolist nospell nocuc wfh
|
||||
setl fdc=0 fdl=99 tw=0 bt=nofile bh=unload
|
||||
if v:version >= 703
|
||||
if v:version > 702
|
||||
setl nornu noudf cc=0
|
||||
en
|
||||
endf
|
||||
@ -1195,17 +1196,13 @@ fu! s:tail()
|
||||
endf
|
||||
|
||||
fu! s:sanstail(str)
|
||||
" Restore the number of backslashes
|
||||
let [str, pat] = [substitute(a:str, '\\\\', '\', 'g'), '\([^:]\|\\:\)*$']
|
||||
unl! s:optail
|
||||
if match(str, '\\\@<!:'.pat) >= 0
|
||||
let s:optail = matchstr(str, ':\zs'.pat)
|
||||
retu substitute(str, ':'.pat, '', '')
|
||||
let s:optail = matchstr(str, '\\\@<!:\zs'.pat)
|
||||
let str = substitute(str, '\\\@<!:'.pat, '', '')
|
||||
en
|
||||
if match(str, '\\\=:'.pat) >= 0
|
||||
let str = substitute(str, '\\\=\ze:'.pat, '', '')
|
||||
en
|
||||
retu str
|
||||
retu substitute(str, '\\\ze:', '', 'g')
|
||||
endf
|
||||
" Misc {{{2
|
||||
fu! s:lastvisual()
|
||||
|
@ -61,7 +61,7 @@ fu! ctrlp#utils#writecache(lines, ...)
|
||||
endf
|
||||
|
||||
fu! ctrlp#utils#glob(...)
|
||||
retu call('glob', v:version > 701 ? a:000 : a:1)
|
||||
retu call('glob', v:version > 701 ? a:000 : [a:1])
|
||||
endf
|
||||
"}}}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user