From 767092eb14f0f9ff9a1b067d04eb611e1728ad9c Mon Sep 17 00:00:00 2001 From: diegomarzaa Date: Fri, 12 Dec 2025 12:04:58 +0100 Subject: [PATCH] feat: Add option to disable inline task overlay for aliased links --- src/editor/ReadingModeTaskLinkProcessor.ts | 12 ++++++++++++ src/editor/TaskLinkOverlay.ts | 8 ++++++++ src/settings/defaults.ts | 1 + src/settings/tabs/featuresTab.ts | 13 +++++++++++++ src/types/settings.ts | 1 + 5 files changed, 35 insertions(+) diff --git a/src/editor/ReadingModeTaskLinkProcessor.ts b/src/editor/ReadingModeTaskLinkProcessor.ts index ef90246d..e4824fba 100644 --- a/src/editor/ReadingModeTaskLinkProcessor.ts +++ b/src/editor/ReadingModeTaskLinkProcessor.ts @@ -163,6 +163,18 @@ export class ReadingModeTaskLinkProcessor { // Get the original link text for display const originalText = linkEl.textContent || `[[${originalLinkPath}]]`; + // Check for alias exclusion + if (this.plugin.settings.disableOverlayOnAlias) { + // In reading mode, we check if the displayed text differs from the path or title + // If it does, it's likely an alias/custom text + const currentText = linkEl.textContent || ""; + + // If text doesn't match path AND doesn't match task title, it's an alias + if (currentText !== originalLinkPath && currentText !== taskInfo.title) { + return; + } + } + // Parse display text if it's a piped link let displayText: string | undefined; const linkContent = linkEl.textContent || ""; diff --git a/src/editor/TaskLinkOverlay.ts b/src/editor/TaskLinkOverlay.ts index 11b8263c..8cee2b37 100644 --- a/src/editor/TaskLinkOverlay.ts +++ b/src/editor/TaskLinkOverlay.ts @@ -273,6 +273,14 @@ export function buildTaskLinkDecorations( continue; } + // Check for alias exclusion + if (plugin.settings.disableOverlayOnAlias) { + // Skip Wikilinks with pipes [[Path|Alias]] + if (link.type === "wikilink" && link.match.includes("|")) { + continue; + } + } + // Parse the link to get the link path (handle both wikilinks and markdown links) const parsed = link.type === "wikilink" diff --git a/src/settings/defaults.ts b/src/settings/defaults.ts index b182ea47..e366b6de 100644 --- a/src/settings/defaults.ts +++ b/src/settings/defaults.ts @@ -265,6 +265,7 @@ export const DEFAULT_SETTINGS: TaskNotesSettings = { pomodoroStorageLocation: "plugin", // Editor defaults enableTaskLinkOverlay: true, + disableOverlayOnAlias: false, enableInstantTaskConvert: true, useDefaultsOnInstantConvert: true, enableNaturalLanguageInput: true, diff --git a/src/settings/tabs/featuresTab.ts b/src/settings/tabs/featuresTab.ts index 1ec76738..3bb13c06 100644 --- a/src/settings/tabs/featuresTab.ts +++ b/src/settings/tabs/featuresTab.ts @@ -43,6 +43,19 @@ export function renderFeaturesTab( }, }); + // Disable overlay for aliased links setting + if (plugin.settings.enableTaskLinkOverlay) { + createToggleSetting(container, { + name: "Disable overlay for aliased links", + desc: "Do not show the task widget if the link contains an alias (e.g. [[Task|Alias]].", + getValue: () => plugin.settings.disableOverlayOnAlias, + setValue: async (value: boolean) => { + plugin.settings.disableOverlayOnAlias = value; + save(); + }, + }); + } + // Inline task card visible properties (shown when task link overlay is enabled) if (plugin.settings.enableTaskLinkOverlay) { const availableProperties = getAvailableProperties(plugin); diff --git a/src/types/settings.ts b/src/types/settings.ts index 313f2241..4afc1c9d 100644 --- a/src/types/settings.ts +++ b/src/types/settings.ts @@ -123,6 +123,7 @@ export interface TaskNotesSettings { pomodoroStorageLocation: "plugin" | "daily-notes"; // where to store pomodoro history data // Editor settings enableTaskLinkOverlay: boolean; + disableOverlayOnAlias: boolean; enableInstantTaskConvert: boolean; useDefaultsOnInstantConvert: boolean; enableNaturalLanguageInput: boolean;