codemirror-languageserver 1.15.0 → 1.16.0
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/README.md +9 -2
- package/demo/demo.js +27 -18
- package/demo/dist/demo.js +127 -87
- package/dist/completion.d.ts +2 -0
- package/dist/definition.d.ts +4 -0
- package/dist/hover.d.ts +2 -0
- package/dist/index.d.ts +14 -1
- package/dist/index.js +121 -71
- package/dist/initialization.d.ts +279 -0
- package/dist/mouse.d.ts +2 -0
- package/dist/plugin.d.ts +52 -299
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { insertCompletionText, autocompletion } from '@codemirror/autocomplete';
|
|
1
|
+
import { insertCompletionText, autocompletion as autocompletion$1 } from '@codemirror/autocomplete';
|
|
2
2
|
import { setDiagnostics } from '@codemirror/lint';
|
|
3
3
|
import { Facet } from '@codemirror/state';
|
|
4
|
-
import { ViewPlugin, hoverTooltip } from '@codemirror/view';
|
|
4
|
+
import { ViewPlugin, hoverTooltip as hoverTooltip$1, EditorView, keymap } from '@codemirror/view';
|
|
5
5
|
import { RequestManager, Client, WebSocketTransport } from '@open-rpc/client-js';
|
|
6
6
|
import { CompletionItemKind, DiagnosticSeverity, CompletionTriggerKind } from 'vscode-languageserver-protocol';
|
|
7
7
|
import { marked } from 'marked';
|
|
@@ -28,11 +28,11 @@ const timeout = 10000;
|
|
|
28
28
|
const changesDelay = 500;
|
|
29
29
|
const CompletionItemKindMap = Object.fromEntries(Object.entries(CompletionItemKind).map(([key, value]) => [value, key]));
|
|
30
30
|
const useLast = (values) => values.reduce((_, v) => v, '');
|
|
31
|
-
|
|
31
|
+
Facet.define({
|
|
32
32
|
combine: useLast,
|
|
33
33
|
});
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
Facet.define({ combine: useLast });
|
|
35
|
+
Facet.define({ combine: useLast });
|
|
36
36
|
class LanguageServerClient {
|
|
37
37
|
constructor(options) {
|
|
38
38
|
this.options = options;
|
|
@@ -70,7 +70,7 @@ class LanguageServerClient {
|
|
|
70
70
|
textDocument: {
|
|
71
71
|
hover: {
|
|
72
72
|
dynamicRegistration: true,
|
|
73
|
-
contentFormat: ['
|
|
73
|
+
contentFormat: ['markdown', 'plaintext'],
|
|
74
74
|
},
|
|
75
75
|
moniker: {},
|
|
76
76
|
synchronization: {
|
|
@@ -84,7 +84,7 @@ class LanguageServerClient {
|
|
|
84
84
|
completionItem: {
|
|
85
85
|
snippetSupport: false,
|
|
86
86
|
commitCharactersSupport: true,
|
|
87
|
-
documentationFormat: ['
|
|
87
|
+
documentationFormat: ['markdown', 'plaintext'],
|
|
88
88
|
deprecatedSupport: false,
|
|
89
89
|
preselectSupport: false,
|
|
90
90
|
},
|
|
@@ -93,7 +93,7 @@ class LanguageServerClient {
|
|
|
93
93
|
signatureHelp: {
|
|
94
94
|
dynamicRegistration: true,
|
|
95
95
|
signatureInformation: {
|
|
96
|
-
documentationFormat: ['
|
|
96
|
+
documentationFormat: ['markdown', 'plaintext'],
|
|
97
97
|
},
|
|
98
98
|
},
|
|
99
99
|
declaration: {
|
|
@@ -149,6 +149,12 @@ class LanguageServerClient {
|
|
|
149
149
|
async textDocumentDefinition(params) {
|
|
150
150
|
return await this.request('textDocument/definition', params, timeout);
|
|
151
151
|
}
|
|
152
|
+
async textDocumentDeclaration(params) {
|
|
153
|
+
return await this.request('textDocument/declaration', params, timeout);
|
|
154
|
+
}
|
|
155
|
+
async textDocumentTypeDefinition(params) {
|
|
156
|
+
return await this.request('textDocument/typeDefinition', params, timeout);
|
|
157
|
+
}
|
|
152
158
|
attachPlugin(plugin) {
|
|
153
159
|
this.plugins.push(plugin);
|
|
154
160
|
}
|
|
@@ -175,12 +181,12 @@ class LanguageServerClient {
|
|
|
175
181
|
}
|
|
176
182
|
}
|
|
177
183
|
class LanguageServerPlugin {
|
|
178
|
-
constructor(view, allowHTMLContent) {
|
|
184
|
+
constructor(view, { client, documentUri, languageId, allowHTMLContent, }) {
|
|
179
185
|
this.view = view;
|
|
186
|
+
this.client = client;
|
|
187
|
+
this.documentUri = documentUri;
|
|
188
|
+
this.languageId = languageId;
|
|
180
189
|
this.allowHTMLContent = allowHTMLContent;
|
|
181
|
-
this.client = this.view.state.facet(client);
|
|
182
|
-
this.documentUri = this.view.state.facet(documentUri);
|
|
183
|
-
this.languageId = this.view.state.facet(languageId);
|
|
184
190
|
this.documentVersion = 0;
|
|
185
191
|
this.changesTimeout = 0;
|
|
186
192
|
this.client.attachPlugin(this);
|
|
@@ -382,12 +388,11 @@ class LanguageServerPlugin {
|
|
|
382
388
|
filter: false,
|
|
383
389
|
};
|
|
384
390
|
}
|
|
385
|
-
async
|
|
386
|
-
if (!this.client.ready ||
|
|
387
|
-
!this.client.capabilities.definitionProvider) {
|
|
391
|
+
async requestLocation(view, { line, character }, capability, method) {
|
|
392
|
+
if (!this.client.ready || !this.client.capabilities[capability]) {
|
|
388
393
|
return null;
|
|
389
394
|
}
|
|
390
|
-
const result = await this.client
|
|
395
|
+
const result = await this.client[method]({
|
|
391
396
|
textDocument: { uri: this.documentUri },
|
|
392
397
|
position: { line, character },
|
|
393
398
|
});
|
|
@@ -404,6 +409,7 @@ class LanguageServerPlugin {
|
|
|
404
409
|
anchor: posToOffset(view.state.doc, range.start),
|
|
405
410
|
head: posToOffset(view.state.doc, range.end),
|
|
406
411
|
},
|
|
412
|
+
scrollIntoView: true,
|
|
407
413
|
}));
|
|
408
414
|
}
|
|
409
415
|
return {
|
|
@@ -411,6 +417,15 @@ class LanguageServerPlugin {
|
|
|
411
417
|
range,
|
|
412
418
|
};
|
|
413
419
|
}
|
|
420
|
+
async requestDefinition(view, { line, character }) {
|
|
421
|
+
return this.requestLocation(view, { line, character }, 'definitionProvider', 'textDocumentDefinition');
|
|
422
|
+
}
|
|
423
|
+
async requestDeclaration(view, { line, character }) {
|
|
424
|
+
return this.requestLocation(view, { line, character }, 'declarationProvider', 'textDocumentDeclaration');
|
|
425
|
+
}
|
|
426
|
+
async requestTypeDefinition(view, { line, character }) {
|
|
427
|
+
return this.requestLocation(view, { line, character }, 'typeDefinitionProvider', 'textDocumentTypeDefinition');
|
|
428
|
+
}
|
|
414
429
|
processNotification(notification) {
|
|
415
430
|
try {
|
|
416
431
|
switch (notification.method) {
|
|
@@ -455,58 +470,6 @@ class LanguageServerPlugin {
|
|
|
455
470
|
}
|
|
456
471
|
}
|
|
457
472
|
const languageServerPlugin = ViewPlugin.fromClass(LanguageServerPlugin);
|
|
458
|
-
function languageServer(options) {
|
|
459
|
-
const serverUri = options.serverUri;
|
|
460
|
-
const { serverUri: _, ...optionsWithoutServerUri } = options;
|
|
461
|
-
return languageServerWithTransport({
|
|
462
|
-
...optionsWithoutServerUri,
|
|
463
|
-
transport: new WebSocketTransport(serverUri),
|
|
464
|
-
});
|
|
465
|
-
}
|
|
466
|
-
function languageServerWithTransport(options) {
|
|
467
|
-
return [
|
|
468
|
-
client.of(options.client ||
|
|
469
|
-
new LanguageServerClient({
|
|
470
|
-
...options,
|
|
471
|
-
autoClose: true,
|
|
472
|
-
})),
|
|
473
|
-
documentUri.of(options.documentUri),
|
|
474
|
-
languageId.of(options.languageId),
|
|
475
|
-
languageServerPlugin.of(options.allowHTMLContent),
|
|
476
|
-
hoverTooltip((view, pos) => {
|
|
477
|
-
var _a;
|
|
478
|
-
const plugin = view.plugin(languageServerPlugin);
|
|
479
|
-
return ((_a = plugin === null || plugin === void 0 ? void 0 : plugin.requestHoverTooltip(view, offsetToPos(view.state.doc, pos))) !== null && _a !== void 0 ? _a : null);
|
|
480
|
-
}),
|
|
481
|
-
autocompletion({
|
|
482
|
-
override: [
|
|
483
|
-
async (context) => {
|
|
484
|
-
var _a, _b, _c;
|
|
485
|
-
const { state, pos, explicit, view } = context;
|
|
486
|
-
const plugin = view.plugin(languageServerPlugin);
|
|
487
|
-
if (plugin == null)
|
|
488
|
-
return null;
|
|
489
|
-
const line = state.doc.lineAt(pos);
|
|
490
|
-
let trigKind = CompletionTriggerKind.Invoked;
|
|
491
|
-
let trigChar;
|
|
492
|
-
if (!explicit &&
|
|
493
|
-
((_c = (_b = (_a = plugin.client.capabilities) === null || _a === void 0 ? void 0 : _a.completionProvider) === null || _b === void 0 ? void 0 : _b.triggerCharacters) === null || _c === void 0 ? void 0 : _c.includes(line.text[pos - line.from - 1]))) {
|
|
494
|
-
trigKind = CompletionTriggerKind.TriggerCharacter;
|
|
495
|
-
trigChar = line.text[pos - line.from - 1];
|
|
496
|
-
}
|
|
497
|
-
if (trigKind === CompletionTriggerKind.Invoked &&
|
|
498
|
-
!context.matchBefore(/\w+$/)) {
|
|
499
|
-
return null;
|
|
500
|
-
}
|
|
501
|
-
return await plugin.requestCompletion(context, offsetToPos(state.doc, pos), {
|
|
502
|
-
triggerCharacter: trigChar,
|
|
503
|
-
triggerKind: trigKind,
|
|
504
|
-
});
|
|
505
|
-
},
|
|
506
|
-
],
|
|
507
|
-
}),
|
|
508
|
-
];
|
|
509
|
-
}
|
|
510
473
|
async function formatContents(contents) {
|
|
511
474
|
if (isLSPMarkupContent(contents)) {
|
|
512
475
|
let value = contents.value;
|
|
@@ -554,17 +517,104 @@ function isLSPMarkupContent(contents) {
|
|
|
554
517
|
return contents.kind !== undefined;
|
|
555
518
|
}
|
|
556
519
|
|
|
557
|
-
function
|
|
520
|
+
function requestDefinition(view, pos) {
|
|
558
521
|
const plugin = view.plugin(languageServerPlugin);
|
|
559
522
|
if (!plugin)
|
|
560
523
|
return false;
|
|
561
524
|
plugin.requestDefinition(view, offsetToPos(view.state.doc, pos));
|
|
562
525
|
return true;
|
|
563
526
|
}
|
|
564
|
-
|
|
565
|
-
const
|
|
527
|
+
function requestTypeDefinition(view, pos) {
|
|
528
|
+
const plugin = view.plugin(languageServerPlugin);
|
|
529
|
+
if (!plugin)
|
|
530
|
+
return false;
|
|
531
|
+
plugin.requestTypeDefinition(view, offsetToPos(view.state.doc, pos));
|
|
532
|
+
return true;
|
|
533
|
+
}
|
|
534
|
+
const jumpToDefinition = (view) => requestDefinition(view, view.state.selection.main.head);
|
|
535
|
+
const jumpToDefinitionPos = (pos) => (view) => requestDefinition(view, pos);
|
|
536
|
+
const jumpToTypeDefinition = (view) => requestTypeDefinition(view, view.state.selection.main.head);
|
|
537
|
+
const jumpToTypeDefinitionPos = (pos) => (view) => requestTypeDefinition(view, pos);
|
|
566
538
|
const jumpToDefinitionKeymap = [
|
|
567
539
|
{ key: 'F12', run: jumpToDefinition, preventDefault: true },
|
|
540
|
+
{ key: 'Mod-F12', run: jumpToTypeDefinition, preventDefault: true },
|
|
568
541
|
];
|
|
569
542
|
|
|
543
|
+
const hoverTooltip = () => hoverTooltip$1((view, pos) => {
|
|
544
|
+
var _a;
|
|
545
|
+
const plugin = view.plugin(languageServerPlugin);
|
|
546
|
+
return ((_a = plugin === null || plugin === void 0 ? void 0 : plugin.requestHoverTooltip(view, offsetToPos(view.state.doc, pos))) !== null && _a !== void 0 ? _a : null);
|
|
547
|
+
});
|
|
548
|
+
|
|
549
|
+
const autocompletion = () => autocompletion$1({
|
|
550
|
+
override: [
|
|
551
|
+
async (context) => {
|
|
552
|
+
var _a, _b, _c;
|
|
553
|
+
const { state, pos, explicit, view } = context;
|
|
554
|
+
const plugin = view.plugin(languageServerPlugin);
|
|
555
|
+
if (plugin == null)
|
|
556
|
+
return null;
|
|
557
|
+
const line = state.doc.lineAt(pos);
|
|
558
|
+
let trigKind = CompletionTriggerKind.Invoked;
|
|
559
|
+
let trigChar;
|
|
560
|
+
if (!explicit &&
|
|
561
|
+
((_c = (_b = (_a = plugin.client.capabilities) === null || _a === void 0 ? void 0 : _a.completionProvider) === null || _b === void 0 ? void 0 : _b.triggerCharacters) === null || _c === void 0 ? void 0 : _c.includes(line.text[pos - line.from - 1]))) {
|
|
562
|
+
trigKind = CompletionTriggerKind.TriggerCharacter;
|
|
563
|
+
trigChar = line.text[pos - line.from - 1];
|
|
564
|
+
}
|
|
565
|
+
if (trigKind === CompletionTriggerKind.Invoked &&
|
|
566
|
+
!context.matchBefore(/\w+$/)) {
|
|
567
|
+
return null;
|
|
568
|
+
}
|
|
569
|
+
return await plugin.requestCompletion(context, offsetToPos(state.doc, pos), {
|
|
570
|
+
triggerCharacter: trigChar,
|
|
571
|
+
triggerKind: trigKind,
|
|
572
|
+
});
|
|
573
|
+
},
|
|
574
|
+
],
|
|
575
|
+
});
|
|
576
|
+
|
|
577
|
+
const mouseHandler = () => EditorView.domEventHandlers({
|
|
578
|
+
mousedown: (event, view) => {
|
|
579
|
+
if (!event.ctrlKey && !event.metaKey)
|
|
580
|
+
return;
|
|
581
|
+
const pos = view.posAtCoords({
|
|
582
|
+
x: event.clientX,
|
|
583
|
+
y: event.clientY,
|
|
584
|
+
});
|
|
585
|
+
const ok = (event.shiftKey
|
|
586
|
+
? jumpToTypeDefinitionPos(pos)
|
|
587
|
+
: jumpToDefinitionPos(pos))(view);
|
|
588
|
+
if (ok)
|
|
589
|
+
event.preventDefault();
|
|
590
|
+
},
|
|
591
|
+
});
|
|
592
|
+
|
|
593
|
+
function languageServer(options) {
|
|
594
|
+
const serverUri = options.serverUri;
|
|
595
|
+
const { serverUri: _, ...optionsWithoutServerUri } = options;
|
|
596
|
+
return languageServerWithTransport({
|
|
597
|
+
...optionsWithoutServerUri,
|
|
598
|
+
transport: new WebSocketTransport(serverUri),
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
function languageServerWithTransport(options) {
|
|
602
|
+
return [
|
|
603
|
+
languageServerPlugin.of({
|
|
604
|
+
client: options.client ||
|
|
605
|
+
new LanguageServerClient({
|
|
606
|
+
...options,
|
|
607
|
+
autoClose: true,
|
|
608
|
+
}),
|
|
609
|
+
documentUri: options.documentUri,
|
|
610
|
+
languageId: options.languageId,
|
|
611
|
+
allowHTMLContent: options.allowHTMLContent,
|
|
612
|
+
}),
|
|
613
|
+
hoverTooltip(),
|
|
614
|
+
autocompletion(),
|
|
615
|
+
keymap.of([...jumpToDefinitionKeymap]),
|
|
616
|
+
mouseHandler(),
|
|
617
|
+
];
|
|
618
|
+
}
|
|
619
|
+
|
|
570
620
|
export { LanguageServerClient, jumpToDefinition, jumpToDefinitionKeymap, jumpToDefinitionPos, languageServer, languageServerPlugin, languageServerWithTransport };
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Initialization options for Pyright language server
|
|
3
|
+
* @see https://github.com/microsoft/pyright/blob/main/docs/settings.md
|
|
4
|
+
*/
|
|
5
|
+
export interface PyrightInitializationOptions {
|
|
6
|
+
python?: {
|
|
7
|
+
pythonPath?: string;
|
|
8
|
+
venvPath?: string;
|
|
9
|
+
analysis?: {
|
|
10
|
+
autoSearchPaths?: boolean;
|
|
11
|
+
extraPaths?: string[];
|
|
12
|
+
diagnosticMode?: 'workspace' | 'openFilesOnly';
|
|
13
|
+
stubPath?: string;
|
|
14
|
+
typeshedPaths?: string[];
|
|
15
|
+
useLibraryCodeForTypes?: boolean;
|
|
16
|
+
typeCheckingMode?: 'off' | 'basic' | 'strict';
|
|
17
|
+
autoImportCompletions?: boolean;
|
|
18
|
+
indexing?: boolean;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
reportMissingImports?: boolean;
|
|
22
|
+
reportMissingTypeStubs?: boolean;
|
|
23
|
+
reportMissingModuleSource?: boolean;
|
|
24
|
+
reportInvalidTypeVarUse?: boolean;
|
|
25
|
+
reportOptionalSubscript?: boolean;
|
|
26
|
+
reportOptionalMemberAccess?: boolean;
|
|
27
|
+
reportOptionalCall?: boolean;
|
|
28
|
+
reportOptionalIterable?: boolean;
|
|
29
|
+
reportOptionalContextManager?: boolean;
|
|
30
|
+
reportOptionalOperand?: boolean;
|
|
31
|
+
reportTypedDictNotRequiredAccess?: boolean;
|
|
32
|
+
reportPrivateImportUsage?: boolean;
|
|
33
|
+
reportConstantRedefinition?: boolean;
|
|
34
|
+
reportIncompatibleMethodOverride?: boolean;
|
|
35
|
+
reportIncompatibleVariableOverride?: boolean;
|
|
36
|
+
reportInconsistentConstructor?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Initialization options for Rust Analyzer language server
|
|
40
|
+
* @see https://rust-analyzer.github.io/manual.html#configuration
|
|
41
|
+
*/
|
|
42
|
+
export interface RustAnalyzerInitializationOptions {
|
|
43
|
+
cargo?: {
|
|
44
|
+
buildScripts?: {
|
|
45
|
+
enable?: boolean;
|
|
46
|
+
invocationStrategy?: 'per_workspace' | 'once';
|
|
47
|
+
invocationLocation?: 'workspace' | 'root';
|
|
48
|
+
};
|
|
49
|
+
allTargets?: boolean;
|
|
50
|
+
noDefaultFeatures?: boolean;
|
|
51
|
+
allFeatures?: boolean;
|
|
52
|
+
features?: string[];
|
|
53
|
+
target?: string;
|
|
54
|
+
runBuildScripts?: boolean;
|
|
55
|
+
useRustcWrapperForBuildScripts?: boolean;
|
|
56
|
+
};
|
|
57
|
+
procMacro?: {
|
|
58
|
+
enable?: boolean;
|
|
59
|
+
ignored?: Record<string, string[]>;
|
|
60
|
+
server?: string;
|
|
61
|
+
attributes?: {
|
|
62
|
+
enable?: boolean;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
diagnostics?: {
|
|
66
|
+
enable?: boolean;
|
|
67
|
+
disabled?: string[];
|
|
68
|
+
warningsAsHint?: string[];
|
|
69
|
+
warningsAsInfo?: string[];
|
|
70
|
+
remapPrefix?: Record<string, string>;
|
|
71
|
+
experimental?: {
|
|
72
|
+
enable?: boolean;
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
completion?: {
|
|
76
|
+
addCallArgumentSnippets?: boolean;
|
|
77
|
+
addCallParenthesis?: boolean;
|
|
78
|
+
postfix?: {
|
|
79
|
+
enable?: boolean;
|
|
80
|
+
};
|
|
81
|
+
autoimport?: {
|
|
82
|
+
enable?: boolean;
|
|
83
|
+
};
|
|
84
|
+
privateEditable?: {
|
|
85
|
+
enable?: boolean;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
assist?: {
|
|
89
|
+
importGranularity?: 'preserve' | 'crate' | 'module' | 'item';
|
|
90
|
+
importEnforceGranularity?: boolean;
|
|
91
|
+
importPrefix?: 'plain' | 'by_self' | 'by_crate';
|
|
92
|
+
allowMergingIntoGlobImports?: boolean;
|
|
93
|
+
};
|
|
94
|
+
callInfo?: {
|
|
95
|
+
full?: boolean;
|
|
96
|
+
};
|
|
97
|
+
lens?: {
|
|
98
|
+
enable?: boolean;
|
|
99
|
+
run?: boolean;
|
|
100
|
+
debug?: boolean;
|
|
101
|
+
implementations?: boolean;
|
|
102
|
+
refs?: boolean;
|
|
103
|
+
methodReferences?: boolean;
|
|
104
|
+
references?: boolean;
|
|
105
|
+
enumVariantReferences?: boolean;
|
|
106
|
+
};
|
|
107
|
+
hover?: {
|
|
108
|
+
documentation?: boolean;
|
|
109
|
+
keywords?: boolean;
|
|
110
|
+
linksInHover?: boolean;
|
|
111
|
+
memoryLayout?: {
|
|
112
|
+
enable?: boolean;
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
workspace?: {
|
|
116
|
+
symbol?: {
|
|
117
|
+
search?: {
|
|
118
|
+
scope?: 'workspace' | 'workspace_and_dependencies';
|
|
119
|
+
kind?: 'only_types' | 'all_symbols';
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Initialization options for TypeScript/JavaScript language server
|
|
126
|
+
* @see https://github.com/typescript-language-server/typescript-language-server
|
|
127
|
+
*/
|
|
128
|
+
export interface TypeScriptInitializationOptions {
|
|
129
|
+
hostInfo?: string;
|
|
130
|
+
npmLocation?: string;
|
|
131
|
+
globalPlugins?: string[];
|
|
132
|
+
pluginProbeLocations?: string[];
|
|
133
|
+
preferences?: {
|
|
134
|
+
includePackageJsonAutoImports?: 'auto' | 'on' | 'off';
|
|
135
|
+
providePrefixAndSuffixTextForRename?: boolean;
|
|
136
|
+
allowRenameOfImportPath?: boolean;
|
|
137
|
+
includeAutomaticOptionalChainCompletions?: boolean;
|
|
138
|
+
includeCompletionsForModuleExports?: boolean;
|
|
139
|
+
includeCompletionsForImportStatements?: boolean;
|
|
140
|
+
includeCompletionsWithSnippetText?: boolean;
|
|
141
|
+
includeCompletionsWithInsertText?: boolean;
|
|
142
|
+
allowIncompleteCompletions?: boolean;
|
|
143
|
+
importModuleSpecifier?: 'shortest' | 'relative' | 'absolute' | 'auto';
|
|
144
|
+
importModuleSpecifierEnding?: 'minimal' | 'index' | 'js';
|
|
145
|
+
allowTextChangesInNewFiles?: boolean;
|
|
146
|
+
lazyConfiguredProjectsFromExternalProject?: boolean;
|
|
147
|
+
providePrefixAndSuffixTextForQuickInfo?: boolean;
|
|
148
|
+
includeInlayParameterNameHints?: 'none' | 'literals' | 'all';
|
|
149
|
+
includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean;
|
|
150
|
+
includeInlayFunctionParameterTypeHints?: boolean;
|
|
151
|
+
includeInlayVariableTypeHints?: boolean;
|
|
152
|
+
includeInlayVariableTypeHintsWhenTypeMatchesName?: boolean;
|
|
153
|
+
includeInlayPropertyDeclarationTypeHints?: boolean;
|
|
154
|
+
includeInlayFunctionLikeReturnTypeHints?: boolean;
|
|
155
|
+
includeInlayEnumMemberValueHints?: boolean;
|
|
156
|
+
};
|
|
157
|
+
locale?: string;
|
|
158
|
+
maxTsServerMemory?: number;
|
|
159
|
+
tsserver?: {
|
|
160
|
+
logLevel?: 'off' | 'terse' | 'normal' | 'requestTime' | 'verbose';
|
|
161
|
+
logVerbosity?: 'off' | 'terse' | 'normal' | 'requestTime' | 'verbose';
|
|
162
|
+
trace?: 'off' | 'messages' | 'verbose';
|
|
163
|
+
useSeparateSyntaxServer?: boolean;
|
|
164
|
+
enableTracing?: boolean;
|
|
165
|
+
path?: string;
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Initialization options for ESLint language server
|
|
170
|
+
* @see https://github.com/Microsoft/vscode-eslint
|
|
171
|
+
*/
|
|
172
|
+
export interface ESLintInitializationOptions {
|
|
173
|
+
packageManager?: 'npm' | 'yarn' | 'pnpm';
|
|
174
|
+
nodePath?: string;
|
|
175
|
+
options?: Record<string, any>;
|
|
176
|
+
rules?: Record<string, any>;
|
|
177
|
+
rulesCustomizations?: Array<{
|
|
178
|
+
rule: string;
|
|
179
|
+
severity: 'downgrade' | 'upgrade' | 'info' | 'warn' | 'error' | 'off';
|
|
180
|
+
}>;
|
|
181
|
+
run?: 'onType' | 'onSave';
|
|
182
|
+
problems?: {
|
|
183
|
+
shortenToSingleLine?: boolean;
|
|
184
|
+
};
|
|
185
|
+
codeAction?: {
|
|
186
|
+
disableRuleComment?: {
|
|
187
|
+
enable?: boolean;
|
|
188
|
+
location?: 'separateLine' | 'sameLine';
|
|
189
|
+
};
|
|
190
|
+
showDocumentation?: {
|
|
191
|
+
enable?: boolean;
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
codeActionOnSave?: {
|
|
195
|
+
enable?: boolean;
|
|
196
|
+
mode?: 'all' | 'problems';
|
|
197
|
+
};
|
|
198
|
+
format?: {
|
|
199
|
+
enable?: boolean;
|
|
200
|
+
};
|
|
201
|
+
quiet?: boolean;
|
|
202
|
+
onIgnoredFiles?: 'off' | 'warn';
|
|
203
|
+
useESLintClass?: boolean;
|
|
204
|
+
experimental?: {
|
|
205
|
+
useFlatConfig?: boolean;
|
|
206
|
+
};
|
|
207
|
+
workingDirectory?: {
|
|
208
|
+
mode?: 'auto' | 'location';
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Initialization options for Clangd language server
|
|
213
|
+
* @see https://clangd.llvm.org/config
|
|
214
|
+
*/
|
|
215
|
+
export interface ClangdInitializationOptions {
|
|
216
|
+
compilationDatabasePath?: string;
|
|
217
|
+
compilationDatabaseChanges?: Record<string, any>;
|
|
218
|
+
fallbackFlags?: string[];
|
|
219
|
+
clangdFileStatus?: boolean;
|
|
220
|
+
utf8?: boolean;
|
|
221
|
+
offsetEncoding?: ('utf-8' | 'utf-16' | 'utf-32')[];
|
|
222
|
+
index?: {
|
|
223
|
+
background?: 'Build' | 'Skip';
|
|
224
|
+
threads?: number;
|
|
225
|
+
};
|
|
226
|
+
completion?: {
|
|
227
|
+
detailedLabel?: boolean;
|
|
228
|
+
allScopes?: boolean;
|
|
229
|
+
};
|
|
230
|
+
hover?: {
|
|
231
|
+
showAKA?: boolean;
|
|
232
|
+
};
|
|
233
|
+
inlayHints?: {
|
|
234
|
+
enabled?: boolean;
|
|
235
|
+
parameterNames?: boolean;
|
|
236
|
+
deducedTypes?: boolean;
|
|
237
|
+
designators?: boolean;
|
|
238
|
+
};
|
|
239
|
+
semanticHighlighting?: boolean;
|
|
240
|
+
diagnostics?: {
|
|
241
|
+
unusedIncludes?: 'None' | 'Strict';
|
|
242
|
+
missingIncludes?: 'None' | 'Strict';
|
|
243
|
+
clangTidy?: boolean;
|
|
244
|
+
suppressAll?: boolean;
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Initialization options for Gopls (Go language server)
|
|
249
|
+
* @see https://github.com/golang/tools/blob/master/gopls/doc/settings.md
|
|
250
|
+
*/
|
|
251
|
+
export interface GoplsInitializationOptions {
|
|
252
|
+
buildFlags?: string[];
|
|
253
|
+
env?: Record<string, string>;
|
|
254
|
+
directoryFilters?: string[];
|
|
255
|
+
templateExtensions?: string[];
|
|
256
|
+
memoryMode?: 'DegradeClosed' | 'Normal';
|
|
257
|
+
gofumpt?: boolean;
|
|
258
|
+
staticcheck?: boolean;
|
|
259
|
+
analyses?: Record<string, boolean>;
|
|
260
|
+
codelenses?: Record<string, boolean>;
|
|
261
|
+
usePlaceholders?: boolean;
|
|
262
|
+
completionBudget?: string;
|
|
263
|
+
diagnosticsDelay?: string;
|
|
264
|
+
experimentalPostfixCompletions?: boolean;
|
|
265
|
+
experimentalWorkspaceModule?: boolean;
|
|
266
|
+
experimentalTemplateSupport?: boolean;
|
|
267
|
+
semanticTokens?: boolean;
|
|
268
|
+
noSemanticString?: boolean;
|
|
269
|
+
noSemanticNumber?: boolean;
|
|
270
|
+
expandWorkspaceToModule?: boolean;
|
|
271
|
+
experimentalUseInvalidMetadata?: boolean;
|
|
272
|
+
hoverKind?: 'FullDocumentation' | 'NoDocumentation' | 'SingleLine' | 'Structured' | 'SynopsisDocumentation';
|
|
273
|
+
linkTarget?: string;
|
|
274
|
+
linksInHover?: boolean;
|
|
275
|
+
importShortcut?: 'Both' | 'Definition' | 'Link';
|
|
276
|
+
symbolMatcher?: 'CaseInsensitive' | 'CaseSensitive' | 'FastFuzzy' | 'Fuzzy';
|
|
277
|
+
symbolStyle?: 'Dynamic' | 'Full' | 'Package';
|
|
278
|
+
verboseOutput?: boolean;
|
|
279
|
+
}
|
package/dist/mouse.d.ts
ADDED