Skip to content

Commit 2d3bd82

Browse files
authored
Merge pull request #15 from adambullmer/fix-multiline-definitions
Fixed some cases of multi lined definitions
2 parents edaff65 + 7bcf884 commit 2d3bd82

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

commands.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def initialize(self, view):
125125
self.parser = parser = get_parser(view)
126126

127127
# read the previous line
128-
self.line = parser.get_definition(view, view.line(position).begin() - 1)
128+
self.line = parser.get_definition(view, position)
129129
self.contents = parser.get_definition_contents(view, view.line(position).end())
130130
log.debug('contents -- {}'.format(self.contents))
131131

parsers/parser.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
log = logging.getLogger(__name__)
55

6+
67
def get_parser(view):
78
"""Returns the class of the parser to use.
89
@@ -162,11 +163,26 @@ def get_definition(self, view, position):
162163
Returns:
163164
{String} Representation of the definition line
164165
"""
166+
# reset the position to the beginning of the line
167+
position = view.line(position).begin()
168+
165169
# At beginning of the module
166-
if position is 0:
170+
if position == 0:
167171
return None
168172

169-
return view.substr(view.line(view.line(position - 1)))
173+
indentation_level = view.indentation_level(position)
174+
line = ''
175+
176+
for current_line in read_next_line(view, position, True):
177+
current_line_string = view.substr(current_line).strip()
178+
line = current_line_string + ' ' + line
179+
180+
# When we move up in scope, stop reading
181+
current_indentation = view.indentation_level(current_line.end())
182+
if current_indentation < indentation_level:
183+
break
184+
185+
return line
170186

171187
@classmethod
172188
def get_definition_contents(cls, view, position):

0 commit comments

Comments
 (0)