我使用一个名为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
刷新显示,目录详细信息就会隐藏。
如何在所有直接显示中默认启用隐藏详细信息?
答案 0 :(得分:11)
首先,如果您使用Emacs 24.4或更高版本(或24.3之后的开发版本),那么您不再需要 dired-details.el
或dired-details+.el
。从Emacs 24.4开始,默认情况下隐藏了Dired列表详细信息。 dired-hide-details-mode
是相关模式。
如果您使用dired+.el(Dired+),那么您可以更轻松地利用这一新行为 - 它为您提供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.el
和dired-sort-menu+.el
。它可以让你做到这一点以及更多。
<强>更新强>
问题在于dired-details缓存了用于隐藏细节的叠加列表。在排序完成之前,它已经完成了它的工作(因为nil
),并且在不更新缓存信息的情况下更改了缓冲区。这将解决问题(可能有更优雅的方式,但这样做):
dired-after-readin-hook