* isearch.el:
authorBastien Guerry <bzg@altern.org>
Tue, 12 Feb 2008 00:50:44 +0000 (00:50 +0000)
committerBastien Guerry <bzg@altern.org>
Tue, 12 Feb 2008 00:50:44 +0000 (00:50 +0000)
(isearch-fail): New face.
(isearch-message): Highlight failure part of input.

lisp/ChangeLog
lisp/isearch.el

index 7bacad7..8a88010 100644 (file)
@@ -1,3 +1,9 @@
+2008-02-11 Drew Adams  <drew.adams@oracle.com>
+
+       * isearch.el:
+       (isearch-fail): New face.
+       (isearch-message): Highlight failure part of input.
+
 2008-02-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * ibuffer.el (ibuffer-header-line-format): New var.
@@ -49,6 +55,7 @@
 
        * calendar/time-date.el (emacs-uptime): New function.
 
+>>>>>>> 1.12767
 2008-02-10  Bastien Guerry  <bzg@altern.org>
 
        * mail/rmail.el (rmail-nonignored-headers): Allow to be nil.
index 5937498..2ede113 100644 (file)
@@ -231,6 +231,10 @@ Default value, nil, means edit the string instead."
   :group 'basic-faces)
 (defvar isearch 'isearch)
 
+(defface isearch-fail '((t (:foreground "Black" :background "Plum")))
+  "Face for highlighting failed part in Isearch echo-area message."
+  :group 'isearch)
+
 (defcustom isearch-lazy-highlight t
   "*Controls the lazy-highlighting during incremental search.
 When non-nil, all text in the buffer matching the current search
@@ -1955,21 +1959,22 @@ If there is no completion possible, say so and continue searching."
 (defun isearch-message (&optional c-q-hack ellipsis)
   ;; Generate and print the message string.
   (let ((cursor-in-echo-area ellipsis)
-       (m (concat
+          (cmds isearch-cmds)
+          succ-msg m)
+      (while (not (isearch-success-state (car cmds))) (pop cmds))
+      (setq succ-msg (and cmds (isearch-message-state (car cmds))))
+      (setq m (concat
            (isearch-message-prefix c-q-hack ellipsis isearch-nonincremental)
-           (if (and (not isearch-success)
-                     (string-match " +$" isearch-message))
-                (concat
-                 (substring isearch-message 0 (match-beginning 0))
-                 (propertize (substring isearch-message (match-beginning 0))
-                             'face 'trailing-whitespace))
-              isearch-message)
-           (isearch-message-suffix c-q-hack ellipsis)
-           )))
-    (if c-q-hack
-       m
-      (let ((message-log-max nil))
-       (message "%s" m)))))
+               succ-msg
+               (and (not isearch-success)
+                    (string-match (regexp-quote succ-msg) isearch-message)
+                    (not (string= succ-msg isearch-message))
+                    (propertize (substring isearch-message (match-end 0))
+                                'face 'isearch-fail))))
+      (when (and (not isearch-success) (string-match " +$" m))
+        (put-text-property (match-beginning 0) (length m) 'face 'trailing-whitespace m))
+      (setq m (concat m (isearch-message-suffix c-q-hack ellipsis)))
+      (if c-q-hack m (let ((message-log-max nil)) (message "%s" m)))))
 
 (defun isearch-message-prefix (&optional c-q-hack ellipsis nonincremental)
   ;; If about to search, and previous search regexp was invalid,