Re: [PATCH 2/2] git-gui: support for diff3 conflict style
- From
Pat Thoyts <patthoyts@users.sourceforge.net>
- Date
- Nov 19, 2010, 11:41 UTC
- Message-ID
- <87fwuxh75m.fsf@fox.patthoyts.tk>
- In-Reply-To
- <1289899618-2845-1-git-send-email-bert.wesarg@googlemail.com>
Bert Wesarg <bert.wesarg@googlemail.com> writes:
Show 54 quoted lines
>This adds highlight support for the diff3 conflict style.
>
>The common pre-image will be reversed to --, because it has been removed
>and either replaced with our or their side.
>
>Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
>
>---
> git-gui/git-gui.sh | 3 +++
> git-gui/lib/diff.tcl | 10 ++++++++++
> 2 files changed, 13 insertions(+), 0 deletions(-)
>
>diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
>index 38362fa..0134438 100755
>--- a/git-gui/git-gui.sh
>+++ b/git-gui/git-gui.sh
>@@ -3354,6 +3354,9 @@ $ui_diff tag conf d_s- \
> $ui_diff tag conf d< \
> -foreground orange \
> -font font_diffbold
>+$ui_diff tag conf d| \
>+ -foreground orange \
>+ -font font_diffbold
> $ui_diff tag conf d= \
> -foreground orange \
> -font font_diffbold
>diff --git a/git-gui/lib/diff.tcl b/git-gui/lib/diff.tcl
>index d4e2ce3..ccd4c70 100644
>--- a/git-gui/lib/diff.tcl
>+++ b/git-gui/lib/diff.tcl
>@@ -339,6 +339,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
> }
>
> set ::current_diff_inheader 1
>+ set ::in_conflict_pre_image 0
> fconfigure $fd \
> -blocking 0 \
> -encoding [get_path_encoding $path] \
>@@ -420,6 +421,15 @@ proc read_diff {fd conflict_size cont_info} {
> set is_conflict_diff 1
> set line [string replace $line 0 1 { }]
> set tags d$op
>+ set ::in_conflict_pre_image 0
>+ } elseif {[regexp {^\+\+\|{$conflict_size}(?: |$)} $line]} {
>+ set is_conflict_diff 1
>+ set line [string replace $line 0 1 { }]
>+ set tags d|
>+ set ::in_conflict_pre_image 1
>+ } elseif ($::in_conflict_pre_image) {
>+ set line [string replace $line 0 1 {--}]
>+ set tags d_--
> } else {
> set tags d_++
> }This has the same issue as the last patch with variable substitution
into the regexp. Replaced the regexp expression with
[regexp "^\\+\\+\\|{$conflict_size}(?: |\$)" $line]I configured a test repository with 'merge.conflictstyle diff3' and could test this. Looks fine.
-- Pat Thoyts http://www.patthoyts.tk/ PGP fingerprint 2C 6E 98 07 2C 59 C8 97 10 CE 11 E6 04 E0 B9 DD