mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/reline] Delete the last char of a line by dw
This closes ruby/reline#229. https://github.com/ruby/reline/commit/3f0ae689c4
This commit is contained in:
parent
8d5d139afa
commit
0db9842b2c
2 changed files with 26 additions and 3 deletions
|
@ -459,7 +459,7 @@ class Reline::Unicode
|
|||
end
|
||||
|
||||
def self.vi_forward_word(line, byte_pointer)
|
||||
if (line.bytesize - 1) > byte_pointer
|
||||
if line.bytesize > byte_pointer
|
||||
size = get_next_mbchar_size(line, byte_pointer)
|
||||
mbchar = line.byteslice(byte_pointer, size)
|
||||
if mbchar =~ /\w/
|
||||
|
@ -474,7 +474,7 @@ class Reline::Unicode
|
|||
else
|
||||
return [0, 0]
|
||||
end
|
||||
while (line.bytesize - 1) > (byte_pointer + byte_size)
|
||||
while line.bytesize > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||
case started_by
|
||||
|
@ -488,7 +488,7 @@ class Reline::Unicode
|
|||
width += get_mbchar_width(mbchar)
|
||||
byte_size += size
|
||||
end
|
||||
while (line.bytesize - 1) > (byte_pointer + byte_size)
|
||||
while line.bytesize > (byte_pointer + byte_size)
|
||||
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||
break if mbchar =~ /\S/
|
||||
|
|
|
@ -1215,6 +1215,29 @@ class Reline::KeyActor::ViInsert::Test < Reline::TestCase
|
|||
assert_line('aaa ddd eee')
|
||||
end
|
||||
|
||||
def test_vi_delete_meta_with_vi_next_word_at_eol
|
||||
input_keys("foo bar\C-[0w")
|
||||
assert_byte_pointer_size('foo ')
|
||||
assert_cursor(4)
|
||||
assert_cursor_max(7)
|
||||
assert_line('foo bar')
|
||||
input_keys('w')
|
||||
assert_byte_pointer_size('foo ba')
|
||||
assert_cursor(6)
|
||||
assert_cursor_max(7)
|
||||
assert_line('foo bar')
|
||||
input_keys('0dw')
|
||||
assert_byte_pointer_size('')
|
||||
assert_cursor(0)
|
||||
assert_cursor_max(3)
|
||||
assert_line('bar')
|
||||
input_keys('dw')
|
||||
assert_byte_pointer_size('')
|
||||
assert_cursor(0)
|
||||
assert_cursor_max(0)
|
||||
assert_line('')
|
||||
end
|
||||
|
||||
def test_vi_delete_meta_with_vi_next_char
|
||||
input_keys("aaa bbb ccc ___ ddd\C-[02w")
|
||||
assert_byte_pointer_size('aaa bbb ')
|
||||
|
|
Loading…
Reference in a new issue