Lelay
Lelay

Reputation: 31

Intellij Idea Live Templates

I faced with the problem of writing my vcs current branch name each time I have written 'todo' comment.

Recently I learned about Intellij's 'Live Templates' which is quite comfortable to use. I tried to apply it to my problem but there's no templates to take out a branch name.

So the question is could I actually take out the name of my branch to code comments somehow?

Upvotes: 3

Views: 1321

Answers (2)

Bas Leijdekkers
Bas Leijdekkers

Reputation: 26462

It is possible to use the groovyScript predefined function and a script to extract the branch name. For example create the following live template:

$COMMENT$ todo [$BRANCH$]: $END$

with abbreviation "todo" and description "Inserts todo comment with branch name". Click Edit variables and give the variables the following definitions:

COMMENT:

lineCommentStart()

BRANCH (updated for 2020.2 and newer)

groovyScript("com.intellij.dvcs.repo.VcsRepositoryManager.getInstance(_editor.project).getRepositoryForFileQuick(com.intellij.openapi.fileEditor.FileDocumentManager.getInstance().getFile(_editor.document)).getCurrentBranchName()")

Skip if defined checked for both variables. The Groovy script is (unfortunately) all one line. Set applicable contexts to Everywhere.

With this live template it is now possible to type todoTab somewhere in a source file and a line comment with the branch name will be inserted. This will insert the proper line comment depending on the language of the file, or nothing in case of languages without a line comment like HTML. And should extract the branch name no matter the type of version control used (I tested with Git).

Upvotes: 9

Feedforward
Feedforward

Reputation: 4869

For live templates you can use predefined functions. Unfortunately there is no function to detect the current VCS branch.
But you can create a template to make work a little easier:

// TODO [$branch_name$]: $comment$

With this template, you still have to fill branch name, but you should not type symbols like [ and caret will be placed automatically.

You can also create a feature request for a new predefined function.

Upvotes: 1

Related Questions