mirror of
https://github.com/airblade/vim-gitgutter.git
synced 2025-11-08 19:43:47 -05:00
Don't read the filename unnecessarily.
This commit is contained in:
@@ -140,22 +140,21 @@ endfunction
|
|||||||
|
|
||||||
" Sign processing {{{
|
" Sign processing {{{
|
||||||
|
|
||||||
function! s:clear_signs()
|
function! s:clear_signs(file_name)
|
||||||
let file_name = s:current_file()
|
if has_key(s:sign_ids, a:file_name)
|
||||||
if has_key(s:sign_ids, file_name)
|
for id in s:sign_ids[a:file_name]
|
||||||
for id in s:sign_ids[file_name]
|
exe ":sign unplace " . id . " file=" . a:file_name
|
||||||
exe ":sign unplace " . id . " file=" . file_name
|
|
||||||
endfor
|
endfor
|
||||||
let s:sign_ids[file_name] = []
|
let s:sign_ids[a:file_name] = []
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" This assumes there are no GitGutter signs in the current file.
|
" This assumes there are no GitGutter signs in the current file.
|
||||||
" If this is untenable we could change the regexp to exclude GitGutter's
|
" If this is untenable we could change the regexp to exclude GitGutter's
|
||||||
" signs.
|
" signs.
|
||||||
function! s:find_other_signs()
|
function! s:find_other_signs(file_name)
|
||||||
redir => signs
|
redir => signs
|
||||||
silent exe ":sign place file=" . s:current_file()
|
silent exe ":sign place file=" . a:file_name
|
||||||
redir END
|
redir END
|
||||||
let s:other_signs = []
|
let s:other_signs = []
|
||||||
for sign_line in split(signs, '\n')
|
for sign_line in split(signs, '\n')
|
||||||
@@ -167,8 +166,7 @@ function! s:find_other_signs()
|
|||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:show_signs(modified_lines)
|
function! s:show_signs(file_name, modified_lines)
|
||||||
let file_name = s:current_file()
|
|
||||||
for line in a:modified_lines
|
for line in a:modified_lines
|
||||||
let line_number = line[0]
|
let line_number = line[0]
|
||||||
let type = line[1]
|
let type = line[1]
|
||||||
@@ -180,7 +178,7 @@ function! s:show_signs(modified_lines)
|
|||||||
elseif type ==? 'modified'
|
elseif type ==? 'modified'
|
||||||
let name = 'GitGutterLineModified'
|
let name = 'GitGutterLineModified'
|
||||||
endif
|
endif
|
||||||
call s:add_sign(line_number, name, file_name)
|
call s:add_sign(line_number, name, a:file_name)
|
||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -222,9 +220,10 @@ function! GitGutter()
|
|||||||
let diff = s:run_diff()
|
let diff = s:run_diff()
|
||||||
let hunks = s:parse_diff(diff)
|
let hunks = s:parse_diff(diff)
|
||||||
let modified_lines = s:process_hunks(hunks)
|
let modified_lines = s:process_hunks(hunks)
|
||||||
call s:clear_signs()
|
let file_name = s:current_file()
|
||||||
call s:find_other_signs()
|
call s:clear_signs(file_name)
|
||||||
call s:show_signs(modified_lines)
|
call s:find_other_signs(file_name)
|
||||||
|
call s:show_signs(file_name, modified_lines)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user