Editor: pass AssistInterface to createProcessor

The interface can be used for checking the context of a codeassist
request to determine
the correct processor that has to be created.

Change-Id: I47ddb05c46399566e27bae21711f11a3a4132c3f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2021-09-15 07:04:12 +02:00
parent 897d3349fa
commit 4324f3e8c1
38 changed files with 48 additions and 42 deletions

View File

@@ -54,7 +54,8 @@ TextEditor::IAssistProvider::RunType ClangCompletionAssistProvider::runType() co
return Asynchronous;
}
TextEditor::IAssistProcessor *ClangCompletionAssistProvider::createProcessor() const
TextEditor::IAssistProcessor *ClangCompletionAssistProvider::createProcessor(
const TextEditor::AssistInterface *) const
{
return new ClangCompletionAssistProcessor;
}

View File

@@ -44,7 +44,7 @@ public:
IAssistProvider::RunType runType() const override;
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
TextEditor::AssistInterface *createAssistInterface(
const Utils::FilePath &filePath,
const TextEditor::TextEditorWidget *textEditorWidget,

View File

@@ -525,7 +525,7 @@ public:
private:
RunType runType() const override { return Asynchronous; }
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
ClangdClient::Private * const m_data;
};
@@ -723,7 +723,7 @@ public:
private:
RunType runType() const override { return Synchronous; }
TextEditor::IAssistProcessor *createProcessor() const override
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override
{
return new DoxygenAssistProcessor(m_position, m_completionOperator, m_proposalHandler);
}
@@ -2690,7 +2690,8 @@ ClangdClient::VirtualFunctionAssistProcessor::createEntry(const QString &name,
return item;
}
TextEditor::IAssistProcessor *ClangdClient::VirtualFunctionAssistProvider::createProcessor() const
TextEditor::IAssistProcessor *ClangdClient::VirtualFunctionAssistProvider::createProcessor(
const TextEditor::AssistInterface *) const
{
return m_data->followSymbolData->virtualFuncAssistProcessor
= new VirtualFunctionAssistProcessor(m_data);

View File

@@ -119,7 +119,7 @@ TextEditor::ProposalModelPtr completionResults(TextEditor::BaseTextEditor *textE
QTC_ASSERT(assistProvider->runType() == IAssistProvider::Asynchronous,
return TextEditor::ProposalModelPtr());
QScopedPointer<IAssistProcessor> processor(assistProvider->createProcessor());
QScopedPointer<IAssistProcessor> processor(assistProvider->createProcessor(assistInterface));
QTC_ASSERT(processor, return TextEditor::ProposalModelPtr());
WaitForAsyncCompletions waitForCompletions;

View File

@@ -44,7 +44,7 @@ using namespace ProjectExplorer;
// CMakeFileCompletionAssistProvider
// -------------------------------
IAssistProcessor *CMakeFileCompletionAssistProvider::createProcessor() const
IAssistProcessor *CMakeFileCompletionAssistProvider::createProcessor(const AssistInterface *) const
{
return new CMakeFileCompletionAssist;
}

View File

@@ -44,7 +44,7 @@ class CMakeFileCompletionAssistProvider : public TextEditor::CompletionAssistPro
Q_OBJECT
public:
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
};
} // Internal

View File

@@ -417,7 +417,7 @@ int CppFunctionHintModel::activeArgument(const QString &prefix) const
// InternalCompletionAssistProvider
// ---------------------------
IAssistProcessor *InternalCompletionAssistProvider::createProcessor() const
IAssistProcessor *InternalCompletionAssistProvider::createProcessor(const AssistInterface *) const
{
return new InternalCppCompletionAssistProcessor;
}

View File

