From a992a1064cae6f8f7e2ada90d8c73924f9695314 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 1 Dec 2015 14:08:37 +0100 Subject: [PATCH] Clang: Update document annotations only if document is visible So no reparsing is happen for invisible files. Change-Id: I8bf3fe8aed38b30ceeabc50ba2f216acc4b8b718 Reviewed-by: Nikolai Kosjar --- src/tools/clangbackend/ipcsource/clangipcserver.cpp | 1 + src/tools/clangbackend/ipcsource/translationunits.cpp | 2 -- tests/unit/unittest/translationunitstest.cpp | 7 ++++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/tools/clangbackend/ipcsource/clangipcserver.cpp b/src/tools/clangbackend/ipcsource/clangipcserver.cpp index 30f84c09794..979eb3ff954 100644 --- a/src/tools/clangbackend/ipcsource/clangipcserver.cpp +++ b/src/tools/clangbackend/ipcsource/clangipcserver.cpp @@ -282,6 +282,7 @@ void ClangIpcServer::updateVisibleTranslationUnits(const UpdateVisibleTranslatio try { translationUnits.setUsedByCurrentEditor(message.currentEditorFilePath()); translationUnits.setVisibleInEditors(message.visibleEditorFilePaths()); + sendDocumentAnnotationsTimer.start(0); } catch (const std::exception &exception) { qWarning() << "Error in ClangIpcServer::updateVisibleTranslationUnits:" << exception.what(); } diff --git a/src/tools/clangbackend/ipcsource/translationunits.cpp b/src/tools/clangbackend/ipcsource/translationunits.cpp index afdcd15246c..c66be73d9bb 100644 --- a/src/tools/clangbackend/ipcsource/translationunits.cpp +++ b/src/tools/clangbackend/ipcsource/translationunits.cpp @@ -171,8 +171,6 @@ DocumentAnnotationsSendState TranslationUnits::sendDocumentAnnotations() auto documentAnnotationsSendState = sendDocumentAnnotationsForCurrentEditor(); if (documentAnnotationsSendState == DocumentAnnotationsSendState::NoDocumentAnnotationsSent) documentAnnotationsSendState = sendDocumentAnnotationsForVisibleEditors(); - if (documentAnnotationsSendState == DocumentAnnotationsSendState::NoDocumentAnnotationsSent) - documentAnnotationsSendState = sendDocumentAnnotationsForAll(); return documentAnnotationsSendState; } diff --git a/tests/unit/unittest/translationunitstest.cpp b/tests/unit/unittest/translationunitstest.cpp index d8a44bff4e0..99c6d23c850 100644 --- a/tests/unit/unittest/translationunitstest.cpp +++ b/tests/unit/unittest/translationunitstest.cpp @@ -381,11 +381,11 @@ TEST_F(TranslationUnits, DoNotSendDocumentAnnotationsIfThereIsNothingToSend) sendAllDocumentAnnotations(); } -TEST_F(TranslationUnits, SendDocumentAnnotationsAfterTranslationUnitCreation) +TEST_F(TranslationUnits, DoNotSendDocumentAnnotationsAfterTranslationUnitCreation) { translationUnits.create({fileContainer, headerContainer}); - EXPECT_CALL(mockSendDocumentAnnotationsCallback, sendDocumentAnnotations()).Times(2); + EXPECT_CALL(mockSendDocumentAnnotationsCallback, sendDocumentAnnotations()).Times(0); sendAllDocumentAnnotations(); } @@ -394,10 +394,11 @@ TEST_F(TranslationUnits, DoNotSendDocumentAnnotationsAfterGettingDocumentAnnotat { translationUnits.create({fileContainer, headerContainer}); auto translationUnit = translationUnits.translationUnit(fileContainer); + translationUnit.setIsVisibleInEditor(true); translationUnit.diagnostics(); // Reset translationUnit.highlightingInformations(); // Reset - EXPECT_CALL(mockSendDocumentAnnotationsCallback, sendDocumentAnnotations()).Times(1); + EXPECT_CALL(mockSendDocumentAnnotationsCallback, sendDocumentAnnotations()).Times(0); sendAllDocumentAnnotations(); }