changeset 97118:48b4d1b43ea2

(vc-dir): Call file-truename on the dir argument.
author Sam Steingold <sds@gnu.org>
date Wed, 30 Jul 2008 14:59:08 +0000
parents 7f5effb50ce7
children b57392641da7
files lisp/ChangeLog lisp/vc-dir.el
diffstat 2 files changed, 17 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Jul 30 14:50:08 2008 +0000
+++ b/lisp/ChangeLog	Wed Jul 30 14:59:08 2008 +0000
@@ -1,3 +1,7 @@
+2008-07-30  Sam Steingold  <sds@gnu.org>
+
+	* vc-dir.el (vc-dir): Call file-truename on the dir argument.
+
 2008-07-30  Dan Nicolaescu  <dann@ics.uci.edu>
 
 	* vc-dir.el (vc-dir-menu-map, vc-at-event): Fix docstring.
--- a/lisp/vc-dir.el	Wed Jul 30 14:50:08 2008 +0000
+++ b/lisp/vc-dir.el	Wed Jul 30 14:59:08 2008 +0000
@@ -206,7 +206,7 @@
       '(menu-item "Register" vc-register
 		  :help "Register file set into the version control system"))
     map)
-  "Menu for VC dir")
+  "Menu for dispatcher status")
 
 ;; VC backends can use this to add mode-specific menu items to
 ;; vc-dir-menu-map.
@@ -231,9 +231,8 @@
     (define-key map "+" 'vc-update)	   ;; C-x v +
     (define-key map "l" 'vc-print-log)	   ;; C-x v l
     ;; More confusing than helpful, probably
-    ;;(define-key map "R" 'vc-revert) ;; u is taken by vc-dir-unmark.
-    ;;(define-key map "A" 'vc-annotate) ;; g is taken by revert-buffer
-    ;;                                     bound by `special-mode'.
+    ;;(define-key map "R" 'vc-revert) ;; u is taken by dispatcher unmark.
+    ;;(define-key map "A" 'vc-annotate) ;; g is taken by dispatcher refresh
     ;; Marking.
     (define-key map "m" 'vc-dir-mark)
     (define-key map "M" 'vc-dir-mark-all-files)
@@ -286,7 +285,7 @@
          ,@body))))
 
 (defun vc-dir-menu (e)
-  "Popup the VC dir menu."
+  "Popup the dispatcher status menu."
   (interactive "e")
   (vc-at-event e (popup-menu vc-dir-menu-map e)))
 
@@ -872,7 +871,7 @@
 (defvar use-vc-backend)  ;; dynamically bound
 
 (define-derived-mode vc-dir-mode special-mode "VC dir"
-  "Major mode for VC directory buffers.
+  "Major mode for dispatcher directory buffers.
 Marking/Unmarking key bindings and actions:
 m - marks a file/directory or if the region is active, mark all the files
      in region.
@@ -890,19 +889,6 @@
   - if the cursor is on a directory: unmark all child files
   - with a prefix argument: unmark all files
 
-VC commands
-VC commands in the `C-x v' can be used, they act on the marked
-entries, or on the current entry if nothing is marked.
-
-Search & Replace
-S - searches the marked files
-Q - does a query replace on the marked files
-M-s a C-s - does an isearch on the marked files
-M-s a C-M-s - does an isearch on the marked files
-If nothing is marked, these commands act on the current entry.
-When a directory is current or marked, the Search & Replace
-commands act on the files in those directories displayed in the
-*vc-dir* buffer.
 
 \\{vc-dir-mode-map}"
   (set (make-local-variable 'vc-dir-backend) use-vc-backend)
@@ -1107,9 +1093,14 @@
 Interactively, a prefix argument means to ask for the backend."
   (interactive
    (list
-    (read-file-name "VC status for directory: "
-		    default-directory default-directory t
-		    nil #'file-directory-p)
+    ;; When you hit C-x v d in a visited VC file,
+    ;; the *vc-dir* buffer visits the directory under its truename;
+    ;; therefore it makes sense to always do that.
+    ;; Otherwise if you do C-x v d -> C-x C-f -> C-c v d
+    ;; you may get a new *vc-dir* buffer, different from the original
+    (file-truename (read-file-name "VC status for directory: "
+                                   default-directory default-directory t
+                                   nil #'file-directory-p))
     (if current-prefix-arg
 	(intern
 	 (completing-read