comparison lisp/vc.el @ 94974:3a282ce8370c

Make vc-deduce-fileset do the right thing in derived buffers.
author Eric S. Raymond <esr@snark.thyrsus.com>
date Wed, 14 May 2008 17:12:38 +0000
parents 9e19bca35d7f
children b8d24d4a4bdc
comparison
equal deleted inserted replaced
94973:c7204aaea55b 94974:3a282ce8370c
980 (vc-file-tree-walk 980 (vc-file-tree-walk
981 node (lambda (f) (when (vc-backend f) (push f flattened))))) 981 node (lambda (f) (when (vc-backend f) (push f flattened)))))
982 (push node flattened)) 982 (push node flattened))
983 (nreverse flattened))) 983 (nreverse flattened)))
984 984
985 (defun vc-derived-from-dir-mode (&optional buffer)
986 "Are we in a VC-directory buffer, or do we have one as an ancestor?"
987 (let ((buffer (or buffer (current-buffer))))
988 (cond ((derived-mode-p 'vc-dir-mode) t)
989 (vc-parent-buffer (vc-derived-from-dir-mode vc-parent-buffer))
990 (t nil))))
991
985 (defun vc-deduce-fileset (&optional observer) 992 (defun vc-deduce-fileset (&optional observer)
986 "Deduce a set of files and a backend to which to apply an operation and 993 "Deduce a set of files and a backend to which to apply an operation and
987 the common state of the fileset. Return (BACKEND . FILESET)." 994 the common state of the fileset. Return (BACKEND . FILESET)."
988 (let* ((fileset (vc-dispatcher-selection-set observer)) 995 (let* ((fileset (vc-dispatcher-selection-set observer))
989 ;; FIXME: Store the backend in a buffer-local variable. 996 ;; FIXME: Store the backend in a buffer-local variable.
990 (backend (if (derived-mode-p 'vc-dir-mode) 997 (backend (if (vc-derived-from-dir-mode (current-buffer))
991 (vc-responsible-backend default-directory) 998 (vc-responsible-backend default-directory)
992 (assert (and (= 1 (length fileset)) 999 (assert (and (= 1 (length fileset))
993 (not (file-directory-p (car fileset))))) 1000 (not (file-directory-p (car fileset)))))
994 (vc-backend (car fileset))))) 1001 (vc-backend (car fileset)))))
995 (cons backend fileset))) 1002 (cons backend fileset)))