Skip to content

Commit 2d84812

Browse files
Properly escape temp files that can contain ~ and #.
1 parent 511b5c0 commit 2d84812

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

plugin/dirvish_git.vim

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ let s:dirvish_git_highlight_groups = {
2828
\ }
2929

3030
let s:sep = exists('+shellslash') && !&shellslash ? '\' : '/'
31+
let s:escape_chars = '.#~'.s:sep
3132
let s:git_files = {}
3233

3334
function! dirvish_git#init() abort
@@ -74,13 +75,13 @@ function! dirvish_git#init() abort
7475
endif
7576

7677
let l:file = fnamemodify(l:file, ':p')
77-
let l:file = matchstr(l:file, escape(l:current_dir.'[^'.s:sep.']*'.s:sep.'\?', '.'.s:sep))
78+
let l:file = matchstr(l:file, escape(l:current_dir.'[^'.s:sep.']*'.s:sep.'\?', s:escape_chars))
7879

7980
if index(values(s:git_files), l:file) > -1
8081
continue
8182
endif
8283

83-
let l:line_number = search(escape(l:file, '.'.s:sep), 'n')
84+
let l:line_number = search(escape(l:file, s:escape_chars), 'n')
8485
let s:git_files[l:line_number] = l:file
8586

8687
if isdirectory(l:file)
@@ -138,9 +139,9 @@ function! s:get_highlight_group(us, them, is_directory) abort
138139
endfunction
139140

140141
function! s:highlight_file(dir, file_name, us, them, is_directory) abort
141-
let l:file_rgx = escape(printf('\(%s\)\@<=%s%s', a:dir, s:sep, a:file_name), './')
142-
let l:dir_rgx = escape(printf('%s\(%s%s\)\@=', a:dir, s:sep, a:file_name), './')
143-
let l:slash_rgx = escape(printf('\(%s\)\@<=%s\(%s\)\@=', a:dir, s:sep, a:file_name), './')
142+
let l:file_rgx = escape(printf('\(%s\)\@<=%s%s', a:dir, s:sep, a:file_name), s:escape_chars)
143+
let l:dir_rgx = escape(printf('%s\(%s%s\)\@=', a:dir, s:sep, a:file_name), s:escape_chars)
144+
let l:slash_rgx = escape(printf('\(%s\)\@<=%s\(%s\)\@=', a:dir, s:sep, a:file_name), s:escape_chars)
144145

145146
silent exe 'syn match DirvishGitDir "'.l:dir_rgx.'" conceal cchar='.s:get_indicator(a:us, a:them)
146147
silent exe 'syn match '.s:get_highlight_group(a:us, a:them, a:is_directory).' "'.l:file_rgx.'" contains=DirvishGitSlash'

0 commit comments

Comments
 (0)