在打开/查找文件之前运行一个函数

时间:2015-08-13 10:33:08

标签: emacs elisp

我试图创建一个应该在缓冲区中打开/显示文件之前运行的函数。这个功能实际上只需要运行一次。

我尝试根据即将查看的文件内容设置模式。我知道add-to-list 'auto-mode-alist <filename-regexp> . <mode>

但这还不够。理想情况下,我想要解析文件(或只是其中的一小部分)并在设置模式之前检查文件内容。通常视图文件(在mvc框架中认为.js / .php等)与“纯”代码中的文件具有相同的扩展名,所以我不能检查文件扩展名。

为什么?

基本上使用任何模板语言时我通常都想使用web-mode,而在做“纯”代码时,我想使用该语言的模式。

所以基本上我想要解析之前的文件,并检查一些正则表达式,如果匹配,我会设置web-mode,如果没有,我会设置我想要使用的语言模式。

我知道我可以轻松地手动更改模式,但我宁愿由Emacs完成此操作。

2 个答案:

答案 0 :(得分:1)

您可以使用magic-mode-alist。您可能希望使用MATCH-FUNCTION来检查缓冲区的文件名及其内容。

答案 1 :(得分:0)

您可能希望将您的功能放入find-file-hook。 运行时,major-mode已设置,但您可以更改它。

如果您拥有相关文件,则可能还需要浏览file variables