blob: c8e5146e29cea4d757b9a8429a8a699b6e68f521 [file] [log] [blame]
import * as vscode from "vscode";
import { LLDBDapDescriptorFactory } from "./debug-adapter-factory";
import { DisposableContext } from "./disposable-context";
import { LaunchUriHandler } from "./uri-launch-handler";
import { LLDBDapConfigurationProvider } from "./debug-configuration-provider";
import { LLDBDapServer } from "./lldb-dap-server";
import { DebugSessionTracker } from "./debug-session-tracker";
import {
ModulesDataProvider,
ModuleProperty,
} from "./ui/modules-data-provider";
/**
* This class represents the extension and manages its life cycle. Other extensions
* using it as as library should use this class as the main entry point.
*/
export class LLDBDapExtension extends DisposableContext {
constructor() {
super();
const lldbDapServer = new LLDBDapServer();
const sessionTracker = new DebugSessionTracker();
this.pushSubscription(
lldbDapServer,
sessionTracker,
vscode.debug.registerDebugConfigurationProvider(
"lldb-dap",
new LLDBDapConfigurationProvider(lldbDapServer),
),
vscode.debug.registerDebugAdapterDescriptorFactory(
"lldb-dap",
new LLDBDapDescriptorFactory(),
),
vscode.debug.registerDebugAdapterTrackerFactory(
"lldb-dap",
sessionTracker,
),
vscode.window.registerTreeDataProvider(
"lldb-dap.modules",
new ModulesDataProvider(sessionTracker),
),
vscode.window.registerUriHandler(new LaunchUriHandler()),
);
vscode.commands.registerCommand(
"lldb-dap.modules.copyProperty",
(node: ModuleProperty) => vscode.env.clipboard.writeText(node.value),
);
}
}
/**
* This is the entry point when initialized by VS Code.
*/
export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(new LLDBDapExtension());
}