Doom-emacs: [リクエスト]言語サーバーがフォーマットをサポートしていない場合にのみ `format-all-the-code`を使用してください

作成日 2019年08月08日  ·  3コメント  ·  ソース: hlissner/doom-emacs

機能を説明する

基本的な考え方は、 https://github.com/lassik/emacs-format-all-the-code/issues/47でformat-all-the-codeに導入されています。 言語サーバーは、 format-all-the-code設定されているデフォルトよりも、コードのフォーマット方法についておそらく優れたアイデアを持っていると想定されています。 そこから引用された提案は、次のようになります。

  1. lsp-modeが現在のバッファに対して有効になっていない場合は、現在の動作にフォールバックします。
  2. それ以外の場合は、現在の言語サーバー(または、明らかにサポートされているワークフローであるため、サーバー)のtextDocument/formatting機能を確認してください。 利用できない場合は、現在の動作にフォールバックします。
  3. それ以外の場合は、事前定義されたツールの代わりにtextDocument/formatting (おそらくlsp-format-buffer経由)を使用します。

format-all-the-things LSP対応にするか、 doom-emacs '自動フォーマットラッパーを拡張する方がよいかどうかは明らかではありません。 いずれにせよ、この機能があれば嬉しいです。

システムインフォメーション

  • OS:gnu / linux(x86_64-pc-linux-gnu)
  • シェル:/ bin / bash
  • Emacs:26.2(2019年4月12日)
  • 運命:2.0.9(HEAD->開発、_upgrade / development f754d4ff 2019-07-23 18:23:17 +0200)
  • グラフィック表示:nil(デーモン:nil)
  • システム機能: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 LIBSYSTEMD LCMS
  • 詳細:
    `` `elisp
    env bootstrapper:nil
    elcカウント:0
    uname -a:Linux 5.0.0-25-generic#26〜18.04.1-Ubuntu SMP Thu Aug 1 13:51:02 UTC 2019 x86_64
    モジュール:(: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 fold(format + onsave)multiple-cursorsrotate-テキストスニペット: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)ラテックスマークダウン(org + attach + babel +キャプチャ+ export + habit + present + protocol)perl php plantuml(python + lsp)qt rest ruby​​(sh + fish)(web + lsp):app write:config default)
    パッケージ:(フルアックvisual-regexpnginx-mode company-qmlpersistent-scratch gitlab-ci-mode gitlab-ci-mode-flycheck rpm-spec-mode kotlin-mode flycheck-kotlin puppet-mode prettier-js add-node -modules-pathsolaire-modeコメント-dwim-2ag 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

最も参考になるコメント

返事が遅くなってごめん; 私がこの問題を認識していることをあなたに知らせるためにただチャイムを鳴らします。 :editor formatモジュールは、LSP対応にするためと、よりカスタマイズ可能なフォーマットバックエンドを容易にするためにformat-all-the-codeをreformatter.elに置き換えるために、書き直しが非常に遅れています。

まだこれに取り組む時間はありませんが、忘れていません。

また、#2516の@Kaaliは、goモードでこのLSP非認識を引き起こしました。 当面の回避策は、 go-mode+format-on-save-enabled-modes追加してフォーマッターを無効にすることです(最初の要素がnotであるため、デフォルトでは否定されたリストです。 lsp-format-bufferをそのモードのローカルの保存前フックに追加します。 例えば

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

全てのコメント3件

返事が遅くなってごめん; 私がこの問題を認識していることをあなたに知らせるためにただチャイムを鳴らします。 :editor formatモジュールは、LSP対応にするためと、よりカスタマイズ可能なフォーマットバックエンドを容易にするためにformat-all-the-codeをreformatter.elに置き換えるために、書き直しが非常に遅れています。

まだこれに取り組む時間はありませんが、忘れていません。

また、#2516の@Kaaliは、goモードでこのLSP非認識を引き起こしました。 当面の回避策は、 go-mode+format-on-save-enabled-modes追加してフォーマッターを無効にすることです(最初の要素がnotであるため、デフォルトでは否定されたリストです。 lsp-format-bufferをそのモードのローカルの保存前フックに追加します。 例えば

(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フィードバックをありがとう! format-all-the-codeを置き換える前に、グローバルおよびバッファローカルの設定可能なフォーマッタを導入する最近の開発に興味があるかもしれません。 そうでなければ:私を気にしないでください、それが終わったら私は幸せになりますが、それがなくても今はドゥームにもかなり満足しています:)

7472cffの時点で、フォーマットコマンドはLSPをサポートしています(実行中のサーバーがフォーマットをサポートしている場合)。

これはグローバルに無効にすることができます

(setq +format-with-lsp nil)

またはモードごとに

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

いずれにせよ、私はこれが解決したと考えます。 私の注意を引いてくれてありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価