如何在目录本地文件中设置默认主模式?

JS0*_*JS0 10 emacs

由于某些复杂的原因,我想在C模式下打开某个目录中的文件(可以有任何名称,没有扩展名),我不想为Emacs修改它们(文件局部变量已经输出).然而,我正在努力与Emacs合作.我试着把它放到我的dir-locals.el中:

((nil . ((major-mode . c-mode))))
Run Code Online (Sandbox Code Playgroud)

虽然在从该目录打开文件时major-mode确实覆盖了变量c-mode,但是缓冲区上未启用C模式.发生了什么,如何申请?

或者,我可以添加auto-mode-alist到此目录的just,但我不知道如何通过目录本地.

另外,是否有一些简单的方法可以导致dir-locals.el执行代码?我知道这是不安全的,但它甚至可能是配置中的代码 - 只有在处理dir-locals的变量(打开文件)时才调用它.

感谢帮助.

Nic*_*out 12

除此之外eval,还有另一个特殊的变量mode可以帮助你.它与文件局部变量使用的变量相同.你也可以这样写:

((nil . ((mode . c))))
Run Code Online (Sandbox Code Playgroud)


Nic*_*out 8

.dir-locals.el您只能将变量设置为某个值.您的代码所做的是将major-mode变量设置为c-mode值.但是,这不是模式激活的方式.要激活它,您需要调用该函数c-mode.您可以设置一个特殊变量.dir-locals.el来运行一个函数:eval.

因此,以下代码有效:

((nil . ((eval . (c-mode)))))
Run Code Online (Sandbox Code Playgroud)