diff options
author | David Schulz <david.schulz@qt.io> | 2022-07-08 13:07:48 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2022-07-11 12:15:09 +0000 |
commit | 13af74a4e8e5603e53d7af1cb8b0502193a3359a (patch) | |
tree | 3ef2fb889eb3088f3f1ecf0bafc384c51bf0b5ca /src/plugins | |
parent | 8953be1d3fb5520ea7d1b8fc842af1b584ee1a16 (diff) | |
download | qt-creator-13af74a4e8e5603e53d7af1cb8b0502193a3359a.tar.gz |
LanguageClient: remove fragile flag from lsp proposals
Those proposals are not fragile anymore since they reuse the old
completion widget. This fixes vanishing of none idle editor completions
on backspace if there are less than 3 characters to complete.
Additionally this removes the double completion request if there are
more than 3 characters typed in.
Change-Id: Id47d341adf954dfaaaeb70c17f6774ba38cc8bdf
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/languageclient/languageclientcompletionassist.cpp | 1 | ||||
-rw-r--r-- | src/plugins/texteditor/codeassist/codeassistant.cpp | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index 0ab76a10c0..baac3b007e 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.cpp +++ b/src/plugins/languageclient/languageclientcompletionassist.cpp @@ -447,7 +447,6 @@ void LanguageClientCompletionAssistProcessor::handleCompletionResponse( model); proposal->m_document = m_document; proposal->m_pos = m_pos; - proposal->setFragile(true); proposal->setSupportsPrefix(false); setAsyncProposalAvailable(proposal); m_client->removeAssistProcessor(this); diff --git a/src/plugins/texteditor/codeassist/codeassistant.cpp b/src/plugins/texteditor/codeassist/codeassistant.cpp index 11434f83f4..6613042c52 100644 --- a/src/plugins/texteditor/codeassist/codeassistant.cpp +++ b/src/plugins/texteditor/codeassist/codeassistant.cpp @@ -155,7 +155,8 @@ void CodeAssistantPrivate::invoke(AssistKind kind, IAssistProvider *provider) stopAutomaticProposalTimer(); - if (isDisplayingProposal() && m_assistKind == kind && !m_proposal->isFragile()) { + if (isDisplayingProposal() && m_assistKind == kind && !m_proposal->isFragile() + && m_proposal->supportsPrefix()) { m_proposalWidget->setReason(ExplicitlyInvoked); m_proposalWidget->updateProposal(m_editorWidget->textAt( m_proposal->basePosition(), @@ -324,8 +325,10 @@ void CodeAssistantPrivate::displayProposal(IAssistProposal *newProposal, AssistR // TODO: The proposal should own the model until someone takes it explicitly away. QScopedPointer<IAssistProposal> proposalCandidate(newProposal); - if (isDisplayingProposal() && !m_proposal->isFragile()) + if (isDisplayingProposal() && !m_proposal->isFragile() + && !m_proposalWidget->supportsModelUpdate(proposalCandidate->id())) { return; + } int basePosition = proposalCandidate->basePosition(); if (m_editorWidget->position() < basePosition) { |