2012-08-09 36 views
3

在Emacs中類似C模式(C++,JAVA)的時候,我想代碼縮進如下:讓Emacs的對齊點運算符縮進

SomeClass someObject; 
someObject.add(foo) 
      .add(bar) 
      .execute(); 

然而,每默認的Emacs做到這一點:

SomeClass someObject; 
someObject.add(foo) 
    .add(bar) 
    .execute(); 

如何調整縮進,我必須調整哪些變量?

+0

我發現<<操作了類似的功能。看起來,語法項目stream-op由c-mode自動縮進中的函數c-lineup-streamop處理。但到目前爲止,我還沒有發現任何點運算符。 – Arne 2012-08-09 14:52:38

+0

更多信息:C-C C-s顯示句法信息如下:'語法分析:((arglist-cont 17974))'或'語法分析:((statement-cont 17768))'。所以Emacs並不認爲這是一種特殊的語法情況。 :( – Arne 2012-08-09 14:56:53

回答

2

您可以使用複雜的對齊(高光區域和C-u M-x align-regexp

當系統提示:

REGEXP: \(\.\) 
GROUP: -1 
SPACING: 0 
REPEAT: n 
+0

相當不錯,但也需要注意。導致奇怪的結果... :) – Arne 2012-08-09 13:41:49

+0

嗯,我試圖建立另一個正則表達式,它排除/ /評論(\([^ /]。* \) \(\。\)),但這也會導致奇怪的結果,因爲align-regexp不是語法敏感的。 – Arne 2012-08-09 13:49:11