Don't read the filename unnecessarily.

This commit is contained in:
Andy Stewart
2013-02-25 10:43:41 +01:00
parent c012575fd4
commit e989037f84

View File

@@ -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