From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Karl Fogel Newsgroups: gmane.emacs.devel Subject: Re: [External] : Re: Concern about new binding. Date: Thu, 04 Feb 2021 22:13:26 -0600 Message-ID: <87o8gz40ex.fsf@red-bean.com> References: <87zh0mmr54.fsf@gmail.com> <87y2g5smya.fsf@gmail.com> <4FF55FBF-573D-4A70-B3FC-682CA25B7ECB@gnu.org> <83lfc53whk.fsf@gnu.org> <20210203180142.seu6o3i6u7jhkyrh@Ergus> <83eehx3to5.fsf@gnu.org> <20210203221628.xgvvxjvh56gyswba@Ergus> <20210204070033.pm4ido4hq7a6twif@Ergus> <83sg6brhyg.fsf@gnu.org> <87a6sjpyqs.fsf@gnus.org> <838s83ra3q.fsf@gnu.org> <87mtwjocn7.fsf@gnus.org> <87wnvnmqhx.fsf@gnus.org> Reply-To: Karl Fogel Mime-Version: 1.0 Content-Type: text/plain; format=flowed Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17573"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Lars Ingebrigtsen , Gregory Heytings , "emacs-devel@gnu.org" To: Drew Adams Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Feb 05 05:14:24 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l7sVk-0004Qd-0b for ged-emacs-devel@m.gmane-mx.org; Fri, 05 Feb 2021 05:14:24 +0100 Original-Received: from localhost ([::1]:60030 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1l7sVj-0003eY-1F for ged-emacs-devel@m.gmane-mx.org; Thu, 04 Feb 2021 23:14:23 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:37336) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l7sUv-0003Cx-Vu for emacs-devel@gnu.org; Thu, 04 Feb 2021 23:13:34 -0500 Original-Received: from sanpietro.red-bean.com ([45.79.25.59]:55100) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l7sUt-0008DN-3r for emacs-devel@gnu.org; Thu, 04 Feb 2021 23:13:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=red-bean.com; s=202005newsp; h=Content-Type:MIME-Version:Message-ID: In-Reply-To:Date:Reply-To:References:Subject:Cc:To:From:Sender: Content-Transfer-Encoding:Content-ID:Content-Description; bh=85jM1bPGsUTgpN7SUTpbhT/M34YGXr8722vauyLKYFc=; t=1612498409; x=1613708009; b=cS3j5yK39HmgpaoIFngvtIrRwR4N4aa+rbka8mzt41oUZs7XfCIypx2EUfWcinNBoIoqJXrp0T ap3XtScs5gCvmAxZaO4kbvb+CRM/uhHACWPUaPeNHfXRqix2mdU5Pw5LQqxlMC32Bq6uRDTD6Aol8 D1jMWwGzfEOP1Rp49XktZUfsxgbwtwNCIQfHc6CzoFixvjkmsgMprWQuLoork4FPjm9TUTvxNgxTW w45G6ds4uUQzRg/f8VbGFKE5m3I/ETkQQGO923QUQRMownriqPU1cjEMmb7E7RjcgJbihCHkbk1Zy indaUv4LQ9oHElnHw4pxmQ2Hz0WDRZxMT+HyA==; Original-Received: from 99-112-125-163.lightspeed.cicril.sbcglobal.net ([99.112.125.163]:54058 helo=floss) by sanpietro.red-bean.com with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l7sUp-0002Sm-V0; Fri, 05 Feb 2021 04:13:28 +0000 In-Reply-To: (Drew Adams's message of "Fri, 5 Feb 2021 00:45:37 +0000") Received-SPF: pass client-ip=45.79.25.59; envelope-from=kfogel@red-bean.com; helo=sanpietro.red-bean.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:263932 Archived-At: 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 ' 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 bmkp-next-lighted-this-buffer-repeat >C-x x bmkp-previous-lighted-this-buffer-repeat >C-x x bmkp-delete-bookmarks >C-x x bmkp-delete-bookmarks >C-x x bmkp-delete-bookmarks >C-x x bmkp-next-bookmark-this-file/buffer-repeat >C-x x bmkp-delete-bookmarks >C-x x bmkp-previous-bookmark-repeat >C-x x bmkp-next-bookmark-w32-repeat >C-x x bmkp-previous-bookmark-w32-repeat >C-x x bmkp-next-bookmark-repeat >C-x x bmkp-previous-bookmark-this-file/buffer-repeat >C-x x bmkp-next-bookmark-this-file/buffer-repeat >C-x x 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