A line that starts with "  <" or "  >" is not necessarily a submodule
diff line. It might just be a context line in a normal diff, representing
a line starting with " <" or " >" respectively.

Use the currdiffsubmod variable to track whether we are currently
inside a submodule diff and only highlight these lines if we are.

Signed-off-by: Роман Донченко <d...@corrigendum.ru>
---
 gitk | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gitk b/gitk
index a14d7a1..6bb6dc6 100755
--- a/gitk
+++ b/gitk
@@ -8109,6 +8109,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 ""
@@ -8191,12 +8193,10 @@ proc parseblobdiffline {ids line} {
        } else {
            $ctext insert end "$line\n" filesep
        }
-    } elseif {![string compare -length 3 "  >" $line]} {
-       set $currdiffsubmod ""
+    } elseif {$currdiffsubmod ne "" && ![string compare -length 3 "  >" 
$line]} {
        set line [encoding convertfrom $diffencoding $line]
        $ctext insert end "$line\n" dresult
-    } elseif {![string compare -length 3 "  <" $line]} {
-       set $currdiffsubmod ""
+    } elseif {$currdiffsubmod ne "" && ![string compare -length 3 "  <" 
$line]} {
        set line [encoding convertfrom $diffencoding $line]
        $ctext insert end "$line\n" d0
     } elseif {$diffinhdr} {
-- 
2.19.1.windows.1

Reply via email to