2013-05-14 24 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值,包括右大括號。

一個trytry-with-resource我標識之間的區別是句法信息爲塊中的第一條語句,後者具有一個額外的(substatement)在頭上。這可能是它打破的原因嗎?

如果我從第一行手動刪除4個空格,那麼其餘的行會正確縮進,除了最後一個大括號,這個大括號將繼續以額外的空格縮進。

這使我瘋狂。如果解決它我改變c-guess-basic-syntax是不平凡的,也許是使用建議的解決方法?

回答

1

儘管http://osdir.com/ml/emacs-diffs-gnu/2013-07/msg00350.html線程確實有修復程序,但它仍不處於最新的cc模式。我抓住最新的cc模式並安裝它,然後抓住diff並應用它(它不再適用,但手工操作簡單而容易)。正確縮進!比應該更煩人的方式,但我已經適當地縮小了塊,所以我很高興。

+0

感謝您的跟進。使用我當前的版本'24.4.1',即使使用'emacs -q',縮進似乎也能正常工作 –