我通常使用4个空格来缩进C程序,但为了与某些开源项目保持一致,我有时需要更改为2-white-space缩进.
目前我的缩进样式在我的.emacs文件中分配
(setq c-basic-offset 4)
当我想要处理那些2-white-space缩进项目时.我必须关闭我的Emacs,修改值,然后重新开始.有没有更简单的方法来做到这一点?
非常感谢.
PS.每次打开源文件时设置c-basic-offset变量都是太多工作,是否可以根据工作目录选择不同的值?
在要自定义命名的目录中创建一个文件.dir-locals.el
,并将其编辑为包含:
((c-mode . ((c-basic-offset . 4))))
注意:这是Emacs 23.1中的新功能.
这利用了每目录本地变量.从链接中的文档:
该
.dir-locals.el
文件应该包含一个特殊构造的列表.此列表将Emacs模式名称(符号)映射到alists; 每个alist指定在打开相应模式时要使用的变量的值.特殊模式名称"nil"表示其alist适用于任何模式.您可以指定一个字符串,而不是模式名称,该字符串是项目目录的子目录的名称; 然后相应的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"))))))