9
9
import itertools
10
10
from typing import Any , List , Optional , Union
11
11
12
- from jedi import Project
12
+ from jedi import Project , __version__
13
13
from jedi .api .refactoring import RefactoringError
14
- from pydantic import ValidationError
15
- from pygls .lsp .methods import (
16
- CODE_ACTION ,
17
- COMPLETION ,
14
+ from lsprotocol .types import (
18
15
COMPLETION_ITEM_RESOLVE ,
19
- DEFINITION ,
20
- DOCUMENT_HIGHLIGHT ,
21
- DOCUMENT_SYMBOL ,
22
- HOVER ,
23
16
INITIALIZE ,
24
- REFERENCES ,
25
- RENAME ,
26
- SIGNATURE_HELP ,
17
+ TEXT_DOCUMENT_CODE_ACTION ,
18
+ TEXT_DOCUMENT_COMPLETION ,
19
+ TEXT_DOCUMENT_DEFINITION ,
27
20
TEXT_DOCUMENT_DID_CHANGE ,
28
21
TEXT_DOCUMENT_DID_CLOSE ,
29
22
TEXT_DOCUMENT_DID_OPEN ,
30
23
TEXT_DOCUMENT_DID_SAVE ,
31
- TYPE_DEFINITION ,
24
+ TEXT_DOCUMENT_DOCUMENT_HIGHLIGHT ,
25
+ TEXT_DOCUMENT_DOCUMENT_SYMBOL ,
26
+ TEXT_DOCUMENT_HOVER ,
27
+ TEXT_DOCUMENT_REFERENCES ,
28
+ TEXT_DOCUMENT_RENAME ,
29
+ TEXT_DOCUMENT_SIGNATURE_HELP ,
30
+ TEXT_DOCUMENT_TYPE_DEFINITION ,
32
31
WORKSPACE_DID_CHANGE_CONFIGURATION ,
33
32
WORKSPACE_SYMBOL ,
34
- )
35
- from pygls .lsp .types import (
36
33
CodeAction ,
37
34
CodeActionKind ,
38
35
CodeActionOptions ,
66
63
WorkspaceEdit ,
67
64
WorkspaceSymbolParams ,
68
65
)
66
+ from pydantic import ValidationError
67
+ from pygls .capabilities import get_capability
69
68
from pygls .protocol import LanguageServerProtocol , lsp_method
70
69
from pygls .server import LanguageServer
71
70
@@ -126,7 +125,7 @@ def lsp_initialize(self, params: InitializeParams) -> InitializeResult:
126
125
server .feature (TEXT_DOCUMENT_DID_CLOSE )(did_close )
127
126
128
127
if server .initialization_options .hover .enable :
129
- server .feature (HOVER )(hover )
128
+ server .feature (TEXT_DOCUMENT_HOVER )(hover )
130
129
131
130
initialize_result : InitializeResult = super ().lsp_initialize (params )
132
131
workspace_options = initialization_options .workspace
@@ -160,7 +159,11 @@ def __init__(self, *args: Any, **kwargs: Any) -> None:
160
159
super ().__init__ (* args , ** kwargs )
161
160
162
161
163
- SERVER = JediLanguageServer (protocol_cls = JediLanguageServerProtocol )
162
+ SERVER = JediLanguageServer (
163
+ name = "jedi-language-server" ,
164
+ version = __version__ ,
165
+ protocol_cls = JediLanguageServerProtocol ,
166
+ )
164
167
165
168
166
169
# Server capabilities
@@ -178,7 +181,7 @@ def completion_item_resolve(
178
181
179
182
180
183
@SERVER .feature (
181
- COMPLETION ,
184
+ TEXT_DOCUMENT_COMPLETION ,
182
185
CompletionOptions (
183
186
trigger_characters = ["." , "'" , '"' ], resolve_provider = True
184
187
),
@@ -205,8 +208,10 @@ def completion(
205
208
for comp in completions_jedi_raw
206
209
if not any (i .match (comp .name ) for i in ignore_patterns )
207
210
)
208
- snippet_support = server .client_capabilities .get_capability (
209
- "text_document.completion.completion_item.snippet_support" , False
211
+ snippet_support = get_capability (
212
+ server .client_capabilities ,
213
+ "text_document.completion.completion_item.snippet_support" ,
214
+ False ,
210
215
)
211
216
markup_kind = _choose_markup (server )
212
217
is_import_context = jedi_utils .is_import (
@@ -244,7 +249,8 @@ def completion(
244
249
245
250
246
251
@SERVER .feature (
247
- SIGNATURE_HELP , SignatureHelpOptions (trigger_characters = ["(" , "," ])
252
+ TEXT_DOCUMENT_SIGNATURE_HELP ,
253
+ SignatureHelpOptions (trigger_characters = ["(" , "," ]),
248
254
)
249
255
def signature_help (
250
256
server : JediLanguageServer , params : TextDocumentPositionParams
@@ -290,7 +296,7 @@ def signature_help(
290
296
)
291
297
292
298
293
- @SERVER .feature (DEFINITION )
299
+ @SERVER .feature (TEXT_DOCUMENT_DEFINITION )
294
300
def definition (
295
301
server : JediLanguageServer , params : TextDocumentPositionParams
296
302
) -> Optional [List [Location ]]:
@@ -311,7 +317,7 @@ def definition(
311
317
return definitions if definitions else None
312
318
313
319
314
- @SERVER .feature (TYPE_DEFINITION )
320
+ @SERVER .feature (TEXT_DOCUMENT_TYPE_DEFINITION )
315
321
def type_definition (
316
322
server : JediLanguageServer , params : TextDocumentPositionParams
317
323
) -> Optional [List [Location ]]:
@@ -328,7 +334,7 @@ def type_definition(
328
334
return definitions if definitions else None
329
335
330
336
331
- @SERVER .feature (DOCUMENT_HIGHLIGHT )
337
+ @SERVER .feature (TEXT_DOCUMENT_DOCUMENT_HIGHLIGHT )
332
338
def highlight (
333
339
server : JediLanguageServer , params : TextDocumentPositionParams
334
340
) -> Optional [List [DocumentHighlight ]]:
@@ -384,7 +390,7 @@ def hover(
384
390
return Hover (contents = contents , range = _range )
385
391
386
392
387
- @SERVER .feature (REFERENCES )
393
+ @SERVER .feature (TEXT_DOCUMENT_REFERENCES )
388
394
def references (
389
395
server : JediLanguageServer , params : TextDocumentPositionParams
390
396
) -> Optional [List [Location ]]:
@@ -401,7 +407,7 @@ def references(
401
407
return locations if locations else None
402
408
403
409
404
- @SERVER .feature (DOCUMENT_SYMBOL )
410
+ @SERVER .feature (TEXT_DOCUMENT_DOCUMENT_SYMBOL )
405
411
def document_symbol (
406
412
server : JediLanguageServer , params : DocumentSymbolParams
407
413
) -> Optional [Union [List [DocumentSymbol ], List [SymbolInformation ]]]:
@@ -426,7 +432,8 @@ def document_symbol(
426
432
document = server .workspace .get_document (params .text_document .uri )
427
433
jedi_script = jedi_utils .script (server .project , document )
428
434
names = jedi_script .get_names (all_scopes = True , definitions = True )
429
- if server .client_capabilities .get_capability (
435
+ if get_capability (
436
+ server .client_capabilities ,
430
437
"text_document.document_symbol.hierarchical_document_symbol_support" ,
431
438
False ,
432
439
):
@@ -499,7 +506,7 @@ def workspace_symbol(
499
506
return symbols if symbols else None
500
507
501
508
502
- @SERVER .feature (RENAME )
509
+ @SERVER .feature (TEXT_DOCUMENT_RENAME )
503
510
def rename (
504
511
server : JediLanguageServer , params : RenameParams
505
512
) -> Optional [WorkspaceEdit ]:
@@ -518,7 +525,7 @@ def rename(
518
525
519
526
520
527
@SERVER .feature (
521
- CODE_ACTION ,
528
+ TEXT_DOCUMENT_CODE_ACTION ,
522
529
CodeActionOptions (
523
530
code_action_kinds = [
524
531
CodeActionKind .RefactorInline ,
@@ -702,7 +709,8 @@ def did_close_default(
702
709
def _choose_markup (server : JediLanguageServer ) -> MarkupKind :
703
710
"""Returns the preferred or first of supported markup kinds."""
704
711
markup_preferred = server .initialization_options .markup_kind_preferred
705
- markup_supported = server .client_capabilities .get_capability (
712
+ markup_supported = get_capability (
713
+ server .client_capabilities ,
706
714
"text_document.completion.completion_item.documentation_format" ,
707
715
[MarkupKind .PlainText ],
708
716
)
0 commit comments