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);
|
||||
connect(modelManager, &CppEditor::CppModelManager::projectPartsRemoved,
|
||||
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();
|
||||
connect(sessionManager, &ProjectExplorer::SessionManager::projectAdded,
|
||||
|
@@ -196,6 +196,7 @@ public:
|
||||
|
||||
bool m_enableGC;
|
||||
QTimer m_delayedGcTimer;
|
||||
QTimer m_fallbackProjectPartTimer;
|
||||
|
||||
// Refactoring
|
||||
using REHash = QMap<REType, RefactoringEngineInterface *>;
|
||||
@@ -692,12 +693,16 @@ CppModelManager::CppModelManager()
|
||||
connect(Core::ICore::instance(), &Core::ICore::coreAboutToClose,
|
||||
this, &CppModelManager::onCoreAboutToClose);
|
||||
|
||||
connect(KitManager::instance(), &KitManager::kitsChanged, this,
|
||||
&CppModelManager::setupFallbackProjectPart);
|
||||
connect(this, &CppModelManager::projectPartsRemoved, this,
|
||||
&CppModelManager::setupFallbackProjectPart);
|
||||
connect(this, &CppModelManager::projectPartsUpdated, this,
|
||||
&CppModelManager::setupFallbackProjectPart);
|
||||
d->m_fallbackProjectPartTimer.setSingleShot(true);
|
||||
d->m_fallbackProjectPartTimer.setInterval(5000);
|
||||
connect(&d->m_fallbackProjectPartTimer, &QTimer::timeout,
|
||||
this, &CppModelManager::setupFallbackProjectPart);
|
||||
connect(KitManager::instance(), &KitManager::kitsChanged,
|
||||
&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();
|
||||
|
||||
qRegisterMetaType<CPlusPlus::Document::Ptr>("CPlusPlus::Document::Ptr");
|
||||
@@ -1581,8 +1586,11 @@ void CppModelManager::setupFallbackProjectPart()
|
||||
}
|
||||
|
||||
const auto part = ProjectPart::create({}, rpp, {}, {}, {}, langExtensions, {}, tcInfo);
|
||||
QMutexLocker locker(&d->m_fallbackProjectPartMutex);
|
||||
d->m_fallbackProjectPart = part;
|
||||
{
|
||||
QMutexLocker locker(&d->m_fallbackProjectPartMutex);
|
||||
d->m_fallbackProjectPart = part;
|
||||
}
|
||||
emit fallbackProjectPartUpdated();
|
||||
}
|
||||
|
||||
void CppModelManager::GC()
|
||||
|
@@ -263,6 +263,7 @@ signals:
|
||||
const QString &sourcePath,
|
||||
const QByteArray &contents);
|
||||
void abstractEditorSupportRemoved(const QString &filePath);
|
||||
void fallbackProjectPartUpdated();
|
||||
|
||||
public slots:
|
||||
void updateModifiedSourceFiles();
|
||||
|
Reference in New Issue
Block a user