diff --git a/package.json b/package.json index 0dfe899..dd80c32 100644 --- a/package.json +++ b/package.json @@ -268,6 +268,21 @@ "command": "powershell-universal.editModule", "title": "Edit Module", "icon": "$(go-to-file)" + }, + { + "command": "powershell-universal.connectDebugger", + "title": "Connect Debugger", + "icon": "$(debug)" + }, + { + "command": "powershell-universal.connectDebugger", + "title": "Connect Debugger", + "icon": "$(debug)" + }, + { + "command": "powershell-universal.disconnectDebugger", + "title": "Disconnect Debugger", + "icon": "$(debug-disconnect)" } ], "debuggers": [ @@ -447,6 +462,16 @@ "command": "powershell-universal.reloadConfig", "when": "view == universalConfigProviderView", "group": "navigation" + }, + { + "command": "powershell-universal.connectDebugger", + "when": "view == universalPlatformProviderView && !powershell-universal.debuggerConnected", + "group": "navigation" + }, + { + "command": "powershell-universal.disconnectDebugger", + "when": "view == universalPlatformProviderView && powershell-universal.debuggerConnected", + "group": "navigation" } ], "view/item/context": [ diff --git a/src/commands/debugger.ts b/src/commands/debugger.ts index 934bd62..625b565 100644 --- a/src/commands/debugger.ts +++ b/src/commands/debugger.ts @@ -5,6 +5,8 @@ import { Container } from '../container'; export const registerDebuggerCommands = (context: vscode.ExtensionContext) => { vscode.commands.registerCommand('powershell-universal.attachRunspace', (item) => attachRunspace(item, context)); + vscode.commands.registerCommand('powershell-universal.connectDebugger', _ => Container.universal.connectDebugger()); + vscode.commands.registerCommand('powershell-universal.disconnectDebugger', _ => Container.universal.disconnectDebugger()); vscode.debug.registerDebugAdapterDescriptorFactory('powershelluniversal', { createDebugAdapterDescriptor: (_session) => { diff --git a/src/extension.ts b/src/extension.ts index 9d4908a..8152109 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -117,7 +117,6 @@ export async function activate(context: vscode.ExtensionContext) { if (Container.universal.hasConnection() && !localDevConfig) { if (await Container.universal.waitForAlive()) { - await Container.universal.connectDebugger(); await Container.universal.installAndLoadModule(); } } diff --git a/src/universal.ts b/src/universal.ts index ccb00ec..54c79c8 100644 --- a/src/universal.ts +++ b/src/universal.ts @@ -718,6 +718,12 @@ export class Universal { this.debugAdapter = undefined; } + disconnectDebugger() { + if (this.hubConnection) { + this.hubConnection.stop(); + } + } + connectDebugger() { const settings = load(); @@ -755,12 +761,14 @@ export class Universal { this.hubConnection.onclose(() => { vscode.window.showInformationMessage("Disconnected from PowerShell Universal Debugger."); + vscode.commands.executeCommand('setContext', 'powershell-universal.debuggerConnected', false); }); this.hubConnection.start().then(() => { this.hubConnection?.invoke("connect").then((msg) => { if (msg.success) { vscode.window.showInformationMessage(msg.message); + vscode.commands.executeCommand('setContext', 'powershell-universal.debuggerConnected', true); } else { vscode.window.showErrorMessage(msg.message); }