From 59bd0975376e9f6c76d7fd516cd25e75c1691625 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 27 Oct 2025 05:11:13 +0000 Subject: [PATCH] Fix provider disposal and subscription management Co-authored-by: pierceboggan <1091304+pierceboggan@users.noreply.github.com> --- inline-completions/src/extension.ts | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/inline-completions/src/extension.ts b/inline-completions/src/extension.ts index f58cca3f..09b18a63 100644 --- a/inline-completions/src/extension.ts +++ b/inline-completions/src/extension.ts @@ -135,33 +135,39 @@ export function activate(_context: vscode.ExtensionContext) { console.log('inline-completions demo started with TWO variations'); // Register command used by the pattern-based provider - vscode.commands.registerCommand('demo-ext.command1', async (...args) => { - vscode.window.showInformationMessage('command1: ' + JSON.stringify(args)); - }); + _context.subscriptions.push( + vscode.commands.registerCommand('demo-ext.command1', async (...args) => { + vscode.window.showInformationMessage('command1: ' + JSON.stringify(args)); + }) + ); // Register command to switch between providers let currentProvider: 'pattern' | 'simple' = 'pattern'; let providerDisposable: vscode.Disposable; const switchProvider = () => { + // Dispose the current provider + if (providerDisposable) { + providerDisposable.dispose(); + } + if (currentProvider === 'pattern') { currentProvider = 'simple'; - if (providerDisposable) { - providerDisposable.dispose(); - } providerDisposable = vscode.languages.registerInlineCompletionItemProvider({ pattern: '**' }, simpleProvider); vscode.window.showInformationMessage('Switched to Simple Provider'); } else { currentProvider = 'pattern'; - if (providerDisposable) { - providerDisposable.dispose(); - } providerDisposable = vscode.languages.registerInlineCompletionItemProvider({ pattern: '**' }, patternBasedProvider); vscode.window.showInformationMessage('Switched to Pattern-Based Provider'); } + + // Add the new provider to subscriptions for proper cleanup + _context.subscriptions.push(providerDisposable); }; - vscode.commands.registerCommand('extension.switch-inline-completion-provider', switchProvider); + _context.subscriptions.push( + vscode.commands.registerCommand('extension.switch-inline-completion-provider', switchProvider) + ); // Register the pattern-based provider by default providerDisposable = vscode.languages.registerInlineCompletionItemProvider({ pattern: '**' }, patternBasedProvider);