From 52959ce472c3e95d12681bdef129d34dfb3f2502 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 10 May 2022 17:21:59 +0200 Subject: [PATCH] CppEditor: Acknowledge the existence of clangd Stop pretending to be super generic. Instead, let interested code know directly whether a document is under clangd's control. This saves code and makes the logic easier to understand. Change-Id: Ia19d0ec6c4e83926379a7d17ca53896bee3a50e1 Reviewed-by: David Schulz --- .../clangcodemodel/clangmodelmanagersupport.cpp | 13 +------------ .../clangcodemodel/clangmodelmanagersupport.h | 4 +--- .../cppeditor/cppbuiltinmodelmanagersupport.cpp | 2 +- src/plugins/cppeditor/cppeditorwidget.cpp | 2 +- src/plugins/cppeditor/cppmodelmanager.cpp | 14 ++------------ src/plugins/cppeditor/cppmodelmanager.h | 4 +--- src/plugins/cppeditor/cppmodelmanagersupport.h | 4 +--- src/plugins/cppeditor/cppoutline.cpp | 2 +- src/plugins/cppeditor/cppuseselectionsupdater.cpp | 2 +- 9 files changed, 10 insertions(+), 37 deletions(-) diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index b37e776f564..b0acd2a30cb 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -253,18 +253,7 @@ std::unique_ptr ClangModelManagerSupport::crea return {}; } -bool ClangModelManagerSupport::supportsOutline(const TextEditor::TextDocument *document) const -{ - return !clientForFile(document->filePath()); -} - -bool ClangModelManagerSupport::supportsLocalUses(const TextEditor::TextDocument *document) const -{ - return !clientForFile(document->filePath()); -} - -bool ClangModelManagerSupport::hasSpecialHoverHandler( - const TextEditor::TextDocument *document) const +bool ClangModelManagerSupport::usesClangd(const TextEditor::TextDocument *document) const { return clientForFile(document->filePath()); } diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.h b/src/plugins/clangcodemodel/clangmodelmanagersupport.h index 7f0749e3d68..47a24634889 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.h +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.h @@ -69,9 +69,7 @@ public: CppEditor::BaseEditorDocumentProcessor *createEditorDocumentProcessor( TextEditor::TextDocument *baseTextDocument) override; std::unique_ptr createOverviewModel() override; - bool supportsOutline(const TextEditor::TextDocument *document) const override; - bool supportsLocalUses(const TextEditor::TextDocument *document) const override; - bool hasSpecialHoverHandler(const TextEditor::TextDocument *document) const override; + bool usesClangd(const TextEditor::TextDocument *document) const override; QString dummyUiHeaderOnDiskDirPath() const; QString dummyUiHeaderOnDiskPath(const QString &filePath) const; diff --git a/src/plugins/cppeditor/cppbuiltinmodelmanagersupport.cpp b/src/plugins/cppeditor/cppbuiltinmodelmanagersupport.cpp index 569d445c74f..9f2ac664b31 100644 --- a/src/plugins/cppeditor/cppbuiltinmodelmanagersupport.cpp +++ b/src/plugins/cppeditor/cppbuiltinmodelmanagersupport.cpp @@ -54,7 +54,7 @@ private: int pos, ReportPriority report) override { - if (CppModelManager::hasSpecialHoverHandler(editorWidget->textDocument())) { + if (CppModelManager::usesClangd(editorWidget->textDocument())) { report(Priority_None); return; } diff --git a/src/plugins/cppeditor/cppeditorwidget.cpp b/src/plugins/cppeditor/cppeditorwidget.cpp index 7c09724eee2..f75d05ffa42 100644 --- a/src/plugins/cppeditor/cppeditorwidget.cpp +++ b/src/plugins/cppeditor/cppeditorwidget.cpp @@ -404,7 +404,7 @@ class CppEditorWidgetPrivate public: CppEditorWidgetPrivate(CppEditorWidget *q); - bool shouldOfferOutline() const { return CppModelManager::supportsOutline(m_cppEditorDocument); } + bool shouldOfferOutline() const { return !CppModelManager::usesClangd(m_cppEditorDocument); } public: QPointer m_modelManager; diff --git a/src/plugins/cppeditor/cppmodelmanager.cpp b/src/plugins/cppeditor/cppmodelmanager.cpp index 84032e2733e..c7afead575f 100644 --- a/src/plugins/cppeditor/cppmodelmanager.cpp +++ b/src/plugins/cppeditor/cppmodelmanager.cpp @@ -1264,19 +1264,9 @@ bool CppModelManager::isCppEditor(Core::IEditor *editor) return editor->context().contains(ProjectExplorer::Constants::CXX_LANGUAGE_ID); } -bool CppModelManager::supportsOutline(const TextEditor::TextDocument *document) +bool CppModelManager::usesClangd(const TextEditor::TextDocument *document) { - return instance()->d->m_activeModelManagerSupport->supportsOutline(document); -} - -bool CppModelManager::supportsLocalUses(const TextEditor::TextDocument *document) -{ - return instance()->d->m_activeModelManagerSupport->supportsLocalUses(document); -} - -bool CppModelManager::hasSpecialHoverHandler(const TextEditor::TextDocument *document) -{ - return instance()->d->m_activeModelManagerSupport->hasSpecialHoverHandler(document); + return instance()->d->m_activeModelManagerSupport->usesClangd(document); } bool CppModelManager::isClangCodeModelActive() const diff --git a/src/plugins/cppeditor/cppmodelmanager.h b/src/plugins/cppeditor/cppmodelmanager.h index 4b56d03e985..65376839db1 100644 --- a/src/plugins/cppeditor/cppmodelmanager.h +++ b/src/plugins/cppeditor/cppmodelmanager.h @@ -134,9 +134,7 @@ public: void emitAbstractEditorSupportRemoved(const QString &filePath); static bool isCppEditor(Core::IEditor *editor); - static bool supportsOutline(const TextEditor::TextDocument *document); - static bool supportsLocalUses(const TextEditor::TextDocument *document); - static bool hasSpecialHoverHandler(const TextEditor::TextDocument *document); + static bool usesClangd(const TextEditor::TextDocument *document); bool isClangCodeModelActive() const; QSet abstractEditorSupports() const; diff --git a/src/plugins/cppeditor/cppmodelmanagersupport.h b/src/plugins/cppeditor/cppmodelmanagersupport.h index f5eec64fbaa..2bab8e8d003 100644 --- a/src/plugins/cppeditor/cppmodelmanagersupport.h +++ b/src/plugins/cppeditor/cppmodelmanagersupport.h @@ -63,9 +63,7 @@ public: virtual BaseEditorDocumentProcessor *createEditorDocumentProcessor( TextEditor::TextDocument *baseTextDocument) = 0; virtual std::unique_ptr createOverviewModel() = 0; - virtual bool supportsOutline(const TextEditor::TextDocument *) const { return true; } - virtual bool hasSpecialHoverHandler(const TextEditor::TextDocument *) const { return false; } - virtual bool supportsLocalUses(const TextEditor::TextDocument *) const { return true; } + virtual bool usesClangd(const TextEditor::TextDocument *) const { return false; } virtual void followSymbol(const CursorInEditor &data, Utils::ProcessLinkCallback &&processLinkCallback, diff --git a/src/plugins/cppeditor/cppoutline.cpp b/src/plugins/cppeditor/cppoutline.cpp index 272cea574a0..dbb06361d0f 100644 --- a/src/plugins/cppeditor/cppoutline.cpp +++ b/src/plugins/cppeditor/cppoutline.cpp @@ -213,7 +213,7 @@ bool CppOutlineWidgetFactory::supportsEditor(Core::IEditor *editor) const const auto cppEditor = qobject_cast(editor); if (!cppEditor || !CppModelManager::isCppEditor(cppEditor)) return false; - return CppModelManager::supportsOutline(cppEditor->textDocument()); + return !CppModelManager::usesClangd(cppEditor->textDocument()); } TextEditor::IOutlineWidget *CppOutlineWidgetFactory::createWidget(Core::IEditor *editor) diff --git a/src/plugins/cppeditor/cppuseselectionsupdater.cpp b/src/plugins/cppeditor/cppuseselectionsupdater.cpp index b26165ca023..babff089b7f 100644 --- a/src/plugins/cppeditor/cppuseselectionsupdater.cpp +++ b/src/plugins/cppeditor/cppuseselectionsupdater.cpp @@ -74,7 +74,7 @@ CppUseSelectionsUpdater::RunnerInfo CppUseSelectionsUpdater::update(CallType cal auto *cppEditorDocument = qobject_cast(cppEditorWidget->textDocument()); QTC_ASSERT(cppEditorDocument, return RunnerInfo::FailedToStart); - m_updateSelections = CppModelManager::instance()->supportsLocalUses(cppEditorDocument); + m_updateSelections = !CppModelManager::usesClangd(cppEditorDocument); CursorInfoParams params; params.semanticInfo = cppEditorWidget->semanticInfo();