From be8365c8cb7df6200e05681e57c89600ac28303f Mon Sep 17 00:00:00 2001 From: Roe-xin Date: Wed, 7 Jan 2026 17:46:09 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20=E5=AE=9E=E7=8E=B0=E7=82=B9=E5=87=BB?= =?UTF-8?q?=20VCD=20=E6=96=87=E4=BB=B6=E6=97=B6=20Surfer=20=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=B3=A2=E5=BD=A2=20=20=20=20-=20VCDViewerEditorProvi?= =?UTF-8?q?der=20=E7=8E=B0=E5=9C=A8=E6=8E=A5=E6=94=B6=E5=B9=B6=E6=8C=81?= =?UTF-8?q?=E6=9C=89=20vcdFileServer=20=E5=AE=9E=E4=BE=8B=20=20=20=20-=20c?= =?UTF-8?q?reateFromWebviewPanel=20=E6=96=B9=E6=B3=95=E4=BC=A0=E9=80=92=20?= =?UTF-8?q?vcdFileServer=20=E5=8F=82=E6=95=B0=20=20=20=20-=20=E7=A1=AE?= =?UTF-8?q?=E4=BF=9D=E8=87=AA=E5=AE=9A=E4=B9=89=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=E6=89=93=E5=BC=80=20VCD=20=E6=96=87=E4=BB=B6=E6=97=B6=E8=83=BD?= =?UTF-8?q?=E5=A4=9F=E9=80=9A=E8=BF=87=20HTTP=20=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=99=A8=E5=8A=A0=E8=BD=BD=E6=B3=A2=E5=BD=A2=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/extension.ts | 2 +- src/panels/VCDViewerPanel.ts | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index bbf33fd..3603e8a 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -175,7 +175,7 @@ export function activate(context: vscode.ExtensionContext) { ); // 注册 VCD 自定义编辑器 - const vcdEditorProvider = VCDViewerEditorProvider.register(context); + const vcdEditorProvider = VCDViewerEditorProvider.register(context, vcdFileServer); // 添加到订阅 context.subscriptions.push( diff --git a/src/panels/VCDViewerPanel.ts b/src/panels/VCDViewerPanel.ts index 8961716..f2d7455 100644 --- a/src/panels/VCDViewerPanel.ts +++ b/src/panels/VCDViewerPanel.ts @@ -7,8 +7,8 @@ import { VCDFileServer } from "../services/vcdFileServer"; * VCD 波形查看器自定义编辑器提供者 */ export class VCDViewerEditorProvider implements vscode.CustomReadonlyEditorProvider { - public static register(context: vscode.ExtensionContext): vscode.Disposable { - const provider = new VCDViewerEditorProvider(context); + public static register(context: vscode.ExtensionContext, vcdFileServer: VCDFileServer): vscode.Disposable { + const provider = new VCDViewerEditorProvider(context, vcdFileServer); const providerRegistration = vscode.window.registerCustomEditorProvider( "ic-coder.vcdViewer", provider, @@ -21,7 +21,10 @@ export class VCDViewerEditorProvider implements vscode.CustomReadonlyEditorProvi return providerRegistration; } - constructor(private readonly context: vscode.ExtensionContext) {} + constructor( + private readonly context: vscode.ExtensionContext, + private readonly vcdFileServer: VCDFileServer + ) {} async openCustomDocument( uri: vscode.Uri, @@ -48,7 +51,8 @@ export class VCDViewerEditorProvider implements vscode.CustomReadonlyEditorProvi VCDViewerPanel.createFromWebviewPanel( webviewPanel, this.context.extensionUri, - document.uri.fsPath + document.uri.fsPath, + this.vcdFileServer ); } } @@ -140,9 +144,10 @@ export class VCDViewerPanel { public static createFromWebviewPanel( panel: vscode.WebviewPanel, extensionUri: vscode.Uri, - vcdFilePath: string + vcdFilePath: string, + vcdFileServer?: VCDFileServer ) { - const viewer = new VCDViewerPanel(panel, extensionUri); + const viewer = new VCDViewerPanel(panel, extensionUri, vcdFileServer); viewer.loadVCDFile(vcdFilePath); return viewer; }