2012-08-09 26 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