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
+
 " }}}