运行 opening/finding 文件之前的函数

Running a function before opening/finding a file

我正在尝试创建一个函数,该函数应该在缓冲区中的文件 opened/shown 之前 运行。这个函数真的只需要运行一次。

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

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

为什么?

基本上,在使用任何模板语言时,我通常想使用 web-mode,而在编写 "pure" 代码时,我想使用该语言的模式。

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

我知道我可以轻松地手动更改模式,但我宁愿让 Emacs 来完成。

您可能希望将函数放入 find-file-hook。 当它是 运行 时,major-mode 已经设置,但您可以更改它。

如果您拥有相关文件,您可能还想探索 file variables

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