@@ -81,7 +81,7 @@ class InternalCompletionAssistProvider : public CppCompletionAssistProvider
Q_OBJECT
public:
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
TextEditor::AssistInterface *createAssistInterface(
const Utils::FilePath &filePath,

View File

@@ -1122,7 +1122,8 @@ static void addRefactoringActions(QMenu *menu, AssistInterface *iface)
using Processor = QScopedPointer<IAssistProcessor>;
using Proposal = QScopedPointer<IAssistProposal>;
const Processor processor(CppEditorPlugin::instance()->quickFixProvider()->createProcessor());
const Processor processor(
CppEditorPlugin::instance()->quickFixProvider()->createProcessor(iface));
const Proposal proposal(processor->perform(iface)); // OK, perform() takes ownership of iface.
if (proposal) {
auto model = proposal->model().staticCast<GenericProposalModel>();

View File

@@ -72,7 +72,7 @@ IAssistProvider::RunType CppQuickFixAssistProvider::runType() const
return Synchronous;
}
IAssistProcessor *CppQuickFixAssistProvider::createProcessor() const
IAssistProcessor *CppQuickFixAssistProvider::createProcessor(const AssistInterface *) const
{
return new CppQuickFixAssistProcessor;
}

View File

@@ -70,7 +70,7 @@ class CppQuickFixAssistProvider : public TextEditor::IAssistProvider
public:
CppQuickFixAssistProvider() = default;
IAssistProvider::RunType runType() const override;
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
};
} // Internal

View File

@@ -189,7 +189,7 @@ IAssistProvider::RunType VirtualFunctionAssistProvider::runType() const
return AsynchronousWithThread;
}
IAssistProcessor *VirtualFunctionAssistProvider::createProcessor() const
IAssistProcessor *VirtualFunctionAssistProvider::createProcessor(const AssistInterface *) const
{
return new VirtualFunctionAssistProcessor(m_params);
}

View File

@@ -77,7 +77,7 @@ public:
void clearParams() { m_params = Parameters(); }
IAssistProvider::RunType runType() const override;
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
private:
Parameters m_params;

View File

