[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#51173: 28.0.60; gnus-article-describe-key doesn't work
From: |
Juri Linkov |
Subject: |
bug#51173: 28.0.60; gnus-article-describe-key doesn't work |
Date: |
Fri, 15 Oct 2021 09:49:32 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (x86_64-pc-linux-gnu) |
> But this will still use "the wrong buffer" for mouse clicks, no?
>
> BTW, maybe a cleaner fix would be as follows:
> - Add a `buffer` argument to `describe-key(-briefly)`.
> - Pass that argument from `gnus-article-describe-key`.
> And to get the behavior that Juri just pushed that `buffer` argument
> would default to (if (consp event) (window-buffer (posn-window
> (event-start event))) (current-buffere)).
Maybe something like this (but currently I have no idea how to test all cases):
diff --git a/lisp/help.el b/lisp/help.el
index 9666ef9805..08a293c3dc 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -731,7 +731,7 @@ help--filter-info-list
;; If nothing left, then keep one (the last one).
(last info-list)))
-(defun describe-key-briefly (&optional key-list insert untranslated)
+(defun describe-key-briefly (&optional key-list insert buffer)
"Print the name of the functions KEY-LIST invokes.
KEY-LIST is a list of pairs (SEQ . RAW-SEQ) of key sequences, where
RAW-SEQ is the untranslated form of the key sequence SEQ.
@@ -739,8 +739,10 @@ describe-key-briefly
While reading KEY-LIST interactively, this command temporarily enables
menu items or tool-bar buttons that are disabled to allow getting help
-on them."
- (declare (advertised-calling-convention (key-list &optional insert) "27.1"))
+on them.
+
+BUFFER is the buffer in which to lookup those keys; it defaults to the
+current buffer."
(interactive
;; Ignore mouse movement events because it's too easy to miss the
;; message while moving the mouse.
@@ -748,15 +750,13 @@ describe-key-briefly
`(,key-list ,current-prefix-arg)))
(when (arrayp key-list)
;; Old calling convention, changed
- (setq key-list (list (cons key-list
- (if (numberp untranslated)
- (this-single-command-raw-keys)
- untranslated)))))
- (let* ((info-list (mapcar (lambda (kr)
- (help--analyze-key (car kr) (cdr kr)))
- key-list))
- (msg (mapconcat #'car (help--filter-info-list info-list 1) "\n")))
- (if insert (insert msg) (message "%s" msg))))
+ (setq key-list (list (cons key-list nil))))
+ (with-current-buffer (or buffer (current-buffer))
+ (let* ((info-list (mapcar (lambda (kr)
+ (help--analyze-key (car kr) (cdr kr)))
+ key-list))
+ (msg (mapconcat #'car (help--filter-info-list info-list 1) "\n")))
+ (if insert (insert msg) (message "%s" msg)))))
(defun help--key-binding-keymap (key &optional accept-default no-remap
position)
"Return a keymap holding a binding for KEY within current keymaps.
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index bb466b9400..bbb452279a 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -6865,8 +6865,14 @@ gnus-article-describe-key
unread-command-events))
(let ((cursor-in-echo-area t)
gnus-pick-mode)
- (describe-key (read-key-sequence nil t))))
- (describe-key key)))
+ (let* ((key (read-key-sequence nil t))
+ (buffer (if (consp key)
+ (window-buffer (posn-window (event-start key)))
+ (current-buffer))))
+ (describe-key key buffer))))
+ (describe-key key (if (consp key)
+ (window-buffer (posn-window (event-start key)))
+ (current-buffer)))))
(defun gnus-article-describe-key-briefly (key &optional insert)
"Display documentation of the function invoked by KEY.
@@ -6888,8 +6894,15 @@ gnus-article-describe-key-briefly
unread-command-events))
(let ((cursor-in-echo-area t)
gnus-pick-mode)
- (describe-key-briefly (read-key-sequence nil t) insert)))
- (describe-key-briefly key insert)))
+ (let ((key (read-key-sequence nil t))
+ (buffer (if (consp key)
+ (window-buffer (posn-window (event-start key)))
+ (current-buffer))))
+ (describe-key-briefly key insert buffer))))
+ (describe-key-briefly key insert
+ (if (consp key)
+ (window-buffer (posn-window (event-start key)))
+ (current-buffer)))))
;;`gnus-agent-mode' in gnus-agent.el will define it.
(defvar gnus-agent-summary-mode)
- bug#51173: 28.0.60; gnus-article-describe-key doesn't work, Katsumi Yamaoka, 2021/10/12
- bug#51173: 28.0.60; gnus-article-describe-key doesn't work, Lars Ingebrigtsen, 2021/10/13
- bug#51173: 28.0.60; gnus-article-describe-key doesn't work,
Juri Linkov <=
- bug#51173: 28.0.60; gnus-article-describe-key doesn't work, Stefan Monnier, 2021/10/15
- bug#51173: 28.0.60; gnus-article-describe-key doesn't work, Juri Linkov, 2021/10/16
- bug#51173: 28.0.60; gnus-article-describe-key doesn't work, Stefan Monnier, 2021/10/16
- bug#51173: 28.0.60; gnus-article-describe-key doesn't work, Juri Linkov, 2021/10/18
- bug#51173: 28.0.60; gnus-article-describe-key doesn't work, Juri Linkov, 2021/10/20
- bug#51173: 28.0.60; gnus-article-describe-key doesn't work, Stefan Monnier, 2021/10/21