]> git.eshelyaron.com Git - emacs.git/commitdiff
(viper-non-hook-settings): Handle mouse clicks in describe-key and
authorChong Yidong <cyd@stupidchicken.com>
Wed, 21 Mar 2007 16:18:25 +0000 (16:18 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Wed, 21 Mar 2007 16:18:25 +0000 (16:18 +0000)
describe-key-briefly advice a little better.

lisp/emulation/viper.el

index ddd37b16cc2ebaea5ed2cef51f3590963cc0fa85..67ec3660c65427eb0b031efb6aec11c7d2070122 100644 (file)
@@ -1027,14 +1027,46 @@ It also can't undo some Viper settings."
 
   (defadvice describe-key (before viper-describe-key-ad protect activate)
     "Force to read key via `viper-read-key-sequence'."
-    (interactive (list (viper-read-key-sequence "Describe key: "))
-                ))
+    (interactive (let (key)
+                  (setq key (viper-read-key-sequence
+                             "Describe key (or click or menu item): "))
+                  (list key
+                        (prefix-numeric-value current-prefix-arg)
+                        ;; If KEY is a down-event, read also the
+                        ;; corresponding up-event.
+                        (and (vectorp key)
+                             (let ((last-idx (1- (length key))))
+                               (and (eventp (aref key last-idx))
+                                    (memq 'down (event-modifiers
+                                                 (aref key last-idx)))))
+                             (or (and (eventp (aref key 0))
+                                      (memq 'down (event-modifiers
+                                                   (aref key 0)))
+                                      ;; For the C-down-mouse-2 popup
+                                      ;; menu, there is no subsequent up-event.
+                                      (= (length key) 1))
+                                 (and (> (length key) 1)
+                                      (eventp (aref key 1))
+                                      (memq 'down (event-modifiers (aref key 1)))))
+                             (read-event))))))
 
   (defadvice describe-key-briefly
     (before viper-describe-key-briefly-ad protect activate)
     "Force to read key via `viper-read-key-sequence'."
-    (interactive (list (viper-read-key-sequence "Describe key briefly: "))))
-
+    (interactive (let (key)
+                  (setq key (viper-read-key-sequence
+                             "Describe key (or click or menu item): "))
+                  ;; If KEY is a down-event, read and discard the
+                  ;; corresponding up-event.
+                  (and (vectorp key)
+                       (let ((last-idx (1- (length key))))
+                         (and (eventp (aref key last-idx))
+                              (memq 'down (event-modifiers (aref key last-idx)))))
+                       (read-event))
+                  (list key
+                        (if current-prefix-arg
+                            (prefix-numeric-value current-prefix-arg))
+                        1))))
 
   (defadvice find-file (before viper-add-suffix-advice activate)
     "Use `read-file-name' for reading arguments."