Skip to content

Commit

Permalink
avoid using windows vscode method directly, better separate customLin…
Browse files Browse the repository at this point in the history
…kProvider
  • Loading branch information
anthonykim1 committed Jan 22, 2025
1 parent 78a25a4 commit 590b6cb
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 5 deletions.
5 changes: 5 additions & 0 deletions src/client/common/vscodeApis/windowApis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import {
TerminalShellExecutionStartEvent,
LogOutputChannel,
OutputChannel,
TerminalLinkProvider,
} from 'vscode';
import { createDeferred, Deferred } from '../utils/async';
import { Resource } from '../types';
Expand Down Expand Up @@ -258,3 +259,7 @@ export function createOutputChannel(name: string, languageId?: string): OutputCh
export function createLogOutputChannel(name: string, options: { log: true }): LogOutputChannel {
return window.createOutputChannel(name, options);
}

export function registerTerminalLinkProvider(provider: TerminalLinkProvider): Disposable {
return window.registerTerminalLinkProvider(provider);
}
7 changes: 2 additions & 5 deletions src/client/extensionActivation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ import { registerReplCommands, registerReplExecuteOnEnter, registerStartNativeRe
import { registerTriggerForTerminalREPL } from './terminals/codeExecution/terminalReplWatcher';
import { registerPythonStartup } from './terminals/pythonStartup';
import { registerPixiFeatures } from './pythonEnvironments/common/environmentManagers/pixi';
import { CustomTerminalLinkProvider } from './terminals/pythonStartupLinkProvider';
import { CustomTerminalLinkProvider, registerCustomTerminalLinkProvider } from './terminals/pythonStartupLinkProvider';

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

/// //////////////////////////
Expand Down
7 changes: 7 additions & 0 deletions src/client/terminals/pythonStartupLinkProvider.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
/* eslint-disable class-methods-use-this */
import * as vscode from 'vscode';
import { executeCommand } from '../common/vscodeApis/commandApis';
import { IExtensionContext } from '../common/types';
import { registerTerminalLinkProvider } from '../common/vscodeApis/windowApis';

interface CustomTerminalLink extends vscode.TerminalLink {
command: string;
Expand Down Expand Up @@ -45,3 +47,8 @@ export class CustomTerminalLinkProvider implements vscode.TerminalLinkProvider<C
await executeCommand(link.command);
}
}

export function registerCustomTerminalLinkProvider(extensionContext: IExtensionContext): void {
const provider = new CustomTerminalLinkProvider();
extensionContext.subscriptions.push(registerTerminalLinkProvider(provider));
}

0 comments on commit 590b6cb

Please sign in to comment.