From 2bd714e34eb57b3fff2c9eaff0eb59ac2cb515aa Mon Sep 17 00:00:00 2001 From: RedMser Date: Sun, 11 Jun 2023 18:23:48 +0200 Subject: [PATCH] Allow configuring the script filename casing rule Defaults to "Auto", which detects the casing based on the preference of the currently selected language (C# for example prefers PascalCase whereas GDScript prefers snake_case). --- core/object/script_language.cpp | 7 +++ core/object/script_language.h | 14 +++++ core/object/script_language_extension.cpp | 1 + core/object/script_language_extension.h | 1 + doc/classes/ProjectSettings.xml | 7 ++- doc/classes/ScriptLanguage.xml | 10 ++++ doc/classes/ScriptLanguageExtension.xml | 5 ++ editor/editor_autoload_settings.cpp | 2 +- editor/editor_node.cpp | 31 +++++++++-- editor/editor_node.h | 7 ++- editor/register_editor_types.cpp | 4 +- editor/script_create_dialog.cpp | 63 +++++++---------------- editor/script_create_dialog.h | 3 +- modules/mono/csharp_script.cpp | 4 ++ modules/mono/csharp_script.h | 1 + 15 files changed, 103 insertions(+), 57 deletions(-) diff --git a/core/object/script_language.cpp b/core/object/script_language.cpp index 3b9b1f90947..d358a8d2a0e 100644 --- a/core/object/script_language.cpp +++ b/core/object/script_language.cpp @@ -535,6 +535,13 @@ TypedArray ScriptLanguage::CodeCompletionOption::get_option_cached_characte return charac; } +void ScriptLanguage::_bind_methods() { + BIND_ENUM_CONSTANT(SCRIPT_NAME_CASING_AUTO); + BIND_ENUM_CONSTANT(SCRIPT_NAME_CASING_PASCAL_CASE); + BIND_ENUM_CONSTANT(SCRIPT_NAME_CASING_SNAKE_CASE); + BIND_ENUM_CONSTANT(SCRIPT_NAME_CASING_KEBAB_CASE); +} + bool PlaceHolderScriptInstance::set(const StringName &p_name, const Variant &p_value) { if (script->is_placeholder_fallback_enabled()) { return false; diff --git a/core/object/script_language.h b/core/object/script_language.h index 4217bc9f96a..95e9d2b4aff 100644 --- a/core/object/script_language.h +++ b/core/object/script_language.h @@ -193,6 +193,10 @@ public: class ScriptLanguage : public Object { GDCLASS(ScriptLanguage, Object) + +protected: + static void _bind_methods(); + public: virtual String get_name() const = 0; @@ -224,6 +228,13 @@ public: TEMPLATE_PROJECT }; + enum ScriptNameCasing { + SCRIPT_NAME_CASING_AUTO, + SCRIPT_NAME_CASING_PASCAL_CASE, + SCRIPT_NAME_CASING_SNAKE_CASE, + SCRIPT_NAME_CASING_KEBAB_CASE, + }; + struct ScriptTemplate { String inherit = "Object"; String name; @@ -260,6 +271,7 @@ public: virtual bool can_make_function() const { return true; } virtual Error open_in_external_editor(const Ref