java - groovy intelliJ "angle brackets (<>)"修改代码样式设置

标签 java intellij-idea groovy formatting

我目前遇到了代码样式设置问题,即 IntelliJ 中的“重新格式化代码”功能。

必要信息:

我正在编写 groovy 脚本,它使用一些 Java 功能(例如泛型)

看起来我的 groovy 版本(由于各种原因无法更改)在定义如下变量时遇到编译问题:

非工作:

final List<Map<String, Object>> listOfMaps = a["b"] as List<Map<String, Object>>

问题是编译器只能正确解释 last 2 右尖括号之间是否有空格。

工作中:

final List<Map<String, Object>> listOfMaps = a["b"] as List<Map<String, Object> >

这是我正在使用的 groovy 版本中的一个已知错误。

问题:

“重新格式化代码”功能总是删除空格,我在右尖括号之间添加了空格,以使脚本可编译。

问题:

如何教 IntelliJ 不删除空格?

尝试:

Java 文件确实存在此设置(设置-> 编辑器-> 代码样式-> JAVA -> 空格-> 内-> 尖括号)。

导出的 XML 设置:

<JavaCodeStyleSettings>
<option name="SPACES_WITHIN_ANGLE_BRACKETS" value="true" />

但不适用于 groovy,所以我尝试像这样为 groovy 添加它:

<codeStyleSettings language="Groovy">
<option name="SPACES_WITHIN_ANGLE_BRACKETS" value="true" />

重新格式化时,它只会卡住一分钟左右,然后再次删除空格。

可能是因为 groovy 不知道这些尖括号,因此这里使用的是 Java 功能。

最佳答案

我检查了反编译的源代码,似乎 Groovy 不支持 SPACES_WITHIN_ANGLE_BRACKETS。每个格式化程序都有单独的格式化规则和配置。现有的配置都不会帮助您完成任务

Only for Java

No Option in Groovy

正如@ybedrov 提到的,您需要使用them 打开增强请求。

没有现有的选项可以帮助你

正如 @daniel 所指出的,确实存在一种方法,那就是创建自己的自定义语言

http://www.jetbrains.org/intellij/sdk/docs/tutorials/custom_language_support_tutorial.html

但是,如果您只关心一个空间,那么童话世界中存在该选项。我只需要一个 sed 命令通过运行 bash 脚本来解决问题

$ find . -name "*.groovy" | xargs sed 's|>>|> >|g' -i

关于java - groovy intelliJ "angle brackets (<>)"修改代码样式设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49902218/

相关文章:

java - Autowiring 定义为 <util :set> in Spring 的集合

java - 如何从抽象类中实现具体具体类的列表?

java - 如何在 Java 中构造一个不可实例化和不可继承的类

java - class文件版本52.0错误,应该是50.0

macos - 选择 JDK 时 IntelliJ 挂起

java - 如何在 groovy 中编写可写接口(interface)代码

json - 可以在 Grails 1.3.7 中漂亮地打印 JSON 吗?

java - 如何在构造函数中将 arraylist 或 array 放入 JList 中?

java - Libgdx intellij 运行时黑屏应用程序

java - 如何使用泰坦 API?