diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index f735789..89b0cce 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -22,6 +22,8 @@ const SETTING_FORMATTER_PATH = "formatter_path" const SETTING_LINT_ON_SAVE = "lint_on_save" const SETTING_LINT_LINE_LENGTH = "lint_line_length" const SETTING_LINT_IGNORED_RULES = "lint_ignored_rules" +# Directories to ignore when Format on Save is enabled +const SETTING_IGNORED_DIRECTORIES = "format_on_save_ignored_directories" const COMMAND_PALETTE_CATEGORY = "gdquest gdscript formatter/" const COMMAND_PALETTE_FORMAT_SCRIPT = "Format GDScript" @@ -30,7 +32,7 @@ const COMMAND_PALETTE_INSTALL_UPDATE = "Install or Update Formatter" const COMMAND_PALETTE_UNINSTALL = "Uninstall Formatter" const COMMAND_PALETTE_REPORT_ISSUE = "Report Issue" -const DEFAULT_SETTINGS = { +var DEFAULT_SETTINGS = { SETTING_FORMAT_ON_SAVE: false, SETTING_USE_SPACES: false, SETTING_INDENT_SIZE: 4, @@ -40,6 +42,7 @@ const DEFAULT_SETTINGS = { SETTING_LINT_ON_SAVE: false, SETTING_LINT_LINE_LENGTH: 100, SETTING_LINT_IGNORED_RULES: "", + SETTING_IGNORED_DIRECTORIES: PackedStringArray(["addons/"]), } ## Which gutter lint icons are shown in. @@ -203,6 +206,24 @@ func _on_resource_saved(saved_resource: Resource) -> void: var script := saved_resource as GDScript + var ignored_directories := get_editor_setting(SETTING_IGNORED_DIRECTORIES) + var path = script.resource_path.trim_prefix("res://") + + var script_path_parts := path.split("/") + + for directory: String in ignored_directories: + var normalized_dir := directory.trim_prefix("res://") + var directory_parts := normalized_dir.split("/") + + var matches := true + for i in range(directory_parts.size()): + if directory_parts[i] != script_path_parts[i]: + matches = false + break + + if matches: + return + if not has_command(get_editor_setting(SETTING_FORMATTER_PATH)) or not is_instance_valid(script): return