Skip to content

Commit

Permalink
Add new user option 'query-about-changed-file'
Browse files Browse the repository at this point in the history
* doc/emacs/files.texi (Visiting): Document it.
* lisp/files.el (query-about-changed-file): New user option (bug#10775).
(find-file-noselect): Use it.
  • Loading branch information
larsmagne committed Jul 16, 2021
1 parent 561ef16 commit 9b601d8
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 0 deletions.
8 changes: 8 additions & 0 deletions doc/emacs/files.texi
Expand Up @@ -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
Expand Down
7 changes: 7 additions & 0 deletions etc/NEWS
Expand Up @@ -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
Expand Down
20 changes: 20 additions & 0 deletions lisp/files.el
Expand Up @@ -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)
Expand Down Expand Up @@ -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))
Expand Down

0 comments on commit 9b601d8

Please sign in to comment.