# Changelog

<!-- Entries are one line per item, so the line-length rule doesn't fit this file. -->
<!-- markdownlint-disable MD013 -->

## main (unreleased)

## 0.7.0 (2026-11-07)

- [#133](https://github.com/clojure-emacs/clojure-ts-mode/pull/133): Fix indentation of namespaced maps in `fixed` indentation style.
- [#130](https://github.com/clojure-emacs/clojure-ts-mode/pull/130): Add project root detection for ClojureCLR project.
- [88e92ee](https://github.com/clojure-emacs/clojure-ts-mode/commit/88e92ee2f06182a7d3420ff988723569f6b181d6): Add missing `defstruct` semantic indentation rule.
- [c695836](https://github.com/clojure-emacs/clojure-ts-mode/commit/c69583645f8276d224d78a1f2d9b65b5287c7eeb): Fix font-lock issues: duplicate query, missing `definline` metadata docstring.
- [68e98ed](https://github.com/clojure-emacs/clojure-ts-mode/commit/68e98edf3de86abdc8fdd72574e086a0244b46fd): Fix missing builtin symbols in font-lock regexp.
- [#132](https://github.com/clojure-emacs/clojure-ts-mode/pull/132): Improve performance for imenu, font-lock and indentation.
- [#145](https://github.com/clojure-emacs/clojure-ts-mode/pull/145): Improve performance for `clojure-ts-align` by caching indentation rules.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Fix `clojure-ts-clojurescript-mode` asking to install the jsdoc grammar on Emacs 31, and failing to start without it.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Stop running the hooks of `js-ts-mode` and `c++-ts-mode` (and `prog-mode-hook`) in a hidden buffer when `clojure-ts-clojurescript-mode` or `clojure-ts-jank-mode` starts.
- [#147](https://github.com/clojure-emacs/clojure-ts-mode/issues/147): Fix `clojure-ts-align-forms-automatically` having no effect in `clojure-ts-clojurescript-mode` and `clojure-ts-jank-mode`.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Make `M-q` (`prog-fill-reindent-defun`) reindent the whole top-level form again on Emacs 31, instead of just the innermost one.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Fix `clojure-ts-update-ns` replacing unrelated text instead of the ns name when `clojure-ts-cache-ns` is enabled.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Fix `clojure-ts-cycle-privacy` changing the next definition, or a name that merely starts with `def`, when point isn't in a definition.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Fix `clojure-ts-cycle-conditional` mangling namespace-qualified forms, swapping the wrong parts of an `if` with discarded forms, metadata or no else branch, and not working in function literals.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Fix `clojure-ts-cycle-not` around metadata: it dropped the metadata of the form it unwrapped, left a new `not` inside it, garbled forms whose head symbol has metadata, and could signal `args-out-of-range`.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Make the threading and unwinding commands refuse to work around metadata, `#_` forms and reader conditionals, which they used to garble.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Fix `clojure-ts-add-arity` wrapping the dispatch value of a `defmethod` when it's a vector.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Stop the refactoring commands from changing a nearby form when point is on a blank line before, between or after forms.
- [#161](https://github.com/clojure-emacs/clojure-ts-mode/pull/161): Fix converting collections with metadata: a quoted list with metadata after the quote (`'^:foo (1 2)`) failed to convert, and converting to a quoted list put the quote after the metadata.
- [#153](https://github.com/clojure-emacs/clojure-ts-mode/pull/153): Align threading macro arguments with the first argument instead of the previous one, which went wrong after a line with several forms or a trailing comment.
- [#154](https://github.com/clojure-emacs/clojure-ts-mode/pull/154): Fix semantic indentation of forms with metadata or a comment before an argument or the body, like `(doto ^Foo`, `(let ;; bindings` or `(comment ;; scratch`.
...
...
