On Fri, Nov 19, 2010 at 12:41, Pat Thoyts <patthoyts@xxxxxxxxxxxxxxxxxxxxx> wrote: > Bert Wesarg <bert.wesarg@xxxxxxxxxxxxxx> writes: > >>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@xxxxxxxxxxxxxx> >> >>--- >> 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. Thanks Pat. By looking over the patch (which by itself is now some month old) I wondered whether git-gui has some policy to show the diff output as verbatim as possible. Which I break with this patch, because I replace the ++ line prefix in the pre-image with -- and in the |||| lines with " ". Shawn, does such policy exists? Bert > -- > Pat Thoyts              Âhttp://www.patthoyts.tk/ > PGP fingerprint 2C 6E 98 07 2C 59 C8 97 Â10 CE 11 E6 04 E0 B9 DD > ÿô.nÇ·®+%˱é¥wÿº{.nÇ· ßØnr¡öë¨è&£ûz¹Þúzf£¢·h§~Ûÿÿïÿê_èæ+v¨þ)ßø