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)

Reply via email to