diff options
author | aycabta <[email protected]> | 2021-12-20 18:46:57 +0900 |
---|---|---|
committer | git <[email protected]> | 2021-12-21 00:13:19 +0900 |
commit | c3a3f65b4575898ae2ae457bc4f56d1e6bdb169f (patch) | |
tree | 4e4ff786da1c16dd7eb707ecc6358306ef559798 /lib/reline/line_editor.rb | |
parent | 95c61c8d827959b30c12b1a5fe32df95cab81cbd (diff) |
[ruby/reline] Split off set_signal_handler method
In some tests, the LineEditor#reset method is always called, but doesn't
need to set the signal handlers there, so cuts it out to a separate
method.
https://github.com/ruby/reline/commit/b143c4f5f9
Diffstat (limited to 'lib/reline/line_editor.rb')
-rw-r--r-- | lib/reline/line_editor.rb | 57 |
1 files changed, 30 insertions, 27 deletions
diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb index 657b3e7018..2c458388cd 100644 --- a/lib/reline/line_editor.rb +++ b/lib/reline/line_editor.rb @@ -151,33 +151,6 @@ class Reline::LineEditor @screen_size = Reline::IOGate.get_screen_size @screen_height = @screen_size.first reset_variables(prompt, encoding: encoding) - @old_trap = Signal.trap('INT') { - clear_dialog - if @scroll_partial_screen - move_cursor_down(@screen_height - (@line_index - @scroll_partial_screen) - 1) - else - move_cursor_down(@highest_in_all - @line_index - 1) - end - Reline::IOGate.move_cursor_column(0) - scroll_down(1) - case @old_trap - when 'DEFAULT', 'SYSTEM_DEFAULT' - raise Interrupt - when 'IGNORE' - # Do nothing - when 'EXIT' - exit - else - @old_trap.call - end - } - begin - @old_tstp_trap = Signal.trap('TSTP') { - Reline::IOGate.ungetc("\C-z".ord) - @old_tstp_trap.call if @old_tstp_trap.respond_to?(:call) - } - rescue ArgumentError - end Reline::IOGate.set_winch_handler do @resized = true end @@ -244,6 +217,36 @@ class Reline::LineEditor end end + def set_signal_handlers + @old_trap = Signal.trap('INT') { + clear_dialog + if @scroll_partial_screen + move_cursor_down(@screen_height - (@line_index - @scroll_partial_screen) - 1) + else + move_cursor_down(@highest_in_all - @line_index - 1) + end + Reline::IOGate.move_cursor_column(0) + scroll_down(1) + case @old_trap + when 'DEFAULT', 'SYSTEM_DEFAULT' + raise Interrupt + when 'IGNORE' + # Do nothing + when 'EXIT' + exit + else + @old_trap.call + end + } + begin + @old_tstp_trap = Signal.trap('TSTP') { + Reline::IOGate.ungetc("\C-z".ord) + @old_tstp_trap.call if @old_tstp_trap.respond_to?(:call) + } + rescue ArgumentError + end + end + def finalize Signal.trap('INT', @old_trap) begin |