From ba0ccc1d349eb0c6647b1e670d4433b633ec1771 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 12 Feb 2019 15:31:20 -0500 Subject: [PATCH] tools/magit: cleanup magit concurrently A quick attempt to make +magit/quit faster. --- modules/tools/magit/autoload.el | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/tools/magit/autoload.el b/modules/tools/magit/autoload.el index 0c61fa12e..a3b1d12b5 100644 --- a/modules/tools/magit/autoload.el +++ b/modules/tools/magit/autoload.el @@ -48,6 +48,13 @@ ;; ;; Commands +(defun +magit--refresh-vc-in-buffer (buffer) + (with-current-buffer buffer + (when (fboundp 'vc-refresh-state) + (vc-refresh-state)) + (when (fboundp '+version-control|update-git-gutter) + (+version-control|update-git-gutter)))) + ;;;###autoload (defun +magit/quit (&optional _kill-buffer) "Clean up magit buffers after quitting `magit-status' and refresh version @@ -61,12 +68,13 @@ control in buffers." (eq major-mode 'magit-status-mode))) (window-list)))) (mapc #'+magit--kill-buffer (magit-mode-get-buffers)) - (dolist (buffer (buffer-list)) - (with-current-buffer buffer - (when (fboundp 'vc-refresh-state) - (vc-refresh-state)) - (when (fboundp '+version-control|update-git-gutter) - (+version-control|update-git-gutter)))))) + (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)))))))) (defun +magit--kill-buffer (buf) "TODO"