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

时间:2013-08-14 13:04:25

标签: emacs

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

((nil . ((major-mode . c-mode))))

虽然当我从该目录打开文件时major-mode变量确实被覆盖到c-mode,但缓冲区上没有启用C模式。发生了什么,我该如何申请?

或者,我可以只为此目录添加auto-mode-alist,但我不知道如何通过目录本地人这样做。

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

感谢您的帮助。

3 个答案:

答案 0 :(得分:12)

除了eval之外,还有另一个名为mode的特殊变量可以帮助您。它与文件局部变量使用的变量相同。你也可以写:

((nil . ((mode . c))))

答案 1 :(得分:8)

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

因此,以下代码有效:

((nil . ((eval . (c-mode)))))

答案 2 :(得分:2)

我无法回答你的第一个问题(事实上,我希望自己能够听到答案),但auto-mode-alist你可以拥有

(setq auto-mode-alist (cons '("<your dir path here>\." . c-mode) auto-mode-alist))`

这应该会给你想要的结果