I
have "GNU Emacs 22.2.1
(i486-pc-linux-gnu, GTK+ Version 2.14.1)
of 2008-09-05 on vernadsky, modified by Ubuntu," known as emacs22-gtk by my
distro.
I like
--group-directories-first as an ls switch: (setq dired-listing-switches
"-al --group-directories-first")
In dired, when I do a file operation such as R-rename
or M-chmod, the system file operation works, but the dired buffer does not
update properly, giving: Listing directory failed but `access-file'
worked
This is because a
character "d" is being appended to dired-actual-switches about 50 lines into
dired-add-entry:
(dired-insert-directory
directory
(concat dired-actual-switches
"d")
(list
filename)))
Just concatenating
"d" assumes short switches. For example "-ald" works fine. But "-al
--group-directories-firstd" fails.
I fixed my installation by putting
" -d" instead of "d". This seems to work
just fine for files and directories
Here is the debugger
backtrace:
Debugger
entered--Lisp error: (error "Listing directory failed but `access-file'
worked")
signal(error ("Listing directory failed but `access-file'
worked"))
error("Listing directory failed but `access-file'
worked")
insert-directory("foobar" "--dired -al
--group-directories-firstd" nil nil)
dired-insert-directory("/home/dmb/bin/" "-al --group-directories-firstd"
("foobar"))
(let ((default-directory directory))
(dired-insert-directory directory (concat dired-actual-switches "d") (list
filename)))
(let (buffer-read-only opoint) (beginning-of-line) (setq
opoint (point)) (let (...)
(dired-insert-directory directory ... ...)) (goto-char opoint) (when marker-char
(let ... ...)) (goto-char opoint) (let (...) (if ... ... ...)) (forward-line -1)
(if dired-after-readin-hook (save-excursion ...))
(dired-move-to-filename))
(catch (quote not-found) (if (string=
directory cur-dir) (progn ... ... ...) (if ... ... ...)) (let (buffer-read-only
opoint) (beginning-of-line) (setq opoint ...) (let ... ... ...) (goto-char
opoint) (when marker-char ...) (goto-char opoint) (let ... ...) (forward-line
-1) (if dired-after-readin-hook ...) (dired-move-to-filename)) nil)
(setq filename (if relative (file-relative-name filename directory)
(file-name-nondirectory filename)) reason (catch (quote not-found) (if ... ...
...) (let ... ... ... ... ... ... ... ... ... ... ...) nil))
(let*
((opoint ...) (cur-dir ...) (orig-file-name filename) (directory ...) reason)
(setq filename (if relative ... ...) reason (catch ... ... ... nil)) (if reason
(goto-char opoint)) (not reason))
dired-add-entry("/home/dmb/bin/foobar" nil)
apply(dired-add-entry
("/home/dmb/bin/foobar" nil))
dired-fun-in-all-buffers("/home/dmb/bin/" "foobar" dired-add-entry
"/home/dmb/bin/foobar" nil)
dired-add-file("/home/dmb/bin/foobar"
nil)
byte-code(" \n#ˆ\fƒ