]> git.eshelyaron.com Git - emacs.git/commitdiff
Make vc-deduce-fileset do the right thing in derived buffers.
authorEric S. Raymond <esr@snark.thyrsus.com>
Wed, 14 May 2008 17:12:38 +0000 (17:12 +0000)
committerEric S. Raymond <esr@snark.thyrsus.com>
Wed, 14 May 2008 17:12:38 +0000 (17:12 +0000)
lisp/ChangeLog
lisp/vc.el

index 524dd2923f8f5a9407f623573c8f9218b340e95e..21fc108c895209e6f1c07a7b8bc5ee2428bf86c0 100644 (file)
@@ -1,3 +1,8 @@
+2008-05-14  Eric S. Raymond  <esr@snark.thyrsus.com>
+
+       * vc.el (vc-deduce-fileset): Do the right thing when visting a
+       buffer (say, a log buffer or diff buffer) with a vc-dir buffer as parent.
+
 2008-05-14  John Paul Wallington  <jpw@pobox.com>
 
        * international/mule.el (convert-define-charset-argument): Remove
index 2795912dca1d4debc674dff502e595218016f32a..d2791587fc36a998f64d9d04df099e7e04d0d05b 100644 (file)
@@ -982,12 +982,19 @@ Within directories, only files already under version control are noticed."
       (push node flattened))
     (nreverse flattened)))
 
+(defun vc-derived-from-dir-mode (&optional buffer)
+  "Are we in a VC-directory buffer, or do we have one as an ancestor?"
+  (let ((buffer (or buffer (current-buffer))))
+    (cond ((derived-mode-p 'vc-dir-mode) t)
+         (vc-parent-buffer (vc-derived-from-dir-mode vc-parent-buffer))
+         (t nil))))
+
 (defun vc-deduce-fileset (&optional observer)
   "Deduce a set of files and a backend to which to apply an operation and
 the common state of the fileset.  Return (BACKEND . FILESET)."
   (let* ((fileset (vc-dispatcher-selection-set observer))
          ;; FIXME: Store the backend in a buffer-local variable.
-         (backend (if (derived-mode-p 'vc-dir-mode)
+         (backend (if (vc-derived-from-dir-mode (current-buffer))
                       (vc-responsible-backend default-directory)
                     (assert (and (= 1 (length fileset))
                                  (not (file-directory-p (car fileset)))))