All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
0.19.4 - 2026-01.16
- perf: Use hash table instead of alist
0.19.3 - 2025-12.23
- Push tag
0.19.1 - 2025-12.23
- Remove unused el files
0.19.0 - 2025-12.22
- Make button without newline (#259)
- feat: Support android
- Fix error on NetBSD (#256)
- Upgraded
tree-sittercrate to 0.26.3
0.18.0 - 2022-02-12
- Added APIs to traverse the syntax tree:
tsc-traverse-do,tsc-traverse-mapc,tsc-traverse-iter. The traversal is depth-first pre-order. - Improved syntax tree rendering's performance in
tree-sitter-debug. - Added optional params
propsandoutputtotsc-current-node, which allows retrieving node properties, instead of the node object itself. This enables performance optimizations in uses cases that deal with a large number of nodes.
0.17.0 - 2022-01-29
- Added customization option
tsc-dyn-get-from, which is a list of sources to get the dynamic moduletsc-dynfrom. Its default value is(:github :compilation). - Made
tree-sitter-hl's region-fontification function fall back to the underlying non-tree-sitter function when called outside oftree-sitter-hl-mode. This fixes an issue wherejupyter-repl-mode's input cells are not highlighted. - Updated
tsc-dyn-getto download platform-specific binaries (mainly for Apple Silicon).
0.16.1 - 2021-12-11
- Modified CI pipelines to publish additional pre-built dynamic modules. Their filenames include the platform they are built for. The files without platform in name will eventually be deprecated.
tsc-dyn.x86_64-apple-darwin.dylib(same astsc-dyn.dylib)tsc-dyn.x86_64-unknown-linux-gnu.so(same astsc-dyn.so)tsc-dyn.x86_64-pc-windows-msvc.dll(same astsc-dyn.dll)tsc-dyn.aarch64-apple-darwin.dylib(new, for Apple Silicon)
0.16.0 - 2021-12-08
- Upgraded
tree-sittercrate to 0.20.0, which:- Changed the semantics of range-restricted query to report matches that intersect the range, instead of only fully-contained matches. See tree-sitter#1130.
- Fixed an issue where multiple patterns with the same capture names can result in the first capture being omitted.
- Improved performance:
- Disabled query-region extension. Added a flag to turn it back on:
tree-sitter-hl-enable-query-region-extension. - Increased default chunk size for parsing from 1024 to 4096.
- Disabled query-region extension. Added a flag to turn it back on:
0.15.2 - 2021-09-12
- Reduced GC pressure by not making the text property
facea list if there is only one face. - Recast
tree-sitter-node-at-pointas more generaltree-sitter-node-at-pos, taking optional POS argument. - Made
tree-sitter-node-at-posaccept special node-type arguments:namedand:anonymous.
0.15.1 - 2021-03-20
- Fixed some invalid query patterns causing SIGABRT, by upgrading
tree-sittercrate. - Used keywords to represent auxiliary (invisible) node types. For example:
:end,:_expression.
0.15.0 - 2021-03-15
- Upgraded
tree-sittercrate to 0.19.3, which:- Added negated-field query patterns.
- Fixed some bugs, mostly query-related.
- Is required to support newer versions of the language grammars.
- Raised the minimum and maximum supported language ABI versions to 13. Older versions of the language bundle
tree-sitter-langs(before 0.10.0) will not be loaded.
0.14.0 - 2021-03-10
- Added ABI compatibility checks when loading a language object from a dynamic library.
- Made
tsc-make-querysignal concrete error symbols, instead ofrust-panic.
0.13.1 - 2021-01-16
- Used static linking for C runtime on Windows, to avoid having to install VC++ redistributable package.
0.13.0 - 2020-12-29
- Upgraded
emacscrate to 0.15.0 to improve performance on Emacs 27+. - Fixed the highlighting error when exporting org as html, by removing the hack that allows
tree-sitter-hlto work without (a major mode) setting upfont-lock-defaults.
0.12.2 - 2020-12-15
- Added warning after upgrading
tscif it requires a new version of the dynamic moduletsc-dyn, but an older version was already loaded. - Improved language loading mechanism's tolerance of hyphens in language names.
0.12.1 - 2020-11-04
- Fixed incorrect parsing when after-change's start position is not the same as before-change's start position. For example, this happens when calling
upcase-regionon a region whose first character is already upcased. - Upgraded
emacscrate to 0.14.1 to fix the compilation error on Rust 1.47. - Upgraded
tree-sittercrate to 0.17.1 to fix handling of repeated field names in queries.
0.12.0 - 2020-10-13
- Moved the core APIs from
tree-sitter-core.elinto their own packagetsc, to prepare for distribution through MELPA. Also changed their prefix fromts-totsc-, to avoid conflict withts.el.
0.11.1 - 2020-10-03
- Made
tree-sitter-hl-modea "no-op" whentree-sitter-hl-default-patternsis nil.
0.11.0 - 2020-09-26
- Upgraded
tree-sittercrate to fix an issue where query captures miss some nodes. This also added a check for definitely-invalid patterns when creating a query.
0.10.0 - 2020-08-01
- Used keywords instead of strings for field names.
- Replaced
ts-field-name-for-id,ts-field-id-for-namewithts-lang-field,ts-lang-field-id. - Replaced
ts-current-field-namewithts-current-field. - Replaced
ts-get-child-by-field-namewithts-get-child-by-field.
- Replaced
- Used symbols for named node types.
- Replaced
ts-type-name-for-idwithts-lang-node-type. - Added
ts-lang-node-type-id. - Changed the return type of
ts-node-type.
- Replaced
- Renamed
ts-type-named-ptots-lang-node-type-named-p. - Added optional param
NODE-TYPEtotree-sitter-node-at-point. - Upgraded
tree-sittercrate to get support for.not-match?predicate.
0.9.2 - 2020-07-20
- Upgraded
tree-sittercrate to add.as a valid start of predicates, in addition to#.
0.9.1 - 2020-07-19
- Upgraded
tree-sittercrate to fix incorrect capture handling when querying with range restriction.
0.9.0 - 2020-07-18
- Changed
tree-sitter-hl-add-patternsto support language-specific patterns, in addition to buffer-local patterns.
0.8.3 - 2020-07-12
- Fixed incorrect highlighting when region-to-highlight's boundaries cut query patterns in halves.
0.8.2 - 2020-06-30
- Upgraded
tree-sittercrate to fix handling of alternations under field names.
0.8.1 - 2020-06-28
- Added customization option
tree-sitter-hl-use-font-lock-keywords, allowingtree-sitter-hl-modeto work with minor modes that usefont-lock-add-keywords.
0.8.0 - 2020-06-07
- Upgraded
tree-sitterto 0.16.1. This significantly improved the expressiveness and power of tree queries. - Made
tree-sitter-hl-modework without a major mode. - Add more highlighting faces to
tree-sitter-hl. - Made
tree-sitter-coreautomatically downloadtree-sitter-dynbinary when first compiled/loaded. - Added documentation.
0.7.0 - 2020-05-02
- Added
global-tree-sitter-mode. - Added library
tree-sitter-hl, which provides query-based syntax highlighting by overriding certain parts offont-lock. - Reworked query APIs for performance and clarity, most notably
ts-make-query,ts-query-matches,ts-query-captures. - Fixed incorrect parsing caused by misunderstandings of Emacs's clumsy change tracking machinery.
0.6.0 - 2020-04-11
- Renamed
ts-parseintots-parse-chunks, to avoid conflict withts.el. - Added library
tree-sitter-query, which enables interactively building queries.
0.5.0 - 2020-03-17
- Added functions
ts-node-position-range,ts-node-eq. - Added function
tree-sitter-node-at-point. - Added macro
tree-sitter-save-excursion, which is useful for code formatting operations. - Added library
tree-sitter-extras, for extra functionalities built on top oftree-sitter-mode. - Upgraded
tree-sitterto 0.6.3. This fixedts-type-name-for-idandts-field-name-for-idcrashing on out-of-bounds IDs. - Fixed
ts-reset-cursoralways signaling "already mutable borrowed" error.
0.4.0 - 2020-03-01
- Replaced functions
ts-require-languageandts-load-languagewithtree-sitter-requireandtree-sitter-load. - Published pre-compiled
tree-sitterthrough a custom ELPA. - Published the grammar bundle
tree-sitter-langsas a separate package.
0.3.0 - 2020-02-21
- Used Emacs's 1-based byte positions and line numbers instead of 0-based byte offsets and row coordinates.
- Used cons cells instead of 2-element vectors to represent tree-sitter points and query matches/captures.
0.2.0 - 2020-02-02
- Upgraded
tree-sitterto 0.6.0. - Added library
tree-sitter-cli. - Added library
tree-sitter-langs(utilities to download pre-compiled modules and grammars).
Initial release