Doom-emacs: [REQUEST] Hanya gunakan `format-all-the-code` jika server bahasa tidak mendukung pemformatan

Dibuat pada 8 Agu 2019  ·  3Komentar  ·  Sumber: hlissner/doom-emacs

Jelaskan fiturnya

Ide dasarnya telah diperkenalkan ke format-all-the-code di https://github.com/lassik/emacs-format-all-the-code/issues/47. Asumsinya adalah bahwa server bahasa mungkin memiliki ide yang lebih baik tentang cara memformat kode daripada set default apa pun di format-all-the-code . Usulannya, dikutip dari sana, seperti ini:

  1. Jika lsp-mode tidak diaktifkan untuk buffer saat ini, mundur ke perilaku saat ini.
  2. Jika tidak, periksa kemampuan textDocument/formatting dari server bahasa saat ini (atau mungkin server, karena itu tampaknya merupakan alur kerja yang didukung). Jika tidak tersedia, mundur ke perilaku saat ini.
  3. Jika tidak, gunakan textDocument/formatting (mungkin melalui lsp-format-buffer ) alih-alih alat yang telah ditentukan sebelumnya.

Tidak jelas apakah itu ide yang lebih baik untuk membuat format-all-the-things LSP-aware atau memperluas doom-emacs ' pembungkus pemformatan otomatis. Either way saya akan senang untuk memiliki fitur tersebut.

Sistem Informasi

  • OS: gnu/linux (x86_64-pc-linux-gnu)
  • Shell: /bin/bash
  • Emacs: 26.2 (12 April 2019)
  • Doom: 2.0.9 (HEAD -> develop, _upgrade/develop f754d4ff 2019-07-23 18:23:17 +0200)
  • Tampilan grafis: nil (daemon: nil)
  • Fitur sistem: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SUARA GPM DBUS GSETTINGS GLIB NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE GET XIM MODUL XIM
  • Detail:
    ```elisp
    env bootstrap: nihil
    jumlah elc: 0
    uname -a: Linux 5.0.0-25-generic #26~18.04.1-Ubuntu SMP Kam 1 Agustus 13:51:02 UTC 2019 x86_64
    modul: (:completion company (ivy +fuzzy +childframe) :ui doom doom-dashboard hl-todo modeline nav-flash pilihan (popup +semua +default) treemacs unicode vc-talang vi-tilde-fringe jendela-pilih ruang kerja :editor lipat (format + simpan) cuplikan teks putar multi-kursor :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) penurunan harga lateks (org +lampirkan +babel +tangkap +ekspor +kebiasaan +sekarang +protokol) perl php plantuml (python +lsp) qt sisanya ruby ​​(sh + ikan) (web +lsp): penulisan aplikasi: default config)
    paket: (full-ack visual-regexp nginx-mode company-qml persisten-scratch gitlab-ci-mode gitlab-ci-mode-flycheck rpm-spec-mode kotlin-mode flycheck-kotlin wayang-mode cantik-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

Komentar yang paling membantu

Maaf atas respon yang terlambat; hanya menimpali untuk memberi tahu Anda bahwa saya mengetahui masalah ini. Modul :editor format sangat terlambat untuk ditulis ulang, baik untuk membuatnya sadar LSP, dan mungkin untuk mengganti format-all-the-code dengan reformatter.el untuk memfasilitasi backend pemformatan yang lebih dapat disesuaikan.

Saya belum punya waktu untuk mengerjakan ini, tetapi saya belum melupakannya.

Juga, @Kaali di #2516 memunculkan ketidaksadaran LSP ini dalam mode-go. Untuk saat ini, solusi untuk ini adalah menonaktifkan formatter kami dengan menambahkan go-mode ke +format-on-save-enabled-modes (yang merupakan daftar yang dinegasikan, secara default, karena elemen pertamanya adalah not ), lalu tambahkan lsp-format-buffer ke kait sebelum simpan lokal mode itu. misalnya

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

Semua 3 komentar

Maaf atas respon yang terlambat; hanya menimpali untuk memberi tahu Anda bahwa saya mengetahui masalah ini. Modul :editor format sangat terlambat untuk ditulis ulang, baik untuk membuatnya sadar LSP, dan mungkin untuk mengganti format-all-the-code dengan reformatter.el untuk memfasilitasi backend pemformatan yang lebih dapat disesuaikan.

Saya belum punya waktu untuk mengerjakan ini, tetapi saya belum melupakannya.

Juga, @Kaali di #2516 memunculkan ketidaksadaran LSP ini dalam mode-go. Untuk saat ini, solusi untuk ini adalah menonaktifkan formatter kami dengan menambahkan go-mode ke +format-on-save-enabled-modes (yang merupakan daftar yang dinegasikan, secara default, karena elemen pertamanya adalah not ), lalu tambahkan lsp-format-buffer ke kait sebelum simpan lokal mode itu. misalnya

(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 Terima kasih atas umpan baliknya! Sebelum Anda mengganti format-all-the-code , Anda mungkin tertarik dengan perkembangan terkini , yang memperkenalkan pemformat global dan buffer-local yang dapat dikonfigurasi. Jika tidak: jangan pedulikan saya, saya akan senang jika dan ketika itu selesai, tetapi saya juga cukup senang dengan Doom sekarang bahkan tanpa itu :)

Pada 7472cff, perintah format kami mendukung LSP (jika server yang berjalan mendukung pemformatan).

Ini dapat dinonaktifkan secara global dengan

(setq +format-with-lsp nil)

Atau pada basis per-mode dengan

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

Bagaimanapun saya akan menganggap ini diselesaikan. Terima kasih telah membawanya ke perhatian saya!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat