From: Chong Yidong Date: Wed, 21 Mar 2007 16:18:25 +0000 (+0000) Subject: (viper-non-hook-settings): Handle mouse clicks in describe-key and X-Git-Tag: emacs-pretest-22.0.97~252 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ba5b5659a608c183e63f37707420a8b22bb293a5;p=emacs.git (viper-non-hook-settings): Handle mouse clicks in describe-key and describe-key-briefly advice a little better. --- diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el index ddd37b16cc2..67ec3660c65 100644 --- a/lisp/emulation/viper.el +++ b/lisp/emulation/viper.el @@ -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."