summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2019-06-03 03:41:40 +0900
committeraycabta <aycabta@gmail.com>2019-06-03 03:41:40 +0900
commit5524de5ca010e92f18fa6991f7bc953bcf84169d (patch)
tree5ddf10f004bd69421bd93547c6adc48028f6363d
parent1bfba99b793e91f2d26af2ff7051a48f184f649e (diff)
Add aliases for commands for moving macro
-rw-r--r--lib/reline/line_editor.rb7
-rw-r--r--test/reline/test_within_pipe.rb11
2 files changed, 18 insertions, 0 deletions
diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb
index 6446879312..945c3ef71a 100644
--- a/lib/reline/line_editor.rb
+++ b/lib/reline/line_editor.rb
@@ -996,6 +996,7 @@ class Reline::LineEditor
arg -= 1
ed_next_char(key, arg: arg) if arg > 0
end
+ alias_method :forward_char, :ed_next_char
private def ed_prev_char(key, arg: 1)
if @cursor > 0
@@ -1023,6 +1024,7 @@ class Reline::LineEditor
private def ed_move_to_beg(key)
@byte_pointer = @cursor = 0
end
+ alias_method :beginning_of_line, :ed_move_to_beg
private def ed_move_to_end(key)
@byte_pointer = 0
@@ -1037,6 +1039,7 @@ class Reline::LineEditor
@byte_pointer += byte_size
end
end
+ alias_method :end_of_line, :ed_move_to_end
private def ed_search_prev_history(key)
@line_backup_in_history = @line
@@ -1350,6 +1353,7 @@ class Reline::LineEditor
private def ed_clear_screen(key)
@cleared = true
end
+ alias_method :clear_screen, :ed_clear_screen
private def em_next_word(key)
if @line.bytesize > @byte_pointer
@@ -1358,6 +1362,7 @@ class Reline::LineEditor
@cursor += width
end
end
+ alias_method :forward_word, :em_next_word
private def ed_prev_word(key)
if @byte_pointer > 0
@@ -1366,6 +1371,7 @@ class Reline::LineEditor
@cursor -= width
end
end
+ alias_method :backward_word, :ed_prev_word
private def em_delete_next_word(key)
if @line.bytesize > @byte_pointer
@@ -1477,6 +1483,7 @@ class Reline::LineEditor
ed_prev_char(key)
@config.editing_mode = :vi_command
end
+ alias_method :backward_char, :ed_prev_char
private def vi_next_word(key, arg: 1)
if @line.bytesize > @byte_pointer
diff --git a/test/reline/test_within_pipe.rb b/test/reline/test_within_pipe.rb
index dc58e91e2b..b91f99e1b8 100644
--- a/test/reline/test_within_pipe.rb
+++ b/test/reline/test_within_pipe.rb
@@ -29,4 +29,15 @@ class Reline::WithinPipeTest < Reline::TestCase
@writer.write("abcd\n")
assert_equal 'd', Reline.readmultiline(&proc{ true })
end
+
+ def test_macro_commands_for_moving
+ @config.add_default_key_binding("\C-x\C-a".bytes, :beginning_of_line)
+ @config.add_default_key_binding("\C-x\C-e".bytes, :end_of_line)
+ @config.add_default_key_binding("\C-x\C-f".bytes, :forward_char)
+ @config.add_default_key_binding("\C-x\C-b".bytes, :backward_char)
+ @config.add_default_key_binding("\C-x\M-f".bytes, :forward_word)
+ @config.add_default_key_binding("\C-x\M-b".bytes, :backward_word)
+ @writer.write(" def\C-x\C-aabc\C-x\C-e ghi\C-x\C-a\C-x\C-f\C-x\C-f_\C-x\C-b\C-x\C-b_\C-x\C-f\C-x\C-f\C-x\C-f\C-x\M-f_\C-x\M-b\n")
+ assert_equal 'a_b_c def_ ghi', Reline.readmultiline(&proc{ true })
+ end
end