branch: externals/diff-hl
commit 902d082d70b962103342ee46e73fc6886bc8720a
Author: Dmitry Gutov <[email protected]>
Commit: Dmitry Gutov <[email protected]>

    Check buffer liveness (both work buffers and source buffer)
    
    Fixes #281
---
 diff-hl.el | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/diff-hl.el b/diff-hl.el
index 37331acfb5..d628d260d2 100644
--- a/diff-hl.el
+++ b/diff-hl.el
@@ -730,27 +730,29 @@ Return a list of line overlays used."
        (diff-hl--resolve
         reference
         (lambda (ref-changes)
-          (let ((ref-changes (diff-hl-adjust-changes ref-changes changes))
-                reuse)
-            (with-current-buffer orig
-              (diff-hl-remove-overlays)
-              (let ((diff-hl-highlight-function
-                     diff-hl-highlight-reference-function)
-                    (diff-hl-fringe-face-function
-                     diff-hl-fringe-reference-face-function))
-                (setq reuse (diff-hl--update-overlays ref-changes nil)))
-              (diff-hl--update-overlays changes reuse)
-              (when (not (or changes ref-changes))
-                (diff-hl--autohide-margin))))))))))
+          (when (buffer-live-p orig)
+            (let ((ref-changes (diff-hl-adjust-changes ref-changes changes))
+                  reuse)
+              (with-current-buffer orig
+                (diff-hl-remove-overlays)
+                (let ((diff-hl-highlight-function
+                       diff-hl-highlight-reference-function)
+                      (diff-hl-fringe-face-function
+                       diff-hl-fringe-reference-face-function))
+                  (setq reuse (diff-hl--update-overlays ref-changes nil)))
+                (diff-hl--update-overlays changes reuse)
+                (when (not (or changes ref-changes))
+                  (diff-hl--autohide-margin)))))))))))
 
 (defun diff-hl--resolve (value-or-buffer cb)
   (if (listp value-or-buffer)
       (funcall cb value-or-buffer)
     (static-if (fboundp 'vc-run-delayed-success)
         ;; Emacs 31.
-        (with-current-buffer value-or-buffer
-          (vc-run-delayed-success 1
-            (funcall cb (diff-hl-changes-from-buffer (current-buffer)))))
+        (when (get-buffer value-or-buffer)
+          (with-current-buffer value-or-buffer
+            (vc-run-delayed-success 1
+              (funcall cb (diff-hl-changes-from-buffer (current-buffer))))))
       (diff-hl--when-done value-or-buffer
                           #'diff-hl-changes-from-buffer
                           cb))))

Reply via email to