git-gui: use a tristate to control the case mode in the searchbar
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 <bert.wesarg@googlemail.com> Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>maint
parent
508dee31f3
commit
f9ace9e63d
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue