mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-01 12:17:25 -05:00
feat(magit): introduce +magit-auto-revert option
Provides more control over our auto-reverting feature, and changes its behavior to only target non-remote buffers by default, because reverting remote buffers could be tremendously slow. This could be later improved to treat TRAMP buffers with local methods (like sudo) as local buffers. Fix: #8354
This commit is contained in:
@ -98,6 +98,17 @@ window that already exists in that direction. It will split otherwise."
|
|||||||
|
|
||||||
(defvar +magit--stale-p nil)
|
(defvar +magit--stale-p nil)
|
||||||
|
|
||||||
|
(defun +magit--revertable-buffer-p (buffer)
|
||||||
|
(when (buffer-live-p buffer)
|
||||||
|
(pcase +magit-auto-revert
|
||||||
|
(`t t)
|
||||||
|
(`local
|
||||||
|
(not (file-remote-p
|
||||||
|
(or (buffer-file-name buffer)
|
||||||
|
(buffer-local-value 'default-directory buffer)))))
|
||||||
|
((pred functionp)
|
||||||
|
(funcall +magit-auto-revert buffer)))))
|
||||||
|
|
||||||
(defun +magit--revert-buffer (buffer)
|
(defun +magit--revert-buffer (buffer)
|
||||||
(with-current-buffer buffer
|
(with-current-buffer buffer
|
||||||
(kill-local-variable '+magit--stale-p)
|
(kill-local-variable '+magit--stale-p)
|
||||||
@ -116,7 +127,7 @@ Stale buffers are reverted when they are switched to, assuming they haven't been
|
|||||||
modified."
|
modified."
|
||||||
(let ((visible-buffers (doom-visible-buffers nil t)))
|
(let ((visible-buffers (doom-visible-buffers nil t)))
|
||||||
(dolist (buffer (buffer-list))
|
(dolist (buffer (buffer-list))
|
||||||
(when (buffer-live-p buffer)
|
(when (+magit--revertable-buffer-p buffer)
|
||||||
(if (memq buffer visible-buffers)
|
(if (memq buffer visible-buffers)
|
||||||
(progn
|
(progn
|
||||||
(+magit--revert-buffer buffer)
|
(+magit--revert-buffer buffer)
|
||||||
|
@ -12,6 +12,28 @@ left and right fringe.
|
|||||||
|
|
||||||
Only has an effect in GUI Emacs.")
|
Only has an effect in GUI Emacs.")
|
||||||
|
|
||||||
|
(defvar +magit-auto-revert 'local
|
||||||
|
"If non-nil, revert associated buffers after Git operations with side-effects.
|
||||||
|
|
||||||
|
These buffers are auto-reverted immediately if they're visible or reverted next
|
||||||
|
time they're switched to. This is intended to be a much more efficient
|
||||||
|
replacement for `magit-auto-revert-mode' and `global-auto-revert-mode', and
|
||||||
|
should not be used together with them! Set this to `nil' if you plan to use the
|
||||||
|
above.
|
||||||
|
|
||||||
|
Accepts one of three values OR a predicate function:
|
||||||
|
|
||||||
|
t
|
||||||
|
Revert any associated buffers.
|
||||||
|
local
|
||||||
|
Same as `t', except remote (TRAMP) buffers are ignored.
|
||||||
|
nil
|
||||||
|
Don't do any auto-reverting at all.
|
||||||
|
FUNCTION
|
||||||
|
If given a function, it will be passed a buffer associated with the current
|
||||||
|
Magit session and must return non-nil to signal this is buffer is safe to
|
||||||
|
revert (now or later, when switched to).")
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;;; Packages
|
;;; Packages
|
||||||
|
Reference in New Issue
Block a user