]> git.eshelyaron.com Git - emacs.git/commitdiff
When reverting, preserve the readedness state set by `C-x C-q'
authorLars Ingebrigtsen <larsi@gnus.org>
Wed, 24 Aug 2022 11:33:02 +0000 (13:33 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 24 Aug 2022 11:39:41 +0000 (13:39 +0200)
* lisp/files.el (revert-buffer): Save the user's intention in a
variable (bug#50431).

* lisp/simple.el (read-only-mode): Use it.

lisp/files.el
lisp/simple.el

index cf2a52219304863063f65cdb10dbefb4c4b1441e..8596d9a83908741ba8c72cdd21916d8fc33a741f 100644 (file)
@@ -6627,9 +6627,14 @@ preserve markers and overlays, at the price of being slower."
   ;; interface, but leaving the programmatic interface the same.
   (interactive (list (not current-prefix-arg)))
   (let ((revert-buffer-in-progress-p t)
-        (revert-buffer-preserve-modes preserve-modes))
+        (revert-buffer-preserve-modes preserve-modes)
+        (state (and (boundp 'read-only-mode--state)
+                    (list read-only-mode--state))))
     (funcall (or revert-buffer-function #'revert-buffer--default)
-             ignore-auto noconfirm)))
+             ignore-auto noconfirm)
+    (when state
+      (setq buffer-read-only (car state))
+      (setq-local read-only-mode--state (car state)))))
 
 (defun revert-buffer--default (ignore-auto noconfirm)
   "Default function for `revert-buffer'.
index 460aff8bd826229bc4d03f0fc47525304c21613f..13d0d3b241420f42c7a752570f4e39070ad3ebfe 100644 (file)
@@ -10400,8 +10400,15 @@ command works by setting the variable `buffer-read-only', which
 does not affect read-only regions caused by text properties.  To
 ignore read-only status in a Lisp program (whether due to text
 properties or buffer state), bind `inhibit-read-only' temporarily
-to a non-nil value."
+to a non-nil value.
+
+Reverting a buffer will keep the readedness state set by using
+this command."
   :variable buffer-read-only
+  ;; We're saving this value here so that we can restore the
+  ;; readedness state after reverting the buffer to the value that's
+  ;; been explicitly set by the user.
+  (setq-local read-only-mode--state buffer-read-only)
   (cond
    ((and (not buffer-read-only) view-mode)
     (View-exit-and-edit)