diff options
author | Alexis Murzeau <amubtdx@gmail.com> | 2020-05-09 02:46:49 +0200 |
---|---|---|
committer | Alexis Murzeau <amubtdx@gmail.com> | 2020-05-11 22:34:40 +0000 |
commit | 95d9eafc8a6bbd21f0bcde0274d2ec100d6f386b (patch) | |
tree | b583b36de6d598107df6b31a523cbfd551027d11 /src/plugins/languageclient | |
parent | 3268e5f0bcab8a176100be30ba746c74cad55e44 (diff) |
LSP: CompletionRequest: set triggerCharacter when possible
When the completion request is triggered by an activation character,
set the triggerCharacter accordingly.
This can help the language server to propose more sensible items.
Detected while trying cmake language server. It was throwing an error
when triggerKind is TriggerCharacter and triggerCharacter is not present.
Change-Id: Ifde578e39f2eebfc5c6551f08985f4408f6c7933
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/languageclient')
-rw-r--r-- | src/plugins/languageclient/languageclientcompletionassist.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index 8b5aa94dba..3055092c06 100644 --- a/src/plugins/languageclient/languageclientcompletionassist.cpp +++ b/src/plugins/languageclient/languageclientcompletionassist.cpp @@ -318,9 +318,14 @@ IAssistProposal *LanguageClientCompletionAssistProcessor::perform(const AssistIn } CompletionRequest completionRequest; CompletionParams::CompletionContext context; - context.setTriggerKind(interface->reason() == ActivationCharacter - ? CompletionParams::TriggerCharacter - : CompletionParams::Invoked); + if (interface->reason() == ActivationCharacter) { + context.setTriggerKind(CompletionParams::TriggerCharacter); + QChar triggerCharacter = interface->characterAt(interface->position() - 1); + if (!triggerCharacter.isNull()) + context.setTriggerCharacter(triggerCharacter); + } else { + context.setTriggerKind(CompletionParams::Invoked); + } auto params = completionRequest.params().value_or(CompletionParams()); int line; int column; |