GNU bug report logs -
#62157
More control over the mouse behaviour in eglot
Previous Next
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 62157 in the body.
You can then email your comments to 62157 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#62157
; Package
emacs
.
(Mon, 13 Mar 2023 07:22:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Pedro Andres Aranda Gutierrez <paaguti <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Mon, 13 Mar 2023 07:22:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
When I edit Python with eglot, mouse-1-down opens the eglot code
actions menu when over a place where there is a possible action. I'd
like to be able to define the mouse event to open the menu myself. In
the same line, I'd like to control the items on the code actions mouse
menu.
--
Fragen sind nicht da um beantwortet zu werden,
Fragen sind da um gestellt zu werden
Georg Kreisler
Headaches with a Juju log:
unit-basic-16: 09:17:36 WARNING juju.worker.uniter.operation we should
run a leader-deposed hook here, but we can't yet
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#62157
; Package
emacs
.
(Mon, 13 Mar 2023 15:48:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 62157 <at> debbugs.gnu.org (full text, mbox):
On Mon, Mar 13, 2023 at 7:22 AM Pedro Andres Aranda Gutierrez
<paaguti <at> gmail.com> wrote:
>
> When I edit Python with eglot, mouse-1-down opens the eglot code
> actions menu when over a place where there is a possible action. I'd
> like to be able to define the mouse event to open the menu myself. In
> the same line, I'd like to control the items on the code actions mouse
> menu.
These are two separate requests. I'll focus on the first one,
as the second one is obscure. It probablyneeds its own separate
issue describing a reproducible observable example of what "item
control" is desired.
So, having mouse-1 for the binding to get code actions in diagnostics
is indeed not good, because it prevents point from being put on
a certain character using mouse-1, which should really nothappen.
Currently, to configure it, the user must place a certain property on
the symbols eglot-note eglot-warning eglot-error, which is not
easy at all.
Can you try this patch? It also changes the default binding to
[mouse-2].
diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index 2491c86ea5b..256b4cd93ba 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -2084,15 +2084,18 @@ eglot--mode-line-format
(defalias 'eglot--make-diag 'flymake-make-diagnostic)
(defalias 'eglot--diag-data 'flymake-diagnostic-data)
+(defvar eglot-diagnostics-map
+ "Map active in Eglot-backed Flymake diagnostic overlays."
+ (let ((map (make-sparse-keymap)))
+ (define-key map [mouse-1] 'eglot-code-actions-at-mouse)
+ map))
+
(cl-loop for i from 1
for type in '(eglot-note eglot-warning eglot-error)
do (put type 'flymake-overlay-control
`((mouse-face . highlight)
(priority . ,(+ 50 i))
- (keymap . ,(let ((map (make-sparse-keymap)))
- (define-key map [mouse-1]
- (eglot--mouse-call
'eglot-code-actions))
- map)))))
+ (keymap . ,eglot-diagnostics-map))))
;;; Protocol implementation (Requests, notifications, etc)
@@ -3335,6 +3338,9 @@ eglot-code-actions
(eglot--read-execute-code-action actions server action-kind)
actions)))
+(defalias 'eglot-code-actions-at-mouse (eglot--mouse-call 'eglot-code-actions)
+ "Like `eglot-code-actions', but intended for mouse events.")
+
(defun eglot--read-execute-code-action (actions server &optional action-kind)
"Helper for interactive calls to `eglot-code-actions'."
(let* ((menu-items
João
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#62157
; Package
emacs
.
(Mon, 13 Mar 2023 16:00:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 62157 <at> debbugs.gnu.org (full text, mbox):
>>>>> On Mon, 13 Mar 2023 15:47:38 +0000, João Távora <joaotavora <at> gmail.com> said:
João> Can you try this patch? It also changes the default binding to
João> [mouse-2].
I think you meant 'mouse-2', but you typed 'mouse-1' in the patch.
João> diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
João> index 2491c86ea5b..256b4cd93ba 100644
João> --- a/lisp/progmodes/eglot.el
João> +++ b/lisp/progmodes/eglot.el
João> @@ -2084,15 +2084,18 @@ eglot--mode-line-format
João> (defalias 'eglot--make-diag 'flymake-make-diagnostic)
João> (defalias 'eglot--diag-data 'flymake-diagnostic-data)
João> +(defvar eglot-diagnostics-map
João> + "Map active in Eglot-backed Flymake diagnostic overlays."
João> + (let ((map (make-sparse-keymap)))
João> + (define-key map [mouse-1] 'eglot-code-actions-at-mouse)
João> + map))
João> +
Iʼm guessing eglot is not yet using `defvar-keymap' because of
backwards compatibility?
In any case, this doesnʼt make the binding easily changable, you have
to manually unset/set the `eglot-code-actions-at-mouse' binding. My
attempt to fix this descended into a circular dependency spiral
between the keymap and the key defcustom, so Iʼm hoping you know a
good way to do it :-)
Robert
--
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#62157
; Package
emacs
.
(Mon, 13 Mar 2023 16:11:01 GMT)
Full text and
rfc822 format available.
Message #14 received at 62157 <at> debbugs.gnu.org (full text, mbox):
On Mon, Mar 13, 2023 at 3:59 PM Robert Pluim <rpluim <at> gmail.com> wrote:
>
> >>>>> On Mon, 13 Mar 2023 15:47:38 +0000, João Távora <joaotavora <at> gmail.com> said:
> João> Can you try this patch? It also changes the default binding to
> João> [mouse-2].
>
> I think you meant 'mouse-2', but you typed 'mouse-1' in the patch.
Yes, sorry.
> João> diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
> João> index 2491c86ea5b..256b4cd93ba 100644
> João> --- a/lisp/progmodes/eglot.el
> João> +++ b/lisp/progmodes/eglot.el
> João> @@ -2084,15 +2084,18 @@ eglot--mode-line-format
> João> (defalias 'eglot--make-diag 'flymake-make-diagnostic)
> João> (defalias 'eglot--diag-data 'flymake-diagnostic-data)
>
> João> +(defvar eglot-diagnostics-map
> João> + "Map active in Eglot-backed Flymake diagnostic overlays."
> João> + (let ((map (make-sparse-keymap)))
> João> + (define-key map [mouse-1] 'eglot-code-actions-at-mouse)
> João> + map))
> João> +
>
> Iʼm guessing eglot is not yet using `defvar-keymap' because of
> backwards compatibility?
I'd think so yes.
> In any case, this doesnʼt make the binding easily changable, you have
> to manually unset/set the `eglot-code-actions-at-mouse' binding. My
> attempt to fix this descended into a circular dependency spiral
> between the keymap and the key defcustom, so Iʼm hoping you know a
> good way to do it :-)
A key defcustom isn't needed IMO. You may even want multiple
bindings there. 99% percent of users will like the default
bindings, the others can
(define-key eglot-diagnostics-map [mouse-2] nil)
or
(unbind-key [mouse-1] eglot-diagnostics-map)
which I don't know if exists in older Emacsen.
João
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#62157
; Package
emacs
.
(Mon, 13 Mar 2023 16:38:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 62157 <at> debbugs.gnu.org (full text, mbox):
>>>>> On Mon, 13 Mar 2023 16:09:59 +0000, João Távora <joaotavora <at> gmail.com> said:
>> In any case, this doesnʼt make the binding easily changable, you have
>> to manually unset/set the `eglot-code-actions-at-mouse' binding. My
>> attempt to fix this descended into a circular dependency spiral
>> between the keymap and the key defcustom, so Iʼm hoping you know a
>> good way to do it :-)
João> A key defcustom isn't needed IMO. You may even want multiple
João> bindings there. 99% percent of users will like the default
João> bindings, the others can
OK. We can always add it if people ask for it.
João> (define-key eglot-diagnostics-map [mouse-2] nil)
João> or
João> (unbind-key [mouse-1] eglot-diagnostics-map)
João> which I don't know if exists in older Emacsen.
I think itʼs an emacs-29 thing. Although it does look kind of
redundant with `keymap-unset' (which is also new in emacs-29) :-)
Robert
--
Reply sent
to
Stefan Kangas <stefankangas <at> gmail.com>
:
You have taken responsibility.
(Tue, 12 Sep 2023 00:23:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Pedro Andres Aranda Gutierrez <paaguti <at> gmail.com>
:
bug acknowledged by developer.
(Tue, 12 Sep 2023 00:23:02 GMT)
Full text and
rfc822 format available.
Message #22 received at 62157-done <at> debbugs.gnu.org (full text, mbox):
João Távora <joaotavora <at> gmail.com> writes:
> On Mon, Mar 13, 2023 at 7:22 AM Pedro Andres Aranda Gutierrez
> <paaguti <at> gmail.com> wrote:
>>
>> When I edit Python with eglot, mouse-1-down opens the eglot code
>> actions menu when over a place where there is a possible action. I'd
>> like to be able to define the mouse event to open the menu myself. In
>> the same line, I'd like to control the items on the code actions mouse
>> menu.
>
> These are two separate requests. I'll focus on the first one,
> as the second one is obscure. It probablyneeds its own separate
> issue describing a reproducible observable example of what "item
> control" is desired.
>
> So, having mouse-1 for the binding to get code actions in diagnostics
> is indeed not good, because it prevents point from being put on
> a certain character using mouse-1, which should really nothappen.
>
> Currently, to configure it, the user must place a certain property on
> the symbols eglot-note eglot-warning eglot-error, which is not
> easy at all.
>
> Can you try this patch? It also changes the default binding to
> [mouse-2].
>
> diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
> index 2491c86ea5b..256b4cd93ba 100644
> --- a/lisp/progmodes/eglot.el
> +++ b/lisp/progmodes/eglot.el
> @@ -2084,15 +2084,18 @@ eglot--mode-line-format
> (defalias 'eglot--make-diag 'flymake-make-diagnostic)
> (defalias 'eglot--diag-data 'flymake-diagnostic-data)
>
> +(defvar eglot-diagnostics-map
> + "Map active in Eglot-backed Flymake diagnostic overlays."
> + (let ((map (make-sparse-keymap)))
> + (define-key map [mouse-1] 'eglot-code-actions-at-mouse)
> + map))
> +
> (cl-loop for i from 1
> for type in '(eglot-note eglot-warning eglot-error)
> do (put type 'flymake-overlay-control
> `((mouse-face . highlight)
> (priority . ,(+ 50 i))
> - (keymap . ,(let ((map (make-sparse-keymap)))
> - (define-key map [mouse-1]
> - (eglot--mouse-call
> 'eglot-code-actions))
> - map)))))
> + (keymap . ,eglot-diagnostics-map))))
>
>
> ;;; Protocol implementation (Requests, notifications, etc)
> @@ -3335,6 +3338,9 @@ eglot-code-actions
> (eglot--read-execute-code-action actions server action-kind)
> actions)))
>
> +(defalias 'eglot-code-actions-at-mouse (eglot--mouse-call 'eglot-code-actions)
> + "Like `eglot-code-actions', but intended for mouse events.")
> +
> (defun eglot--read-execute-code-action (actions server &optional action-kind)
> "Helper for interactive calls to `eglot-code-actions'."
> (let* ((menu-items
>
> João
It seems like the fix was the patch above, which IIUC has been
installed. I'm therefore closing this bug report.
If this conclusion is incorrect and this is still an issue, please reply
to this email (use "Reply to all" in your email client) and we can
reopen the bug report.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#62157
; Package
emacs
.
(Tue, 12 Sep 2023 05:24:01 GMT)
Full text and
rfc822 format available.
Message #25 received at 62157-done <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Just to confirm that the issue was solved (at least for me)
/PA
> El 12 sept 2023, a las 2:22, Stefan Kangas <stefankangas <at> gmail.com> escribió:
>
> João Távora <joaotavora <at> gmail.com> writes:
>
>> On Mon, Mar 13, 2023 at 7:22 AM Pedro Andres Aranda Gutierrez
>> <paaguti <at> gmail.com> wrote:
>>>
>>> When I edit Python with eglot, mouse-1-down opens the eglot code
>>> actions menu when over a place where there is a possible action. I'd
>>> like to be able to define the mouse event to open the menu myself. In
>>> the same line, I'd like to control the items on the code actions mouse
>>> menu.
>>
>> These are two separate requests. I'll focus on the first one,
>> as the second one is obscure. It probablyneeds its own separate
>> issue describing a reproducible observable example of what "item
>> control" is desired.
>>
>> So, having mouse-1 for the binding to get code actions in diagnostics
>> is indeed not good, because it prevents point from being put on
>> a certain character using mouse-1, which should really nothappen.
>>
>> Currently, to configure it, the user must place a certain property on
>> the symbols eglot-note eglot-warning eglot-error, which is not
>> easy at all.
>>
>> Can you try this patch? It also changes the default binding to
>> [mouse-2].
>>
>> diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
>> index 2491c86ea5b..256b4cd93ba 100644
>> --- a/lisp/progmodes/eglot.el
>> +++ b/lisp/progmodes/eglot.el
>> @@ -2084,15 +2084,18 @@ eglot--mode-line-format
>> (defalias 'eglot--make-diag 'flymake-make-diagnostic)
>> (defalias 'eglot--diag-data 'flymake-diagnostic-data)
>>
>> +(defvar eglot-diagnostics-map
>> + "Map active in Eglot-backed Flymake diagnostic overlays."
>> + (let ((map (make-sparse-keymap)))
>> + (define-key map [mouse-1] 'eglot-code-actions-at-mouse)
>> + map))
>> +
>> (cl-loop for i from 1
>> for type in '(eglot-note eglot-warning eglot-error)
>> do (put type 'flymake-overlay-control
>> `((mouse-face . highlight)
>> (priority . ,(+ 50 i))
>> - (keymap . ,(let ((map (make-sparse-keymap)))
>> - (define-key map [mouse-1]
>> - (eglot--mouse-call
>> 'eglot-code-actions))
>> - map)))))
>> + (keymap . ,eglot-diagnostics-map))))
>>
>>
>> ;;; Protocol implementation (Requests, notifications, etc)
>> @@ -3335,6 +3338,9 @@ eglot-code-actions
>> (eglot--read-execute-code-action actions server action-kind)
>> actions)))
>>
>> +(defalias 'eglot-code-actions-at-mouse (eglot--mouse-call 'eglot-code-actions)
>> + "Like `eglot-code-actions', but intended for mouse events.")
>> +
>> (defun eglot--read-execute-code-action (actions server &optional action-kind)
>> "Helper for interactive calls to `eglot-code-actions'."
>> (let* ((menu-items
>>
>> João
>
> It seems like the fix was the patch above, which IIUC has been
> installed. I'm therefore closing this bug report.
>
> If this conclusion is incorrect and this is still an issue, please reply
> to this email (use "Reply to all" in your email client) and we can
> reopen the bug report.
[smime.p7s (application/pkcs7-signature, attachment)]
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#62157
; Package
emacs
.
(Tue, 12 Sep 2023 07:06:02 GMT)
Full text and
rfc822 format available.
Message #28 received at 62157-done <at> debbugs.gnu.org (full text, mbox):
On Tue, Sep 12, 2023 at 1:22 AM Stefan Kangas <stefankangas <at> gmail.com> wrote:
> It seems like the fix was the patch above, which IIUC has been
> installed. I'm therefore closing this bug report.
>
> If this conclusion is incorrect and this is still an issue, please reply
> to this email (use "Reply to all" in your email client) and we can
> reopen the bug report.
The conclusion is quite correct, and I earlier meant to close the bug,
but due to typical incompetence when copy-pasting in my brain
sent mail to 61257-done <at> debbugs.gnu.org instead. So maybe check
if that other bug hasn't been closed in error :-)
João
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#62157
; Package
emacs
.
(Wed, 13 Sep 2023 16:13:03 GMT)
Full text and
rfc822 format available.
Message #31 received at 62157-done <at> debbugs.gnu.org (full text, mbox):
João Távora <joaotavora <at> gmail.com> writes:
> The conclusion is quite correct, and I earlier meant to close the bug,
> but due to typical incompetence when copy-pasting in my brain
> sent mail to 61257-done <at> debbugs.gnu.org instead. So maybe check
> if that other bug hasn't been closed in error :-)
I took a look and that bug seems to be fine. It belongs to guix-patches.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Thu, 12 Oct 2023 11:24:19 GMT)
Full text and
rfc822 format available.
This bug report was last modified 1 year and 211 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.