Rust開発環境 on Emacs更新
ここしばらく、Rustのリハビリをしている。Emacsでの開発では、lsp-mode + lsp-ui + rust-modeでやってきていた。LSPのサーバはrls。
だが最近、動作がおかしい。rls起動直後は動作していたものが動かなくなったり。補完が効いたり効かなかったり。ログを見てもよくわからない、が、rlsからの応答がおかしそう。エラーは報告していないのだけれども。今はrust-analyzerというLSPサーバもあるので、乗り換えてみることにした。ついでに、rust-modeをrustic-modeに変更した。
rust-analyzer
rust-analyzerは、rls-2.0計画の一部。私の環境では今のところ安定して動いているが、あくまでもまだexperimental。
インストール方法はいくつかあるが、私はソースからビルドする方法をとった。
git clone git@github.com:rust-analyzer/rust-analyzer.git
cd rust-analyzer
cargo xtask install --server
これで、$HOME/.cargo/bin
にrust-analyzerがインストールされる。
Emacs側
パッケージとしては、rust-mode
, flycheck-rust
をアンインストールした上で、rustic
をインストールする。
init.el
は今までこうだったものが
;; before
(add-to-list 'exec-path (expand-file-name "~/.cargo/bin/"))
(eval-after-load "rust-mode"
'(setq-default rust-format-on-save t))
(add-hook 'rust-mode-hook (lambda ()
(flycheck-rust-setup)
(lsp)
(flycheck-mode)
))
こうなる。
;; after
(add-to-list 'exec-path (expand-file-name "~/.cargo/bin/"))
(setq-default rustic-format-trigger 'on-save)
(setq rustic-lsp-server 'rust-analyzer)
lspやflycheckのサポートはrusticに最初から入っているので、シンプル。