Skip to content

Commit 6fe19ed

Browse files
authored
Removed ILanguageServer no longer used. (#19921)
I am removing ILanguageServer and all interfaces/types existed around it since it seems it is no longer used. ... it looks like ILanguageServer used to be used for old jupyter (https://github.com/microsoft/vscode-python/blob/main/src/client/jupyter/jupyterIntegration.ts#L146) but it no longer used by jupyter anymore (https://github.com/microsoft/vscode-jupyter/blob/70dc27d55c95cb81bfd32a6505b7fb357bfe624e/src/platform/api/types.ts#L74). this PR (microsoft/vscode-jupyter#10889) removed it from jupyter since it is not used. but it is never removed from python extension. ... I am doing this as a part of on-going client move work since we do not want to expose ILanguageServer to pass to jupyter extension unless it is required.
1 parent f9f3b96 commit 6fe19ed

18 files changed

+21
-643
lines changed

src/client/activation/jedi/languageServerProxy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { killPid } from '../../common/process/rawProcessApis';
1616
import { traceDecoratorError, traceDecoratorVerbose, traceError } from '../../logging';
1717

1818
export class JediLanguageServerProxy implements ILanguageServerProxy {
19-
public languageClient: LanguageClient | undefined;
19+
private languageClient: LanguageClient | undefined;
2020

2121
private readonly disposables: Disposable[] = [];
2222

src/client/activation/jedi/manager.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,6 @@ export class JediLanguageServerManager implements ILanguageServerManager {
5959
this.disposables.forEach((d) => d.dispose());
6060
}
6161

62-
public get languageProxy(): ILanguageServerProxy | undefined {
63-
return this.languageServerProxy;
64-
}
65-
6662
@traceDecoratorError('Failed to start language server')
6763
public async start(resource: Resource, interpreter: PythonEnvironment | undefined): Promise<void> {
6864
this.resource = resource;

src/client/activation/node/manager.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ import { captureTelemetry } from '../../telemetry';
1111
import { EventName } from '../../telemetry/constants';
1212
import { Commands } from '../commands';
1313
import { NodeLanguageClientMiddleware } from './languageClientMiddleware';
14-
import { ILanguageServerAnalysisOptions, ILanguageServerManager, ILanguageServerProxy } from '../types';
14+
import { ILanguageServerAnalysisOptions, ILanguageServerManager } from '../types';
1515
import { traceDecoratorError, traceDecoratorVerbose } from '../../logging';
1616
import { PYLANCE_EXTENSION_ID } from '../../common/constants';
17+
import { NodeLanguageServerProxy } from './languageServerProxy';
1718

1819
export class NodeLanguageServerManager implements ILanguageServerManager {
1920
private resource!: Resource;
@@ -35,7 +36,7 @@ export class NodeLanguageServerManager implements ILanguageServerManager {
3536
constructor(
3637
private readonly serviceContainer: IServiceContainer,
3738
private readonly analysisOptions: ILanguageServerAnalysisOptions,
38-
private readonly languageServerProxy: ILanguageServerProxy,
39+
private readonly languageServerProxy: NodeLanguageServerProxy,
3940
commandManager: ICommandManager,
4041
private readonly extensions: IExtensions,
4142
) {
@@ -59,10 +60,6 @@ export class NodeLanguageServerManager implements ILanguageServerManager {
5960
this.disposables.forEach((d) => d.dispose());
6061
}
6162

62-
public get languageProxy(): ILanguageServerProxy {
63-
return this.languageServerProxy;
64-
}
65-
6663
@traceDecoratorError('Failed to start language server')
6764
public async start(resource: Resource, interpreter: PythonEnvironment | undefined): Promise<void> {
6865
if (this.started) {

src/client/activation/serviceRegistry.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import {
99
IExtensionActivationManager,
1010
IExtensionActivationService,
1111
IExtensionSingleActivationService,
12-
ILanguageServerCache,
1312
ILanguageServerOutputChannel,
1413
} from './types';
1514
import { LoadLanguageServerExtension } from './common/loadLanguageServerExtension';
@@ -36,7 +35,6 @@ export function registerTypes(serviceManager: IServiceManager): void {
3635

3736
serviceManager.addSingleton<ILanguageServerWatcher>(ILanguageServerWatcher, LanguageServerWatcher);
3837
serviceManager.addBinding(ILanguageServerWatcher, IExtensionActivationService);
39-
serviceManager.addBinding(ILanguageServerWatcher, ILanguageServerCache);
4038
serviceManager.addSingleton<LspNotebooksExperiment>(LspNotebooksExperiment, LspNotebooksExperiment);
4139
serviceManager.addBinding(LspNotebooksExperiment, IExtensionSingleActivationService);
4240
}

src/client/activation/types.ts

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,8 @@
33

44
'use strict';
55

6-
import {
7-
CodeLensProvider,
8-
CompletionItemProvider,
9-
DefinitionProvider,
10-
DocumentSymbolProvider,
11-
Event,
12-
HoverProvider,
13-
ReferenceProvider,
14-
RenameProvider,
15-
SignatureHelpProvider,
16-
} from 'vscode';
6+
import { Event } from 'vscode';
177
import { LanguageClient, LanguageClientOptions } from 'vscode-languageclient/node';
18-
import * as lsp from 'vscode-languageserver-protocol';
198
import type { IDisposable, IOutputChannel, Resource } from '../common/types';
209
import { PythonEnvironment } from '../pythonEnvironments/info';
2110

@@ -69,41 +58,13 @@ export enum LanguageServerType {
6958
None = 'None',
7059
}
7160

72-
/**
73-
* This interface is a subset of the vscode-protocol connection interface.
74-
* It's the minimum set of functions needed in order to talk to a language server.
75-
*/
76-
export type ILanguageServerConnection = Pick<
77-
lsp.ProtocolConnection,
78-
'sendRequest' | 'sendNotification' | 'onProgress' | 'sendProgress' | 'onNotification' | 'onRequest'
79-
>;
80-
81-
export interface ILanguageServer
82-
extends RenameProvider,
83-
DefinitionProvider,
84-
HoverProvider,
85-
ReferenceProvider,
86-
CompletionItemProvider,
87-
CodeLensProvider,
88-
DocumentSymbolProvider,
89-
SignatureHelpProvider,
90-
IDisposable {
91-
readonly connection?: ILanguageServerConnection;
92-
readonly capabilities?: lsp.ServerCapabilities;
93-
}
94-
9561
export const ILanguageServerActivator = Symbol('ILanguageServerActivator');
96-
export interface ILanguageServerActivator extends ILanguageServer {
62+
export interface ILanguageServerActivator {
9763
start(resource: Resource, interpreter: PythonEnvironment | undefined): Promise<void>;
9864
activate(): void;
9965
deactivate(): void;
10066
}
10167

102-
export const ILanguageServerCache = Symbol('ILanguageServerCache');
103-
export interface ILanguageServerCache {
104-
get(resource: Resource, interpreter?: PythonEnvironment): Promise<ILanguageServer>;
105-
}
106-
10768
export const ILanguageClientFactory = Symbol('ILanguageClientFactory');
10869
export interface ILanguageClientFactory {
10970
createLanguageClient(
@@ -121,18 +82,13 @@ export interface ILanguageServerAnalysisOptions extends IDisposable {
12182
}
12283
export const ILanguageServerManager = Symbol('ILanguageServerManager');
12384
export interface ILanguageServerManager extends IDisposable {
124-
readonly languageProxy: ILanguageServerProxy | undefined;
12585
start(resource: Resource, interpreter: PythonEnvironment | undefined): Promise<void>;
12686
connect(): void;
12787
disconnect(): void;
12888
}
12989

13090
export const ILanguageServerProxy = Symbol('ILanguageServerProxy');
13191
export interface ILanguageServerProxy extends IDisposable {
132-
/**
133-
* LanguageClient in use
134-
*/
135-
languageClient: LanguageClient | undefined;
13692
start(
13793
resource: Resource,
13894
interpreter: PythonEnvironment | undefined,

src/client/jupyter/jupyterIntegration.ts

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66

77
import { inject, injectable, named } from 'inversify';
88
import { dirname } from 'path';
9-
import { CancellationToken, Disposable, Event, Extension, Memento, Uri } from 'vscode';
10-
import * as lsp from 'vscode-languageserver-protocol';
9+
import { CancellationToken, Event, Extension, Memento, Uri } from 'vscode';
1110
import type { SemVer } from 'semver';
12-
import { ILanguageServerCache, ILanguageServerConnection } from '../activation/types';
1311
import { IWorkspaceService } from '../common/application/types';
1412
import { JUPYTER_EXTENSION_ID } from '../common/constants';
1513
import { InterpreterUri, ModuleInstallFlags } from '../common/installer/types';
@@ -23,7 +21,6 @@ import {
2321
ProductInstallStatus,
2422
Resource,
2523
} from '../common/types';
26-
import { isResource } from '../common/utils/misc';
2724
import { getDebugpyPackagePath } from '../debugger/extension/adapter/remoteLaunchers';
2825
import { IEnvironmentActivationService } from '../interpreter/activation/types';
2926
import { IInterpreterQuickPickItem, IInterpreterSelector } from '../interpreter/configuration/types';
@@ -38,11 +35,6 @@ import {
3835
import { PythonEnvironment } from '../pythonEnvironments/info';
3936
import { IDataViewerDataProvider, IJupyterUriProvider } from './types';
4037

41-
interface ILanguageServer extends Disposable {
42-
readonly connection: ILanguageServerConnection;
43-
readonly capabilities: lsp.ServerCapabilities;
44-
}
45-
4638
/**
4739
* This allows Python extension to update Product enum without breaking Jupyter.
4840
* I.e. we have a strict contract, else using numbers (in enums) is bound to break across products.
@@ -139,11 +131,6 @@ type PythonApiForJupyterExtension = {
139131
* Retrieve interpreter path selected for Jupyter server from Python memento storage
140132
*/
141133
getInterpreterPathSelectedForJupyterServer(): string | undefined;
142-
/**
143-
* Returns a ILanguageServer that can be used for communicating with a language server process.
144-
* @param resource file that determines which connection to return
145-
*/
146-
getLanguageServer(resource?: InterpreterUri): Promise<ILanguageServer | undefined>;
147134
/**
148135
* Registers a visibility filter for the interpreter status bar.
149136
*/
@@ -207,7 +194,6 @@ export class JupyterExtensionIntegration {
207194
@inject(IInterpreterSelector) private readonly interpreterSelector: IInterpreterSelector,
208195
@inject(IInstaller) private readonly installer: IInstaller,
209196
@inject(IEnvironmentActivationService) private readonly envActivation: IEnvironmentActivationService,
210-
@inject(ILanguageServerCache) private readonly languageServerCache: ILanguageServerCache,
211197
@inject(IMemento) @named(GLOBAL_MEMENTO) private globalState: Memento,
212198
@inject(IInterpreterDisplay) private interpreterDisplay: IInterpreterDisplay,
213199
@inject(IComponentAdapter) private pyenvs: IComponentAdapter,
@@ -272,21 +258,6 @@ export class JupyterExtensionIntegration {
272258
getDebuggerPath: async () => dirname(getDebugpyPackagePath()),
273259
getInterpreterPathSelectedForJupyterServer: () =>
274260
this.globalState.get<string | undefined>('INTERPRETER_PATH_SELECTED_FOR_JUPYTER_SERVER'),
275-
getLanguageServer: async (r) => {
276-
const resource = isResource(r) ? r : undefined;
277-
const interpreter = !isResource(r) ? r : undefined;
278-
const client = await this.languageServerCache.get(resource, interpreter);
279-
280-
// Some language servers don't support the connection yet.
281-
if (client && client.connection && client.capabilities) {
282-
return {
283-
connection: client.connection,
284-
capabilities: client.capabilities,
285-
dispose: client.dispose,
286-
};
287-
}
288-
return undefined;
289-
},
290261
registerInterpreterStatusFilter: this.interpreterDisplay.registerVisibilityFilter.bind(
291262
this.interpreterDisplay,
292263
),

src/client/languageServer/jediLSExtensionManager.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,12 @@ import { IInterpreterService } from '../interpreter/contracts';
1919
import { IServiceContainer } from '../ioc/types';
2020
import { traceError } from '../logging';
2121
import { PythonEnvironment } from '../pythonEnvironments/info';
22-
import { LanguageServerCapabilities } from './languageServerCapabilities';
2322
import { ILanguageServerExtensionManager } from './types';
2423

25-
export class JediLSExtensionManager extends LanguageServerCapabilities
26-
implements IDisposable, ILanguageServerExtensionManager {
27-
serverManager: JediLanguageServerManager;
24+
export class JediLSExtensionManager implements IDisposable, ILanguageServerExtensionManager {
25+
private serverProxy: JediLanguageServerProxy;
2826

29-
serverProxy: JediLanguageServerProxy;
27+
serverManager: JediLanguageServerManager;
3028

3129
clientFactory: JediLanguageClientFactory;
3230

@@ -43,8 +41,6 @@ export class JediLSExtensionManager extends LanguageServerCapabilities
4341
environmentService: IEnvironmentVariablesProvider,
4442
commandManager: ICommandManager,
4543
) {
46-
super();
47-
4844
this.analysisOptions = new JediLanguageServerAnalysisOptions(
4945
environmentService,
5046
outputChannel,

0 commit comments

Comments
 (0)