diff --git a/src/i18n.ts b/src/i18n.ts index af6960b..6586fde 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -110,7 +110,7 @@ export const translations: Record> = { 'wiki-link': 'Wiki link', 'resolve-link-path-on-paste': 'Resolve link path on paste', 'resolve-link-path-on-paste-desc': 'Regenerate the link path at paste time based on the destination file. Under "Follow Obsidian settings", uses your vault\'s path style (shortest/relative/absolute); otherwise uses shortest-unique paths only.', - 'resolve-link-path-on-paste-tooltip': 'Plugins loaded earlier take priority for paste handling. If another plugin (e.g. Linter) intercepts paste first, this feature will be bypassed.', + 'resolve-link-path-on-paste-tooltip': 'Plugins loaded earlier take priority for paste handling. If another plugin (e.g. Linter) intercepts paste first, this feature will be bypassed. You can adjust plugin load order in the community-plugins.json file.', 'customize-targets': 'Customize targets', 'customize-targets-desc': 'Enable to customize which elements can be copied (disable to copy all elements)', 'enable-inline-code': 'Enable inline code', @@ -211,7 +211,7 @@ export const translations: Record> = { 'wiki-link': 'Wiki链接', 'resolve-link-path-on-paste': '粘贴时解析链接路径', 'resolve-link-path-on-paste-desc': '粘贴时根据目标文件重新生成链接路径。使用"跟随 Obsidian 设置"时,会沿用软件设置中的路径风格(最短/相对/绝对);否则,仅使用最短唯一路径。', - 'resolve-link-path-on-paste-tooltip': '越早加载的插件越先处理粘贴事件。若其他插件(如 Linter)抢先处理,本功能会被跳过。', + 'resolve-link-path-on-paste-tooltip': '越早加载的插件越先处理粘贴事件。若其他插件(如 Linter)抢先处理,本功能会被跳过。可在 community-plugins.json 文件中调整插件加载顺序。', 'customize-targets': '自定义复制对象', 'customize-targets-desc': '启用后可以自定义哪些元素可以被复制(不启用则默认可复制所有元素)', 'enable-inline-code': '启用行内代码', @@ -322,7 +322,7 @@ export const translations: Record> = { 'wiki-link': 'Wiki連結', 'resolve-link-path-on-paste': '貼上時解析連結路徑', 'resolve-link-path-on-paste-desc': '貼上時根據目標檔案重新生成連結路徑。使用「跟隨 Obsidian 設定」時,會沿用軟體設定中的路徑風格(最短/相對/絕對);否則,僅使用最短唯一路徑。', - 'resolve-link-path-on-paste-tooltip': '越早載入的外掛越先處理貼上事件。若其他外掛(如 Linter)搶先處理,本功能會被略過。', + 'resolve-link-path-on-paste-tooltip': '越早載入的外掛越先處理貼上事件。若其他外掛(如 Linter)搶先處理,本功能會被略過。可在 community-plugins.json 檔案中調整外掛載入順序。', 'customize-targets': '自定義複製對象', 'customize-targets-desc': '啟用後可以自定義哪些元素可以被複製(不啟用則默认可複製所有元素)', 'enable-inline-code': '啟用行內代碼', diff --git a/src/main.ts b/src/main.ts index 233547b..2639c73 100644 --- a/src/main.ts +++ b/src/main.ts @@ -176,6 +176,13 @@ export default class EasyCopy extends Plugin { */ private handlePaste(evt: ClipboardEvent, editor: Editor, info: MarkdownView | MarkdownFileInfo): void { const clipboardText = evt.clipboardData?.getData('text/plain'); + + // 如果有活跃的 meta 且剪贴板内容匹配,但被其他插件抢先处理了,输出提示 + if (evt.defaultPrevented && this.lastCopyMeta && clipboardText === this.lastCopyMeta.clipboardText) { + console.log('[Easy Copy] Paste event was already handled by another plugin. Link path resolution skipped. You can adjust plugin load order in .obsidian/community-plugins.json.'); + return; + } + const decision = decidePasteResolution({ defaultPrevented: evt.defaultPrevented, resolveLinkPathOnPaste: this.settings.resolveLinkPathOnPaste, diff --git a/src/settingTab.ts b/src/settingTab.ts index 26a55be..c01d8a6 100644 --- a/src/settingTab.ts +++ b/src/settingTab.ts @@ -130,9 +130,13 @@ export class EasyCopySettingTab extends PluginSettingTab { const descFragment = document.createDocumentFragment(); descFragment.append(this.plugin.t('resolve-link-path-on-paste-desc') + ' '); const infoIcon = descFragment.createEl('span', { - attr: { 'aria-label': this.plugin.t('resolve-link-path-on-paste-tooltip'), class: 'clickable-icon setting-editor-extra-setting-button' }, + attr: { + 'aria-label': this.plugin.t('resolve-link-path-on-paste-tooltip'), + 'class': 'clickable-icon setting-editor-extra-setting-button', + 'style': 'display:inline; vertical-align:middle; cursor:help;', + }, }); - infoIcon.innerHTML = ''; + infoIcon.innerHTML = ''; setting .setName(this.plugin.t('resolve-link-path-on-paste'))