From 95d9eafc8a6bbd21f0bcde0274d2ec100d6f386b Mon Sep 17 00:00:00 2001 From: Alexis Murzeau Date: Sat, 9 May 2020 02:46:49 +0200 Subject: [PATCH] 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 --- .../languageclient/languageclientcompletionassist.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/languageclient/languageclientcompletionassist.cpp b/src/plugins/languageclient/languageclientcompletionassist.cpp index 8b5aa94dba1..3055092c064 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;