Refresh vc on-demand after quitting magit #1298

To avoid the long delay when you have many buffers open while quitting
magit.
This commit is contained in:
Henrik Lissner 2019-03-31 19:44:38 -04:00
parent 445673b0be
commit bdd410cb9c
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -53,7 +53,20 @@
(when (fboundp 'vc-refresh-state)
(vc-refresh-state))
(when (fboundp '+version-control|update-git-gutter)
(+version-control|update-git-gutter))))
(+version-control|update-git-gutter))
(setq +magit--vc-is-stale-p nil)))
;;;###autoload
(defvar-local +magit--vc-is-stale-p nil)
;;;###autoload
(defun +magit|refresh-vc-state-maybe ()
"Update `vc' and `git-gutter' if out of date."
(when +magit--vc-is-stale-p
(+magit--refresh-vc-in-buffer (current-buffer))))
;;;###autoload
(add-hook 'doom-switch-buffer-hook #'+magit|refresh-vc-state-maybe)
;;;###autoload
(defun +magit/quit (&optional _kill-buffer)
@ -68,13 +81,11 @@ control in buffers."
(eq major-mode 'magit-status-mode)))
(window-list))))
(mapc #'+magit--kill-buffer (magit-mode-get-buffers))
(let ((buffers (doom-buffer-list)))
(if (not (fboundp 'make-thread))
(mapc #'+magit--refresh-vc-in-buffer buffers)
(mapc #'+magit--refresh-vc-in-buffer (doom-visible-buffers buffers))
;; TODO Partition buffer list
(dolist (buffer (doom-buried-buffers buffers))
(make-thread (lambda () (+magit--refresh-vc-in-buffer buffer))))))))
(dolist (buffer (doom-buffer-list))
(if (get-buffer-window buffer)
(+magit--refresh-vc-in-buffer buffer)
(with-current-buffer buffer
(setq +magit--vc-is-stale-p t))))))
(defun +magit--kill-buffer (buf)
"TODO"