我目前遇到了代码样式设置问题,即 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
。每个格式化程序都有单独的格式化规则和配置。现有的配置都不会帮助您完成任务
正如@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/