git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] gitk: don't highlight files after submodules as submodules
@ 2019-11-01 23:34 Роман Донченко
  2019-12-15  4:39 ` Paul Mackerras
  0 siblings, 1 reply; 2+ messages in thread
From: Роман Донченко @ 2019-11-01 23:34 UTC (permalink / raw)
  To: paulus
  Cc: git,
	Роман Донченко

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(-)

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} {
-- 
2.19.1.windows.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] gitk: don't highlight files after submodules as submodules
  2019-11-01 23:34 [PATCH] gitk: don't highlight files after submodules as submodules Роман Донченко
@ 2019-12-15  4:39 ` Paul Mackerras
  0 siblings, 0 replies; 2+ messages in thread
From: Paul Mackerras @ 2019-12-15  4:39 UTC (permalink / raw)
  To: Роман Донченко
  Cc: git

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.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-12-15  5:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-01 23:34 [PATCH] gitk: don't highlight files after submodules as submodules Роман Донченко
2019-12-15  4:39 ` Paul Mackerras

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).