forked from qt-creator/qt-creator
ClangCodeModel: Restart clangd fallback client
... on fallback project part change. Change-Id: Icfc355443b4d6bb3c94eae27c2d23bbd9f681211 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -134,6 +134,12 @@ ClangModelManagerSupport::ClangModelManagerSupport()
|
|||||||
this, &ClangModelManagerSupport::onProjectPartsUpdated);
|
this, &ClangModelManagerSupport::onProjectPartsUpdated);
|
||||||
connect(modelManager, &CppEditor::CppModelManager::projectPartsRemoved,
|
connect(modelManager, &CppEditor::CppModelManager::projectPartsRemoved,
|
||||||
this, &ClangModelManagerSupport::onProjectPartsRemoved);
|
this, &ClangModelManagerSupport::onProjectPartsRemoved);
|
||||||
|
connect(modelManager, &CppModelManager::fallbackProjectPartUpdated, this, [this] {
|
||||||
|
if (ClangdClient * const fallbackClient = clientForProject(nullptr)) {
|
||||||
|
LanguageClientManager::shutdownClient(fallbackClient);
|
||||||
|
claimNonProjectSources(createClient(nullptr, {}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
auto *sessionManager = ProjectExplorer::SessionManager::instance();
|
auto *sessionManager = ProjectExplorer::SessionManager::instance();
|
||||||
connect(sessionManager, &ProjectExplorer::SessionManager::projectAdded,
|
connect(sessionManager, &ProjectExplorer::SessionManager::projectAdded,
|
||||||
|
@@ -196,6 +196,7 @@ public:
|
|||||||
|
|
||||||
bool m_enableGC;
|
bool m_enableGC;
|
||||||
QTimer m_delayedGcTimer;
|
QTimer m_delayedGcTimer;
|
||||||
|
QTimer m_fallbackProjectPartTimer;
|
||||||
|
|
||||||
// Refactoring
|
// Refactoring
|
||||||
using REHash = QMap<REType, RefactoringEngineInterface *>;
|
using REHash = QMap<REType, RefactoringEngineInterface *>;
|
||||||
@@ -692,12 +693,16 @@ CppModelManager::CppModelManager()
|
|||||||
connect(Core::ICore::instance(), &Core::ICore::coreAboutToClose,
|
connect(Core::ICore::instance(), &Core::ICore::coreAboutToClose,
|
||||||
this, &CppModelManager::onCoreAboutToClose);
|
this, &CppModelManager::onCoreAboutToClose);
|
||||||
|
|
||||||
connect(KitManager::instance(), &KitManager::kitsChanged, this,
|
d->m_fallbackProjectPartTimer.setSingleShot(true);
|
||||||
&CppModelManager::setupFallbackProjectPart);
|
d->m_fallbackProjectPartTimer.setInterval(5000);
|
||||||
connect(this, &CppModelManager::projectPartsRemoved, this,
|
connect(&d->m_fallbackProjectPartTimer, &QTimer::timeout,
|
||||||
&CppModelManager::setupFallbackProjectPart);
|
this, &CppModelManager::setupFallbackProjectPart);
|
||||||
connect(this, &CppModelManager::projectPartsUpdated, this,
|
connect(KitManager::instance(), &KitManager::kitsChanged,
|
||||||
&CppModelManager::setupFallbackProjectPart);
|
&d->m_fallbackProjectPartTimer, qOverload<>(&QTimer::start));
|
||||||
|
connect(this, &CppModelManager::projectPartsRemoved,
|
||||||
|
&d->m_fallbackProjectPartTimer, qOverload<>(&QTimer::start));
|
||||||
|
connect(this, &CppModelManager::projectPartsUpdated,
|
||||||
|
&d->m_fallbackProjectPartTimer, qOverload<>(&QTimer::start));
|
||||||
setupFallbackProjectPart();
|
setupFallbackProjectPart();
|
||||||
|
|
||||||
qRegisterMetaType<CPlusPlus::Document::Ptr>("CPlusPlus::Document::Ptr");
|
qRegisterMetaType<CPlusPlus::Document::Ptr>("CPlusPlus::Document::Ptr");
|
||||||
@@ -1581,8 +1586,11 @@ void CppModelManager::setupFallbackProjectPart()
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto part = ProjectPart::create({}, rpp, {}, {}, {}, langExtensions, {}, tcInfo);
|
const auto part = ProjectPart::create({}, rpp, {}, {}, {}, langExtensions, {}, tcInfo);
|
||||||
|
{
|
||||||
QMutexLocker locker(&d->m_fallbackProjectPartMutex);
|
QMutexLocker locker(&d->m_fallbackProjectPartMutex);
|
||||||
d->m_fallbackProjectPart = part;
|
d->m_fallbackProjectPart = part;
|
||||||
|
}
|
||||||
|
emit fallbackProjectPartUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CppModelManager::GC()
|
void CppModelManager::GC()
|
||||||
|
@@ -263,6 +263,7 @@ signals:
|
|||||||
const QString &sourcePath,
|
const QString &sourcePath,
|
||||||
const QByteArray &contents);
|
const QByteArray &contents);
|
||||||
void abstractEditorSupportRemoved(const QString &filePath);
|
void abstractEditorSupportRemoved(const QString &filePath);
|
||||||
|
void fallbackProjectPartUpdated();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateModifiedSourceFiles();
|
void updateModifiedSourceFiles();
|
||||||
|
Reference in New Issue
Block a user