Fix highlighting edges and unify highlighting code
This commit is contained in:
@@ -78,3 +78,22 @@ def test_syntax_highlighting_does_not_highlight_arrows(run, tmpdir):
|
||||
with run(str(f), term='screen-256color', width=20) as h, and_exit(h):
|
||||
h.await_text('loooo')
|
||||
h.assert_screen_attr_equals(2, [(243, 40, 0)] * 19 + [(236, 40, 0)])
|
||||
|
||||
h.press('Down')
|
||||
h.press('^E')
|
||||
h.await_text_missing('loooo')
|
||||
expected = [(236, 40, 0)] + [(243, 40, 0)] * 15 + [(236, 40, 0)] * 4
|
||||
h.assert_screen_attr_equals(2, expected)
|
||||
|
||||
|
||||
def test_syntax_highlighting_off_screen_does_not_crash(run, tmpdir):
|
||||
f = tmpdir.join('f.demo')
|
||||
f.write(f'"""a"""{"x" * 40}"""b"""')
|
||||
|
||||
with run(str(f), term='screen-256color', width=20) as h, and_exit(h):
|
||||
h.await_text('"""a"""')
|
||||
h.assert_screen_attr_equals(1, [(17, 40, 0)] * 7 + [(236, 40, 0)] * 13)
|
||||
h.press('^E')
|
||||
h.await_text('"""b"""')
|
||||
expected = [(236, 40, 0)] * 11 + [(17, 40, 0)] * 7 + [(236, 40, 0)] * 2
|
||||
h.assert_screen_attr_equals(1, expected)
|
||||
|
||||
@@ -127,3 +127,16 @@ def test_undo_redo_causes_scroll(run):
|
||||
h.await_cursor_position(x=0, y=1)
|
||||
h.press('M-U')
|
||||
h.await_cursor_position(x=0, y=4)
|
||||
|
||||
|
||||
def test_undo_redo_clears_selection(run, ten_lines):
|
||||
# maintaining the selection across undo/redo is both difficult and not all
|
||||
# that useful. prior to this it was buggy anyway (a negative selection
|
||||
# indented and then undone would highlight out of bounds)
|
||||
with run(str(ten_lines), width=20) as h, and_exit(h):
|
||||
h.press('S-Down')
|
||||
h.press('Tab')
|
||||
h.await_cursor_position(x=4, y=2)
|
||||
h.press('M-u')
|
||||
h.await_cursor_position(x=0, y=2)
|
||||
h.assert_screen_attr_equals(1, [(-1, -1, 0)] * 20)
|
||||
|
||||
Reference in New Issue
Block a user