# HG changeset patch # User Dan Nicolaescu # Date 1253476536 0 # Node ID 115d5f887b3489d55249c61069b96778158b6988 # Parent 5fc493595567854e2085d2f24f39cd927dca9470 (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. diff -r 5fc493595567 -r 115d5f887b34 lisp/ChangeLog --- 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 + * 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. diff -r 5fc493595567 -r 115d5f887b34 lisp/vc-dispatcher.el --- 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))