2013-05-14 9 views
6

のEmacs 24 Javaモードが正しく新しいtry-with-resource構造をインデントしませんん。なぜ試みる-と資源Emacsでインデントを破る?」

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の値、によって。

Iが同定trytry-with-resourceの違いの1つは、ブロック内の最初の文の構文情報であり、後者は余分を有します頭に。これが壊れる理由かもしれませんか?

最初の行から4つのスペースを手動で削除すると、行の残りの部分が正しくインデントされますが、余分なスペースでインデントされています。

これは私をナットにしています。それを解決するならば、私の変更するc-guess-basic-syntaxは自明ではないでしょうか、おそらくアドバイスを使った回避策でしょうか?

答えて

1

http://osdir.com/ml/emacs-diffs-gnu/2013-07/msg00350.htmlスレッドには本当に修正がありますが、まだ最新のccモードではありません。私は最新のccモードをつかんでインストールした後、diffをつかんで適用しました(これはもうきれいには適用できませんでしたが、手で行うのは短くて簡単でした)。インデントを修正してください!それよりも迷惑な方法ですが、tryブロックを適切にインデントしているので、私は満足しています。

+0

フォローアップありがとうございます。私の現在のバージョン '24.4.1'ではインデントが' emacs -q'でも正しく動作しているようです –

関連する問題