From: Jorge Javier Araya Navarro <jorge@esavara.cr>
To: emacs-devel@gnu.org
Subject: Re: PROPOSAL: Repurpose one key and reserve it for third-party packages
Date: Mon, 08 Feb 2021 02:57:53 +0000 [thread overview]
Message-ID: <x7YeXNhF3jggGEAnGMOQvP9pQbLE2ZwYtVSyHcVY4pEoxu2174zo0diI6U567cMVskZYOtNzGCoyKpNnLK1MWR9FWOncsRXaJPzFvhKHwqA=@esavara.cr> (raw)
In-Reply-To: <7ef75c33936136eb3a20@heytings.org>
I unbound C-z in my config and use it for undo-fu (C-S-z for redo)
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
El domingo, 7 de febrero de 2021 a las 16:05, Gregory Heytings <gregory@heytings.org> escribió:
> =Proposal=
>
> It is proposed to repurpose one key, and to reserve it in the key binding
>
> conventions for third-party packages. The keys that could be reserved for
>
> that purpose are:
>
> Option 1. C-z, with a single exception: "C-z C-z" would be bound to
>
> "suspend-frame"
>
> Option 2. C-z and M-z, with two exceptions: "C-z C-z" would be bound to
>
> "suspend-frame", and "M-z M-z" to "zap-to-char"
>
> Option 3. C-o, with a single exception: "C-o C-o" would be bound to
>
> "open-line"
>
> Option 4. C-o and M-o, with two exceptions: "C-o C-o" would be bound to
>
> "open-line", and "M-o M-o" to "facemenu-keymap"
>
> =Rationale=
>
> The current key binding conventions (see `(elisp) Key Binding
>
> Conventions') reserve keys for users, for major modes and for minor modes,
>
> but not for third-party packages [1].
>
> When such packages need to bind a command to a key, they can (1) either
>
> suggest users to bind it to a key reserved for users (for example,
>
> org-mode suggests to globally bind "C-c c" to org-capture), or (2) bind it
>
> to a key currently unused by Emacs (for example, Magit binds "C-x g" to
>
> magit-status in buffers visiting a file in a Git repository).
>
> Neither of these solutions are optimal: (1) requires an explicit
>
> configuration by the user, something which might confuse newcomers, and
>
> which other users might not want to do because they already use the keys
>
> reserved for users for other purposes, and (2) might conflict with the
>
> evolution of Emacs when one or more commands are bound to a yet unused
>
> key.
>
> Reserving one key for third-party packages solves the above problems:
>
> third-party packages can automatically bind a few keys in that reserved
>
> area, without conflicting with keys reserved for users and without
>
> conflicting with future Emacs evolutions.
>
> =Limit=
>
> Conflicts are still possible, when two or more packages bind the same
>
> keys. These are, however, conflicts between packages, not between a
>
> package and Emacs, or between a package and users' personal
>
> configurations.
>
> Such conflicts are also less likely for typical users, who install a few
>
> packages each binding a few keys.
>
> Finally, such conflicts can be dealt with without confusing users too
>
> much: a package could automatically choose fallback key bindings when the
>
> preferred ones are already used by another package, and/or issue a warning
>
> to the user that they need to bind its commands manually.
>
> =Note=
>
> [1] These conventions were written 25 years ago, at a time when there were
>
> far fewer third-party packages, and have not changed substantially since
>
> them.
next prev parent reply other threads:[~2021-02-08 2:57 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-07 22:05 PROPOSAL: Repurpose one key and reserve it for third-party packages Gregory Heytings
2021-02-08 0:13 ` Ergus
2021-02-08 2:57 ` Jorge Javier Araya Navarro [this message]
2021-02-08 3:46 ` Richard Stallman
2021-02-08 7:20 ` Stefan Kangas
2021-02-08 14:58 ` Lars Ingebrigtsen
2021-02-08 21:00 ` Gregory Heytings
2021-02-08 21:33 ` Stefan Monnier
2021-02-09 8:13 ` Lars Ingebrigtsen
2021-02-09 16:54 ` Sean Whitton
2021-02-09 17:13 ` Lars Ingebrigtsen
2021-02-09 17:43 ` Eli Zaretskii
2021-02-09 21:21 ` Sean Whitton
2021-02-10 21:43 ` Bindings for setting faces (was: PROPOSAL: Repurpose one key and reserve it for third-party packages) Kévin Le Gouguec
2021-02-09 18:37 ` PROPOSAL: Repurpose one key and reserve it for third-party packages Stefan Monnier
2021-02-08 22:45 ` Stefan Kangas
2021-02-08 15:45 ` Thibaut Verron
2021-02-08 23:01 ` Stefan Kangas
2021-02-09 3:20 ` [External] : " Drew Adams
2021-02-09 9:13 ` Simen Heggestøyl
2021-02-09 9:30 ` Juri Linkov
2021-02-09 13:01 ` Gregory Heytings
2021-02-08 21:00 ` Gregory Heytings
2021-02-09 6:03 ` Richard Stallman
2021-02-08 12:36 ` Alan Mackenzie
2021-02-08 21:00 ` Gregory Heytings
2021-02-08 4:52 ` Robin Tarsiger
2021-02-08 8:41 ` Thibaut Verron
2021-02-08 17:07 ` Robin Tarsiger
2021-02-11 12:59 ` Arthur Miller
2021-02-08 21:00 ` Gregory Heytings
2021-02-09 7:42 ` Yuri Khan
2021-02-09 8:23 ` Gregory Heytings
2021-02-08 23:14 ` Stefan Monnier
2021-02-09 8:23 ` Gregory Heytings
2021-02-08 12:42 ` Augusto Stoffel
2021-02-08 21:00 ` Gregory Heytings
2021-02-08 14:54 ` Dmitry Gutov
2021-02-08 21:00 ` Gregory Heytings
2021-02-08 17:59 ` Sean Whitton
2021-02-08 22:40 ` Eric Abrahamsen
2021-02-09 16:45 ` Sean Whitton
2021-02-10 5:28 ` Richard Stallman
2021-02-10 9:29 ` Thibaut Verron
2021-02-11 13:37 ` Richard Stallman
2021-02-11 13:52 ` Thibaut Verron
2021-02-10 10:42 ` Alfred M. Szmidt
2021-02-10 11:35 ` Thibaut Verron
2021-02-10 12:59 ` Alfred M. Szmidt
2021-02-10 13:09 ` vc-magit mode (was: Re: PROPOSAL: Repurpose one key and reserve it for third-party packages) Alfred M. Szmidt
2021-02-10 13:25 ` Thibaut Verron
2021-02-10 13:34 ` vc-magit mode Dmitry Gutov
2021-02-10 15:33 ` vc-magit mode (was: Re: PROPOSAL: Repurpose one key and reserve it for third-party packages) Eli Zaretskii
2021-02-10 16:47 ` Alfred M. Szmidt
2021-02-10 17:22 ` Eli Zaretskii
2021-02-11 13:37 ` PROPOSAL: Repurpose one key and reserve it for third-party packages Richard Stallman
2021-02-11 14:38 ` Stefan Kangas
2021-02-11 15:13 ` Robert Pluim
2021-02-11 16:08 ` Stefan Monnier
2021-02-12 8:21 ` Alfred M. Szmidt
2021-02-12 8:36 ` Robert Pluim
2021-02-12 15:11 ` Alfred M. Szmidt
2021-02-13 3:26 ` Richard Stallman
2021-02-10 11:07 ` Gregory Heytings
2021-02-10 13:00 ` Alfred M. Szmidt
2021-02-10 13:59 ` Gregory Heytings
2021-02-10 14:10 ` Alfred M. Szmidt
2021-02-10 14:51 ` Gregory Heytings
2021-02-10 15:12 ` Alfred M. Szmidt
2021-02-10 15:23 ` Gregory Heytings
2021-02-10 16:35 ` [External] : " Drew Adams
2021-02-10 16:35 ` Drew Adams
2021-02-10 17:05 ` Stefan Monnier
2021-02-11 13:37 ` Richard Stallman
2021-02-11 13:55 ` Gregory Heytings
2021-02-12 9:40 ` Jean Louis
2021-02-08 20:32 ` Ulrich Mueller
2021-02-08 21:00 ` Gregory Heytings
2021-02-08 21:37 ` Ulrich Mueller
2021-02-08 22:00 ` Gregory Heytings
2021-02-09 16:57 ` Sean Whitton
2021-02-09 17:19 ` Gregory Heytings
2021-02-09 17:59 ` Ulrich Mueller
2021-02-09 18:24 ` Gregory Heytings
2021-02-09 18:19 ` Thibaut Verron
2021-02-09 19:16 ` Gregory Heytings
2021-02-09 19:28 ` Thibaut Verron
2021-02-09 20:15 ` Gregory Heytings
2021-02-09 19:47 ` Stefan Monnier
2021-02-09 22:19 ` Gregory Heytings
2021-02-09 21:34 ` Sean Whitton
[not found] ` <8735y56naf.fsf@posteo.net>
[not found] ` <8ed9b43502ae9a36b057@heytings.org>
2021-02-09 23:18 ` Philip K.
2021-02-10 11:07 ` Gregory Heytings
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='x7YeXNhF3jggGEAnGMOQvP9pQbLE2ZwYtVSyHcVY4pEoxu2174zo0diI6U567cMVskZYOtNzGCoyKpNnLK1MWR9FWOncsRXaJPzFvhKHwqA=@esavara.cr' \
--to=jorge@esavara.cr \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).