dired 似乎没有提供一个接口来根据任意比较器函数对文件/文件夹进行排序。(默认情况下,它只允许按名称和日期排序)。
为了确定这种排序的机制,我一直在深入研究源代码,我发现是对(revert-buffer)
in dired-sort-toggle
(in dired.el
) 的调用进行了重新显示。这让我意识到 dired 只是运行带有某些开关的 ls 命令,然后将输出读入缓冲区。
有没有比将 dired 的 ls 函数指向自定义函数更好的方法来实现这种自定义排序?我觉得可能有一个变量在 dired 缓冲区中保存文件/目录的有序列表,我可能会重新安排它。
我找到了变量dired-subdir-alist
,但这似乎只包含顶级目录(即使根据文档,这似乎正是我想要的列表)
dired-subdir-alist 是在 `dired.el' 中定义的变量。文档:子目录及其缓冲区位置的关联列表。每个子目录都有一个元素:(DIRNAME . STARTMARKER)。元素的顺序与缓冲区中的顺序相反。在简单的情况下,此列表包含一个元素。
我怎么能找到这样的变量?