Skip to content

Commit 51402fb

Browse files
intelfxairblade
authored andcommitted
Support negative patterns in g:rooter_targets
1 parent b0e7f42 commit 51402fb

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

README.mkd

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,13 @@ let g:rooter_targets = ['/', '*']
4040
let g:rooter_targets = ['/', '/home/*']
4141
```
4242

43+
Patterns are tried in order until one of them matches. To specify a negative pattern, prefix it with a `!`. If no patterns match, Rooter is not triggered:
44+
45+
```viml
46+
" Everything (default), except files under /tmp
47+
let g:rooter_targets = ['!/tmp/*', '/', '*']
48+
```
49+
4350
Comma-separated lists are also accepted:
4451

4552
```viml

doc/rooter.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ Rooter. Use a literal `/` to match directory buffers. For example:
6060
>
6161
let g:rooter_targets = ['/', '/home/*']
6262
<
63+
Patterns are tried in order until one of them matches. To specify a negative
64+
pattern, prefix it with a `!`. If no patterns match, Rooter is not triggered:
65+
>
66+
let g:rooter_targets = ['!/tmp/*', '/', '*']
67+
<
6368
A comma-separated list is also accepted instead of a native list:
6469
>
6570
let g:rooter_targets = '/,*.rb,*.haml,*.js'

plugin/rooter.vim

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,13 @@ function! s:activate()
119119
if !exists('*glob2regpat') | return 1 | endif
120120

121121
for p in filter(copy(patterns), 'v:val != "/"')
122+
if p[0] == '!'
123+
let [p, verdict] = [p[1:], 0]
124+
else
125+
let [p, verdict] = [p, 1]
126+
endif
122127
if fn =~ glob2regpat(p)
123-
return 1
128+
return verdict
124129
endif
125130
endfor
126131

0 commit comments

Comments
 (0)