我目前在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功能。
答案 0 :(得分:3)
我已经检查了反编译的源代码,SPACES_WITHIN_ANGLE_BRACKETS
支持Groovy
似乎@daniel
。每个格式化程序都有单独的格式规则和配置。现有的配置都不会帮助您完成任务
正如@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>/**/>
假设这有效,它至少比破坏的代码更好,虽然非常难看。