diff --git a/src/client/api.ts b/src/client/api.ts index 908da4be7103..845bd4858a8b 100644 --- a/src/client/api.ts +++ b/src/client/api.ts @@ -145,6 +145,8 @@ export function buildApi( }, }, pylance: { + getOutputChannel: () => outputChannel.channel, + //deprecated: Pyance now creates client createClient: (...args: any[]): BaseLanguageClient => { // Make sure we share output channel so that we can share one with // Jedi as well. diff --git a/src/client/browser/api.ts b/src/client/browser/api.ts index ac2df8d0ffed..3dfc485bd971 100644 --- a/src/client/browser/api.ts +++ b/src/client/browser/api.ts @@ -7,6 +7,7 @@ import { BaseLanguageClient } from 'vscode-languageclient'; import { LanguageClient } from 'vscode-languageclient/browser'; import { PYTHON_LANGUAGE } from '../common/constants'; import { ApiForPylance, TelemetryReporter } from '../pylanceApi'; +import { LogOutputChannel } from 'vscode'; export interface IBrowserExtensionApi { /** @@ -16,10 +17,12 @@ export interface IBrowserExtensionApi { pylance: ApiForPylance; } -export function buildApi(reporter: TelemetryReporter): IBrowserExtensionApi { +export function buildApi(reporter: TelemetryReporter, outputChannel: LogOutputChannel): IBrowserExtensionApi { const api: IBrowserExtensionApi = { pylance: { + getOutputChannel: () => outputChannel, // eslint-disable-next-line @typescript-eslint/no-explicit-any + //deprecated: Pyance now creates client createClient: (...args: any[]): BaseLanguageClient => new LanguageClient(PYTHON_LANGUAGE, 'Python Language Server', args[0], args[1]), start: (client: BaseLanguageClient): Promise => client.start(), diff --git a/src/client/browser/extension.ts b/src/client/browser/extension.ts index 132618430551..fc393489bdbd 100644 --- a/src/client/browser/extension.ts +++ b/src/client/browser/extension.ts @@ -12,6 +12,7 @@ import { EventName } from '../telemetry/constants'; import { createStatusItem } from './intellisenseStatus'; import { PylanceApi } from '../activation/node/pylanceApi'; import { buildApi, IBrowserExtensionApi } from './api'; +import { OutputChannelNames } from '../common/utils/localize'; interface BrowserConfig { distUrl: string; // URL to Pylance's dist folder. @@ -23,7 +24,8 @@ let pylanceApi: PylanceApi | undefined; export function activate(context: vscode.ExtensionContext): Promise { const reporter = getTelemetryReporter(); - const activationPromise = Promise.resolve(buildApi(reporter)); + const outputChannel = vscode.window.createOutputChannel(OutputChannelNames.python, { log: true }); + const activationPromise = Promise.resolve(buildApi(reporter, outputChannel)); const pylanceExtension = vscode.extensions.getExtension(PYLANCE_EXTENSION_ID); if (pylanceExtension) { // Make sure we run pylance once we activated core extension. diff --git a/src/client/pylanceApi.ts b/src/client/pylanceApi.ts index b839d0d9c2b7..af47581607eb 100644 --- a/src/client/pylanceApi.ts +++ b/src/client/pylanceApi.ts @@ -3,6 +3,7 @@ import { TelemetryEventMeasurements, TelemetryEventProperties } from '@vscode/extension-telemetry'; import { BaseLanguageClient } from 'vscode-languageclient'; +import { LogOutputChannel } from 'vscode'; export interface TelemetryReporter { sendTelemetryEvent( @@ -18,7 +19,9 @@ export interface TelemetryReporter { } export interface ApiForPylance { + getOutputChannel(): LogOutputChannel; // eslint-disable-next-line @typescript-eslint/no-explicit-any + // deprecated createClient(...args: any[]): BaseLanguageClient; start(client: BaseLanguageClient): Promise; stop(client: BaseLanguageClient): Promise;