git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] git-gui: support for underline styles
@ 2010-11-15 10:04 Bert Wesarg
  2010-11-19 10:00 ` Pat Thoyts
  0 siblings, 1 reply; 16+ messages in thread
From: Bert Wesarg @ 2010-11-15 10:04 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: Bert Wesarg, Shawn O . Pearce, git

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>

---
 git-gui/git-gui.sh   |    4 ++++
 git-gui/lib/diff.tcl |    3 ++-
 2 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index d3acf0d..70c0483 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -3328,6 +3328,10 @@ foreach {n c} {0 black 1 red4 2 green4 3 yellow4 4 blue4 5 magenta4 6 cyan4 7 gr
 	$ui_diff tag configure clri4$n -foreground $c
 	$ui_diff tag configure clr3$n -foreground $c
 	$ui_diff tag configure clri3$n -background $c
+	$ui_diff tag configure clru4$n -underline 1 -background $c
+	$ui_diff tag configure clrui4$n -underline 1 -foreground $c
+	$ui_diff tag configure clru3$n -underline 1 -foreground $c
+	$ui_diff tag configure clrui3$n -underline 1 -background $c
 }
 $ui_diff tag configure clr1 -font font_diffbold
 
diff --git a/git-gui/lib/diff.tcl b/git-gui/lib/diff.tcl
index dcf0711..f59477f 100644
--- a/git-gui/lib/diff.tcl
+++ b/git-gui/lib/diff.tcl
@@ -463,7 +463,8 @@ proc read_diff {fd cont_info} {
 
 		foreach {posbegin colbegin posend colend} $markup {
 			set prefix clr
-			foreach style [split $colbegin ";"] {
+			foreach style [lsort -integer [split $colbegin ";"]] {
+				if {$style eq "4"} {append prefix u; continue}
 				if {$style eq "7"} {append prefix i; continue}
 				if {$style < 30 || $style > 47} {continue}
 				set a "$mark linestart + $posbegin chars"
-- 
tg: (6f10c41..) bw/git-gui/support-underline-ansi-styles (depends on: master)

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

* [PATCH] git-gui: respect conflict marker size
@ 2010-11-16  7:49 Bert Wesarg
  2010-11-16  9:21 ` [PATCHv2 1/2] " Bert Wesarg
  0 siblings, 1 reply; 16+ messages in thread
From: Bert Wesarg @ 2010-11-16  7:49 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: Bert Wesarg, Shawn O . Pearce, Junio C Hamano, git

Respect the conflict-marker-size attribute on paths when detecting merge
conflicts.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>

---
 git-gui/lib/diff.tcl |   22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/git-gui/lib/diff.tcl b/git-gui/lib/diff.tcl
index dcf0711..a753737 100644
--- a/git-gui/lib/diff.tcl
+++ b/git-gui/lib/diff.tcl
@@ -253,6 +253,19 @@ proc show_other_diff {path w m cont_info} {
 	}
 }
 
