* bug#38551: 27.0.50; [ELPA][PATCH] debbugs: bind to RET rather than return
@ 2019-12-09 19:27 Kévin Le Gouguec
2019-12-09 20:36 ` Michael Albinus
0 siblings, 1 reply; 4+ messages in thread
From: Kévin Le Gouguec @ 2019-12-09 19:27 UTC (permalink / raw)
To: 38551
[-- Attachment #1: Type: text/plain, Size: 863 bytes --]
Hello,
debbugs-gnu.el binds debbugs-gnu-select-report and
debbugs-gnu-select-usertag to [return]. Unless I'm mistaken, this
designates only the function key, and terminals do not tell applications
that function keys were pressed. In the case of [return], they only
send RET, i.e. the C-m character.
Concretely, this means that on a TTY, the return key is not bound to
those functions, as RET is bound to newline. Pressing return thus leads
to the following error message:
> command-execute: Buffer is read-only: #<buffer *Emacs Bugs*>
(Also, weirdos like me who actually use control+m instead of the return
key are screwed on graphical sessions too.)
On the other hand, if one binds those functions to (kbd "RET") ≡ "\C-m"
≡ "\r", Emacs automatically translates [return] to RET, and everything
Just Works™.
Suggested patch:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: debbugs-RET.patch --]
[-- Type: text/x-patch, Size: 1026 bytes --]
diff --git a/packages/debbugs/debbugs-gnu.el b/packages/debbugs/debbugs-gnu.el
index 5789d80db..b9d9083e3 100644
--- a/packages/debbugs/debbugs-gnu.el
+++ b/packages/debbugs/debbugs-gnu.el
@@ -987,7 +987,7 @@ Used instead of `tabulated-list-print-entry'."
(let ((map (make-sparse-keymap))
(menu-map (make-sparse-keymap)))
(set-keymap-parent map tabulated-list-mode-map)
- (define-key map [return] #'debbugs-gnu-select-report)
+ (define-key map "\C-m" #'debbugs-gnu-select-report)
(define-key map [mouse-2] #'debbugs-gnu-select-report)
(define-key map "A" #'debbugs-gnu-select-current-bugs)
(define-key map "g" #'debbugs-gnu-rescan)
@@ -2163,7 +2163,7 @@ successfully sent."
(defvar debbugs-gnu-usertags-mode-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent map tabulated-list-mode-map)
- (define-key map [return] #'debbugs-gnu-select-usertag)
+ (define-key map "\C-m" #'debbugs-gnu-select-usertag)
(define-key map [mouse-2] #'debbugs-gnu-select-usertag)
map))
[-- Attachment #3: Type: text/plain, Size: 2690 bytes --]
(I picked "\C-m" out of all possible spellings because AFAICT it's the
one that comes up most often in the Emacs source tree, but maybe it's
not the best possible one.)
Thank you for your time.
References:
- (emacs) Keymaps
> Most modern keyboards have function keys as well as character
> keys. Function keys send input events just as character keys
> do, and keymaps can have bindings for them.
>
> …
>
> On text terminals, typing a function key actually sends the
> computer a sequence of characters; the precise details of the
> sequence depends on the function key and on the terminal type.
- (emacs) Named ASCII Chars
> Emacs can distinguish these two kinds of input if the keyboard
> does. It treats the special keys as function keys named ‘tab’,
> ‘return’, ‘backspace’, ‘linefeed’, ‘escape’, and ‘delete’.
> These function keys translate automatically into the
> corresponding ASCII characters _if_ they have no bindings of
> their own.
>
> If you do not want to distinguish between (for example) <TAB>
> and ‘C-i’, make just one binding, for the ASCII character
> <TAB> (octal code 011). If you do want to distinguish, make one
> binding for this ASCII character, and another for the function
> key ‘tab’.
>
> With an ordinary ASCII terminal, there is no way to distinguish
> between <TAB> and ‘C-i’ (and likewise for other such pairs),
> because the terminal sends the same character in both cases.
- a *scratch* buffer:
> (kbd "RET") ; "^M"
> (kbd "\r") ; "^M"
> (kbd "C-m") ; "^M"
> (kbd "<return>") ; [return]
- on X:
> C-h c ⏎ ; RET (translated from <return>) runs the command newline
- on a TTY:
> C-h c ⏎ ; RET runs the command newline
In GNU Emacs 27.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version 3.24.12, cairo version 1.16.0)
of 2019-12-09 built on my-little-tumbleweed
Repository revision: 51176ee81e8e773d8b6ac06dd153846abee0c0f4
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12006000
System Description: openSUSE Tumbleweed
Configured using:
'configure --with-xwidgets --with-cairo'
Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF
ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS JSON
PDUMPER LCMS2 GMP
Important settings:
value of $LC_CTYPE: en_US.UTF-8
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=local
locale-coding-system: utf-8-unix
^ permalink raw reply related [flat|nested] 4+ messages in thread
* bug#38551: 27.0.50; [ELPA][PATCH] debbugs: bind to RET rather than return
2019-12-09 19:27 bug#38551: 27.0.50; [ELPA][PATCH] debbugs: bind to RET rather than return Kévin Le Gouguec
@ 2019-12-09 20:36 ` Michael Albinus
2019-12-10 6:14 ` Kévin Le Gouguec
0 siblings, 1 reply; 4+ messages in thread
From: Michael Albinus @ 2019-12-09 20:36 UTC (permalink / raw)
To: Kévin Le Gouguec; +Cc: 38551
Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:
> Hello,
Hi Kévin,
> debbugs-gnu.el binds debbugs-gnu-select-report and
> debbugs-gnu-select-usertag to [return]. Unless I'm mistaken, this
> designates only the function key, and terminals do not tell applications
> that function keys were pressed. In the case of [return], they only
> send RET, i.e. the C-m character.
Oops, my bad. It was bound to "\r" previous to debbugs 0.21. I wanted to
change it for better readability, and I've overlooked this trap.
> On the other hand, if one binds those functions to (kbd "RET") ≡ "\C-m"
> ≡ "\r", Emacs automatically translates [return] to RET, and everything
> Just Works™.
I've decided for (kbd "RET"). Committed locally (the remote ELPA git is
down just now).
I will release debbugs 0.22, including this patch, when I have finished
my work on bug#37168, adding threading to debbugs for better performance.
> Thank you for your time.
Best regards, Michael.
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#38551: 27.0.50; [ELPA][PATCH] debbugs: bind to RET rather than return
2019-12-09 20:36 ` Michael Albinus
@ 2019-12-10 6:14 ` Kévin Le Gouguec
2020-02-11 12:11 ` Michael Albinus
0 siblings, 1 reply; 4+ messages in thread
From: Kévin Le Gouguec @ 2019-12-10 6:14 UTC (permalink / raw)
To: Michael Albinus; +Cc: 38551
Michael Albinus <michael.albinus@gmx.de> writes:
> I've decided for (kbd "RET"). Committed locally (the remote ELPA git is
> down just now).
Great! Looking forward to this :)
> I will release debbugs 0.22, including this patch, when I have finished
> my work on bug#37168, adding threading to debbugs for better performance.
And that as well 🙌
Thank you for working on this.
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#38551: 27.0.50; [ELPA][PATCH] debbugs: bind to RET rather than return
2019-12-10 6:14 ` Kévin Le Gouguec
@ 2020-02-11 12:11 ` Michael Albinus
0 siblings, 0 replies; 4+ messages in thread
From: Michael Albinus @ 2020-02-11 12:11 UTC (permalink / raw)
To: Kévin Le Gouguec; +Cc: 38551-done
Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:
Hi Kévin,
>> I will release debbugs 0.22, including this patch, when I have finished
>> my work on bug#37168, adding threading to debbugs for better performance.
>
> And that as well 🙌
Debbugs 0.22 is out, although I didn't find the time yet for
implementing threading. So I close this bug report.
> Thank you for working on this.
Best regards, Michael.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-02-11 12:11 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-09 19:27 bug#38551: 27.0.50; [ELPA][PATCH] debbugs: bind to RET rather than return Kévin Le Gouguec
2019-12-09 20:36 ` Michael Albinus
2019-12-10 6:14 ` Kévin Le Gouguec
2020-02-11 12:11 ` Michael Albinus
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).