You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-06 12:20:30 +00:00
Scripting: Add script documentation cache to project
This PR adds a script documentation cache in the project folder. It is loaded at alongside native documentation caches. This makes scripts fully accessible through Search Help, including their members, etc, right from project start, without having to compile every single script. Co-authored-by: Hilderin <81109165+Hilderin@users.noreply.github.com>
This commit is contained in:
@@ -2297,39 +2297,9 @@ void ScriptEditor::_update_script_names() {
|
||||
sedata.push_back(sd);
|
||||
}
|
||||
|
||||
Vector<String> disambiguated_script_names;
|
||||
Vector<String> full_script_paths;
|
||||
for (int j = 0; j < sedata.size(); j++) {
|
||||
String name = sedata[j].name.replace("(*)", "");
|
||||
ScriptListName script_display = (ScriptListName)(int)EDITOR_GET("text_editor/script_list/list_script_names_as");
|
||||
switch (script_display) {
|
||||
case DISPLAY_NAME: {
|
||||
name = name.get_file();
|
||||
} break;
|
||||
case DISPLAY_DIR_AND_NAME: {
|
||||
name = name.get_base_dir().get_file().path_join(name.get_file());
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
disambiguated_script_names.append(name);
|
||||
full_script_paths.append(sedata[j].tooltip);
|
||||
}
|
||||
|
||||
EditorNode::disambiguate_filenames(full_script_paths, disambiguated_script_names);
|
||||
|
||||
for (int j = 0; j < sedata.size(); j++) {
|
||||
if (sedata[j].name.ends_with("(*)")) {
|
||||
sedata.write[j].name = disambiguated_script_names[j] + "(*)";
|
||||
} else {
|
||||
sedata.write[j].name = disambiguated_script_names[j];
|
||||
}
|
||||
}
|
||||
|
||||
EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_tab_control(i));
|
||||
if (eh) {
|
||||
String name = eh->get_class();
|
||||
if (eh && !eh->get_class().is_empty()) {
|
||||
String name = eh->get_class().unquote();
|
||||
Ref<Texture2D> icon = get_editor_theme_icon(SNAME("Help"));
|
||||
String tooltip = vformat(TTR("%s Class Reference"), name);
|
||||
|
||||
@@ -2347,6 +2317,36 @@ void ScriptEditor::_update_script_names() {
|
||||
}
|
||||
}
|
||||
|
||||
Vector<String> disambiguated_script_names;
|
||||
Vector<String> full_script_paths;
|
||||
for (int j = 0; j < sedata.size(); j++) {
|
||||
String name = sedata[j].name.replace("(*)", "");
|
||||
ScriptListName script_display = (ScriptListName)(int)EDITOR_GET("text_editor/script_list/list_script_names_as");
|
||||
switch (script_display) {
|
||||
case DISPLAY_NAME: {
|
||||
name = name.get_file();
|
||||
} break;
|
||||
case DISPLAY_DIR_AND_NAME: {
|
||||
name = name.get_base_dir().get_file().path_join(name.get_file());
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
disambiguated_script_names.append(name);
|
||||
full_script_paths.append(sedata[j].tooltip);
|
||||
}
|
||||
|
||||
EditorNode::disambiguate_filenames(full_script_paths, disambiguated_script_names);
|
||||
|
||||
for (int j = 0; j < sedata.size(); j++) {
|
||||
if (sedata[j].name.ends_with("(*)")) {
|
||||
sedata.write[j].name = disambiguated_script_names[j] + "(*)";
|
||||
} else {
|
||||
sedata.write[j].name = disambiguated_script_names[j];
|
||||
}
|
||||
}
|
||||
|
||||
if (_sort_list_on_update && !sedata.is_empty()) {
|
||||
sedata.sort();
|
||||
|
||||
@@ -3715,7 +3715,7 @@ bool ScriptEditor::_help_tab_goto(const String &p_name, const String &p_desc) {
|
||||
}
|
||||
|
||||
void ScriptEditor::update_doc(const String &p_name) {
|
||||
ERR_FAIL_COND(!EditorHelp::get_doc_data()->has_doc(p_name));
|
||||
ERR_FAIL_COND(!EditorHelp::has_doc(p_name));
|
||||
|
||||
for (int i = 0; i < tab_container->get_tab_count(); i++) {
|
||||
EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_tab_control(i));
|
||||
|
||||
Reference in New Issue
Block a user