From c5f847b6b3c1733731e079c3adaca0c30ed69522 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 17 Jan 2007 13:20:47 +0000 Subject: [PATCH] (isearch-no-upper-case-p): Look for [:upper:] as well. --- lisp/ChangeLog | 4 ++++ lisp/isearch.el | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index db05c6b76e8..517dc9dd962 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2007-01-17 Stefan Monnier + + * isearch.el (isearch-no-upper-case-p): Look for [:upper:] as well. + 2007-01-16 martin rudalics * textmodes/ispell.el (ispell-dictionary-alist-3): Replace "---" diff --git a/lisp/isearch.el b/lisp/isearch.el index ca569eeff16..28d309f88c4 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -1,7 +1,7 @@ ;;; isearch.el --- incremental search minor mode ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, -;; 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +;; 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. ;; Author: Daniel LaLiberte ;; Maintainer: FSF @@ -2235,7 +2235,18 @@ since they have special meaning in a regexp." (setq found t)) (setq quote-flag nil))) (setq i (1+ i))) - (not found))) + (not (or found + ;; Even if there's no uppercase char, we want to detect the use + ;; of [:upper:] or [:lower:] char-class, which indicates + ;; clearly that the user cares about case distinction. + (and regexp-flag (string-match "\\[:\\(upp\\|low\\)er:]" string) + (condition-case err + (progn + (string-match (substring string 0 (match-beginning 0)) + "") + nil) + (invalid-regexp + (equal "Unmatched [ or [^" (cadr err))))))))) ;; Portability functions to support various Emacs versions.