From: Роман Донченко Date: Tue, 06 Nov 2018 21:56:40 GMT Subject: Re: [PATCH] gitk: don't highlight submodule diff lines outside submodule diffs Message-ID: In-Reply-To: 06.11.2018 23:06, Stefan Beller пишет: > On Tue, Nov 6, 2018 at 12:03 PM Роман Донченко wrote: >> >> 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. > > This explanation makes sense, some prior art is at > https://public-inbox.org/git/20181021163401.4458-1-dummy@example.com/ > which was not taken AFAICT. Didn't see that patch. That said, I think it's incorrect, since it never resets currdiffsubmod back to the empty string, so if a normal diff follows a submodule diff, the same issue will occur. (The `set $currdiffsubmod ""` lines that are already there are effectively useless because they set the variable whose name is the contents of currdiffsubmod, rather than currdiffsubmod itself. I assume it was a typo.) -Roman > > Thanks, > Stefan > >> >> Signed-off-by: Роман Донченко >> --- >> 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 >>