在Emacs中为每个目录设置c-basic-offset

我有一个使用2空格缩进的C项目(在/ projects / c中 )和一个带有4空格缩进的C ++项目(在/ projects / cpp中 )。 我无法弄清楚如何让Emacs自动做正确的间距,具体取决于我打开文件的位置。

我可以告诉它使用c++-mode (4个空格)作为.cpp文件,但.h文件(在cpp项目中)仍默认为c-mode (2个空格)。

有什么东西可以放在我的.emacs文件中,以缩进.h文件不同的空格数或更改模式,具体取决于目录?

目录本地变量:
http://www.emacswiki.org/emacs/DirectoryVariables

您可以使用.dir-locals.el文件,也可以使用dir-locals-set-class-variablesdir-locals-set-directory-class函数在.emacs文件中完全配置它。

把这样的东西放在第一行文件中,该语言不能从扩展名中删除

 // This may look like C code, but it really is -*- mode: c++ -*- 

.h文件更改为.hpp是否可以.hpp