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)
This commit is contained in:
Olaf Rogalsky 2017-11-11 11:05:53 +02:00 committed by Eli Zaretskii
parent 05aa6d4a68
commit 44340b475f

View file

@ -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))