You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Merge pull request #37293 from Janglee123/ctrl-click-improvements
Improved go-to definition (Ctrl + Click)
This commit is contained in:
@@ -978,6 +978,26 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c
|
||||
emit_signal("go_to_help", "class_global:" + result.class_name + ":" + result.class_member);
|
||||
} break;
|
||||
}
|
||||
} else if (ProjectSettings::get_singleton()->has_setting("autoload/" + p_symbol)) {
|
||||
//check for Autoload scenes
|
||||
String path = ProjectSettings::get_singleton()->get("autoload/" + p_symbol);
|
||||
if (path.begins_with("*")) {
|
||||
path = path.substr(1, path.length());
|
||||
EditorNode::get_singleton()->load_scene(path);
|
||||
}
|
||||
} else if (p_symbol.is_rel_path()) {
|
||||
// Every symbol other than absolute path is relative path so keep this condition at last.
|
||||
String path = _get_absolute_path(p_symbol);
|
||||
if (FileAccess::exists(path)) {
|
||||
List<String> scene_extensions;
|
||||
ResourceLoader::get_recognized_extensions_for_type("PackedScene", &scene_extensions);
|
||||
|
||||
if (scene_extensions.find(path.get_extension())) {
|
||||
EditorNode::get_singleton()->load_scene(path);
|
||||
} else {
|
||||
EditorNode::get_singleton()->load_resource(path);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -991,13 +1011,28 @@ void ScriptTextEditor::_validate_symbol(const String &p_symbol) {
|
||||
}
|
||||
|
||||
ScriptLanguage::LookupResult result;
|
||||
if (ScriptServer::is_global_class(p_symbol) || p_symbol.is_resource_file() || script->get_language()->lookup_code(code_editor->get_text_edit()->get_text_for_lookup_completion(), p_symbol, script->get_path(), base, result) == OK) {
|
||||
if (ScriptServer::is_global_class(p_symbol) || p_symbol.is_resource_file() || script->get_language()->lookup_code(code_editor->get_text_edit()->get_text_for_lookup_completion(), p_symbol, script->get_path(), base, result) == OK || ProjectSettings::get_singleton()->has_setting("autoload/" + p_symbol)) {
|
||||
text_edit->set_highlighted_word(p_symbol);
|
||||
} else if (p_symbol.is_rel_path()) {
|
||||
|
||||
String path = _get_absolute_path(p_symbol);
|
||||
if (FileAccess::exists(path)) {
|
||||
text_edit->set_highlighted_word(p_symbol);
|
||||
} else {
|
||||
text_edit->set_highlighted_word(String());
|
||||
}
|
||||
|
||||
} else {
|
||||
text_edit->set_highlighted_word(String());
|
||||
}
|
||||
}
|
||||
|
||||
String ScriptTextEditor::_get_absolute_path(const String &rel_path) {
|
||||
String base_path = script->get_path().get_base_dir();
|
||||
String path = base_path.plus_file(rel_path);
|
||||
return path.replace("///", "//").simplify_path();
|
||||
}
|
||||
|
||||
void ScriptTextEditor::update_toggle_scripts_button() {
|
||||
if (code_editor != nullptr) {
|
||||
code_editor->update_toggle_scripts_button();
|
||||
|
||||
Reference in New Issue
Block a user