From 61c71c271062ed7f420a10968efe67ef1f0d5b1a Mon Sep 17 00:00:00 2001 From: Daniel Borek Date: Thu, 2 Jan 2025 20:59:48 +0100 Subject: [PATCH] feat: option to define typst path --- README.md | 2 ++ qmd-as-md-working.zip | Bin 0 -> 9278 bytes qmd-as-md.zip | Bin 9278 -> 10073 bytes src/main.ts | 55 +++++++++++++++++++++++++++++++----------- 4 files changed, 43 insertions(+), 14 deletions(-) create mode 100644 qmd-as-md-working.zip diff --git a/README.md b/README.md index 6148731..83597fb 100644 --- a/README.md +++ b/README.md @@ -99,3 +99,5 @@ Plugin is completely free, but you might contribute to the author of the orginal Initial release by death_md supporting txt! ## 0.0.2 Repurposing this plugin to viev and edit qmd files, plugin available via BRAT. +# 0.0.3 +Optopn to run preview \ No newline at end of file diff --git a/qmd-as-md-working.zip b/qmd-as-md-working.zip new file mode 100644 index 0000000000000000000000000000000000000000..ac1b8bf82849ace1cebfbc0336efc3f7b40d19e8 GIT binary patch literal 9278 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 CX=fb( literal 0 HcmV?d00001 diff --git a/qmd-as-md.zip b/qmd-as-md.zip index 36cc3129f95629d813c9fb72308894b896c23ed6..0295d10d873145a7e72afaf447f0f453b4ee3626 100644 GIT binary patch delta 9705 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 delta 8926 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 diff --git a/src/main.ts b/src/main.ts index ec57e48..67ff479 100644 --- a/src/main.ts +++ b/src/main.ts @@ -6,7 +6,6 @@ import { PluginSettingTab, App, Setting, - TAbstractFile, } from 'obsidian'; import { spawn, ChildProcess } from 'child_process'; import * as path from 'path'; @@ -14,11 +13,13 @@ import * as path from 'path'; interface QmdPluginSettings { quartoPath: string; enableQmdLinking: boolean; + quartoTypst: string; // Add Quarto Typst variable } const DEFAULT_SETTINGS: QmdPluginSettings = { quartoPath: 'quarto', enableQmdLinking: true, + quartoTypst: '', // Default is empty }; export default class QmdAsMdPlugin extends Plugin { @@ -38,7 +39,7 @@ export default class QmdAsMdPlugin extends Plugin { this.addSettingTab(new QmdSettingTab(this.app, this)); console.log('Settings tab added successfully'); - this.addRibbonIcon('eye', 'Toggle Quarto Preview', async (evt) => { + this.addRibbonIcon('eye', 'Toggle Quarto Preview', async () => { const activeView = this.app.workspace.getActiveViewOfType(MarkdownView); if (activeView?.file && this.isQuartoFile(activeView.file)) { console.log(`Toggling preview for: ${activeView.file.path}`); @@ -122,13 +123,25 @@ export default class QmdAsMdPlugin extends Plugin { console.log(`Resolved file path: ${filePath}`); console.log(`Working directory: ${workingDir}`); - const process = spawn(this.settings.quartoPath, ['preview', filePath], { + const envVars: NodeJS.ProcessEnv = { + ...process.env, // inherit the existing environment + }; + + if (this.settings.quartoTypst.trim()) { + envVars.QUARTO_TYPST = this.settings.quartoTypst.trim(); + console.log(`QUARTO_TYPST set to: ${envVars.QUARTO_TYPST}`); + } else { + console.log('QUARTO_TYPST not set (empty).'); + } + + const quartoProcess = spawn(this.settings.quartoPath, ['preview', filePath], { cwd: workingDir, + env: envVars, }); let previewUrl: string | null = null; - process.stdout?.on('data', (data: Buffer) => { + quartoProcess.stdout?.on('data', (data: Buffer) => { const output = data.toString(); console.log(`Quarto Preview Output: ${output}`); @@ -151,19 +164,19 @@ export default class QmdAsMdPlugin extends Plugin { } }); - process.stderr?.on('data', (data: Buffer) => { + quartoProcess.stderr?.on('data', (data: Buffer) => { console.error(`Quarto Preview Error: ${data}`); new Notice(`Quarto Preview Error: ${data}`); }); - process.on('close', (code: number | null) => { + quartoProcess.on('close', (code: number | null) => { if (code !== null && code !== 0) { new Notice(`Quarto preview process exited with code ${code}`); } this.activePreviewProcesses.delete(file.path); }); - this.activePreviewProcesses.set(file.path, process); + this.activePreviewProcesses.set(file.path, quartoProcess); new Notice('Quarto preview started'); } catch (error) { console.error('Failed to start Quarto preview:', error); @@ -172,10 +185,10 @@ export default class QmdAsMdPlugin extends Plugin { } async stopPreview(file: TFile) { - const process = this.activePreviewProcesses.get(file.path); - if (process) { - if (!process.killed) { - process.kill(); + const quartoProcess = this.activePreviewProcesses.get(file.path); + if (quartoProcess) { + if (!quartoProcess.killed) { + quartoProcess.kill(); } this.activePreviewProcesses.delete(file.path); new Notice('Quarto preview stopped'); @@ -183,9 +196,9 @@ export default class QmdAsMdPlugin extends Plugin { } stopAllPreviews() { - this.activePreviewProcesses.forEach((process, filePath) => { - if (!process.killed) { - process.kill(); + this.activePreviewProcesses.forEach((quartoProcess, filePath) => { + if (!quartoProcess.killed) { + quartoProcess.kill(); } this.activePreviewProcesses.delete(filePath); }); @@ -249,6 +262,20 @@ class QmdSettingTab extends PluginSettingTab { }) ); + new Setting(containerEl) + .setName('QUARTO_TYPST Variable') + .setDesc('Define the QUARTO_TYPST environment variable (leave empty to unset)') + .addText((text) => + text + .setPlaceholder('e.g., typst_path') + .setValue(this.plugin.settings.quartoTypst) + .onChange(async (value) => { + console.log(`QUARTO_TYPST set to: ${value}`); + this.plugin.settings.quartoTypst = value; + await this.plugin.saveSettings(); + }) + ); + console.log('Settings tab rendered successfully'); } } \ No newline at end of file