Мне пришлось создать ответ, потому что он будет достаточно подробным и не поместится в комментарии.
Если причины не интересны, то просто переходите в конец, в раздел с решением .
Сначала я использовал этот фрагмент, как я уже упоминал в комментариях:
#set($paramName = $helper.getParamName($field, $project))
#set($newline = "
")
${newline}//////////////////${newline}
#if($field.modifierStatic)
static ##
#end
void set$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))($field.type $paramName) {
#if ($field.name == $paramName)
#if (!$field.modifierStatic)
this.##
#else
$classname.##
#end
#end
$field.name = $paramName;
}
Ну, на самом деле это не сработало, поэтому сначала я посмотрел документацию. Согласно this , IntelliJ использует Velocity в качестве механизма шаблонов. И, учитывая его синтаксис, все должно работать нормально. И это так, если вы посмотрите на сообщение об ошибке:
you can see that it handles indentation correctly.
So, I looked into the source to see как они это обрабатывают , и оказалось, что они также используют языковой сервер для проверки . Почему они считают начало метода с пустой строки недопустимым idk, мне этого достаточно.
Итак, решение :
Использовать фрагмент по умолчанию, но создать живой шаблон (да, живые шаблоны поддерживают пустые строки).
Итак, создайте шаблон, например:
Select whole method body (I prefer Ctrl + W
, when cursor inside method body). And then Ctrl+Alt+J -> template_name
More info здесь .