@jupyterlab/lsp 4.0.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/adapters/adapter.d.ts +125 -0
- package/lib/adapters/adapter.js +382 -0
- package/lib/adapters/adapter.js.map +1 -0
- package/lib/connection.d.ts +65 -0
- package/lib/connection.js +309 -0
- package/lib/connection.js.map +1 -0
- package/lib/connection_manager.d.ts +71 -0
- package/lib/connection_manager.js +312 -0
- package/lib/connection_manager.js.map +1 -0
- package/lib/extractors/manager.d.ts +13 -0
- package/lib/extractors/manager.js +44 -0
- package/lib/extractors/manager.js.map +1 -0
- package/lib/extractors/text_extractor.d.ts +28 -0
- package/lib/extractors/text_extractor.js +27 -0
- package/lib/extractors/text_extractor.js.map +1 -0
- package/lib/extractors/types.d.ts +65 -0
- package/lib/extractors/types.js +2 -0
- package/lib/extractors/types.js.map +1 -0
- package/lib/feature.d.ts +11 -0
- package/lib/feature.js +31 -0
- package/lib/feature.js.map +1 -0
- package/lib/index.d.ts +17 -0
- package/lib/index.js +22 -0
- package/lib/index.js.map +1 -0
- package/lib/lsp.d.ts +129 -0
- package/lib/lsp.js +125 -0
- package/lib/lsp.js.map +1 -0
- package/lib/manager.d.ts +29 -0
- package/lib/manager.js +130 -0
- package/lib/manager.js.map +1 -0
- package/lib/plugin.d.ts +45 -0
- package/lib/plugin.js +3 -0
- package/lib/plugin.js.map +1 -0
- package/lib/positioning.d.ts +28 -0
- package/lib/positioning.js +49 -0
- package/lib/positioning.js.map +1 -0
- package/lib/schema.d.ts +228 -0
- package/lib/schema.js +3 -0
- package/lib/schema.js.map +1 -0
- package/lib/tokens.d.ts +368 -0
- package/lib/tokens.js +58 -0
- package/lib/tokens.js.map +1 -0
- package/lib/utils.d.ts +18 -0
- package/lib/utils.js +71 -0
- package/lib/utils.js.map +1 -0
- package/lib/virtual/document.d.ts +270 -0
- package/lib/virtual/document.js +600 -0
- package/lib/virtual/document.js.map +1 -0
- package/package.json +75 -0
- package/style/index.css +11 -0
- package/style/index.js +11 -0
package/lib/lsp.d.ts
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type * as lsp from 'vscode-languageserver-protocol';
|
|
2
|
+
/** Workaround to silence a bug in https://github.com/microsoft/vscode-languageserver-node/pull/720 */
|
|
3
|
+
export declare type ClientCapabilities = Omit<lsp.ClientCapabilities, 'textDocument'> & {
|
|
4
|
+
textDocument?: Omit<lsp.TextDocumentClientCapabilities, 'moniker'>;
|
|
5
|
+
};
|
|
6
|
+
export declare enum DiagnosticSeverity {
|
|
7
|
+
Error = 1,
|
|
8
|
+
Warning = 2,
|
|
9
|
+
Information = 3,
|
|
10
|
+
Hint = 4
|
|
11
|
+
}
|
|
12
|
+
export declare enum DiagnosticTag {
|
|
13
|
+
Unnecessary = 1,
|
|
14
|
+
Deprecated = 2
|
|
15
|
+
}
|
|
16
|
+
export declare enum CompletionItemTag {
|
|
17
|
+
Deprecated = 1
|
|
18
|
+
}
|
|
19
|
+
export declare enum CompletionItemKind {
|
|
20
|
+
Text = 1,
|
|
21
|
+
Method = 2,
|
|
22
|
+
Function = 3,
|
|
23
|
+
Constructor = 4,
|
|
24
|
+
Field = 5,
|
|
25
|
+
Variable = 6,
|
|
26
|
+
Class = 7,
|
|
27
|
+
Interface = 8,
|
|
28
|
+
Module = 9,
|
|
29
|
+
Property = 10,
|
|
30
|
+
Unit = 11,
|
|
31
|
+
Value = 12,
|
|
32
|
+
Enum = 13,
|
|
33
|
+
Keyword = 14,
|
|
34
|
+
Snippet = 15,
|
|
35
|
+
Color = 16,
|
|
36
|
+
File = 17,
|
|
37
|
+
Reference = 18,
|
|
38
|
+
Folder = 19,
|
|
39
|
+
EnumMember = 20,
|
|
40
|
+
Constant = 21,
|
|
41
|
+
Struct = 22,
|
|
42
|
+
Event = 23,
|
|
43
|
+
Operator = 24,
|
|
44
|
+
TypeParameter = 25
|
|
45
|
+
}
|
|
46
|
+
export declare enum DocumentHighlightKind {
|
|
47
|
+
Text = 1,
|
|
48
|
+
Read = 2,
|
|
49
|
+
Write = 3
|
|
50
|
+
}
|
|
51
|
+
export declare enum CompletionTriggerKind {
|
|
52
|
+
Invoked = 1,
|
|
53
|
+
TriggerCharacter = 2,
|
|
54
|
+
TriggerForIncompleteCompletions = 3
|
|
55
|
+
}
|
|
56
|
+
export declare enum AdditionalCompletionTriggerKinds {
|
|
57
|
+
AutoInvoked = 9999
|
|
58
|
+
}
|
|
59
|
+
export declare type ExtendedCompletionTriggerKind = CompletionTriggerKind | AdditionalCompletionTriggerKinds;
|
|
60
|
+
export declare type CompletionItemKindStrings = keyof typeof CompletionItemKind;
|
|
61
|
+
/**
|
|
62
|
+
* The language identifier for LSP, with the preferred identifier as defined in the documentation
|
|
63
|
+
* see the table in https://microsoft.github.io/language-server-protocol/specification#textDocumentItem
|
|
64
|
+
*/
|
|
65
|
+
export declare enum Languages {
|
|
66
|
+
'abap' = "ABAP",
|
|
67
|
+
'bat' = "Windows Bat",
|
|
68
|
+
'bibtex' = "BibTeX",
|
|
69
|
+
'clojure' = "Clojure",
|
|
70
|
+
'coffeescript' = "Coffeescript",
|
|
71
|
+
'c' = "C",
|
|
72
|
+
'cpp' = "C++",
|
|
73
|
+
'csharp' = "C#",
|
|
74
|
+
'css' = "CSS",
|
|
75
|
+
'diff' = "Diff",
|
|
76
|
+
'dart' = "Dart",
|
|
77
|
+
'dockerfile' = "Dockerfile",
|
|
78
|
+
'elixir' = "Elixir",
|
|
79
|
+
'erlang' = "Erlang",
|
|
80
|
+
'fsharp' = "F#",
|
|
81
|
+
'git-commit' = "Git (commit)",
|
|
82
|
+
'git-rebase' = "Git (rebase)",
|
|
83
|
+
'go' = "Go",
|
|
84
|
+
'groovy' = "Groovy",
|
|
85
|
+
'handlebars' = "Handlebars",
|
|
86
|
+
'html' = "HTML",
|
|
87
|
+
'ini' = "Ini",
|
|
88
|
+
'java' = "Java",
|
|
89
|
+
'javascript' = "JavaScript",
|
|
90
|
+
'javascriptreact' = "JavaScript React",
|
|
91
|
+
'json' = "JSON",
|
|
92
|
+
'latex' = "LaTeX",
|
|
93
|
+
'less' = "Less",
|
|
94
|
+
'lua' = "Lua",
|
|
95
|
+
'makefile' = "Makefile",
|
|
96
|
+
'markdown' = "Markdown",
|
|
97
|
+
'objective-c' = "Objective-C",
|
|
98
|
+
'objective-cpp' = "Objective-C++",
|
|
99
|
+
'perl' = "Perl",
|
|
100
|
+
'perl6' = "Perl 6",
|
|
101
|
+
'php' = "PHP",
|
|
102
|
+
'powershell' = "Powershell",
|
|
103
|
+
'jade' = "Pug",
|
|
104
|
+
'python' = "Python",
|
|
105
|
+
'r' = "R",
|
|
106
|
+
'razor' = "Razor (cshtml)",
|
|
107
|
+
'ruby' = "Ruby",
|
|
108
|
+
'rust' = "Rust",
|
|
109
|
+
'scss' = "SCSS (syntax using curly brackets)",
|
|
110
|
+
'sass' = "SCSS (indented syntax)",
|
|
111
|
+
'scala' = "Scala",
|
|
112
|
+
'shaderlab' = "ShaderLab",
|
|
113
|
+
'shellscript' = "Shell Script (Bash)",
|
|
114
|
+
'sql' = "SQL",
|
|
115
|
+
'swift' = "Swift",
|
|
116
|
+
'typescript' = "TypeScript",
|
|
117
|
+
'typescriptreact' = "TypeScript React",
|
|
118
|
+
'tex' = "TeX",
|
|
119
|
+
'vb' = "Visual Basic",
|
|
120
|
+
'xml' = "XML",
|
|
121
|
+
'xsl' = "XSL",
|
|
122
|
+
'yaml' = "YAML"
|
|
123
|
+
}
|
|
124
|
+
export declare type RecommendedLanguageIdentifier = keyof typeof Languages;
|
|
125
|
+
/**
|
|
126
|
+
* Language identifier for the LSP server, allowing any string but preferring
|
|
127
|
+
* the identifiers as recommended by the LSP documentation.
|
|
128
|
+
*/
|
|
129
|
+
export declare type LanguageIdentifier = RecommendedLanguageIdentifier | string;
|
package/lib/lsp.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
export var DiagnosticSeverity;
|
|
2
|
+
(function (DiagnosticSeverity) {
|
|
3
|
+
DiagnosticSeverity[DiagnosticSeverity["Error"] = 1] = "Error";
|
|
4
|
+
DiagnosticSeverity[DiagnosticSeverity["Warning"] = 2] = "Warning";
|
|
5
|
+
DiagnosticSeverity[DiagnosticSeverity["Information"] = 3] = "Information";
|
|
6
|
+
DiagnosticSeverity[DiagnosticSeverity["Hint"] = 4] = "Hint";
|
|
7
|
+
})(DiagnosticSeverity || (DiagnosticSeverity = {}));
|
|
8
|
+
export var DiagnosticTag;
|
|
9
|
+
(function (DiagnosticTag) {
|
|
10
|
+
DiagnosticTag[DiagnosticTag["Unnecessary"] = 1] = "Unnecessary";
|
|
11
|
+
DiagnosticTag[DiagnosticTag["Deprecated"] = 2] = "Deprecated";
|
|
12
|
+
})(DiagnosticTag || (DiagnosticTag = {}));
|
|
13
|
+
export var CompletionItemTag;
|
|
14
|
+
(function (CompletionItemTag) {
|
|
15
|
+
CompletionItemTag[CompletionItemTag["Deprecated"] = 1] = "Deprecated";
|
|
16
|
+
})(CompletionItemTag || (CompletionItemTag = {}));
|
|
17
|
+
export var CompletionItemKind;
|
|
18
|
+
(function (CompletionItemKind) {
|
|
19
|
+
CompletionItemKind[CompletionItemKind["Text"] = 1] = "Text";
|
|
20
|
+
CompletionItemKind[CompletionItemKind["Method"] = 2] = "Method";
|
|
21
|
+
CompletionItemKind[CompletionItemKind["Function"] = 3] = "Function";
|
|
22
|
+
CompletionItemKind[CompletionItemKind["Constructor"] = 4] = "Constructor";
|
|
23
|
+
CompletionItemKind[CompletionItemKind["Field"] = 5] = "Field";
|
|
24
|
+
CompletionItemKind[CompletionItemKind["Variable"] = 6] = "Variable";
|
|
25
|
+
CompletionItemKind[CompletionItemKind["Class"] = 7] = "Class";
|
|
26
|
+
CompletionItemKind[CompletionItemKind["Interface"] = 8] = "Interface";
|
|
27
|
+
CompletionItemKind[CompletionItemKind["Module"] = 9] = "Module";
|
|
28
|
+
CompletionItemKind[CompletionItemKind["Property"] = 10] = "Property";
|
|
29
|
+
CompletionItemKind[CompletionItemKind["Unit"] = 11] = "Unit";
|
|
30
|
+
CompletionItemKind[CompletionItemKind["Value"] = 12] = "Value";
|
|
31
|
+
CompletionItemKind[CompletionItemKind["Enum"] = 13] = "Enum";
|
|
32
|
+
CompletionItemKind[CompletionItemKind["Keyword"] = 14] = "Keyword";
|
|
33
|
+
CompletionItemKind[CompletionItemKind["Snippet"] = 15] = "Snippet";
|
|
34
|
+
CompletionItemKind[CompletionItemKind["Color"] = 16] = "Color";
|
|
35
|
+
CompletionItemKind[CompletionItemKind["File"] = 17] = "File";
|
|
36
|
+
CompletionItemKind[CompletionItemKind["Reference"] = 18] = "Reference";
|
|
37
|
+
CompletionItemKind[CompletionItemKind["Folder"] = 19] = "Folder";
|
|
38
|
+
CompletionItemKind[CompletionItemKind["EnumMember"] = 20] = "EnumMember";
|
|
39
|
+
CompletionItemKind[CompletionItemKind["Constant"] = 21] = "Constant";
|
|
40
|
+
CompletionItemKind[CompletionItemKind["Struct"] = 22] = "Struct";
|
|
41
|
+
CompletionItemKind[CompletionItemKind["Event"] = 23] = "Event";
|
|
42
|
+
CompletionItemKind[CompletionItemKind["Operator"] = 24] = "Operator";
|
|
43
|
+
CompletionItemKind[CompletionItemKind["TypeParameter"] = 25] = "TypeParameter";
|
|
44
|
+
})(CompletionItemKind || (CompletionItemKind = {}));
|
|
45
|
+
export var DocumentHighlightKind;
|
|
46
|
+
(function (DocumentHighlightKind) {
|
|
47
|
+
DocumentHighlightKind[DocumentHighlightKind["Text"] = 1] = "Text";
|
|
48
|
+
DocumentHighlightKind[DocumentHighlightKind["Read"] = 2] = "Read";
|
|
49
|
+
DocumentHighlightKind[DocumentHighlightKind["Write"] = 3] = "Write";
|
|
50
|
+
})(DocumentHighlightKind || (DocumentHighlightKind = {}));
|
|
51
|
+
export var CompletionTriggerKind;
|
|
52
|
+
(function (CompletionTriggerKind) {
|
|
53
|
+
CompletionTriggerKind[CompletionTriggerKind["Invoked"] = 1] = "Invoked";
|
|
54
|
+
CompletionTriggerKind[CompletionTriggerKind["TriggerCharacter"] = 2] = "TriggerCharacter";
|
|
55
|
+
CompletionTriggerKind[CompletionTriggerKind["TriggerForIncompleteCompletions"] = 3] = "TriggerForIncompleteCompletions";
|
|
56
|
+
})(CompletionTriggerKind || (CompletionTriggerKind = {}));
|
|
57
|
+
export var AdditionalCompletionTriggerKinds;
|
|
58
|
+
(function (AdditionalCompletionTriggerKinds) {
|
|
59
|
+
AdditionalCompletionTriggerKinds[AdditionalCompletionTriggerKinds["AutoInvoked"] = 9999] = "AutoInvoked";
|
|
60
|
+
})(AdditionalCompletionTriggerKinds || (AdditionalCompletionTriggerKinds = {}));
|
|
61
|
+
/**
|
|
62
|
+
* The language identifier for LSP, with the preferred identifier as defined in the documentation
|
|
63
|
+
* see the table in https://microsoft.github.io/language-server-protocol/specification#textDocumentItem
|
|
64
|
+
*/
|
|
65
|
+
export var Languages;
|
|
66
|
+
(function (Languages) {
|
|
67
|
+
Languages["abap"] = "ABAP";
|
|
68
|
+
Languages["bat"] = "Windows Bat";
|
|
69
|
+
Languages["bibtex"] = "BibTeX";
|
|
70
|
+
Languages["clojure"] = "Clojure";
|
|
71
|
+
Languages["coffeescript"] = "Coffeescript";
|
|
72
|
+
Languages["c"] = "C";
|
|
73
|
+
Languages["cpp"] = "C++";
|
|
74
|
+
Languages["csharp"] = "C#";
|
|
75
|
+
Languages["css"] = "CSS";
|
|
76
|
+
Languages["diff"] = "Diff";
|
|
77
|
+
Languages["dart"] = "Dart";
|
|
78
|
+
Languages["dockerfile"] = "Dockerfile";
|
|
79
|
+
Languages["elixir"] = "Elixir";
|
|
80
|
+
Languages["erlang"] = "Erlang";
|
|
81
|
+
Languages["fsharp"] = "F#";
|
|
82
|
+
Languages["git-commit"] = "Git (commit)";
|
|
83
|
+
Languages["git-rebase"] = "Git (rebase)";
|
|
84
|
+
Languages["go"] = "Go";
|
|
85
|
+
Languages["groovy"] = "Groovy";
|
|
86
|
+
Languages["handlebars"] = "Handlebars";
|
|
87
|
+
Languages["html"] = "HTML";
|
|
88
|
+
Languages["ini"] = "Ini";
|
|
89
|
+
Languages["java"] = "Java";
|
|
90
|
+
Languages["javascript"] = "JavaScript";
|
|
91
|
+
Languages["javascriptreact"] = "JavaScript React";
|
|
92
|
+
Languages["json"] = "JSON";
|
|
93
|
+
Languages["latex"] = "LaTeX";
|
|
94
|
+
Languages["less"] = "Less";
|
|
95
|
+
Languages["lua"] = "Lua";
|
|
96
|
+
Languages["makefile"] = "Makefile";
|
|
97
|
+
Languages["markdown"] = "Markdown";
|
|
98
|
+
Languages["objective-c"] = "Objective-C";
|
|
99
|
+
Languages["objective-cpp"] = "Objective-C++";
|
|
100
|
+
Languages["perl"] = "Perl";
|
|
101
|
+
Languages["perl6"] = "Perl 6";
|
|
102
|
+
Languages["php"] = "PHP";
|
|
103
|
+
Languages["powershell"] = "Powershell";
|
|
104
|
+
Languages["jade"] = "Pug";
|
|
105
|
+
Languages["python"] = "Python";
|
|
106
|
+
Languages["r"] = "R";
|
|
107
|
+
Languages["razor"] = "Razor (cshtml)";
|
|
108
|
+
Languages["ruby"] = "Ruby";
|
|
109
|
+
Languages["rust"] = "Rust";
|
|
110
|
+
Languages["scss"] = "SCSS (syntax using curly brackets)";
|
|
111
|
+
Languages["sass"] = "SCSS (indented syntax)";
|
|
112
|
+
Languages["scala"] = "Scala";
|
|
113
|
+
Languages["shaderlab"] = "ShaderLab";
|
|
114
|
+
Languages["shellscript"] = "Shell Script (Bash)";
|
|
115
|
+
Languages["sql"] = "SQL";
|
|
116
|
+
Languages["swift"] = "Swift";
|
|
117
|
+
Languages["typescript"] = "TypeScript";
|
|
118
|
+
Languages["typescriptreact"] = "TypeScript React";
|
|
119
|
+
Languages["tex"] = "TeX";
|
|
120
|
+
Languages["vb"] = "Visual Basic";
|
|
121
|
+
Languages["xml"] = "XML";
|
|
122
|
+
Languages["xsl"] = "XSL";
|
|
123
|
+
Languages["yaml"] = "YAML";
|
|
124
|
+
})(Languages || (Languages = {}));
|
|
125
|
+
//# sourceMappingURL=lsp.js.map
|
package/lib/lsp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp.js","sourceRoot":"","sources":["../src/lsp.ts"],"names":[],"mappings":"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"}
|
package/lib/manager.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ISignal, Signal } from '@lumino/signaling';
|
|
2
|
+
import { ILanguageServerManager, TLanguageServerConfigurations, TLanguageServerId, TSessionMap, TSpecsMap } from './tokens';
|
|
3
|
+
import { ServerSpecProperties } from './schema';
|
|
4
|
+
export declare class LanguageServerManager implements ILanguageServerManager {
|
|
5
|
+
protected _sessionsChanged: Signal<ILanguageServerManager, void>;
|
|
6
|
+
protected _sessions: TSessionMap;
|
|
7
|
+
protected _specs: TSpecsMap;
|
|
8
|
+
protected _version: number;
|
|
9
|
+
private _settings;
|
|
10
|
+
private _baseUrl;
|
|
11
|
+
private _statusCode;
|
|
12
|
+
private _retries;
|
|
13
|
+
private _retriesInterval;
|
|
14
|
+
private _configuration;
|
|
15
|
+
private _warningsEmitted;
|
|
16
|
+
constructor(options: ILanguageServerManager.IOptions);
|
|
17
|
+
get specs(): TSpecsMap;
|
|
18
|
+
get statusUrl(): string;
|
|
19
|
+
get sessionsChanged(): ISignal<ILanguageServerManager, void>;
|
|
20
|
+
get sessions(): TSessionMap;
|
|
21
|
+
setConfiguration(configuration: TLanguageServerConfigurations): void;
|
|
22
|
+
protected warnOnce(arg: string): void;
|
|
23
|
+
protected _comparePriorities(a: TLanguageServerId, b: TLanguageServerId): number;
|
|
24
|
+
protected isMatchingSpec(options: ILanguageServerManager.IGetServerIdOptions, spec: ServerSpecProperties): boolean;
|
|
25
|
+
getMatchingServers(options: ILanguageServerManager.IGetServerIdOptions): TLanguageServerId[];
|
|
26
|
+
getMatchingSpecs(options: ILanguageServerManager.IGetServerIdOptions): TSpecsMap;
|
|
27
|
+
get statusCode(): number;
|
|
28
|
+
fetchSessions(): Promise<void>;
|
|
29
|
+
}
|
package/lib/manager.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { PageConfig, URLExt } from '@jupyterlab/coreutils';
|
|
2
|
+
import { ServerConnection } from '@jupyterlab/services';
|
|
3
|
+
import { Signal } from '@lumino/signaling';
|
|
4
|
+
import { ILanguageServerManager } from './tokens';
|
|
5
|
+
export class LanguageServerManager {
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this._sessionsChanged = new Signal(this);
|
|
8
|
+
this._sessions = new Map();
|
|
9
|
+
this._specs = new Map();
|
|
10
|
+
this._warningsEmitted = new Set();
|
|
11
|
+
this._settings = options.settings || ServerConnection.makeSettings();
|
|
12
|
+
this._baseUrl = options.baseUrl || PageConfig.getBaseUrl();
|
|
13
|
+
this._retries = options.retries || 2;
|
|
14
|
+
this._retriesInterval = options.retriesInterval || 10000;
|
|
15
|
+
this._statusCode = -1;
|
|
16
|
+
this._configuration = {};
|
|
17
|
+
this.fetchSessions().catch(e => console.error(e));
|
|
18
|
+
}
|
|
19
|
+
get specs() {
|
|
20
|
+
return this._specs;
|
|
21
|
+
}
|
|
22
|
+
get statusUrl() {
|
|
23
|
+
return URLExt.join(this._baseUrl, ILanguageServerManager.URL_NS, 'status');
|
|
24
|
+
}
|
|
25
|
+
get sessionsChanged() {
|
|
26
|
+
return this._sessionsChanged;
|
|
27
|
+
}
|
|
28
|
+
get sessions() {
|
|
29
|
+
return this._sessions;
|
|
30
|
+
}
|
|
31
|
+
setConfiguration(configuration) {
|
|
32
|
+
this._configuration = configuration;
|
|
33
|
+
}
|
|
34
|
+
warnOnce(arg) {
|
|
35
|
+
if (!this._warningsEmitted.has(arg)) {
|
|
36
|
+
this._warningsEmitted.add(arg);
|
|
37
|
+
console.warn(arg);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
_comparePriorities(a, b) {
|
|
41
|
+
var _a, _b, _c, _d;
|
|
42
|
+
const DEFAULT_PRIORITY = 50;
|
|
43
|
+
const aPriority = (_b = (_a = this._configuration[a]) === null || _a === void 0 ? void 0 : _a.priority) !== null && _b !== void 0 ? _b : DEFAULT_PRIORITY;
|
|
44
|
+
const bPriority = (_d = (_c = this._configuration[b]) === null || _c === void 0 ? void 0 : _c.priority) !== null && _d !== void 0 ? _d : DEFAULT_PRIORITY;
|
|
45
|
+
if (aPriority == bPriority) {
|
|
46
|
+
this.warnOnce(`Two matching servers: ${a} and ${b} have the same priority; choose which one to use by changing the priority in Advanced Settings Editor`);
|
|
47
|
+
return a.localeCompare(b);
|
|
48
|
+
}
|
|
49
|
+
// higher priority = higher in the list (descending order)
|
|
50
|
+
return bPriority - aPriority;
|
|
51
|
+
}
|
|
52
|
+
isMatchingSpec(options, spec) {
|
|
53
|
+
// most things speak language
|
|
54
|
+
// if language is not known, it is guessed based on MIME type earlier
|
|
55
|
+
// so some language should be available by now (which can be not so obvious, e.g. "plain" for txt documents)
|
|
56
|
+
const lowerCaseLanguage = options.language.toLocaleLowerCase();
|
|
57
|
+
return spec.languages.some((language) => language.toLocaleLowerCase() == lowerCaseLanguage);
|
|
58
|
+
}
|
|
59
|
+
getMatchingServers(options) {
|
|
60
|
+
if (!options.language) {
|
|
61
|
+
console.error('Cannot match server by language: language not available; ensure that kernel and specs provide language and MIME type');
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
const matchingSessionsKeys = [];
|
|
65
|
+
for (const [key, session] of this._sessions.entries()) {
|
|
66
|
+
if (this.isMatchingSpec(options, session.spec)) {
|
|
67
|
+
matchingSessionsKeys.push(key);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return matchingSessionsKeys.sort(this._comparePriorities.bind(this));
|
|
71
|
+
}
|
|
72
|
+
getMatchingSpecs(options) {
|
|
73
|
+
const result = new Map();
|
|
74
|
+
for (const [key, specification] of this._specs.entries()) {
|
|
75
|
+
if (this.isMatchingSpec(options, specification)) {
|
|
76
|
+
result.set(key, specification);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
get statusCode() {
|
|
82
|
+
return this._statusCode;
|
|
83
|
+
}
|
|
84
|
+
async fetchSessions() {
|
|
85
|
+
let response = await ServerConnection.makeRequest(this.statusUrl, { method: 'GET' }, this._settings);
|
|
86
|
+
this._statusCode = response.status;
|
|
87
|
+
if (!response.ok) {
|
|
88
|
+
console.error('Could not fetch sessions', response);
|
|
89
|
+
if (this._retries > 0) {
|
|
90
|
+
this._retries -= 1;
|
|
91
|
+
setTimeout(this.fetchSessions.bind(this), this._retriesInterval);
|
|
92
|
+
}
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
let sessions;
|
|
96
|
+
try {
|
|
97
|
+
const data = await response.json();
|
|
98
|
+
sessions = data.sessions;
|
|
99
|
+
try {
|
|
100
|
+
this._version = data.version;
|
|
101
|
+
this._specs = new Map(Object.entries(data.specs));
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
console.warn(err);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
console.warn(err);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
for (let key of Object.keys(sessions)) {
|
|
112
|
+
let id = key;
|
|
113
|
+
if (this._sessions.has(id)) {
|
|
114
|
+
Object.assign(this._sessions.get(id), sessions[key]);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this._sessions.set(id, sessions[key]);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const oldKeys = this._sessions.keys();
|
|
121
|
+
for (const oldKey in oldKeys) {
|
|
122
|
+
if (!sessions[oldKey]) {
|
|
123
|
+
let oldId = oldKey;
|
|
124
|
+
this._sessions.delete(oldId);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
this._sessionsChanged.emit(void 0);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
package/lib/plugin.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by json-schema-to-typescript.
|
|
3
|
+
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
|
|
4
|
+
* and run jlpm build:schema to regenerate this file.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* When multiple servers match specific document/language, the server with the highest priority will be used
|
|
8
|
+
*/
|
|
9
|
+
export declare type PriorityOfTheServer = number;
|
|
10
|
+
/**
|
|
11
|
+
* Whether to ask server to send logs with execution trace (for debugging). To see these messages, set loggingLevel to debug or log. Accepted values are: "off", "messages", "verbose". Servers are allowed to ignore this request.
|
|
12
|
+
*/
|
|
13
|
+
export declare type AskServersToSendTraceNotifications = 'off' | 'messages' | 'verbose';
|
|
14
|
+
/**
|
|
15
|
+
* Language Server Protocol settings.
|
|
16
|
+
*/
|
|
17
|
+
export interface LanguageServer {
|
|
18
|
+
language_servers?: LanguageServer1;
|
|
19
|
+
setTrace?: AskServersToSendTraceNotifications;
|
|
20
|
+
[k: string]: any;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Language-server specific configuration, keyed by implementation
|
|
24
|
+
*/
|
|
25
|
+
export interface LanguageServer1 {
|
|
26
|
+
[k: string]: LanguageServer2;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* This interface was referenced by `LanguageServer1`'s JSON-Schema definition
|
|
30
|
+
* via the `patternProperty` ".*".
|
|
31
|
+
*
|
|
32
|
+
* This interface was referenced by `LanguageServer`'s JSON-Schema
|
|
33
|
+
* via the `definition` "language-server".
|
|
34
|
+
*/
|
|
35
|
+
export interface LanguageServer2 {
|
|
36
|
+
serverSettings?: LanguageServerConfigurations;
|
|
37
|
+
priority?: PriorityOfTheServer;
|
|
38
|
+
[k: string]: any;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Configuration to be sent to language server over LSP when initialized: see the specific language server's documentation for more
|
|
42
|
+
*/
|
|
43
|
+
export interface LanguageServerConfigurations {
|
|
44
|
+
[k: string]: any;
|
|
45
|
+
}
|
package/lib/plugin.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,oBAAoB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CodeEditor } from '@jupyterlab/codeeditor';
|
|
2
|
+
import type * as CodeMirror from 'codemirror';
|
|
3
|
+
import type * as lsp from 'vscode-languageserver-protocol';
|
|
4
|
+
/**
|
|
5
|
+
* is_* attributes are there only to enforce strict interface type checking
|
|
6
|
+
*/
|
|
7
|
+
export interface IPosition extends CodeMirror.Position {
|
|
8
|
+
}
|
|
9
|
+
export declare function isEqual(self: IPosition, other: IPosition): boolean;
|
|
10
|
+
export interface ISourcePosition extends IPosition {
|
|
11
|
+
isSource: true;
|
|
12
|
+
}
|
|
13
|
+
export interface IEditorPosition extends IPosition {
|
|
14
|
+
isEditor: true;
|
|
15
|
+
}
|
|
16
|
+
export interface IVirtualPosition extends IPosition {
|
|
17
|
+
isVirtual: true;
|
|
18
|
+
}
|
|
19
|
+
export interface IRootPosition extends ISourcePosition {
|
|
20
|
+
isRoot: true;
|
|
21
|
+
}
|
|
22
|
+
export declare function positionAtOffset(offset: number, lines: string[]): CodeEditor.IPosition;
|
|
23
|
+
export declare function offsetAtPosition(position: CodeEditor.IPosition, lines: string[], linesIncludeBreaks?: boolean): number;
|
|
24
|
+
export declare class PositionError extends Error {
|
|
25
|
+
}
|
|
26
|
+
export declare namespace ProtocolCoordinates {
|
|
27
|
+
function isWithinRange(position: lsp.Position, range: lsp.Range): boolean;
|
|
28
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export function isEqual(self, other) {
|
|
2
|
+
return other && self.line === other.line && self.ch === other.ch;
|
|
3
|
+
}
|
|
4
|
+
export function positionAtOffset(offset, lines) {
|
|
5
|
+
let line = 0;
|
|
6
|
+
let column = 0;
|
|
7
|
+
for (let textLine of lines) {
|
|
8
|
+
// each line has a new line symbol which is accounted for in offset!
|
|
9
|
+
if (textLine.length + 1 <= offset) {
|
|
10
|
+
offset -= textLine.length + 1;
|
|
11
|
+
line += 1;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
column = offset;
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return { line, column };
|
|
19
|
+
}
|
|
20
|
+
export function offsetAtPosition(position, lines, linesIncludeBreaks = false) {
|
|
21
|
+
let breakIncrement = linesIncludeBreaks ? 0 : 1;
|
|
22
|
+
let offset = 0;
|
|
23
|
+
for (let i = 0; i < lines.length; i++) {
|
|
24
|
+
let textLine = lines[i];
|
|
25
|
+
if (position.line > i) {
|
|
26
|
+
offset += textLine.length + breakIncrement;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
offset += position.column;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return offset;
|
|
34
|
+
}
|
|
35
|
+
export class PositionError extends Error {
|
|
36
|
+
}
|
|
37
|
+
export var ProtocolCoordinates;
|
|
38
|
+
(function (ProtocolCoordinates) {
|
|
39
|
+
function isWithinRange(position, range) {
|
|
40
|
+
const { line, character } = position;
|
|
41
|
+
return (line >= range.start.line &&
|
|
42
|
+
line <= range.end.line &&
|
|
43
|
+
// need to be non-overlapping see https://github.com/jupyter-lsp/jupyterlab-lsp/issues/628
|
|
44
|
+
(line != range.start.line || character > range.start.character) &&
|
|
45
|
+
(line != range.end.line || character <= range.end.character));
|
|
46
|
+
}
|
|
47
|
+
ProtocolCoordinates.isWithinRange = isWithinRange;
|
|
48
|
+
})(ProtocolCoordinates || (ProtocolCoordinates = {}));
|
|
49
|
+
//# sourceMappingURL=positioning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"positioning.js","sourceRoot":"","sources":["../src/positioning.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,OAAO,CAAC,IAAe,EAAE,KAAgB;IACvD,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;AACnE,CAAC;AAkBD,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,KAAe;IAEf,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE;QAC1B,oEAAoE;QACpE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE;YACjC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,CAAC;SACX;aAAM;YACL,MAAM,GAAG,MAAM,CAAC;YAChB,MAAM;SACP;KACF;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAA8B,EAC9B,KAAe,EACf,kBAAkB,GAAG,KAAK;IAE1B,IAAI,cAAc,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;YACrB,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC;SAC5C;aAAM;YACL,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;YAC1B,MAAM;SACP;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;CAEvC;AAED,MAAM,KAAW,mBAAmB,CAcnC;AAdD,WAAiB,mBAAmB;IAClC,SAAgB,aAAa,CAC3B,QAAsB,EACtB,KAAgB;QAEhB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;QACrC,OAAO,CACL,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI;YACxB,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI;YACtB,0FAA0F;YAC1F,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;YAC/D,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAC7D,CAAC;IACJ,CAAC;IAZe,iCAAa,gBAY5B,CAAA;AACH,CAAC,EAdgB,mBAAmB,KAAnB,mBAAmB,QAcnC"}
|