branch: elpa/magit commit ac40f8c1b5187055480f321d257a1ae2f4472175 Author: Jonas Bernoulli <jo...@bernoul.li> Commit: Jonas Bernoulli <jo...@bernoul.li>
magit-refresh-buffer: Spin out magit--refresh-buffer-function --- lisp/magit-mode.el | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lisp/magit-mode.el b/lisp/magit-mode.el index 4c8600dd89..4217ab9f05 100644 --- a/lisp/magit-mode.el +++ b/lisp/magit-mode.el @@ -1070,12 +1070,10 @@ Run hooks `magit-pre-refresh-hook' and `magit-post-refresh-hook'." (defun magit-refresh-buffer (&optional created) "Refresh the current Magit buffer." (interactive) - (let ((magit--refreshing-buffer-p t) - (magit--refresh-start-time (current-time)) - (magit--refresh-cache (or magit--refresh-cache (list (cons 0 0)))) - (refresh (intern (format "%s-refresh-buffer" - (substring (symbol-name major-mode) 0 -5))))) - (when (functionp refresh) + (when-let ((refresh (magit--refresh-buffer-function))) + (let ((magit--refreshing-buffer-p t) + (magit--refresh-start-time (current-time)) + (magit--refresh-cache (or magit--refresh-cache (list (cons 0 0))))) (when magit-refresh-verbose (message "Refreshing buffer `%s'..." (buffer-name))) (deactivate-mark) @@ -1085,10 +1083,7 @@ Run hooks `magit-pre-refresh-hook' and `magit-post-refresh-hook'." (setq magit-section-highlighted-sections nil) (setq magit-section-focused-sections nil) (let ((positions (magit--refresh-buffer-get-positions))) - (let ((inhibit-read-only t)) - (erase-buffer) - (save-excursion - (funcall refresh))) + (funcall refresh) (magit--refresh-buffer-set-positions positions)) (when created (run-hooks 'magit--initial-section-hook) @@ -1103,6 +1098,15 @@ Run hooks `magit-pre-refresh-hook' and `magit-post-refresh-hook'." (message "Refreshing buffer `%s'...done (%.3fs)" (buffer-name) (float-time (time-since magit--refresh-start-time))))))) +(defun magit--refresh-buffer-function () + (let ((fn (intern (format "%s-refresh-buffer" + (substring (symbol-name major-mode) 0 -5))))) + (and (functionp fn) + (lambda () + (let ((inhibit-read-only t)) + (erase-buffer) + (save-excursion (funcall fn))))))) + (defun magit--refresh-buffer-get-positions () (let ((buffer (current-buffer))) (mapcan (lambda (window)