branch: elpa/magit
commit ac40f8c1b5187055480f321d257a1ae2f4472175
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
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 4c8600dd89f..4217ab9f05e 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)