Doom-emacs: [PEDIDO] Use apenas `format-all-the-code` se o servidor de idioma não suportar formatação

Criado em 8 ago. 2019  ·  3Comentários  ·  Fonte: hlissner/doom-emacs

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:

  1. Se lsp-mode não estiver habilitado para o buffer atual, volte ao comportamento atual.
  2. Caso contrário, verifique a capacidade de 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.
  3. Caso contrário, use 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

  • SO: gnu / linux (x86_64-pc-linux-gnu)
  • Shell: / bin / bash
  • Emacs: 26.2 (12 de abril de 2019)
  • Doom: 2.0.9 (HEAD -> desenvolver, _ atualizar / desenvolver f754d4ff 2019-07-23 18:23:17 +0200)
  • Exibição gráfica: nil (daemon: nil)
  • Recursos do sistema: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOM GPM DBUS GSETTINGS GLIB NOTIFICAR LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBG XIM MODULES LIBSTEM LIBSTEM LIBSELINUX LIBXML2
  • Detalhes:
    `` `elisp
    env bootstrapper: nil
    contagem elc: 0
    uname -a: Linux 5.0.0-25-generic # 26 ~ 18.04.1-Ubuntu SMP Qui, 1º de agosto 13:51:02 UTC 2019 x86_64
    módulos: (: empresa de conclusão (ivy + fuzzy + childframe): ui doom doom-dashboard hl-todo modeline nav-flash ophints (pop-up + todos + padrões) treemacs unicode vc-gutter vi-tilde-fringe janela-selecionar espaços de trabalho: editor dobrar (format + onsave) cursores múltiplos rotacionar trechos de texto: emacs dired vc: ferramentas ansible direnv docker editorconfig eval flycheck (lookup + docsets) lsp magit make pdf rgb terraform: lang data emacs-lisp (go + lsp) (haskell + intero) (java + lsp) (javascript + lsp) (kotlin + lsp) marcação látex (org + attach + babel + captura + exportação + hábito + presente + protocolo) perl php plantuml (python + lsp) qt rest ruby ​​(sh + fish) (web + lsp): app write: config default)
    pacotes: (full-ack visual-regexp nginx-mode company-qml persistent-scratch gitlab-ci-mode gitlab-ci-mode-flycheck rpm-spec-modo kotlin-mode flycheck-kotlin-modo puppet-js add-node -modules-path solaire-mode comment-dwim-2 ag lsp-python-ms glsl-mode)
    exec-path: (./node_modules/.bin ~ / .npm-packages / bin / ~ / .local / bin / / bin ~ / go / bin ~ / .npm-packages / bin ~ / .cargo / bin / ~ /.npm-packages/bin/ ~ / .local / bin / / bin ~ / go / bin / bin ~ / bin ~ / .local / bin / usr / local / sbin / usr / local / bin / usr / sbin / usr / bin / sbin / bin / usr / games / usr / local / games / snap / bin ~ / .dotnet / tools / usr / lib / maven3 / bin ~ / .fzf / bin / usr / lib / x86_64-linux- gnu / emacs / 26.2 / x86_64-linux-gnu)
:editor format :tools lsp new resolved

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 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))

Todos 3 comentários

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!

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

gilbertw1 picture gilbertw1  ·  3Comentários

oyarsa picture oyarsa  ·  3Comentários

luisenrike picture luisenrike  ·  3Comentários

idoo picture idoo  ·  3Comentários

driftcrow picture driftcrow  ·  3Comentários