Subject: Re: bug#10113: 24.0.91; Isearch & `M-e'

From: Juri Linkov <[email-masked]>
Date: Wed, 23 Nov 2011 23:23:37 +0200

> I'll try to express myself better: by default (without touching
> `isearch-edit-string'), the "case fold search" behavior can be
> switched on/off in two ways:
> a. Manually: by typing `M-c'.
> b. Automatically (only applies if the previous criterion is "case
> insensitive"): based on whether the current search string contains any
> uppercase letter or not.
>
> What I say is that currently (as we are shown) the (b) criterion is
> not always re-evaluated, and it should.
>
> BTW, Stefan agrees on this, and I hope you too :-).

True, currently after the first typed upper case letter,
case-sensitivity is not re-evaluated anymore.

This behavior can be changed with the following patch:

=== modified file 'lisp/isearch.el'
--- lisp/isearch.el	2011-11-19 21:51:29 +0000
+++ lisp/isearch.el	2011-11-23 21:21:22 +0000
@@ -1658,7 +1658,7 @@ (defun isearch-search-and-update ()
 	  (setq isearch-success t
 		isearch-error nil
 		isearch-other-end (match-end 0))
-	  (if (and (eq isearch-case-fold-search t) search-upper-case)
+	  (if search-upper-case
 	      (setq isearch-case-fold-search
 		    (isearch-no-upper-case-p isearch-string isearch-regexp))))
       ;; Not regexp, not reverse, or no match at point.
@@ -2328,7 +2328,7 @@ (defun isearch-search ()
   (if isearch-message-function
       (funcall isearch-message-function nil t)
     (isearch-message nil t))
-  (if (and (eq isearch-case-fold-search t) search-upper-case)
+  (if search-upper-case
       (setq isearch-case-fold-search
 	    (isearch-no-upper-case-p isearch-string isearch-regexp)))
   (condition-case lossage