diff options
| author | Sam McCall <sam.mccall@gmail.com> | 2018-10-25 14:19:14 +0000 |
|---|---|---|
| committer | Sam McCall <sam.mccall@gmail.com> | 2018-10-25 14:19:14 +0000 |
| commit | 6d4eb46d0c1c20352bdca65925bef0024b7d12b2 (patch) | |
| tree | b6c440ca3febc61e1088722f2a6f9ba6fe6f8685 /clang-tools-extra/clangd/ClangdServer.cpp | |
| parent | 3e4ee14d58133a798039bfdd6534a6cd7411b046 (diff) | |
| download | bcm5719-llvm-6d4eb46d0c1c20352bdca65925bef0024b7d12b2.tar.gz bcm5719-llvm-6d4eb46d0c1c20352bdca65925bef0024b7d12b2.zip | |
[clangd] workspace/symbol should be async, it reads from the index.
Summary:
To enable this, TUScheduler has to provide a way to run async tasks without
needing a preamble or AST!
Reviewers: ilya-biryukov
Subscribers: javed.absar, ioeric, MaskRay, jkorous, arphaman, jfb, kadircet, cfe-commits
Differential Revision: https://reviews.llvm.org/D53644
llvm-svn: 345268
Diffstat (limited to 'clang-tools-extra/clangd/ClangdServer.cpp')
| -rw-r--r-- | clang-tools-extra/clangd/ClangdServer.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp index cd1fb33efe6..8da5dec414f 100644 --- a/clang-tools-extra/clangd/ClangdServer.cpp +++ b/clang-tools-extra/clangd/ClangdServer.cpp @@ -482,8 +482,15 @@ void ClangdServer::onFileEvent(const DidChangeWatchedFilesParams &Params) { void ClangdServer::workspaceSymbols( StringRef Query, int Limit, Callback<std::vector<SymbolInformation>> CB) { - CB(clangd::getWorkspaceSymbols(Query, Limit, Index, - WorkspaceRoot.getValueOr(""))); + std::string QueryCopy = Query; + WorkScheduler.run( + "getWorkspaceSymbols", + Bind( + [QueryCopy, Limit, this](decltype(CB) CB) { + CB(clangd::getWorkspaceSymbols(QueryCopy, Limit, Index, + WorkspaceRoot.getValueOr(""))); + }, + std::move(CB))); } void ClangdServer::documentSymbols( |

