Skip to content

Commit 3e8f0e5

Browse files
tompngmatzbot
authored andcommitted
[ruby/reline] Support inserting C-c C-z C-\ with quoted_insert
(ruby/reline#798) ruby/reline@e6eb5d2d3c
1 parent 341503d commit 3e8f0e5

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

lib/reline/io/ansi.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,13 @@ def set_winch_handler(&handler)
309309
# Signal.trap may raise an ArgumentError if the platform doesn't support the signal.
310310
end
311311

312+
def read_single_char(keyseq_timeout)
313+
# Disable intr to read `C-c` `C-z` `C-\` for quoted insert
314+
@input.raw(intr: false) do
315+
super
316+
end
317+
end
318+
312319
def prep
313320
# Enable bracketed paste
314321
write "\e[?2004h" if Reline.core.config.enable_bracketed_paste && both_tty?

lib/reline/unicode.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class Reline::Unicode
2828
0x19 => '^Y',
2929
0x1A => '^Z', # C-z
3030
0x1B => '^[', # C-[ C-3
31+
0x1C => '^\\', # C-\
3132
0x1D => '^]', # C-]
3233
0x1E => '^^', # C-~ C-6
3334
0x1F => '^_', # C-_ C-7

test/reline/yamatanooroti/test_rendering.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1724,6 +1724,26 @@ def test_exit_with_ctrl_d
17241724
close
17251725
end
17261726

1727+
def test_quoted_insert_intr_keys
1728+
omit if Reline.core.io_gate.win?
1729+
start_terminal(5, 30, %W{ruby -I#{@pwd}/lib #{@pwd}/test/reline/yamatanooroti/multiline_repl}, startup_message: 'Multiline REPL.')
1730+
write '"'
1731+
write "\C-v"
1732+
write "\C-c"
1733+
write "\C-v"
1734+
write "\C-z"
1735+
write "\C-v"
1736+
write "\C-\\"
1737+
write "\".bytes\n"
1738+
assert_screen(<<~EOC)
1739+
Multiline REPL.
1740+
prompt> "^C^Z^\\\".bytes
1741+
=> [3, 26, 28]
1742+
prompt>
1743+
EOC
1744+
close
1745+
end
1746+
17271747
def test_print_before_readline
17281748
code = <<~RUBY
17291749
puts 'Multiline REPL.'

0 commit comments

Comments
 (0)