# HG changeset patch # User Ludovic Chabant # Date 1408407128 25200 # Node ID 4e276e0cdd985950bd0e76ad583308d9b074ad6f # Parent 5a898e1ffbe39fc234106d4a9263e5c15cb27b9a Better auto-ignore for CtrlP. diff -r 5a898e1ffbe3 -r 4e276e0cdd98 vim/autoload/ctrlpext/autoignore.vim --- 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 + " }}}