skip multiple consecutive whitespace

This commit is contained in:
Kartik K. Agaram 2022-07-11 19:18:54 -07:00
parent bc2c14c899
commit 6c4483976e
2 changed files with 49 additions and 2 deletions

View File

@ -515,9 +515,22 @@ function Text.end_of_line(left, right)
end
function Text.word_left(left, right)
-- skip some whitespace
while true do
if Cursor1.pos == 1 then
break
end
if Text.match(Lines[Cursor1.line].data, Cursor1.pos-1, '%S') then
break
end
Text.left(left, right)
end
-- skip some non-whitespace
while true do
Text.left(left, right)
if Cursor1.pos == 1 then break end
if Cursor1.pos == 1 then
break
end
assert(Cursor1.pos > 1)
if Text.match(Lines[Cursor1.line].data, Cursor1.pos-1, '%s') then
break
@ -526,9 +539,21 @@ function Text.word_left(left, right)
end
function Text.word_right(left, right)
-- skip some whitespace
while true do
if Cursor1.pos > utf8.len(Lines[Cursor1.line].data) then
break
end
if Text.match(Lines[Cursor1.line].data, Cursor1.pos, '%S') then
break
end
Text.right_without_scroll()
end
while true do
Text.right_without_scroll()
if Cursor1.pos > utf8.len(Lines[Cursor1.line].data) then break end
if Cursor1.pos > utf8.len(Lines[Cursor1.line].data) then
break
end
if Text.match(Lines[Cursor1.line].data, Cursor1.pos, '%s') then
break
end

View File

@ -152,6 +152,17 @@ function test_skip_past_tab_to_previous_word()
check_eq(Cursor1.pos, 9, 'F - test_skip_past_tab_to_previous_word')
end
function test_skip_multiple_spaces_to_previous_word()
io.write('\ntest_skip_multiple_spaces_to_previous_word')
App.screen.init{width=120, height=60}
Lines = load_array{'abc def'}
Cursor1 = {line=1, pos=6} -- at the start of second word
Margin_right = 0; Margin_width = Margin_left
App.draw()
App.run_after_keychord('M-left')
check_eq(Cursor1.pos, 1, 'F - test_skip_multiple_spaces_to_previous_word')
end
function test_move_to_start_of_word_on_previous_line()
io.write('\ntest_move_to_start_of_word_on_previous_line')
App.screen.init{width=120, height=60}
@ -197,6 +208,17 @@ function test_skip_past_tab_to_next_word()
check_eq(Cursor1.pos, 4, 'F - test_skip_past_tab_to_next_word')
end
function test_skip_multiple_spaces_to_next_word()
io.write('\ntest_skip_multiple_spaces_to_next_word')
App.screen.init{width=120, height=60}
Lines = load_array{'abc def'}
Cursor1 = {line=1, pos=4} -- at the start of second word
Margin_right = 0; Margin_width = Margin_left
App.draw()
App.run_after_keychord('M-right')
check_eq(Cursor1.pos, 9, 'F - test_skip_multiple_spaces_to_next_word')
end
function test_move_past_end_of_word_on_next_line()
io.write('\ntest_move_past_end_of_word_on_next_line')
App.screen.init{width=120, height=60}