mirror of
https://github.com/airblade/vim-gitgutter.git
synced 2025-11-08 11:33:48 -05:00
@@ -73,6 +73,7 @@ function! gitgutter#highlight#define_signs() abort
|
|||||||
sign define GitGutterLineModified
|
sign define GitGutterLineModified
|
||||||
sign define GitGutterLineRemoved
|
sign define GitGutterLineRemoved
|
||||||
sign define GitGutterLineRemovedFirstLine
|
sign define GitGutterLineRemovedFirstLine
|
||||||
|
sign define GitGutterLineRemovedAboveAndBelow
|
||||||
sign define GitGutterLineModifiedRemoved
|
sign define GitGutterLineModifiedRemoved
|
||||||
sign define GitGutterDummy
|
sign define GitGutterDummy
|
||||||
|
|
||||||
@@ -86,6 +87,7 @@ function! s:define_sign_text() abort
|
|||||||
execute "sign define GitGutterLineModified text=" . g:gitgutter_sign_modified
|
execute "sign define GitGutterLineModified text=" . g:gitgutter_sign_modified
|
||||||
execute "sign define GitGutterLineRemoved text=" . g:gitgutter_sign_removed
|
execute "sign define GitGutterLineRemoved text=" . g:gitgutter_sign_removed
|
||||||
execute "sign define GitGutterLineRemovedFirstLine text=" . g:gitgutter_sign_removed_first_line
|
execute "sign define GitGutterLineRemovedFirstLine text=" . g:gitgutter_sign_removed_first_line
|
||||||
|
execute "sign define GitGutterLineRemovedAboveAndBelow text=" . g:gitgutter_sign_removed_above_and_below
|
||||||
execute "sign define GitGutterLineModifiedRemoved text=" . g:gitgutter_sign_modified_removed
|
execute "sign define GitGutterLineModifiedRemoved text=" . g:gitgutter_sign_modified_removed
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -99,12 +101,14 @@ function! gitgutter#highlight#define_sign_text_highlights() abort
|
|||||||
sign define GitGutterLineModified texthl=GitGutterChange
|
sign define GitGutterLineModified texthl=GitGutterChange
|
||||||
sign define GitGutterLineRemoved texthl=GitGutterDelete
|
sign define GitGutterLineRemoved texthl=GitGutterDelete
|
||||||
sign define GitGutterLineRemovedFirstLine texthl=GitGutterDelete
|
sign define GitGutterLineRemovedFirstLine texthl=GitGutterDelete
|
||||||
|
sign define GitGutterLineRemovedAboveAndBelow texthl=GitGutterDelete
|
||||||
sign define GitGutterLineModifiedRemoved texthl=GitGutterChangeDelete
|
sign define GitGutterLineModifiedRemoved texthl=GitGutterChangeDelete
|
||||||
else
|
else
|
||||||
sign define GitGutterLineAdded texthl=GitGutterAddInvisible
|
sign define GitGutterLineAdded texthl=GitGutterAddInvisible
|
||||||
sign define GitGutterLineModified texthl=GitGutterChangeInvisible
|
sign define GitGutterLineModified texthl=GitGutterChangeInvisible
|
||||||
sign define GitGutterLineRemoved texthl=GitGutterDeleteInvisible
|
sign define GitGutterLineRemoved texthl=GitGutterDeleteInvisible
|
||||||
sign define GitGutterLineRemovedFirstLine texthl=GitGutterDeleteInvisible
|
sign define GitGutterLineRemovedFirstLine texthl=GitGutterDeleteInvisible
|
||||||
|
sign define GitGutterLineRemovedAboveAndBelow texthl=GitGutterDeleteInvisible
|
||||||
sign define GitGutterLineModifiedRemoved texthl=GitGutterChangeDeleteInvisible
|
sign define GitGutterLineModifiedRemoved texthl=GitGutterChangeDeleteInvisible
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
@@ -115,12 +119,14 @@ function! s:define_sign_line_highlights() abort
|
|||||||
sign define GitGutterLineModified linehl=GitGutterChangeLine
|
sign define GitGutterLineModified linehl=GitGutterChangeLine
|
||||||
sign define GitGutterLineRemoved linehl=GitGutterDeleteLine
|
sign define GitGutterLineRemoved linehl=GitGutterDeleteLine
|
||||||
sign define GitGutterLineRemovedFirstLine linehl=GitGutterDeleteLine
|
sign define GitGutterLineRemovedFirstLine linehl=GitGutterDeleteLine
|
||||||
|
sign define GitGutterLineRemovedAboveAndBelow linehl=GitGutterDeleteLine
|
||||||
sign define GitGutterLineModifiedRemoved linehl=GitGutterChangeDeleteLine
|
sign define GitGutterLineModifiedRemoved linehl=GitGutterChangeDeleteLine
|
||||||
else
|
else
|
||||||
sign define GitGutterLineAdded linehl=
|
sign define GitGutterLineAdded linehl=
|
||||||
sign define GitGutterLineModified linehl=
|
sign define GitGutterLineModified linehl=
|
||||||
sign define GitGutterLineRemoved linehl=
|
sign define GitGutterLineRemoved linehl=
|
||||||
sign define GitGutterLineRemovedFirstLine linehl=
|
sign define GitGutterLineRemovedFirstLine linehl=
|
||||||
|
sign define GitGutterLineRemovedAboveAndBelow linehl=
|
||||||
sign define GitGutterLineModifiedRemoved linehl=
|
sign define GitGutterLineModifiedRemoved linehl=
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -93,6 +93,9 @@ function! s:current_hunk() abort
|
|||||||
return current_hunk
|
return current_hunk
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" A line can be in 0 or 1 hunks, with the following exception: when the first
|
||||||
|
" line(s) of a file has been deleted, and the new second line (and
|
||||||
|
" optionally below) has been deleted, the new first line is in two hunks.
|
||||||
function! gitgutter#hunk#cursor_in_hunk(hunk) abort
|
function! gitgutter#hunk#cursor_in_hunk(hunk) abort
|
||||||
let current_line = line('.')
|
let current_line = line('.')
|
||||||
|
|
||||||
|
|||||||
@@ -170,7 +170,16 @@ function! s:upsert_new_gitgutter_signs(bufnr, modified_lines) abort
|
|||||||
let other_signs = gitgutter#utility#getbufvar(a:bufnr, 'other_signs')
|
let other_signs = gitgutter#utility#getbufvar(a:bufnr, 'other_signs')
|
||||||
let old_gitgutter_signs = gitgutter#utility#getbufvar(a:bufnr, 'gitgutter_signs')
|
let old_gitgutter_signs = gitgutter#utility#getbufvar(a:bufnr, 'gitgutter_signs')
|
||||||
|
|
||||||
for line in a:modified_lines
|
" Handle special case where the first line is the site of two hunks:
|
||||||
|
" lines deleted above at the start of the file, and lines deleted below from
|
||||||
|
" the (new) second line down.
|
||||||
|
if a:modified_lines[0:1] == [[1, 'removed_first_line'], [1, 'removed']]
|
||||||
|
let modified_lines = [[1, 'removed_above_and_below'] + a:modified_lines[2:]]
|
||||||
|
else
|
||||||
|
let modified_lines = a:modified_lines
|
||||||
|
endif
|
||||||
|
|
||||||
|
for line in modified_lines
|
||||||
let line_number = line[0] " <number>
|
let line_number = line[0] " <number>
|
||||||
if index(other_signs, line_number) == -1 " don't clobber others' signs
|
if index(other_signs, line_number) == -1 " don't clobber others' signs
|
||||||
let name = s:highlight_name_for_change(line[1])
|
let name = s:highlight_name_for_change(line[1])
|
||||||
@@ -213,6 +222,8 @@ function! s:highlight_name_for_change(text) abort
|
|||||||
return 'GitGutterLineModified'
|
return 'GitGutterLineModified'
|
||||||
elseif a:text ==# 'modified_removed'
|
elseif a:text ==# 'modified_removed'
|
||||||
return 'GitGutterLineModifiedRemoved'
|
return 'GitGutterLineModifiedRemoved'
|
||||||
|
elseif a:text ==# 'removed_above_and_below'
|
||||||
|
return 'GitGutterLineRemovedAboveAndBelow'
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ else
|
|||||||
call s:set('g:gitgutter_sign_removed_first_line', '_^')
|
call s:set('g:gitgutter_sign_removed_first_line', '_^')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
call s:set('g:gitgutter_sign_removed_above_and_below', '[')
|
||||||
call s:set('g:gitgutter_sign_modified_removed', '~_')
|
call s:set('g:gitgutter_sign_modified_removed', '~_')
|
||||||
call s:set('g:gitgutter_git_args', '')
|
call s:set('g:gitgutter_git_args', '')
|
||||||
call s:set('g:gitgutter_diff_args', '')
|
call s:set('g:gitgutter_diff_args', '')
|
||||||
|
|||||||
@@ -117,6 +117,16 @@ function Test_remove_first_lines()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
function Test_overlapping_hunks()
|
||||||
|
execute '3d'
|
||||||
|
execute '1d'
|
||||||
|
call s:trigger_gitgutter()
|
||||||
|
|
||||||
|
let expected = ["line=1 id=3000 name=GitGutterLineRemovedAboveAndBelow"]
|
||||||
|
call assert_equal(expected, s:signs('fixture.txt'))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
function Test_edit_file_with_same_name_as_a_branch()
|
function Test_edit_file_with_same_name_as_a_branch()
|
||||||
normal 5Gi*
|
normal 5Gi*
|
||||||
call system('git checkout -b fixture.txt')
|
call system('git checkout -b fixture.txt')
|
||||||
|
|||||||
Reference in New Issue
Block a user