summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2019-06-10 17:52:50 +0200
committerMattias EngdegÄrd <mattiase@acm.org>2019-06-11 22:15:38 +0200
commite92dac3434d30b870461898a336854879620f400 (patch)
tree888eca0db7ebaccdd9c5cf13a98b66d6337df7c2 /lisp
parent2b8f9ded06590d8e299ed25e09a0db7af0299fe4 (diff)
downloademacs-e92dac3434d30b870461898a336854879620f400.tar.gz
Keep auto-revert-mode working when changing buffer file name (bug#36159)
* lisp/autorevert.el (after-set-visited-file-name-hook): Add unconditionally. (global-auto-revert-mode): Don't use `after-set-visited-file-name-hook' here. (auto-revert-set-visited-file-name): Rename from `auto-revert--global-set-visited-file-name' and generalise. * test/lisp/autorevert-tests.el (auto-revert-test06-write-file): New.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/autorevert.el19
1 files changed, 10 insertions, 9 deletions
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index 2de855b303e..5c79a7e7955 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -347,6 +347,8 @@ the list of old buffers.")
(add-hook 'find-file-hook
#'auto-revert-find-file-function)
+(add-hook 'after-set-visited-file-name-hook
+ #'auto-revert-set-visited-file-name)
(defvar auto-revert--buffers-by-watch-descriptor
(make-hash-table :test 'equal)
@@ -508,8 +510,6 @@ specifies in the mode line."
(auto-revert--global-add-current-buffer)))
;; Make sure future buffers are added as well.
(add-hook 'find-file-hook #'auto-revert--global-adopt-current-buffer)
- (add-hook 'after-set-visited-file-name-hook
- #'auto-revert--global-set-visited-file-name)
;; To track non-file buffers, we need to listen in to buffer
;; creation in general. Listening to major-mode changes is
;; suitable, since we then know whether it's a mode that is tracked.
@@ -520,8 +520,6 @@ specifies in the mode line."
;; Turn global-auto-revert-mode OFF.
(remove-hook 'after-change-major-mode-hook
#'auto-revert--global-adopt-current-buffer)
- (remove-hook 'after-set-visited-file-name-hook
- #'auto-revert--global-set-visited-file-name)
(remove-hook 'find-file-hook #'auto-revert--global-adopt-current-buffer)
(dolist (buf (buffer-list))
(with-current-buffer buf
@@ -551,14 +549,17 @@ specifies in the mode line."
(auto-revert--global-add-current-buffer)
(auto-revert-set-timer))
-(defun auto-revert--global-set-visited-file-name ()
- "Update Global Auto-Revert management of the current buffer.
+(defun auto-revert-set-visited-file-name ()
+ "Update Auto-Revert management of the current buffer.
Called after `set-visited-file-name'."
- ;; Remove any existing notifier first so that we don't track the
- ;; wrong file in case the file name was changed.
(when auto-revert-notify-watch-descriptor
+ ;; Remove any existing notifier so that we don't track the wrong
+ ;; file in case the file name was changed.
(auto-revert-notify-rm-watch))
- (auto-revert--global-adopt-current-buffer))
+ (cond (global-auto-revert-mode
+ (auto-revert--global-adopt-current-buffer))
+ ((or auto-revert-mode auto-revert-tail-mode)
+ (auto-revert-set-timer))))
(defun auto-revert--polled-buffers ()
"List of buffers that need to be polled."