Emacs: настраиваем TreeSitter

Emacs не стоит на месте: в него добавляют всё больше режимов на базе TreeSitter. В этой статье разбираемся, где взять грамматики, какие их версии использовать и как настроить treesit.el.

Семейство расширяемых текстовых редакторов

Emacs не стоит на месте: в него добавляют всё больше режимов на базе TreeSitter. В этой статье разбираемся, где взять грамматики, какие их версии использовать и как настроить treesit.el.

В Emacs режимы делятся на основные (major) и дополнительные (minor). Основной режим определяет правила работы с буфером: подсветку синтаксиса, поведение редактора при нажатии клавиш, какие-то дополнительные команды.
Если провести аналогию, то в других редакторах вы задаёте основной режим когда указываете тип файла. Например, в Zed тип файла по умолчанию — Plain Text. Однако, вы можете в любой момент поменять его на один из доступных, и вам тут же станут доступны и подсветка синтаксиса, и его проверка, и другие удобства.
Основной режим в буфере должен быть только одним. Как говорится:

Как загружают свои настройки нормальные текстовые редакторы и IDE? При запуске они ищут некий каталог, а внутри него — конфигурационные файлы. Если такие файлы есть, они их загружают и используют.
Неужели Emacs настолько сильно отличается от них? Да, отличается.

Хороший инструмент должен быть незаметен, и разработчикам следует к этому стремиться.
На деле же я нередко встречаю у них вредную привычку, с которой приходится бороться. Дело в том, что они преподносят недостатки инструмента как «увлекательные» головоломки, решение которых приносит удовольствие.
Я же хочу, чтобы мои инструменты не создавали для меня «увлекательные» головоломки, а просто незаметно делали своё дело.

Как фанат Emacs я рад каждой встрече с этим редактором в любых контекстах. Случается это редко — всё же Emacs относится к нишевой категории, и в современной поп-культуре его востребованность невелика. В этой статье я разберу все известные мне упоминания этого редактора вплоть до июня 2026 года и продолжу вносить новые по мере их нахождения. В основной список я включил случаи, которые встречал на экране (в кино и сериалах), а также в комиксах и мангах. Книжные упоминания я решил выделить в отдельную категорию «Доска почёта».
Ну что ж, начнём.

В августе прошлого, 2025 года, я рассказал о создании собственной чёрно-белой темы для GNU Emacs. Почти год безсменно я её использую и не испытываю никаких проблем (скриншот позволяет в этом убедиться). Но рассказ будет не про это, а про то, как выглядит техника создания собственной темы для Emacs. Для тех, кто подумал, что будет также скучно и сложно, как и в рассказах про создание собственного пакета и режима для Emacs, да, это так, только не сложно.

Статья Яна Уитлока о том, почему он не может отказаться от Magit, вдохновила меня поделиться своим взглядом на Magit. Этот текст посвящён перебазированию.
Я открыл лог Git. Вызвал Magit, привязанный к F3, и нажал lL. Первая l включает работу с логом, вторая — показывает его для всех локальных и отслеживаемых ими удалённых веток.
Статья написана под впечатлением от статьи Emacs Flaw: Simple Changes Emacs Should Adopt, написанной широко известным в узких кругах Emacs-троллем и автором множества пакетов Xah Lee. Кстати, он один из противников тотального внедрения HTTPS, поэтому статья по ссылке доступна только по HTTP.
Итак, как же нам улучшить Emacs?

Недавно я разработал ещё один режим GNU Emacs для C-подобного языка программирования C2. Если в предыдущий раз для другого C-подобного языка я написал код с нуля, то в этот раз решил воспользоваться возможностью так называемого наследования режимов. В этой статье хочу поделиться с вами как это делается, и что у меня из этого вышло. (Предполагается, что читатель ознакомился с материалом предыдущей статьи Как написать свой режим для GNU Emacs и опубликовать его в MELPA или имеет собственный уникальный опыт разработки режимов GNU Emacs.)

Вы обожаете Emacs, но вам необходимо работать с Jupyter ноутбуками? Данная статья расскажет еще об одном способе, как их подружить. Заходите под кат =)

