有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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,包括右大括号

我指出的trytry-with-resource之间的一个区别是块中第一条语句的语法信息,后者的头部有一个额外的(substatement)。这可能是它破裂的原因吗

如果我手动从第一行删除4个空格,那么其余的行将正确缩进,除了右大括号,它将继续缩进额外的空格

这让我快发疯了。如果要解决这个问题,我改变c-guess-basic-syntax是非常重要的,也许是一个使用建议的解决方法


共 (1) 个答案

  1. # 1 楼答案

    尽管http://osdir.com/ml/emacs-diffs-gnu/2013-07/msg00350.html线程确实有修复程序,但它仍然没有处于最新的cc模式。我抓取了最新的cc模式并安装了它,然后抓取了diff并应用了它(它不再干净地应用了,但它很短,很容易用手操作)。正确的缩进!比它应该的更烦人,但我已经正确地缩进了try块,所以我很高兴