Skip to content

Commit 590b6cb

Browse files
committed
avoid using windows vscode method directly, better separate customLinkProvider
1 parent 78a25a4 commit 590b6cb

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

src/client/common/vscodeApis/windowApis.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
TerminalShellExecutionStartEvent,
2222
LogOutputChannel,
2323
OutputChannel,
24+
TerminalLinkProvider,
2425
} from 'vscode';
2526
import { createDeferred, Deferred } from '../utils/async';
2627
import { Resource } from '../types';
@@ -258,3 +259,7 @@ export function createOutputChannel(name: string, languageId?: string): OutputCh
258259
export function createLogOutputChannel(name: string, options: { log: true }): LogOutputChannel {
259260
return window.createOutputChannel(name, options);
260261
}
262+
263+
export function registerTerminalLinkProvider(provider: TerminalLinkProvider): Disposable {
264+
return window.registerTerminalLinkProvider(provider);
265+
}

src/client/extensionActivation.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ import { registerReplCommands, registerReplExecuteOnEnter, registerStartNativeRe
5555
import { registerTriggerForTerminalREPL } from './terminals/codeExecution/terminalReplWatcher';
5656
import { registerPythonStartup } from './terminals/pythonStartup';
5757
import { registerPixiFeatures } from './pythonEnvironments/common/environmentManagers/pixi';
58-
import { CustomTerminalLinkProvider } from './terminals/pythonStartupLinkProvider';
58+
import { CustomTerminalLinkProvider, registerCustomTerminalLinkProvider } from './terminals/pythonStartupLinkProvider';
5959

6060
export async function activateComponents(
6161
// `ext` is passed to any extra activation funcs.
@@ -116,10 +116,7 @@ export function activateFeatures(ext: ExtensionState, _components: Components):
116116
registerStartNativeReplCommand(ext.disposables, interpreterService);
117117
registerReplCommands(ext.disposables, interpreterService, executionHelper, commandManager);
118118
registerReplExecuteOnEnter(ext.disposables, interpreterService, commandManager);
119-
// TODO: proably organize this into new file.
120-
const linkProvider = new CustomTerminalLinkProvider();
121-
// TODO: Do not directly use windows API. Wrap it like we do with command APIs.
122-
ext.context.subscriptions.push(window.registerTerminalLinkProvider(linkProvider));
119+
registerCustomTerminalLinkProvider(ext.context); // TODO: Is there way to avoid passing in ext.context?
123120
}
124121

125122
/// //////////////////////////

src/client/terminals/pythonStartupLinkProvider.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/* eslint-disable class-methods-use-this */
22
import * as vscode from 'vscode';
33
import { executeCommand } from '../common/vscodeApis/commandApis';
4+
import { IExtensionContext } from '../common/types';
5+
import { registerTerminalLinkProvider } from '../common/vscodeApis/windowApis';
46

57
interface CustomTerminalLink extends vscode.TerminalLink {
68
command: string;
@@ -45,3 +47,8 @@ export class CustomTerminalLinkProvider implements vscode.TerminalLinkProvider<C
4547
await executeCommand(link.command);
4648
}
4749
}
50+
51+
export function registerCustomTerminalLinkProvider(extensionContext: IExtensionContext): void {
52+
const provider = new CustomTerminalLinkProvider();
53+
extensionContext.subscriptions.push(registerTerminalLinkProvider(provider));
54+
}

0 commit comments

Comments
 (0)