java为什么trywithresources会打破Emacs中的缩进?"
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
是非常重要的,也许是一个使用建议的解决方法
# 1 楼答案
尽管http://osdir.com/ml/emacs-diffs-gnu/2013-07/msg00350.html线程确实有修复程序,但它仍然没有处于最新的cc模式。我抓取了最新的cc模式并安装了它,然后抓取了diff并应用了它(它不再干净地应用了,但它很短,很容易用手操作)。正确的缩进!比它应该的更烦人,但我已经正确地缩进了try块,所以我很高兴