Fix Bug#20943.

* lisp/autorevert.el (auto-revert-handler): Do not check for
`buffer-modified-p'.

* lisp/files.el (buffer-stale--default-function): Check for
`buffer-modified-p'.

* test/automated/auto-revert-tests.el
(auto-revert-test02-auto-revert-mode-dired): Adapt test.
This commit is contained in:
Michael Albinus 2015-07-16 20:04:07 +02:00
parent 572cd26f3f
commit fa5a880f73
3 changed files with 61 additions and 61 deletions

View file

@ -615,7 +615,6 @@ no more reverts are possible until the next call of
(defun auto-revert-handler ()
"Revert current buffer, if appropriate.
This is an internal function used by Auto-Revert Mode."
(when (or auto-revert-tail-mode (not (buffer-modified-p)))
(let* ((buffer (current-buffer)) size
;; Tramp caches the file attributes. Setting
;; `remote-file-name-inhibit-cache' forces Tramp to reread
@ -647,9 +646,9 @@ This is an internal function used by Auto-Revert Mode."
(when (and auto-revert-verbose
(not (eq revert 'fast)))
(message "Reverting buffer `%s'." (buffer-name)))
;; If point (or a window point) is at the end of the buffer,
;; we want to keep it at the end after reverting. This allows
;; to tail a file.
;; If point (or a window point) is at the end of the buffer, we
;; want to keep it at the end after reverting. This allows to
;; tail a file.
(when buffer-file-name
(setq eob (eobp))
(walk-windows
@ -660,19 +659,19 @@ This is an internal function used by Auto-Revert Mode."
'no-mini t))
(if auto-revert-tail-mode
(auto-revert-tail-handler size)
;; Bind buffer-read-only in case user has done C-x C-q,
;; so as not to forget that. This gives undesirable results
;; when the file's mode changes, but that is less common.
;; Bind buffer-read-only in case user has done C-x C-q, so as
;; not to forget that. This gives undesirable results when
;; the file's mode changes, but that is less common.
(let ((buffer-read-only buffer-read-only))
(revert-buffer 'ignore-auto 'dont-ask 'preserve-modes)))
(when buffer-file-name
(when eob (goto-char (point-max)))
(dolist (window eoblist)
(set-window-point window (point-max)))))
;; `preserve-modes' avoids changing the (minor) modes. But we
;; do want to reset the mode for VC, so we do it manually.
;; `preserve-modes' avoids changing the (minor) modes. But we do
;; want to reset the mode for VC, so we do it manually.
(when (or revert auto-revert-check-vc-info)
(vc-find-file-hook)))))
(vc-find-file-hook))))
(defun auto-revert-tail-handler (size)
(let ((modified (buffer-modified-p))

View file

@ -5424,6 +5424,7 @@ This function only handles buffers that are visiting files.
Non-file buffers need a custom function"
(and buffer-file-name
(file-readable-p buffer-file-name)
(not (buffer-modified-p (current-buffer)))
(not (verify-visited-file-modtime (current-buffer)))))
(defvar buffer-stale-function #'buffer-stale--default-function

View file

@ -173,8 +173,8 @@
(null
(string-match name (substring-no-properties (buffer-string)))))
;; When the dired buffer is modified, it shall not be
;; reverted. This is questionable, see Bug#20943.
;; Make dired buffer modified. Check, that the buffer has
;; been still reverted.
(with-current-buffer (get-buffer-create "*Messages*")
(narrow-to-region (point-max) (point-max)))
(set-buffer-modified-p t)
@ -189,7 +189,7 @@
(format "Reverting buffer `%s'." (buffer-name buf))
(buffer-string)))
(read-event nil nil 0.1))))
(should-not
(should
(string-match name (substring-no-properties (buffer-string))))))
;; Exit.