Skip to content

Commit ae853e1

Browse files
Improve GDScript autocompletion for methods
1 parent f952bfe commit ae853e1

File tree

52 files changed

+126
-113
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+126
-113
lines changed

modules/gdscript/gdscript_editor.cpp

+17-4
Original file line numberDiff line numberDiff line change
@@ -1139,10 +1139,12 @@ static void _find_identifiers_in_class(const GDScriptParser::ClassNode *p_class,
11391139
continue;
11401140
}
11411141
option = ScriptLanguage::CodeCompletionOption(member.function->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION, location);
1142-
if (member.function->parameters.size() > 0) {
1142+
if (member.function->parameters.size() > 0 || (member.function->info.flags & METHOD_FLAG_VARARG)) {
11431143
option.insert_text += "(";
1144+
option.display += U"(\u2026)";
11441145
} else {
11451146
option.insert_text += "()";
1147+
option.display += "()";
11461148
}
11471149
break;
11481150
case GDScriptParser::ClassNode::Member::SIGNAL:
@@ -1184,6 +1186,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
11841186
if (!p_types_only && base_type.is_meta_type && base_type.kind != GDScriptParser::DataType::BUILTIN && base_type.kind != GDScriptParser::DataType::ENUM) {
11851187
ScriptLanguage::CodeCompletionOption option("new", ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION, ScriptLanguage::LOCATION_LOCAL);
11861188
option.insert_text += "(";
1189+
option.display += U"(\u2026)";
11871190
r_result.insert(option.display, option);
11881191
}
11891192

@@ -1241,10 +1244,12 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
12411244
}
12421245
int location = p_recursion_depth + _get_method_location(scr->get_class_name(), E.name);
12431246
ScriptLanguage::CodeCompletionOption option(E.name, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION, location);
1244-
if (E.arguments.size()) {
1247+
if (E.arguments.size() || (E.flags & METHOD_FLAG_VARARG)) {
12451248
option.insert_text += "(";
1249+
option.display += U"(\u2026)";
12461250
} else {
12471251
option.insert_text += "()";
1252+
option.display += "()";
12481253
}
12491254
r_result.insert(option.display, option);
12501255
}
@@ -1327,10 +1332,12 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
13271332
}
13281333
int location = p_recursion_depth + _get_method_location(type, E.name);
13291334
ScriptLanguage::CodeCompletionOption option(E.name, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION, location);
1330-
if (E.arguments.size()) {
1335+
if (E.arguments.size() || (E.flags & METHOD_FLAG_VARARG)) {
13311336
option.insert_text += "(";
1337+
option.display += U"(\u2026)";
13321338
} else {
13331339
option.insert_text += "()";
1340+
option.display += "()";
13341341
}
13351342
r_result.insert(option.display, option);
13361343
}
@@ -1398,10 +1405,12 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
13981405
continue;
13991406
}
14001407
ScriptLanguage::CodeCompletionOption option(E.name, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION, location);
1401-
if (E.arguments.size()) {
1408+
if (E.arguments.size() || (E.flags & METHOD_FLAG_VARARG)) {
14021409
option.insert_text += "(";
1410+
option.display += U"(\u2026)";
14031411
} else {
14041412
option.insert_text += "()";
1413+
option.display += "()";
14051414
}
14061415
r_result.insert(option.display, option);
14071416
}
@@ -1433,8 +1442,10 @@ static void _find_identifiers(const GDScriptParser::CompletionContext &p_context
14331442
ScriptLanguage::CodeCompletionOption option(String(E), ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
14341443
if (function.arguments.size() || (function.flags & METHOD_FLAG_VARARG)) {
14351444
option.insert_text += "(";
1445+
option.display += U"(\u2026)";
14361446
} else {
14371447
option.insert_text += "()";
1448+
option.display += "()";
14381449
}
14391450
r_result.insert(option.display, option);
14401451
}
@@ -1481,6 +1492,7 @@ static void _find_identifiers(const GDScriptParser::CompletionContext &p_context
14811492
while (*kwa) {
14821493
ScriptLanguage::CodeCompletionOption option(*kwa, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
14831494
option.insert_text += "(";
1495+
option.display += U"(\u2026)";
14841496
r_result.insert(option.display, option);
14851497
kwa++;
14861498
}
@@ -1491,6 +1503,7 @@ static void _find_identifiers(const GDScriptParser::CompletionContext &p_context
14911503
for (List<StringName>::Element *E = utility_func_names.front(); E; E = E->next()) {
14921504
ScriptLanguage::CodeCompletionOption option(E->get(), ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
14931505
option.insert_text += "(";
1506+
option.display += U"(\u2026)"; // As all utility functions contain an argument or more, this is hardcoded here.
14941507
r_result.insert(option.display, option);
14951508
}
14961509

modules/gdscript/tests/scripts/completion/assignment_options/enum_attribute.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[output]
22
include=[
3-
{"display": "new"},
3+
{"display": "new(…)"},
44
{"display": "SIZE_EXPAND"},
55
{"display": "SIZE_EXPAND_FILL"},
66
{"display": "SIZE_FILL"},

modules/gdscript/tests/scripts/completion/assignment_options/enum_attribute_identifier.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[output]
22
include=[
3-
{"display": "new"},
3+
{"display": "new(…)"},
44
{"display": "SIZE_EXPAND"},
55
{"display": "SIZE_EXPAND_FILL"},
66
{"display": "SIZE_FILL"},

modules/gdscript/tests/scripts/completion/common/identifiers_in_call.cfg

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@ scene="res://completion/get_node/get_node.tscn"
22
[output]
33
include=[
44
; Node
5-
{"display": "add_child"},
5+
{"display": "add_child(…)"},
66
{"display": "owner"},
77
{"display": "child_entered_tree"},
88

99
; GDScript: class_a.notest.gd
1010
{"display": "property_of_a"},
11-
{"display": "func_of_a"},
11+
{"display": "func_of_a()"},
1212
{"display": "signal_of_a"},
1313

1414
; GDScript: identifiers.gd
1515
{"display": "test_signal_1"},
1616
{"display": "test_signal_2"},
1717
{"display": "test_var_1"},
1818
{"display": "test_var_2"},
19-
{"display": "test_func_1"},
20-
{"display": "test_func_2"},
19+
{"display": "test_func_1(…)"},
20+
{"display": "test_func_2(…)"},
2121
{"display": "test_parameter_1"},
2222
{"display": "test_parameter_2"},
2323
{"display": "local_test_var_1"},

modules/gdscript/tests/scripts/completion/common/identifiers_in_function_body.cfg

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@ scene="res://completion/get_node/get_node.tscn"
22
[output]
33
include=[
44
; Node
5-
{"display": "add_child"},
5+
{"display": "add_child(…)"},
66
{"display": "owner"},
77
{"display": "child_entered_tree"},
88

99
; GDScript: class_a.notest.gd
1010
{"display": "property_of_a"},
11-
{"display": "func_of_a"},
11+
{"display": "func_of_a()"},
1212
{"display": "signal_of_a"},
1313

1414
; GDScript: identifiers.gd
1515
{"display": "test_signal_1"},
1616
{"display": "test_signal_2"},
1717
{"display": "test_var_1"},
1818
{"display": "test_var_2"},
19-
{"display": "test_func_1"},
20-
{"display": "test_func_2"},
19+
{"display": "test_func_1(…)"},
20+
{"display": "test_func_2(…)"},
2121
{"display": "test_parameter_1"},
2222
{"display": "test_parameter_2"},
2323
{"display": "local_test_var_1"},

modules/gdscript/tests/scripts/completion/common/identifiers_in_unclosed_call.cfg

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@ scene="res://completion/get_node/get_node.tscn"
22
[output]
33
include=[
44
; Node
5-
{"display": "add_child"},
5+
{"display": "add_child(…)"},
66
{"display": "owner"},
77
{"display": "child_entered_tree"},
88

99
; GDScript: class_a.notest.gd
1010
{"display": "property_of_a"},
11-
{"display": "func_of_a"},
11+
{"display": "func_of_a()"},
1212
{"display": "signal_of_a"},
1313

1414
; GDScript: identifiers.gd
1515
{"display": "test_signal_1"},
1616
{"display": "test_signal_2"},
1717
{"display": "test_var_1"},
1818
{"display": "test_var_2"},
19-
{"display": "test_func_1"},
20-
{"display": "test_func_2"},
19+
{"display": "test_func_1(…)"},
20+
{"display": "test_func_2(…)"},
2121
{"display": "test_parameter_1"},
2222
{"display": "test_parameter_2"},
2323
{"display": "local_test_var_1"},

modules/gdscript/tests/scripts/completion/common/no_completion_in_string.cfg

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@ scene="res://completion/get_node/get_node.tscn"
22
[output]
33
exclude=[
44
; Node
5-
{"display": "add_child"},
5+
{"display": "add_child(…)"},
66
{"display": "owner"},
77
{"display": "child_entered_tree"},
8-
{"display": "add_child"},
8+
{"display": "add_child(…)"},
99

1010
; GDScript: class_a.notest.gd
1111
{"display": "property_of_a"},
12-
{"display": "func_of_a"},
12+
{"display": "func_of_a()"},
1313
{"display": "signal_of_a"},
1414

1515
; GDScript: no_completion_in_string.gd
1616
{"display": "test_signal_1"},
1717
{"display": "test_signal_2"},
1818
{"display": "test_var_1"},
1919
{"display": "test_var_2"},
20-
{"display": "test_func_1"},
21-
{"display": "test_func_2"},
20+
{"display": "test_func_1(…)"},
21+
{"display": "test_func_2(…)"},
2222
{"display": "test_parameter_1"},
2323
{"display": "test_parameter_2"},
2424
{"display": "local_test_var_1"},

modules/gdscript/tests/scripts/completion/common/self.cfg

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@ scene="res://completion/get_node/get_node.tscn"
22
[output]
33
include=[
44
; Node
5-
{"display": "add_child"},
5+
{"display": "add_child(…)"},
66
{"display": "owner"},
77
{"display": "child_entered_tree"},
88

99
; GDScript: class_a.notest.gd
1010
{"display": "property_of_a"},
11-
{"display": "func_of_a"},
11+
{"display": "func_of_a()"},
1212
{"display": "signal_of_a"},
1313

1414
; GDScript: self.gd
1515
{"display": "test_signal_1"},
1616
{"display": "test_signal_2"},
1717
{"display": "test_var_1"},
1818
{"display": "test_var_2"},
19-
{"display": "test_func_1"},
20-
{"display": "test_func_2"},
19+
{"display": "test_func_1(…)"},
20+
{"display": "test_func_2(…)"},
2121
]
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[output]
22
include=[
33
; Node
4-
{"display": "add_child"},
4+
{"display": "add_child(…)"},
55
{"display": "owner"},
66
{"display": "child_entered_tree"},
77
]
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[output]
22
include=[
33
; Node
4-
{"display": "add_child"},
4+
{"display": "add_child(…)"},
55
{"display": "owner"},
66
{"display": "child_entered_tree"},
77
]

modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_class_scene.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ scene="res://completion/get_node/get_node.tscn"
33
[output]
44
include=[
55
; Node
6-
{"display": "add_child"},
6+
{"display": "add_child(…)"},
77
{"display": "owner"},
88
{"display": "child_entered_tree"},
99

1010
; GDScript: class_a.notest.gd
1111
{"display": "property_of_a"},
12-
{"display": "func_of_a"},
12+
{"display": "func_of_a()"},
1313
{"display": "signal_of_a"},
1414
]

modules/gdscript/tests/scripts/completion/get_node/literal_scene/dollar_native_scene.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ scene="res://completion/get_node/get_node.tscn"
33
[output]
44
include=[
55
; Node
6-
{"display": "add_child"},
6+
{"display": "add_child(…)"},
77
{"display": "owner"},
88
{"display": "child_entered_tree"},
99

1010
; AnimationPlayer
1111
{"display": "autoplay"},
12-
{"display": "play"},
12+
{"display": "play(…)"},
1313
{"display": "animation_changed"},
1414
]

modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_class_scene.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ scene="res://completion/get_node/get_node.tscn"
33
[output]
44
include=[
55
; Node
6-
{"display": "add_child"},
6+
{"display": "add_child(…)"},
77
{"display": "owner"},
88
{"display": "child_entered_tree"},
99

1010
; GDScript: class_a.notest.gd
1111
{"display": "property_of_a"},
12-
{"display": "func_of_a"},
12+
{"display": "func_of_a()"},
1313
{"display": "signal_of_a"},
1414
]

modules/gdscript/tests/scripts/completion/get_node/literal_scene/percent_native_scene.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ scene="res://completion/get_node/get_node.tscn"
33
[output]
44
include=[
55
; Node
6-
{"display": "add_child"},
6+
{"display": "add_child(…)"},
77
{"display": "owner"},
88
{"display": "child_entered_tree"},
99

1010
; AnimationPlayer
1111
{"display": "autoplay"},
12-
{"display": "play"},
12+
{"display": "play(…)"},
1313
{"display": "animation_changed"},
1414
]
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[output]
22
include=[
33
; Node
4-
{"display": "add_child"},
4+
{"display": "add_child(…)"},
55
{"display": "owner"},
66
{"display": "child_entered_tree"},
77
]
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[output]
22
include=[
33
; Node
4-
{"display": "add_child"},
4+
{"display": "add_child(…)"},
55
{"display": "owner"},
66
{"display": "child_entered_tree"},
77
]

modules/gdscript/tests/scripts/completion/get_node/local_infered_scene/class_local_infered_scene.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ scene="res://completion/get_node/get_node.tscn"
33
[output]
44
include=[
55
; Node
6-
{"display": "add_child"},
6+
{"display": "add_child(…)"},
77
{"display": "owner"},
88
{"display": "child_entered_tree"},
99

1010
; GDScript: class_a.notest.gd
1111
{"display": "property_of_a"},
12-
{"display": "func_of_a"},
12+
{"display": "func_of_a()"},
1313
{"display": "signal_of_a"},
1414
]

modules/gdscript/tests/scripts/completion/get_node/local_infered_scene/native_local_infered_scene.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ scene="res://completion/get_node/get_node.tscn"
33
[output]
44
include=[
55
; Node
6-
{"display": "add_child"},
6+
{"display": "add_child(…)"},
77
{"display": "owner"},
88
{"display": "child_entered_tree"},
99

1010
; AnimationPlayer
1111
{"display": "autoplay"},
12-
{"display": "play"},
12+
{"display": "play(…)"},
1313
{"display": "animation_changed"},
1414
]

modules/gdscript/tests/scripts/completion/get_node/local_scene/class_local_scene.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ scene="res://completion/get_node/get_node.tscn"
33
[output]
44
include=[
55
; Node
6-
{"display": "add_child"},
6+
{"display": "add_child(…)"},
77
{"display": "owner"},
88
{"display": "child_entered_tree"},
99

1010
; GDScript: class_a.notest.gd
1111
{"display": "property_of_a"},
12-
{"display": "func_of_a"},
12+
{"display": "func_of_a()"},
1313
{"display": "signal_of_a"},
1414
]

modules/gdscript/tests/scripts/completion/get_node/local_scene/native_local_scene.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ scene="res://completion/get_node/get_node.tscn"
33
[output]
44
include=[
55
; Node
6-
{"display": "add_child"},
6+
{"display": "add_child(…)"},
77
{"display": "owner"},
88
{"display": "child_entered_tree"},
99

1010
; AnimationPlayer
1111
{"display": "autoplay"},
12-
{"display": "play"},
12+
{"display": "play(…)"},
1313
{"display": "animation_changed"},
1414
]

0 commit comments

Comments
 (0)