changeset 65874:03746d1d1011

(cvs-sentinel): Make sure we do re-enable undo.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 06 Oct 2005 15:32:14 +0000
parents 6f0b82ccff09
children 8c8c651e39cc
files lisp/pcvs.el
diffstat 1 files changed, 19 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/pcvs.el	Thu Oct 06 15:00:49 2005 +0000
+++ b/lisp/pcvs.el	Thu Oct 06 15:32:14 2005 +0000
@@ -647,34 +647,38 @@
 it is finished."
   (when (memq (process-status proc) '(signal exit))
     (let ((cvs-postproc (process-get proc 'cvs-postprocess))
-	  (cvs-buf (process-get proc 'cvs-buffer)))
+	  (cvs-buf (process-get proc 'cvs-buffer))
+          (procbuf (process-buffer proc)))
+      (unless (buffer-live-p cvs-buf) (setq cvs-buf nil))
+      (unless (buffer-live-p procbuf) (setq procbuf nil))
       ;; Since the buffer and mode line will show that the
       ;; process is dead, we can delete it now.  Otherwise it
       ;; will stay around until M-x list-processes.
       (process-put proc 'postprocess nil)
       (delete-process proc)
       ;; Don't do anything if the main buffer doesn't exist any more.
-      (when (buffer-live-p cvs-buf)
+      (when cvs-buf
 	(with-current-buffer cvs-buf
 	  (cvs-update-header (process-get proc 'cvs-header) nil)
 	  (setq cvs-mode-line-process (symbol-name (process-status proc)))
 	  (force-mode-line-update)
 	  (when cvs-postproc
-	    (if (null (buffer-live-p (process-buffer proc)))
+	    (if (null procbuf)
 		;;(set-process-buffer proc nil)
 		(error "cvs' process buffer was killed")
-	      (with-current-buffer (process-buffer proc)
-		;; do the postprocessing like parsing and such
-		(save-excursion (eval cvs-postproc))
-		;; check whether something is left
-		(unless (get-buffer-process (current-buffer))
-		  ;; IIRC, we enable undo again once the process is finished
-		  ;; for cases where the output was inserted in *vc-diff* or
-		  ;; in a file-like buffer.  --Stef
-		  (buffer-enable-undo)
-		  (with-current-buffer cvs-buffer
-		    (message "CVS process has completed in %s"
-			     (buffer-name))))))))))))
+	      (with-current-buffer procbuf
+		;; Do the postprocessing like parsing and such.
+		(save-excursion (eval cvs-postproc)))))))
+      ;; Check whether something is left.
+      (when (and procbuf (not (get-buffer-process procbuf)))
+        (with-current-buffer procbuf
+          ;; IIRC, we enable undo again once the process is finished
+          ;; for cases where the output was inserted in *vc-diff* or
+          ;; in a file-like buffer.  --Stef
+          (buffer-enable-undo)
+          (with-current-buffer (or cvs-buf (current-buffer))
+            (message "CVS process has completed in %s"
+                     (buffer-name))))))))
 
 (defun cvs-parse-process (dcd &optional subdir old-fis)
   "Parse the output of a cvs process.