aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/languageclient
diff options
context:
space:
mode:
authorAlexis Murzeau <amubtdx@gmail.com>2020-05-09 02:46:49 +0200
committerAlexis Murzeau <amubtdx@gmail.com>2020-05-11 22:34:40 +0000
commit95d9eafc8a6bbd21f0bcde0274d2ec100d6f386b (patch)
treeb583b36de6d598107df6b31a523cbfd551027d11 /src/plugins/languageclient
parent3268e5f0bcab8a176100be30ba746c74cad55e44 (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.cpp11
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;