[Emacs]
Emacsの設定(lsp-mode)
- かつてC++でタグジャンプをする場合、etags/ctags/gtagsを使ったりした
- それができないときは"M-x find-grep"で気合で関数を探していた
一方でRedditでIs etags still the way to go, or are there better tools now?なるスレッドが立っていて
Have a look at lsp-mode + clangd for Cpp.
なんと!
Qiitaで検索するとC++でも language server protocol(LSP)? を導入している記事をちらほら見かけるようになったので、導入を試みる。
選択肢
どうやらC++に関しては
- lspのクライアント実装
- lspのサーバ実装
- ccls, clangd, cquery らしい
Emacs eglot + ccls
cclsとeglotの導入が簡単そうなので、試す
debian(bullseye)にcclsインストール
- そもそもパッケージがある
$ sudo apt-get install ccls
eglotをインストール
Emacs上で以下のようにする
M-x package-install RET eglot RET
あとは
- C/C++/ObjCのソースコードをEmacsで開く
- 「M-x eglot-ensure」する
と、画面右下にeglotの文字が出て起動する。うまくいっていればbufferに「 %* *EGLOT (プロジェクト名/c++-mode) events* 220433 Fundamental 」みたいのが出る
あとは通常のTAGでのジャンプのように「M-.」すれば使える
- xref系コマンド というらしい