EmacsでRust & Language Server 使おうとしたらコード補完でハマった
タイトルの通り Emacs で Rust & Langage Server を使おうとしたら、ハマってしまい、1週間ほど試行錯誤しちまったのでその過程をちょいと残しておく
tl;dr
今回はこれで落ち着いた
- コード補完には Racer & racer-emacs がやっぱり必要
- それ以外1は RLS & lsp-mode
- company-lsp で補完を出さずに lsp-mode の builtin の仕組みをつかう
ハマりどころ
lsp-mode & Rust Language Server (RLS) & company-lsp を試してみたところ、コード補完の選択肢が表示されなくなってしまった2
lsp-mode の READMEには completion(コード補完) できてるスクショがあるのに...
ちなみに、Python は lsp-mode & python-language-serverで、
Ruby は lsp-mode & solargraph
で補完できることは確認済み
謎は深まるばかり...
気づき
ん?RLS 単体ではコード補完できなそう??
RLS チームが主ターゲットにしている VS Code実装3でも racer を使うような設定があるぞ!
company-lsp 作者 tigersoldier氏 の emacs設定 を覗いてみると...
(spacemacsの設定で) racer-emacs は有効になっていて、complete-lsp は rust-mode では有効になってないことがわかった(ここなどみるとc/c++, php, javaなどでのみ有効になっている)
ということで、混乱の素となった company-lsp を辞めて 素直にコード補完に Racer & racer-emacs を使うようになったらちゃんと補完できるようになった。 Python や Ruby のコード補完も lsp-mode の builtin の機能で十分コード補完が使えるの、しばらくこのまま使ってみよう(完)