Как получить LSP как форматирование в Emacs Elisp?

Вот сценарий, который я постоянно использую в разработке на Rust:

  1. Rust LSP всегда включен.
  2. Я называю функцию LSP "форматировать текущий буфер" (или как там она называется).
  3. LSP возвращает отформатированный буфер (внутри LSP использует rustfmt).

Поскольку в Emacs Elisp нет реализации LSP, как мне добиться чего-то подобного? Например, я хочу нажать какую-нибудь кнопку и отформатировать код в буфере (не просто отформатировать, а отформатировать).

P.S. Новичок в Emacs, переход с Neovim.

Я считаю, что в последних версиях Emacs есть поддержка LSP (но я не эксперт в этом).

Drew 18.05.2023 19:10

@Drew Да, Emacs 29, который скоро выйдет, имеет встроенный LSP-сервер на основе пакета Eglot, но это не помогает, поскольку до сих пор нет реализации протокола LSP для языка Elisp.

Refael Sheinker 18.05.2023 20:24

@Ю. E. пожалуйста, сделайте свой комментарий ответом, и я приму его.

Refael Sheinker 20.05.2023 21:53
Почему Python в конце концов умрет
Почему Python в конце концов умрет
Последние 20 лет были действительно хорошими для Python. Он прошел путь от "просто языка сценариев" до основного языка, используемого для написания...
1
4
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Де-факто правила форматирования Elisp определяются в файлах конфигурации пользователей, .dir-locals.el для каждого проекта и часто следуют рекомендациям этого руководства по стилю.

Начиная с Emacs 29, для которого теперь доступен предварительный тест , можно использовать новую функцию pp-emacs-lisp-code, которая «применяет правила форматирования, подходящие для кода Emacs Lisp».

Строка документации функции в настоящее время гласит:

Вставьте SEXP в текущий буфер, отформатированный как код Emacs Lisp. Использовать переменная pp-max-width для управления желаемой длиной строки. Примечание что это может быть медленным для больших SEXP.

Ряд сторонних пакетов для форматирования Elisp перечислены в Команда, которая форматирует (приукрашивает) поток кода Elisp.

Другие вопросы по теме