]> git.eshelyaron.com Git - emacs.git/commitdiff
(hi-lock-unface-buffer): If a menu of regexps is
authorEli Zaretskii <eliz@gnu.org>
Fri, 4 Aug 2000 11:39:24 +0000 (11:39 +0000)
committerEli Zaretskii <eliz@gnu.org>
Fri, 4 Aug 2000 11:39:24 +0000 (11:39 +0000)
popped up, but the user clicks outside the menu, return an empty
regexp (that causes unhighlight-regexp to have no effect).

lisp/hi-lock.el

index f5606d7e4454ea4c3ef4948606ff473ca226749c..f2a77b620c771c8f9d49156b79b78a7b9a584db9 100644 (file)
@@ -346,25 +346,34 @@ list maintained for regexps, global history maintained for faces.
 
 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