From 5baf43bf2520aa5caf8a42a0315da1df313888bb Mon Sep 17 00:00:00 2001 From: Christian Weichel Date: Tue, 19 Nov 2019 20:01:31 +0100 Subject: [PATCH] Integrate with classic mode and start debugging immediately --- .../arduino-debug-configuration-manager.ts | 16 ++++++++++ ...debug-frontend-application-contribution.ts | 30 +++++++++++++++++++ .../src/browser/frontend-module.ts | 16 ++++++++++ ...debug-frontend-application-contribution.ts | 25 ++++++++++++++++ .../arduino-debug-adapter-contribution.ts | 2 +- 5 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 arduino-debugger-extension/src/browser/arduino-debug-configuration-manager.ts create mode 100644 arduino-debugger-extension/src/browser/arduino-debug-frontend-application-contribution.ts create mode 100644 arduino-debugger-extension/src/browser/silent-debug-frontend-application-contribution.ts diff --git a/arduino-debugger-extension/src/browser/arduino-debug-configuration-manager.ts b/arduino-debugger-extension/src/browser/arduino-debug-configuration-manager.ts new file mode 100644 index 00000000..56990444 --- /dev/null +++ b/arduino-debugger-extension/src/browser/arduino-debug-configuration-manager.ts @@ -0,0 +1,16 @@ +import { DebugConfigurationManager } from "@theia/debug/lib/browser/debug-configuration-manager"; +import { injectable } from "inversify"; + +@injectable() +export class ArduinoDebugConfigurationManager extends DebugConfigurationManager { + + async addConfiguration() { + const { model } = this; + if (!model) { + return; + } + await this.doCreate(model); + await this.updateModels(); + } + +} \ No newline at end of file diff --git a/arduino-debugger-extension/src/browser/arduino-debug-frontend-application-contribution.ts b/arduino-debugger-extension/src/browser/arduino-debug-frontend-application-contribution.ts new file mode 100644 index 00000000..37e5fb0f --- /dev/null +++ b/arduino-debugger-extension/src/browser/arduino-debug-frontend-application-contribution.ts @@ -0,0 +1,30 @@ +import { injectable } from "inversify"; +import { DebugFrontendApplicationContribution } from '@theia/debug/lib/browser/debug-frontend-application-contribution'; +import { DebugSessionOptions } from "@theia/debug/lib/browser/debug-session-options"; + +@injectable() +export class ArduinoDebugFrontendApplicationContribution extends DebugFrontendApplicationContribution { + + async start(noDebug?: boolean, debugSessionOptions?: DebugSessionOptions): Promise { + let current = debugSessionOptions ? debugSessionOptions : this.configurations.current; + // If no configurations are currently present, create the `launch.json` and prompt users to select the config. + if (!current) { + await this.configurations.addConfiguration(); + await this.configurations.load() + current = this.configurations.current; + } + if (current) { + if (noDebug !== undefined) { + current = { + ...current, + configuration: { + ...current.configuration, + noDebug + } + }; + } + await this.manager.start(current); + } + } + +} \ No newline at end of file diff --git a/arduino-debugger-extension/src/browser/frontend-module.ts b/arduino-debugger-extension/src/browser/frontend-module.ts index fdd71fe9..2c88dcda 100644 --- a/arduino-debugger-extension/src/browser/frontend-module.ts +++ b/arduino-debugger-extension/src/browser/frontend-module.ts @@ -1,8 +1,24 @@ import { ContainerModule } from 'inversify'; import { VariableContribution } from '@theia/variable-resolver/lib/browser'; import { ArduinoVariableResolver } from './arduino-variable-resolver'; +import { ArduinoAdvancedMode } from 'arduino-ide-extension/lib/browser/arduino-frontend-contribution'; +import { DebugFrontendApplicationContribution } from '@theia/debug/lib/browser/debug-frontend-application-contribution'; +import { SilentDebugFrontendApplicationContribution } from './silent-debug-frontend-application-contribution'; +import { DebugConfigurationManager } from '@theia/debug/lib/browser/debug-configuration-manager'; +import { ArduinoDebugConfigurationManager } from './arduino-debug-configuration-manager'; +import { ArduinoDebugFrontendApplicationContribution } from './arduino-debug-frontend-application-contribution'; export default new ContainerModule((bind, unbind, isBound, rebind) => { bind(ArduinoVariableResolver).toSelf().inSingletonScope(); bind(VariableContribution).toService(ArduinoVariableResolver); + + if (!ArduinoAdvancedMode.TOGGLED) { + unbind(DebugFrontendApplicationContribution); + bind(DebugFrontendApplicationContribution).to(SilentDebugFrontendApplicationContribution); + } else { + unbind(DebugConfigurationManager); + bind(DebugConfigurationManager).to(ArduinoDebugConfigurationManager).inSingletonScope(); + unbind(DebugFrontendApplicationContribution); + bind(DebugFrontendApplicationContribution).to(ArduinoDebugFrontendApplicationContribution); + } }); diff --git a/arduino-debugger-extension/src/browser/silent-debug-frontend-application-contribution.ts b/arduino-debugger-extension/src/browser/silent-debug-frontend-application-contribution.ts new file mode 100644 index 00000000..45deafcc --- /dev/null +++ b/arduino-debugger-extension/src/browser/silent-debug-frontend-application-contribution.ts @@ -0,0 +1,25 @@ +import { injectable } from "inversify"; +import { DebugFrontendApplicationContribution } from '@theia/debug/lib/browser/debug-frontend-application-contribution'; +import { MenuModelRegistry, CommandRegistry } from "@theia/core"; +import { KeybindingRegistry } from "@theia/core/lib/browser"; +import { TabBarToolbarRegistry } from "@theia/core/lib/browser/shell/tab-bar-toolbar"; + +@injectable() +export class SilentDebugFrontendApplicationContribution extends DebugFrontendApplicationContribution { + + async initializeLayout(): Promise { + } + + registerMenus(menus: MenuModelRegistry): void { + } + + registerCommands(registry: CommandRegistry): void { + } + + registerKeybindings(keybindings: KeybindingRegistry): void { + } + + registerToolbarItems(toolbar: TabBarToolbarRegistry): void { + } + +} \ No newline at end of file diff --git a/arduino-debugger-extension/src/node/arduino-debug-adapter-contribution.ts b/arduino-debugger-extension/src/node/arduino-debug-adapter-contribution.ts index b52d61b4..2c36bc33 100644 --- a/arduino-debugger-extension/src/node/arduino-debug-adapter-contribution.ts +++ b/arduino-debugger-extension/src/node/arduino-debug-adapter-contribution.ts @@ -150,4 +150,4 @@ interface ActualDebugConfig extends DebugConfiguration { objdump: string // extra gdb commands to run after initialisation initCommands?: string[] -} \ No newline at end of file +}