summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
author0x4448 <86135470+0x4448@users.noreply.github.com>2023-09-17 13:50:29 -0700
committer0x4448 <86135470+0x4448@users.noreply.github.com>2023-09-21 17:37:32 -0700
commit7ea4247c3d48d1b56d97ebb81949eb2cce2ce6f9 (patch)
tree2f46fbbe5c24e94c3108c3dafabffe893ce014f7 /modules
parentfe5b1c8d49313d63fbe91cb7cdf463e10fb86afa (diff)
downloadredot-engine-7ea4247c3d48d1b56d97ebb81949eb2cce2ce6f9.tar.gz
Omit quotes from completion if triggered with quote
Typing a single or double quote in an external editor triggers auto-completion. The returned CompletionItem should not include quotes since they're already in the editor. CompletionParams was missing context in to_json() and this is required to detect whether a quote was typed.
Diffstat (limited to 'modules')
-rw-r--r--modules/gdscript/language_server/gdscript_text_document.cpp9
-rw-r--r--modules/gdscript/language_server/godot_lsp.h11
2 files changed, 20 insertions, 0 deletions
diff --git a/modules/gdscript/language_server/gdscript_text_document.cpp b/modules/gdscript/language_server/gdscript_text_document.cpp
index 1e927f9f6e..d6779dc71c 100644
--- a/modules/gdscript/language_server/gdscript_text_document.cpp
+++ b/modules/gdscript/language_server/gdscript_text_document.cpp
@@ -346,6 +346,15 @@ Dictionary GDScriptTextDocument::resolve(const Dictionary &p_params) {
}
}
+ if (item.kind == lsp::CompletionItemKind::Method) {
+ bool is_trigger_character = params.context.triggerKind == lsp::CompletionTriggerKind::TriggerCharacter;
+ bool is_quote_character = params.context.triggerCharacter == "\"" || params.context.triggerCharacter == "'";
+
+ if (is_trigger_character && is_quote_character && item.insertText.is_quoted()) {
+ item.insertText = item.insertText.unquote();
+ }
+ }
+
return item.to_json(true);
}
diff --git a/modules/gdscript/language_server/godot_lsp.h b/modules/gdscript/language_server/godot_lsp.h
index 1ac4267c7b..e09adb74bd 100644
--- a/modules/gdscript/language_server/godot_lsp.h
+++ b/modules/gdscript/language_server/godot_lsp.h
@@ -1429,6 +1429,17 @@ struct CompletionParams : public TextDocumentPositionParams {
TextDocumentPositionParams::load(p_params);
context.load(p_params["context"]);
}
+
+ Dictionary to_json() {
+ Dictionary ctx;
+ ctx["triggerCharacter"] = context.triggerCharacter;
+ ctx["triggerKind"] = context.triggerKind;
+
+ Dictionary dict;
+ dict = TextDocumentPositionParams::to_json();
+ dict["context"] = ctx;
+ return dict;
+ }
};
/**