diff --git a/addons/SimpleFormatOnSave/plugin.cfg b/addons/SimpleFormatOnSave/plugin.cfg index d7d61a9..c84282b 100644 --- a/addons/SimpleFormatOnSave/plugin.cfg +++ b/addons/SimpleFormatOnSave/plugin.cfg @@ -3,5 +3,5 @@ name="Simple Format On Save" description="Combination of simple gdscript formatter & Format On Save with extra rules for beatiful formatting...maybe" author="VitSoonYoung" -version="0.1" +version="0.2" script="simple_format_on_save.gd" diff --git a/addons/SimpleFormatOnSave/rules/blank_lines.gd b/addons/SimpleFormatOnSave/rules/blank_lines.gd index 4107400..d6fa124 100644 --- a/addons/SimpleFormatOnSave/rules/blank_lines.gd +++ b/addons/SimpleFormatOnSave/rules/blank_lines.gd @@ -1,8 +1,10 @@ class_name RuleBlankLines -var FORMAT_ACTION := "simple_format_on_save/format_code" +const FORMAT_ACTION := "simple_format_on_save/format_code" var format_key: InputEventKey +var _EditorSettings = EditorInterface.get_editor_settings() + static func apply(code: String) -> String: var trim1_regex = RegEx.create_from_string("\n{2,}") @@ -28,14 +30,11 @@ static func _blank_for_func_class(code: String) -> String: if func_class_regex.search(line): if modified_lines.size() > 0: var i := modified_lines.size() - 1 - while i > 0 and comment_line_regex.search(modified_lines[i]): i -= 1 - if i == 0: modified_lines.append(line) continue - modified_lines.insert(i + 1, "") modified_lines.insert(i + 1, "") @@ -43,22 +42,19 @@ static func _blank_for_func_class(code: String) -> String: if statement_regex.search(line): if modified_lines.size() > 0: var i := modified_lines.size() - 1 - if assignment_regex.search(modified_lines[i]) and not statement_regex.search(modified_lines[i]) and not statement_regex.search(line): modified_lines.insert(i + 1, "") else: pass # Space after a code block (Doesn't work with spaces for now) - var indent_count := line.count("\t") - - if indent_count and not misc_statement_regex.search(line) and not statement_regex.search(line): - if modified_lines.size() > 0: - var i := modified_lines.size() - 1 - - if modified_lines[i].count("\t") > indent_count: - modified_lines.insert(i + 1, "") - + if EditorInterface.get_editor_settings().get_setting(FormatOnSavePlugin.SETTING_PREFIX+"blank_after_dedent"): + var indent_count := line.count("\t") + if indent_count and not misc_statement_regex.search(line) and not statement_regex.search(line): + if modified_lines.size() > 0: + var i := modified_lines.size() - 1 + if modified_lines[i].count("\t") > indent_count: + modified_lines.insert(i + 1, "") modified_lines.append(line) return "\n".join(modified_lines) diff --git a/addons/SimpleFormatOnSave/simple_format_on_save.gd b/addons/SimpleFormatOnSave/simple_format_on_save.gd index 2164754..6564820 100644 --- a/addons/SimpleFormatOnSave/simple_format_on_save.gd +++ b/addons/SimpleFormatOnSave/simple_format_on_save.gd @@ -1,12 +1,24 @@ @tool extends EditorPlugin +class_name FormatOnSavePlugin -var FORMAT_ACTION := "simple_format_on_save/format_code" +const FORMAT_ACTION := "simple_format_on_save/format_code" +const SETTING_PREFIX = "text_editor/format_on_save/" var format_key: InputEventKey var formatter: Formatter +## Create an editor setting so users can toggle features +func _set_default_setting(setting:String,default_value:Variant): + var _EditorSettings = EditorInterface.get_editor_settings() + if not _EditorSettings.has_setting(SETTING_PREFIX+setting): + _EditorSettings.set_setting(SETTING_PREFIX+setting, default_value) + _EditorSettings.set_initial_value(SETTING_PREFIX+setting, default_value,false) + + func _enter_tree(): + _set_default_setting("blank_after_dedent",false) + add_tool_menu_item("Format (Ctrl+Alt+L)", _on_format_code) if InputMap.has_action(FORMAT_ACTION):