Live templates in IntelliJ IDEA
I like fluid APIs where you can join multiple method calls without repeating the target object. A classic example for this is the StringBuilder class:
final StringBuilder s = new StringBuilder()
.append(key)
.append(": ")
.append(value);
another use case are builders:
final HttpOptions opt = new HttpOptions()
.port(8080)
.timeout(30000)
.followRedirects(true)
For this kind of builders, the setters do not return void but this.
public HttpOptions port(int port){
this.port = port;
return this;
}
With IntelliJ IDEA, normal getters and setters can be generated automatically, but not this style of fluid setters.
But there are live templates which provide some kind of macros: Type psvm and hit tab, and it will be completed into public static void main(String[] args){}.
It’s possible to create your own live templates and here’s the result of my experiments:


Type fs, hit tab, enter the type and the name of the attribute and voilà: The fluid setter is generated.
But there’s even more: Besides the predefined expressions like className() or suggestVariableName(), there is groovyScript() which executes any groovy script you like.
So I made a second template
$SELECTION$
$END$
public $CLASS_NAME$ $NAME$($TYPE$ $NAME$){
this.$NAME$ = $NAME$;
return this;
}
with these variable definitions:
CLASS_NAME className()
NAME groovyScript("_1.split(' ')[-1].replace(';','')", SELECTION)
TYPE groovyScript("_1.split(' ')[-2]", SELECTION)
Put the cursor on a line with an attribute definition like private String name;, hit alt-cmd-J, select the right template, and the corresponding fluid setter will be generated.
Groovy is easy to learn when you know java and there’s a REPL under Tools -> Groovy Console where you can interactively try out scripts. There’s also the possibility to reference a groovy file instead of writing the code directly into the Template Variables dialog.
One more nice feature of IntelliJ IDEA.