Version 5.22.0 of package Clojure-Mode has just been released in NonGNU ELPA. You can now find it in M-x list-packages RET.
Clojure-Mode describes itself as: =========================== Major mode for Clojure code =========================== More at https://elpa.nongnu.org/nongnu/clojure-mode.html ## Summary: 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. ## Recent NEWS: # Changelog ## master (unreleased) ## 5.22.0 (2026-03-03) ### New features * [#687](https://github.com/clojure-emacs/clojure-mode/issues/687): Add `clojure-preferred-build-tool` to control project root detection when multiple build tool files exist. When unset, prefer directories containing `.git` as a tiebreaker. * [#688](https://github.com/clojure-emacs/clojure-mode/issues/688): Add `clojure-discard-face` for `#_` reader discard forms, allowing them to be styled differently from comments. Inherits from `font-lock-comment-face` by default. * Add project root detection for ClojureCLR (`deps-clr.edn`). * Give `edn-mode` its 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-locking` for Clojure 1.10-1.12 (new functions in `clojure.core` and other bundled namespaces). * Add `clojure.repl` section to `clojure-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-mode` to cover all derived modes (`.cljd`, `.jank`, `.joke`, `.edn`). * Remove dead `.cljd` entry from `clojure-mode` `auto-mode-alist`. ### Bugs fixed * [#402](https://github.com/clojure-emacs/clojure-mode/issues/402): Font-lock protocol method docstrings with `font-lock-doc-face`. * [#649](https://github.com/clojure-emacs/clojure-mode/issues/649): Fix `clojure-add-arity` severing arglist metadata (`^String`, `^:keyword`, `^{...}`) when converting single-arity to multi-arity. * [#600](https://github.com/clojure-emacs/clojure-mode/issues/600): Fix `clojure--valid-put-clojure-indent-call-p` rejecting valid indent specs with nested lists (e.g. `letfn`'s `(1 ((:defn)) nil)`). * [#365](https://github.com/clojure-emacs/clojure-mode/issues/365): Font-lock function names in `letfn` bindings with `font-lock-function-name-face`. * [#527](https://github.com/clojure-emacs/clojure-mode/issues/527): Fix `clojure-sort-ns` mangling `:gen-class` and other non-sortable ns forms. * [#619](https://github.com/clojure-emacs/clojure-mode/issues/619): Fix `clojure-thread-last-all` breaking forms containing line comments by absorbing closing parens into comments. * [#610](https://github.com/clojure-emacs/clojure-mode/issues/610): Fix `edn-mode` indentation to treat all paren lists as data rather than function calls. * Fix `clojure-update-ns` broken by the removal of `clojure-namespace-name-regex`. * Fix typos in `clojure-mode-extra-font-locking`: `halt-when?` -> `halt-when`, `simple-indent?` -> `simple-ident?`. * Fix `doc` and `find-doc` misplaced under `clojure.core` instead of `clojure.repl` in extra font-locking. ## 5.21.0 (2026-02-18) ### New features * [#650](https://github.com/clojure-emacs/clojure-mode/issues/650): Add `edn-mode`, a lightweight mode derived from `clojure-mode` with data-appropriate indentation for `.edn` files. * [#439](https://github.com/clojure-emacs/clojure-mode/issues/439): Add `interpreter-mode-alist` entries for `clojure`, `clj`, `planck`, `joker`, and `jank`, so that scripts with shebang lines are recognized automatically. ### Bugs fixed * [#658](https://github.com/clojure-emacs/clojure-mode/issues/658): Fix `clojure-mode-version` returning `nil`. * [#686](https://github.com/clojure-emacs/clojure-mode/issues/686): Fix `clojure-find-def` failing when comments appear between the `def` form and the symbol name. * [#637](https://github.com/clojure-emacs/clojure-mode/issues/637): Fix `clojure-find-def` failing on symbols containing special characters (e.g. `defn+`). ### Changes * [#482](https://github.com/clojure-emacs/clojure-mode/issues/482): Bind `clojure-align` to `C-c C-a` (following Emacs keybinding conventions). The old `C-c SPC` binding is deprecated and will be removed in a future release. * Bump the minimum required Emacs version to 27.1. ## 5.20.0 (2025-05-27) ... ...
