2013-05-14 10 views
6

Emacs 24 Tryb Java nie wciąć nowy try-with-resource konstrukt prawidłowo.Dlaczego try-with-zasoby złamać wcięcia w Emacs?”

class X{ 
    void foo() { 
     try { 
      check(); // ((statement-block-intro 35)) 
     } 
    } 

    void bar() { 
     try (Lock l = bar()) { 
       check(); // ((substatement 140) (statement-block-intro 140)) 
      } 
    } 
} 

Jak widać powyżej, oświadczenia wewnątrz takiego bloku try są wcięte przez 4 dodatkowe przestrzenie, wartości c-basic-indent oraz zamykania klamry.

różnica pomiędzy try i try-with-resource że identyfikacja jest składniowym informacyjnych na pierwszej instrukcji w bloku, drugi mający dodatkowy (substatement) na czele. Czy to może być powód, dla którego się zepsuł?

Jeśli ręcznie usuniemy 4 spacje z pierwszej linii, pozostałe wiersze będą prawidłowo wcięte, z wyjątkiem nawiasu zamykającego, który będzie wcięty dodatkowymi odstępami.

To doprowadza mnie do szału. Jeśli to rozwiązam, moja zmiana c-guess-basic-syntax jest nietrywialna, może obejście za pomocą porady?

Odpowiedz

1

Chociaż wątek http://osdir.com/ml/emacs-diffs-gnu/2013-07/msg00350.html rzeczywiście ma poprawkę, nadal nie jest w najnowszym trybie cc. Chwyciłem najnowszy tryb cc i zainstalowałem go, a następnie chwyciłem diff i zastosowałem (nie miało to już zastosowania, ale było szybkie i łatwe do zrobienia ręcznie). Prawidłowe wcięcie! O wiele bardziej irytujące niż powinno być, ale mam poprawnie wcięte bloki próbne, więc jestem szczęśliwy.

+0

Dzięki za kontynuację. W mojej obecnej wersji '24.4.1' wcięcie wydaje się działać poprawnie nawet z' emacs -q' –