clojure-mode provides basic syntax highlighting for Clojure(Script) code, but
CIDER builds upon this in several ways. The biggest limitation of
is that the syntax highlighting there is based on the usage of regular expressions
to figure out what’s the syntactic category of the various identifiers (e.g. constants,
macros, types, etc). CIDER, however, has access to all the data about identifiers from
code that has already been loaded into nREPL, so it can provide a richer and more accurate
syntax highlighting. We call this functionality "dynamic syntax highlighting" (as opposed to
the somewhat static syntax highlighting you’d get from
|The Emacs term for "syntax highlighting" is "font-locking". That’s why all configuration variables that have something to do with syntax highlighting have "font-locking" in their names.
CIDER can syntax highlight symbols that are known to be defined. By default,
this is done from symbols from the
cljs.core namespaces, as
well as macros from any namespace. If you’d like CIDER to also colorize usages
of functions and variables from any namespace, do:
(setq cider-font-lock-dynamically '(macro core function var))
Here’s how code looks without dynamic syntax highlighting.
And here’s how the code looks when it’s turned on.
You can refer to the
cider-font-lock-dynamically Elisp documentation for further details.
By default CIDER will apply font-locking to unused reader conditional expressions depending on the buffer’s CIDER connection type.
You can disable this behavior by adjusting
(setq cider-font-lock-reader-conditionals nil)
CIDER defines a few custom faces that you might want to adjust (although normally your color theme should take care of them):
cider-deprecated-face- used for syntax highlighting deprecated vars
cider-instrumented-face- used for syntax highlighting instrumented for debugging vars
cider-traced-face- used for syntax highlighting traced vars
cider-reader-conditional-face- used for syntax highlighting inactive reader conditional branches