summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/reline/line_editor.rb9
-rw-r--r--test/reline/test_within_pipe.rb14
2 files changed, 23 insertions, 0 deletions
diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb
index b1769d958a..568cea8bd4 100644
--- a/lib/reline/line_editor.rb
+++ b/lib/reline/line_editor.rb
@@ -958,6 +958,7 @@ class Reline::LineEditor
end
end
alias_method :ed_digit, :ed_insert
+ alias_method :self_insert, :ed_insert
private def ed_quoted_insert(str, arg: 1)
@waiting_proc = proc { |key|
@@ -971,6 +972,7 @@ class Reline::LineEditor
@waiting_proc = nil
}
end
+ alias_method :quoted_insert, :ed_quoted_insert
private def ed_next_char(key, arg: 1)
byte_size = Reline::Unicode.get_next_mbchar_size(@line, @byte_pointer)
@@ -1271,6 +1273,7 @@ class Reline::LineEditor
@cursor_max -= width
end
end
+ alias_method :backward_delete_char, :em_delete_prev_char
private def ed_kill_line(key)
if @line.bytesize > @byte_pointer
@@ -1316,6 +1319,7 @@ class Reline::LineEditor
@rest_height += 1
end
end
+ alias_method :delete_char, :em_delete_or_list
private def em_yank(key)
yanked = @kill_ring.yank
@@ -1405,6 +1409,7 @@ class Reline::LineEditor
end
end
end
+ alias_method :transpose_chars, :ed_transpose_chars
private def ed_transpose_words(key)
left_word_start, middle_start, right_word_start, after_start = Reline::Unicode.ed_transpose_words(@line, @byte_pointer)
@@ -1418,6 +1423,7 @@ class Reline::LineEditor
@byte_pointer = from_head_to_left_word.bytesize
@cursor = calculate_width(from_head_to_left_word)
end
+ alias_method :transpose_words, :ed_transpose_words
private def em_capitol_case(key)
if @line.bytesize > @byte_pointer
@@ -1429,6 +1435,7 @@ class Reline::LineEditor
@cursor += calculate_width(new_str)
end
end
+ alias_method :capitalize_word, :em_capitol_case
private def em_lower_case(key)
if @line.bytesize > @byte_pointer
@@ -1444,6 +1451,7 @@ class Reline::LineEditor
@line += rest
end
end
+ alias_method :downcase_word, :em_lower_case
private def em_upper_case(key)
if @line.bytesize > @byte_pointer
@@ -1459,6 +1467,7 @@ class Reline::LineEditor
@line += rest
end
end
+ alias_method :upcase_word, :em_upper_case
private def em_kill_region(key)
if @byte_pointer > 0
diff --git a/test/reline/test_within_pipe.rb b/test/reline/test_within_pipe.rb
index b91f99e1b8..ab6a42910b 100644
--- a/test/reline/test_within_pipe.rb
+++ b/test/reline/test_within_pipe.rb
@@ -40,4 +40,18 @@ class Reline::WithinPipeTest < Reline::TestCase
@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
+
+ def test_macro_commands_for_moving
+ @config.add_default_key_binding("\C-x\C-d".bytes, :delete_char)
+ @config.add_default_key_binding("\C-x\C-h".bytes, :backward_delete_char)
+ @config.add_default_key_binding("\C-x\C-v".bytes, :quoted_insert)
+ #@config.add_default_key_binding("\C-xa".bytes, :self_insert)
+ @config.add_default_key_binding("\C-x\C-t".bytes, :transpose_chars)
+ @config.add_default_key_binding("\C-x\M-t".bytes, :transpose_words)
+ @config.add_default_key_binding("\C-x\M-u".bytes, :upcase_word)
+ @config.add_default_key_binding("\C-x\M-l".bytes, :downcase_word)
+ @config.add_default_key_binding("\C-x\M-c".bytes, :capitalize_word)
+ @writer.write("abcde\C-b\C-b\C-b\C-x\C-d\C-x\C-h\C-x\C-v\C-a\C-f\C-f EF\C-x\C-t gh\C-x\M-t\C-b\C-b\C-b\C-b\C-b\C-b\C-b\C-b\C-x\M-u\C-x\M-l\C-x\M-c\n")
+ assert_equal "a\C-aDE gh Fe", Reline.readmultiline(&proc{ true })
+ end
end