はじめに
lsp-modeがあまり使いやすくないのでemacs 29から標準に入ったEglot
に乗り換える。
環境設定
emacs
Ubuntu 22.04のemacsは古いのでsnapを使用する。 aptなどでインストール済みのものがある場合は削除しておく。
$ sudo snap install emacs --classic
Node.js
いくつかのlanguage serverはNode.jsで実装されているのでsnapでインストールする。
$ sudo snap install node --classic
pip3
いくつかのlanguage serverはPython3で実装されているのでpip3をインストールする。
$ sudo apt install python3-pip
language serverのインストール
下記をインストールする
- bash-language-server
- bitbake-language-server
- cmake-language-server
- html-languageservice
- clangd
$ npm install bash-language-server $ npm install --save vscode-html-languageservice $ pip3 install --user bitbake-language-server $ pip3 install --user cmake-language-server $ pip3 install --user python-lsp-server $ sudo apt install clangd
init.elの設定
;; eglot(LSP) (use-package eglot :ensure t :hook (c++-mode . eglot-ensure) (sh-mode . eglot-ensure) (python-mode . eglot-ensure) (html-mode . eglot-ensure) (cmake-mode . eglot-ensure) (bitbake-mode . eglot-ensure) :config (add-to-list 'eglot-server-programs '((bitbake-mode) "bitbake-language-server")) :bind (("M-t" . xref-find-definitions) ("M-r" . xref-find-references) ("C-t" . xref-go-back)))
まとめ
lsp-modeはサポートしていないLSPサーバを登録するのにいろいろ書かないといけないし
プロジェクトルートを登録するか毎回聞いてきてウザいなと色々不満があった。
設定が汚れてくるとまともにサーバと接続できなくて~/.emacs.d/.lsp-session-v1
を削除することもしばしば。
eglotはサーバの登録も簡単だし毎回プロジェクトルートを聞いてくることもない。 今の所の使用感はかなり良い。