How I am deeply integrating Emacs
Joshua Blais глубоко интегрирует Emacs в свою рабочую среду, используя его для практически всех задач, кроме работы с видео. Он выбрал Hyprland в качестве оконного менеджера, отмечая его простоту настройки и отсутствие лагов в Wayland-режиме, в отличие от GNOME, где приходилось запускать Emacs в X11. Его цель — создать бесшовную среду, где мысли мгновенно превращаются в действия.
Автор рассматривал EXWM как оконный менеджер, но отказался от идеи из-за однопоточности Emacs (риск зависания всей системы) и привязки к X11, в то время как развитие Linux движется к Wayland. Для ускорения workflows он создал кастомный лаунчер на Go, который ускорил его работу в 10 раз. Текущая настройка включает vterm в качестве терминала по умолчанию, универсальный лаунчер, org mode для заметок, менеджер паролей, почту, чтение лент и музыку — всё внутри Emacs.
Комментарии (146)
- Спор о влиянии инструментов на творчество: одни утверждают, что свобода от инструментов раскрывает потенциал профессионалов, другие считают это заблуждением, подчеркивая важность качества инструментов.
- Критика дистрибутивов типа Doom Emacs и Spacemacs: пользователи отмечают их полезность для новичков, но указывают на ограничения при глубокой кастомизации и конфликт с личными предпочтениями.
- Технические ограничения Emacs: обсуждение проблем с EXWM (конфликт клавиш, однопоточность) и TRAMP для удаленной разработки, а также сравнение с современными редакторами вроде Helix.
- Философия кастомизации: Emacs ценится за возможность полной настройки через Elisp, но это требует времени и усилий, что отпугивает некоторых пользователей.
- Альтернативы и будущее: предложения о создании единого универсального редактора, критика текущей модели с множеством "окон в окнах" и поиск баланса между простотой и гибкостью.
I used standard Emacs extension-points to extend org-mode
Emacs: сдвиг парадигмы
Прочитав гайд по расширению Emacs, я выхватил главное: редактор не просто позволяет кастомизацию, а требует её. Он отдаёт в руки функции-ядерные боеголовки вроде advice-add и ждёт, что ты разберёшь его на запчасти и соберёшь обратно, как нужно тебе.
Пример: автосортировка списка прочитанного в Org-режиме по году. Вручную вызывать org-sort-entries надоело.
- Оборачиваем команду в функцию, которую можно вызвать из кода:
(defun org-sort-run ()
(when (and (derived-mode-p 'org-mode) org-sort-option)
(org-sort-entries nil ?r nil nil org-sort-option nil)))
- Вешаем на хук сохранения:
(add-hook 'before-save-hook #'org-sort-run)
Готово, но это «ещё один скрипт». Хочется, чтобы критерий сортировки жил в самом файле.
Добавляем в заголовок:
#+SORT: year
Листаем исходники Org, ищем, как парсятся in-buffer-настройки (+STARTUP → org-startup-options → org-set-regexps-and-options), копируем кусок, вставляем своё ключевое слово SORT, читаем значение, передаём в org-sort-run.
Итого: без форка Org, без плагина, всего 15 строк элиспа, мы навязали режиму поведение, о котором его авторы не думали. Вот она, эмаксовская свобода.
Комментарии (26)
- Участники обсуждают Emacs как мощный, но трудоёмкий инструмент, который «отдаётся» только при долгосрочном использовании и постоянной доработке.
- Сходятся во мнении: чем дольше им пользуешься, тем выше окупаемость вложенного времени, поскольку каждая доработка накапливается и ускоряет работу с текстом, файлами и внешними системами.
- Некоторые признают, что «делают всё не так» — пишут корявый elisp, лишь бы работало, и со временем это «патинируется» в устойчивую конфигурацию.
- Упоминают конкретные хаки: сохранение раскладки окон, быстрый переход к предыдущим точкам редактирования, интерактивная доработка кода в чате с Claude.
- Часть пользователей всё же считает кривую обучения слишком крутой: годами не хватает IDE-фич, поэтому Emacs остаётся лишь для org-mode и периодических попыток «всё-таки пересесть».
- Старая шутка звучит как аксиома: «Emacs учится всю жизнь — чем раньше начнёшь, тем дольше займёт».
A beginner's guide to extending Emacs
Краткий путь от Spacemacs к своему конфигу: как за 200 строк Elisp добавить автодополнение ref-ов в reStructuredText
Проблема: в Sphinx-доке сотни .. _code_example: и я не помню ни одного. Нужно M-. → список → выбрал → вставил.
0. Emacs готов быть поломан
- Всё документировано, встроенный
C-h f/C-h vпокажет исходники. advice-add,define-derived-mode,completion-at-point-functions— ядерные кнопки; нажал — получил power.
1. Берём нужные куски
rst-modeуже есть.completion-at-pointуже умеет списки.- Осталось написать backend, который возвращает список всех
.. _xxx:из*.rstпроекта.
2. Одна функция — один пулл
(defun rst-collect-refs ()
"Возвращает alist (ref . file) для всех *.rst ниже `project-root'."
(let ((refs nil))
(projectile-map-project-files
(lambda (f)
(when (string-suffix-p ".rst" f)
(with-temp-buffer
(insert-file-contents f)
(while (re-search-forward "^\\.\\. _\\([^:]+\\):" nil t)
(push (cons (match-string-no-properties 1) f) refs))))))
refs))
3. Подсовываем в CAPF
(defun rst-ref-capf ()
(when (looking-back ":ref:`\\([^`]*\\)?" (line-beginning-position))
(let ((refs (rst-collect-refs))
(beg (match-beginning 1)))
(list beg (point)
(mapcar #'car refs)
:annotation-function
(lambda (s) (format " (%s)" (cdr (assoc s refs))))))))
(add-hook 'rst-mode-hook
(lambda ()
(add-hook 'completion-at-point-functions
#'rst-ref-capf nil t)))
4. Украшательства (по желанию)
company-mode+company-capf→ всплывающее меню.marginalia→ красивые аннотации.which-key→ подсказки команд.
5. Итого
20 минут, 40 строк «моего» кода, 160 строк boilerplate.
Emacs живёт 40 лет, но всё ещё позволяет за вечер сделать IDE под себя.
Комментарии (13)
- В Emacs всё — вызов функции: даже нажатие клавиши вызывает elisp-функцию, которую можно переопределить.
- Встроенные
describe,apropos,infoи пакетhelpfulпозволяют быстро понять, «что под капотом», и начать не только конфигурировать, но и расширять редактор. - Пользователи активно интегрируют LLM: через gptel просят Claude 4.1 отвечать в org-файл, версионируют диалоги и думают над собственным chat-mode.
- Doom/Spacemacs дают «готовое мнение» для переходящих с Vim, но рано или поздно приходится дорабатывать конфиг самостоятельно.
- Главный совет: не бояться экспериментировать — в Emacs конфигурация и полноценное программирование различаются только глубиной погружения.
Emacs as your video-trimming tool 🔥 Горячее
Emacs как обрезчик видео
Марцин Борковский показал, как вырезать фрагменты прямо из редактора. Автору тоже часто нужно обрезать скринкасты, поэтому он вдохновился и написал video-trimmer-mode (~300 строк Elisp).
- Использует
ffmpegдля всей тяжёлой работы. - Показывает превью и позволяет задавать начало/конец кадрами.
- Код живёт в dotsies и обновляется.
Если пригодилось — поддержите автора на GitHub Sponsors или купите его macOS/iOS-приложения.
Комментарии (142)
- Автор показал, как обрезать видео прямо в Emacs, используя ffmpeg и 300 строк Elisp.
- Пользователи спорят: «круто, но зачем?» vs «если ты уже живёшь в Emacs, то это естественно».
- Плюсы: всё текстом, клавиатурное управление, можно автоматизировать, не надо выходить из среды.
- Минусы: GUI всё-таки удобнее для точного выбора кадров; для разовой задачи проще спросить LLM нужную команду ffmpeg.
- Сторонники Emacs считают его не редактором, а полноценной программной средой (или «ОС»), где легко интегрировать любые инструменты.
Efrit: A native elisp coding agent running in Emacs
efrit — агент для написания кода на чистом Elisp, работающий прямо в Emacs.
Он читает/пишет буферы, запускает команды, ищет документацию, тестирует и рефакторит код, используя только встроенные средства Emacs и внешние процессы.
Возможности
- Понимает структуру проекта (файлы, зависимости, тесты).
- Пишет новые функции, классы, тесты, документацию.
- Исправляет баги и предлагает улучшения.
- Работает в фоне и может действовать по хукам (сохранение, коммит).
Установка
(use-package efrit
:straight (:host github :repo "steveyegge/efrit"))
Запуск: M-x efrit-mode в нужном буфере или (efrit-global-mode 1) для всей сессии.
Команды
efrit-suggest-improvements— предложения по коду.efrit-write-tests— сгенерировать тесты.efrit-explain-region— объяснить выделенный фрагмент.
Конфигурация
(setq efrit-model "gpt-4o-mini"
efrit-max-tokens 4000
efrit-auto-save t)
Статус
Альфа-версия; API может меняться. Пул-реквесты и issue приветствуются.
Комментарии (29)
- Пользователи обсуждают новый Emacs-пакет Efrit (от Steve Yegge) для AI-ассистента внутри редактора.
- Уточняют, что «efrit» — это игра слов: «e» (emacs) + «ifrit» (разновидность джинна).
- Сравнивают с gptel: Efrit пока заточен под Anthropic, в то время как gptel поддерживает множество бэкендов.
- Кто-то уже запустил Efrit c Gemini через прокси, другие жалуются на ошибки и отсутствие документации.
- Параллельно идёт спор о «современном» способе конфигурировать Emacs: bedrock, doom, ручной минимализм vs «сделать из Emacs VS Code».
Claude Code IDE integration for Emacs 🔥 Горячее 💬 Длинная дискуссия
Claude Code IDE для Emacs
Обзор
- Интеграция с Claude Code CLI через MCP создает двусторонний мост между Claude и Emacs.
- Claude получает доступ к возможностям Emacs: LSP, проекты, Elisp-функции, что делает его «понимающим Emacs» помощником в вашем рабочем процессе.
Возможности
- Автоопределение проекта и управление сессиями
- Терминал с цветом (vterm/eat)
- Реализация MCP для IDE-интеграции
- Инструменты для файлов, состояния редактора и рабочего пространства
- Расширяемый сервер MCP для Emacs-команд (xref, tree-sitter, project и др.)
- Диагностики Flycheck/Flymake
- Расширенный дифф с ediff
- Поддержка tab-bar и отслеживание выделений/буферов
Интеграция инструментов Emacs
- LSP через xref (eglot, lsp-mode) для навигации по коду
- Tree-sitter для анализа AST
- Imenu для структуры символов
- Project для операций на уровне проекта
- Любую команду/функцию Emacs можно выставить как MCP-инструмент: поиск и рефакторинг по проекту, доступ к режимам, выполнение кастомного Elisp.
Скриншоты
- Осведомленность об активном файле — знает, какой файл открыт
- Контекст выделения — работает с выделенным текстом
- Продвинутый дифф с диагностикой — ediff и доступ к ошибкам/предупреждениям
- Автоматические упоминания текста — вставка ссылок на выделение в диалог
- Восстановление сессии — продолжение разговоров с флагом –resume
Установка Предварительные требования
- Emacs 28.1 или новее
Комментарии (261)
- AI-инструменты вроде Claude Code делают Emacs/Vim конкурентоспособными: вместо самостоятельной реализации сложных IDE-функций редакторы просто интегрируются с готовыми агентами.
- Пользователи хвалят Emacs за полный доступ к состоянию редактора и возможность «на лету» менять поведение через Elisp, что идеально подходит для AI-агентов.
- Уже существует несколько реализаций интеграции (claude-code.el, eca, claude-code-emacs и др.); споры идут, какая из них лучше, но все признают, что встраивание в Emacs ускоряет рабочий процесс.
- Проблемы: сложность конфигурации, риск утечки чувствительных данных, привязка к конкретному провайдеру и необходимость локального запуска для приватности.