Useful Code Templates for Jetbrains Idea
Table of Contents
Jetbrains Idea is a perfect IDE (sorry, Eclipse fans). But, like every tool, sometimes it needs some customization to fit your needs. Today I want to show how to adjust it’s code-generation templates.
When you generates a new class or method using Idea, it creates one using predefined templates. You may modify that template in “Settings -> File and Code templates” section.
Idea Configuration #
Idea keeps it’s configuration under ~/.IntelliJIdeaXX/config
folder.
I usualy copy my customized settings from in GIT repository, so, it is very easy to share, synchronize and restore it later.
$ ls -1F
codestyles/
colors/
componentVersions/
disabled_plugins.txt
disabled_update.txt
eval/
fileTemplates/
filetypes/
inspection/
jdbc-drivers/
keymaps/
options/
port
quicklists/
shelf/
tasks/
templates/
tools/
Code snippets (or code templates) are located inside config/templates
folder.
Code Snippets #
Implemented Method Body #
Default method body template generates empty method or method returning default value.
I suggest throwing UnsupportedOperationException
exception by default. It’s more restrictive settings, but good for self-discipline.
Just create a file config/fileTemplates/code/Implemented Method Body.java
with following contents:
throw new UnsupportedOperationException("Method is not implemented: ${CLASS_NAME}
SLF4J Logger Declaration #
If you’re using SLF4j as logging framework, following code template will be very usefull.
Just press Cmd+J
when cursor is in class declaration area and type log
. Add to config/templates/user.xml).
<templateSet group="user">
<template name="log" value=" private final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger($CLASS_NAME$.class);" description="SLF4j Logger Declaration"
toReformat="true" toShortenFQNames="true" useStaticImport="true">
<variable name="CLASS_NAME" expression="className()" defaultValue="" alwaysStopAt="true" />
<context>
<option name="JAVA_DECLARATION" value="true" />
</context>
</template>
</templateSet>