groovy intelliJ "угловые скобки ()" изменить codestylesettings
в настоящее время у меня проблема с codestylesettings т. е. функцией "переформатировать код" в IntelliJ.
НЕОБХОДИМАЯ ИНФОРМАЦИЯ:
Я пишу groovy скрипты, которые используют некоторые функции Java (например, дженерики)
похоже, что моя версия groovy (которая не может быть изменена по разным причинам) сталкивается с проблемами компиляции при наличии переменной, определенной как это:
НЕ РАБОТАЕТ:
final List<Map<String, Object>> listOfMaps = a["b"] as List<Map<String, Object>>
проблема в том, что компилятор может интерпретировать только последние 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.
2 ответов
Я проверил декомпилированный исходный код, и он не кажется SPACES_WITHIN_ANGLE_BRACKETS
поддерживает Groovy
. Каждый форматер имеет отдельные правила форматирования и конфигурации. Ни одна из существующих конфигураций не поможет вам в вашем квесте
как упоминал @ybedrov, вам нужно будет открыть запрос на улучшение с их
никакая существующая опция не поможет вы
As @daniel
указал, существует один способ, который заключается в создании собственного пользовательского языка
http://www.jetbrains.org/intellij/sdk/docs/tutorials/custom_language_support_tutorial.html
но этот вариант существует в сказочном мире, если вы просто обеспокоены одним пространством. Я бы просто sed
команда для устранения проблемы, запустив скрипт bash
$ find . -name "*.groovy" | xargs sed 's|>>|> >|g' -i
возможно, вы могли бы добавить комментарий в проблемных областях, чтобы предотвратить форматирование от взлома кода. Например:
final List<Map<String, Object>> listOfMaps = a["b"] as List<Map<String, Object>/**/>
предполагая, что это работает, это, по крайней мере, лучше, чем сломанный код, хотя и довольно уродливый.