Turned off ls-list for Cygwin to make Dired work for dirs with special files from WSL P9 FS.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Sun, 13 Dec 2020 20:00:18 +0200
changeset 1652 e72b61b36451
parent 1651 5924c33ab4ad
child 1653 c9e9a3912a95
Turned off ls-list for Cygwin to make Dired work for dirs with special files from WSL P9 FS.
.emacs-my
--- a/.emacs-my	Sun Dec 13 19:17:21 2020 +0200
+++ b/.emacs-my	Sun Dec 13 20:00:18 2020 +0200
@@ -1381,13 +1381,24 @@
 
 (require 'ls-lisp)
 
-;; If non-nil - use 'insert-directory-program', which I dislike.
+;; If non-nil - use 'insert-directory-program', means directory sorting and
+;; other options for `ls-lisp' do not have effect.
 (setq ls-lisp-use-insert-directory-program nil)
 (setq ls-lisp-ignore-case t)
 (setq ls-lisp-dirs-first t)
 (if (memq system-type '(windows-nt cygwin))
     (setq ls-lisp-verbosity nil)
-  (setq  ls-lisp-verbosity '(links uid gid)))
+  (setq ls-lisp-verbosity '(links uid gid)))
+
+;; On Cygwin use actual "ls" executable. List implementation fails with:
+;;   ls-lisp-insert-directory: Getting attributes: Input/output error, lock
+;; for some files, making it impossible to see directory contend in Dired even
+;; if only some files are problmatic (accessing special files from WSL P9 file system).
+(when (eq system-type 'cygwin)
+  (setq my-ls-dir-switches '("-a" "-g" "--no-group" "--dired" "--group-directories-first"))
+  (setq ls-lisp-use-insert-directory-program t)
+  (setq list-directory-verbose-switches my-ls-dir-switches)
+  (setq dired-listing-switches (mapconcat #'identity my-ls-dir-switches " ")))
 ;; Force use 'ls-lisp-format-time-list'.
 (setq ls-lisp-use-localized-time-format t)
 (setq ls-lisp-format-time-list