Windows上的目录排序错误(使用Cygwin Emacs)

Windows上的目录排序错误(使用Cygwin Emacs),windows,emacs,cygwin,dired,Windows,Emacs,Cygwin,Dired,在Windows上的Cygwin Emacs中,在Dired中,如果我尝试按时间排序(例如),我会得到以下错误: insert-directory: Listing directory failed but `access-file' worked 在Windows上的Windows Emacs二进制文件中,我没有任何问题,但Emacs使用自己的lsIIUC实现 我不明白的是,Cygwinls确实理解诸如--dired和-t(按修改时间排序)之类的选项 我的当前配置: ;; Switches

在Windows上的Cygwin Emacs中,在Dired中,如果我尝试按时间排序(例如),我会得到以下错误:

insert-directory: Listing directory failed but `access-file' worked
在Windows上的Windows Emacs二进制文件中,我没有任何问题,但Emacs使用自己的
ls
IIUC实现

我不明白的是,Cygwin
ls
确实理解诸如
--dired
-t
(按修改时间排序)之类的选项

我的当前配置:

;; Switches passed to `ls' for Dired.
(setq dired-listing-switches
      (cond ((eq system-type 'windows-nt) ; Native Windows version of Emacs.
             "-a -F -l")
            (t                            ; Cygwin version of Emacs or ...
             "-a -F --group-directories-first -l --time-style=long-iso")))

尝试将
目录列表开关设置为
“-aFl”
,而不是
“-a-F-l”
。也许这会带来一些不同(但对我来说没有任何改变)

ls lisp use insert directory program
的值是多少?如果它是非
nil
尝试将其设置为
nil
,以便使用ls-lisp而不是Cygwin的
ls
。(至少作为一种尝试,你会想坚持下去。)

选项
ls lisp仿真
的价值是什么?如果是其他内容,请尝试将其自定义为
MS Windows
。(请务必阅读此选项的
C-h v
——例如,使用自定义。)


总之,我建议您首先尝试使用ls-lisp而不是Cygwin的
ls
让Dired正常工作。这至少会给你一个坚实的动力。如果你愿意,你仍然可以继续解决你的问题,比如说,让它与Cygwin Emacs一起工作。

这个
“-a-F-l”
字符串适用于Windows Emacs案例,而Dired排序在该版本的Emacs中工作正常。现在,我尝试从第二个字符串中删除选项,该字符串适用于所有其他版本的Emacs,当我删除
“--time style=long iso”
时,Dired排序工作正常。但是,我没有我想要的格式的日期…变量
ls lisp use insert directory program
在明确要求
ls lisp
之前未定义。在
(setq ls lisp use insert directory program nil)(require'ls lisp)
之后,它的值现在是
t
。不过,在使用ls lisp时,我在Dired缓冲区的开头有奇怪的额外列。请参阅。是否先尝试清除
--组目录
?当我添加那个开关时,我看到了你看到的。想必ls-lisp不支持该开关。在
-alF
-a-l-F
之间应该没有区别(我注意到没有),但是谁知道呢?根本的问题似乎与OSX上名为dired排序错误的线程有关:我不知道Cygwin是否可以配置为使用
coreutils
,它支持
--group directories first
选项。