Message ID | 20191101233427.4108-1-dpb@corrigendum.ru (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | gitk: don't highlight files after submodules as submodules | expand |
On Sat, Nov 02, 2019 at 02:34:27AM +0300, Роман Донченко wrote: > gitk applies submodule highlighting (coloring lines starting with > " >" and " <") when `currdiffsubmod` is not an empty string. > However, it fails to reset `currdiffsubmod` after a submodule diff > ends, so any file diffs following a submodule diff will still be > highlighted as if they were submodule diffs. > > There are two problems with the way gitk tries to reset `currdiffsubmod`: > > 1. The code says `set $currdiffsubmod` instead of `set currdiffsubmod`, > so it actually sets the variable whose name is the submodule path > instead. > > 2. It tries to do it after the first line in a submodule diff, which > is incorrect, since submodule diffs can contain multiple lines. > > Fix this by resetting `currdiffsubmod` when a file diff starts. > > Signed-off-by: Роман Донченко <dpb@corrigendum.ru> Thanks, patch applied. Paul.
diff --git a/gitk b/gitk index abe4805..7c425d2 100755 --- a/gitk +++ b/gitk @@ -8146,6 +8146,8 @@ proc parseblobdiffline {ids line} { } # start of a new file set diffinhdr 1 + set currdiffsubmod "" + $ctext insert end "\n" set curdiffstart [$ctext index "end - 1c"] lappend ctext_file_names "" @@ -8229,11 +8231,9 @@ proc parseblobdiffline {ids line} { $ctext insert end "$line\n" filesep } } elseif {$currdiffsubmod != "" && ![string compare -length 3 " >" $line]} { - set $currdiffsubmod "" set line [encoding convertfrom $diffencoding $line] $ctext insert end "$line\n" dresult } elseif {$currdiffsubmod != "" && ![string compare -length 3 " <" $line]} { - set $currdiffsubmod "" set line [encoding convertfrom $diffencoding $line] $ctext insert end "$line\n" d0 } elseif {$diffinhdr} {
gitk applies submodule highlighting (coloring lines starting with " >" and " <") when `currdiffsubmod` is not an empty string. However, it fails to reset `currdiffsubmod` after a submodule diff ends, so any file diffs following a submodule diff will still be highlighted as if they were submodule diffs. There are two problems with the way gitk tries to reset `currdiffsubmod`: 1. The code says `set $currdiffsubmod` instead of `set currdiffsubmod`, so it actually sets the variable whose name is the submodule path instead. 2. It tries to do it after the first line in a submodule diff, which is incorrect, since submodule diffs can contain multiple lines. Fix this by resetting `currdiffsubmod` when a file diff starts. Signed-off-by: Роман Донченко <dpb@corrigendum.ru> --- gitk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)