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; }