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.
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:
- one REPL client
- one diagnostics/navigation layer
- one formatter
- optional structural editing help if you actually benefit from it
That is enough for most real projects.
Recommended defaults by developer type
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.