From 8ee3fc151b4fbeff65735559f3f496df850d39a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=BD=E6=9C=BD=E6=9C=BD=E6=9C=BD=E6=9C=BD?= <694253220@qq.com> Date: Sun, 9 Mar 2025 21:23:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=87=AA=E5=8A=A8=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.ts | 50 +++++++++++++++++++++++++------------------------- src/setting.ts | 41 +++++++++++++++++++++++++++++++++++++++++ styles.css | 4 ++++ 3 files changed, 70 insertions(+), 25 deletions(-) diff --git a/src/main.ts b/src/main.ts index 618351a..e134d25 100644 --- a/src/main.ts +++ b/src/main.ts @@ -11,6 +11,7 @@ export enum Language { interface OneStepWikiLinkPluginSettings { showDetails: boolean; autoConvert: boolean; + autoConvertDelay: number; language: Language; NonBoundaryCheckers: string[]; excludes: string[]; @@ -19,6 +20,7 @@ interface OneStepWikiLinkPluginSettings { const DEFAULT_SETTINGS: OneStepWikiLinkPluginSettings = { showDetails: true, autoConvert: false, + autoConvertDelay: 500, language: Language.CN, NonBoundaryCheckers: ["Han", "Hiragana", "Katakana", "Hangul"], excludes: [] @@ -49,6 +51,8 @@ export default class OneStepWikiLinkPlugin extends Plugin { } } + autoTimer: NodeJS.Timeout | undefined; + async onload() { await this.loadSettings(); @@ -152,21 +156,12 @@ export default class OneStepWikiLinkPlugin extends Plugin { this.updateFileNameList((file as TFile).basename, false); })); - // this.registerEvent(this.app.workspace.on("file-open", async (file) => { - // // console.log("file open", file); - // this.openEditor = this.app.workspace.getActiveViewOfType(MarkdownView)?.editor; - - // if (file) { - // this.currentFileName = (file as TFile).basename; - - // let content = await this.app.vault.read(file); - // this.checkContent(content); - // } - // })); - - // console.log(this.fileNameList) - - // this.checkContent(); + this.registerDomEvent(document.body, "input", () => { + clearTimeout(this.autoTimer); + this.autoTimer = setTimeout(() => { + this.autoConvert2WikiLink(); + }, this.settings.autoConvertDelay); + }); } getAllFileNames() { @@ -242,20 +237,20 @@ export default class OneStepWikiLinkPlugin extends Plugin { this.matchingFiles.sort((a, b) => a.length > b.length ? -1 : 1); if (this.matchingFiles.length > 0) { - - if (this.settings.autoConvert) { - this.btnOneStep?.addClass("hide"); - this.divForDetails?.addClass("hide"); - this.convert2WikiLink(); - } else { - this.btnOneStep?.removeClass("hide"); - this.settings.showDetails && this.divForDetails?.removeClass("hide"); - } + this.btnOneStep?.removeClass("hide"); + this.settings.showDetails && this.divForDetails?.removeClass("hide"); } else { this.btnOneStep?.addClass("hide"); this.divForDetails?.addClass("hide"); } + } + autoConvert2WikiLink() { + if (this.settings.autoConvert) { + this.btnOneStep?.addClass("hide"); + this.divForDetails?.addClass("hide"); + this.convert2WikiLink(); + } } /** 转换所有匹配项为维基链接 */ @@ -337,7 +332,12 @@ export default class OneStepWikiLinkPlugin extends Plugin { //保存配置的时候检测是否需要显示目标 Div if (this.matchingFiles.length > 0) { - !this.settings.showDetails && this.divForDetails?.removeClass("hide"); + // !this.settings.showDetails && this.divForDetails?.removeClass("hide"); + if (this.settings.showDetails) { + this.divForDetails?.removeClass("hide"); + } else { + this.divForDetails?.addClass("hide"); + } } else { this.divForDetails?.addClass("hide"); } diff --git a/src/setting.ts b/src/setting.ts index 35096e6..9854692 100644 --- a/src/setting.ts +++ b/src/setting.ts @@ -26,6 +26,16 @@ export class OneStepWikiLinkPluginSettingTab extends PluginSettingTab { [Language.EN]: "Whether to automatically convert all matching content" } }, + autoConvertDelay: { + name: { + [Language.CN]: "自动转换延迟", + [Language.EN]: "Auto Convert Delay" + }, + desc: { + [Language.CN]: "自动转换延迟,单位为毫秒", + [Language.EN]: "Auto Convert Delay, in milliseconds" + } + }, NonBoundaryCheckers: { name: { [Language.CN]: "非边界字符", @@ -69,6 +79,7 @@ export class OneStepWikiLinkPluginSettingTab extends PluginSettingTab { display(): void { let { containerEl } = this; + this.settings = []; containerEl.empty(); new Setting(containerEl) @@ -116,11 +127,41 @@ export class OneStepWikiLinkPluginSettingTab extends PluginSettingTab { .onChange(async (value) => { this.plugin.settings.autoConvert = value; await this.plugin.saveSettings(); + if (value) { + this.settings[2].value.settingEl.removeClass("setting-hide"); + } else { + this.settings[2].value.settingEl.addClass("setting-hide"); + } }) ) } ) + this.settings.push( + { + key: this.labels.autoConvertDelay, + value: new Setting(containerEl) + .setName(this.labels.autoConvertDelay.name[this.plugin.settings.language]) + .setDesc(this.labels.autoConvertDelay.desc[this.plugin.settings.language]) + .addText((text) => { + text.inputEl.type = "number"; + text + .setValue(this.plugin.settings.autoConvertDelay.toString()) + .onChange(async (value) => { + this.plugin.settings.autoConvertDelay = Number(value); + await this.plugin.saveSettings(); + }) + }) + } + ); + + if (this.plugin.settings.autoConvert) { + this.settings[2].value.settingEl.removeClass("setting-hide"); + } else { + this.settings[2].value.settingEl.addClass("setting-hide"); + } + + this.settings.push( { key: this.labels.NonBoundaryCheckers, diff --git a/styles.css b/styles.css index 21565d5..3b4963f 100644 --- a/styles.css +++ b/styles.css @@ -71,4 +71,8 @@ One Step WikiLink Custome Css font-size: var(--font-ui-small); border-radius: var(--input-radius); outline: none; +} + +.setting-hide { + display: none; } \ No newline at end of file