mirror of
https://github.com/godotengine/godot
synced 2024-09-16 00:16:52 +00:00
Use insertText from the internal autocompletion
* GDScriptLanguage::complete_code already adds parentheses to function calls, and does this a lot smarter than the language server right now. * Instead of the previous naive approach we now reuse the same logic as the internal editor. * For this to have any effect we also have to send the `insertText` field already during the completionRequest and not only during resolve.
This commit is contained in:
parent
bab2ad4d32
commit
bbb07ff8cb
|
@ -177,6 +177,7 @@ Array GDScriptTextDocument::completion(const Dictionary &p_params) {
|
||||||
lsp::CompletionItem item;
|
lsp::CompletionItem item;
|
||||||
item.label = option.display;
|
item.label = option.display;
|
||||||
item.data = request_data;
|
item.data = request_data;
|
||||||
|
item.insertText = option.insert_text;
|
||||||
|
|
||||||
switch (option.kind) {
|
switch (option.kind) {
|
||||||
case ScriptCodeCompletionOption::KIND_ENUM:
|
case ScriptCodeCompletionOption::KIND_ENUM:
|
||||||
|
@ -284,12 +285,7 @@ Dictionary GDScriptTextDocument::resolve(const Dictionary &p_params) {
|
||||||
item.documentation = symbol->render();
|
item.documentation = symbol->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((item.kind == lsp::CompletionItemKind::Method || item.kind == lsp::CompletionItemKind::Function) && !item.label.ends_with("):")) {
|
if (item.kind == lsp::CompletionItemKind::Event) {
|
||||||
item.insertText = item.label + "(";
|
|
||||||
if (symbol && symbol->children.is_empty()) {
|
|
||||||
item.insertText += ")";
|
|
||||||
}
|
|
||||||
} else if (item.kind == lsp::CompletionItemKind::Event) {
|
|
||||||
if (params.context.triggerKind == lsp::CompletionTriggerKind::TriggerCharacter && (params.context.triggerCharacter == "(")) {
|
if (params.context.triggerKind == lsp::CompletionTriggerKind::TriggerCharacter && (params.context.triggerCharacter == "(")) {
|
||||||
const String quote_style = EDITOR_GET("text_editor/completion/use_single_quotes") ? "'" : "\"";
|
const String quote_style = EDITOR_GET("text_editor/completion/use_single_quotes") ? "'" : "\"";
|
||||||
item.insertText = item.label.quote(quote_style);
|
item.insertText = item.label.quote(quote_style);
|
||||||
|
|
|
@ -1004,8 +1004,8 @@ struct CompletionItem {
|
||||||
dict["label"] = label;
|
dict["label"] = label;
|
||||||
dict["kind"] = kind;
|
dict["kind"] = kind;
|
||||||
dict["data"] = data;
|
dict["data"] = data;
|
||||||
if (resolved) {
|
|
||||||
dict["insertText"] = insertText;
|
dict["insertText"] = insertText;
|
||||||
|
if (resolved) {
|
||||||
dict["detail"] = detail;
|
dict["detail"] = detail;
|
||||||
dict["documentation"] = documentation.to_json();
|
dict["documentation"] = documentation.to_json();
|
||||||
dict["deprecated"] = deprecated;
|
dict["deprecated"] = deprecated;
|
||||||
|
|
Loading…
Reference in a new issue