Move comment to docstring and fix typo
This commit is contained in:
parent
6f1b9b7984
commit
addccd7492
@ -152,6 +152,26 @@ class ExternalEditor(QObject):
|
|||||||
def _calc_line_and_column(self, text, caret_position):
|
def _calc_line_and_column(self, text, caret_position):
|
||||||
"""Calculate line and column numbers given a text and caret position
|
"""Calculate line and column numbers given a text and caret position
|
||||||
|
|
||||||
|
Both line and column are 1-based indexes, because that's what most
|
||||||
|
editors use as line and column starting index. By "most" we mean at
|
||||||
|
least vim, nvim, gvim, emacs, atom, sublimetext, notepad++, brackets,
|
||||||
|
visual studio, QtCreator and so on.
|
||||||
|
|
||||||
|
To find the line we just count how many newlines there are before the
|
||||||
|
caret and add 1.
|
||||||
|
|
||||||
|
To find the column we calculate the difference between the caret and
|
||||||
|
the last newline before the caret.
|
||||||
|
|
||||||
|
For example in the text `aaa\nbb|bbb` (| represents the caret):
|
||||||
|
caret_position = 6
|
||||||
|
text[:caret_position] = `aaa\nbb`
|
||||||
|
text[:caret_position].count('\n') = 1
|
||||||
|
caret_position - text[:caret_position].rfind('\n') = 3
|
||||||
|
|
||||||
|
Thus line, column = 2, 3, and the caret is indeed in the second
|
||||||
|
line, third column
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
text: the text for which the numbers must be calculated
|
text: the text for which the numbers must be calculated
|
||||||
caret_position: the position of the caret in the text
|
caret_position: the position of the caret in the text
|
||||||
@ -159,25 +179,6 @@ class ExternalEditor(QObject):
|
|||||||
Return:
|
Return:
|
||||||
A (line, column) tuple of (int, int)
|
A (line, column) tuple of (int, int)
|
||||||
"""
|
"""
|
||||||
# Both line and column are 1-based indexes, because that's what most
|
|
||||||
# editors use as line and column starting index. By "most" we mean at
|
|
||||||
# least vim, nvim, gvim, emacs, atom, sublimetext, notepad++, brackets,
|
|
||||||
# visual studio, QtCreator and so on.
|
|
||||||
#
|
|
||||||
# To find the line we just count how many newlines there are before the
|
|
||||||
# caret and add 1.
|
|
||||||
#
|
|
||||||
# To find the column we calculate the difference between the caret and
|
|
||||||
# the last newline before the caret.
|
|
||||||
#
|
|
||||||
# For example in the text `aaa\nbb|bbb` (| represents the caret):
|
|
||||||
# caret_position = 6
|
|
||||||
# text[:caret_position] = `aaa\nbb`
|
|
||||||
# text[:caret_psotion].count('\n') = 1
|
|
||||||
# caret_position - text[:caret_position].rfind('\n') = 3
|
|
||||||
#
|
|
||||||
# Thus line, column = 2, 3, and the caret is indeed in the second
|
|
||||||
# line, third column
|
|
||||||
line = text[:caret_position].count('\n') + 1
|
line = text[:caret_position].count('\n') + 1
|
||||||
column = caret_position - text[:caret_position].rfind('\n')
|
column = caret_position - text[:caret_position].rfind('\n')
|
||||||
return (line, column)
|
return (line, column)
|
||||||
|
Loading…
Reference in New Issue
Block a user