Skip to content

Commit 4872361

Browse files
authored
Upgrade to latest jupyter lsp and skip intellisense when inside a cell (#17734)
* Upgrade to latest jupyter lsp and skip intellisense when inside a cell * Update package-lock.json
1 parent 7eb7f02 commit 4872361

File tree

8 files changed

+19
-46
lines changed

8 files changed

+19
-46
lines changed

package-lock.json

Lines changed: 3 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2047,7 +2047,7 @@
20472047
"webpack": "webpack"
20482048
},
20492049
"dependencies": {
2050-
"@vscode/jupyter-lsp-middleware": "^0.2.5",
2050+
"@vscode/jupyter-lsp-middleware": "^0.2.13",
20512051
"arch": "^2.1.0",
20522052
"azure-storage": "^2.10.4",
20532053
"chokidar": "^3.4.3",

src/client/activation/jedi/manager.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,7 @@ export class JediLanguageServerManager implements ILanguageServerManager {
142142
this.languageServerProxy = this.serviceContainer.get<ILanguageServerProxy>(ILanguageServerProxy);
143143

144144
const options = await this.analysisOptions.getAnalysisOptions();
145-
this.middleware = new LanguageClientMiddleware(
146-
this.serviceContainer,
147-
LanguageServerType.Jedi,
148-
() => this.languageServerProxy?.languageClient,
149-
this.lsVersion,
150-
);
145+
this.middleware = new LanguageClientMiddleware(this.serviceContainer, LanguageServerType.Jedi, this.lsVersion);
151146
options.middleware = this.middleware;
152147

153148
// Make sure the middleware is connected if we restart and we we're already connected.

src/client/activation/languageClientMiddleware.ts

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,18 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT License.
33

4-
import { LanguageClient } from 'vscode-languageclient/node';
5-
import { IJupyterExtensionDependencyManager, IVSCodeNotebook } from '../common/application/types';
6-
import { PYTHON_LANGUAGE } from '../common/constants';
7-
import { traceInfo } from '../common/logger';
8-
import { IFileSystem } from '../common/platform/types';
4+
import { IJupyterExtensionDependencyManager } from '../common/application/types';
95
import { IDisposableRegistry, IExtensions } from '../common/types';
106
import { IServiceContainer } from '../ioc/types';
117
import { sendTelemetryEvent } from '../telemetry';
128

139
import { LanguageClientMiddlewareBase } from './languageClientMiddlewareBase';
1410
import { LanguageServerType } from './types';
1511

16-
import { createMiddlewareAddon } from '@vscode/jupyter-lsp-middleware';
12+
import { createHidingMiddleware } from '@vscode/jupyter-lsp-middleware';
1713

1814
export class LanguageClientMiddleware extends LanguageClientMiddlewareBase {
19-
public constructor(
20-
serviceContainer: IServiceContainer,
21-
serverType: LanguageServerType,
22-
getClient: () => LanguageClient | undefined,
23-
serverVersion?: string,
24-
) {
15+
public constructor(serviceContainer: IServiceContainer, serverType: LanguageServerType, serverVersion?: string) {
2516
super(serviceContainer, serverType, sendTelemetryEvent, serverVersion);
2617

2718
if (serverType === LanguageServerType.None) {
@@ -31,36 +22,20 @@ export class LanguageClientMiddleware extends LanguageClientMiddlewareBase {
3122
const jupyterDependencyManager = serviceContainer.get<IJupyterExtensionDependencyManager>(
3223
IJupyterExtensionDependencyManager,
3324
);
34-
const notebookApi = serviceContainer.get<IVSCodeNotebook>(IVSCodeNotebook);
3525
const disposables = serviceContainer.get<IDisposableRegistry>(IDisposableRegistry) || [];
3626
const extensions = serviceContainer.get<IExtensions>(IExtensions);
37-
const fileSystem = serviceContainer.get<IFileSystem>(IFileSystem);
3827

3928
// Enable notebook support if jupyter support is installed
4029
if (jupyterDependencyManager && jupyterDependencyManager.isJupyterExtensionInstalled) {
41-
this.notebookAddon = createMiddlewareAddon(
42-
notebookApi,
43-
getClient,
44-
traceInfo,
45-
fileSystem,
46-
PYTHON_LANGUAGE,
47-
/.*\.(ipynb|interactive)/m,
48-
);
30+
this.notebookAddon = createHidingMiddleware();
4931
}
5032
disposables.push(
5133
extensions?.onDidChange(() => {
5234
if (jupyterDependencyManager) {
5335
if (this.notebookAddon && !jupyterDependencyManager.isJupyterExtensionInstalled) {
5436
this.notebookAddon = undefined;
5537
} else if (!this.notebookAddon && jupyterDependencyManager.isJupyterExtensionInstalled) {
56-
this.notebookAddon = createMiddlewareAddon(
57-
notebookApi,
58-
getClient,
59-
traceInfo,
60-
fileSystem,
61-
PYTHON_LANGUAGE,
62-
/.*\.(ipynb|interactive)/m,
63-
);
38+
this.notebookAddon = createHidingMiddleware();
6439
}
6540
}
6641
}),

src/client/activation/languageClientMiddlewareBase.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
Definition,
1313
DefinitionLink,
1414
Diagnostic,
15+
Disposable,
1516
DocumentHighlight,
1617
DocumentLink,
1718
DocumentSymbol,
@@ -30,7 +31,6 @@ import {
3031
Middleware,
3132
ResponseError,
3233
} from 'vscode-languageclient';
33-
import type { MiddlewareAddon } from '@vscode/jupyter-lsp-middleware';
3434

3535
import { HiddenFilePrefix } from '../common/constants';
3636
import { IConfigurationService } from '../common/types';
@@ -111,7 +111,7 @@ export class LanguageClientMiddlewareBase implements Middleware {
111111
},
112112
};
113113

114-
protected notebookAddon: MiddlewareAddon | undefined;
114+
protected notebookAddon: (Middleware & Disposable) | undefined;
115115

116116
private connected = false; // Default to not forwarding to VS code.
117117

@@ -343,7 +343,7 @@ export class LanguageClientMiddlewareBase implements Middleware {
343343
}
344344
}
345345

346-
private callNext(funcName: keyof MiddlewareAddon, args: IArguments) {
346+
private callNext(funcName: keyof Middleware, args: IArguments) {
347347
// This function uses the last argument to call the 'next' item. If we're allowing notebook
348348
// middleware, it calls into the notebook middleware first.
349349
if (this.notebookAddon) {

src/client/activation/languageServer/manager.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@ export class DotNetLanguageServerManager implements ILanguageServerManager {
124124
options.middleware = this.middleware = new LanguageClientMiddleware(
125125
this.serviceContainer,
126126
LanguageServerType.Microsoft,
127-
() => this.languageServerProxy?.languageClient,
128127
this.lsVersion,
129128
);
130129

src/client/activation/node/manager.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ export class NodeLanguageServerManager implements ILanguageServerManager {
120120
options.middleware = this.middleware = new LanguageClientMiddleware(
121121
this.serviceContainer,
122122
LanguageServerType.Node,
123-
() => this.languageServerProxy?.languageClient,
124123
this.lsVersion,
125124
);
126125

src/client/common/constants.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ export const PYTHON = [
1414
{ scheme: InteractiveInputScheme, language: PYTHON_LANGUAGE },
1515
];
1616

17+
export const PYTHON_NOTEBOOKS = [
18+
{ scheme: 'vscode-notebook', language: PYTHON_LANGUAGE },
19+
{ scheme: NotebookCellScheme, language: PYTHON_LANGUAGE },
20+
{ scheme: InteractiveInputScheme, language: PYTHON_LANGUAGE },
21+
];
22+
1723
export const PVSC_EXTENSION_ID = 'ms-python.python';
1824
export const CODE_RUNNER_EXTENSION_ID = 'formulahendry.code-runner';
1925
export const PYLANCE_EXTENSION_ID = 'ms-python.vscode-pylance';

0 commit comments

Comments
 (0)