name: emacs-ts-mode description: "Comprehensive guide for building Emacs tree-sitter major modes. Covers the full treesit.el API, font-lock rules, indentation, navigation, imenu, and best practices distilled from studying 17+ production modes. Use when creating or modifying an Emacs tree-sitter mode (*-ts-mode), working with treesit-font-lock-rules, treesit-simple-indent-rules, or any Emacs tree-sitter integration. Trigger: user mentions 'ts-mode', 'tree-sitter mode', 'treesit', 'font-lock-rules', 'indent-rules', or asks about Emacs tree-sitter major mode development."
Emacs Tree-Sitter Mode Development Guide
Complete reference for building Emacs 29+ tree-sitter major modes, distilled from the Emacs core treesit.el API and 17+ production modes (built-in: go, rust, c/c++, elixir, python, ruby, typescript; third-party: clojure, ada, haskell, scala, templ, swift, zig, and others).
Reference modes are cloned at ~/projects/jai-ts-mode/reference-modes/ for direct study.
Key built-in files to consult:
reference-modes/emacs/lisp/treesit.el— core infrastructure (5835 lines)reference-modes/emacs/lisp/progmodes/go-ts-mode.el— clean standalone modereference-modes/emacs/lisp/progmodes/rust-ts-mode.el— advanced font-lock patternsreference-modes/emacs/lisp/progmodes/c-ts-mode.el— complex dual-language, preprocessor handlingreference-modes/emacs/lisp/progmodes/c-ts-common.el— reusable C-family utilities
Key third-party modes:
reference-modes/clojure-ts-mode/— best-documented, has doc/design.mdreference-modes/ada-ts-mode/— most feature-complete single-language modereference-modes/elixir-ts-mode/— upstreamed to Emacs core, multi-language embedding
See references/cheatsheet.md for the full API cheatsheet.