我使用一个名为dired-details和dired-details +的库来简化dired的显示,这样就像这样一行:
-rw-r--r--@ 1 peter staff 22571 Apr 15 16:05 foo.txt
Run Code Online (Sandbox Code Playgroud)
显示如下:
foo.txt
Run Code Online (Sandbox Code Playgroud)
但是,我有另一个函数,它将所有目录放在列表的顶部:
(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))
Run Code Online (Sandbox Code Playgroud)
并且这第二个函数干扰了dired-details,这样当我C-x d打开一个dired缓冲区时,初始显示会显示完整的无关细节.只需按下g以revert-buffer
刷新显示,目录详细信息就会隐藏.
如何在所有直接显示中默认启用隐藏详细信息?
Dre*_*rew 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
并将选项diredp-hide-details-initially-flag
设置为非nil
.
Wrt首先排序目录:你是MS Windows吗?如果是这样,请考虑使用库dired-sort-menu.el
和dired-sort-menu+.el
.它可以让你做到这一点以及更多.
UPDATE
问题是dired-details缓存了用于隐藏细节的叠加层列表.它已经完成了它的工作(因为dired-after-readin-hook
),在你的排序完成之前,它改变了缓冲区而没有更新缓存信息.这将解决问题(可能有更优雅的方式,但这样做):
(defadvice dired-readin
(after dired-after-updating-hook first () activate)
"Sort dired listings with directories first before adding marks."
(mydired-sort)
(let ((dired-details-internal-overlay-list ())) (dired-details-hide)))
Run Code Online (Sandbox Code Playgroud)