* Re: regexp case sensitivity bug [not found] <mailman.11.1039383012.19936.bug-gnu-emacs@gnu.org> @ 2002-12-08 21:51 ` David Kastrup 0 siblings, 0 replies; 7+ messages in thread From: David Kastrup @ 2002-12-08 21:51 UTC (permalink / raw) Dean Herington <heringto@cs.unc.edu> writes: > In Emacs 21.1.1, when I do isearch-forward-regexp with input "\bP", > Emacs matches 'p's case insensitively. I see nothing in the > documentation to suggest that the case sensitivity behavior should > differ from that of isearch-forward, where "P" matches only upper-case > 'p's. But I see something in the documentation: File: emacs, Node: Search Case, Next: Replace, Prev: Regexps, Up: Search Searching and Case ================== Incremental searches in Emacs normally ignore the case of the text they are searching through, if you specify the text in lower case. Thus, if you specify searching for `foo', then `Foo' and `foo' are also considered a match. Regexps, and in particular character sets, are included: `[ab]' would match `a' or `A' or `b' or `B'. An upper-case letter anywhere in the incremental search string makes the search case-sensitive. Thus, searching for `Foo' does not find `foo' or `FOO'. This applies to regular expression search as well as to string search. The effect ceases if you delete the upper-case letter from the search string. Typing `M-c' within an incremental search toggles the case sensitivity of that search. The effect does not extend beyond the current incremental search to the next one, but it does override the effect of including an upper-case letter in the current search. If you set the variable `case-fold-search' to `nil', then all letters must match exactly, including case. This is a per-buffer variable; altering the variable affects only the current buffer, but there is a default value which you can change as well. See *Note Locals::. This variable applies to nonincremental searches also, including those performed by the replace commands (see *note Replace::) and the minibuffer history matching commands (see *note Minibuffer History::). -- David Kastrup, Kriemhildstr. 15, 44793 Bochum ^ permalink raw reply [flat|nested] 7+ messages in thread
* regexp case sensitivity bug @ 2002-12-08 21:08 Dean Herington 2002-12-09 20:22 ` Richard Stallman 0 siblings, 1 reply; 7+ messages in thread From: Dean Herington @ 2002-12-08 21:08 UTC (permalink / raw) In Emacs 21.1.1, when I do isearch-forward-regexp with input "\bP", Emacs matches 'p's case insensitively. I see nothing in the documentation to suggest that the case sensitivity behavior should differ from that of isearch-forward, where "P" matches only upper-case 'p's. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: regexp case sensitivity bug 2002-12-08 21:08 Dean Herington @ 2002-12-09 20:22 ` Richard Stallman 2002-12-09 22:27 ` Dean Herington 0 siblings, 1 reply; 7+ messages in thread From: Richard Stallman @ 2002-12-09 20:22 UTC (permalink / raw) Cc: emacs-devel In Emacs 21.1.1, when I do isearch-forward-regexp with input "\bP", Emacs matches 'p's case insensitively. Does this patch fix it? *** isearch.el.~1.215.~ Sun Nov 10 13:13:37 2002 --- isearch.el Mon Dec 9 11:20:37 2002 *************** *** 1871,1877 **** (if (and regexp-flag (eq char ?\\)) (setq quote-flag (not quote-flag)) (if (and (not quote-flag) (not (eq char (downcase char)))) ! (setq found t)))) (setq i (1+ i))) (not found))) --- 1871,1878 ---- (if (and regexp-flag (eq char ?\\)) (setq quote-flag (not quote-flag)) (if (and (not quote-flag) (not (eq char (downcase char)))) ! (setq found t)) ! (setq quote-flag nil))) (setq i (1+ i))) (not found))) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: regexp case sensitivity bug 2002-12-09 20:22 ` Richard Stallman @ 2002-12-09 22:27 ` Dean Herington 2002-12-10 0:45 ` Kim F. Storm 0 siblings, 1 reply; 7+ messages in thread From: Dean Herington @ 2002-12-09 22:27 UTC (permalink / raw) Cc: emacs-devel Richard Stallman wrote: > In Emacs 21.1.1, when I do isearch-forward-regexp with input "\bP", > Emacs matches 'p's case insensitively. > > Does this patch fix it? > > *** isearch.el.~1.215.~ Sun Nov 10 13:13:37 2002 > --- isearch.el Mon Dec 9 11:20:37 2002 > *************** > *** 1871,1877 **** > (if (and regexp-flag (eq char ?\\)) > (setq quote-flag (not quote-flag)) > (if (and (not quote-flag) (not (eq char (downcase char)))) > ! (setq found t)))) > (setq i (1+ i))) > (not found))) > > --- 1871,1878 ---- > (if (and regexp-flag (eq char ?\\)) > (setq quote-flag (not quote-flag)) > (if (and (not quote-flag) (not (eq char (downcase char)))) > ! (setq found t)) > ! (setq quote-flag nil))) > (setq i (1+ i))) > (not found))) That patch fixes the bug I saw. How about the following, which I find simpler? (defun isearch-no-upper-case-p (string regexp-flag) "Return t if there are no upper case chars in STRING. If REGEXP-FLAG is non-nil, disregard letters quoted by `\\' since they have special meaning in a regexp." (let ((i 0) (len (length string)) found) (while (and (not found) (< i len)) (let ((char (aref string i))) (if (and regexp-flag (eq char ?\\)) (setq i (1+ i)) (if (not (eq char (downcase char))) (setq found t)))) (setq i (1+ i))) (not found))) ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: regexp case sensitivity bug 2002-12-09 22:27 ` Dean Herington @ 2002-12-10 0:45 ` Kim F. Storm 2002-12-10 10:52 ` Andreas Schwab 2002-12-10 21:30 ` Richard Stallman 0 siblings, 2 replies; 7+ messages in thread From: Kim F. Storm @ 2002-12-10 0:45 UTC (permalink / raw) Cc: emacs-devel Dean Herington <heringto@cs.unc.edu> writes: > Richard Stallman wrote: > > > In Emacs 21.1.1, when I do isearch-forward-regexp with input "\bP", > > Emacs matches 'p's case insensitively. > > > > Does this patch fix it? > > > > *** isearch.el.~1.215.~ Sun Nov 10 13:13:37 2002 > > --- isearch.el Mon Dec 9 11:20:37 2002 > > *************** > > *** 1871,1877 **** > > (if (and regexp-flag (eq char ?\\)) > > (setq quote-flag (not quote-flag)) > > (if (and (not quote-flag) (not (eq char (downcase char)))) > > ! (setq found t)))) > > (setq i (1+ i))) > > (not found))) > > > > --- 1871,1878 ---- > > (if (and regexp-flag (eq char ?\\)) > > (setq quote-flag (not quote-flag)) > > (if (and (not quote-flag) (not (eq char (downcase char)))) > > ! (setq found t)) > > ! (setq quote-flag nil))) > > (setq i (1+ i))) > > (not found))) > > That patch fixes the bug I saw. > > How about the following, which I find simpler? > > (defun isearch-no-upper-case-p (string regexp-flag) > "Return t if there are no upper case chars in STRING. > If REGEXP-FLAG is non-nil, disregard letters quoted by `\\' > since they have special meaning in a regexp." > (let ((i 0) (len (length string)) found) > (while (and (not found) (< i len)) > (let ((char (aref string i))) > (if (and regexp-flag (eq char ?\\)) > (setq i (1+ i)) > (if (not (eq char (downcase char))) > (setq found t)))) > (setq i (1+ i))) > (not found))) > Or we can use a completely different approach: (defun isearch-no-upper-case-p (string regexp-flag) "..." (let ((case-fold-search nil)) (save-match-data (null (string-match (if regexp-flag "\\(^\\|[^\\]\\)[[:upper:]]" "[[:upper:]]") string))))) -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: regexp case sensitivity bug 2002-12-10 0:45 ` Kim F. Storm @ 2002-12-10 10:52 ` Andreas Schwab 2002-12-10 21:30 ` Richard Stallman 1 sibling, 0 replies; 7+ messages in thread From: Andreas Schwab @ 2002-12-10 10:52 UTC (permalink / raw) Cc: emacs-devel storm@cua.dk (Kim F. Storm) writes: |> Or we can use a completely different approach: |> |> (defun isearch-no-upper-case-p (string regexp-flag) |> "..." |> (let ((case-fold-search nil)) |> (save-match-data |> (null (string-match |> (if regexp-flag "\\(^\\|[^\\]\\)[[:upper:]]" "[[:upper:]]") |> string))))) That needs to check whether there is an even number of \ before the letter, because only then the letter is not part of a special regex matcher. Andreas. -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux AG, Deutschherrnstr. 15-19, D-90429 Nürnberg Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: regexp case sensitivity bug 2002-12-10 0:45 ` Kim F. Storm 2002-12-10 10:52 ` Andreas Schwab @ 2002-12-10 21:30 ` Richard Stallman 1 sibling, 0 replies; 7+ messages in thread From: Richard Stallman @ 2002-12-10 21:30 UTC (permalink / raw) Cc: emacs-devel Or we can use a completely different approach: (defun isearch-no-upper-case-p (string regexp-flag) "..." (let ((case-fold-search nil)) (save-match-data (null (string-match (if regexp-flag "\\(^\\|[^\\]\\)[[:upper:]]" "[[:upper:]]") string))))) That's not correct in the case where there are two \'s in a row (or any even number). ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2002-12-10 21:30 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <mailman.11.1039383012.19936.bug-gnu-emacs@gnu.org> 2002-12-08 21:51 ` regexp case sensitivity bug David Kastrup 2002-12-08 21:08 Dean Herington 2002-12-09 20:22 ` Richard Stallman 2002-12-09 22:27 ` Dean Herington 2002-12-10 0:45 ` Kim F. Storm 2002-12-10 10:52 ` Andreas Schwab 2002-12-10 21:30 ` Richard Stallman
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.