Java编码样式和Emacs cc模式配置

我在GNU / Linux Debian机器上使用GNU / Emacs HEAD和附带的cc-mode(c-version 5.32.2)。

我正在尝试定义自定义样式来管理Java编程语言的代码约定 , Android的贡献者代码样式指南和一些自定义规则。

作为一个lisp初学者,从头开始似乎并不明智。 因此,我使用google-c-style作为起点,我设法获得最缩进规则的预期行为,嵌套条件有例外(请参阅下面的代码片段)。

从那篇 文章中 ,我已经在我的自定义样式中定义了(arglist-cont-nonempty . ++) (完整代码: custom-java-style.el )。 不幸的是,虽然大多数情况按预期缩进:

 if ((condition1 && condition2) || (condition3 && condition4) ||!(condition5 && condition6)) { doSomethingAboutIt(); someMethod(longExpression1, longExpression2, longExpression3, longExpression4, longExpression5); } 

嵌套条件错误地缩进:

 if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress) && deviceRegistred.getName().equalsIgnoreCase(deviceName))) { doSomethingAboutIt(); } 

Ctrl-c Ctrl + s报告Syntactic analysis: ((arglist-cont-nonempty 2447 2450) (arglist-cont-nonempty 2447 2452))在第二行,我显然有16个空格(2倍++ )缩进而不是8( ++ )。

我想得到以下缩进:

 if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress) && deviceRegistred.getName().equalsIgnoreCase(deviceName))) { doSomethingAboutIt(); } 

我试图定义一个(,(when (fboundp …)))条件,就像用于statement-cont但没有成功(我缺乏lisp知识也没有帮助)。

现在,问题是:我的做法是对还是错? 我应该/应该如何实现预期的行为(即检测我何时处于嵌套状态以获得正确的缩进)?

(我不想使用malabar-mode或JDEE,所以请不要告诉我使用它们。)

干杯,

雷诺

更新2011/12/06(对评论作出反应)

我们不会在这里开始圣战。 那些想要使用Emacs的人,出于他们自己的原因,可以坚持使用Emacs,其他人会按照自己的意愿去做…

说,我在一个团队中工作,我是唯一一个使用Emacs的人,其他人则喜欢Eclipse。 由于我负责编码规则,因此我与同事一起工作以获得正确的保存操作并帮助配置Eclipse的格式化程序。 我只能说:Eclipse保存动作和格式化程序根本不容易配​​置……主要区别在于你有一个很好的GUI和漂亮的复选框,但它对减少复杂性没有多大帮助。

我坚持使用Emacs ……

我会说,Emacs做的是正确的。 考虑这种情况:

 if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress) && deviceRegistred.getName().equalsIgnoreCase(deviceName)) || otherCondition) { doSomethingAboutIt(); } 

如果嵌套条件缩进了8个字符,那将是一个令人困惑的变体:

 if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress) && deviceRegistred.getName().equalsIgnoreCase(deviceName)) || otherCondition) { doSomethingAboutIt(); } 
Interesting Posts