emacs-devel
[Top][All Lists]
Advanced

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

Re: [External] : Re: Concern about new binding.


From: Karl Fogel
Subject: Re: [External] : Re: Concern about new binding.
Date: Thu, 04 Feb 2021 22:13:26 -0600
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Drew is making a good point here (I realize he sounds a bit annoyed, but I can sympathize). His proposal make sense -- or at any rate, there's a good proposal easily derived from what he's saying.

If Emacs were to declare that from this point forward it will leave all currently-unbound `C-x LETTER' unbound, and *recommend* that packages not bind them by default either, then we'd have a few more very convenient keybindings left over for users.

A package could still suggest `C-x SOME-SPECIFIC-LETTER' as a binding for some entry point in the package, and even provide convenience mechanisms to cause that binding to happen.

We can't easil survey users about their bindings, but anecdotally it seem like a lot of people -- not only Drew -- have been using those last few remaining slots under `C-x' for their own favorite things. (The fact that some packages also use that space is a clue that people consider that space to be desirable real estate in the mental keymap universe.)

This isn't about Magit per se -- it's bigger than Magit. However, this proposal would make it somewhat more okay for Magit to continue binding `C-x g' by default too. While Magit wouldn't be following the new recommendation either, at least Magit would not have to worry about clobbering some existing binding. Given that Magit is so popular and so many people are accustomed to that binding already, this is still a decent outcome in the specific case of Magit anyway. (The fact that Magit also binds `C-x M-g' by default is a separate headache, but that doesn't have to be resolved for this proposal to be considered.)

These days, when we decide to make a new global function binding in default Emacs, it's hard to imagine how the new binding could be *so* important that it must take over one of the existing free convenient slots and yet somehow not be important enough for us to just replace some other less important binding (thus leaving the free space free). I'm not saying that scenario couldn't happen, but it's going to be rare. It's certainly not happening in the case of `revert-buffer'. I mean, let's ask ourselves: if having `revert-buffer' on a convenient key isn't important enough to replace some other little-used binding, how on earth can it be important enough to replace one of the free bindings? After all, those free bindings aren't *actually* free -- users are using them for lots of things of their own choosing!

Emacs has always rewarded users who learn to customize their keybindings. Let's make it possible for that reward to be as large as possible by guaranteeing them some conveniently free slots for their favorite functions and keymap prefixes.

The `C-c LETTER' space is great, but it's only 26 letters. I used them up long ago, and I'm sure I'm not alone. Having 4 or 5 more letters under `C-x' would be a significant boost.

Best regards, -Karl
On 05 Feb 2021, Drew Adams wrote:
Perhaps `C-x x <letter>' would be nice for these buffer-related
commands?  It's not exactly mnemonic, but it has a certain ring to it.

Any major packages that have claimed the `C-x x' binding, then?

Please, no.  I had a zillion bindings on prefix
key `C-x p' for Bookmark+.

Then, recently, you grabbed that key for Project,
paying no attention to my requests to please not
do that.  Maybe my packages don't count for you
as "any major packages", but they count to me.

When you did that, I moved all of my `C-x p' keys
to prefix key `C-x x'.  And now?  You want to
take over `C-x x' also.

When will this stop?  Can't we please have a
_moratorium__ on Emacs using up, with default
bindings, the few remaining unused keys?

You guys are now desperately _looking_ for some
commands that you might be able to clump together
on a prefix key, just because you've decided to
waste a default binding on `revert-buffer'.

You have a solution in search of a problem.

35+ years Emacs lived without a default binding
for `revert-buffer'.  Now, suddenly you can't
do without one.
___


https://www.emacswiki.org/emacs/BookmarkPlus#BookmarkPrefixKeys
___


Global Bindings Starting With C-x x:
key             binding
---             -------

