From d3a92cc57080a35a32f8dc283090c91a2e4ab5ca Mon Sep 17 00:00:00 2001 From: shunlibest Date: Tue, 29 Jul 2025 17:18:05 +0800 Subject: [PATCH] feat: Added global post-injection A new setting item has been added to automatically insert specified code at the bottom of each code block, and the code injection logic has been updated to support this new feature. --- src/settings/SettingsTab.ts | 16 ++++++++++++++++ src/transforms/CodeInjector.ts | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/settings/SettingsTab.ts b/src/settings/SettingsTab.ts index 2b32a8eb..0edf4387 100644 --- a/src/settings/SettingsTab.ts +++ b/src/settings/SettingsTab.ts @@ -222,5 +222,21 @@ export class SettingsTab extends PluginSettingTab { await this.plugin.saveSettings(); }); }); + + new Setting(containerEl) + .setName(`Inject post ${languageAlt} code`) + .setDesc(`Code to add to the bottom of every ${languageAlt} code block before running.`) + .setClass('settings-code-input-box') + .addTextArea(textarea => { + // @ts-ignore + const val = this.plugin.settings[`${language}InjectPost` as keyof ExecutorSettings as string] + return textarea + .setValue(val) + .onChange(async (value) => { + (this.plugin.settings[`${language}InjectPost` as keyof ExecutorSettings] as string) = value; + console.log(`${language} inject post set to ${value}`); + await this.plugin.saveSettings(); + }); + }); } } diff --git a/src/transforms/CodeInjector.ts b/src/transforms/CodeInjector.ts index 5656f200..37f2c196 100644 --- a/src/transforms/CodeInjector.ts +++ b/src/transforms/CodeInjector.ts @@ -53,9 +53,10 @@ export class CodeInjector { const realLanguage = /[^-]*$/.exec(language)[0]; const globalInject = this.settings[`${realLanguage}Inject` as keyof ExecutorSettings]; + const globalInjectPost = this.settings[`${realLanguage}InjectPost` as keyof ExecutorSettings]; let injectedCode = `${this.namedImportSrcCode}\n${srcCode}`; if (!this.mainArgs.ignore) - injectedCode = `${globalInject}\n${this.prependSrcCode}\n${injectedCode}\n${this.appendSrcCode}`; + injectedCode = `${globalInject}\n${this.prependSrcCode}\n${injectedCode}\n${this.appendSrcCode}\n${globalInjectPost}`; else { // Handle single ignore if (!Array.isArray(this.mainArgs.ignore) && this.mainArgs.ignore !== "all")