groovy intelliJ“尖括号(<>)”修改codestylesettings

时间:2018-04-18 14:22:56

标签: java intellij-idea groovy formatting

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

NECESARRY信息:

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

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

非工作:

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

问题是如果两者之间有空格,编译器只能正确解释 last 2 关闭尖括号。

WORKING:

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

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

问题:

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

问题:

我如何教IntelliJ不删除空间?

ATTEMPTS:

此设置确实存在于java文件中(设置 - &gt;编辑器 - &gt;代码样式 - &gt; JAVA - &gt;空格 - &gt;内 - &gt;角度括号)。

导出的XML设置:

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

但不适合groovy,所以我尝试将它添加到groovy中,如此:

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

重新格式化时,只会冻结一分钟左右,然后再次移除空格。

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

2 个答案:

答案 0 :(得分:3)

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

Only for Java

No Option in Groovy

正如@ybedrov所提到的,您需要使用them

打开增强请求

没有现有选项可以帮助您

正如sed指出的,确实存在一种方法,即创建自己的自定义语言

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

但是,如果你只关心一个空间,那么这个选项就存在于童话世界中。我只需要一个$ find . -name "*.groovy" | xargs sed 's|>>|> >|g' -i 命令来通过运行bash脚本来解决问题

{{1}}

答案 1 :(得分:0)

也许您可以在有问题的区域添加注释,以防止格式化程序破坏代码。例如:

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

假设这有效,它至少比破坏的代码更好,虽然非常难看。