| 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()); |
| } |