在Emacs中,如何启用自动隐藏dired细节?

时间:2014-04-21 23:51:54

标签: emacs dired

我使用一个名为dired-details和dired-details +的库来简化dired的显示,这样就像这样一行:

-rw-r--r--@  1 peter  staff  22571 Apr 15 16:05 foo.txt

显示如下:

foo.txt

但是,我有另一个函数,它将所有目录放在列表的顶部:

(defun mydired-sort ()
"Sort dired listings with directories first."
(save-excursion
 (let (buffer-read-only)
  (forward-line 2) ;; beyond dir. header
  (sort-regexp-fields t "^.*$" "[ ]*." (point) (point-max)))
(set-buffer-modified-p nil)))

(defadvice dired-readin
(after dired-after-updating-hook first () activate)
 "Sort dired listings with directories first before adding marks."
 (mydired-sort))

并且第二个函数干扰了dired-details,这样当我 C-x d 打开一个dired缓冲区时,初始显示会显示完整的无关细节。只需按 g revert-buffer刷新显示,目录详细信息就会隐藏。

如何在所有直接显示中默认启用隐藏详细信息?

1 个答案:

答案 0 :(得分:11)

首先,如果您使用Emacs 24.4或更高版本(或24.3之后的开发版本),那么您不再需要 dired-details.eldired-details+.el。从Emacs 24.4开始,默认情况下隐藏了Dired列表详细信息。 dired-hide-details-mode是相关模式。

如果您使用dired+.elDired+),那么您可以更轻松地利用这一新行为 - 它为您提供dired-details+.el提供的所有功能。随时使用(切换此隐藏。您可以使用 Dired + 选项 diredp-hide-details-initially-flag更改默认/初始状态。另见选项diredp-hide-details-propagate-flag

如果您使用的是Emacs 24.4之前的Emacs版本(因此您需要dired-details[+].el),请尝试加载dired-details+.el(将加载dired-details.el 您已经评估了上面的代码。如果这没有帮助,请尝试在defadvice (mydired-sort)之后添加到(dired-details-hide)正文中。如果这不起作用,那么我们需要进一步了解。

如果您可以升级您的Emacs版本,那么您很快就可以使用Emacs 24.4(现在进行预测试),在这种情况下,您应该只需加载dired+.el并设置选项{{1} }到非diredp-hide-details-initially-flag

Wrt首先对目录进行排序:你在MS Windows上吗?如果是,请考虑使用库dired-sort-menu.eldired-sort-menu+.el。它可以让你做到这一点以及更多。


<强>更新

问题在于dired-details缓存了用于隐藏细节的叠加列表。在排序完成之前,它已经完成了它的工作(因为nil),并且在不更新缓存信息的情况下更改了缓冲区。这将解决问题(可能有更优雅的方式,但这样做):

dired-after-readin-hook