From fe9d58b87d1872dff060f83b64472b7e46de0a1c Mon Sep 17 00:00:00 2001 From: steff456 Date: Tue, 19 Nov 2019 10:02:55 -0500 Subject: [PATCH 1/3] fix snippet creation when a slash character is present --- pyls/plugins/jedi_completion.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyls/plugins/jedi_completion.py b/pyls/plugins/jedi_completion.py index b310e81f..8a7d6cb4 100644 --- a/pyls/plugins/jedi_completion.py +++ b/pyls/plugins/jedi_completion.py @@ -98,10 +98,12 @@ def _format_completion(d, include_params=True): completion['insertTextFormat'] = lsp.InsertTextFormat.Snippet snippet = d.name + '(' for i, param in enumerate(positional_args): - snippet += '${%s:%s}' % (i + 1, param.name) + name = param.name if param.name != '/' else '\\/' + snippet += '${%s:%s}' % (i + 1, name) if i < len(positional_args) - 1: snippet += ', ' snippet += ')$0' + print(snippet) completion['insertText'] = snippet return completion From 7eb59d9818a32811376c6a8c59dde952f9303ce8 Mon Sep 17 00:00:00 2001 From: steff456 Date: Tue, 19 Nov 2019 10:06:52 -0500 Subject: [PATCH 2/3] remove print --- pyls/plugins/jedi_completion.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pyls/plugins/jedi_completion.py b/pyls/plugins/jedi_completion.py index 8a7d6cb4..34c90e68 100644 --- a/pyls/plugins/jedi_completion.py +++ b/pyls/plugins/jedi_completion.py @@ -103,7 +103,6 @@ def _format_completion(d, include_params=True): if i < len(positional_args) - 1: snippet += ', ' snippet += ')$0' - print(snippet) completion['insertText'] = snippet return completion From 756bafe271738a1f9e0cb4b6fd2f13d482c48a36 Mon Sep 17 00:00:00 2001 From: steff456 Date: Tue, 19 Nov 2019 18:53:33 -0500 Subject: [PATCH 3/3] add test for snippet parsing --- test/plugins/test_completion.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/plugins/test_completion.py b/test/plugins/test_completion.py index 1980016c..3f09eab7 100644 --- a/test/plugins/test_completion.py +++ b/test/plugins/test_completion.py @@ -174,6 +174,18 @@ def test_snippets_completion(config): assert completions[0]['insertText'] == out +def test_snippet_parsing(config): + doc = 'import numpy as np\nnp.logical_and' + completion_position = {'line': 1, 'character': 14} + doc = Document(DOC_URI, doc) + config.capabilities['textDocument'] = { + 'completion': {'completionItem': {'snippetSupport': True}}} + config.update({'plugins': {'jedi_completion': {'include_params': True}}}) + completions = pyls_jedi_completions(config, doc, completion_position) + out = 'logical_and(${1:x1}, ${2:x2}, ${3:\\/}, ${4:*})$0' + assert completions[0]['insertText'] == out + + def test_multiline_snippets(config): document = 'from datetime import\\\n date,\\\n datetime \na=date' doc = Document(DOC_URI, document)