diff options
Diffstat (limited to 'clang-tools-extra/clangd')
| -rw-r--r-- | clang-tools-extra/clangd/CodeComplete.cpp | 2 | ||||
| -rw-r--r-- | clang-tools-extra/clangd/index/Merge.cpp | 2 | ||||
| -rw-r--r-- | clang-tools-extra/clangd/tool/ClangdMain.cpp | 7 |
3 files changed, 10 insertions, 1 deletions
diff --git a/clang-tools-extra/clangd/CodeComplete.cpp b/clang-tools-extra/clangd/CodeComplete.cpp index e070831ed2e..d0916aa30fd 100644 --- a/clang-tools-extra/clangd/CodeComplete.cpp +++ b/clang-tools-extra/clangd/CodeComplete.cpp @@ -864,6 +864,8 @@ private: SymbolSlab::Builder ResultsBuilder; // Build the query. FuzzyFindRequest Req; + if (Opts.Limit) + Req.MaxCandidateCount = Opts.Limit; Req.Query = Filter->pattern(); Req.Scopes = getQueryScopes(Recorder.CCContext, Recorder.CCSema->getSourceManager()); diff --git a/clang-tools-extra/clangd/index/Merge.cpp b/clang-tools-extra/clangd/index/Merge.cpp index 8264dcc2b9b..61e3024bced 100644 --- a/clang-tools-extra/clangd/index/Merge.cpp +++ b/clang-tools-extra/clangd/index/Merge.cpp @@ -50,7 +50,7 @@ class MergedIndex : public SymbolIndex { for (const Symbol &S : Dyn) if (!SeenDynamicSymbols.count(S.ID)) Callback(S); - return More; + return !More; // returning true indicates the result is complete. } private: diff --git a/clang-tools-extra/clangd/tool/ClangdMain.cpp b/clang-tools-extra/clangd/tool/ClangdMain.cpp index 69f41ce8ac9..2d965198f89 100644 --- a/clang-tools-extra/clangd/tool/ClangdMain.cpp +++ b/clang-tools-extra/clangd/tool/ClangdMain.cpp @@ -86,6 +86,12 @@ static llvm::cl::opt<PCHStorageFlag> PCHStorage( clEnumValN(PCHStorageFlag::Memory, "memory", "store PCHs in memory")), llvm::cl::init(PCHStorageFlag::Disk)); +static llvm::cl::opt<int> LimitCompletionResult( + "limit-completion", + llvm::cl::desc("Limit the number of completion results returned by clangd. " + "0 means no limit."), + llvm::cl::init(0)); + static llvm::cl::opt<bool> RunSynchronously( "run-synchronously", llvm::cl::desc("Parse on main thread. If set, -j is ignored"), @@ -215,6 +221,7 @@ int main(int argc, char *argv[]) { clangd::CodeCompleteOptions CCOpts; CCOpts.EnableSnippets = EnableSnippets; CCOpts.IncludeIneligibleResults = IncludeIneligibleResults; + CCOpts.Limit = LimitCompletionResult; // Initialize and run ClangdLSPServer. ClangdLSPServer LSPServer(Out, WorkerThreadsCount, StorePreamblesInMemory, CCOpts, ResourceDirRef, CompileCommandsDirPath, |