@@ -137,9 +137,9 @@ public:
{
VirtualFunctionAssistProvider::configure(params);
const QScopedPointer<IAssistProcessor> processor(createProcessor());
AssistInterface *assistInterface
= m_editorWidget->createAssistInterface(FollowSymbol, ExplicitlyInvoked);
const QScopedPointer<IAssistProcessor> processor(createProcessor(assistInterface));
const QScopedPointer<IAssistProposal> immediateProposal(
processor->immediateProposal(assistInterface));

View File

@@ -985,7 +985,7 @@ void FakeVimUserCommandsPage::apply()
class FakeVimCompletionAssistProvider : public CompletionAssistProvider
{
public:
IAssistProcessor *createProcessor() const override;
IAssistProcessor *createProcessor(const AssistInterface *) const override;
void setActive(const QString &needle, bool forward, FakeVimHandler *handler)
{
@@ -1122,7 +1122,7 @@ private:
const FakeVimCompletionAssistProvider *m_provider;
};
IAssistProcessor *FakeVimCompletionAssistProvider::createProcessor() const
IAssistProcessor *FakeVimCompletionAssistProvider::createProcessor(const AssistInterface *) const
{
return new FakeVimCompletionAssistProcessor(this);
}

View File

@@ -187,7 +187,7 @@ static QIcon glslIcon(IconTypes iconType)
// ----------------------------
// GlslCompletionAssistProvider
// ----------------------------
IAssistProcessor *GlslCompletionAssistProvider::createProcessor() const
IAssistProcessor *GlslCompletionAssistProvider::createProcessor(const AssistInterface *) const
{
return new GlslCompletionAssistProcessor;
}

View File

@@ -83,7 +83,7 @@ class GlslCompletionAssistProvider : public TextEditor::CompletionAssistProvider
Q_OBJECT
public:
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
int activationCharSequenceLength() const override;
bool isActivationCharSequence(const QString &sequence) const override;

View File

@@ -474,7 +474,8 @@ LanguageClientCompletionAssistProvider::LanguageClientCompletionAssistProvider(C
, m_client(client)
{ }
IAssistProcessor *LanguageClientCompletionAssistProvider::createProcessor() const
IAssistProcessor *LanguageClientCompletionAssistProvider::createProcessor(
const AssistInterface *) const
{
return new LanguageClientCompletionAssistProcessor(m_client, m_itemsTransformer, m_applyHelper,
m_proposalHandler, m_snippetsGroup);

View File

@@ -62,7 +62,7 @@ class LANGUAGECLIENT_EXPORT LanguageClientCompletionAssistProvider
public:
LanguageClientCompletionAssistProvider(Client *client);
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
RunType runType() const override;
int activationCharSequenceLength() const override;

View File

@@ -157,7 +157,8 @@ FunctionHintAssistProvider::FunctionHintAssistProvider(Client *client)
, m_client(client)
{}
TextEditor::IAssistProcessor *FunctionHintAssistProvider::createProcessor() const
TextEditor::IAssistProcessor *FunctionHintAssistProvider::createProcessor(
const AssistInterface *) const
{
return new FunctionHintProcessor(m_client, m_proposalHandler);
}

View File

@@ -43,7 +43,7 @@ class FunctionHintAssistProvider : public TextEditor::CompletionAssistProvider
public:
explicit FunctionHintAssistProvider(Client *client);
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
RunType runType() const override;
int activationCharSequenceLength() const override;

View File

@@ -165,7 +165,7 @@ IAssistProvider::RunType LanguageClientQuickFixProvider::runType() const
return Asynchronous;
}
IAssistProcessor *LanguageClientQuickFixProvider::createProcessor() const
IAssistProcessor *LanguageClientQuickFixProvider::createProcessor(const AssistInterface *) const
{
return new LanguageClientQuickFixAssistProcessor(m_client);
}

View File

@@ -54,7 +54,7 @@ class LANGUAGECLIENT_EXPORT LanguageClientQuickFixProvider : public TextEditor::
public:
explicit LanguageClientQuickFixProvider(Client *client);
IAssistProvider::RunType runType() const override;
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
private:
Client *m_client = nullptr; // not owned

View File

@@ -259,7 +259,7 @@ private:
};
TextEditor::IAssistProcessor *NimCompletionAssistProvider::createProcessor() const
IAssistProcessor *NimCompletionAssistProvider::createProcessor(const AssistInterface *) const
{
return new NimCompletionAssistProcessor();
}

View File

@@ -34,7 +34,7 @@ class NimCompletionAssistProvider : public TextEditor::CompletionAssistProvider
Q_OBJECT
public:
TextEditor::IAssistProcessor *createProcessor() const final;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const final;
int activationCharSequenceLength() const final;
bool isActivationCharSequence(const QString &sequence) const final;
RunType runType() const final;

View File

@@ -515,7 +515,7 @@ bool QmlJSCompletionAssistProvider::isContinuationChar(const QChar &c) const
return isIdentifierChar(c, false);
}
IAssistProcessor *QmlJSCompletionAssistProvider::createProcessor() const
IAssistProcessor *QmlJSCompletionAssistProvider::createProcessor(const AssistInterface *) const
{
return new QmlJSCompletionAssistProcessor;
}

View File

@@ -125,7 +125,7 @@ class QMLJSEDITOR_EXPORT QmlJSCompletionAssistProvider : public TextEditor::Comp
Q_OBJECT
public:
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
int activationCharSequenceLength() const override;
bool isActivationCharSequence(const QString &sequence) const override;

View File

@@ -880,7 +880,7 @@ void QmlJSEditorWidget::contextMenuEvent(QContextMenuEvent *e)
AssistInterface *interface = createAssistInterface(QuickFix, ExplicitlyInvoked);
if (interface) {
QScopedPointer<IAssistProcessor> processor(
Internal::QmlJSEditorPlugin::quickFixAssistProvider()->createProcessor());
Internal::QmlJSEditorPlugin::quickFixAssistProvider()->createProcessor(interface));
QScopedPointer<IAssistProposal> proposal(processor->perform(interface));
if (!proposal.isNull()) {
GenericProposalModelPtr model = proposal->model().staticCast<GenericProposalModel>();

View File

@@ -86,7 +86,7 @@ IAssistProvider::RunType QmlJSQuickFixAssistProvider::runType() const
return Synchronous;
}
IAssistProcessor *QmlJSQuickFixAssistProvider::createProcessor() const
IAssistProcessor *QmlJSQuickFixAssistProvider::createProcessor(const AssistInterface *) const
{
return new QmlJSQuickFixAssistProcessor;
}

View File

@@ -59,7 +59,7 @@ public:
~QmlJSQuickFixAssistProvider() override = default;
IAssistProvider::RunType runType() const override;
TextEditor::IAssistProcessor *createProcessor() const override;
TextEditor::IAssistProcessor *createProcessor(const TextEditor::AssistInterface *) const override;
};
} // Internal

