diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2023-02-09 14:01:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-09 14:01:33 +0100 |
commit | b12bf7ff0219bfec86d481b35355a43ee0ee59fa (patch) | |
tree | 559442ee0b4a412276622e15b0e50770a4a6e259 | |
parent | d02a7bc00d76d50843f1b938914340135060a119 (diff) | |
parent | 64edc7a5c2397e5330a587d40b4d0275bf9a9c9e (diff) |
Merge pull request #69550 from Rindbee/fix-script-editor-not-reload-via-lsp
Fix internal editor not updating when using external editor via LSP
-rw-r--r-- | editor/plugins/script_editor_plugin.cpp | 10 | ||||
-rw-r--r-- | modules/gdscript/language_server/gdscript_text_document.cpp | 1 | ||||
-rw-r--r-- | scene/resources/text_file.cpp | 5 |
3 files changed, 9 insertions, 7 deletions
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index e515b46b1e..74d82aa4a2 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -2528,7 +2528,7 @@ void ScriptEditor::reload_scripts(bool p_refresh_only) { } Ref<Script> scr = edited_res; - if (scr != nullptr) { + if (scr.is_valid()) { Ref<Script> rel_scr = ResourceLoader::load(scr->get_path(), scr->get_class(), ResourceFormatLoader::CACHE_MODE_IGNORE); ERR_CONTINUE(!rel_scr.is_valid()); scr->set_source_code(rel_scr->get_source_code()); @@ -2537,12 +2537,8 @@ void ScriptEditor::reload_scripts(bool p_refresh_only) { } Ref<TextFile> text_file = edited_res; - if (text_file != nullptr) { - Error err; - Ref<TextFile> rel_text_file = _load_text_file(text_file->get_path(), &err); - ERR_CONTINUE(!rel_text_file.is_valid()); - text_file->set_text(rel_text_file->get_text()); - text_file->set_last_modified_time(rel_text_file->get_last_modified_time()); + if (text_file.is_valid()) { + text_file->reload_from_file(); } } diff --git a/modules/gdscript/language_server/gdscript_text_document.cpp b/modules/gdscript/language_server/gdscript_text_document.cpp index b9e6921034..35fbdca949 100644 --- a/modules/gdscript/language_server/gdscript_text_document.cpp +++ b/modules/gdscript/language_server/gdscript_text_document.cpp @@ -108,6 +108,7 @@ void GDScriptTextDocument::didSave(const Variant &p_param) { scr->reload(true); } scr->update_exports(); + ScriptEditor::get_singleton()->reload_scripts(true); ScriptEditor::get_singleton()->update_docs_from_script(scr); } } diff --git a/scene/resources/text_file.cpp b/scene/resources/text_file.cpp index 9b61a95edb..77ff0f55b1 100644 --- a/scene/resources/text_file.cpp +++ b/scene/resources/text_file.cpp @@ -67,5 +67,10 @@ Error TextFile::load_text(const String &p_path) { ERR_FAIL_COND_V_MSG(s.parse_utf8((const char *)w) != OK, ERR_INVALID_DATA, "Script '" + p_path + "' contains invalid unicode (UTF-8), so it was not loaded. Please ensure that scripts are saved in valid UTF-8 unicode."); text = s; path = p_path; +#ifdef TOOLS_ENABLED + if (ResourceLoader::get_timestamp_on_load()) { + set_last_modified_time(FileAccess::get_modified_time(path)); + } +#endif // TOOLS_ENABLED return OK; } |