Fisheye / Crucible syntax highlighting for Kotlin

Starting with Crucible 4.2.1, there is no built-in syntax support for Kotlin files. I already filled out a function request for this.

However, for now, the only option is to add a custom syntax configuration, as described here .

Has anyone already done this and can share the configuration?

+7
kotlin code-review atlassian-fisheye atlassian-crucible
source share
1 answer

I created this file myself. It is based on the Java configuration, but uses the Kotlin keywords.

This project also contains a script to generate a keyword prefix tree if you don't like the list I'm using.

Below you can find the contents of the file:

syntaxdef kotlin { /\s+/m : ; #keywords /(a(bstract|nnotation|s)|break|c(atch|lass|o(mpanion|n(st|tinue))|rossinline)\ |d(ata|elegate|o|ynamic)|e(lse|num|xternal)|f(i(eld|le|nally)|or|un|alse)|get\ |i(f|mport|n(fix|it|line|terface)|s|t)|n(oinline|ull)|o(bject|pe(n|rator)|ut)\ |p(a(ckage|ram)|roperty)|re(ceiver|ified|turn)|s(e(aled|tparam)|u(per|spend))\ |t(ailrec|h(is|row)|r(y|ue)|ype(alias|of))|va(l|rarg)|wh(en|ile))\b/ : { region { type=keyword; index=word; } } /[\p{L}_\$][\p{L}\p{N}_\$]*/ : { region { type=identifier; index=word; } } #annotation /@[\p{L}_\$][\p{L}\p{N}_\$]*/ : { region { type=annotation; index=word; } } # string literals /"/ : { context { /\\"/: ; /\\./: ; /$/m : exit; "\"" : exit; } region ${ALL} { type=string; } } # char literal /'/ : { context { /\\./: ; /$/m : exit; "'" : exit; } region ${ALL} { type=char_literal; } } /\/\/.*$/m : { todo(${0}); region { type=comment; index=prose; findlinks=true; } } /\/\*\*(.*?)\*\//s : { javadoc(${1}); region { type=comment; index=prose; findlinks=true; } } context javadoc { /(\ B@ [a-zA-Z0-9-_.]+)\s*([^@\*]*)/ : { region ${1} { type=commentmeta; } } } /(0x[0-9a-f][0-9a-f_]*l?)|(0b[0-1][0-1_]*l?)|([0-9][0-9_]*(\.[0-9][0-9_]*)?|\.[0-9][0-9_]+)(e(\+|-)?[0-9][0-9_]*)?(f|l|d)?/i : { region { type=numeric; } } /\/\*(.*?)\*\//s : { todo(${1}); region { type=comment; findlinks=true; } region ${1} { index=prose; } } context todo { /(?i)todo\s.*/ : { region { type=todo; } } } } 
+1
source share

All Articles