Fix Bug#34847
* lisp/autorevert.el (auto-revert-remove-current-buffer): Add optional argument BUFFER. (auto-revert-notify-rm-watch): Remove local hook. (auto-revert-buffers): Check `buffer-live-p' in time. (Bug#34847)
This commit is contained in:
parent
10cd65878c
commit
bcc6468b39
1 changed files with 27 additions and 25 deletions
|
|
@ -343,10 +343,11 @@ This has been reported by a file notification event.")
|
|||
|
||||
;; Functions:
|
||||
|
||||
(defun auto-revert-remove-current-buffer ()
|
||||
"Remove dead buffer from `auto-revert-buffer-list'."
|
||||
(defun auto-revert-remove-current-buffer (&optional buffer)
|
||||
"Remove BUFFER from `auto-revert-buffer-list'.
|
||||
BUFFER defaults to `current-buffer'."
|
||||
(setq auto-revert-buffer-list
|
||||
(delq (current-buffer) auto-revert-buffer-list)))
|
||||
(delq (or buffer (current-buffer)) auto-revert-buffer-list)))
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode auto-revert-mode
|
||||
|
|
@ -509,7 +510,7 @@ will use an up-to-date value of `auto-revert-interval'"
|
|||
(ignore-errors
|
||||
(file-notify-rm-watch auto-revert-notify-watch-descriptor)))))
|
||||
auto-revert-notify-watch-descriptor-hash-list)
|
||||
(remove-hook 'kill-buffer-hook #'auto-revert-notify-rm-watch))
|
||||
(remove-hook 'kill-buffer-hook #'auto-revert-notify-rm-watch t))
|
||||
(setq auto-revert-notify-watch-descriptor nil
|
||||
auto-revert-notify-modified-p nil))
|
||||
|
||||
|
|
@ -772,10 +773,12 @@ the timer when no buffers need to be checked."
|
|||
(setq bufs (delq nil
|
||||
(mapcar
|
||||
(lambda (buf)
|
||||
(with-current-buffer buf
|
||||
(and (or (not (file-remote-p default-directory))
|
||||
(file-remote-p default-directory nil t))
|
||||
buf)))
|
||||
(and (buffer-live-p buf)
|
||||
(with-current-buffer buf
|
||||
(and
|
||||
(or (not (file-remote-p default-directory))
|
||||
(file-remote-p default-directory nil t))
|
||||
buf))))
|
||||
bufs)))
|
||||
;; Partition `bufs' into two halves depending on whether or not
|
||||
;; the buffers are in `auto-revert-remaining-buffers'. The two
|
||||
|
|
@ -792,24 +795,23 @@ the timer when no buffers need to be checked."
|
|||
(not (and auto-revert-stop-on-user-input
|
||||
(input-pending-p))))
|
||||
(let ((buf (car bufs)))
|
||||
(with-current-buffer buf
|
||||
(if (buffer-live-p buf)
|
||||
(progn
|
||||
;; Test if someone has turned off Auto-Revert Mode
|
||||
;; in a non-standard way, for example by changing
|
||||
;; major mode.
|
||||
(if (and (not auto-revert-mode)
|
||||
(not auto-revert-tail-mode)
|
||||
(memq buf auto-revert-buffer-list))
|
||||
(auto-revert-remove-current-buffer))
|
||||
(when (auto-revert-active-p)
|
||||
;; Enable file notification.
|
||||
(when (and auto-revert-use-notify
|
||||
(not auto-revert-notify-watch-descriptor))
|
||||
(auto-revert-notify-add-watch))
|
||||
(auto-revert-handler)))
|
||||
(if (not (buffer-live-p buf))
|
||||
;; Remove dead buffer from `auto-revert-buffer-list'.
|
||||
(auto-revert-remove-current-buffer))))
|
||||
(auto-revert-remove-current-buffer buf)
|
||||
(with-current-buffer buf
|
||||
;; Test if someone has turned off Auto-Revert Mode
|
||||
;; in a non-standard way, for example by changing
|
||||
;; major mode.
|
||||
(if (and (not auto-revert-mode)
|
||||
(not auto-revert-tail-mode)
|
||||
(memq buf auto-revert-buffer-list))
|
||||
(auto-revert-remove-current-buffer))
|
||||
(when (auto-revert-active-p)
|
||||
;; Enable file notification.
|
||||
(when (and auto-revert-use-notify
|
||||
(not auto-revert-notify-watch-descriptor))
|
||||
(auto-revert-notify-add-watch))
|
||||
(auto-revert-handler)))))
|
||||
(setq bufs (cdr bufs)))
|
||||
(setq auto-revert-remaining-buffers bufs)
|
||||
;; Check if we should cancel the timer.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue