Skip to content

Calva Highlight#

Calva takes care of syntax highlighting, and also provides some features not available through VS Code's highlighting mechanism. These extras include rainbow parens, sane bracket matching, and comment form dimming/highlighting.

Syntax Highlighting#

When using Calva, you are also using its TMLanguage grammar (the core mechanism VS Code uses for syntax highlighting).

Our grammar tokenizes Clojure keywords as constant.keyword.clojure. Since it is pretty uncommon with keyword constants in the programming languages out there, your theme might not have a highlight defined for this scope. Try find a grammar that highlights keywords! If you are very fond of some theme lacking this, you can help it with a setting:

"editor.tokenColorCustomizations": {
    "[Default Dark+]": {
        "textMateRules": [
            {
                "scope": [
                    "constant.keyword.clojure"
                ],
                "settings": {
                    "foreground": "#6fbfff"
                }
            }
        ]
    }
},

Instead of Default Dark+ you should use your theme's name/key. And choose a color you like, of course.

Extra Highlighting#

You are in charge of how brackets and comments are highlighted via the calva.highlight.<setting> settings:

Setting Meaning Example
enableBracketColors Enable rainbow colors true
rainbowIndentGuides Enable rainbow indent guides true
highlightActiveIndent Highlight the active indent guide true
bracketColors Which colors to use ["#000", "#999"]
cycleBracketColors Whether same colors should be
reused for deeply nested brackets
true
misplacedBracketStyle Style of misplaced bracket { "border": "2px solid #c33" }
matchedBracketStyle Style of bracket pair highlight {"backgroundColor": "#E0E0E0"}
ignoredFormStyle Style of #_... form {"textDecoration": "none; opacity: 0.5"}
commentFormStyle Style of (comment ...) form {"fontStyle": "italic"}

Calva disables the VS Code built-in indent guides

The VS Code built-in settings editor.renderIndentGuides and editor.highlightActiveIndent do not have any effect, since the former is switched off by the Clojure Defaults, mentioned above. Use Calva Highlight's rainbowIndentGuides and highlightActiveIndent instead. They are different from the built in ones in that they are independent, meaning you can choose to have active indent highlighted while the guides generally are not rendered (this is the default, even).

VS Code bracket coloring vs Calva's

Calva's bracket coloring is more Clojure aware than VS Code's built-in coloring. And also will chime better with Calva's indent guides. If you like to have bracket coloring outside Clojure code, by all means enable it. Calva's bracket coloring will ”over paint” in Clojure files, when enabled. These settings work nicely:

"calva.highlight.highlightActiveIndent": true,
"editor.bracketPairColorization.enabled": true,

The calva.highlight.bracketColors setting can be used to harmonize the coloring between VS Code and Calva.