C-x x C-b       bmkp-previous-bookmark-repeat
C-x x C-f       bmkp-next-bookmark-repeat
C-x x C-j       bmkp-jump-to-list
C-x x C-k       bmkp-delete-bookmarks
C-x x C-l       bmkp-switch-to-bookmark-file-this-file/buffer
C-x x RET       bmkp-toggle-autonamed-bookmark-set/delete
C-x x C-n       bmkp-next-bookmark-this-file/buffer-repeat
C-x x C-p       bmkp-previous-bookmark-this-file/buffer-repeat
C-x x C-s       bmkp-save-bookmarks-this-file/buffer
C-x x C-u       bmkp-unlight-bookmark-here
C-x x ESC       Prefix Command
C-x x ,         bmkp-this-file/buffer-bmenu-list
C-x x 0         bmkp-empty-file
C-x x 2         bmkp-clone-bookmark
C-x x 5         bookmark-jump-other-frame
C-x x :         bmkp-choose-navlist-of-type
C-x x =         bmkp-bookmarks-lighted-at-point
C-x x ?         bmkp-describe-bookmark-lighted-here
C-x x B         bmkp-choose-navlist-from-bookmark-list
C-x x E         bmkp-edit-bookmark-record
C-x x H         bmkp-light-bookmarks
C-x x I         bookmark-insert-location
C-x x K         bmkp-set-desktop-bookmark
C-x x L         bmkp-switch-bookmark-file-create
C-x x M         bookmark-set-no-overwrite
C-x x N         bmkp-navlist-bmenu-list
C-x x U         bmkp-unlight-bookmarks
C-x x a         Prefix Command
C-x x b         bmkp-previous-bookmark-repeat
C-x x c         Prefix Command
C-x x d         bookmark-delete
C-x x e         edit-bookmarks
C-x x f         bmkp-next-bookmark-repeat
C-x x g         bookmark-jump
C-x x h         bmkp-light-bookmark-this-buffer
C-x x i         bookmark-insert
C-x x j         bookmark-jump
C-x x l         bookmark-load
C-x x m         bmkp-bookmark-set-confirm-overwrite
C-x x n         bmkp-next-bookmark-this-file/buffer-repeat
C-x x o         bookmark-jump-other-window
C-x x p         bmkp-previous-bookmark-this-file/buffer-repeat
C-x x q         bookmark-jump-other-window
C-x x r         bmkp-edit-bookmark-name-and-location
C-x x s         bookmark-save
C-x x t         Prefix Command
C-x x u         bmkp-unlight-bookmark-this-buffer
C-x x w         bookmark-write
C-x x x         bmkp-toggle-autotemp-on-set
C-x x y         bmkp-set-bookmark-file-bookmark
C-x x <C-down>  bmkp-next-lighted-this-buffer-repeat
C-x x <C-up>    bmkp-previous-lighted-this-buffer-repeat
C-x x <delete>                  bmkp-delete-bookmarks
C-x x <deletechar>              bmkp-delete-bookmarks
C-x x <deleteline>              bmkp-delete-bookmarks
C-x x <down>                    bmkp-next-bookmark-this-file/buffer-repeat
C-x x <kp-delete>               bmkp-delete-bookmarks
C-x x <left>                    bmkp-previous-bookmark-repeat
C-x x <next>                    bmkp-next-bookmark-w32-repeat
C-x x <prior>                   bmkp-previous-bookmark-w32-repeat
C-x x <right>                   bmkp-next-bookmark-repeat
C-x x <up>      bmkp-previous-bookmark-this-file/buffer-repeat
C-x x <wheel-down>              bmkp-next-bookmark-this-file/buffer-repeat
C-x x <wheel-up>                bmkp-previous-bookmark-this-file/buffer-repeat

C-x x t C-y     bmkp-paste-add-tags
C-x x t ESC     Prefix Command
C-x x t +       Prefix Command
C-x x t -       Prefix Command
C-x x t 0       bmkp-remove-all-tags
C-x x t V       bmkp-set-tag-value-for-navlist
C-x x t c       bmkp-copy-tags
C-x x t d       bmkp-remove-tags-from-all
C-x x t e       bmkp-edit-tags
C-x x t l       bmkp-list-all-tags
C-x x t p       bmkp-paste-add-tags
C-x x t q       bmkp-paste-replace-tags
C-x x t r       bmkp-rename-tag
C-x x t v       bmkp-set-tag-value

C-x x c C-k     bmkp-wrap-bookmark-with-last-kbd-macro
C-x x c RET     bmkp-toggle-autonamed-bookmark-set/delete
C-x x c ESC     Prefix Command
C-x x c F       bmkp-make-function-bookmark
C-x x c K       bmkp-set-desktop-bookmark
C-x x c M       bookmark-set
C-x x c a       bmkp-autofile-set
C-x x c f       bmkp-file-target-set
C-x x c m       bmkp-bookmark-set-confirm-overwrite
C-x x c s       bmkp-set-sequence-bookmark
C-x x c u       bmkp-url-target-set
C-x x c y       bmkp-set-bookmark-file-bookmark

C-x x a B       bmkp-annotate-all-bookmarks-this-file/buffer
C-x x a S       bookmark-show-all-annotations
C-x x a a       bmkp-annotate-bookmark
C-x x a b       bmkp-annotate-bookmark-this-file/buffer
C-x x a e       bookmark-edit-annotation
C-x x a s       bookmark-show-annotation

C-x x M-w       bmkp-set-snippet-bookmark

C-x x t M-w     bmkp-copy-tags

C-x x t - a     bmkp-untag-a-file
C-x x t - b     bmkp-remove-tags

C-x x t + a     bmkp-tag-a-file
C-x x t + b     bmkp-add-tags

C-x x c M-w     bmkp-set-snippet-bookmark



reply via email to

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