[Emacs] eglot + ccls
ここに公式ドキュメント以上の情報はない。ただの備忘録。
C/C++/Objective-CのLanguage ServerであるcclsをEmacsから使ってみた。
問題なく動くようであればrtagsからおさらばとなるかも。
ビルド
$ git clone https://github.com/MaskRay/ccls.git
$ cd ccls
$ mkdir build
$ cd build
$ cmake --config Release --target install .. -DCMAKE_PREFIX_PATH=/usr/lib/llvm-7
$ make
$ sudo make install
Emacs設定
$ git clone https://github.com/MaskRay/ccls.git
$ cd ccls
$ mkdir build
$ cd build
$ cmake --config Release --target install .. -DCMAKE_PREFIX_PATH=/usr/lib/llvm-7
$ make
$ sudo make install
私はLSPクライアントとしてeglotを使っているので以下のように設定。(lsp-modeを使うという手もある)
(use-package projectile
:config
(defun projectile-project-find-function (dir)
(let* ((root (projectile-project-root dir)))
(and root (cons 'transient root))))
(with-eval-after-load 'project
(add-to-list 'project-find-functions 'projectile-project-find-function))
)
(use-package eglot
:bind (:map eglot-mode-map
("C-c C-d" . eglot-help-at-point)
("C-c C-r" . eglot-code-actions))
:hook
((c-mode-common . eglot-ensure))
)
いい感じにプロジェクトのルートを探してくれるprojectileを使用している。
手動でルートを設定したいときには空の.projectile
ファイルを置く。
プロジェクト設定
cmake
を使用している場合は-DCMAKE_EXPORT_COMPILE_COMMANDS=1
でcompile_commands.jsonを作成し、プロジェクト直下にシンボリックリンクを張る。
その他の方法は公式ドキュメント参照のこと。
https://github.com/MaskRay/ccls/wiki/Project-Setup
操作
定義参照等はxref系コマンドが使用可能。
Author And Source
この問題について([Emacs] eglot + ccls), 我々は、より多くの情報をここで見つけました https://qiita.com/maueki/items/0ce174a45ba29ee14767著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .