Rodney Sparapani wrote:
Rodney Sparapani wrote:
>> BTW, I just tried using vc+dired integration for the first time and either I
>> don't understand how it works (which is quite likely as I've never really
>> used dired either) or it's quite broken; I get "dired-subdir-alist seems
to
>> be mangled" when I try to do something in a vc-dired-mode buffer.
> Same here and, for me, dired-subdir-alist is nil. This variable comes
> from dired.el and the error message must be coming from the function
> also defined therein, dired-current-directory
>
I get it now. dired-current-directory is supposed to look at your
vc-dired buffer and determine if the file you are checking in is
in the current default-directory or in a subdirectory thereof.
However, it can't seem to figure out the way subdirectories are
encoded in the buffer. So, it barfs. But, if you have it return
something sensible, like default-directory, then it prompts you for
a log and checks in the marked file. I haven't tried multiple
files yet. No idea how to fix it completely.
I suppose, technically, some of these are separate issues, but all will
crop up if you use the VC submenu sooner or later. So, I've shoe-horned
in an ugly workaround, that will at least allow VC dired mode to work.
However, marking still pukes with:
Debugger entered--Lisp error: (wrong-type-argument
number-char-or-marker-p nil)
dired-get-subdir()
dired-mark(1)
call-interactively(dired-mark)
So there is some disagreement between dired and VC, however, dired only
seems to be working fine. Hopefully, the hack will not create more
havoc than it fixes. But, this investigation led to another bug
discovery. vc-directory does not turn on vc-dired-mode! FYI. Here's
my combo hack/bug-fix for vc.el FWIW:
(defun vc-directory (dir read-switches)
"Create a buffer in VC Dired Mode for directory DIR.
See Info node `VC Dired Mode'.
With prefix arg READ-SWITCHES, specify a value to override
`dired-listing-switches' when generating the listing."
(interactive "DDired under VC (directory): \nP")
(let ((vc-dired-switches (concat vc-dired-listing-switches
(if vc-dired-recurse "R" ""))))
(if (eq (string-match tramp-file-name-regexp dir) 0)
(error "Sorry, vc-directory does not work over Tramp"))
(if read-switches
(setq vc-dired-switches
(read-string "Dired listing switches: "
vc-dired-switches)))
(require 'dired)
;; XEmacs change: we don't have/need(?) dired-aux
;(require 'dired-aux)
(switch-to-buffer
(dired-internal-noselect (expand-file-name (file-name-as-directory
dir))
vc-dired-switches
'vc-dired-mode))
;the above line does not turn on vc-dired-mode, why god, why?
;so I added the next one
(vc-dired-mode)
;3/3/9
;This is a temporary workaround until the problems between dired and VC
;can be finally fixed. As long as vc-dired is only used on one subdir
;at a time this should work. However, if you need to do anything with
;dired afterwards, you may run into trouble. Beware!
(defun dired-current-directory (&optional localp)
"Return the name of the subdirectory to which this line belongs.
This returns a string with trailing slash, like `default-directory'.
Optional argument means return a file name relative to `default-directory'.
In this it returns \"\" for the top directory."
(interactive)
(if localp "./" default-directory))
))
Rodney
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-beta