Inspector

The value inspector allows you to inspect and navigate the structure of data. While you can use it for pretty much anything (e.g. primitive data types, var, ref types) it’s most useful when you’re dealing with (deeply) nested collection-like data types (e.g. a vector of maps).

Usage

Typing C-c M-i (cider-inspect) after some form in a source buffer or the REPL will show you the structure of the form’s result in a new buffer. You can also use C-u C-c M-i to inspect the result of the current top-level form and C-u C-u C-c M-i to read an expression from the minibuffer and inspect its result.

Alternatively, after a regular eval command, you can inspect the last evaluated value using cider-inspect-last-result. When an inspector buffer is visible in the background, it is automatically updated with the last result. This behavior can be controlled with the variable cider-auto-inspect-after-eval.

The inspector can also be invoked in the middle of a debugging session, see here for more details.
The current value of the debugger can be as sent as well to Clojure’s tap> facility. This can be used to integrate CIDER with various external tools which render tapped values in a web browser, for example.

You’ll have access to additional keybindings in the inspector buffer (which is internally using cider-inspector-mode):

Keyboard shortcut Command Description

Tab and Shift-Tab / n and p

cider-inspector-next-inspectable-object

Navigate inspectable sub-objects

f and b

forward-char, backward-char

Navigate across characters on a line

Return

cider-inspector-operate-on-point

Inspect sub-objects

l

cider-inspector-pop

Pop to the parent object

g

cider-inspector-refresh

Refresh the inspector (e.g. if viewing an atom/ref/agent)

SPC or Next

cider-inspector-next-page

Jump to next page in paginated view

M-SPC or Prev

cider-inspector-prev-page

Jump to previous page in paginated view

s

cider-inspector-set-page-size

Set a new page size in paginated view

c

cider-inspector-set-max-coll-size

Set a new maximum size above which nested collections are truncated

a

cider-inspector-set-max-atom-length

Set a new maximum length above which nested atoms (non-collections) are truncated

d

cider-inspector-def-current-val

Defines a var in the REPL namespace with current inspector value. If you tend to always choose the same name(s), you may want to set the cider-inspector-preferred-var-names customization option.

9

cider-inspector-previous-sibling

Navigates to the previous sibling, within a sequential collection.

0

cider-inspector-next-sibling

Navigates to the next sibling, within a sequential collection.

o

cider-inspector-open-thing-at-point

Opens the url or file at point, if found.

:

cider-inspect-expr-from-inspector

Prompts for a new value, rendering it in the Inspector.

t

cider-inspector-tap-current-val

Performs tap> using the inspector’s current value as it argument.

1

cider-inspector-tap-at-point

Performs tap> using the inspector’s current sub-value (the one at POINT) as it argument.

Use enrich-classpath for best results

If enrich-classpath is activated, inspecting a Java class, method or field will richly display its Java doc comment documentation at the bottom of the inspector.

Configuration

By default, navigation skips over values like nils, numbers and keywords, which are not interesting to inspect. You can control this behavior using the variable cider-inspector-skip-uninteresting.

The inspector buffer is automatically selected by default. You can disable the auto selection with the variable cider-inspector-auto-select-buffer.

You can set the amount of data shown by default with the variables cider-inspector-page-size, cider-inspector-max-coll-size, and cider-inspector-max-atom-length. The values can be adjusted for the current inspector buffer using the s, c, and a keybindings.

If you enable cider-inspector-fill-frame, the inspector window fills its frame.

Starting from CIDER 1.8.0, when you define a var using d, a var name can be suggested (default none). You can customize this value via the cider-inspector-preferred-var-names configuration option. Even after setting it, you are free to choose new names on the fly, as you type. Most recent names will take priority in subsequent usages.