Skip to content

Editors for Clojure developmentλ︎

The best editor to use for learning Clojure is the editor already familiar with (or want to learn).

Use SublimeText & ClojureSublimed if unsure where to start as it will be the simplest tool to use.

Clojure editor featuresλ︎

An ideal Clojure editor includes the these core features

  • running / connecting to a REPL process
  • evaluation results inline or in a repl window (fast feedback on what the code does)
  • syntax highlighting (including highlight of matching parens)
  • structural editing to ensure parens are balanced when writing and refactor code
  • data inspector to visualise large and nested data, or connection to (external data inpector tools)

Clojure REPL driven development with Clojure aware editors

Clojure aware editorsλ︎

Emacs (Spacemacs, Doom, Prelude), Neovim (Conjure) and VSCode (Calva) are the most common open source Editors for Clojure and ClojureScript development.

SublimeText and IntelliJ are commercial editors (with limited free editions) which also provide Clojure support

Emacs is a very powerful editor with thousands of packages enabling a person to do almost any digital task concievable. Emacs is highly extensible via the ELisp programming language used to write configuration and the numerous Emacs packages.

Use one of the popular community configurations for Emacs or visit the CIDER documentation to learn how to add Clojure support to Emacs.

Emacs 28 onward uses Native Compilation of Emacs packages, dramatically speeding up many common tasks and keeping Emacs a valuable option for development (and everything else).

Emacs uses CIDER and Clojure LSP for a feature rich clojure development experience.

Spacemacs is a community configuration bringing Emacs features and Vim sytle editing together. Spacemacs uses a mnemonic menu system that makes it easy to learn and provides detailed documentation for configuring and using Emacs.

Practicalli Spacemacs provides a guide to Clojure development, vim-style editing, documenting with org-mode, Git version control with Magit, Issues & Pull Requests with Forge and dozens of other features.

practicalli/spacemacs.d repository contains a customised configuration for Clojure development and supporting tools. Browse the repository online or fork / clone the repository

git clone https://github.com/practicalli/spacemacs.d.git $XDG_CONFIG_HOME/spacemacs`
git clone https://github.com/practicalli/spacemacs.d.git $HOME/.spacemacs.d`

The Practicalli configuration should replace the ~/.spacemacs file if it exists

Spacemacs install guide - Practicalli Spacemacs

Doom Emacs is a community configuration for Emacs that provides a minimalistic configuration that is readily customisable. Doom Emacs is most suited to those comming from a Vim-style editing background or simply looking for a lightweight setup with options to extend the configuration.

Practicalli Doom Emacs Book

practicalli/doom-emacs-config repository contains a customised configuration for Clojure development and supporting tools. Browse the repository online or fork / clone the repository

git clone https://github.com/practicalli/doom-emacs-config.git $XDG_CONFIG_HOME/doom`
The Practicalli configuration should replace the ~/.config/doom/ directory created by the doom install command.

git clone https://github.com/practicalli/doom-emacs-config.git $HOME/.doom.d`
The Practicalli configuration should replace the ~/.doom.d/ directory created by the doom install command.

Emacs Doom with Practicalli customisations Emacs Doom with Practicalli customisations

Emacs Prelude is an easy to use Emacs configuration for Emacs newcomers and lots of additional power for Emacs power users, from the author of CIDER - the definitive Clojure IDE for Emacs.

Prelude uses the traditional chorded key bindings to drive Emacs, e.g. Ctrl+c Ctrl+c to evaluate the current top-level form.

Prelude Install Guide

Neovim is a hyper-extensible text editor that evolved from Vim whist still fully compatible with Vim"s editing model and Vimscript extension language. Neovim uses lua configuration and with the aniseed package configuration and Neovim packages can be written in Fennel (a lisp dialect).

Neovim is based on multi-model editing (e.g. normal, insert, visual editing states) providing a highly effective tool for writing code, configuration and documentation.

The Neovim community provides a large number of packages to add features.

Conjure is predominantly used for Clojure development and supports Clojure CLI, Leiningen and Babashka projects (as well as several other Lisp dialects and interesting languages)

Neovim and Conjure

practicalli/neovim-config-redux is written in Fennel as it is very close to Clojure.

A Which-key menu can be used to drive Neovim, with a mnemonic set of key bindings to make adoptiong Neovim easier.

Conjure provides interactive environment for evaluating Clojure code and providing inline results (or see results in an Heads Up Display or Log buffer).

