diff --git a/src/tools/clangbackend/ipcsource/clangcodemodelserver.cpp b/src/tools/clangbackend/ipcsource/clangcodemodelserver.cpp index 62070b37b0b..3cbbd494453 100644 --- a/src/tools/clangbackend/ipcsource/clangcodemodelserver.cpp +++ b/src/tools/clangbackend/ipcsource/clangcodemodelserver.cpp @@ -55,6 +55,12 @@ #include #include +static bool useSupportiveTranslationUnit() +{ + static bool use = !qEnvironmentVariableIntValue("QTC_CLANG_NO_SUPPORTIVE_TRANSLATIONUNIT"); + return use; +} + namespace ClangBackEnd { ClangCodeModelServer::ClangCodeModelServer() @@ -116,9 +122,7 @@ void ClangCodeModelServer::updateTranslationUnitsForEditor(const UpdateTranslati // we might block the translation unit for a completion request // that comes right after this message. updateDocumentAnnotationsTimer.start(0); - QTimer::singleShot(0, [this, updateDocuments](){ - startInitializingSupportiveTranslationUnits(updateDocuments); - }); + delayStartInitializingSupportiveTranslationUnits(updateDocuments); } } catch (const std::exception &exception) { qWarning() << "Error in ClangCodeModelServer::updateTranslationUnitsForEditor:" << exception.what(); @@ -329,6 +333,16 @@ void ClangCodeModelServer::processInitialJobsForDocuments(const std::vector &documents) +{ + if (useSupportiveTranslationUnit()) { + QTimer::singleShot(0, [this, documents](){ + startInitializingSupportiveTranslationUnits(documents); + }); + } +} + void ClangCodeModelServer::startInitializingSupportiveTranslationUnits( const std::vector &documents) { diff --git a/src/tools/clangbackend/ipcsource/clangcodemodelserver.h b/src/tools/clangbackend/ipcsource/clangcodemodelserver.h index b03b4327faf..2622c01db69 100644 --- a/src/tools/clangbackend/ipcsource/clangcodemodelserver.h +++ b/src/tools/clangbackend/ipcsource/clangcodemodelserver.h @@ -72,6 +72,7 @@ private: void startDocumentAnnotationsTimerIfFileIsNotOpenAsDocument(const Utf8String &filePath); void processInitialJobsForDocuments(const std::vector &documents); + void delayStartInitializingSupportiveTranslationUnits(const std::vector &documents); void startInitializingSupportiveTranslationUnits(const std::vector &documents); void processJobsForDirtyAndVisibleDocuments();