From bedfa3b6c3badc4fa6b734098fb9b89972cdf894 Mon Sep 17 00:00:00 2001 From: Kien N Date: Thu, 20 Sep 2012 18:00:16 +0700 Subject: [PATCH] Use a custom completion function --- autoload/ctrlp.vim | 10 ++++++++++ plugin/ctrlp.vim | 11 +++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/autoload/ctrlp.vim b/autoload/ctrlp.vim index f01f208..705fc78 100644 --- a/autoload/ctrlp.vim +++ b/autoload/ctrlp.vim @@ -1334,6 +1334,16 @@ fu! s:findcommon(items, seed) endfo retu cmn endf + +fu! ctrlp#dircompl(...) + let [hsl, str] = [match(a:1, '[\/]'), ''] + let par = substitute(a:1, '[^\/]*$', '', '') + let path = !hsl ? par : hsl > 0 ? getcwd().s:lash().par : getcwd() + for dir in split(globpath(s:fnesc(path, 'g', ','), '*/'), '\n') + let str .= par.split(dir, '[\/]')[-1]."\n" + endfo + retu str +endf " Misc {{{3 fu! s:headntail(str) let parts = split(a:str, '[\/]\ze[^\/]\+[\/:]\?$') diff --git a/plugin/ctrlp.vim b/plugin/ctrlp.vim index b6f9a27..56c2f39 100644 --- a/plugin/ctrlp.vim +++ b/plugin/ctrlp.vim @@ -17,8 +17,11 @@ let [g:ctrlp_lines, g:ctrlp_allfiles, g:ctrlp_alltags, g:ctrlp_alldirs, if !exists('g:ctrlp_map') | let g:ctrlp_map = '' | en if !exists('g:ctrlp_cmd') | let g:ctrlp_cmd = 'CtrlP' | en -com! -n=? -com=dir CtrlP cal ctrlp#init(0, { 'dir': }) -com! -n=? -com=dir CtrlPMRUFiles cal ctrlp#init(2, { 'dir': }) +com! -n=? -com=custom,ctrlp#dircompl CtrlP + \ cal ctrlp#init(0, { 'dir': }) + +com! -n=? -com=custom,ctrlp#dircompl CtrlPMRUFiles + \ cal ctrlp#init(2, { 'dir': }) com! -bar CtrlPBuffer cal ctrlp#init(1) com! -n=? CtrlPLastMode cal ctrlp#init(-1, { 'args': }) @@ -42,7 +45,7 @@ cal ctrlp#mrufiles#init() com! -bar CtrlPTag cal ctrlp#init(ctrlp#tag#id()) com! -bar CtrlPQuickfix cal ctrlp#init(ctrlp#quickfix#id()) -com! -n=? -com=dir CtrlPDir +com! -n=? -com=custom,ctrlp#dircompl CtrlPDir \ cal ctrlp#init(ctrlp#dir#id(), { 'dir': }) com! -n=? -com=buffer CtrlPBufTag @@ -60,7 +63,7 @@ com! -bar CtrlPChangeAll cal ctrlp#init(ctrlp#changes#cmd(1)) com! -bar CtrlPMixed cal ctrlp#init(ctrlp#mixed#id()) com! -bar CtrlPBookmarkDir cal ctrlp#init(ctrlp#bookmarkdir#id()) -com! -n=? -com=dir CtrlPBookmarkDirAdd +com! -n=? -com=custom,ctrlp#dircompl CtrlPBookmarkDirAdd \ cal ctrlp#call('ctrlp#bookmarkdir#add', ) " vim:ts=2:sw=2:sts=2