問題タブ [language-server-protocol]

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 投票する
2 に答える
2400 参照

clang - Windows Sublime および LSP-Clangd プラグイン: C++ ヘッダーが見つかりません

私は最近、SublimeText 3 を試してみたいと思いました。プラグインのサポートが充実していて、非常に優れていることがわかりました。最近このプラグインを見つけました: https://github.com/tomv564/LSPで、Clangd で使用しています。ただし、問題は、私が試したようにコンパイルできることがわかっているエラーです。私が取った手順は簡単でした:

  1. Sublime をインストールします: https://download.sublimetext.com/Sublime%20Text%20Build%203176%20x64%20Setup.exe
  2. Windows 用の CLang.exe ビルド済みバイナリをインストールします: https://releases.llvm.org/7.0.1/LLVM-7.0.1-win64.exe
  3. コンピュータを再起動します (これにより、Windows 環境の PATH に新しい変更を加えることができます)。
  4. Package Control から LSP をインストールする
  5. LSP: Enable Language Server Globallyコマンドパレットに入力
  6. clangd後続のウィンドウに入力し、ヒットenterして有効にします。
  7. Sublime を再起動し、C++ ファイルを開きます。

C++ ファイル自体は特別なものではありません。あいまいさをなくすためにここに投稿できます。

このファイルは、WSL を介して実際に実行するとビルドされますclang++ otherside.cppが、Sublime.exe では次の 2 つのエラーが発生します。

  • 「bits/stdc++.h」ファイルが見つかりません
  • using ディレクティブは、暗黙的に定義された名前空間 'std' を参照しています
    • 宣言されていない識別子「cin」の使用
    • 宣言されていない識別子「cout」の使用
    • 宣言されていない識別子「endl」の使用

私が信じている 3 つのネストされた箇条書きは、「std」エラーの解決策で解決されるので、実際にはエラーではないと思いますか?

「bits/stdc++.h」は私がプログラミング競技会に参加するときに使用するインクルードなので、職場では悪いが存在することを知っており、それがusing namespace std「良い習慣」ではないことは知っていますが、少なくともそうではないことは知っていますコンパイルを中断するエラー。これはClangdの問題のように感じますが、Visual StudioやCLionなど、過去に使用したLSPを備えたIDEではこれら2つのエラーが報告されないことを知っています. 他の誰かが以前にこの問題を解決しましたか?

更新: 実際に時間をかけて、Clang.exe を実行して小さな cpp ファイルを作成しましたclang++ otherside.cpp。「致命的なエラー: 'bits/stdc++.h' ファイルが見つかりません」という指定の予想されるエラーが発生しましたがclang++ otherside.cpp、WSL で via を使用してコンパイルすると問題なくコンパイルされます。そのため、Windows と Linux の間に不一致があるようです。

Windows では C/C++ ヘッダーが必要であることがわかりました。https://clang.llvm.org/get_started.htmlによると、推奨されるのは MSys ユーティリティまたは GNUWin32 です。WSL を介して C/C++ ヘッダーを使用できることを望んでいましたが、可能ですか?

2019 年 2 月 22 日更新: MinGW C および C++ コンパイラをインストールして Clang のヘッダーを取得しようとしましたが、Clang にそれらのヘッダーを見つけてもらいたい場合は、ソースから Clang をビルドし、initHeaderSearch.cpp. 繰り返しますが、WSL の C/C++ ヘッダーを Clang.exe で使用できるソリューションがもっと欲しいと思っています。

また、友人への単なる概念実証として、Sublime を WSL にインストールし、LSP-Clangd プラグインをインストールして、Windows で発生する Clang エラーが WSL Sublime に表示されないことを示しました。エラーが WSL Sublime に表示されていないことは確かですが、興味深い点がありました。おそらく、WSL で Clangdを起動し代わりに Sublime.exe をそれにフックする方法はありますか? ここ数年で WSL が飛躍的に進歩し、その成果の 1 つが AF_UNIX ソケットだったことを私は知っています。私はUnixソケットに最も精通しているわけではありませんが、それを使用してClangdを起動または操作することは可能ですか?

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

vim - Vim-lspで関数のparenや引数で補完する方法

タイプの後に、Java コードで vim-lsp を使用

次の候補が表示されます。

最初に候補を選ぶと、

しかし、私は取得したい:

また

これどうやってするの?