Fix default-directory for vc-root-diff.
authorDan Nicolaescu <dann@ics.uci.edu>
Wed, 7 Apr 2010 04:14:56 +0000 (21:14 -0700)
committerDan Nicolaescu <dann@ics.uci.edu>
Wed, 7 Apr 2010 04:14:56 +0000 (21:14 -0700)
* vc.el (vc-root-diff): Bind default-directory to the root
directory for the diff command.

lisp/ChangeLog
lisp/vc.el

index 5f50546..1fda3ac 100644 (file)
@@ -1,3 +1,9 @@
+2010-04-07  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       Fix default-directory for vc-root-diff.
+       * vc.el (vc-root-diff): Bind default-directory to the root
+       directory for the diff command.
+
 2010-04-07  Michael McNamara  <mac@mail.brushroad.com>
 
         * verilog-mode.el (verilog-forward-sexp, verilog-calc-1): Support
index 142a150..aef5fad 100644 (file)
@@ -1642,9 +1642,14 @@ saving the buffer."
        (error "Buffer is not version controlled"))
       (setq rootdir (vc-call-backend backend 'root default-directory))
       (setq working-revision (vc-working-revision rootdir))
-      (vc-diff-internal
-       t (list backend (list rootdir) working-revision) nil nil
-       (called-interactively-p 'interactive)))))
+      ;; VC diff for the root directory produces output that is
+      ;; relative to it.  Bind default-directory to the root directory
+      ;; here, this way the *vc-diff* buffer is setup correctly, so
+      ;; relative file names work.
+      (let ((default-directory rootdir))
+       (vc-diff-internal
+        t (list backend (list rootdir) working-revision) nil nil
+        (called-interactively-p 'interactive))))))
 
 ;;;###autoload
 (defun vc-revision-other-window (rev)