emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] scratch/add-vdiff b4c3e09 195/258: Ensure sentinel runs in correc


From: Justin Burkett
Subject: [elpa] scratch/add-vdiff b4c3e09 195/258: Ensure sentinel runs in correct context
Date: Wed, 17 May 2017 08:13:49 -0400 (EDT)

branch: scratch/add-vdiff
commit b4c3e09fdbd30a0860dc9f234860ce765dafba6b
Author: justbur <address@hidden>
Commit: justbur <address@hidden>

    Ensure sentinel runs in correct context
---
 vdiff.el | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/vdiff.el b/vdiff.el
index 55608a1..8b6558d 100644
--- a/vdiff.el
+++ b/vdiff.el
@@ -394,6 +394,15 @@ because those are handled differently.")
            (1- (overlay-start ovr))
          (1+ (overlay-end ovr)))))))
 
+(defmacro vdiff--with-buffer-a (session &rest body)
+  "Execute BODY in buffer a of SESSION."
+  (declare (indent 1))
+  `(let ((buf (car (vdiff-session-buffers ,session))))
+     (unless (buffer-live-p buf)
+       (error "vdiff: Session buffer (%s) not live"))
+     (with-current-buffer buf
+       ,@body)))
+
 (defmacro vdiff--with-all-buffers (&rest body)
   "Execute BODY in all vdiff buffers."
   `(dolist (buf (vdiff-session-buffers vdiff--session))
@@ -567,15 +576,16 @@ parsing the diff output and triggering the overlay 
updates."
         (setq finished t)
         (message "vdiff process error: %s" event)))
       (when finished
-        (vdiff--refresh-overlays)
-        (vdiff--refresh-line-maps)
+        (vdiff--with-buffer-a ses
+          (vdiff--refresh-overlays)
+          (vdiff--refresh-line-maps)
+          (when vdiff-auto-refine
+            (vdiff-refine-all-hunks))
+          (run-hooks (process-get proc 'vdiff-post-refresh-hook)))
         (delete-file (process-get proc 'vdiff-tmp-a))
         (delete-file (process-get proc 'vdiff-tmp-b))
         (when (process-get proc 'vdiff-tmp-c)
-          (delete-file (process-get proc 'vdiff-tmp-c)))
-        (when vdiff-auto-refine
-          (vdiff-refine-all-hunks))
-        (run-hooks (process-get proc 'vdiff-post-refresh-hook)))
+          (delete-file (process-get proc 'vdiff-tmp-c))))
       (setf (vdiff-session-diff-stale ses) nil))))
 
 (defun vdiff--remove-all-overlays ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]