Enlighten
Enlighten Mode displays the value of locals in realtime, as your code runs. This feature is somewhat similar to a feature in the Light Table editor.
To turn it on, issue M-x cider-enlighten-mode. Then,
evaluate your functions one at a time using C-M-x or
C-x C-e. Note that C-c C-k won’t work.
That’s it! Once your code executes, the regular old buffer on the left will turn into the brilliant show of lights on the right.
Here’s an enlightened function lighting up as it runs with different inputs:
| Enlighten Mode Disabled | Enlighten Mode Enabled |
|---|---|
|
|
When you’ve had enough, cider-enlighten-stop turns everything off at once:
it disables cider-enlighten-mode, removes the overlays, and ignores any
further values still streaming from definitions you instrumented earlier - all
without re-evaluating anything. (Disabling the mode on its own only stops
new instrumentation; already-instrumented definitions keep lighting up until
you re-evaluate them clean.) To just clear the overlays from a buffer (they
will come back the next time the code runs), use cider-enlighten-clear.
If you only want to enlighten a single definition, you don’t have to toggle the
global mode at all. Put point in the form and run
cider-enlighten-defun-at-point: it evaluates just that top-level form with
enlightenment enabled, leaving the global mode untouched. You can also write
#light before the (def and re-evaluate it.

