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

我在GNU/LinuxDebian机器上使用带有CC模式(C-version 5.32.2)的GNU/EmacsHead。
我正在尝试定义一个自定义样式来管理Code Conventions for the Java Programming LanguageAndroid's Code Style Guidelines for Contributors和一些自定义规则。
作为一个口齿不清的初学者,从头开始似乎并不明智。因此,我使用了google-c-style作为起点,并设法获得大多数缩进规则的预期行为,但嵌套条件例外(请参见下面的代码段)。
that post开始,我在自定义样式中定义了(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 reportSyntactic analysis: ((arglist-cont-nonempty 2447 2450) (arglist-cont-nonempty 2447 2452))和i明显有16个空格(2倍)的缩进,而不是8个(++)。
我想得到以下缩进:
if (!(deviceRegistred.getAddress().equalsIgnoreCase(deviceAdress)
        && deviceRegistred.getName().equalsIgnoreCase(deviceName))) {
    doSomethingAboutIt();
}

我试图定义一个类似于++的条件,但没有成功(我缺乏lisp知识也没有帮助)。
现在,问题是:我的方法是对的还是错的?我应该如何实现预期的行为(即,当我处于嵌套状态时检测以获得正确的缩进)?
(我不想使用Malabar模式或JDEE,所以请不要告诉我使用它们。)
干杯,
雷诺
更新2011/12/06(回应评论)
我们不会在这里发动圣战。那些想使用Emacs的人,出于他们自己的原因,可以坚持使用Emacs,而其他人则会按照他们想要的做…
这就是说,我在一个团队中工作,在这个团队中,我是唯一一个使用Emacs的人,其他人都喜欢Eclipse。因为我负责编码规则,所以我和我的同事一起获得了正确的保存操作,并帮助配置Eclipse的格式化程序。我只能说:Eclipse保存操作和格式化程序根本不容易配置……主要的区别在于,您有一个漂亮的带有漂亮复选框的图形用户界面,但它对降低复杂性没有多大帮助。
我坚持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();
}

本文翻译自 https://stackoverflow.com/questions/8377140/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java emacs elisp dot-emacs cc-mode


相关文章:

java - XStream实体缩写解析

python - 具有gud-gdb类型功能的emacs中的python调试

list - Elisp:如何查找重复列表

lisp - 使用正则表达式从lisp的字符串中删除单词

list - elisp如何将lambda应用于列表?

java - 在哪里可以找到密钥库文件?

java - 如何将Json String与动态字段转换为Object?

java - 如何从Java中的R,G,B值获取RGB像素值以获得BufferedImage

linux - 从*内部* emacs获取emacs版本