C-x C-s?»
Вам нравится пользоваться GNU Emacs, но вы ещё не используете его для ведения своего Zettelkasten? В статье мы немного поговорим о собственно Zettelkasten, а затем о том, как настроить и использовать Org-roam с этой целью. На снимке выше вы видите Emacs с двумя связанными друг с другом заметками и визуализуцию графа в браузере, в котором выделен узел одной из открытых заметок и все связанные с ним. Интересно? Тогда читайте дальше.

Vim и Emacs — это, пожалуй, самый древний и легендарный «братский» конфликт в мире текстовых редакторов. Одни говорят: «Люди делятся на тех, кто знает Vim, и тех, кто знаком с болью и страданием». Другие возражают: «Emacs на самом деле полноценная операционная система, где просто не хватает хорошего текстового редактора».
Давайте попробуем окунуться в историю этого противостояния и собрать любопытные (а местами и безумные) факты о Vim и Emacs.

В этой статье мы рассмотрим, как организовать систему для ведения заметок с помощью Emacs и Org-mode. Мы обсудим базовую настройку Emacs для работы с заметками, а также предложим структуру, которая позволит эффективно управлять информацией и проектами. Эта система будет гибкой и легко адаптируемой под ваши нужды, позволяя вам создать персонализированное рабочее пространство.

Здравствуй читатель! Если ты пользователь редактора Emacs, то данная статья для тебя, в ином случае, можно проходить мимо, так как тема достаточно узкоспециализированная.
Меня зовут Вознесенский Михаил. Я являюсь руководителем группы разработки продукта RuPost в компании РуПост которая входит в состав Группы Астра (смотри не перепутай 😄).
В ходе своей деятельности я сталкивался со множеством текстовых редакторов/IDE и на данный момент остановился на Emacs. Не смотря на всю его мощь, у редактора имеется очень серьёзная проблема которая мешает нормальной продуктивной деятельности - управление расширениями.
В ходе своего исследования данного вопроса я наткнулся на статью за авторством Божидара Бацова (Bozhidar Batsov). Человек, который называет себя хакером и фанатиком Emacs, но так же является автором конфигурационного фреймворка Prelude.
Статья написана в далёком 2012 году, но остаётся актуальной и по сей день!
Если ты дочитал до этого предложения и тебе всё ещё интересно, то ниже представлен мой перевод с дополнительными комментариями, а активную помощь в редактуре оказал мой коллега Анатолий Гайдай.
Сегодня разбираем, что не так с кривой обучения GNU Emacs, и почему многие бросают его, так и не разобравшись.

Одна из проблем GNU Emacs заключается в сложности создания воспроизводимой сборки. Разумеется, вы всегда можете сделать себе контейнер, и запускать Emacs с помощью Docker, Podman или даже Kubernetes... Но я сейчас не о таких сложных случаях.
Итак, суть проблемы: если создать файл init.el и отладить его, то через 2-3 месяца запуск с ним Emacs на другом компьютере с большой вероятностью приведёт к ошибкам установки или несовместимости пакетов.
В этой статье рассматривается использование возможностей встроенного пакета package-vc-install.el для решения описанной проблемы.

С давних-предавних времен я использую персональную информационную систему на основе org-mode, встроенном в Emacs. Накоплено очень много полезной информации. Адреса, различные заметки, дневники, ссылки, TODO-шки ну и так далее. И все было хорошо, но появились мобильные телефоны и планшеты. Захотелось одновременно иметь доступ к информации используя устройства на Android. После некоторой возни что-то получилось. Выношу получившееся на суд общественности.
О, use-package!
Это пакет, который буквально изменил всё. Если раньше init.el заполняли кодом в императивном стиле, то с появлением use-package очень многие пользователи Emacs стали описывать свои настройки в декларативном стиле.
Пакет оказал настолько большое влияние на управление настройками Emacs, что начиная с Emacs 29 use-package стал встроенным (builtin), т. е. уже не требует установки вручную (хотя его всё ещё можно установить или обновить из других источников).
На сайте документации GNU есть целый раздел, посвящённый use-package, и вроде бы всё хорошо, но... Я бы тогда не написал эту статью.