diff --git a/clang-tools-extra/clangd/ClangdServer.cpp b/clang-tools-extra/clangd/ClangdServer.cpp index 763fea68360ac..cbcc90258f34e 100644 --- a/clang-tools-extra/clangd/ClangdServer.cpp +++ b/clang-tools-extra/clangd/ClangdServer.cpp @@ -93,7 +93,7 @@ struct UpdateIndexCallbacks : public ParsingCallbacks { ASTCtx.getPreprocessor(), *CanonIncludes); }; - if (Tasks) { + if (Opts.AsyncPreambleIndexing && Tasks) { Tasks->runAsync("Preamble indexing for:" + Path + Version, std::move(Task)); } else diff --git a/clang-tools-extra/clangd/ClangdServer.h b/clang-tools-extra/clangd/ClangdServer.h index 2bc8f02ff38a4..88b6d2f11d9a0 100644 --- a/clang-tools-extra/clangd/ClangdServer.h +++ b/clang-tools-extra/clangd/ClangdServer.h @@ -185,6 +185,10 @@ class ClangdServer { /// regions in the document. bool PublishInactiveRegions = false; + /// Whether to run preamble indexing asynchronously in an independent + /// thread. + bool AsyncPreambleIndexing = false; + explicit operator TUScheduler::Options() const; }; // Sensible default options for use in tests.