+proc get_conflict_marker_size {path} {
+	set size 7
+	catch {
+		set fd_rc [eval [list git_read check-attr "conflict-marker-size" -- $path]]
+		set ret [gets $fd_rc line]
+		close $fd_rc
+		if {$ret > 0} {
+			regexp {.*: conflict-marker-size: (\d+)$} $line line size
+		}
+	}
+	return $size
+}
+
 proc start_show_diff {cont_info {add_opts {}}} {
 	global file_states file_lists
 	global is_3way_diff is_submodule_diff diff_active repo_config
@@ -268,6 +281,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
 	set is_submodule_diff 0
 	set diff_active 1
 	set current_diff_header {}
+	set conflict_size [get_conflict_marker_size $path]
 
 	set cmd [list]
 	if {$w eq $ui_index} {
@@ -329,7 +343,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
 		-blocking 0 \
 		-encoding [get_path_encoding $path] \
 		-translation lf
-	fileevent $fd readable [list read_diff $fd $cont_info]
+	fileevent $fd readable [list read_diff $fd $conflict_size $cont_info]
 }
 
 proc parse_color_line {line} {
@@ -349,7 +363,7 @@ proc parse_color_line {line} {
 	return [list $result $markup]
 }
 
-proc read_diff {fd cont_info} {
+proc read_diff {fd conflict_size cont_info} {
 	global ui_diff diff_active is_submodule_diff
 	global is_3way_diff is_conflict_diff current_diff_header
 	global current_diff_queue
@@ -402,7 +416,7 @@ proc read_diff {fd cont_info} {
 			{- } {set tags d_-s}
 			{--} {set tags d_--}
 			{++} {
-				if {[regexp {^\+\+([<>]{7} |={7})} $line _g op]} {
+				if {[regexp {^\+\+([<>]{$conflict_size} |={$conflict_size})} $line _g op]} {
 					set is_conflict_diff 1
 					set line [string replace $line 0 1 {  }]
 					set tags d$op
@@ -441,7 +455,7 @@ proc read_diff {fd cont_info} {
 			{@} {set tags d_@}
 			{-} {set tags d_-}
 			{+} {
-				if {[regexp {^\+([<>]{7} |={7})} $line _g op]} {
+				if {[regexp {^\+([<>]{$conflict_size} |={$conflict_size})} $line _g op]} {
 					set is_conflict_diff 1
 					set tags d$op
 				} else {
-- 
tg: (6f10c41..) bw/git-gui/respect-conflict-marker-size (depends on: master)

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

* [PATCHv2 1/2] git-gui: respect conflict marker size
  2010-11-16  7:49 [PATCH] git-gui: respect conflict marker size Bert Wesarg
@ 2010-11-16  9:21 ` Bert Wesarg
  2010-11-16  9:26   ` [PATCH 2/2] git-gui: support for diff3 conflict style Bert Wesarg
  2010-11-19 11:20   ` [PATCHv2 1/2] git-gui: respect conflict marker size Pat Thoyts
  0 siblings, 2 replies; 16+ messages in thread
From: Bert Wesarg @ 2010-11-16  9:21 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: Bert Wesarg, Shawn O . Pearce, Junio C Hamano, git

Respect the conflict-marker-size attribute on paths when detecting merge
conflicts.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>

---

v2 fixes the tags selection and also the regexp to match always exactly the
desired number of markers.

Bert

 git-gui/git-gui.sh   |    6 +++---
 git-gui/lib/diff.tcl |   22 ++++++++++++++++++----
 2 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index d3acf0d..38362fa 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -3351,13 +3351,13 @@ $ui_diff tag conf d_s- \
 	-foreground red \
 	-background ivory1
 
-$ui_diff tag conf d<<<<<<< \
+$ui_diff tag conf d< \
 	-foreground orange \
 	-font font_diffbold
-$ui_diff tag conf d======= \
+$ui_diff tag conf d= \
 	-foreground orange \
 	-font font_diffbold
-$ui_diff tag conf d>>>>>>> \
+$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 dcf0711..d4e2ce3 100644
--- a/git-gui/lib/diff.tcl
+++ b/git-gui/lib/diff.tcl
@@ -253,6 +253,19 @@ proc show_other_diff {path w m cont_info} {
 	}
 }
 
+proc get_conflict_marker_size {path} {
+	set size 7
+	catch {
+		set fd_rc [eval [list git_read check-attr "conflict-marker-size" -- $path]]
+		set ret [gets $fd_rc line]
+		close $fd_rc
+		if {$ret > 0} {
+			regexp {.*: conflict-marker-size: (\d+)$} $line line size
+		}
+	}
+	return $size
+}
+
 proc start_show_diff {cont_info {add_opts {}}} {
 	global file_states file_lists
 	global is_3way_diff is_submodule_diff diff_active repo_config
@@ -268,6 +281,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
 	set is_submodule_diff 0
 	set diff_active 1
 	set current_diff_header {}
+	set conflict_size [get_conflict_marker_size $path]
 
 	set cmd [list]
 	if {$w eq $ui_index} {
@@ -329,7 +343,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
 		-blocking 0 \
 		-encoding [get_path_encoding $path] \
 		-translation lf
-	fileevent $fd readable [list read_diff $fd $cont_info]
+	fileevent $fd readable [list read_diff $fd $conflict_size $cont_info]
 }
 
 proc parse_color_line {line} {
@@ -349,7 +363,7 @@ proc parse_color_line {line} {
 	return [list $result $markup]
 }
 
-proc read_diff {fd cont_info} {
+proc read_diff {fd conflict_size cont_info} {
 	global ui_diff diff_active is_submodule_diff
 	global is_3way_diff is_conflict_diff current_diff_header
 	global current_diff_queue
@@ -402,7 +416,7 @@ proc read_diff {fd cont_info} {
 			{- } {set tags d_-s}
 			{--} {set tags d_--}
 			{++} {
-				if {[regexp {^\+\+([<>]{7} |={7})} $line _g op]} {
+				if {[regexp {^\+\+([<>=]){$conflict_size}(?: |$)} $line _g op]} {
 					set is_conflict_diff 1
 					set line [string replace $line 0 1 {  }]
 					set tags d$op
@@ -441,7 +455,7 @@ proc read_diff {fd cont_info} {
 			{@} {set tags d_@}
 			{-} {set tags d_-}
 			{+} {
-				if {[regexp {^\+([<>]{7} |={7})} $line _g op]} {
+				if {[regexp {^\+([<>=]){$conflict_size}(?: |$)} $line _g op]} {
 					set is_conflict_diff 1
 					set tags d$op
 				} else {
-- 
tg: (6f10c41..) bw/git-gui/respect-conflict-marker-size (depends on: master)

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

* [PATCH 2/2] git-gui: support for diff3 conflict style
  2010-11-16  9:21 ` [PATCHv2 1/2] " Bert Wesarg
@ 2010-11-16  9:26   ` Bert Wesarg
  2010-11-19 11:41     ` Pat Thoyts
  2010-11-19 11:20   ` [PATCHv2 1/2] git-gui: respect conflict marker size Pat Thoyts
  1 sibling, 1 reply; 16+ messages in thread
From: Bert Wesarg @ 2010-11-16  9:26 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: Bert Wesarg, Shawn O . Pearce, git

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_++
 				}
-- 
tg: (fba7c96..) bw/git-gui/support-diff3 (depends on: master bw/git-gui/respect-conflict-marker-size)

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

* Re: [PATCH] git-gui: support for underline styles
  2010-11-15 10:04 [PATCH] git-gui: support for underline styles Bert Wesarg
@ 2010-11-19 10:00 ` Pat Thoyts
  2010-11-19 10:55   ` Bert Wesarg
  2011-02-27 20:04   ` Bert Wesarg
  0 siblings, 2 replies; 16+ messages in thread
From: Pat Thoyts @ 2010-11-19 10:00 UTC (permalink / raw)
  To: Bert Wesarg; +Cc: Shawn O . Pearce, git


Suggested-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
---

I left underline out because I reckon it would just make text harder to
read on a gui display. It seems like the option would only be useful on
monochrome terminals.

If we do want to support underlines in the diff view window then we can
have a different tag rather than replicating each color to get a
underlined version of the same color.
Something like the following should do it:


 git-gui.sh   |    1 +
 lib/diff.tcl |    2 +-
 2 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/git-gui.sh b/git-gui.sh
index d3acf0d..137cd72 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -3330,6 +3330,7 @@ foreach {n c} {0 black 1 red4 2 green4 3 yellow4 4 blue4 5 magenta4 6 cyan4 7 gr
 	$ui_diff tag configure clri3$n -background $c
 }
 $ui_diff tag configure clr1 -font font_diffbold
+$ui_diff tag configure clr4 -underline 1
 
 $ui_diff tag conf d_cr -elide true
 $ui_diff tag conf d_@ -font font_diffbold
diff --git a/lib/diff.tcl b/lib/diff.tcl
index 0579fa6..203ab07 100644
--- a/lib/diff.tcl
+++ b/lib/diff.tcl
@@ -473,7 +473,7 @@ proc read_diff {fd cont_info} {
 			set prefix clr
 			foreach style [split $colbegin ";"] {
 				if {$style eq "7"} {append prefix i; continue}
-				if {$style < 30 || $style > 47} {continue}
+				if {$style != 4 && ($style < 30 || $style > 47)} {continue}
 				set a "$mark linestart + $posbegin chars"
 				set b "$mark linestart + $posend chars"
 				catch {$ui_diff tag add $prefix$style $a $b}
-- 
1.7.3.1.msysgit.0

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

* Re: [PATCH] git-gui: support for underline styles
  2010-11-19 10:00 ` Pat Thoyts
@ 2010-11-19 10:55   ` Bert Wesarg
  2011-02-27 20:04   ` Bert Wesarg
  1 sibling, 0 replies; 16+ messages in thread
From: Bert Wesarg @ 2010-11-19 10:55 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: Shawn O . Pearce, git

On Fri, Nov 19, 2010 at 11:00, Pat Thoyts
<patthoyts@users.sourceforge.net> wrote:
>
> Suggested-by: Bert Wesarg <bert.wesarg@googlemail.com>
> Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
> ---
>
> I left underline out because I reckon it would just make text harder to
> read on a gui display. It seems like the option would only be useful on
> monochrome terminals.
>
> If we do want to support underlines in the diff view window then we can
> have a different tag rather than replicating each color to get a
> underlined version of the same color.
> Something like the following should do it:

Thanks for this simple implementation. My only concern left is the
ordering. If we have '\033[7;4;30m' than we end up using 'clri4' as
tag, which does not exists. I suspect that git does not produce such
unordered attributes. But for clarity I would suggest to keep my lsort
around the split command.

Bert

>
>
>  git-gui.sh   |    1 +
>  lib/diff.tcl |    2 +-
>  2 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/git-gui.sh b/git-gui.sh
> index d3acf0d..137cd72 100755
> --- a/git-gui.sh
> +++ b/git-gui.sh
> @@ -3330,6 +3330,7 @@ foreach {n c} {0 black 1 red4 2 green4 3 yellow4 4 blue4 5 magenta4 6 cyan4 7 gr
>        $ui_diff tag configure clri3$n -background $c
>  }
>  $ui_diff tag configure clr1 -font font_diffbold
> +$ui_diff tag configure clr4 -underline 1
>
>  $ui_diff tag conf d_cr -elide true
>  $ui_diff tag conf d_@ -font font_diffbold
> diff --git a/lib/diff.tcl b/lib/diff.tcl
> index 0579fa6..203ab07 100644
> --- a/lib/diff.tcl
> +++ b/lib/diff.tcl
> @@ -473,7 +473,7 @@ proc read_diff {fd cont_info} {
>                        set prefix clr
>                        foreach style [split $colbegin ";"] {
>                                if {$style eq "7"} {append prefix i; continue}
> -                               if {$style < 30 || $style > 47} {continue}
> +                               if {$style != 4 && ($style < 30 || $style > 47)} {continue}
>                                set a "$mark linestart + $posbegin chars"
>                                set b "$mark linestart + $posend chars"
>                                catch {$ui_diff tag add $prefix$style $a $b}
> --
> 1.7.3.1.msysgit.0
>
>

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

* Re: [PATCHv2 1/2] git-gui: respect conflict marker size
  2010-11-16  9:21 ` [PATCHv2 1/2] " Bert Wesarg
  2010-11-16  9:26   ` [PATCH 2/2] git-gui: support for diff3 conflict style Bert Wesarg
@ 2010-11-19 11:20   ` Pat Thoyts
  2010-11-19 11:48     ` Bert Wesarg
  1 sibling, 1 reply; 16+ messages in thread
From: Pat Thoyts @ 2010-11-19 11:20 UTC (permalink / raw)
  To: Bert Wesarg; +Cc: Shawn O . Pearce, Junio C Hamano, git

Bert Wesarg <bert.wesarg@googlemail.com> writes:

>Respect the conflict-marker-size attribute on paths when detecting merge
>conflicts.
>
>Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
>
>---
>
>v2 fixes the tags selection and also the regexp to match always exactly the
>desired number of markers.
>
>Bert
>
> git-gui/git-gui.sh   |    6 +++---
> git-gui/lib/diff.tcl |   22 ++++++++++++++++++----
> 2 files changed, 21 insertions(+), 7 deletions(-)
>
>diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
>index d3acf0d..38362fa 100755
>--- a/git-gui/git-gui.sh
>+++ b/git-gui/git-gui.sh
>@@ -3351,13 +3351,13 @@ $ui_diff tag conf d_s- \
> 	-foreground red \
> 	-background ivory1
> 
>-$ui_diff tag conf d<<<<<<< \
>+$ui_diff tag conf d< \
> 	-foreground orange \
> 	-font font_diffbold
>-$ui_diff tag conf d======= \
>+$ui_diff tag conf d= \
> 	-foreground orange \
> 	-font font_diffbold
>-$ui_diff tag conf d>>>>>>> \
>+$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 dcf0711..d4e2ce3 100644
>--- a/git-gui/lib/diff.tcl
>+++ b/git-gui/lib/diff.tcl
>@@ -253,6 +253,19 @@ proc show_other_diff {path w m cont_info} {
> 	}
> }
> 
>+proc get_conflict_marker_size {path} {
>+	set size 7
>+	catch {
>+		set fd_rc [eval [list git_read check-attr "conflict-marker-size" -- $path]]
>+		set ret [gets $fd_rc line]
>+		close $fd_rc
>+		if {$ret > 0} {
>+			regexp {.*: conflict-marker-size: (\d+)$} $line line size
>+		}
>+	}
>+	return $size
>+}
>+
> proc start_show_diff {cont_info {add_opts {}}} {
> 	global file_states file_lists
> 	global is_3way_diff is_submodule_diff diff_active repo_config
>@@ -268,6 +281,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
> 	set is_submodule_diff 0
> 	set diff_active 1
> 	set current_diff_header {}
>+	set conflict_size [get_conflict_marker_size $path]
> 
> 	set cmd [list]
> 	if {$w eq $ui_index} {
>@@ -329,7 +343,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
> 		-blocking 0 \
> 		-encoding [get_path_encoding $path] \
> 		-translation lf
>-	fileevent $fd readable [list read_diff $fd $cont_info]
>+	fileevent $fd readable [list read_diff $fd $conflict_size $cont_info]
> }
> 
> proc parse_color_line {line} {
>@@ -349,7 +363,7 @@ proc parse_color_line {line} {
> 	return [list $result $markup]
> }
> 
>-proc read_diff {fd cont_info} {
>+proc read_diff {fd conflict_size cont_info} {
> 	global ui_diff diff_active is_submodule_diff
> 	global is_3way_diff is_conflict_diff current_diff_header
> 	global current_diff_queue
>@@ -402,7 +416,7 @@ proc read_diff {fd cont_info} {
> 			{- } {set tags d_-s}
> 			{--} {set tags d_--}
> 			{++} {
>-				if {[regexp {^\+\+([<>]{7} |={7})} $line _g op]} {
>+				if {[regexp {^\+\+([<>=]){$conflict_size}(?: |$)} $line _g op]} {
> 					set is_conflict_diff 1
> 					set line [string replace $line 0 1 {  }]
> 					set tags d$op
>@@ -441,7 +455,7 @@ proc read_diff {fd cont_info} {
> 			{@} {set tags d_@}
> 			{-} {set tags d_-}
> 			{+} {
>-				if {[regexp {^\+([<>]{7} |={7})} $line _g op]} {
>+				if {[regexp {^\+([<>=]){$conflict_size}(?: |$)} $line _g op]} {
> 					set is_conflict_diff 1
> 					set tags d$op
> 				} else {

Tcl doesn't expand variables in curly-braced expressions so the
$conflict_size is left in there verbatim.

Either 
  set regexp [string map [list %conflict_size $conflict_size]\
      {^\+([<>=]){%conflict_size}(?: |$)}]
which substitutes in the expanded value or double-quotes with care to
protect anything that Tcl would expand in the regexp. The string map
style is often easier to read.
  regexp "^\\+(\[<>=\]){$conflict_size}(?: |\$)" $line _g op

I've squashed in a fix using string map on this one. With that it
appears to work fine. I never noticed this attribute before.

-- 
Pat Thoyts                            http://www.patthoyts.tk/
PGP fingerprint 2C 6E 98 07 2C 59 C8 97  10 CE 11 E6 04 E0 B9 DD

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

* Re: [PATCH 2/2] git-gui: support for diff3 conflict style
  2010-11-16  9:26   ` [PATCH 2/2] git-gui: support for diff3 conflict style Bert Wesarg
@ 2010-11-19 11:41     ` Pat Thoyts
  2010-11-19 12:05       ` Bert Wesarg
  2011-02-27 20:15       ` Bert Wesarg
  0 siblings, 2 replies; 16+ messages in thread
From: Pat Thoyts @ 2010-11-19 11:41 UTC (permalink / raw)
  To: Bert Wesarg; +Cc: Shawn O . Pearce, git

Bert Wesarg <bert.wesarg@googlemail.com> 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@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

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

* Re: [PATCHv2 1/2] git-gui: respect conflict marker size
  2010-11-19 11:20   ` [PATCHv2 1/2] git-gui: respect conflict marker size Pat Thoyts
@ 2010-11-19 11:48     ` Bert Wesarg
  0 siblings, 0 replies; 16+ messages in thread
From: Bert Wesarg @ 2010-11-19 11:48 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: Shawn O . Pearce, Junio C Hamano, git

On Fri, Nov 19, 2010 at 12:20, Pat Thoyts
<patthoyts@users.sourceforge.net> wrote:
> Tcl doesn't expand variables in curly-braced expressions so the
> $conflict_size is left in there verbatim.

I should have noticed it either by testing or by wondering why i
didn't need to escape the '$', which I have tested but with a verbatim
7 as the conflict_size in the regex.

Thanks for fixing.

Bert

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

* Re: [PATCH 2/2] git-gui: support for diff3 conflict style
  2010-11-19 11:41     ` Pat Thoyts
@ 2010-11-19 12:05       ` Bert Wesarg
  2011-02-27 20:15       ` Bert Wesarg
  1 sibling, 0 replies; 16+ messages in thread
From: Bert Wesarg @ 2010-11-19 12:05 UTC (permalink / raw)
  To: Shawn O . Pearce; +Cc: Pat Thoyts, git

On Fri, Nov 19, 2010 at 12:41, Pat Thoyts
<patthoyts@users.sourceforge.net> wrote:
> Bert Wesarg <bert.wesarg@googlemail.com> 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@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.

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
>

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

* Re: [PATCH] git-gui: support for underline styles
  2010-11-19 10:00 ` Pat Thoyts
  2010-11-19 10:55   ` Bert Wesarg
@ 2011-02-27 20:04   ` Bert Wesarg
  2011-03-30  6:44     ` [PATCH 1/2] " Bert Wesarg
  1 sibling, 1 reply; 16+ messages in thread
From: Bert Wesarg @ 2011-02-27 20:04 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: Shawn O . Pearce, git

On Fri, Nov 19, 2010 at 11:00, Pat Thoyts
<patthoyts@users.sourceforge.net> wrote:
>
> Suggested-by: Bert Wesarg <bert.wesarg@googlemail.com>
> Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
> ---
>
> I left underline out because I reckon it would just make text harder to
> read on a gui display. It seems like the option would only be useful on
> monochrome terminals.
>
> If we do want to support underlines in the diff view window then we can
> have a different tag rather than replicating each color to get a
> underlined version of the same color.
> Something like the following should do it:

I miss this in git-gui.git.

Thanks,
Bert

>
>
>  git-gui.sh   |    1 +
>  lib/diff.tcl |    2 +-
>  2 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/git-gui.sh b/git-gui.sh
> index d3acf0d..137cd72 100755
> --- a/git-gui.sh
> +++ b/git-gui.sh
> @@ -3330,6 +3330,7 @@ foreach {n c} {0 black 1 red4 2 green4 3 yellow4 4 blue4 5 magenta4 6 cyan4 7 gr
>        $ui_diff tag configure clri3$n -background $c
>  }
>  $ui_diff tag configure clr1 -font font_diffbold
> +$ui_diff tag configure clr4 -underline 1
>
>  $ui_diff tag conf d_cr -elide true
>  $ui_diff tag conf d_@ -font font_diffbold
> diff --git a/lib/diff.tcl b/lib/diff.tcl
> index 0579fa6..203ab07 100644
> --- a/lib/diff.tcl
> +++ b/lib/diff.tcl
> @@ -473,7 +473,7 @@ proc read_diff {fd cont_info} {
>                        set prefix clr
>                        foreach style [split $colbegin ";"] {
>                                if {$style eq "7"} {append prefix i; continue}
> -                               if {$style < 30 || $style > 47} {continue}
> +                               if {$style != 4 && ($style < 30 || $style > 47)} {continue}
>                                set a "$mark linestart + $posbegin chars"
>                                set b "$mark linestart + $posend chars"
>                                catch {$ui_diff tag add $prefix$style $a $b}
> --
> 1.7.3.1.msysgit.0
>
>

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

* Re: [PATCH 2/2] git-gui: support for diff3 conflict style
  2010-11-19 11:41     ` Pat Thoyts
  2010-11-19 12:05       ` Bert Wesarg
@ 2011-02-27 20:15       ` Bert Wesarg
  2011-03-30  6:44         ` Bert Wesarg
  1 sibling, 1 reply; 16+ messages in thread
From: Bert Wesarg @ 2011-02-27 20:15 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: Shawn O . Pearce, git

On Fri, Nov 19, 2010 at 12:41, Pat Thoyts
<patthoyts@users.sourceforge.net> wrote:
> Bert Wesarg <bert.wesarg@googlemail.com> 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@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.

I miss this one in git-gui.git

Thanks,
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
>

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

* [PATCH 1/2] git-gui: support for underline styles
  2011-02-27 20:04   ` Bert Wesarg
@ 2011-03-30  6:44     ` Bert Wesarg
  0 siblings, 0 replies; 16+ messages in thread
From: Bert Wesarg @ 2011-03-30  6:44 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: git, Bert Wesarg

From: Pat Thoyts <patthoyts@users.sourceforge.net>

From: Pat Thoyts <patthoyts@users.sourceforge.net>

Suggested-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
---

I left underline out because I reckon it would just make text harder to
read on a gui display. It seems like the option would only be useful on
monochrome terminals.

If we do want to support underlines in the diff view window then we can
have a different tag rather than replicating each color to get a
underlined version of the same color.
Something like the following should do it:
---
 git-gui.sh   |    1 +
 lib/diff.tcl |    2 +-
 2 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/git-gui.sh b/git-gui.sh
index fd6a43d..d5c1535 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -3361,6 +3361,7 @@ foreach {n c} {0 black 1 red4 2 green4 3 yellow4 4 blue4 5 magenta4 6 cyan4 7 gr
 	$ui_diff tag configure clri3$n -background $c
 }
 $ui_diff tag configure clr1 -font font_diffbold
+$ui_diff tag configure clr4 -underline 1
 
 $ui_diff tag conf d_info -foreground blue -font font_diffbold
 
diff --git a/lib/diff.tcl b/lib/diff.tcl
index cf8a95e..39e4d90 100644
--- a/lib/diff.tcl
+++ b/lib/diff.tcl
@@ -504,7 +504,7 @@ proc read_diff {fd conflict_size cont_info} {
 			set prefix clr
 			foreach style [split $colbegin ";"] {
 				if {$style eq "7"} {append prefix i; continue}
-				if {$style < 30 || $style > 47} {continue}
+				if {$style != 4 && ($style < 30 || $style > 47)} {continue}
 				set a "$mark linestart + $posbegin chars"
 				set b "$mark linestart + $posend chars"
 				catch {$ui_diff tag add $prefix$style $a $b}
-- 
1.7.4.1.1319.ga04f7.dirty

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

* [PATCH 2/2] git-gui: support for diff3 conflict style
  2011-02-27 20:15       ` Bert Wesarg
@ 2011-03-30  6:44         ` Bert Wesarg
  2011-03-30  7:18           ` [PATCH 2v2/2] " Bert Wesarg
  0 siblings, 1 reply; 16+ messages in thread
From: Bert Wesarg @ 2011-03-30  6:44 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: git, Bert Wesarg

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

Maybe it's not too late for the next release.

 git-gui.sh   |    3 +++
 lib/diff.tcl |   12 ++++++++++++
 2 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/git-gui.sh b/git-gui.sh
index d5c1535..6adcda6 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -3388,6 +3388,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/lib/diff.tcl b/lib/diff.tcl
index 39e4d90..11f9e16 100644
--- a/lib/diff.tcl
+++ b/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] \
@@ -439,10 +440,21 @@ proc read_diff {fd conflict_size cont_info} {
 			{++} {
 				set regexp [string map [list %conflict_size $conflict_size]\
 								{^\+\+([<>=]){%conflict_size}(?: |$)}]
+				set regexp_pre_image [string map [list %conflict_size $conflict_size]\
+								{^\+\+\|{%conflict_size}(?: |$)]
 				if {[regexp $regexp $line _g op]} {
 					set is_conflict_diff 1
 					set line [string replace $line 0 1 {  }]
 					set tags d$op
+					set ::in_conflict_pre_image 0
+				} elseif {[regexp $regexp_pre_image $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_++
 				}
-- 
1.7.4.1.1319.ga04f7.dirty

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

* [PATCH 2v2/2] git-gui: support for diff3 conflict style
  2011-03-30  6:44         ` Bert Wesarg
@ 2011-03-30  7:18           ` Bert Wesarg
  2011-10-20 19:35             ` Bert Wesarg
  0 siblings, 1 reply; 16+ messages in thread
From: Bert Wesarg @ 2011-03-30  7:18 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: git, Bert Wesarg

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

Sorry, I had an syntax error in the last version.

 git-gui.sh   |    3 +++
 lib/diff.tcl |   12 ++++++++++++
 2 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/git-gui.sh b/git-gui.sh
index d5c1535..6adcda6 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -3388,6 +3388,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/lib/diff.tcl b/lib/diff.tcl
index 39e4d90..caa4be7 100644
--- a/lib/diff.tcl
+++ b/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] \
@@ -439,10 +440,21 @@ proc read_diff {fd conflict_size cont_info} {
 			{++} {
 				set regexp [string map [list %conflict_size $conflict_size]\
 								{^\+\+([<>=]){%conflict_size}(?: |$)}]
+				set regexp_pre_image [string map [list %conflict_size $conflict_size]\
+								{^\+\+\|{%conflict_size}(?: |$)}]
 				if {[regexp $regexp $line _g op]} {
 					set is_conflict_diff 1
 					set line [string replace $line 0 1 {  }]
 					set tags d$op
+					set ::in_conflict_pre_image 0
+				} elseif {[regexp $regexp_pre_image $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_++
 				}
-- 
1.7.4.2.743.g539ab

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

* Re: [PATCH 2v2/2] git-gui: support for diff3 conflict style
  2011-03-30  7:18           ` [PATCH 2v2/2] " Bert Wesarg
@ 2011-10-20 19:35             ` Bert Wesarg
  0 siblings, 0 replies; 16+ messages in thread
From: Bert Wesarg @ 2011-10-20 19:35 UTC (permalink / raw)
  To: Pat Thoyts; +Cc: git, Bert Wesarg

Ping.

On Wed, Mar 30, 2011 at 09:18, Bert Wesarg <bert.wesarg@googlemail.com> wrote:
> 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>
> ---
>
> Sorry, I had an syntax error in the last version.
>
>  git-gui.sh   |    3 +++
>  lib/diff.tcl |   12 ++++++++++++
>  2 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/git-gui.sh b/git-gui.sh
> index d5c1535..6adcda6 100755
> --- a/git-gui.sh
> +++ b/git-gui.sh
> @@ -3388,6 +3388,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/lib/diff.tcl b/lib/diff.tcl
> index 39e4d90..caa4be7 100644
> --- a/lib/diff.tcl
> +++ b/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] \
> @@ -439,10 +440,21 @@ proc read_diff {fd conflict_size cont_info} {
>                        {++} {
>                                set regexp [string map [list %conflict_size $conflict_size]\
>                                                                {^\+\+([<>=]){%conflict_size}(?: |$)}]
> +                               set regexp_pre_image [string map [list %conflict_size $conflict_size]\
> +                                                               {^\+\+\|{%conflict_size}(?: |$)}]
>                                if {[regexp $regexp $line _g op]} {
>                                        set is_conflict_diff 1
>                                        set line [string replace $line 0 1 {  }]
>                                        set tags d$op
> +                                       set ::in_conflict_pre_image 0
> +                               } elseif {[regexp $regexp_pre_image $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_++
>                                }
> --
> 1.7.4.2.743.g539ab
>
>

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

end of thread, other threads:[~2011-10-20 19:35 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-16  7:49 [PATCH] git-gui: respect conflict marker size Bert Wesarg
2010-11-16  9:21 ` [PATCHv2 1/2] " Bert Wesarg
2010-11-16  9:26   ` [PATCH 2/2] git-gui: support for diff3 conflict style Bert Wesarg
2010-11-19 11:41     ` Pat Thoyts
2010-11-19 12:05       ` Bert Wesarg
2011-02-27 20:15       ` Bert Wesarg
2011-03-30  6:44         ` Bert Wesarg
2011-03-30  7:18           ` [PATCH 2v2/2] " Bert Wesarg
2011-10-20 19:35             ` Bert Wesarg
2010-11-19 11:20   ` [PATCHv2 1/2] git-gui: respect conflict marker size Pat Thoyts
2010-11-19 11:48     ` Bert Wesarg
  -- strict thread matches above, loose matches on Subject: below --
2010-11-15 10:04 [PATCH] git-gui: support for underline styles Bert Wesarg
2010-11-19 10:00 ` Pat Thoyts
2010-11-19 10:55   ` Bert Wesarg
2011-02-27 20:04   ` Bert Wesarg
2011-03-30  6:44     ` [PATCH 1/2] " Bert Wesarg

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 NNTP newsgroup(s).