git-gui: Add a 'recursive' checkbox in the clone menu.
[gitweb.git] / lib / search.tcl
index db88d87c512da485f733fa1ef1f02f7884f3dfc0..ef1e55521d7cea10e280f720ad700a4cd4b71d65 100644 (file)
@@ -11,6 +11,7 @@ field regexpsearch
 field default_regexpsearch
 field casesensitive
 field default_casesensitive
+field smartcase
 field searchdirn     -forwards
 
 field history
@@ -25,10 +26,20 @@ constructor new {i_w i_text args} {
        set ctext  $i_text
 
        set default_regexpsearch [is_config_true gui.search.regexp]
-       if {[is_config_true gui.search.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]
@@ -155,10 +166,10 @@ method _incrsearch {} {
        if {[catch {$ctext index anchor}]} {
                $ctext mark set anchor [_get_new_anchor $this]
        }
-       if {[regexp {[[:upper:]]} $searchstring]} {
-               set casesensitive 1
-       }
        if {$searchstring ne {}} {
+               if {$smartcase && [regexp {[[:upper:]]} $searchstring]} {
+                       set casesensitive 1
+               }
                set here [_do_search $this anchor mlen]
                if {$here ne {}} {
                        $ctext see $here
@@ -171,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
        }
 }