Опишите функцию
Основная идея была представлена в format-all-the-code
в https://github.com/lassik/emacs-format-all-the-code/issues/47. Предполагается, что языковой сервер, вероятно, лучше знает, как отформатировать код, чем любой установленный по умолчанию в format-all-the-code
. Предложение, процитированное оттуда, звучит так:
lsp-mode
не включен для текущего буфера, вернитесь к текущему поведению.textDocument/formatting
текущего языкового сервера (или, возможно, серверов, поскольку это, по-видимому, поддерживаемый рабочий процесс). Если он недоступен, вернитесь к текущему поведению.textDocument/formatting
(возможно, через lsp-format-buffer
) вместо предопределенного инструмента.Неясно, лучше ли сделать format-all-the-things
LSP-совместимым или расширить оболочку автоформатирования doom-emacs
'. В любом случае я был бы счастлив получить эту функцию.
Системная информация
Извините за поздний ответ; просто вмешиваюсь, чтобы сообщить, что я знаю об этой проблеме. Модуль :editor format
крайне запоздал с переписыванием, как для того, чтобы сделать его LSP-совместимым, так и, возможно, для замены format-all-the-code на correatter.el, чтобы облегчить более настраиваемый бэкэнд форматирования.
Однако у меня еще нет времени над этим работать, но я не забыл об этом.
Кроме того, @Kaali в # 2516 поднял это незнание LSP в режиме go. В настоящее время обходным путем для этого является отключение нашего средства форматирования, добавив go-mode
к +format-on-save-enabled-modes
(который по умолчанию является отрицательным списком, так как его первый элемент равен not
), затем добавьте lsp-format-buffer
в локальный обработчик before-save-hook этого режима. например
(add-to-list '+format-on-save-enabled-modes 'go-mode t)
(add-hook! 'go-mode-hook
(add-hook 'before-save-hook #'lsp-format-buffer nil 'local)
(add-hook 'before-save-hook #'lsp-organize-imports nil 'local))
@hlissner Спасибо за отзыв! Перед заменой format-all-the-code
вас могут заинтересовать последние разработки , в которых представлены глобальные и локальные для буфера настраиваемые форматеры. В противном случае: не обращайте на меня внимания, я буду счастлив, если и когда это будет сделано, но я также вполне доволен Doom прямо сейчас, даже без него :)
Начиная с 7472cff, наши команды форматирования поддерживают LSP (если работающий сервер поддерживает форматирование).
Это можно отключить глобально с помощью
(setq +format-with-lsp nil)
Или для каждого режима с
(setq-hook! 'python-mode-hook +format-with-lsp nil)
В любом случае считаю, что это решено. Спасибо, что обратили на это мое внимание!
Самый полезный комментарий
Извините за поздний ответ; просто вмешиваюсь, чтобы сообщить, что я знаю об этой проблеме. Модуль
:editor format
крайне запоздал с переписыванием, как для того, чтобы сделать его LSP-совместимым, так и, возможно, для замены format-all-the-code на correatter.el, чтобы облегчить более настраиваемый бэкэнд форматирования.Однако у меня еще нет времени над этим работать, но я не забыл об этом.
Кроме того, @Kaali в # 2516 поднял это незнание LSP в режиме go. В настоящее время обходным путем для этого является отключение нашего средства форматирования, добавив
go-mode
к+format-on-save-enabled-modes
(который по умолчанию является отрицательным списком, так как его первый элемент равенnot
), затем добавьтеlsp-format-buffer
в локальный обработчик before-save-hook этого режима. например