Re: [PATCH] gitk: don't highlight submodule diff lines outside submodule diffs

2018-11-06 Thread Роман Донченко

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-du...@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



Re: [PATCH] gitk: don't highlight submodule diff lines outside submodule diffs

2018-11-06 Thread 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-du...@example.com/
which was not taken AFAICT.

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
>


[PATCH] gitk: don't highlight submodule diff lines outside submodule diffs

2018-11-06 Thread Роман Донченко
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: Роман Донченко 
---
 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