Skip to content

Commit 9fca6ce

Browse files
committed
Implement em_kill_line
1 parent da7af35 commit 9fca6ce

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

lib/reline/line_editor.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2552,6 +2552,17 @@ def finish
25522552
end
25532553
alias_method :unix_line_discard, :vi_kill_line_prev
25542554

2555+
private def em_kill_line(key)
2556+
if @line.size > 0
2557+
@kill_ring.append(@line.dup, true)
2558+
@line.clear
2559+
@byte_pointer = 0
2560+
@cursor_max = 0
2561+
@cursor = 0
2562+
end
2563+
end
2564+
alias_method :kill_whole_line, :em_kill_line
2565+
25552566
private def em_delete(key)
25562567
if (not @is_multiline and @line.empty?) or (@is_multiline and @line.empty? and @buffer_of_lines.size == 1)
25572568
@line = nil

test/reline/test_key_actor_emacs.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,34 @@ def test_ed_kill_line
254254
assert_line('ab')
255255
end
256256

257+
def test_em_kill_line
258+
@line_editor.input_key(Reline::Key.new(:em_kill_line, :em_kill_line, false))
259+
assert_byte_pointer_size('')
260+
assert_cursor(0)
261+
assert_cursor_max(0)
262+
assert_line('')
263+
input_keys('abc')
264+
@line_editor.input_key(Reline::Key.new(:em_kill_line, :em_kill_line, false))
265+
assert_byte_pointer_size('')
266+
assert_cursor(0)
267+
assert_cursor_max(0)
268+
assert_line('')
269+
input_keys('abc')
270+
input_keys("\C-b", false)
271+
@line_editor.input_key(Reline::Key.new(:em_kill_line, :em_kill_line, false))
272+
assert_byte_pointer_size('')
273+
assert_cursor(0)
274+
assert_cursor_max(0)
275+
assert_line('')
276+
input_keys('abc')
277+
input_keys("\C-a", false)
278+
@line_editor.input_key(Reline::Key.new(:em_kill_line, :em_kill_line, false))
279+
assert_byte_pointer_size('')
280+
assert_cursor(0)
281+
assert_cursor_max(0)
282+
assert_line('')
283+
end
284+
257285
def test_ed_move_to_beg
258286
input_keys('abd')
259287
assert_byte_pointer_size('abd')

0 commit comments

Comments
 (0)