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>
This commit is contained in:
Alexis Murzeau
2020-05-09 02:46:49 +02:00
parent 3268e5f0bc
commit 95d9eafc8a

View File

@@ -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;