Permalink
Browse files

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()
  • Loading branch information...
1 parent 9e88a8c commit ea4c6021fc84ce023ce2f530579ca6a4dfb3b24d @kien committed Dec 23, 2011
Showing with 24 additions and 27 deletions.
  1. +23 −26 autoload/ctrlp.vim
  2. +1 −1 autoload/ctrlp/utils.vim
View
@@ -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()
View
@@ -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
"}}}

0 comments on commit ea4c602

Please sign in to comment.