mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	Fix out of sync when the script is edited externally via lsp
Previously, external editing via lsp would modify the modified time of the script, which caused the internal display of the script to not be refreshed when refocusing the engine. Now saving the script externally via lsp will automatically refresh the internal display.
This commit is contained in:
		
							parent
							
								
									15ac442247
								
							
						
					
					
						commit
						412e87349a
					
				
					 3 changed files with 27 additions and 23 deletions
				
			
		|  | @ -2544,7 +2544,7 @@ void ScriptEditor::apply_scripts() const { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| void ScriptEditor::reload_scripts() { | ||||
| void ScriptEditor::reload_scripts(bool p_refresh_only) { | ||||
| 	for (int i = 0; i < tab_container->get_tab_count(); i++) { | ||||
| 		ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(tab_container->get_tab_control(i)); | ||||
| 		if (!se) { | ||||
|  | @ -2557,30 +2557,33 @@ void ScriptEditor::reload_scripts() { | |||
| 			continue; //internal script, who cares
 | ||||
| 		} | ||||
| 
 | ||||
| 		uint64_t last_date = edited_res->get_last_modified_time(); | ||||
| 		uint64_t date = FileAccess::get_modified_time(edited_res->get_path()); | ||||
| 		if (!p_refresh_only) { | ||||
| 			uint64_t last_date = edited_res->get_last_modified_time(); | ||||
| 			uint64_t date = FileAccess::get_modified_time(edited_res->get_path()); | ||||
| 
 | ||||
| 		if (last_date == date) { | ||||
| 			continue; | ||||
| 			if (last_date == date) { | ||||
| 				continue; | ||||
| 			} | ||||
| 
 | ||||
| 			Ref<Script> script = edited_res; | ||||
| 			if (script != nullptr) { | ||||
| 				Ref<Script> rel_script = ResourceLoader::load(script->get_path(), script->get_class(), ResourceFormatLoader::CACHE_MODE_IGNORE); | ||||
| 				ERR_CONTINUE(!rel_script.is_valid()); | ||||
| 				script->set_source_code(rel_script->get_source_code()); | ||||
| 				script->set_last_modified_time(rel_script->get_last_modified_time()); | ||||
| 				script->reload(true); | ||||
| 			} | ||||
| 
 | ||||
| 			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()); | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		Ref<Script> script = edited_res; | ||||
| 		if (script != nullptr) { | ||||
| 			Ref<Script> rel_script = ResourceLoader::load(script->get_path(), script->get_class(), ResourceFormatLoader::CACHE_MODE_IGNORE); | ||||
| 			ERR_CONTINUE(!rel_script.is_valid()); | ||||
| 			script->set_source_code(rel_script->get_source_code()); | ||||
| 			script->set_last_modified_time(rel_script->get_last_modified_time()); | ||||
| 			script->reload(true); | ||||
| 		} | ||||
| 
 | ||||
| 		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()); | ||||
| 		} | ||||
| 		se->reload_text(); | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Rindbee
						Rindbee