forked from microsoft/vscode-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdefaultlanguageServer.ts
More file actions
40 lines (34 loc) · 1.41 KB
/
defaultlanguageServer.ts
File metadata and controls
40 lines (34 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import { injectable } from 'inversify';
import { PYLANCE_EXTENSION_ID, PYREFLY_EXTENSION_ID } from '../../common/constants';
import { IDefaultLanguageServer, IExtensions, DefaultLSType } from '../../common/types';
import { IServiceManager } from '../../ioc/types';
import { LanguageServerType } from '../types';
@injectable()
class DefaultLanguageServer implements IDefaultLanguageServer {
public readonly defaultLSType: DefaultLSType;
constructor(defaultServer: DefaultLSType) {
this.defaultLSType = defaultServer;
}
}
export async function setDefaultLanguageServer(
extensions: IExtensions,
serviceManager: IServiceManager,
): Promise<void> {
const lsType = await getDefaultLanguageServer(extensions);
serviceManager.addSingletonInstance<IDefaultLanguageServer>(
IDefaultLanguageServer,
new DefaultLanguageServer(lsType),
);
}
async function getDefaultLanguageServer(extensions: IExtensions): Promise<DefaultLSType> {
let type = LanguageServerType.Jedi;
if (extensions.getExtension(PYLANCE_EXTENSION_ID)) {
type = LanguageServerType.Node;
}
if (extensions.getExtension(PYREFLY_EXTENSION_ID)) {
return {type: "none or (if pyrefly language services disabled)", languageServerType: type};
}
return {type: "always", languageServerType: type};
}