Skip to content

Commit bbfcce1

Browse files
author
Benjamin Greiner
committed
convert position into jedi line, column
1 parent 2b9b8a2 commit bbfcce1

File tree

8 files changed

+32
-17
lines changed

8 files changed

+32
-17
lines changed

pyls/_utils.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,17 @@ def clip_column(column, lines, line_number):
152152
return min(column, max_column)
153153

154154

155+
def position_to_jedi_linecolumn(document, position):
156+
"""Convert the format 'line', 'character' to 'line', 'column'"""
157+
code_position = {}
158+
if position:
159+
code_position = {'line': position['line'] + 1,
160+
'column': clip_column(position['character'],
161+
document.lines,
162+
position['line'])}
163+
return code_position
164+
165+
155166
if os.name == 'nt':
156167
import ctypes
157168

pyls/plugins/definition.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
# Copyright 2017 Palantir Technologies, Inc.
22
import logging
3-
from pyls import hookimpl, uris
3+
from pyls import hookimpl, uris, _utils
44

55
log = logging.getLogger(__name__)
66

77

88
@hookimpl
99
def pyls_definitions(config, document, position):
1010
settings = config.plugin_settings('jedi_definition')
11-
definitions = document.jedi_script(position).goto_assignments(
11+
code_position = _utils.position_to_jedi_linecolumn(document, position)
12+
definitions = document.jedi_script().goto(
1213
follow_imports=settings.get('follow_imports', True),
13-
follow_builtin_imports=settings.get('follow_builtin_imports', True))
14+
follow_builtin_imports=settings.get('follow_builtin_imports', True),
15+
**code_position)
1416

1517
return [
1618
{

pyls/plugins/highlight.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
# Copyright 2017 Palantir Technologies, Inc.
22
import logging
3-
from pyls import hookimpl, lsp
3+
from pyls import hookimpl, lsp, _utils
44

55
log = logging.getLogger(__name__)
66

77

88
@hookimpl
99
def pyls_document_highlight(document, position):
10-
usages = document.jedi_script(position).usages()
10+
code_position = _utils.position_to_jedi_linecolumn(document, position)
11+
usages = document.jedi_script().get_signatures(**code_position)
1112

1213
def is_valid(definition):
1314
return definition.line is not None and definition.column is not None

pyls/plugins/hover.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99

1010
@hookimpl
1111
def pyls_hover(document, position):
12-
definitions = document.jedi_script(position).goto_definitions()
12+
code_position = _utils.position_to_jedi_linecolumn(document, position)
13+
definitions = document.jedi_script().goto_definitions(**code_position)
1314
word = document.word_at_position(position)
1415

1516
if LooseVersion(_utils.JEDI_VERSION) >= LooseVersion('0.15.0'):

pyls/plugins/jedi_completion.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,7 @@
5151
@hookimpl
5252
def pyls_completions(config, document, position):
5353
try:
54-
code_position = {}
55-
if position:
56-
code_position = {
57-
'line': position['line'] + 1,
58-
'column': _utils.clip_column(position['character'],
59-
document.lines,
60-
position['line'])}
54+
code_position = _utils.position_to_jedi_linecolumn(document, position)
6155
completions = document.jedi_script().complete(**code_position)
6256
except AttributeError as e:
6357
if 'CompiledObject' in str(e):

pyls/plugins/references.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# Copyright 2017 Palantir Technologies, Inc.
22
import logging
3-
from pyls import hookimpl, uris
3+
from pyls import hookimpl, uris, _utils
44

55
log = logging.getLogger(__name__)
66

77

88
@hookimpl
99
def pyls_references(document, position, exclude_declaration=False):
10-
# Note that usages is not that great in a lot of cases: https://github.com/davidhalter/jedi/issues/744
11-
usages = document.jedi_script(position).usages()
10+
code_position = _utils.position_to_jedi_linecolumn(document, position)
11+
usages = document.jedi_script().get_signatures(**code_position)
1212

1313
if exclude_declaration:
1414
# Filter out if the usage is the actual declaration of the thing

pyls/plugins/signature.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
@hookimpl
1616
def pyls_signature_help(document, position):
17-
signatures = document.jedi_script(position).call_signatures()
17+
code_position = _utils.position_to_jedi_linecolumn(document, position)
18+
signatures = document.jedi_script().get_signatures(**code_position)
1819

1920
if not signatures:
2021
return {'signatures': []}

pyls/workspace.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,15 @@ def jedi_script(self, position=None):
231231

232232
kwargs = {
233233
'code': self.source,
234+
'path': self.path,
234235
'environment': environment,
235236
'project': jedi.api.Project(self.path, sys_path=sys_path),
236237
}
237238

239+
if position:
240+
# deprecated by Jedi to use in Script() constructor
241+
kwargs += _utils.position_to_jedi_linecolumn(self, position)
242+
238243
return jedi.Script(**kwargs)
239244

240245
def get_enviroment(self, environment_path=None):

0 commit comments

Comments
 (0)