diff --git a/src/main.ts b/src/main.ts index c8b151a..cbad1cf 100644 --- a/src/main.ts +++ b/src/main.ts @@ -378,10 +378,13 @@ export default class AutomaticLinkerPlugin extends Plugin { if (checking) { return saveCallback?.(checking); } else { - //@ts-expect-error - await this.app?.commands?.executeCommandById( - "obsidian-linter:lint-file", - ); + // Run Obsidian Linter before formatting if enabled + if (this.settings.runLinterBeforeFormatting) { + //@ts-expect-error + await this.app?.commands?.executeCommandById( + "obsidian-linter:lint-file", + ); + } await this.formatOnSave(); } }; diff --git a/src/settings/settings-info.ts b/src/settings/settings-info.ts index df60a94..376b758 100644 --- a/src/settings/settings-info.ts +++ b/src/settings/settings-info.ts @@ -18,6 +18,7 @@ export type AutomaticLinkerSettings = { excludeDirsFromAutoLinking: string[]; // Optional: List of directories to exclude from auto-linking preventSelfLinking: boolean; // Prevent linking text to its own file removeAliasInDirs: string[]; // Remove aliases for links in specified directories + runLinterBeforeFormatting: boolean; // Run Obsidian Linter before automatic linker formatting }; export const DEFAULT_SETTINGS: AutomaticLinkerSettings = { @@ -40,4 +41,5 @@ export const DEFAULT_SETTINGS: AutomaticLinkerSettings = { excludeDirsFromAutoLinking: [], // Default: no excluded directories preventSelfLinking: false, // Default: allow self-linking (backward compatibility) removeAliasInDirs: [], // Default: no directories for alias removal + runLinterBeforeFormatting: false, // Default: do not run linter before formatting }; diff --git a/src/settings/settings.ts b/src/settings/settings.ts index 21f8d9b..6ed516f 100644 --- a/src/settings/settings.ts +++ b/src/settings/settings.ts @@ -29,6 +29,21 @@ export class AutomaticLinkerPluginSettingsTab extends PluginSettingTab { }); }); + // Toggle for running linter before formatting + new Setting(containerEl) + .setName("Run Obsidian Linter before formatting") + .setDesc( + "When enabled, Obsidian Linter will be executed before Automatic Linker formatting. This requires the Obsidian Linter plugin to be installed.", + ) + .addToggle((toggle) => { + toggle + .setValue(this.plugin.settings.runLinterBeforeFormatting) + .onChange(async (value) => { + this.plugin.settings.runLinterBeforeFormatting = value; + await this.plugin.saveData(this.plugin.settings); + }); + }); + // Setting for base directories. new Setting(containerEl) .setName("Base directory")