changeset 30590:63a24eff41fe

(hi-lock-unface-buffer): If a menu of regexps is popped up, but the user clicks outside the menu, return an empty regexp (that causes unhighlight-regexp to have no effect).
author Eli Zaretskii <eliz@gnu.org>
date Fri, 04 Aug 2000 11:39:24 +0000
parents f4e7aabae4c0
children 6667ca2d422d
files lisp/hi-lock.el
diffstat 1 files changed, 25 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/hi-lock.el	Fri Aug 04 08:52:04 2000 +0000
+++ b/lisp/hi-lock.el	Fri Aug 04 11:39:24 2000 +0000
@@ -346,25 +346,34 @@
 
 Interactively, prompt for REGEXP.  Buffer-local history of inserted
 regexp's maintained.  Will accept only regexps inserted by hi-lock
-interactive functions. (See `hi-lock-interactive-patterns')
+interactive functions. \(See `hi-lock-interactive-patterns'.\)
 \\<minibuffer-local-must-match-map>Use \\[minibuffer-complete] to complete a partially typed regexp.
-(See info node `Minibuffer History'.)"
+\(See info node `Minibuffer History'.\)"
   (interactive
    (if (vectorp (this-command-keys))
-       (x-popup-menu
-        t
-        (cons
-         `keymap
-         (cons "Select Pattern to Unhighlight"
-               (mapcar (lambda (pattern)
-                         (list (car pattern)
-                               (format
-                                "%s (%s)" (car pattern)
-                                (symbol-name
-                                 (car (cdr (car (cdr (car (cdr pattern))))))))
-                               (cons nil nil)
-                               (car pattern)))
-                       hi-lock-interactive-patterns))))
+       (catch 'snafu
+	 (or
+	  (x-popup-menu
+	   t
+	   (cons
+	    `keymap
+	    (cons "Select Pattern to Unhighlight"
+		  (mapcar (lambda (pattern)
+			    (list (car pattern)
+				  (format
+				   "%s (%s)" (car pattern)
+				   (symbol-name
+				    (car
+				     (cdr (car (cdr (car (cdr pattern))))))))
+				  (cons nil nil)
+				  (car pattern)))
+			  hi-lock-interactive-patterns))))
+	  ;; If the user clicks outside the menu, meaning that they
+	  ;; change their mind, x-popup-menu returns nil, and
+	  ;; interactive signals a wrong number of arguments error.
+	  ;; To prevent that, we return an empty string, which will
+	  ;; effectively disable the rest of the function.
+	  (throw 'snafu '(""))))
      (let ((history-list (mapcar (lambda (p) (car p))
                                  hi-lock-interactive-patterns)))
        (unless hi-lock-interactive-patterns