From: Chong Yidong Date: Fri, 1 Feb 2008 23:23:54 +0000 (+0000) Subject: (tags-loop-revert-buffers): Value `ask' means to query the user interactively. X-Git-Tag: emacs-pretest-23.0.90~8283 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=580d92980c65649e4d8a5caf78317e74c24f48e4;p=emacs.git (tags-loop-revert-buffers): Value `ask' means to query the user interactively. (next-file): Implement it. --- diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index 32aecdd8295..d69d1de6cdc 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -1629,12 +1629,14 @@ where they were found." (and (search-forward "\177" (save-excursion (end-of-line) (point)) t) (re-search-backward re bol t))))) -(defcustom tags-loop-revert-buffers nil - "*Non-nil means tags-scanning loops should offer to reread changed files. -These loops normally read each file into Emacs, but when a file -is already visited, they use the existing buffer. -When this flag is non-nil, they offer to revert the existing buffer -in the case where the file has changed since you visited it." +(defcustom tags-loop-revert-buffers 'ask + "Whether the tags-scanning loop should reread changed files. +This loop normally reads each file into Emacs, but when a file is +already visited, it uses the existing buffer. +If this variable is nil, the loop uses the existing buffer even +if the file has changed since you visited it. +If the value is `ask', the loop offers to revert the buffer. +Any other non-nil value means to revert the buffer automatically." :type 'boolean :group 'etags) @@ -1696,6 +1698,14 @@ if the file was newly read in, the value is the filename." ;; if the files have changed on disk. (and buffer tags-loop-revert-buffers (not (verify-visited-file-modtime buffer)) + (or (not (eq tags-loop-revert-buffers 'ask)) + noninteractive + (y-or-n-p + (format + (if (buffer-modified-p buffer) + "File %s changed on disk. Discard your edits? " + "File %s changed on disk. Reread from disk? ") + next))) (with-current-buffer buffer (revert-buffer t))) (if (not (and new novisit))