(context: vscode.ExtensionContext)
| 32 | let sshConfigWatcher: chokidar.FSWatcher | undefined; |
| 33 | |
| 34 | export async function initialize(context: vscode.ExtensionContext): Promise<void> { |
| 35 | // Activate Process Picker Commands |
| 36 | const attachItemsProvider: AttachItemsProvider = NativeAttachItemsProviderFactory.Get(); |
| 37 | const attacher: AttachPicker = new AttachPicker(attachItemsProvider); |
| 38 | disposables.push(vscode.commands.registerCommand('extension.pickNativeProcess', () => attacher.ShowAttachEntries())); |
| 39 | const remoteAttacher: RemoteAttachPicker = new RemoteAttachPicker(); |
| 40 | disposables.push(vscode.commands.registerCommand('extension.pickRemoteNativeProcess', (any) => remoteAttacher.ShowAttachEntries(any))); |
| 41 | |
| 42 | // Activate ConfigurationProvider |
| 43 | const assetProvider: IConfigurationAssetProvider = ConfigurationAssetProviderFactory.getConfigurationProvider(); |
| 44 | |
| 45 | // Register DebugConfigurationProviders for "Run and Debug" in Debug Panel. |
| 46 | // On Windows platforms, the cppvsdbg debugger will also be registered for initial configurations. |
| 47 | let cppVsDebugProvider: DebugConfigurationProvider | null = null; |
| 48 | if (os.platform() === 'win32') { |
| 49 | cppVsDebugProvider = new DebugConfigurationProvider(assetProvider, DebuggerType.cppvsdbg); |
| 50 | disposables.push(vscode.debug.registerDebugConfigurationProvider(DebuggerType.cppvsdbg, instrument(cppVsDebugProvider), vscode.DebugConfigurationProviderTriggerKind.Dynamic)); |
| 51 | } |
| 52 | const cppDebugProvider: DebugConfigurationProvider = new DebugConfigurationProvider(assetProvider, DebuggerType.cppdbg); |
| 53 | disposables.push(vscode.debug.registerDebugConfigurationProvider(DebuggerType.cppdbg, instrument(cppDebugProvider), vscode.DebugConfigurationProviderTriggerKind.Dynamic)); |
| 54 | |
| 55 | // Register DebugConfigurationProviders for "Run and Debug" play button. |
| 56 | const debugProvider: DebugConfigurationProvider = new DebugConfigurationProvider(assetProvider, DebuggerType.all); |
| 57 | // eslint-disable-next-line @typescript-eslint/no-misused-promises |
| 58 | disposables.push(vscode.commands.registerTextEditorCommand("C_Cpp.BuildAndDebugFile", async (textEditor: vscode.TextEditor, _edit: vscode.TextEditorEdit, ..._args: any[]) => { await debugProvider.buildAndDebug(textEditor); })); |
| 59 | // eslint-disable-next-line @typescript-eslint/no-misused-promises |
| 60 | disposables.push(vscode.commands.registerTextEditorCommand("C_Cpp.BuildAndRunFile", async (textEditor: vscode.TextEditor, _edit: vscode.TextEditorEdit, ..._args: any[]) => { await debugProvider.buildAndRun(textEditor); })); |
| 61 | // eslint-disable-next-line @typescript-eslint/no-misused-promises |
| 62 | disposables.push(vscode.commands.registerTextEditorCommand("C_Cpp.AddDebugConfiguration", async (textEditor: vscode.TextEditor, _edit: vscode.TextEditorEdit, ..._args: any[]) => { |
| 63 | const folder: vscode.WorkspaceFolder | undefined = vscode.workspace.getWorkspaceFolder(textEditor.document.uri); |
| 64 | if (!folder) { |
| 65 | void vscode.window.showWarningMessage(localize("add.debug.configuration.not.available.for.single.file", "Add debug configuration is not available for single file.")); |
| 66 | } |
| 67 | await debugProvider.addDebugConfiguration(textEditor); |
| 68 | })); |
| 69 | |
| 70 | assetProvider.getConfigurationSnippets(); |
| 71 | |
| 72 | const launchJsonDocumentSelector: vscode.DocumentSelector = [{ |
| 73 | scheme: 'file', |
| 74 | language: 'jsonc', |
| 75 | pattern: '**/launch.json' |
| 76 | }]; |
| 77 | |
| 78 | // ConfigurationSnippetProvider needs to be initiallized after configurationProvider calls getConfigurationSnippets. |
| 79 | disposables.push(vscode.languages.registerCompletionItemProvider(launchJsonDocumentSelector, instrument(new ConfigurationSnippetProvider(assetProvider)))); |
| 80 | |
| 81 | // Register Debug Adapters |
| 82 | disposables.push(vscode.debug.registerDebugAdapterDescriptorFactory(DebuggerType.cppvsdbg, new CppvsdbgDebugAdapterDescriptorFactory(context))); |
| 83 | disposables.push(vscode.debug.registerDebugAdapterDescriptorFactory(DebuggerType.cppdbg, new CppdbgDebugAdapterDescriptorFactory(context))); |
| 84 | |
| 85 | // SSH Targets View |
| 86 | await initializeSshTargets(); |
| 87 | const sshTargetsProvider: SshTargetsProvider = new SshTargetsProvider(); |
| 88 | disposables.push(vscode.window.registerTreeDataProvider('CppSshTargetsView', instrument(sshTargetsProvider))); |
| 89 | disposables.push(vscode.commands.registerCommand(addSshTargetCmd, () => enableSshTargetsViewAndRun(addSshTargetImpl))); |
| 90 | disposables.push(vscode.commands.registerCommand('C_Cpp.removeSshTarget', (node?: BaseNode) => enableSshTargetsViewAndRun(removeSshTargetImpl, node))); |
| 91 | disposables.push(vscode.commands.registerCommand(refreshCppSshTargetsViewCmd, (node?: BaseNode) => enableSshTargetsViewAndRun((node?: BaseNode) => sshTargetsProvider.refresh(node), node))); |
nothing calls this directly
no test coverage detected