Вот сценарий, который я постоянно использую в разработке на Rust:
rustfmt).Поскольку в Emacs Elisp нет реализации LSP, как мне добиться чего-то подобного? Например, я хочу нажать какую-нибудь кнопку и отформатировать код в буфере (не просто отформатировать, а отформатировать).
P.S. Новичок в Emacs, переход с Neovim.
@Drew Да, Emacs 29, который скоро выйдет, имеет встроенный LSP-сервер на основе пакета Eglot, но это не помогает, поскольку до сих пор нет реализации протокола LSP для языка Elisp.
@RefaelSheinker, как вы уже обнаружили, большинство (все?) доступных инструментов перечислены в этой ветке EmacsSE . И я согласен, что Elisp LSP может быть неплохой идеей. Теперь похоже, что распространенным текущим решением является настройка форматирования в собственной конфигурации и для каждого проекта через .dir-locals.el , возможно, с тенденцией этого руководства по стилю.
@Ю. E. пожалуйста, сделайте свой комментарий ответом, и я приму его.

Де-факто правила форматирования Elisp определяются в файлах конфигурации пользователей, .dir-locals.el для каждого проекта и часто следуют рекомендациям этого руководства по стилю.
Начиная с Emacs 29, для которого теперь доступен предварительный тест , можно использовать новую функцию pp-emacs-lisp-code, которая «применяет правила форматирования, подходящие для кода Emacs Lisp».
Строка документации функции в настоящее время гласит:
Вставьте SEXP в текущий буфер, отформатированный как код Emacs Lisp. Использовать переменная
pp-max-widthдля управления желаемой длиной строки. Примечание что это может быть медленным для больших SEXP.
Ряд сторонних пакетов для форматирования Elisp перечислены в Команда, которая форматирует (приукрашивает) поток кода Elisp.
Я считаю, что в последних версиях Emacs есть поддержка LSP (но я не эксперт в этом).