Doom-emacs: [SOLICITUD] Utilice solo `format-all-the-code` si el servidor de idioma no admite el formateo

Creado en 8 ago. 2019  ·  3Comentarios  ·  Fuente: hlissner/doom-emacs

Describe la característica

La idea básica se ha introducido en format-all-the-code en https://github.com/lassik/emacs-format-all-the-code/issues/47. La suposición es que un servidor de idiomas probablemente tiene una mejor idea de cómo formatear el código que cualquier conjunto predeterminado en format-all-the-code . La propuesta, citada a partir de ahí, es la siguiente:

  1. Si lsp-mode no está habilitado para el búfer actual, vuelva al comportamiento actual.
  2. De lo contrario, verifique la capacidad textDocument/formatting del servidor de idioma actual (o tal vez servidores, ya que aparentemente es un flujo de trabajo compatible). Si no está disponible, recurra al comportamiento actual.
  3. De lo contrario, use textDocument/formatting (probablemente a través de lsp-format-buffer ) en lugar de la herramienta predefinida.

No está claro si es una mejor idea hacer que format-all-the-things LSP sea compatible o extender el contenedor de formato automático doom-emacs '. De cualquier manera, estaría feliz de tener la función.

Información del 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 -> desarrollar, _upgrade / desarrollar f754d4ff 2019-07-23 18:23:17 +0200)
  • Pantalla gráfica: nil (daemon: nil)
  • Características del sistema: 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 MÓDULOS CLASIFICADORES CLASIFICADORES HILOS XW2
  • Detalles:
    `` elisp
    env bootstrapper: nil
    recuento de elc: 0
    uname -a: Linux 5.0.0-25-generic # 26 ~ 18.04.1-Ubuntu SMP Jue 1 de agosto 13:51:02 UTC 2019 x86_64
    módulos: (: empresa de finalización (ivy + fuzzy + childframe): ui doom doom-dashboard hl-todo modeline nav-flash ophints (ventana emergente + todos + valores predeterminados) treemacs unicode vc-gutter vi-tilde-fringe ventana-seleccionar espacios de trabajo: editor fold (formato + onsave) múltiples-cursores rotate-text snippets: emacs dired vc: herramientas 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 + adjuntar + babel + capturar + exportar + hábito + presente + protocolo) perl php plantuml (python + lsp) qt rest ruby ​​(sh + pescado) (web + lsp): escritura de la aplicación: configuración predeterminada)
    paquetes: (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)
    ruta-exec: (./modules_nodo/.bin ~ / .npm-paquetes / bin / ~ / .local / bin / / bin ~ / go / bin ~ / .npm-paquetes / 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

Comentario más útil

Lo siento por la respuesta tardía; solo repicando para hacerle saber que estoy al tanto de este problema. El módulo :editor format está dolorosamente atrasado en una reescritura, tanto para que sea compatible con LSP, como posiblemente para reemplazar format-all-the-code con reformatter.el para facilitar un backend de formato más personalizable.

Sin embargo, todavía no tengo tiempo para trabajar en esto, pero no lo he olvidado.

Además, @Kaali en el # 2516 mencionó este desconocimiento de LSP en el modo go. Por el momento, la solución para esto es deshabilitar nuestro formateador agregando go-mode a +format-on-save-enabled-modes (que es una lista negada, por defecto, debido a que su primer elemento es not ), luego agregue lsp-format-buffer al local before-save-hook de ese modo. p.ej

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

Lo siento por la respuesta tardía; solo repicando para hacerle saber que estoy al tanto de este problema. El módulo :editor format está dolorosamente atrasado en una reescritura, tanto para que sea compatible con LSP, como posiblemente para reemplazar format-all-the-code con reformatter.el para facilitar un backend de formato más personalizable.

Sin embargo, todavía no tengo tiempo para trabajar en esto, pero no lo he olvidado.

Además, @Kaali en el # 2516 mencionó este desconocimiento de LSP en el modo go. Por el momento, la solución para esto es deshabilitar nuestro formateador agregando go-mode a +format-on-save-enabled-modes (que es una lista negada, por defecto, debido a que su primer elemento es not ), luego agregue lsp-format-buffer al local before-save-hook de ese modo. p.ej

(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 ¡ Gracias por los comentarios! Antes de reemplazar format-all-the-code , es posible que le interesen los desarrollos recientes , que presentan formateadores configurables globales y locales de búfer. De lo contrario: no te preocupes por mí, seré feliz cuando esté terminado, pero también estoy bastante feliz con Doom ahora mismo, incluso sin él :)

A partir de 7472cff, nuestros comandos de formato admiten LSP (si el servidor en ejecución admite el formateo).

Esto se puede desactivar globalmente con

(setq +format-with-lsp nil)

O por modo con

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

En cualquier caso, consideraré esto resuelto. ¡Gracias por avisarme!

¿Fue útil esta página
0 / 5 - 0 calificaciones