Practicalli Neovim covers installation and basic use of Neovim for Clojure development.

Practicalli Neovim

Older Neovim guides include:

Practicalli install guide for neovim and conjure Practicalli user guide for neovim and conjure

Quick try tutorialλ︎

Try the Conjure interactive :ConjureSchool tutorial without the need to install, only a recent version of neovim

curl -fL conjure.fun/school | sh
Clojure editors - neovim and conjure tutorial

:q to quit the tutorial.

Referencesλ︎

Getting started with Neovim and Conjure Neovim user guide Conjure install guide Conjuring Clojure in Vim - an introduction to using Conjure

SpaceVim is a fully featured vim experience that includes a simple Clojure development environment based around vim-fireplace

Follow the Quick Start Guide to instal SpaceVim

Add the Clojure layer to the SpaceVim custom configuration file

~/.SpaceVim.d/init.toml
[[layers]]
  name = "lang#clojure"

SpaceVim quick guide SpaceVim - Clojure Layer SpaceVim quickstart guide SpaceVim documentation

Clojure Interactive Development Environment for Vim8/Neovim.

vim-iced documentation

Clojure Interactive Development Environment for Vim8 / Neovim

VS Code is a freely available editor build on open source and available for Linux, MacOS and Microsoft Windows.

VS Code has a large marketplace of extensions, proiding additional tools for a complete development environment.

Calva is the most commonly used extension for Clojure support and aims to provide similar features to Emacs Cider (and uses some of the same Clojure libraries).

VSpaceCode provides a mnemonic menu (which-key) to drive VS Code by keyboard alone, vim editing and rich Git client (edamagit). VSpaceCode extension also provides key bindings for common Calva commands. Users experienced with Neovim and Emacs (Spacemacs / Doom) will find this extension makes VS Code easiter to use than vanilla VS Code or VS Code with an Neovim backend.

Clover provides a more mininal environment using Socket REPL.

The Calva extension adds Clojure support to Microsoft VS Code editor.

Calva - VS Code Marketplace

Calva is under active development and the #calva channel on the Clojurians Slack community can be supportive.

Calva Getting Started Guide VSCode Calva extension VSCode Getting Started Guide

VSCode Calva demo

VSpaceCode is a Spacemacs-like community configuration for Microsoft VS Code. Drive VS Code and Calva entirely from the keyboard, using easy to remember mnemonic keys for all commands and full vim-stile editing tools.

Edamagit is a sophisticated text based Git client (like magit for Emacs) is also included in the VSpacemacs extension.

Practicalli VSpaceCode install guide Practicalli VSpaceCode user guide

VSpaceCode in action

Clover is a Socket REPL based development tool for Clojure with some ClojureScript support (not including Figwheel).

Clojure GitLab repository includes useage details.

SublimeText 4 is a lightweight and feature rich text editor, especially of interest that like a simple and uncluttered UI. SublimeText is a commercial project although has free trial version available (check conditions of use).

Clojure-Sublimed provides Clojure support for SublimeText 4, with support for Clojure & Edn syntax, code formatting and an nREPL client to connect to a Clojure REPL process.

SublimeText install Clojure-Sublimed install SublimeText Documentation

Atom not actively developed

Atom will be archived on December 15 2022 and no further updates from GitHub team, although it may continue in open source.

Consider using VSCode with Clover or Calva plugins instead

Atom.io is flexible and simple to use editor . Chlorine is the recommended plugin for Atom.io. ProtoREPL is not actively maintained at present. The Chlorine plugin for Atom is especially recommended for ClojureScript shadow-cljs projects.

Chlorine install guide

Chlorine animated gif

ProtoREPLλ︎

ProtoREPL

Atom & ProtoREPL install guide

Atom.io and ProtoREPL

Proton - alternative menu and configuration approachλ︎

Proton offers a simple mnemonic menu as an alternative to the multiple keys for shortcuts in Atom.io. Proton also gives you a simple text configuration to manage all your packages quickly. Unfortunately Proton is not complete replacement of all actions.

Atom & Proton install guide

Atom.io proton-mode demo

Cursive may be an appropriate choice for people from a Java background who are already familiar with IntelliJ. Cursive will run static analysis of Clojure code when opening a Clojure project, as IntelliJ does with other languages.

Requires license for commercial development

There is a free license when development is not for commercial projects, however, a license must be purchased for each developer working on a commercial project.

IntelliJ & Cursive install guide

Cursive IDE


Last update: February 8, 2023