diff --git a/doc/classes/ScriptEditor.xml b/doc/classes/ScriptEditor.xml
index d0f602826f..3ebfa622bf 100644
--- a/doc/classes/ScriptEditor.xml
+++ b/doc/classes/ScriptEditor.xml
@@ -48,6 +48,12 @@
Returns an array with all [Script] objects which are currently open in editor.
+
+
+
+ Returns an array of file paths of scripts with unsaved changes open in the editor.
+
+
diff --git a/editor/script/script_editor_plugin.cpp b/editor/script/script_editor_plugin.cpp
index b64240c677..0c6813707e 100644
--- a/editor/script/script_editor_plugin.cpp
+++ b/editor/script/script_editor_plugin.cpp
@@ -2382,6 +2382,18 @@ PackedStringArray ScriptEditor::get_unsaved_scripts() const {
return unsaved_list;
}
+PackedStringArray ScriptEditor::get_unsaved_files() const {
+ PackedStringArray unsaved_list;
+
+ for (int i = 0; i < tab_container->get_tab_count(); i++) {
+ ScriptEditorBase *seb = Object::cast_to(tab_container->get_tab_control(i));
+ if (seb && seb->is_unsaved()) {
+ unsaved_list.append(seb->get_edited_resource()->get_path());
+ }
+ }
+ return unsaved_list;
+}
+
void ScriptEditor::save_current_script() {
ScriptEditorBase *current = _get_current_editor();
if (!current || _test_script_times_on_disk()) {
@@ -3775,6 +3787,8 @@ void ScriptEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("update_docs_from_script", "script"), &ScriptEditor::update_docs_from_script);
ClassDB::bind_method(D_METHOD("clear_docs_from_script", "script"), &ScriptEditor::clear_docs_from_script);
+ ClassDB::bind_method(D_METHOD("get_unsaved_files"), &ScriptEditor::get_unsaved_files);
+
ClassDB::bind_method(D_METHOD("save_all_scripts"), &ScriptEditor::save_all_scripts);
ADD_SIGNAL(MethodInfo("editor_script_changed", PropertyInfo(Variant::OBJECT, "script", PROPERTY_HINT_RESOURCE_TYPE, Script::get_class_static())));
diff --git a/editor/script/script_editor_plugin.h b/editor/script/script_editor_plugin.h
index 2de8f17686..ba42730c38 100644
--- a/editor/script/script_editor_plugin.h
+++ b/editor/script/script_editor_plugin.h
@@ -424,6 +424,7 @@ public:
void get_breakpoints(List *p_breakpoints);
void reload_open_files();
+ PackedStringArray get_unsaved_files() const;
PackedStringArray get_unsaved_scripts() const;
void save_current_script();
void save_all_scripts();