【问题标题】:Error in Dired sorting on Windows (with Cygwin Emacs)Windows 上的 Dired 排序错误(使用 Cygwin Emacs)
【发布时间】:2015-06-08 14:58:13
【问题描述】:

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

insert-directory: Listing directory failed but `access-file' worked

在 Windows 上的 Windows Emacs 二进制文件中,我没有任何问题,但 Emacs 使用自己的 lsIIUC 实现。

我不明白的是 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")))

【问题讨论】:

  • 潜在问题似乎与题为 OS X 上的直接排序错误 的线程有关:stackoverflow.com/q/4076360/2112489 我不知道 Cygwin 是否可以配置为使用 @987654328 @,支持--group-directories-first 选项。

标签: windows emacs cygwin dired


【解决方案1】:

尝试将dired-listing-switches 设置为"-aFl" 而不是"-a -F -l"。也许这会有所作为(但对我来说没有任何改变)。

ls-lisp-use-insert-directory-program 的价值是多少?如果它不是nil,请尝试将其设置为nil,这样您就可以使用ls-lisp 而不是Cygwin 的ls。 (至少可以尝试一下,也许你会想坚持下去。)

您选择ls-lisp-emulation 的价值是多少?如果是其他内容,请尝试将其自定义为 MS-Windows。 (请务必阅读 C-h v 了解此选项 - 例如,使用自定义。)

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

【讨论】:

  • "-a -F -l"string 适用于 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 缓冲区的开头有奇怪的额外列。见screencast.com/t/iZlDIKlzy8
  • 尝试摆脱--group-directories-first?当我添加那个开关时,我看到了你所看到的。大概 ls-lisp 不支持该开关。 -alF-a -l -F 之间应该没有区别(我没有注意到),但谁知道呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多