10000 Experimental capabilities hook (#225) · brandonwillard/python-lsp-server@85907d6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 85907d6

Browse files
authored
Experimental capabilities hook (python-lsp#225)
* Custom method dispatchers * Capabilities hook * Capabilities hook
1 parent fe668a5 commit 85907d6

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

pyls/hookspecs.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ def pyls_execute_command(config, workspace, command, arguments):
5757
pass
5858

5959

60+
@hookspec
61+
def pyls_experimental_capabilities(config, workspace):
62+
pass
63+
64+
6065
@hookspec(firstresult=True)
6166
def pyls_format_document(config, workspace, document):
6267
pass

pyls/python_ls.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def _hook(self, hook_name, doc_uri=None, **kwargs):
4444
return self._hook_caller(hook_name)(config=self.config, workspace=self.workspace, document=doc, **kwargs)
4545

4646
def capabilities(self):
47-
return {
47+
server_capabilities = {
4848
'codeActionProvider': True,
4949
'codeLensProvider': {
5050
'resolveProvider': False, # We may need to make this configurable
@@ -66,8 +66,11 @@ def capabilities(self):
6666
'signatureHelpProvider': {
6767
'triggerCharacters': ['(', ',']
6868
},
69-
'textDocumentSync': lsp.TextDocumentSyncKind.INCREMENTAL
69+
'textDocumentSync': lsp.TextDocumentSyncKind.INCREMENTAL,
70+
'experimental': merge(self._hook('pyls_experimental_capabilities'))
7071
}
72+
log.info("Server capabilities: %s", server_capabilities)
73+
return server_capabilities
7174

7275
def initialize(self, root_uri, init_opts, _process_id):
7376
self.workspace = Workspace(root_uri, lang_server=self)
@@ -200,3 +203,7 @@ def m_workspace__execute_command(self, command=None, arguments=None):
200203

201204
def flatten(list_of_lists):
202205
return [item for lst in list_of_lists for item in lst]
206+
207+
208+
def merge(list_of_dicts):
209+
return {k: v for dictionary in list_of_dicts for k, v in dictionary.items()}

test/test_pyls.py

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)
0