diff options
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( |