我通常使用4个空格来缩进C程序,但是为了与某些开源项目保持一致,我有时需要更改为2-white-space缩进。
目前我的缩进样式已在我的.emacs文件中分配
(setq c-basic-offset 4)
当我想要处理那些2-white-space缩进项目时。我必须关闭我的Emacs,修改值,然后重新开始。有没有更简单的方法呢?
非常感谢。
PS。 每次打开源文件时设置c-basic-offset变量太多了,是否可以根据工作目录选择不同的值?
答案 0 :(得分:9)
在要自定义名为.dir-locals.el
的目录中创建一个文件,并将其编辑为包含:
((c-mode . ((c-basic-offset . 4))))
注意:这是Emacs 23.1中的新功能。
这利用了Per-Directory Local Variables。从链接中的文档:
.dir-locals.el
文件应该 持有一个特别建造的清单。 此列表映射Emacs模式名称 (符号)到alists;每个人 指定要使用的变量的值 当相应的模式打开时。 特殊模式名称“nil”表示 它的列表适用于任何模式。 您可以使用而不是模式名称 指定一个名称为a的字符串 项目的子目录 目录;然后相应的 alist适用于其中的所有文件 子目录。这是一个例子
.dir-locals.el
档案:((nil . ((indent-tabs-mode . t) (tab-width . 4) (fill-column . 80))) (c-mode . ((c-file-style . "BSD"))) (java-mode . ((c-file-style . "BSD"))) ("src/imported" . ((nil . ((change-log-default-name . "ChangeLog.local"))))))
答案 1 :(得分:2)
另一种方法是在我的.emacs中使用样式选择器alist:http://github.com/stsquad/my-emacs-stuff/blob/master/my-c-mode.el#L103
您也可以在源代码中使用缓冲区局部变量来设置这些内容,但这通常取决于您在源代码中对它们感到高兴的项目。