- Font-lock Lein's
defproject
as a keyword.
- #641: Recognize nbb projects (identified by the presence of
nbb.edn
). - #629: Set
add-log-current-defun-function
to new functionclojure-current-defun-name
(this is used bywhich-function-mode
andeasy-kill
).
- #581: Fix font locking not working for keywords starting with a number.
- #377: Fix everything starting with the prefix
def
being highlighted as a definition form. Now definition forms are enumerated explicitly in the font-locking code, like all other forms. - #638: Fix imenu with Clojure code in string or comment.
- #625: Fix metadata being displayed in
imenu
instead of var name.
- Allow additional directories, beyond the default
clj[sc]
, to be correctly formulated byclojure-expected-ns
via newdefcustom
entitledclojure-directory-prefixes
- Recognize babashka projects (identified by the presence of
bb.edn
). - #601: Add new command
clojure-promote-fn-literal
for converting#()
function literals tofn
form.
- #604: Add
bb
(babashka) tointerpreter-mode-alist
.
- #608 Fix alignment issue involving margin comments at the end of nested forms.
- #590: Extend
clojure-rename-ns-alias
to work on selected regions. - #567: Add new commands
clojure-toggle-ignore
,clojure-toggle-ignore-surrounding-form
, andclojure-toggle-defun
for inserting/deleting#_
ignore forms. - #582: Add
clojure-special-arg-indent-factor
to control special argument indentation.
- #588: Fix font-lock for character literals.
- Stop
clojure-sort-ns
from callingredisplay
.
- #589: Improve font-locking performance on strings with escaped characters.
- #571: Remove
project.el
integration. - #574: Remove
clojure-view-grimoire
command. - #584: Align to recent
pcase
changes on Emacs master.
- #556:
clojure-rename-ns-alias
picks up existing aliases for minibuffer completion.
- #565: Fix extra spaces being inserted after quote in paredit-mode.
- #544: Fix docstring detection when string contains backslash.
- #547: Fix font-lock regex for character literals for uppercase chars and other symbols.
- #556: Fix renaming of ns aliases containing regex characters.
- #555: Fix ns detection for ns forms with complex metadata.
- #550: Fix
outline-regexp
sooutline-insert-heading
behaves correctly. - #551: Indent
clojure-align
region before aligning. - #520: Fix allow
clojure-align-cond-forms
to recognize qualified forms. - #404/#528: Fix syntax highlighting for multiple consecutive comment reader macros (
#_#_
).
- Inline definition of
clojure-mode-syntax-table
and support'
quotes in symbols. - Enhance add arity refactoring to support a
defn
inside a reader conditional. - Enhance add arity refactoring to support new forms:
letfn
,fn
,defmacro
,defmethod
,defprotocol
,reify
andproxy
.
- #496: Highlight
[[wikilinks]]
in comments. - #366: Add support for renaming ns aliases (
clojure-rename-ns-alias
, default bindingC-c C-r n r
). - #410: Add support for adding an arity to a function (
clojure-add-arity
, default bindingC-c C-r a
).
- Dynamic vars whose names contain non-alphanumeric characters are now font-locked correctly.
- #445 (comment): Proper font-locking for namespaced keywords like for example
(s/def ::keyword)
. - #508: Fix font-locking for namespaces with metadata.
- #506:
clojure-mode-display-version
correctly displays the package's version. - #445, #405, #469: Correct font-locking on string definitions with docstrings, e.g:
(def foo "doc" "value")
. Correct indentation as well. - #518: Fix
clojure-find-ns
when there's anns
form inside a string. - #530: Prevent electric indentation within inlined docstrings.
- #524: Add proper indentation rule for
delay
(same as forfuture
). - #538: Refactor
clojure-unwind
to take numeric prefix argument for unwinding N steps, and universal argument for unwinding completely. The dedicatedC-c C-r a
binding forclojure-unwind-all
is now removed and replaced with the universal arg conventionC-u C-c C-r u
.
- Recognize Gradle projects using the new Kotlin DSL (
build.gradle.kts
). - #481: Support vertical alignment even in the presence of blank lines, with the new
clojure-align-separator
user option. - #483: Support alignment for reader conditionals, with the new
clojure-align-reader-conditionals
user option. - #497: Indent "let", "when" and "while" as function form if not at start of a symbol.
- #489: Inserting parens before comment form doesn't move point.
- #500: Fix project.el integration.
- #513: Fix incorrect indentation of namespaced map.
- Change the accepted values of
clojure-indent-style
from keywords to symbols. - #503: Fix Makefile so that we can compile again.
- #485: Fix a regression in
end-f-defun
.
- Add
clojure-toplevel-inside-comment-form
to make forms inside of(comment ...)
forms appear as top level forms for evaluation and navigation. - Require Emacs 25.1+.
- Disable ns caching by default.
- Fix the project.el integration.
- New interactive commands
clojure-show-cache
andclojure-clear-cache
. - Add basic integration with
project.el
. - The results of
clojure-project-dir
are cached by default to optimize performance. - #478: Cache the result of
clojure-find-ns
to optimize performance.
- Indent
fdef
(clojure.spec) like adef
. - Add
shadow-cljs.edn
to the default list of build tool files.
- Add imenu support for multimethods.
- Make imenu recognize indented def-forms.
- New interactive command
clojure-cycle-when
. - New interactive command
clojure-cycle-not
. - New defcustom
clojure-comment-regexp
for font-locking#_
or#_
AND(comment)
sexps. - #459: Add font-locking for new built-ins added in Clojure 1.9.
- #471: Support tagged maps (new in Clojure 1.9) in paredit integration.
- Consider
deps.edn
a project root. - #467: Make
prog-mode-map
the parent keymap forclojure-mode-map
.
- Drop support for CLJX.
- Remove special font-locking of Java interop methods & constants: There is no semantic distinction between interop methods, constants and global vars in Clojure.
- #458: Get correct ns when in middle of ns form with
clojure-find-ns
- #447: When
electric-indent-mode
is on, force indentation from within docstrings. - #438: Filling within a doc-string doesn't affect surrounding code.
- Fix fill-paragraph in multi-line comments.
- #443: Fix behavior of
clojure-forward-logical-sexp
andclojure-backward-logical-sexp
with conditional macros. - #429: Fix a bug causing last occurrence of expression sometimes is not replaced when using
move-to-let
. - #423: Make
clojure-match-next-def
more robust against zero-arity def-like forms. - #451: Make project root directory calculation customized by
clojure-project-root-function
. - Fix namespace font-locking: namespaces may also contain non alphanumeric chars.
- Make
clojure--read-let-bindings
more robust solet
related refactorings do not bail on an incorrectly formatted binding form.
- New interactive command
clojure-mode-report-bug
. - New interactive command
clojure-view-guide
. - New interactive command
clojure-view-reference-section
. - New interactive command
clojure-view-cheatsheet
. - New interactive command
clojure-view-grimoire
. - New interactive command
clojure-view-style-guide
. - Make the refactoring keymap prefix customizable via
clojure-refactor-map-prefix
. - Port and rework
let
-related features fromclj-refactor
. Available features: introducelet
, move tolet
, forward slurp form intolet
, backward slurp form intolet
.
clojure-mode
now requires Emacs 24.4.
- #399: Fix fontification of prefix characters inside keywords.
- #394:
?
character is now treated as prefix when outside symbols. - #394:
#
character now has prefix syntax class. - Fixed indentation of
definterface
to match that ofdefprotocol
. - #389: Fixed the indentation of
defrecord
anddeftype
multiple airity protocol forms. - #393:
imenu-generic-expression
is no longer hard-coded and its global value is respected.
- Port cycle privacy, cycle collection type and cycle if/if-not from clj-refactor.el.
- Rework cycle collection type into convert collection to list, quoted list, map, vector, set.
- When aligning forms with
clojure-align
(or with the automatic align feature), blank lines will divide alignment regions. - #378: Font-lock escape characters in strings.
- Port threading macros related features from clj-refactor.el. Available refactorings: thread, unwind, thread first all, thread last all, unwind all.
- New command:
clojure-sort-ns
. - All ns manipulation commands have keybindings under
C-c C-r n
.
- #371: Don't font-lock
:foo/def
like adef
form. - #367:
clojure-align
no longer gets confused with commas. In fact, now it even removes extra commas.
- #370: Warn the user if they seem to have activated the wrong major-mode.
- Make the expected ns function configurable via
clojure-expected-ns-function
.
- #361: Fixed a typo preventing the highlighting of fn names that don't start with
t
. - #360:
clojure-align
now reindents after aligning, which also fixes an issue with nested alignings.
- #362: New custom option
clojure-indent-style
offers 3 different ways to indent code.
- Vertically align sexps with
C-c SPC
. This can also be done automatically (as part of indentation) by turning onclojure-align-forms-automatically
. - Indent and font-lock forms that start with
let-
,while-
orwhen-
like their counterparts. - Apply the
font-lock-comment-face
to code commented out with#_
. - Add indentation config for ClojureScript's
this-as
.
- Namespaces can now use the full palette of legal symbol characters.
- Namespace font-locking according to
clojure.lang.LispReader
. - Fixed the indentation for
specify
andspecify!
. - Fixed the docstring indentation for
defprotocol
.
- Don't treat the symbol
default-(something)
as def* macro. cider-find-ns
now returns the closestns
instead of the first one.- #344: Fixed the indentation of
extend-type
.
- #302: Add new sexp navigation commands.
clojure-forward-logical-sexp
andclojure-backward-logical-sexp
consider^hints
and#reader.macros
to be part of the sexp that follows them. - #303: Handle
boot
projects inclojure-expected-ns
. - Added dedicated modes for ClojureScript, ClojureC and ClojureX. All of them are derived from
clojure-mode
. - Added support for Gradle projects.
- Vastly improved indentation engine.
- Added support for reader conditionals.
- Improved font-locking of namespaced symbols.
- #310 and #311 Fix
clojure-expected-ns
in multi-source projects. - #307: Don't highlight
handle
andhandler-case
as keywords. - Fix font-locking for def with special chars such as:
defn*
,defspecial!
. - Numerous indentation issues.
- Add
.cljc
toauto-mode-alist
. - #281: Add support for namespace-prefixed definition forms.
- Remove
clojure-mark-string
. - #283: You can now specify different indentation settings for ns-prefixed symbols.
- #285: Require Emacs 24.3+.
- Prevent error when calling
indent-for-tab-command
at the start of the buffer at end of line. - #274: Correct font-locking of certain punctuation character literals.
- Fix font-locking of namespace-prefixed dynamic vars (e.g.
some.ns/*var*
). - #284: Fix the indentation of the
are
macro.
- Indent properly
as->
. - Revert the indentation settings for
->
,->>
,some->
andsome->>
.
- Removed
inferior-lisp
integration in favor ofinf-clojure
. - Indented the body of
cond
with 2 spaces. - Removed special indentation settings for
defstruct
,struct-map
andassoc
. - Added special indentation settings for
->
,->>
,cond->
,cond->>
,some->
andsome->>
.
- Numerous font-lock bug fixes.
- #260: Don't treat
@
as a word character. - #239: Indent properly multi-arity definitions.
- Added font-locking for namespaces and namespace aliases.
- Added font-locking for character literals.
- Added font-locking for constants.
- Added font-locking for dynamic vars.
- Added font-locking for
cljx
. - Various docstring filling improvements.
- Introduced additional faces for keyword literals, character literals and interop method invocations.
- Added support for
prettify-symbols-mode
.
- Emacs 24.1 is required.
- Removed deprecated
clojure-font-lock-comment-sexp
. - Renamed
clojure-mode-font-lock-setup
toclojure-font-lock-setup
. - Some font-locking was extracted to a separate package. (clojure-mode-extra-font-locking).
- Properly font-lock docstrings regardless of the presence of metadata or type hints.