Emacs ido:如何优先显示特定文件扩展名?

5

我在Emacs 24下使用ido-mode,以下是我的设置:

(ido-mode 1)
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(setq ido-use-filename-at-point 'guess)
(setq ido-use-url-at-point t)
(setq ffap-require-prefix t)

假设您在当前目录下有几个文件,名称相同但扩展名不同。如果您通过“C-x b”更改缓冲区,则会收到几个建议。这些建议的顺序是否可以在某种程度上受到影响?
例如,假设您在当前目录中有多个Sweave (.Rnw)文件。它们始终比从它们创建的相应(.tex)文件更重要。因此,在大多数情况下,您想将缓冲区更改为.Rnw文件,而不是.tex文件。因此,如果.Rnw文件和相同基本名称的.tex文件都存在于所有目录中,则最好首先建议.Rnw文件。
1个回答

8
如果您想调整默认文件排序,例如使Sweave文件首先出现,请告诉ido哪些文件应具有更高的排序优先级:
(setq ido-file-extensions-order '(".Rnw" ".tex"))

但是它只适用于ido-find-file,而不适用于ido-switch-buffer。缓冲区按最近的属性排序。我不知道是否有功能可以在最近的之上添加另一个排序属性。函数ido-file-extension-lessp可以用于以此方式对缓冲区列表进行排序。但是两种排序方式可能会相互冲突。

非常感谢,artscan。我尝试根据您的建议继续寻找,但是也没有找到ido-switch-buffer的“明显”答案。 - Marius Hofert
你有任何想法为什么这对我不起作用吗?什么都没改:(setq ido-file-extensions-order '(".py" ".r" ".cpp" ".tex" ".txt")?使用 ido-find-file 在文件夹中显示了一个 .log 文件。 - PascalVKooten
我猜您测试的是长度为1的文件名,比如"a.py"、"a.r"等等... 对于这种情况我也无法工作。但是,如果文件名长度超过1,例如"ab.py"、"ab.r"等等... 的话就可以。 - artscan
从我的测试来看,它首先按照文件扩展名之前的所有内容进行排序,然后仅当基本名称相同时才考虑扩展名排序。 - unhammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接