aboutsummaryrefslogtreecommitdiff
path: root/runtime/autoload/netrw_gitignore.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/autoload/netrw_gitignore.vim')
-rw-r--r--runtime/autoload/netrw_gitignore.vim13
1 files changed, 10 insertions, 3 deletions
diff --git a/runtime/autoload/netrw_gitignore.vim b/runtime/autoload/netrw_gitignore.vim
index 0de902cbb4..da3f50bca0 100644
--- a/runtime/autoload/netrw_gitignore.vim
+++ b/runtime/autoload/netrw_gitignore.vim
@@ -61,9 +61,16 @@ function! netrw_gitignore#Hide(...)
" convert gitignore patterns to Netrw/Vim regex patterns
let escaped_lines = []
for line in gitignore_lines
- let escaped = line
- let escaped = substitute(escaped, '\.', '\\.', 'g')
- let escaped = substitute(escaped, '*', '.*', 'g')
+ let escaped = line
+ let escaped = substitute(escaped, '\*\*', '*', 'g')
+ let escaped = substitute(escaped, '\.', '\\.', 'g')
+ let escaped = substitute(escaped, '\$', '\\$', 'g')
+ let escaped = substitute(escaped, '*', '.*', 'g')
+ " correction: dot, dollar and asterisks chars shouldn't be escaped when
+ " within regex matching groups.
+ let escaped = substitute(escaped, '\(\[[^]]*\)\zs\\\.', '\.', 'g')
+ let escaped = substitute(escaped, '\(\[[^]]*\)\zs\\\$', '\$', 'g')
+ let escaped = substitute(escaped, '\(\[[^]]*\)\zs\.\*', '*', 'g')
let escaped_lines = add(escaped_lines, escaped)
endfor