在Intellij IDEA中禁用Lambda表达式/匿名类的缩进

Nik*_*ita 5 intellij-idea intellij-14

下图几乎说明了整个问题: 当按ENTER时,IntelliJ IDEA相对于lambda表达式缩进右括号,而应相对于父表达式的右括号缩进。

我尝试使用// formatter:off适当的设置,但无济于事。我也尝试过为lambda表达式/匿名类寻找缩进规则,但找不到这些规则。

任何建议,不胜感激!

小智 6

您需要关闭匿名类右括号旁边最外面的括号以获得所需的缩进。

代替:

itemClose.addActionListener(new ActionListener() {
                              @Override
                              public void actionPerformed(ActionEvent e) {

                              }
                            }
);
Run Code Online (Sandbox Code Playgroud)

删除最后一个 } 和 ) 之间的行/空格;你得到:

itemClose.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {

  }
}); 
Run Code Online (Sandbox Code Playgroud)


Aly*_*ali 0

IntelliJ 理念 14.1.1

选择复选框

“文件”[菜单]/“设置”/“代码样式”/“在注释中启用格式化标记”

(请参阅字段“Formatter off”和字段值,对我来说它是“@formatter:off”)

// @formatter:off然后在您的代码中使用。

例子:

// @formatter:off
Observable.create(new Observable.OnSubscribe<Path>() {
    @Override
    public void call(Subscriber<? super Path> subscriber) {
        try (DirectoryStream<Path> stream  = Files.newDirectoryStream(rootDir, filePattern)) {
            for (Path path : stream) subscriber.onNext(path);
        } catch (IOException e) {
            System.err.println(e.getMessage());
            subscriber.onError(e);
        }
        subscriber.onCompleted();
    }
});
Run Code Online (Sandbox Code Playgroud)