changeset 105130:115d5f887b34

(vc-do-command): Return the process object in the asynchronous case. Use when instead of if. Do not run vc-exec-after to display a message if not enabled.
author Dan Nicolaescu <dann@ics.uci.edu>
date Sun, 20 Sep 2009 19:55:36 +0000
parents 5fc493595567
children 04a7d9439cd0
files lisp/ChangeLog lisp/vc-dispatcher.el
diffstat 2 files changed, 18 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sun Sep 20 19:51:35 2009 +0000
+++ b/lisp/ChangeLog	Sun Sep 20 19:55:36 2009 +0000
@@ -1,5 +1,9 @@
 2009-09-20  Dan Nicolaescu  <dann@ics.uci.edu>
 
+	* vc-dispatcher.el (vc-do-command): Return the process object in
+	the asynchronous case.  Use when instead of if.  Do not run
+	vc-exec-after to display a message if not enabled.
+
 	* vc-git.el (vc-git-dir-extra-headers): Add keymap and mouse-face
 	properties to the stash strings.
 	(vc-git-stash-list): Return a list of strings.
--- a/lisp/vc-dispatcher.el	Sun Sep 20 19:51:35 2009 +0000
+++ b/lisp/vc-dispatcher.el	Sun Sep 20 19:55:36 2009 +0000
@@ -87,7 +87,7 @@
 ;;
 ;; The main interface to the lower level is vc-do-command.  This launches a
 ;; command, synchronously or asynchronously, making the output available
-;; in a command log buffer.  Two other functions, (vc-start-annotation) and
+;; in a command log buffer.  Two other functions, (vc-start-logentry) and
 ;; (vc-finish-logentry), allow you to associate a command closure with an
 ;; annotation buffer so that when the user confirms the comment the closure
 ;; is run (with the comment as part of its context).
@@ -280,7 +280,9 @@
 FILE-OR-LIST is the name of a working file; it may be a list of
 files or be nil (to execute commands that don't expect a file
 name or set of files).  If an optional list of FLAGS is present,
-that is inserted into the command line before the filename."
+that is inserted into the command line before the filename.
+Return the return value of the slave command in the synchronous
+case, and the process object in the asynchronous case."
   ;; FIXME: file-relative-name can return a bogus result because
   ;; it doesn't look at the actual file-system to see if symlinks
   ;; come into play.
@@ -310,7 +312,7 @@
         ;; something, we'd have used vc-eval-after.
         ;; Use `delete-process' rather than `kill-process' because we don't
         ;; want any of its output to appear from now on.
-        (if oldproc (delete-process oldproc)))
+        (when oldproc (delete-process oldproc)))
       (let ((squeezed (remq nil flags))
 	    (inhibit-read-only t)
 	    (status 0))
@@ -330,13 +332,14 @@
 		     (let ((process-connection-type nil))
 		       (apply 'start-file-process command (current-buffer)
                               command squeezed))))
-		(if vc-command-messages
-		    (message "Running %s in background..." full-command))
+		(when vc-command-messages
+		  (message "Running %s in background..." full-command))
 		;;(set-process-sentinel proc (lambda (p msg) (delete-process p)))
 		(set-process-filter proc 'vc-process-filter)
-		(vc-exec-after
-		 `(if vc-command-messages
-		      (message "Running %s in background... done" ',full-command))))
+		(setq status proc)
+		(when vc-command-messages
+		  (vc-exec-after
+		   `(message "Running %s in background... done" ',full-command))))
 	    ;; Run synchronously
 	    (when vc-command-messages
 	      (message "Running %s in foreground..." full-command))
@@ -350,11 +353,9 @@
                 (goto-char (point-min))
                 (shrink-window-if-larger-than-buffer))
 	      (error "Running %s...FAILED (%s)" full-command
-		     (if (integerp status) (format "status %d" status) status))))
-	  ;; We're done.  But don't emit a status message if running
-	  ;; asynchronously, it would just mislead.
-	  (if (and vc-command-messages (not (eq okstatus 'async)))
-	      (message "Running %s...OK = %d" full-command status)))
+		     (if (integerp status) (format "status %d" status) status)))
+	    (when vc-command-messages
+	      (message "Running %s...OK = %d" full-command status))))
 	(vc-exec-after
 	 `(run-hook-with-args 'vc-post-command-functions
 			      ',command ',file-or-list ',flags))