EmacsのLSP設定

Emacs の LSP 設定に関する個人的メモです。

前に書いた use-package と同様に eglot という LSP クライアントが Emacs29.1 から標準機能に組み込まれています。 LSP というのはプログラムを書く時に色々と助言をくれるソフトです。 なんかいっぱい表示が出て、どのように書けば良いか教えてくれます。

色々とお節介な表示が鬱陶しいため今まで LSP を使ったことはないのですが、せっかく標準機能になったので触っています。

公式サイトを見ながら設定を書いていきます。

https://github.com/joaotavora/eglot

使い方は非常に簡単で、company というコード補完のパッケージと対応した LSP サーバーを導入して eglot とミニバッファに打つだけです。 思っていた以上に導入が簡単でした。

対応している LSP サーバーも公式サイトに一覧があり、URL 先のインストール方法に従えば問題なく導入できます。 面白くないくらいに簡単にセットアップが終わりました。

最終的な設定は次のようになっています。

    (use-package eglot
      :config
      (add-to-list 'eglot-server-programs '((js-mode js-ts-mode typescript-mode typescript-ts-mode) . (eglot-deno "deno" "lsp")))
      (defclass eglot-deno (eglot-lsp-server) () :documentation "A custom class for deno lsp.")
      (cl-defmethod eglot-initialization-options ((server eglot-deno))
        "Passes through required deno initialization options"
        (list :enable t :lint t))
      (setq eglot-ignored-server-capabilities '(:documentHighlightProvider :inlayHintProvider))
      (setq eldoc-echo-area-use-multiline-p nil)
      :hook
      ((sh-mode
        c-mode
        c++-mode
        python-mode
        ruby-mode
        rust-mode
        html-mode
        css-mode
        js-mode) . eglot-ensure))

インラインのヒントは表示が鬱陶しいため機能を停止しています。

とりあえず、普通に使う分には問題ないと思います。

余談

python のスペルを間違っていて、自動起動しないなと暫く悩んでいました。

タイプミスには注意しましょう