Subject: bug#5054: Asynchronous vc-bzr-diff (Man truncated)

From: Juri Linkov <[email-masked]>
Date: Wed, 13 Jan 2010 02:28:33 +0200

>   > It seems the bzr vc backend needs the same treatment.
>   >
>   > When `vc-diff' reports that there are no differences, then vc
>   > displays the *vc-diff* buffer with a single line in it:
>   >
>   >   No changes between working revision and workfile.
>   >
>
> This is due to this code in vc.el:vc-diff-internal
>
>     (if (and (zerop (buffer-size))
>              (not (get-buffer-process (current-buffer))))
>         ;; Treat this case specially so as not to pop the buffer.
>         (progn
>           (message "%s" (cdr messages))
>           nil)

I see that the difference is at `(get-buffer-process (current-buffer))'.
When the process is slow, it is still running at the time when execution
arrives to this condition.

>   > bzr's behavior differs from the git backend that doesn't display the
>   > *vc-diff* buffer.  It displays this line only in the echo area.
>
> vc-git-diff does not call the diff command asynchronously (probably
> because nobody had a problem with it being synchronous), but vc-bzr-diff
> is asynchronous.

I too see no problem with git being synchronous.

-- 
Juri Linkov
http://www.jurta.org/emacs/