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
|
end
|
||||||
|
|
||||||
def self.vi_forward_word(line, byte_pointer)
|
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)
|
size = get_next_mbchar_size(line, byte_pointer)
|
||||||
mbchar = line.byteslice(byte_pointer, size)
|
mbchar = line.byteslice(byte_pointer, size)
|
||||||
if mbchar =~ /\w/
|
if mbchar =~ /\w/
|
||||||
|
@ -474,7 +474,7 @@ class Reline::Unicode
|
||||||
else
|
else
|
||||||
return [0, 0]
|
return [0, 0]
|
||||||
end
|
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)
|
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||||
case started_by
|
case started_by
|
||||||
|
@ -488,7 +488,7 @@ class Reline::Unicode
|
||||||
width += get_mbchar_width(mbchar)
|
width += get_mbchar_width(mbchar)
|
||||||
byte_size += size
|
byte_size += size
|
||||||
end
|
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)
|
size = get_next_mbchar_size(line, byte_pointer + byte_size)
|
||||||
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
mbchar = line.byteslice(byte_pointer + byte_size, size)
|
||||||
break if mbchar =~ /\S/
|
break if mbchar =~ /\S/
|
||||||
|
|
|
@ -1215,6 +1215,29 @@ class Reline::KeyActor::ViInsert::Test < Reline::TestCase
|
||||||
assert_line('aaa ddd eee')
|
assert_line('aaa ddd eee')
|
||||||
end
|
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
|
def test_vi_delete_meta_with_vi_next_char
|
||||||
input_keys("aaa bbb ccc ___ ddd\C-[02w")
|
input_keys("aaa bbb ccc ___ ddd\C-[02w")
|
||||||
assert_byte_pointer_size('aaa bbb ')
|
assert_byte_pointer_size('aaa bbb ')
|
||||||
|
|
Loading…
Add table
Reference in a new issue