Skip to content

Commit 2f8c3c3

Browse files
committed
Move initializeParams which are fully responsibility of client,
and not the connection implementation detail
1 parent de73403 commit 2f8c3c3

File tree

3 files changed

+76
-58
lines changed

3 files changed

+76
-58
lines changed

packages/jupyterlab-lsp/src/connection.ts

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import type * as rpc from 'vscode-jsonrpc';
1919
import type * as lsp from 'vscode-languageserver-protocol';
2020
import type { MessageConnection } from 'vscode-ws-jsonrpc';
2121

22+
import { CompletionItemTag } from './lsp';
2223
import { ILSPLogConsole } from './tokens';
2324
import { until_ready } from './utils';
2425

@@ -392,6 +393,74 @@ export class LSPConnection extends LspWsConnection {
392393
);
393394
}
394395

396+
/**
397+
* Initialization parameters to be sent to the language server.
398+
* Subclasses can overload this when adding more features.
399+
*/
400+
protected initializeParams(): lsp.InitializeParams {
401+
return {
402+
...super.initializeParams(),
403+
capabilities: {
404+
textDocument: {
405+
hover: {
406+
dynamicRegistration: true,
407+
contentFormat: ['markdown', 'plaintext']
408+
},
409+
synchronization: {
410+
dynamicRegistration: true,
411+
willSave: false,
412+
didSave: true,
413+
willSaveWaitUntil: false
414+
},
415+
completion: {
416+
dynamicRegistration: true,
417+
completionItem: {
418+
snippetSupport: false,
419+
commitCharactersSupport: true,
420+
documentationFormat: ['markdown', 'plaintext'],
421+
deprecatedSupport: true,
422+
preselectSupport: false,
423+
tagSupport: {
424+
valueSet: [CompletionItemTag.Deprecated]
425+
}
426+
},
427+
contextSupport: false
428+
},
429+
signatureHelp: {
430+
dynamicRegistration: true,
431+
signatureInformation: {
432+
documentationFormat: ['markdown', 'plaintext']
433+
}
434+
},
435+
declaration: {
436+
dynamicRegistration: true,
437+
linkSupport: true
438+
},
439+
definition: {
440+
dynamicRegistration: true,
441+
linkSupport: true
442+
},
443+
typeDefinition: {
444+
dynamicRegistration: true,
445+
linkSupport: true
446+
},
447+
implementation: {
448+
dynamicRegistration: true,
449+
linkSupport: true
450+
}
451+
} as lsp.ClientCapabilities,
452+
workspace: {
453+
didChangeConfiguration: {
454+
dynamicRegistration: true
455+
}
456+
} as lsp.WorkspaceClientCapabilities
457+
} as lsp.ClientCapabilities,
458+
initializationOptions: null,
459+
processId: null,
460+
workspaceFolders: null
461+
};
462+
}
463+
395464
sendOpenWhenReady(documentInfo: IDocumentInfo) {
396465
if (this.isReady) {
397466
this.sendOpen(documentInfo);

packages/jupyterlab-lsp/src/lsp.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ export enum DiagnosticTag {
1010
Deprecated = 2
1111
}
1212

13+
export enum CompletionItemTag {
14+
Deprecated = 1
15+
}
16+
1317
export enum CompletionItemKind {
1418
Text = 1,
1519
Method = 2,

packages/lsp-ws-connection/src/ws-connection.ts

Lines changed: 3 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as events from 'events';
22

33
import type * as protocol from 'vscode-languageserver-protocol';
4-
import { CompletionItemTag, LocationLink } from 'vscode-languageserver-types';
4+
import type { LocationLink } from 'vscode-languageserver-types';
55
import { ConsoleLogger, MessageConnection, listen } from 'vscode-ws-jsonrpc';
66

77
import {
@@ -145,66 +145,11 @@ export class LspWsConnection
145145

146146
/**
147147
* Initialization parameters to be sent to the language server.
148-
* Subclasses can overload this when adding more features.
148+
* Subclasses should override this when adding more features.
149149
*/
150150
protected initializeParams(): protocol.InitializeParams {
151151
return {
152-
capabilities: {
153-
textDocument: {
154-
hover: {
155-
dynamicRegistration: true,
156-
contentFormat: ['markdown', 'plaintext']
157-
},
158-
synchronization: {
159-
dynamicRegistration: true,
160-
willSave: false,
161-
didSave: true,
162-
willSaveWaitUntil: false
163-
},
164-
completion: {
165-
dynamicRegistration: true,
166-
completionItem: {
167-
snippetSupport: false,
168-
commitCharactersSupport: true,
169-
documentationFormat: ['markdown', 'plaintext'],
170-
deprecatedSupport: true,
171-
preselectSupport: false,
172-
tagSupport: {
173-
valueSet: [CompletionItemTag.Deprecated]
174-
}
175-
},
176-
contextSupport: false
177-
},
178-
signatureHelp: {
179-
dynamicRegistration: true,
180-
signatureInformation: {
181-
documentationFormat: ['markdown', 'plaintext']
182-
}
183-
},
184-
declaration: {
185-
dynamicRegistration: true,
186-
linkSupport: true
187-
},
188-
definition: {
189-
dynamicRegistration: true,
190-
linkSupport: true
191-
},
192-
typeDefinition: {
193-
dynamicRegistration: true,
194-
linkSupport: true
195-
},
196-
implementation: {
197-
dynamicRegistration: true,
198-
linkSupport: true
199-
}
200-
} as protocol.ClientCapabilities,
201-
workspace: {
202-
didChangeConfiguration: {
203-
dynamicRegistration: true
204-
}
205-
} as protocol.WorkspaceClientCapabilities
206-
} as protocol.ClientCapabilities,
207-
initializationOptions: null,
152+
capabilities: {} as protocol.ClientCapabilities,
208153
processId: null,
209154
rootUri: this.rootUri,
210155
workspaceFolders: null

0 commit comments

Comments
 (0)