Skip to content

Commit 5baf43b

Browse files
Christian Weichelspoenemann
Christian Weichel
authored andcommitted
Integrate with classic mode and start debugging immediately
1 parent 68ff6ac commit 5baf43b

5 files changed

+88
-1
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { DebugConfigurationManager } from "@theia/debug/lib/browser/debug-configuration-manager";
2+
import { injectable } from "inversify";
3+
4+
@injectable()
5+
export class ArduinoDebugConfigurationManager extends DebugConfigurationManager {
6+
7+
async addConfiguration() {
8+
const { model } = this;
9+
if (!model) {
10+
return;
11+
}
12+
await this.doCreate(model);
13+
await this.updateModels();
14+
}
15+
16+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { injectable } from "inversify";
2+
import { DebugFrontendApplicationContribution } from '@theia/debug/lib/browser/debug-frontend-application-contribution';
3+
import { DebugSessionOptions } from "@theia/debug/lib/browser/debug-session-options";
4+
5+
@injectable()
6+
export class ArduinoDebugFrontendApplicationContribution extends DebugFrontendApplicationContribution {
7+
8+
async start(noDebug?: boolean, debugSessionOptions?: DebugSessionOptions): Promise<void> {
9+
let current = debugSessionOptions ? debugSessionOptions : this.configurations.current;
10+
// If no configurations are currently present, create the `launch.json` and prompt users to select the config.
11+
if (!current) {
12+
await this.configurations.addConfiguration();
13+
await this.configurations.load()
14+
current = this.configurations.current;
15+
}
16+
if (current) {
17+
if (noDebug !== undefined) {
18+
current = {
19+
...current,
20+
configuration: {
21+
...current.configuration,
22+
noDebug
23+
}
24+
};
25+
}
26+
await this.manager.start(current);
27+
}
28+
}
29+
30+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,24 @@
11
import { ContainerModule } from 'inversify';
22
import { VariableContribution } from '@theia/variable-resolver/lib/browser';
33
import { ArduinoVariableResolver } from './arduino-variable-resolver';
4+
import { ArduinoAdvancedMode } from 'arduino-ide-extension/lib/browser/arduino-frontend-contribution';
5+
import { DebugFrontendApplicationContribution } from '@theia/debug/lib/browser/debug-frontend-application-contribution';
6+
import { SilentDebugFrontendApplicationContribution } from './silent-debug-frontend-application-contribution';
7+
import { DebugConfigurationManager } from '@theia/debug/lib/browser/debug-configuration-manager';
8+
import { ArduinoDebugConfigurationManager } from './arduino-debug-configuration-manager';
9+
import { ArduinoDebugFrontendApplicationContribution } from './arduino-debug-frontend-application-contribution';
410

511
export default new ContainerModule((bind, unbind, isBound, rebind) => {
612
bind(ArduinoVariableResolver).toSelf().inSingletonScope();
713
bind(VariableContribution).toService(ArduinoVariableResolver);
14+
15+
if (!ArduinoAdvancedMode.TOGGLED) {
16+
unbind(DebugFrontendApplicationContribution);
17+
bind(DebugFrontendApplicationContribution).to(SilentDebugFrontendApplicationContribution);
18+
} else {
19+
unbind(DebugConfigurationManager);
20+
bind(DebugConfigurationManager).to(ArduinoDebugConfigurationManager).inSingletonScope();
21+
unbind(DebugFrontendApplicationContribution);
22+
bind(DebugFrontendApplicationContribution).to(ArduinoDebugFrontendApplicationContribution);
23+
}
824
});
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { injectable } from "inversify";
2+
import { DebugFrontendApplicationContribution } from '@theia/debug/lib/browser/debug-frontend-application-contribution';
3+
import { MenuModelRegistry, CommandRegistry } from "@theia/core";
4+
import { KeybindingRegistry } from "@theia/core/lib/browser";
5+
import { TabBarToolbarRegistry } from "@theia/core/lib/browser/shell/tab-bar-toolbar";
6+
7+
@injectable()
8+
export class SilentDebugFrontendApplicationContribution extends DebugFrontendApplicationContribution {
9+
10+
async initializeLayout(): Promise<void> {
11+
}
12+
13+
registerMenus(menus: MenuModelRegistry): void {
14+
}
15+
16+
registerCommands(registry: CommandRegistry): void {
17+
}
18+
19+
registerKeybindings(keybindings: KeybindingRegistry): void {
20+
}
21+
22+
registerToolbarItems(toolbar: TabBarToolbarRegistry): void {
23+
}
24+
25+
}

arduino-debugger-extension/src/node/arduino-debug-adapter-contribution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,4 +150,4 @@ interface ActualDebugConfig extends DebugConfiguration {
150150
objdump: string
151151
// extra gdb commands to run after initialisation
152152
initCommands?: string[]
153-
}
153+
}

0 commit comments

Comments
 (0)