# HG changeset patch # User Chong Yidong # Date 1201908116 0 # Node ID 3fe97133ed1782c10d5d5da0862bcb1a2540dc74 # Parent 0922071c4a12560356bd121af4d7b77ca80d6b43 (tags-loop-revert-buffers): Value `ask' means to query the user interactively. (next-file): Implement it. diff -r 0922071c4a12 -r 3fe97133ed17 lisp/progmodes/etags.el --- a/lisp/progmodes/etags.el Fri Feb 01 23:21:29 2008 +0000 +++ b/lisp/progmodes/etags.el Fri Feb 01 23:21:56 2008 +0000 @@ -1629,12 +1629,14 @@ (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 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))