我通常使用4个空格来缩进C程序,但为了与某些开源项目保持一致,有时我必须更改为2-white-space缩进。为不同的项目设置不同的c-off-off
目前我缩进风格是在我的.emacs分配与
(setq c-basic-offset 4)
文件,当我想在这些2空白缩进项目。我必须关闭我的Emacs,修改这个值,然后重新开始。有没有更简单的方法来做到这一点?
非常感谢。
PS。 每次打开源文件时设置c-basic-offset变量的工作量太大,可以根据工作目录选择不同的值吗?
我通常使用4个空格来缩进C程序,但为了与某些开源项目保持一致,有时我必须更改为2-white-space缩进。为不同的项目设置不同的c-off-off
目前我缩进风格是在我的.emacs分配与
(setq c-basic-offset 4)
文件,当我想在这些2空白缩进项目。我必须关闭我的Emacs,修改这个值,然后重新开始。有没有更简单的方法来做到这一点?
非常感谢。
PS。 每次打开源文件时设置c-basic-offset变量的工作量太大,可以根据工作目录选择不同的值吗?
创建要自定义命名.dir-locals.el
目录中的文件,编辑,使其包含:
((c-mode . ((c-basic-offset . 4))))
注:这是在Emacs 23.1新功能。
这利用了Per-Directory Local Variables。从链接中的文档:
.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"))))))
另一种方法是有一个样式选择ALIST就像我在我的.emacs:http://github.com/stsquad/my-emacs-stuff/blob/master/my-c-mode.el#L103
你也可以使用缓冲本地源代码中的变量来设置这些东西,但这通常取决于您在开源代码中让他们感到高兴的项目。
+1为链接 – 2009-12-01 06:24:13
这真的很有帮助,谢谢。 – ZelluX 2009-12-01 07:03:42