問題タブ [clangd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1803 参照

emacs - emacs lsp c-mode: コマンド「clangd」がパスに存在しません

Emacs LSP c-mode を使用したいのですが、「Command "clangd" is not present on the path」というエラーが表示されます。

インストールするには、次の手順を実行しました。

  1. melpa-stable から lsp パッケージを取得する
  2. melpa-stable から company-lsp を取得する
  3. homebrew を使用して ccls を取得する
  4. 以下を .emacs ファイルに追加します。

    (require 'lsp-mode) (require 'lsp-mode) (add-hook 'rust-mode-hook #'lsp) (add-hook 'c-mode-hook #'lsp) (require 'company-lsp) (push 'company-lsp company-バックエンド)

homebrew を使用して llvm (clang を含む必要があります) をインストールし、そのパスを環境変数として追加しました。

このエラーが発生する理由を知っている人はいますか?

0 投票する
2 に答える
10356 参照

c++ - coc-settings.jsonファイルに言語サーバーのインクルードパスを追加する方法は?

C/C++ の IntelliSense ツールとして、neovim プラグイン「coc-nvim」を使用しています。私が知っているように、このプラグインは実際には ccls、clangd、cquery などの言語サーバーのクライアントです。これらすべての言語サーバーをシステムにインストールし、coc-nvim で動作するように構成しました。そのため、c/c++ ファイルでオートコンプリートと一般的なヘッダー (stdio など) のリストを取得できます。しかし、私は ros プラットフォームで作業しているので、ros(/opt/ros/kinetic/include/**) のヘッダーを言語サーバーのデフォルトのインクルード パスに追加したいと考えています。このオプションを使用しない場合、各プロジェクトの開始時にダミーの ros ノードを追加し、コンパイルしcatkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=YESて compile_commands.json ファイルを生成し、ros ヘッダーにアクセスする必要があります。

coc.nvim の設定は、「coc-settings.json」というファイルの init.vim ファイルと一緒にあり、私の coc 設定ファイルの内容は次のとおりです。

したがって、私の主な質問は、これらの設定に ros インクルード パスを追加する方法です。coc.nvimの wiki ページを確認しましたが、ユーザー インクルード パスのオプションが見つかりません。また、clangd のオプションを確認 "args":["-I/opt/ros/kinetic/include/"]し、対応するブロックに を追加しようとしましたが、うまくいきませんでした。また、.cqueryファイルを追加しましたが、提案されたヘッダーのリストには影響しません。

長い話で申し訳ありませんが、お時間をいただきありがとうございます。

編集: ccls ではなく、clangd LSP を使用する方がよいでしょう。より高速で、ドキュメントが優れているためです。ありがとう!

編集 (2020 年 4 月 12 日): 私が見つけた最良の解決策は、extraArgsccls によって提供される を使用して、ccls 言語サーバーを使用することです。"clang"そのため、 ccls 構成にフィールドを追加すると、自動補完で ros ヘッダーを使用できます。

しかし、私が述べたように、可能であればclangdを使用したいと思います。あちこち調べましたが、答えはありませんでした。誰でも私を助けることができますか?(お願いします!)。