emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-26 44340b4: Fix "C-h k" in xterm-mouse-mode


From: Eli Zaretskii
Subject: [Emacs-diffs] emacs-26 44340b4: Fix "C-h k" in xterm-mouse-mode
Date: Sat, 11 Nov 2017 04:06:41 -0500 (EST)

branch: emacs-26
commit 44340b475f942cd65788ef9a4e75190a3646c444
Author: Olaf Rogalsky <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    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)
---
 lisp/help.el | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/lisp/help.el b/lisp/help.el
index bc8035d..fbb9fc8 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))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]