aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/languageclient/languageclientcompletionassist.cpp13
-rw-r--r--src/plugins/texteditor/codeassist/genericproposalwidget.cpp15
-rw-r--r--src/plugins/texteditor/codeassist/genericproposalwidget.h2
3 files changed, 16 insertions, 14 deletions
diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp
index afee00a5ac..23d6b3e3b2 100644
--- a/src/plugins/languageclient/languageclientcompletionassist.cpp
+++ b/src/plugins/languageclient/languageclientcompletionassist.cpp
@@ -285,11 +285,11 @@ public:
return static_cast<LanguageClientCompletionModel *>(model().data())->isComplete(prefix);
}
- void setProposal(IAssistProposal *proposal)
+ void setProposal(IAssistProposal *proposal, const QString &prefix)
{
if (!proposal)
return;
- updateModel(proposal->model());
+ updateModel(proposal->model(), prefix);
delete proposal;
}
@@ -303,7 +303,10 @@ public:
auto processor = m_provider->createProcessor(interface.get());
QTC_ASSERT(processor, return);
- processor->setAsyncCompletionAvailableHandler([this, processor](IAssistProposal *proposal) {
+ const QString prefix = interface->textAt(m_basePosition,
+ interface->position() - m_basePosition);
+
+ processor->setAsyncCompletionAvailableHandler([this, processor, prefix](IAssistProposal *proposal) {
QTC_ASSERT(processor == m_processor, return);
if (!processor->running()) {
// do not delete this processor directly since this function is called from within the processor
@@ -313,10 +316,10 @@ public:
Qt::QueuedConnection);
m_processor = nullptr;
}
- setProposal(proposal);
+ setProposal(proposal, prefix);
});
- setProposal(processor->start(std::move(interface)));
+ setProposal(processor->start(std::move(interface)), prefix);
if (processor->running())
m_processor = processor;
else
diff --git a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
index 9eb3fdcd37..bc00126dba 100644
--- a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
+++ b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp
@@ -392,7 +392,7 @@ void GenericProposalWidget::setIsSynchronized(bool isSync)
d->m_isSynchronized = isSync;
}
-void GenericProposalWidget::updateModel(ProposalModelPtr model)
+void GenericProposalWidget::updateModel(ProposalModelPtr model, const QString &prefix)
{
QString currentText;
if (d->m_explicitlySelected)
@@ -403,16 +403,15 @@ void GenericProposalWidget::updateModel(ProposalModelPtr model)
d->m_completionListView->setModel(new ModelAdapter(d->m_model, d->m_completionListView));
connect(d->m_completionListView->selectionModel(), &QItemSelectionModel::currentChanged,
&d->m_infoTimer, QOverload<>::of(&QTimer::start));
- int currentRow = -1;
if (!currentText.isEmpty()) {
- currentRow = d->m_model->indexOf(
+ const int currentRow = d->m_model->indexOf(
Utils::equal(&AssistProposalItemInterface::text, currentText));
+ if (currentRow < 0)
+ d->m_explicitlySelected = false;
+ else
+ d->m_completionListView->selectRow(currentRow);
}
- if (currentRow >= 0)
- d->m_completionListView->selectRow(currentRow);
- else
- d->m_explicitlySelected = false;
- updatePositionAndSize();
+ updateAndCheck(prefix);
}
void GenericProposalWidget::showProposal(const QString &prefix)
diff --git a/src/plugins/texteditor/codeassist/genericproposalwidget.h b/src/plugins/texteditor/codeassist/genericproposalwidget.h
index c38ccc9f47..6052677662 100644
--- a/src/plugins/texteditor/codeassist/genericproposalwidget.h
+++ b/src/plugins/texteditor/codeassist/genericproposalwidget.h
@@ -31,7 +31,7 @@ public:
void setDisplayRect(const QRect &rect) override;
void setIsSynchronized(bool isSync) override;
- void updateModel(ProposalModelPtr model);
+ void updateModel(ProposalModelPtr model, const QString &prefix);
void showProposal(const QString &prefix) override;
void filterProposal(const QString &prefix) override;