TreeSitter
Чем больше смотрю на TreeSitter, тем сильнее уверен что за ним будущее.
tree-sitter.el не нужен. На сайте проекта английским по белому написано, что если Emacs версии 29.1 или выше, то там есть встроенный TreeSitter, и надо использовать именно его.
Встроенный пакет называется treesit.el.
Что касается грамматик, то про них надо чуть подробнее рассказать.
У каждой грамматики есть не только API, но и ABI. Вот тут начинаются проблемы. Если ABI слишком новый, вы сможете скомпилировать библиотеку, но не сможете её использовать в Emacs.
Трагедия? Не совсем.
Во-первых, не надо использовать версии грамматик из ветки master или LGBTQ-френдли ветки main. Версия грамматики должна быть "прибита гвоздями" к одному из тегов. Это, в принципе, правило хорошего тона в разработке — использовать фиксированные версии зависимостей.
Во-вторых, в дауншифтинге нет ничего плохого. Ну не работает в вашей версии самая свежая релизная версия грамматики — используйте более старую!
В моём Emacs 30.1 получился такой список:
AsciiDoc: v0.3.0.
Dockerfile: v0.2.0.
JavaScript: v0.23.1.
JsDoc: v0.23.1.
JSON: v0.24.8.
Make: v1.1.1.
Python: v0.23.6.
Rust: v0.23.3.
Typst: 0.11.
YAML: v0.7.2.
Буква `v` перед номером версии — не моя блажь, а часть названия тега. `v0.23.3` и `0.23.3` — это разные теги, и если вы укажете название неправильно, получите ошибку.
Краткая инструкция по тому, как ставить грамматики.
1. Добавьте в init.el код, заполняющий список treesit-language-source-alist.
2. Установите нужные грамматики автоматически или вручную.
3. Если грамматика слишком новая и несовместима с вашей версией Emacs:
3.1. Понизьте версию.
3.2. Из каталога tree-sitter/ (лежит рядом с init.el) удалите соответствующий so- или dll-файл.
3.3. Перезапустите Emacs и установите грамматику заново. Библиотека будет скомпилирована заново, но более старой версии.
treesitter
emacs