首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在目录本地文件中设置默认的主模式?

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

Stack Overflow用户
提问于 2013-08-14 13:04:24
回答 3查看 2K关注 0票数 12

由于一些复杂的原因,我想在C模式下打开某些目录中的文件(可以有任何名称,没有扩展名),而且我不想为Emacs (文件局部变量已经退出)修改它们。然而,我正和Emacs一起挣扎着去做。我试着把这个放到我的dir-locals.el

代码语言:javascript
复制
((nil . ((major-mode . c-mode))))

虽然当我从该目录打开文件时,major-mode变量确实被重写为c-mode,但缓冲区上没有启用C模式。这是怎么回事,我该如何申请?

或者,我可以只为这个目录添加到auto-mode-alist中,但是我不知道如何通过目录局部变量来实现这一点。

另外,有什么简单的方法可以导致从dir-locals.el中执行代码吗?我知道这是不安全的,但是它甚至可能是配置中的代码--关键是只有在处理来自dir-局部变量的变量时才调用它(打开文件)。

谢谢你帮忙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-14 14:13:58

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

因此,以下代码起作用:

代码语言:javascript
复制
((nil . ((eval . (c-mode)))))
票数 8
EN

Stack Overflow用户

发布于 2013-08-14 14:17:53

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

代码语言:javascript
复制
((nil . ((mode . c))))
票数 14
EN

Stack Overflow用户

发布于 2013-08-14 13:12:32

我不能回答你的第一个问题(事实上,我很想听你自己回答这个问题),但是我想知道你可以拥有的auto-mode-alist

代码语言:javascript
复制
(setq auto-mode-alist (cons '("<your dir path here>\." . c-mode) auto-mode-alist))`

这会给你你想要的结果

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18232535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档