2010-06-19 60 views
3

在方法聲明之後,Java模式似乎是取消縮進而不是縮進。Java模式縮進

我的意思是我希望看到這一點:

class GoodExample { 
    public void method() { 
     allNicelyIndented(); 
     noProblemsHere(); 
    } 
} 

但是,相反會得到:

class CrazyIndenting { 
    public void method() { // ((inclass 134) (topmost-intro 326)) 
    whyIsThisUnindented(); // ((defun-block-intro 379)) 
    itsMessingWithMyHead(); // ((statement 454)) 
    } 
} 

M-x c-set-style RET java然後C-x h C-M-\確認它是使用Java的方式爲全緩衝。

使用cc模式interactive features,C-c C-s給出了我在錯誤地格式化後的代碼中放入註釋的符號,並且C-c C-o建議了看起來合理的默認值。 (0,+和0按降序排列)

翻看我的.emacs,我看不到任何可能會與cc-mode混淆的東西,所以我有點卡住接下來要調查的方向。聲明的unindent小於方法聲明的縮進(2「空格」而不是4),所以也許有一些標籤/空間的混淆?

版本:Emacs 22.2.1,JDE 2.3.5.1和CC-mode 5.31.5。

+1

試着用'emacs -Q'。仍然看起來像'.emacs'中的東西混亂。另外,檢查這個縮進是否實際上是通過製表符,並且製表符寬度有問題。 – doublep 2010-06-19 22:46:58

+0

我同意@doublep - 我試過你的代碼片段(沒有JDE),並得到你想要的縮進。 – 2010-06-21 15:23:15

+0

在'emacs -Q'開始之後加載相同的文件看起來像我所期待的,所以在'.emacs'中確實很有趣。 cc-mode文檔在解決具體問題時沒有什麼幫助,但我會到達那裏。 – MHarris 2010-07-05 18:41:26

回答

2

雖然我不確定是什麼原因導致您的JDEE問題,但我建議您嘗試使用malabar-mode。它是Emacs中唯一一個融合了現代材料(例如與maven和groovy集成)的Java模式,並且正在積極開發之中......

除此之外 - 我敢肯定,基本Java縮進與JDEE甚至使用較老的java模式),所以這個問題可能是由你的配置引起的(尤其是我想的cc模式配置)。

+0

之前沒有聽說過馬拉巴模式,看起來最令人印象深刻。乾杯! – MHarris 2010-07-05 18:42:14