From f1ce889fe063a1dad433a92891e9f274305ceba6 Mon Sep 17 00:00:00 2001 From: Simon He <57086651+Simon-He95@users.noreply.github.com> Date: Fri, 15 Dec 2023 02:13:18 +0800 Subject: [PATCH] refactor(extension): Optimized the destruction of some events and refactor some code (#3780) --- extensions/vscode/src/common.ts | 4 ++-- extensions/vscode/src/features/nameCasing.ts | 22 +++++++++----------- extensions/vscode/src/nodeClientMain.ts | 4 ++-- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/extensions/vscode/src/common.ts b/extensions/vscode/src/common.ts index f841ebde9..15ba18f2b 100644 --- a/extensions/vscode/src/common.ts +++ b/extensions/vscode/src/common.ts @@ -161,14 +161,14 @@ async function doActivate(context: vscode.ExtensionContext, createLc: CreateLang } function activateServerMaxOldSpaceSizeChange() { - vscode.workspace.onDidChangeConfiguration((e) => { + context.subscriptions.push(vscode.workspace.onDidChangeConfiguration((e) => { if (e.affectsConfiguration('vue.server.runtime') || e.affectsConfiguration('vue.server.path')) { requestReloadVscode(); } if (e.affectsConfiguration('vue')) { vscode.commands.executeCommand('volar.action.restartServer'); } - }); + })); } async function activateRestartRequest() { diff --git a/extensions/vscode/src/features/nameCasing.ts b/extensions/vscode/src/features/nameCasing.ts index 7209b5d76..d1a03d96f 100644 --- a/extensions/vscode/src/features/nameCasing.ts +++ b/extensions/vscode/src/features/nameCasing.ts @@ -11,24 +11,25 @@ export async function activate(_context: vscode.ExtensionContext, client: BaseLa await client.start(); + const disposes: vscode.Disposable[] = []; const statusBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right); statusBar.command = 'volar.action.nameCasing'; update(vscode.window.activeTextEditor?.document); - const d_1 = vscode.window.onDidChangeActiveTextEditor(e => { + disposes.push(vscode.window.onDidChangeActiveTextEditor(e => { update(e?.document); - }); - const d_2 = vscode.workspace.onDidChangeConfiguration(() => { + })); + disposes.push(vscode.workspace.onDidChangeConfiguration(() => { attrNameCasings.clear(); tagNameCasings.clear(); update(vscode.window.activeTextEditor?.document); - }); - const d_3 = vscode.workspace.onDidCloseTextDocument((doc) => { + })); + disposes.push(vscode.workspace.onDidCloseTextDocument((doc) => { attrNameCasings.delete(doc.uri.toString()); tagNameCasings.delete(doc.uri.toString()); - }); - const d_4 = vscode.commands.registerCommand('volar.action.nameCasing', async () => { + })); + disposes.push(vscode.commands.registerCommand('volar.action.nameCasing', async () => { if (!vscode.window.activeTextEditor?.document) return; @@ -80,14 +81,11 @@ export async function activate(_context: vscode.ExtensionContext, client: BaseLa await convertAttr(vscode.window.activeTextEditor, AttrNameCasing.Camel); } updateStatusBarText(); - }); + })); client.onDidChangeState(e => { if (e.newState === State.Stopped) { - d_1.dispose(); - d_2.dispose(); - d_3.dispose(); - d_4.dispose(); + disposes.forEach(d => d.dispose()); statusBar.dispose(); } }); diff --git a/extensions/vscode/src/nodeClientMain.ts b/extensions/vscode/src/nodeClientMain.ts index 6f9345af9..5f3174824 100644 --- a/extensions/vscode/src/nodeClientMain.ts +++ b/extensions/vscode/src/nodeClientMain.ts @@ -18,7 +18,7 @@ export async function activate(context: vscode.ExtensionContext) { let cancellationPipeUpdateKey: string | undefined; let serverPathStatusItem: vscode.StatusBarItem | undefined; - vscode.workspace.onDidChangeTextDocument((e) => { + context.subscriptions.push(vscode.workspace.onDidChangeTextDocument((e) => { let key = e.document.uri.toString() + '|' + e.document.version; if (cancellationPipeUpdateKey === undefined) { cancellationPipeUpdateKey = key; @@ -28,7 +28,7 @@ export async function activate(context: vscode.ExtensionContext) { cancellationPipeUpdateKey = key; fs.writeFileSync(cancellationPipeName, ''); } - }); + })); await commonActivate(context, ( id,