Doom-emacs: [DEMANDE] N'utilisez `format-all-the-code` que si le serveur de langue ne prend pas en charge le formatage

Créé le 8 août 2019  ·  3Commentaires  ·  Source: hlissner/doom-emacs

Décrivez la fonctionnalité

L'idée de base a été présentée à format-all-the-code dans https://github.com/lassik/emacs-format-all-the-code/issues/47. L'hypothèse est qu'un serveur de langue a probablement une meilleure idée de la façon de formater le code que n'importe quel paramètre par défaut défini dans format-all-the-code . La proposition, citée à partir de là, va comme ceci :

  1. Si lsp-mode n'est pas activé pour le tampon courant, retour au comportement courant.
  2. Sinon, vérifiez la capacité textDocument/formatting du serveur de langue actuel (ou peut-être des serveurs, car il s'agit apparemment d'un flux de travail pris en charge). S'il n'est pas disponible, retournez au comportement actuel.
  3. Sinon, utilisez textDocument/formatting (probablement via lsp-format-buffer ) au lieu de l'outil prédéfini.

Il n'est pas clair si c'est une meilleure idée de rendre format-all-the-things compatible LSP ou d'étendre le wrapper de formatage automatique doom-emacs '. De toute façon, je serais heureux d'avoir la fonctionnalité.

Informations système

  • Système d'exploitation : gnu/linux (x86_64-pc-linux-gnu)
  • Shell : /bin/bash
  • Emacs : 26,2 (12 avril 2019)
  • Doom : 2.0.9 (HEAD -> develop, _upgrade/develop f754d4ff 2019-07-23 18:23:17 +0200)
  • Affichage graphique : nil (démon : nil)
  • Caractéristiques du système : XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LCMS2SYS
  • Des détails:
    ```elisp
    amorceur env : nil
    compte elc: 0
    uname -a: Linux 5.0.0-25-generic #26~18.04.1-Ubuntu SMP jeu 1 août 13:51:02 UTC 2019 x86_64
    modules : (:completion company (ivy +fuzzy +childframe) :ui doom doom-dashboard hl-todo modeline nav-flash ophints (popup +all +defaults) treemacs unicode vc-gutter vi-tilde-fringe window-select workspaces :editor plier (formater +onsave) plusieurs curseurs faire pivoter des extraits de texte :emacs dired vc :tools 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) latex markdown (org +attach +babel +capture +export +habit +present +protocol) perl php plantuml (python +lsp) qt rest ruby ​​(sh + poisson) (web +lsp) :app write :config default)
    packages : (full-ack visual-regexp nginx-mode company-qml persistent-scratch gitlab-ci-mode gitlab-ci-mode-flycheck rpm-spec-mode kotlin-mode flycheck-kotlin puppet-mode prettier-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

Commentaire le plus utile

Désolé pour la réponse tardive; juste pour vous dire que je suis au courant de ce problème. Le module :editor format est en retard d'une réécriture, à la fois pour le rendre compatible LSP, et éventuellement pour remplacer format-all-the-code par reformatter.el pour faciliter un backend de formatage plus personnalisable.

Je n'ai pas encore le temps de travailler dessus, mais je ne l'ai pas oublié.

De plus, @Kaali dans #2516 a go-mode à +format-on-save-enabled-modes (qui est une liste niée, par défaut, car son premier élément est not ), puis ajoutez lsp-format-buffer au crochet local avant-sauvegarde de ce mode. par exemple

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

Tous les 3 commentaires

Désolé pour la réponse tardive; juste pour vous dire que je suis au courant de ce problème. Le module :editor format est en retard d'une réécriture, à la fois pour le rendre compatible LSP, et éventuellement pour remplacer format-all-the-code par reformatter.el pour faciliter un backend de formatage plus personnalisable.

Je n'ai pas encore le temps de travailler dessus, mais je ne l'ai pas oublié.

De plus, @Kaali dans #2516 a go-mode à +format-on-save-enabled-modes (qui est une liste niée, par défaut, car son premier élément est not ), puis ajoutez lsp-format-buffer au crochet local avant-sauvegarde de ce mode. par exemple

(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 Merci pour le retour ! Avant de remplacer format-all-the-code , vous pourriez être intéressé par les développements récents , qui introduisent des formateurs configurables globaux et locaux au tampon. Sinon : ne vous en faites pas, je serai content si et quand ce sera fait, mais je suis aussi assez content de Doom en ce moment même sans :)

À partir de 7472cff, nos commandes de format prennent en charge LSP (si le serveur en cours d'exécution prend en charge le formatage).

Cela peut être désactivé globalement avec

(setq +format-with-lsp nil)

Ou par mode avec

(setq-hook! 'python-mode-hook +format-with-lsp nil)

Dans tous les cas, je considérerai cela comme résolu. Merci de l'avoir porté à mon attention !

Cette page vous a été utile?
0 / 5 - 0 notes