##// END OF EJS Templates
Fix line_at_cursor for end of last line without trailing newline
Thomas Kluyver -
Show More
@@ -105,8 +105,8 b' def test_attrs():'
105 105 def test_line_at_cursor():
106 106 cell = ""
107 107 (line, offset) = line_at_cursor(cell, cursor_pos=11)
108 assert line == "", ("Expected '', got %r" % line)
109 assert offset == 0, ("Expected '', got %r" % line)
108 nt.assert_equal(line, "")
109 nt.assert_equal(offset, 0)
110 110
111 111 # The position after a newline should be the start of the following line.
112 112 cell = "One\nTwo\n"
@@ -114,6 +114,12 b' def test_line_at_cursor():'
114 114 nt.assert_equal(line, "Two\n")
115 115 nt.assert_equal(offset, 4)
116 116
117 # The end of a cell should be on the last line
118 cell = "pri\npri"
119 (line, offset) = line_at_cursor(cell, cursor_pos=7)
120 nt.assert_equal(line, "pri")
121 nt.assert_equal(offset, 4)
122
117 123 def test_muliline_statement():
118 124 cell = """a = (1,
119 125 3)
@@ -44,6 +44,11 b' def line_at_cursor(cell, cursor_pos=0):'
44 44 lines = cell.splitlines(True)
45 45 for line in lines:
46 46 next_offset = offset + len(line)
47 if not line.endswith('\n'):
48 # If the last line doesn't have a trailing newline, treat it as if
49 # it does so that the cursor at the end of the line still counts
50 # as being on that line.
51 next_offset += 1
47 52 if next_offset > cursor_pos:
48 53 break
49 54 offset = next_offset
General Comments 0
You need to be logged in to leave comments. Login now