Subject: 28.0.50; Move revert-buffer global binding into a prefix map

From: Sean Whitton <[email-masked]>
Date: Thu, 04 Feb 2021 11:08:59 -0700

control: tag -1 + patch

On Thu 04 Feb 2021 at 05:46PM +01, Lars Ingebrigtsen wrote:

> Gregory Heytings <[email-masked]> writes:
>
>> You forgot the proposal to which the mail you are replying to
>> explicitly refers.  So I'll copy it here again: it is to make "C-x g"
>> a keymap for buffer-related operations, with in particular "C-x g r"
>> bound to revert-buffer:
>>
>> C-x g c = clone-buffer
>> C-x g d = diff-buffers
>> C-x g f = fit-frame-to-buffer
>> C-x g h = hexl-mode
>> C-x g i = insert-buffer
>> C-x g l = font-lock-mode
>> C-x g n = rename-buffer
>> C-x g r = revert-buffer
>> C-x g R = revert-buffer-with-fine-grain
>> C-x g t = toggle-truncate-lines
>
> Of the alternative key bindings proposed, I like this the best.  I'd
> prefer `C-x g g' for revert-buffer, though -- it's more in like with the
> `g' binding in `special-mode-map', and `revert-buffer' is a command
> you're likely to want to execute a number of times (in some cases),
> while the rest of these are less keyboard-mashey.

Here's a patch doing that, since this seems like a solution which
satisfies most.  Exactly what else to bind into that map I leave to
others, for now, anyway.

-- 
Sean Whitton
>From ae48c8984724013a2b145fbac32c094dd54c8f0f Mon Sep 17 00:00:00 2001
From: Sean Whitton <[email-masked]>
Date: Thu, 4 Feb 2021 11:05:06 -0700
Subject: [PATCH] Move 'revert-buffer' global binding to 'C-x g g'

* lisp/bindings.el: Define ctl-x-g-map and bind 'revert-buffer' to
'C-x g g' globally.
* doc/emacs/files.texi: Replace 'C-x g' with 'C-x g g'.
* etc/NEWS: Document the change.
---
 doc/emacs/files.texi | 2 +-
 etc/NEWS             | 2 +-
 lisp/bindings.el     | 7 ++++++-
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 12ceac800e..dbdb9d582a 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -927,7 +927,7 @@ Manual}).  For customizations, see the Custom group @code{time-stamp}.
 
   If you have made extensive changes to a file-visiting buffer and
 then change your mind, you can @dfn{revert} the changes and go back to
-the saved version of the file.  To do this, type @kbd{C-x g}.  Since
+the saved version of the file.  To do this, type @kbd{C-x g g}.  Since
 reverting unintentionally could lose a lot of work, Emacs asks for
 confirmation first.
 
diff --git a/etc/NEWS b/etc/NEWS
index dddc150af1..cf428621d2 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -234,7 +234,7 @@ still applies for shorter search strings, which avoids flicker in the
 search buffer due to too many matches being highlighted.
 
 +++
-** 'revert-buffer' is now bound to 'C-x g' globally.
+** 'revert-buffer' is now bound to 'C-x g g' globally.
 
 
 * Editing Changes in Emacs 28.1
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 9ea188d1a0..3ddaf0cec1 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -1413,7 +1413,12 @@ if `inhibit-field-text-motion' is non-nil."
 
 (define-key ctl-x-map "z" 'repeat)
 
-(define-key ctl-x-map "g" #'revert-buffer)
+(defvar ctl-x-g-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map "g" #'revert-buffer)
+    map)
+  "Keymap for subcommands of C-x g.")
+(define-key ctl-x-map "g" ctl-x-g-map)
 
 (define-key esc-map "\C-l" 'reposition-window)
 
-- 
2.29.2