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 <david.schulz@qt.io>
This commit is contained in:
Christian Kandeler
2022-05-10 17:21:59 +02:00
parent c1fcaa2877
commit 52959ce472
9 changed files with 10 additions and 37 deletions

View File

@@ -253,18 +253,7 @@ std::unique_ptr<CppEditor::AbstractOverviewModel> ClangModelManagerSupport::crea
return {}; return {};
} }
bool ClangModelManagerSupport::supportsOutline(const TextEditor::TextDocument *document) const bool ClangModelManagerSupport::usesClangd(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
{ {
return clientForFile(document->filePath()); return clientForFile(document->filePath());
} }

View File

@@ -69,9 +69,7 @@ public:
CppEditor::BaseEditorDocumentProcessor *createEditorDocumentProcessor( CppEditor::BaseEditorDocumentProcessor *createEditorDocumentProcessor(
TextEditor::TextDocument *baseTextDocument) override; TextEditor::TextDocument *baseTextDocument) override;
std::unique_ptr<CppEditor::AbstractOverviewModel> createOverviewModel() override; std::unique_ptr<CppEditor::AbstractOverviewModel> createOverviewModel() override;
bool supportsOutline(const TextEditor::TextDocument *document) const override; bool usesClangd(const TextEditor::TextDocument *document) const override;
bool supportsLocalUses(const TextEditor::TextDocument *document) const override;
bool hasSpecialHoverHandler(const TextEditor::TextDocument *document) const override;
QString dummyUiHeaderOnDiskDirPath() const; QString dummyUiHeaderOnDiskDirPath() const;
QString dummyUiHeaderOnDiskPath(const QString &filePath) const; QString dummyUiHeaderOnDiskPath(const QString &filePath) const;

View File

@@ -54,7 +54,7 @@ private:
int pos, int pos,
ReportPriority report) override ReportPriority report) override
{ {
if (CppModelManager::hasSpecialHoverHandler(editorWidget->textDocument())) { if (CppModelManager::usesClangd(editorWidget->textDocument())) {
report(Priority_None); report(Priority_None);
return; return;
} }

View File

@@ -404,7 +404,7 @@ class CppEditorWidgetPrivate
public: public:
CppEditorWidgetPrivate(CppEditorWidget *q); CppEditorWidgetPrivate(CppEditorWidget *q);
bool shouldOfferOutline() const { return CppModelManager::supportsOutline(m_cppEditorDocument); } bool shouldOfferOutline() const { return !CppModelManager::usesClangd(m_cppEditorDocument); }
public: public:
QPointer<CppModelManager> m_modelManager; QPointer<CppModelManager> m_modelManager;

View File

@@ -1264,19 +1264,9 @@ bool CppModelManager::isCppEditor(Core::IEditor *editor)
return editor->context().contains(ProjectExplorer::Constants::CXX_LANGUAGE_ID); 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); return instance()->d->m_activeModelManagerSupport->usesClangd(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);
} }
bool CppModelManager::isClangCodeModelActive() const bool CppModelManager::isClangCodeModelActive() const

View File

@@ -134,9 +134,7 @@ public:
void emitAbstractEditorSupportRemoved(const QString &filePath); void emitAbstractEditorSupportRemoved(const QString &filePath);
static bool isCppEditor(Core::IEditor *editor); static bool isCppEditor(Core::IEditor *editor);
static bool supportsOutline(const TextEditor::TextDocument *document); static bool usesClangd(const TextEditor::TextDocument *document);
static bool supportsLocalUses(const TextEditor::TextDocument *document);
static bool hasSpecialHoverHandler(const TextEditor::TextDocument *document);
bool isClangCodeModelActive() const; bool isClangCodeModelActive() const;
QSet<AbstractEditorSupport*> abstractEditorSupports() const; QSet<AbstractEditorSupport*> abstractEditorSupports() const;

View File

@@ -63,9 +63,7 @@ public:
virtual BaseEditorDocumentProcessor *createEditorDocumentProcessor( virtual BaseEditorDocumentProcessor *createEditorDocumentProcessor(
TextEditor::TextDocument *baseTextDocument) = 0; TextEditor::TextDocument *baseTextDocument) = 0;
virtual std::unique_ptr<AbstractOverviewModel> createOverviewModel() = 0; virtual std::unique_ptr<AbstractOverviewModel> createOverviewModel() = 0;
virtual bool supportsOutline(const TextEditor::TextDocument *) const { return true; } virtual bool usesClangd(const TextEditor::TextDocument *) const { return false; }
virtual bool hasSpecialHoverHandler(const TextEditor::TextDocument *) const { return false; }
virtual bool supportsLocalUses(const TextEditor::TextDocument *) const { return true; }
virtual void followSymbol(const CursorInEditor &data, virtual void followSymbol(const CursorInEditor &data,
Utils::ProcessLinkCallback &&processLinkCallback, Utils::ProcessLinkCallback &&processLinkCallback,

View File

@@ -213,7 +213,7 @@ bool CppOutlineWidgetFactory::supportsEditor(Core::IEditor *editor) const
const auto cppEditor = qobject_cast<TextEditor::BaseTextEditor*>(editor); const auto cppEditor = qobject_cast<TextEditor::BaseTextEditor*>(editor);
if (!cppEditor || !CppModelManager::isCppEditor(cppEditor)) if (!cppEditor || !CppModelManager::isCppEditor(cppEditor))
return false; return false;
return CppModelManager::supportsOutline(cppEditor->textDocument()); return !CppModelManager::usesClangd(cppEditor->textDocument());
} }
TextEditor::IOutlineWidget *CppOutlineWidgetFactory::createWidget(Core::IEditor *editor) TextEditor::IOutlineWidget *CppOutlineWidgetFactory::createWidget(Core::IEditor *editor)

View File

@@ -74,7 +74,7 @@ CppUseSelectionsUpdater::RunnerInfo CppUseSelectionsUpdater::update(CallType cal
auto *cppEditorDocument = qobject_cast<CppEditorDocument *>(cppEditorWidget->textDocument()); auto *cppEditorDocument = qobject_cast<CppEditorDocument *>(cppEditorWidget->textDocument());
QTC_ASSERT(cppEditorDocument, return RunnerInfo::FailedToStart); QTC_ASSERT(cppEditorDocument, return RunnerInfo::FailedToStart);
m_updateSelections = CppModelManager::instance()->supportsLocalUses(cppEditorDocument); m_updateSelections = !CppModelManager::usesClangd(cppEditorDocument);
CursorInfoParams params; CursorInfoParams params;
params.semanticInfo = cppEditorWidget->semanticInfo(); params.semanticInfo = cppEditorWidget->semanticInfo();