Descreva o recurso
A ideia básica foi apresentada a format-all-the-code
em https://github.com/lassik/emacs-format-all-the-code/issues/47. A suposição é que um servidor de linguagem provavelmente tem uma ideia melhor de como formatar o código do que qualquer padrão definido em format-all-the-code
. A proposta, citada a partir daí, é assim:
lsp-mode
não estiver habilitado para o buffer atual, volte ao comportamento atual.textDocument/formatting
do servidor de idioma atual (ou talvez servidores, uma vez que aparentemente é um fluxo de trabalho compatível). Se não estiver disponível, volte ao comportamento atual.textDocument/formatting
(provavelmente via lsp-format-buffer
) em vez da ferramenta predefinida.Não está claro se é uma idéia melhor tornar format-all-the-things
LSP-aware ou estender o invólucro de formatação automática doom-emacs
'. De qualquer forma, ficaria feliz em ter o recurso.
Informação do sistema
Desculpe pela resposta tardia; apenas entrando em contato para que você saiba que estou ciente desse problema. O módulo :editor format
está dolorosamente atrasado em uma reescrita, tanto para torná-lo ciente do LSP, quanto para substituir format-all-the-code por reformatter.el para facilitar um back-end de formatação mais personalizável.
Ainda não tenho tempo para trabalhar nisso, mas não me esqueci.
Além disso, @Kaali em # 2516 trouxe à tona essa falta de consciência do LSP no modo go. Por enquanto, a solução alternativa para isso é desabilitar nosso formatador adicionando go-mode
a +format-on-save-enabled-modes
(que é uma lista negada, por padrão, devido ao seu primeiro elemento ser not
), em seguida, adicione lsp-format-buffer
ao local antes de salvar o gancho do modo. por exemplo
(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 Obrigado pelo feedback! Antes de substituir format-all-the-code
, você pode se interessar pelos desenvolvimentos recentes , que apresentam formatadores configuráveis globais e locais de buffer. Caso contrário: não se importe comigo, ficarei feliz se e quando estiver pronto, mas também estou muito feliz com Doom agora, mesmo sem ele :)
A partir de 7472cff, nossos comandos de formato suportam LSP (se o servidor em execução suportar formatação).
Isso pode ser desabilitado globalmente com
(setq +format-with-lsp nil)
Ou por modo com
(setq-hook! 'python-mode-hook +format-with-lsp nil)
Em qualquer caso, considerarei isso resolvido. Obrigado por chamar minha atenção para isso!
Comentários muito úteis
Desculpe pela resposta tardia; apenas entrando em contato para que você saiba que estou ciente desse problema. O módulo
:editor format
está dolorosamente atrasado em uma reescrita, tanto para torná-lo ciente do LSP, quanto para substituir format-all-the-code por reformatter.el para facilitar um back-end de formatação mais personalizável.Ainda não tenho tempo para trabalhar nisso, mas não me esqueci.
Além disso, @Kaali em # 2516 trouxe à tona essa falta de consciência do LSP no modo go. Por enquanto, a solução alternativa para isso é desabilitar nosso formatador adicionando
go-mode
a+format-on-save-enabled-modes
(que é uma lista negada, por padrão, devido ao seu primeiro elemento sernot
), em seguida, adicionelsp-format-buffer
ao local antes de salvar o gancho do modo. por exemplo