]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new user option 'query-about-changed-file'
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 16 Jul 2021 12:30:24 +0000 (14:30 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 16 Jul 2021 12:30:24 +0000 (14:30 +0200)
* doc/emacs/files.texi (Visiting): Document it.
* lisp/files.el (query-about-changed-file): New user option (bug#10775).
(find-file-noselect): Use it.

doc/emacs/files.texi
etc/NEWS
lisp/files.el

index 32a2f1bb8151296e9595dbbf1e5f6edfe7c47f58..b57618fd5083050b26291eb758e15506cdf9669a 100644 (file)
@@ -227,6 +227,14 @@ File Names}, for information on how to visit a file whose name
 actually contains wildcard characters.  You can disable the wildcard
 feature by customizing @code{find-file-wildcards}.
 
+@vindex query-about-changed-file
+  If you're asking to visit a file that's already in a buffer, but the
+file has changed externally, Emacs will ask you whether you want to
+re-load the file or not.  If you set @code{query-about-changed-file}
+to @code{nil}, Emacs won't query you, but instead just display the
+buffer and issue a message telling you how to revert the buffer from
+the file.
+
 @kindex C-x C-v
 @findex find-alternate-file
   If you visit the wrong file unintentionally by typing its name
index bec7f9fb04cf5f241340dbbee8132c03802a22fa..cfa6a4e55b61e3e65ba560833ed2065ca5612224 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -308,6 +308,13 @@ default, 9.5 MiB).  Press '?' or 'C-h' in that prompt to read more
 about the different options to visit a file, how you can disable the
 prompt, and how you can tweak the file size threshold.
 
++++
+** New user option 'query-about-changed-file'.
+If non-nil (the default), users are prompted as before when
+re-visiting a file that has changed externally.  If nil, the user is
+not prompted, but instead the buffer is opened, and the user is given
+an instruction on how to revert the uffer.
+
 +++
 ** Improved support for terminal emulators that encode the Meta flag.
 Some terminal emulators set the 8th bit of Meta characters, and then
index 825aa1c3e8898cda734ddda41ad5c9aaa966bf2e..253a2891807f7d9ccb00c96a837bf011f560d715 100644 (file)
@@ -2153,6 +2153,18 @@ think it does, because \"free\" is pretty hard to define in practice."
   :version "25.1"
   :type '(choice integer (const :tag "Never issue warning" nil)))
 
+(defcustom query-about-changed-file t
+  "If non-nil, query the user when opening a file that has changed.
+This happens if the file is already visited in a buffer, and the
+file has changed, and the user re-visits the file.
+
+If nil, the user isn't prompted, but instead given a warning
+after switching to the buffer."
+  :group 'files
+  :group 'find-file
+  :version "28.1"
+  :type 'boolean)
+
 (declare-function x-popup-dialog "menu.c" (position contents &optional header))
 
 (defun files--ask-user-about-large-file-help-text (op-type size)
@@ -2335,6 +2347,14 @@ the various files."
                           (message "Reverting file %s..." filename)
                           (revert-buffer t t)
                           (message "Reverting file %s...done" filename)))
+                        ((not query-about-changed-file)
+                         (message
+                          (substitute-command-keys
+                           "File %s changed on disk.  \\[revert-buffer] to load new contents%s")
+                          (file-name-nondirectory filename)
+                          (if (buffer-modified-p buf)
+                              " and discard your edits"
+                            "")))
                        ((yes-or-no-p
                          (if (string= (file-name-nondirectory filename)
                                       (buffer-name buf))