Mercurial > dotfiles
annotate vim/autoload/ctrlp/autoignore.vim @ 240:3a6b11d16a2a
Simpler registration for CtrlP extensions.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 12 Dec 2014 16:53:19 -0800 |
parents | vim/autoload/ctrlpext/autoignore.vim@4e276e0cdd98 |
children |
rev | line source |
---|---|
193
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
1 " ============================================================================= |
240
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
2 " File: autoload/ctrlp/autoignore.vim |
193
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
3 " Description: Auto-ignore Extension |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
4 " Author: Ludovic Chabant <github.com/ludovicchabant> |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
5 " ============================================================================= |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
6 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
7 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
8 " Global Settings {{{ |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
9 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
10 if !exists('g:ctrlp_autoignore_debug') |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
11 let g:ctrlp_autoignore_debug = 0 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
12 endif |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
13 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
14 if !exists('g:ctrlp_autoignore_trace') |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
15 let g:ctrlp_autoignore_trace = 0 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
16 endif |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
17 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
18 if exists('g:ctrlp_autoignore_loaded') && g:ctrlp_autoignore_loaded |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
19 \ && !g:ctrlp_autoignore_debug |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
20 finish |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
21 endif |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
22 let g:ctrlp_autoignore_loaded = 1 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
23 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
24 " }}} |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
25 |
240
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
26 " Initialization {{{ |
193
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
27 |
240
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
28 if !exists('g:ctrlp_custom_ignore') |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
29 let g:ctrlp_custom_ignore = {} |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
30 endif |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
31 let g:ctrlp_custom_ignore['func'] = 'ctrlp#autoignore#ignore' |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
32 let g:ctrlp_custom_ignore['func-init'] = 'ctrlp#autoignore#ignore_init' |
193
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
33 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
34 " }}} |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
35 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
36 " Internals {{{ |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
37 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
38 function! s:trace(message) abort |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
39 if g:ctrlp_autoignore_trace |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
40 echom "ctrlp_autoignore: " . a:message |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
41 endif |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
42 endfunction |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
43 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
44 let s:proj_cache = {} |
199
4e276e0cdd98
Better auto-ignore for CtrlP.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
45 let s:active_patterns = [] |
193
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
46 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
47 function! s:load_project_patterns(root_dir) abort |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
48 let l:ign_path = a:root_dir . '/.ctrlpignore' |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
49 if !filereadable(l:ign_path) |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
50 call s:trace("No pattern file at: " . l:ign_path) |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
51 return [] |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
52 endif |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
53 let l:patterns = [] |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
54 let l:lines = readfile(l:ign_path) |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
55 for line in l:lines |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
56 if match(line, '\v^\s*$') >= 0 || match(line, '\v^\s*#') >= 0 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
57 continue |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
58 endif |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
59 let l:matches = matchlist(line, '\v^((dir|file|link)\:)?(.*)') |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
60 let l:mtype = l:matches[2] |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
61 let l:mpat = l:matches[3] |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
62 call add(l:patterns, {'type': l:mtype, 'pat': l:mpat}) |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
63 endfor |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
64 call s:trace("Loaded " . len(l:patterns) . " patterns from: " . l:ign_path) |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
65 return l:patterns |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
66 endfunction |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
67 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
68 function! s:get_project_patterns(root_dir) abort |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
69 let l:patterns = get(s:proj_cache, a:root_dir) |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
70 if type(l:patterns) == type([]) |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
71 return l:patterns |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
72 endif |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
73 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
74 call s:trace("Loading patterns for project: " . a:root_dir) |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
75 let l:loaded = s:load_project_patterns(a:root_dir) |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
76 let s:proj_cache[a:root_dir] = l:loaded |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
77 return l:loaded |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
78 endfunction |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
79 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
80 " The custom ignore function that CtrlP will be using in addition to |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
81 " normal pattern-based matching. |
240
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
82 function! ctrlp#autoignore#ignore(item, type) abort |
199
4e276e0cdd98
Better auto-ignore for CtrlP.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
83 for pat in s:active_patterns |
193
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
84 if pat['type'] == '' || pat['type'] == a:type |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
85 if match(a:item, pat['pat']) >= 0 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
86 return 1 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
87 endif |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
88 endif |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
89 endfor |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
90 return 0 |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
91 endfunction |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
92 |
240
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
93 function! ctrlp#autoignore#ignore_init() abort |
199
4e276e0cdd98
Better auto-ignore for CtrlP.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
94 let l:root = getcwd() |
4e276e0cdd98
Better auto-ignore for CtrlP.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
95 let s:active_patterns = s:get_project_patterns(l:root) |
4e276e0cdd98
Better auto-ignore for CtrlP.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
96 endfunction |
4e276e0cdd98
Better auto-ignore for CtrlP.
Ludovic Chabant <ludovic@chabant.com>
parents:
193
diff
changeset
|
97 |
240
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
98 " List patterns for a given project's root. |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
99 function! ctrlp#autoignore#get_patterns(root_dir) abort |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
100 let l:patterns = s:get_project_patterns(a:root_dir) |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
101 for pat in l:patterns |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
102 let l:prefix = pat['type'] == '' ? '(all)' : pat['type'] |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
103 echom l:prefix . ':' . pat['pat'] |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
104 endfor |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
105 endfunction |
3a6b11d16a2a
Simpler registration for CtrlP extensions.
Ludovic Chabant <ludovic@chabant.com>
parents:
199
diff
changeset
|
106 |
193
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
107 " }}} |
ae53d68033d9
Enable fugitive and some CtrlP extensions, include a new one of my own.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff
changeset
|
108 |