From: Lars Ingebrigtsen Date: Fri, 16 Jul 2021 12:30:24 +0000 (+0200) Subject: Add new user option 'query-about-changed-file' X-Git-Tag: emacs-28.0.90~1840 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9b601d8537422886250588fce22abc4e7ef6b100;p=emacs.git Add new user option 'query-about-changed-file' * doc/emacs/files.texi (Visiting): Document it. * lisp/files.el (query-about-changed-file): New user option (bug#10775). (find-file-noselect): Use it. --- diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index 32a2f1bb815..b57618fd508 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -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 diff --git a/etc/NEWS b/etc/NEWS index bec7f9fb04c..cfa6a4e55b6 100644 --- 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 diff --git a/lisp/files.el b/lisp/files.el index 825aa1c3e88..253a2891807 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -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))