mirror of
https://github.com/godotengine/godot.git
synced 2025-10-20 00:13:30 +00:00
Optimize SceneTree's change_scene_to_file
autocompletion
This commit is contained in:
parent
8e951fd0a9
commit
7b3e1a5bde
2 changed files with 26 additions and 41 deletions
|
@ -828,17 +828,21 @@ static String _make_arguments_hint(const GDScriptParser::FunctionNode *p_functio
|
|||
return arghint;
|
||||
}
|
||||
|
||||
static void _get_directory_contents(EditorFileSystemDirectory *p_dir, HashMap<String, ScriptLanguage::CodeCompletionOption> &r_list) {
|
||||
static void _get_directory_contents(EditorFileSystemDirectory *p_dir, HashMap<String, ScriptLanguage::CodeCompletionOption> &r_list, const StringName &p_required_type = StringName()) {
|
||||
const String quote_style = EDITOR_GET("text_editor/completion/use_single_quotes") ? "'" : "\"";
|
||||
const bool requires_type = p_required_type;
|
||||
|
||||
for (int i = 0; i < p_dir->get_file_count(); i++) {
|
||||
if (requires_type && !ClassDB::is_parent_class(p_dir->get_file_type(i), p_required_type)) {
|
||||
continue;
|
||||
}
|
||||
ScriptLanguage::CodeCompletionOption option(p_dir->get_file_path(i), ScriptLanguage::CODE_COMPLETION_KIND_FILE_PATH);
|
||||
option.insert_text = option.display.quote(quote_style);
|
||||
r_list.insert(option.display, option);
|
||||
}
|
||||
|
||||
for (int i = 0; i < p_dir->get_subdir_count(); i++) {
|
||||
_get_directory_contents(p_dir->get_subdir(i), r_list);
|
||||
_get_directory_contents(p_dir->get_subdir(i), r_list, p_required_type);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2803,6 +2807,16 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
|
|||
r_result.insert(option.display, option);
|
||||
}
|
||||
}
|
||||
if (EDITOR_GET("text_editor/completion/complete_file_paths")) {
|
||||
if (p_argidx == 0 && p_method == SNAME("change_scene_to_file") && ClassDB::is_parent_class(class_name, SNAME("SceneTree"))) {
|
||||
HashMap<String, ScriptLanguage::CodeCompletionOption> list;
|
||||
_get_directory_contents(EditorFileSystem::get_singleton()->get_filesystem(), list, SNAME("PackedScene"));
|
||||
for (const KeyValue<String, ScriptLanguage::CodeCompletionOption> &key_value_pair : list) {
|
||||
ScriptLanguage::CodeCompletionOption option = key_value_pair.value;
|
||||
r_result.insert(option.display, option);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
base_type.kind = GDScriptParser::DataType::UNRESOLVED;
|
||||
} break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue