Browse Clojure Foundations for Java Developers

REPL Integration Plugins

Which REPL-focused editor integrations matter today, and how to avoid turning your Clojure setup into plugin sprawl.

Most modern Clojure setups do not need a large pile of unrelated editor plugins. What you actually need is one solid REPL client for your editor, plus a few supporting tools that remove friction around structure, diagnostics, and formatting.

What a good REPL integration actually does

For a Java developer, good REPL integration should make these actions easy:

  • start or connect to a project REPL
  • evaluate a form, top-level definition, namespace, or file
  • inspect results without leaving the editor
  • rerun tests or refresh changed code quickly
  • move between source, stack traces, and runtime feedback

If a plugin setup does not improve those actions, it is probably not worth the maintenance cost.

Think in editor stacks, not plugin collections

Emacs

In Emacs, CIDER is the REPL client. Structural editing helpers such as Paredit, Smartparens, or Parinfer can be added if they suit your typing style, but they are support tools around the main loop, not the loop itself.

IntelliJ IDEA

In IntelliJ, Cursive already bundles most of what you need: REPL integration, structural editing, project-aware navigation, and testing support. That means you usually need fewer add-ons than you would in a lighter editor.

VS Code

In VS Code, Calva is the REPL client. Pair it with clojure-lsp-based editor features, formatting, and normal VS Code capabilities, and you already have a strong setup. You do not need to recreate an IDE from dozens of marketplace extensions.

Supporting tools that are usually worth it

A few supporting tools help across editors:

  • Structural editing help if you still struggle with nested forms
  • Delimiter highlighting when you want faster visual parsing of code shape
  • Language-server diagnostics and navigation through clojure-lsp
  • Formatter integration so the code shape stays predictable

These are useful because they reduce noise around the REPL loop. They should not replace it.

Avoid plugin sprawl

Plugin sprawl usually looks like this:

  • multiple tools trying to format the same file
  • one plugin using old assumptions about nREPL while another uses a newer stack
  • editor diagnostics disagreeing with CLI diagnostics
  • several competing ways to evaluate code

That is the Clojure version of installing overlapping Java IDE plugins until the environment becomes harder to trust.

A better default is:

  1. one REPL client
  2. one diagnostics/navigation layer
  3. one formatter
  4. optional structural editing help if you actually benefit from it

That is enough for most real projects.

If you are a Java developer who wants the shortest path to productivity:

  • IntelliJ + Cursive is the strongest “works like a serious IDE” option.
  • VS Code + Calva is the strongest light-editor option.
  • Emacs + CIDER is the strongest highly programmable option if you are willing to invest more editor time.

Those three cover most serious use cases. Everything else should be justified by a real workflow need.

Knowledge Check

### What is the most important component in a Clojure editor setup? - [x] A reliable REPL client for your editor - [ ] As many color themes as possible - [ ] Several overlapping autocomplete plugins - [ ] A diagramming extension > **Explanation:** Clojure development depends on fast interaction with a running process. The REPL client is the core of that experience. ### What is the best way to think about plugins in a modern Clojure setup? - [x] Build a small stack around one main REPL integration instead of collecting many overlapping tools - [ ] Install every plugin used by experienced Clojure developers online - [ ] Separate formatting, evaluation, and diagnostics into as many tools as possible - [ ] Prefer plugin count over workflow clarity > **Explanation:** The goal is a trustworthy workflow, not a maximal plugin list. Too many overlapping tools usually increase friction. ### Which supporting tool is useful because it complements the REPL loop rather than replaces it? - [x] `clojure-lsp` for diagnostics and navigation - [ ] A second independent REPL client for the same project - [ ] A random syntax theme pack - [ ] An unused extension marketplace collection > **Explanation:** `clojure-lsp` improves navigation and diagnostics, but it does not compete with the main REPL client. That is the kind of support tool worth keeping.
Revised on Friday, April 24, 2026