Thread (1 message) 1 message, 1 author, 2016-06-15

Re: [PATCH] git-gui: use a tristate to control the case mode in the searchbar

From: Pat Thoyts <hidden>
Date: 2016-06-15 22:52:18

Bert Wesarg [off-list ref] writes:
quoted hunk
The config is now called gui.search.case and can have the three values:
no/yes/smart. yes is the default.

It also resets the case detection in smart mode, when the entry field was
cleared by the use.

Signed-off-by: Bert Wesarg <redacted>
---
lib/search.tcl |   24 +++++++++++++++++-------
1 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/lib/search.tcl b/lib/search.tcl
index 04a316b..ef1e555 100644
--- a/lib/search.tcl
+++ b/lib/search.tcl
@@ -26,11 +26,20 @@ constructor new {i_w i_text args} {
	set ctext  $i_text

	set default_regexpsearch [is_config_true gui.search.regexp]
-	set smartcase [is_config_true gui.search.smartcase]
-	if {$smartcase} {
+	switch -- [get_config gui.search.case] {
+	no {
		set default_casesensitive 0
-	} else {
+		set smartcase 0
+	}
+	smart {
+		set default_casesensitive 0
+		set smartcase 1
+	}
+	yes -
+	default {
		set default_casesensitive 1
+		set smartcase 0
+	}
	}

	set history [list]
@@ -157,12 +166,10 @@ method _incrsearch {} {
	if {[catch {$ctext index anchor}]} {
		$ctext mark set anchor [_get_new_anchor $this]
	}
-	if {$smartcase} {
-		if {[regexp {[[:upper:]]} $searchstring]} {
+	if {$searchstring ne {}} {
+		if {$smartcase && [regexp {[[:upper:]]} $searchstring]} {
			set casesensitive 1
		}
-	}
-	if {$searchstring ne {}} {
		set here [_do_search $this anchor mlen]
		if {$here ne {}} {
			$ctext see $here
@@ -175,6 +182,9 @@ method _incrsearch {} {
			#$w.ent configure -background lightpink
			$w.ent state pressed
		}
+	} elseif {$smartcase} {
+		# clearing the field resets the smart case detection
+		set casesensitive 0
	}
}
Look good to me. Applied.
-- 
Pat Thoyts                            http://www.patthoyts.tk/
PGP fingerprint 2C 6E 98 07 2C 59 C8 97  10 CE 11 E6 04 E0 B9 DD
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help