mirror of
https://github.com/godotengine/godot.git
synced 2024-11-10 14:12:51 +00:00
Merge pull request #93057 from HolonProduction/not-enough-code-paths
Autocompletion: Add support for string name option in more places
This commit is contained in:
commit
cd87b0bf84
@ -2787,9 +2787,9 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
|
|||||||
if (opt.is_quoted()) {
|
if (opt.is_quoted()) {
|
||||||
opt = opt.unquote().quote(quote_style);
|
opt = opt.unquote().quote(quote_style);
|
||||||
if (use_string_names && info.arguments.get(p_argidx).type == Variant::STRING_NAME) {
|
if (use_string_names && info.arguments.get(p_argidx).type == Variant::STRING_NAME) {
|
||||||
opt = opt.indent("&");
|
opt = "&" + opt;
|
||||||
} else if (use_node_paths && info.arguments.get(p_argidx).type == Variant::NODE_PATH) {
|
} else if (use_node_paths && info.arguments.get(p_argidx).type == Variant::NODE_PATH) {
|
||||||
opt = opt.indent("^");
|
opt = "^" + opt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ScriptLanguage::CodeCompletionOption option(opt, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
|
ScriptLanguage::CodeCompletionOption option(opt, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
|
||||||
@ -2824,7 +2824,11 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
|
|||||||
if (E.usage & (PROPERTY_USAGE_SUBGROUP | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_INTERNAL)) {
|
if (E.usage & (PROPERTY_USAGE_SUBGROUP | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_INTERNAL)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ScriptLanguage::CodeCompletionOption option(E.name.quote(quote_style), ScriptLanguage::CODE_COMPLETION_KIND_MEMBER, ScriptLanguage::CodeCompletionLocation::LOCATION_LOCAL + n);
|
String name = E.name.quote(quote_style);
|
||||||
|
if (use_node_paths) {
|
||||||
|
name = "^" + name;
|
||||||
|
}
|
||||||
|
ScriptLanguage::CodeCompletionOption option(name, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER, ScriptLanguage::CodeCompletionLocation::LOCATION_LOCAL + n);
|
||||||
r_result.insert(option.display, option);
|
r_result.insert(option.display, option);
|
||||||
}
|
}
|
||||||
script = script->get_base_script();
|
script = script->get_base_script();
|
||||||
@ -2838,7 +2842,11 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
|
|||||||
while (clss) {
|
while (clss) {
|
||||||
for (GDScriptParser::ClassNode::Member member : clss->members) {
|
for (GDScriptParser::ClassNode::Member member : clss->members) {
|
||||||
if (member.type == GDScriptParser::ClassNode::Member::VARIABLE) {
|
if (member.type == GDScriptParser::ClassNode::Member::VARIABLE) {
|
||||||
ScriptLanguage::CodeCompletionOption option(member.get_name().quote(quote_style), ScriptLanguage::CODE_COMPLETION_KIND_MEMBER, ScriptLanguage::CodeCompletionLocation::LOCATION_LOCAL + n);
|
String name = member.get_name().quote(quote_style);
|
||||||
|
if (use_node_paths) {
|
||||||
|
name = "^" + name;
|
||||||
|
}
|
||||||
|
ScriptLanguage::CodeCompletionOption option(name, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER, ScriptLanguage::CodeCompletionLocation::LOCATION_LOCAL + n);
|
||||||
r_result.insert(option.display, option);
|
r_result.insert(option.display, option);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2861,7 +2869,11 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
|
|||||||
if (E.usage & (PROPERTY_USAGE_SUBGROUP | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_INTERNAL)) {
|
if (E.usage & (PROPERTY_USAGE_SUBGROUP | PROPERTY_USAGE_GROUP | PROPERTY_USAGE_CATEGORY | PROPERTY_USAGE_INTERNAL)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ScriptLanguage::CodeCompletionOption option(E.name.quote(quote_style), ScriptLanguage::CODE_COMPLETION_KIND_MEMBER);
|
String name = E.name.quote(quote_style);
|
||||||
|
if (use_node_paths) {
|
||||||
|
name = "^" + name;
|
||||||
|
}
|
||||||
|
ScriptLanguage::CodeCompletionOption option(name, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER);
|
||||||
r_result.insert(option.display, option);
|
r_result.insert(option.display, option);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2877,8 +2889,11 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String name = s.get_slice("/", 1);
|
String name = s.get_slice("/", 1);
|
||||||
ScriptLanguage::CodeCompletionOption option("/root/" + name, ScriptLanguage::CODE_COMPLETION_KIND_NODE_PATH);
|
String path = ("/root/" + name).quote(quote_style);
|
||||||
option.insert_text = option.display.quote(quote_style);
|
if (use_node_paths) {
|
||||||
|
path = "^" + path;
|
||||||
|
}
|
||||||
|
ScriptLanguage::CodeCompletionOption option(path, ScriptLanguage::CODE_COMPLETION_KIND_NODE_PATH);
|
||||||
r_result.insert(option.display, option);
|
r_result.insert(option.display, option);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2892,9 +2907,11 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
|
|||||||
if (!s.begins_with("input/")) {
|
if (!s.begins_with("input/")) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String name = s.get_slice("/", 1);
|
String name = s.get_slice("/", 1).quote(quote_style);
|
||||||
|
if (use_string_names) {
|
||||||
|
name = "&" + name;
|
||||||
|
}
|
||||||
ScriptLanguage::CodeCompletionOption option(name, ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
|
ScriptLanguage::CodeCompletionOption option(name, ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
|
||||||
option.insert_text = option.display.quote(quote_style);
|
|
||||||
r_result.insert(option.display, option);
|
r_result.insert(option.display, option);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,8 @@ The config file contains two section:
|
|||||||
|
|
||||||
- `cs: boolean = false`: If `true`, the test will be skipped when running a non C# build.
|
- `cs: boolean = false`: If `true`, the test will be skipped when running a non C# build.
|
||||||
- `use_single_quotes: boolean = false`: Configures the corresponding editor setting for the test.
|
- `use_single_quotes: boolean = false`: Configures the corresponding editor setting for the test.
|
||||||
|
- `add_node_path_literals: boolean = false`: Configures the corresponding editor setting for the test.
|
||||||
|
- `add_string_name_literals: boolean = false`: Configures the corresponding editor setting for the test.
|
||||||
- `scene: String`: Allows to specify a scene which is opened while autocompletion is performed. If this is not set the test runner will search for a `.tscn` file with the same basename as the GDScript file. If that isn't found either, autocompletion will behave as if no scene was opened.
|
- `scene: String`: Allows to specify a scene which is opened while autocompletion is performed. If this is not set the test runner will search for a `.tscn` file with the same basename as the GDScript file. If that isn't found either, autocompletion will behave as if no scene was opened.
|
||||||
- `node_path: String`: The node path of the node which holds the current script inside of the scene. Defaults to the scene root node.
|
- `node_path: String`: The node path of the node which holds the current script inside of the scene. Defaults to the scene root node.
|
||||||
|
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
[input]
|
||||||
|
add_node_path_literals=true
|
||||||
|
[output]
|
||||||
|
include=[
|
||||||
|
{"insert_text": "^\"property_of_a\""},
|
||||||
|
{"insert_text": "^\"name\""},
|
||||||
|
]
|
||||||
|
exclude=[
|
||||||
|
{"insert_text": "\"property_of_a\""},
|
||||||
|
{"insert_text": "\"name\""},
|
||||||
|
]
|
@ -0,0 +1,8 @@
|
|||||||
|
extends Node
|
||||||
|
|
||||||
|
const A = preload("res://completion/class_a.notest.gd")
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
var a := A.new()
|
||||||
|
var tween := get_tree().create_tween()
|
||||||
|
tween.tween_property(a, ➡)
|
@ -0,0 +1,9 @@
|
|||||||
|
[input]
|
||||||
|
add_string_name_literals=true
|
||||||
|
[output]
|
||||||
|
include=[
|
||||||
|
{"insert_text": "&\"test_input_action\""},
|
||||||
|
]
|
||||||
|
exclude=[
|
||||||
|
{"insert_text": "\"test_input_action\""},
|
||||||
|
]
|
@ -0,0 +1,3 @@
|
|||||||
|
func _input(event: InputEvent) -> void:
|
||||||
|
event.is_action_pressed(➡)
|
||||||
|
pass
|
@ -0,0 +1,11 @@
|
|||||||
|
[input]
|
||||||
|
add_node_path_literals=false
|
||||||
|
[output]
|
||||||
|
include=[
|
||||||
|
{"insert_text": "\"property_of_a\""},
|
||||||
|
{"insert_text": "\"name\""},
|
||||||
|
]
|
||||||
|
exclude=[
|
||||||
|
{"insert_text": "^\"property_of_a\""},
|
||||||
|
{"insert_text": "^\"name\""},
|
||||||
|
]
|
@ -0,0 +1,8 @@
|
|||||||
|
extends Node
|
||||||
|
|
||||||
|
const A = preload("res://completion/class_a.notest.gd")
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
var a := A.new()
|
||||||
|
var tween := get_tree().create_tween()
|
||||||
|
tween.tween_property(a, ➡)
|
@ -0,0 +1,9 @@
|
|||||||
|
[input]
|
||||||
|
add_string_name_literals=false
|
||||||
|
[output]
|
||||||
|
include=[
|
||||||
|
{"insert_text": "\"test_input_action\""},
|
||||||
|
]
|
||||||
|
exclude=[
|
||||||
|
{"insert_text": "&\"test_input_action\""},
|
||||||
|
]
|
@ -0,0 +1,3 @@
|
|||||||
|
func _input(event: InputEvent) -> void:
|
||||||
|
event.is_action_pressed(➡)
|
||||||
|
pass
|
@ -8,3 +8,10 @@ config_version=5
|
|||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="GDScript Integration Test Suite"
|
config/name="GDScript Integration Test Suite"
|
||||||
|
|
||||||
|
[input]
|
||||||
|
|
||||||
|
test_input_action={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": []
|
||||||
|
}
|
||||||
|
@ -130,6 +130,8 @@ static void test_directory(const String &p_dir) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
EditorSettings::get_singleton()->set_setting("text_editor/completion/use_single_quotes", conf.get_value("input", "use_single_quotes", false));
|
EditorSettings::get_singleton()->set_setting("text_editor/completion/use_single_quotes", conf.get_value("input", "use_single_quotes", false));
|
||||||
|
EditorSettings::get_singleton()->set_setting("text_editor/completion/add_node_path_literals", conf.get_value("input", "add_node_path_literals", false));
|
||||||
|
EditorSettings::get_singleton()->set_setting("text_editor/completion/add_string_name_literals", conf.get_value("input", "add_string_name_literals", false));
|
||||||
|
|
||||||
List<Dictionary> include;
|
List<Dictionary> include;
|
||||||
to_dict_list(conf.get_value("output", "include", Array()), include);
|
to_dict_list(conf.get_value("output", "include", Array()), include);
|
||||||
|
Loading…
Reference in New Issue
Block a user