clojure-mode 
- Description
- Major mode for Clojure code
- Latest
- clojure-mode-5.23.0.0.20260325.143544.tar (.sig), 2026-Mar-25, 230 KiB
- Maintainer
- Bozhidar Batsov <bozhidar@batsov.dev>
- Website
- https://github.com/clojure-emacs/clojure-mode
- Browse ELPA's repository
- CGit or Gitweb
- Badge
To install this package from Emacs, use package-install or list-packages.
Full description
Provides font-lock, indentation, navigation and basic refactoring for the Clojure programming language (https://clojure.org). Using clojure-mode with paredit or smartparens is highly recommended. Here are some example configurations: ;; require or autoload paredit-mode (add-hook 'clojure-mode-hook #'paredit-mode) ;; require or autoload smartparens (add-hook 'clojure-mode-hook #'smartparens-strict-mode) See inf-clojure (https://github.com/clojure-emacs/inf-clojure) for basic interaction with Clojure subprocesses. See CIDER (https://github.com/clojure-emacs/cider) for better interaction with subprocesses via nREPL.
Old versions
News
Changelog
master (unreleased)
5.23.0 (2026-03-25)
New features
- Adopt the modern indent spec tuple format (
((:block N)),((:inner D)),((:inner D I))) shared withclojure-ts-modeandcljfmt. The legacy format (integers,:defn, positional lists) is still accepted but will be removed in clojure-mode 6.- Add
clojure-get-indent-specpublic API for retrieving indent specs in the modern format. put-clojure-indentanddefine-clojure-indentnow accept both modern and legacy indent specs.
- Add
Changes
- Convert all built-in
define-clojure-indentspecs to the modern tuple format. - Migrate CI from CircleCI to GitHub Actions.
Bugs fixed
- Fix
clojure-paredit-setupto apply toedn-mode-mapas well asclojure-mode-map. - Fix destructive
sortbug inclojure-project-root-path.
5.22.0 (2026-03-03)
New features
- #687: Add
clojure-preferred-build-toolto control project root detection when multiple build tool files exist. When unset, prefer directories containing.gitas a tiebreaker. - #688: Add
clojure-discard-facefor#_reader discard forms, allowing them to be styled differently from comments. Inherits fromfont-lock-comment-faceby default. - Add project root detection for ClojureCLR (
deps-clr.edn). - Give
edn-modeits own keymap with data-appropriate bindings, excluding code-oriented refactoring commands.
Changes
- Update font-locking of built-in dynamic vars for Clojure 1.12.
- Update
clojure-mode-extra-font-lockingfor Clojure 1.10-1.12 (new functions inclojure.coreand other bundled namespaces). - Add
clojure.replsection toclojure-mode-extra-font-locking. - Remove non-existent entries from
clojure-mode-extra-font-locking(specify,specify!,special-form-anchor,syntax-symbol-anchor,stream?). - Extend
clojure--check-wrong-major-modeto cover all derived modes (.cljd,.jank,.joke,.edn). - Remove dead
.cljdentry fromclojure-modeauto-mode-alist.
Bugs fixed
- #402: Font-lock protocol method docstrings with
font-lock-doc-face. - #649: Fix
clojure-add-aritysevering arglist metadata (^String,^:keyword,^{...}) when converting single-arity to multi-arity. - #600: Fix
clojure--valid-put-clojure-indent-call-prejecting valid indent specs with nested lists (e.g.letfn's(1 ((:defn)) nil)). - #365: Font-lock function names in
letfnbindings withfont-lock-function-name-face. - #527: Fix
clojure-sort-nsmangling:gen-classand other non-sortable ns forms. - #619: Fix
clojure-thread-last-allbreaking forms containing line comments by absorbing closing parens into comments. - #610: Fix
edn-modeindentation to treat all paren lists as data rather than function calls. - Fix
clojure-update-nsbroken by the removal ofclojure-namespace-name-regex. - Fix typos in
clojure-mode-extra-font-locking:halt-when?->halt-when,simple-indent?->simple-ident?. - Fix
docandfind-docmisplaced underclojure.coreinstead ofclojure.replin extra font-locking.