summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/ClangdServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang-tools-extra/clangd/ClangdServer.cpp')
-rw-r--r--clang-tools-extra/clangd/ClangdServer.cpp11
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(
OpenPOWER on IntegriCloud