forked from qt-creator/qt-creator
CppEditor: Do not overwrite extra selections from language client
The broken libclang-based implementation used to remove the correct results we got from clangd. Task-number: QTCREATORBUG-26339 Task-number: QTCREATORBUG-26596 Change-Id: I9b7c1214c376b616fe204986ed37c287e2307f81 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -209,6 +209,11 @@ bool ClangModelManagerSupport::supportsOutline(const TextEditor::TextDocument *d
|
|||||||
return !clientForFile(document->filePath());
|
return !clientForFile(document->filePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ClangModelManagerSupport::supportsLocalUses(const TextEditor::TextDocument *document) const
|
||||||
|
{
|
||||||
|
return !clientForFile(document->filePath());
|
||||||
|
}
|
||||||
|
|
||||||
CppEditor::BaseEditorDocumentProcessor *ClangModelManagerSupport::createEditorDocumentProcessor(
|
CppEditor::BaseEditorDocumentProcessor *ClangModelManagerSupport::createEditorDocumentProcessor(
|
||||||
TextEditor::TextDocument *baseTextDocument)
|
TextEditor::TextDocument *baseTextDocument)
|
||||||
{
|
{
|
||||||
|
@@ -75,6 +75,7 @@ public:
|
|||||||
CppEditor::RefactoringEngineInterface &refactoringEngineInterface() override;
|
CppEditor::RefactoringEngineInterface &refactoringEngineInterface() override;
|
||||||
std::unique_ptr<CppEditor::AbstractOverviewModel> createOverviewModel() override;
|
std::unique_ptr<CppEditor::AbstractOverviewModel> createOverviewModel() override;
|
||||||
bool supportsOutline(const TextEditor::TextDocument *document) const override;
|
bool supportsOutline(const TextEditor::TextDocument *document) const override;
|
||||||
|
bool supportsLocalUses(const TextEditor::TextDocument *document) const override;
|
||||||
|
|
||||||
BackendCommunicator &communicator();
|
BackendCommunicator &communicator();
|
||||||
QString dummyUiHeaderOnDiskDirPath() const;
|
QString dummyUiHeaderOnDiskDirPath() const;
|
||||||
|
@@ -1321,6 +1321,11 @@ bool CppModelManager::supportsOutline(const TextEditor::TextDocument *document)
|
|||||||
return instance()->d->m_activeModelManagerSupport->supportsOutline(document);
|
return instance()->d->m_activeModelManagerSupport->supportsOutline(document);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CppModelManager::supportsLocalUses(const TextEditor::TextDocument *document)
|
||||||
|
{
|
||||||
|
return instance()->d->m_activeModelManagerSupport->supportsLocalUses(document);
|
||||||
|
}
|
||||||
|
|
||||||
bool CppModelManager::isClangCodeModelActive() const
|
bool CppModelManager::isClangCodeModelActive() const
|
||||||
{
|
{
|
||||||
return d->m_activeModelManagerSupport != d->m_builtinModelManagerSupport;
|
return d->m_activeModelManagerSupport != d->m_builtinModelManagerSupport;
|
||||||
|
@@ -140,6 +140,7 @@ public:
|
|||||||
|
|
||||||
static bool isCppEditor(Core::IEditor *editor);
|
static bool isCppEditor(Core::IEditor *editor);
|
||||||
static bool supportsOutline(const TextEditor::TextDocument *document);
|
static bool supportsOutline(const TextEditor::TextDocument *document);
|
||||||
|
static bool supportsLocalUses(const TextEditor::TextDocument *document);
|
||||||
bool isClangCodeModelActive() const;
|
bool isClangCodeModelActive() const;
|
||||||
|
|
||||||
QSet<AbstractEditorSupport*> abstractEditorSupports() const;
|
QSet<AbstractEditorSupport*> abstractEditorSupports() const;
|
||||||
|
@@ -62,6 +62,7 @@ public:
|
|||||||
virtual RefactoringEngineInterface &refactoringEngineInterface() = 0;
|
virtual RefactoringEngineInterface &refactoringEngineInterface() = 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 supportsOutline(const TextEditor::TextDocument *) const { return true; }
|
||||||
|
virtual bool supportsLocalUses(const TextEditor::TextDocument *) const { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class CPPEDITOR_EXPORT ModelManagerSupportProvider
|
class CPPEDITOR_EXPORT ModelManagerSupportProvider
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "cppeditorwidget.h"
|
#include "cppeditorwidget.h"
|
||||||
#include "cppeditordocument.h"
|
#include "cppeditordocument.h"
|
||||||
|
#include "cppmodelmanager.h"
|
||||||
#include "cpptoolsreuse.h"
|
#include "cpptoolsreuse.h"
|
||||||
|
|
||||||
#include <utils/textutils.h>
|
#include <utils/textutils.h>
|
||||||
@@ -73,6 +74,9 @@ 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);
|
||||||
|
|
||||||
|
if (!CppModelManager::instance()->supportsLocalUses(cppEditorDocument))
|
||||||
|
return RunnerInfo::AlreadyUpToDate;
|
||||||
|
|
||||||
CursorInfoParams params;
|
CursorInfoParams params;
|
||||||
params.semanticInfo = cppEditorWidget->semanticInfo();
|
params.semanticInfo = cppEditorWidget->semanticInfo();
|
||||||
params.textCursor = Utils::Text::wordStartCursor(cppEditorWidget->textCursor());
|
params.textCursor = Utils::Text::wordStartCursor(cppEditorWidget->textCursor());
|
||||||
|
Reference in New Issue
Block a user