From: Olaf Rogalsky Date: Sat, 11 Nov 2017 09:05:53 +0000 (+0200) Subject: Fix "C-h k" in xterm-mouse-mode X-Git-Tag: emacs-26.0.91~334 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=44340b475f942cd65788ef9a4e75190a3646c444;p=emacs.git Fix "C-h k" in xterm-mouse-mode * lisp/help.el (help-read-key-sequence): Support "C-h k" for xterm-mouse-mode by calling read-key-sequence-vector instead of read-event. (Bug#29150) --- diff --git a/lisp/help.el b/lisp/help.el index bc8035db0ea..fbb9fc8cbe6 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -717,7 +717,7 @@ with `mouse-movement' events." (cursor-in-echo-area t) saved-yank-menu) (unwind-protect - (let (key) + (let (key down-ev) ;; If yank-menu is empty, populate it temporarily, so that ;; "Select and Paste" menu can generate a complete event. (when (null (cdr yank-menu)) @@ -743,17 +743,21 @@ Describe the following key, mouse click, or menu item: ")) (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))) + (or (and (eventp (setq down-ev (aref key 0))) + (memq 'down (event-modifiers down-ev)) ;; However, for the C-down-mouse-2 popup ;; menu, there is no subsequent up-event. In ;; this case, the up-event is the next ;; element in the supplied vector. (= (length key) 1)) (and (> (length key) 1) - (eventp (aref key 1)) - (memq 'down (event-modifiers (aref key 1))))) - (read-event)))) + (eventp (setq down-ev (aref key 1))) + (memq 'down (event-modifiers down-ev)))) + (if (and (terminal-parameter nil 'xterm-mouse-mode) + (equal (terminal-parameter nil 'xterm-mouse-last-down) + down-ev)) + (aref (read-key-sequence-vector nil) 0) + (read-event))))) ;; Put yank-menu back as it was, if we changed it. (when saved-yank-menu (setq yank-menu (copy-sequence saved-yank-menu))