forked from qt-creator/qt-creator
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:
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user