我正在致力于一个项目,标准缩进和标签是3个字符宽,它使用HTML,PHP和JavaScript的混合.由于我将Emacs用于所有内容,并且只想要该项目的3-char缩进,我在项目的根目录设置了一个".dir-locals.el"文件,以应用于它下面的所有文件/所有模式:
; Match projets's default indent of 3 spaces per level- and don't add tabs
(
(nil .
(
(tab-width . 3)
(c-basic-offset . 3)
(indent-tabs-mode . nil)
))
)
Run Code Online (Sandbox Code Playgroud)
我第一次打开文件时工作正常.切换主要模式时会出现问题 - 例如,在PHP文件中处理一大块文字HTML.然后我丢失了所有dir-local变量.
我还尝试明确说明我在".dir-locals.el"中使用的所有模式,并添加到我的.emacs文件"dir-locals-set-class-variables/dir-locals-set-directory-class ".我很高兴地说他们都表现得很稳定,最初设置dir-local变量,然后在切换主模式时丢失它们.
我正在使用GNU Emacs 24.3.1.
在切换缓冲区的主模式时,重新加载dir-local变量的优雅方法是什么?
- 编辑 - 感谢Aaron和phils的优秀答案和评论!在这里发帖之后,我认为它"闻起来"就像一个bug,因此向GNU发送报告将向他们发送这些讨论的参考.