Mercurial > dotfiles
changeset 199:4e276e0cdd98
Better auto-ignore for CtrlP.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 18 Aug 2014 17:12:08 -0700 |
parents | 5a898e1ffbe3 |
children | 6767fcfab15f |
files | vim/autoload/ctrlpext/autoignore.vim |
diffstat | 1 files changed, 8 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/vim/autoload/ctrlpext/autoignore.vim Mon Aug 18 17:11:20 2014 -0700 +++ b/vim/autoload/ctrlpext/autoignore.vim Mon Aug 18 17:12:08 2014 -0700 @@ -31,6 +31,7 @@ let g:ctrlp_custom_ignore = {} endif let g:ctrlp_custom_ignore['func'] = 'ctrlpext#autoignore#ignore' + let g:ctrlp_custom_ignore['func-init'] = 'ctrlpext#autoignore#ignore_init' endfunction " List patterns for a given project's root. @@ -53,6 +54,7 @@ endfunction let s:proj_cache = {} +let s:active_patterns = [] function! s:load_project_patterns(root_dir) abort let l:ign_path = a:root_dir . '/.ctrlpignore' @@ -90,9 +92,7 @@ " The custom ignore function that CtrlP will be using in addition to " normal pattern-based matching. function! ctrlpext#autoignore#ignore(item, type) abort - let l:root = getcwd() - let l:patterns = s:get_project_patterns(l:root) - for pat in l:patterns + for pat in s:active_patterns if pat['type'] == '' || pat['type'] == a:type if match(a:item, pat['pat']) >= 0 return 1 @@ -102,5 +102,10 @@ return 0 endfunction +function! ctrlpext#autoignore#ignore_init() abort + let l:root = getcwd() + let s:active_patterns = s:get_project_patterns(l:root) +endfunction + " }}}