View File

@@ -113,7 +113,7 @@ IAssistProvider::RunType ClipboardAssistProvider::runType() const
return Synchronous;
}
IAssistProcessor *ClipboardAssistProvider::createProcessor() const
IAssistProcessor *ClipboardAssistProvider::createProcessor(const AssistInterface *) const
{
return new ClipboardAssistProcessor;
}

View File

@@ -36,7 +36,7 @@ class ClipboardAssistProvider: public IAssistProvider
public:
ClipboardAssistProvider(QObject *parent = nullptr) : IAssistProvider(parent) {}
IAssistProvider::RunType runType() const override;
IAssistProcessor *createProcessor() const override;
IAssistProcessor *createProcessor(const AssistInterface *) const override;
};
} // namespace Internal

View File

@@ -221,7 +221,7 @@ void CodeAssistantPrivate::requestProposal(AssistReason reason,
m_assistKind = kind;
m_requestProvider = provider;
IAssistProcessor *processor = provider->createProcessor();
IAssistProcessor *processor = provider->createProcessor(assistInterface);
switch (provider->runType()) {
case IAssistProvider::Synchronous: {

View File

@@ -69,7 +69,7 @@ IAssistProvider::RunType DocumentContentCompletionProvider::runType() const
return Asynchronous;
}
IAssistProcessor *DocumentContentCompletionProvider::createProcessor() const
IAssistProcessor *DocumentContentCompletionProvider::createProcessor(const AssistInterface *) const
{
return new DocumentContentCompletionProcessor(m_snippetGroup);
}

View File

@@ -40,7 +40,7 @@ public:
const QString &snippetGroup = QString(Constants::TEXT_SNIPPET_GROUP_ID));
RunType runType() const override;
IAssistProcessor *createProcessor() const override;
IAssistProcessor *createProcessor(const AssistInterface *) const override;
private:
QString m_snippetGroup;

View File

@@ -31,6 +31,7 @@
namespace TextEditor {
class AssistInterface;
class IAssistProcessor;
class TEXTEDITOR_EXPORT IAssistProvider : public QObject
@@ -47,7 +48,7 @@ public:
};
virtual RunType runType() const = 0;
virtual IAssistProcessor *createProcessor() const = 0;
virtual IAssistProcessor *createProcessor(const AssistInterface *assistInterface) const = 0;
};
} // TextEditor

View File

@@ -284,7 +284,7 @@ IAssistProvider::RunType KeywordsCompletionAssistProvider::runType() const
return Synchronous;
}
IAssistProcessor *KeywordsCompletionAssistProvider::createProcessor() const
IAssistProcessor *KeywordsCompletionAssistProvider::createProcessor(const AssistInterface *) const
{
auto processor = new KeywordsCompletionAssistProcessor(m_keyWords);
processor->setSnippetGroup(m_snippetGroup);

View File

@@ -95,7 +95,7 @@ public:
// IAssistProvider interface
RunType runType() const override;
IAssistProcessor *createProcessor() const override;
IAssistProcessor *createProcessor(const AssistInterface *) const override;
private:
Keywords m_keyWords;