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ƒ