我试图创建一个应该在缓冲区中打开/显示文件之前运行的函数。这个功能实际上只需要运行一次。
我尝试根据即将查看的文件内容设置模式。我知道add-to-list 'auto-mode-alist <filename-regexp> . <mode>
但这还不够。理想情况下,我想要解析文件(或只是其中的一小部分)并在设置模式之前检查文件内容。通常视图文件(在mvc框架中认为.js / .php等)与“纯”代码中的文件具有相同的扩展名,所以我不能检查文件扩展名。
为什么?
基本上使用任何模板语言时我通常都想使用web-mode
,而在做“纯”代码时,我想使用该语言的模式。
所以基本上我想要解析之前的文件,并检查一些正则表达式,如果匹配,我会设置web-mode
,如果没有,我会设置我想要使用的语言模式。
我知道我可以轻松地手动更改模式,但我宁愿由Emacs完成此操作。
答案 0 :(得分:1)
您可以使用magic-mode-alist
。您可能希望使用MATCH-FUNCTION来检查缓冲区的文件名及其内容。
答案 1 :(得分:0)
您可能希望将您的功能放入find-file-hook
。
运行时,major-mode
已设置,但您可以更改它。
如果您拥有相关文件,则可能还需要浏览file variables。