LSP: simplify codeassistant

Use TextEditor namespace globally in languageclientcodeassist.cpp
instead of just some functions.

Change-Id: I34b71a2a4a38d8ee0158705f1b279fa5eb0386cb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2019-01-29 11:23:59 +01:00
parent a2009c144e
commit 2edd9c5012

View File

@@ -48,10 +48,11 @@
static Q_LOGGING_CATEGORY(LOGLSPCOMPLETION, "qtc.languageclient.completion", QtWarningMsg); static Q_LOGGING_CATEGORY(LOGLSPCOMPLETION, "qtc.languageclient.completion", QtWarningMsg);
using namespace LanguageServerProtocol; using namespace LanguageServerProtocol;
using namespace TextEditor;
namespace LanguageClient { namespace LanguageClient {
class LanguageClientCompletionItem : public TextEditor::AssistProposalItemInterface class LanguageClientCompletionItem : public AssistProposalItemInterface
{ {
public: public:
LanguageClientCompletionItem(CompletionItem item); LanguageClientCompletionItem(CompletionItem item);
@@ -60,7 +61,7 @@ public:
QString text() const override; QString text() const override;
bool implicitlyApplies() const override; bool implicitlyApplies() const override;
bool prematurelyApplies(const QChar &typedCharacter) const override; bool prematurelyApplies(const QChar &typedCharacter) const override;
void apply(TextEditor::TextDocumentManipulatorInterface &manipulator, int basePosition) const override; void apply(TextDocumentManipulatorInterface &manipulator, int basePosition) const override;
QIcon icon() const override; QIcon icon() const override;
QString detail() const override; QString detail() const override;
bool isSnippet() const override; bool isSnippet() const override;
@@ -91,7 +92,7 @@ bool LanguageClientCompletionItem::implicitlyApplies() const
bool LanguageClientCompletionItem::prematurelyApplies(const QChar &/*typedCharacter*/) const bool LanguageClientCompletionItem::prematurelyApplies(const QChar &/*typedCharacter*/) const
{ return false; } { return false; }
void LanguageClientCompletionItem::apply(TextEditor::TextDocumentManipulatorInterface &manipulator, void LanguageClientCompletionItem::apply(TextDocumentManipulatorInterface &manipulator,
int /*basePosition*/) const int /*basePosition*/) const
{ {
const int pos = manipulator.currentPosition(); const int pos = manipulator.currentPosition();
@@ -207,7 +208,7 @@ bool LanguageClientCompletionItem::isPerfectMatch(int pos, QTextDocument *doc) c
return textToInsert == textAt(QTextCursor(doc), pos - length, length); return textToInsert == textAt(QTextCursor(doc), pos - length, length);
} }
class LanguageClientCompletionModel : public TextEditor::GenericProposalModel class LanguageClientCompletionModel : public GenericProposalModel
{ {
public: public:
// GenericProposalModel interface // GenericProposalModel interface
@@ -221,7 +222,6 @@ public:
void LanguageClientCompletionModel::sort(const QString &/*prefix*/) void LanguageClientCompletionModel::sort(const QString &/*prefix*/)
{ {
using namespace TextEditor;
std::sort(m_currentItems.begin(), m_currentItems.end(), std::sort(m_currentItems.begin(), m_currentItems.end(),
[] (AssistProposalItemInterface *a, AssistProposalItemInterface *b){ [] (AssistProposalItemInterface *a, AssistProposalItemInterface *b){
return *(dynamic_cast<LanguageClientCompletionItem *>(a)) < *( return *(dynamic_cast<LanguageClientCompletionItem *>(a)) < *(
@@ -229,16 +229,16 @@ void LanguageClientCompletionModel::sort(const QString &/*prefix*/)
}); });
} }
class LanguageClientCompletionProposal : public TextEditor::GenericProposal class LanguageClientCompletionProposal : public GenericProposal
{ {
public: public:
LanguageClientCompletionProposal(int cursorPos, LanguageClientCompletionModel *model) LanguageClientCompletionProposal(int cursorPos, LanguageClientCompletionModel *model)
: TextEditor::GenericProposal(cursorPos, TextEditor::GenericProposalModelPtr(model)) : GenericProposal(cursorPos, GenericProposalModelPtr(model))
, m_model(model) , m_model(model)
{ } { }
// IAssistProposal interface // IAssistProposal interface
bool hasItemsToPropose(const QString &/*text*/, TextEditor::AssistReason reason) const override bool hasItemsToPropose(const QString &/*text*/, AssistReason reason) const override
{ {
if (m_model->size() <= 0 || m_document.isNull()) if (m_model->size() <= 0 || m_document.isNull())
return false; return false;
@@ -255,11 +255,11 @@ public:
}; };
class LanguageClientCompletionAssistProcessor : public TextEditor::IAssistProcessor class LanguageClientCompletionAssistProcessor : public IAssistProcessor
{ {
public: public:
LanguageClientCompletionAssistProcessor(BaseClient *client); LanguageClientCompletionAssistProcessor(BaseClient *client);
TextEditor::IAssistProposal *perform(const TextEditor::AssistInterface *interface) override; IAssistProposal *perform(const AssistInterface *interface) override;
bool running() override; bool running() override;
bool needsRestart() const override { return true; } bool needsRestart() const override { return true; }
@@ -276,22 +276,21 @@ LanguageClientCompletionAssistProcessor::LanguageClientCompletionAssistProcessor
: m_client(client) : m_client(client)
{ } { }
static QString assistReasonString(TextEditor::AssistReason reason) static QString assistReasonString(AssistReason reason)
{ {
switch (reason) { switch (reason) {
case TextEditor::IdleEditor: return QString("idle editor"); case IdleEditor: return QString("idle editor");
case TextEditor::ActivationCharacter: return QString("activation character"); case ActivationCharacter: return QString("activation character");
case TextEditor::ExplicitlyInvoked: return QString("explicitly invoking"); case ExplicitlyInvoked: return QString("explicitly invoking");
} }
return QString("unknown reason"); return QString("unknown reason");
} }
TextEditor::IAssistProposal *LanguageClientCompletionAssistProcessor::perform( IAssistProposal *LanguageClientCompletionAssistProcessor::perform(const AssistInterface *interface)
const TextEditor::AssistInterface *interface)
{ {
QTC_ASSERT(m_client, return nullptr); QTC_ASSERT(m_client, return nullptr);
m_pos = interface->position(); m_pos = interface->position();
if (interface->reason() == TextEditor::IdleEditor) { if (interface->reason() == IdleEditor) {
// Trigger an automatic completion request only when we are on a word with more than 2 "identifier" character // Trigger an automatic completion request only when we are on a word with more than 2 "identifier" character
const QRegExp regexp("[_a-zA-Z0-9]*"); const QRegExp regexp("[_a-zA-Z0-9]*");
int delta = 0; int delta = 0;
@@ -302,7 +301,7 @@ TextEditor::IAssistProposal *LanguageClientCompletionAssistProcessor::perform(
} }
CompletionRequest completionRequest; CompletionRequest completionRequest;
CompletionParams::CompletionContext context; CompletionParams::CompletionContext context;
context.setTriggerKind(interface->reason() == TextEditor::ActivationCharacter context.setTriggerKind(interface->reason() == ActivationCharacter
? CompletionParams::TriggerCharacter ? CompletionParams::TriggerCharacter
: CompletionParams::Invoked); : CompletionParams::Invoked);
auto params = completionRequest.params().value_or(CompletionParams()); auto params = completionRequest.params().value_or(CompletionParams());
@@ -336,7 +335,6 @@ bool LanguageClientCompletionAssistProcessor::running()
void LanguageClientCompletionAssistProcessor::handleCompletionResponse( void LanguageClientCompletionAssistProcessor::handleCompletionResponse(
const CompletionRequest::Response &response) const CompletionRequest::Response &response)
{ {
using namespace TextEditor;
qCDebug(LOGLSPCOMPLETION) << QTime::currentTime() << " : got completions"; qCDebug(LOGLSPCOMPLETION) << QTime::currentTime() << " : got completions";
m_running = false; m_running = false;
QTC_ASSERT(m_client, return); QTC_ASSERT(m_client, return);
@@ -373,14 +371,14 @@ LanguageClientCompletionAssistProvider::LanguageClientCompletionAssistProvider(B
: m_client(client) : m_client(client)
{ } { }
TextEditor::IAssistProcessor *LanguageClientCompletionAssistProvider::createProcessor() const IAssistProcessor *LanguageClientCompletionAssistProvider::createProcessor() const
{ {
return new LanguageClientCompletionAssistProcessor(m_client); return new LanguageClientCompletionAssistProcessor(m_client);
} }
TextEditor::IAssistProvider::RunType LanguageClientCompletionAssistProvider::runType() const IAssistProvider::RunType LanguageClientCompletionAssistProvider::runType() const
{ {
return TextEditor::IAssistProvider::Asynchronous; return IAssistProvider::Asynchronous;
} }
int LanguageClientCompletionAssistProvider::activationCharSequenceLength() const int LanguageClientCompletionAssistProvider::activationCharSequenceLength() const