Emacs 24 Java模式不会正确缩进新的try-with-resource
构造。
class X{
void foo() {
try {
check(); // ((statement-block-intro 35))
}
}
void bar() {
try (Lock l = bar()) {
check(); // ((substatement 140) (statement-block-intro 140))
}
}
}
如上所示,这个try块内的语句由额外的4个空格缩进,值为c-basic-indent
,包括右括号。
我确定的try
和try-with-resource
之间的一个区别是块中第一个语句的语法信息,后者在头部有一个额外的(substatement)
。这可能是它破裂的原因吗?
如果我从第一行手动删除4个空格,那么其余的行正确缩进,除了右括号之外,它将继续用额外的空格缩进。
这让我疯了。如果解决这个问题,我改变c-guess-basic-syntax
是非常重要的,也许是使用建议的解决方法?
答案 0 :(得分:1)
这是emacs
中众所周知的错误,list.gnu.org上有关于补丁的这个问题的线程,修复了这个错误:https://lists.gnu.org/archive/html/bug-gnu-emacs/2013-07/msg00577.html
此外,根据这个:http://osdir.com/ml/emacs-diffs-gnu/2013-07/msg00350.html似乎已经在2013-07-27修复了这个错误。
答案 1 :(得分:1)
尽管http://osdir.com/ml/emacs-diffs-gnu/2013-07/msg00350.html线程确实有一个修复,但它仍然不是最新的cc模式。我抓住了最新的cc模式并安装了它,然后抓住差异并应用它(它不再适用于干净,但它很简单,很容易手工完成)。正确的缩进!比它应该更烦人的方式,但我已经正确地缩进了试块,所以我很高兴。