Fossil: fix detection of deleted lines

Assuming line 28 was deleted, the block header for a unified diff looks like:

    +28,1 -27,0

This is true for usual suspects like `diff -U0` and `git diff -U0`, but
unfortunately not for Fossil. It would report this instead:

    +28,1 -0,0

This lead our code to believe that line 1 instead of line 28 was deleted. And
maybe it's right about that. There does not seem to be a standard for patch/diff
output, but according to my knowledge Fossil is the only VCS doing that.

Anyway, this commit's change should make the detection of a deleted first line
work for every VCS again.

Fixes https://github.com/mhinz/vim-signify/issues/282
This commit is contained in:
Marco Hinz 2019-02-04 14:35:57 +01:00 committed by Marco Hinz
parent 3332ee2cd7
commit 64b226cf1b

View File

@ -93,7 +93,7 @@ function! sy#sign#process_diff(sy, vcs, diff) abort
elseif (old_count >= 1) && (new_count == 0) elseif (old_count >= 1) && (new_count == 0)
if s:external_sign_present(a:sy, new_line) | continue | endif if s:external_sign_present(a:sy, new_line) | continue | endif
let deleted += old_count let deleted += old_count
if new_line == 0 if old_line == 1
call add(ids, s:add_sign(a:sy, 1, 'SignifyRemoveFirstLine')) call add(ids, s:add_sign(a:sy, 1, 'SignifyRemoveFirstLine'))
elseif s:sign_show_count elseif s:sign_show_count
let text = s:sign_delete . (old_count <= 99 ? old_count : '>') let text = s:sign_delete . (old_count <= 99 ? old_count : '>')