[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
This commit is contained in:
parent
95c61c8d82
commit
c3a3f65b45
@ -290,6 +290,7 @@ module Reline
|
|||||||
|
|
||||||
may_req_ambiguous_char_width
|
may_req_ambiguous_char_width
|
||||||
line_editor.reset(prompt, encoding: Reline::IOGate.encoding)
|
line_editor.reset(prompt, encoding: Reline::IOGate.encoding)
|
||||||
|
line_editor.set_signal_handlers
|
||||||
if multiline
|
if multiline
|
||||||
line_editor.multiline_on
|
line_editor.multiline_on
|
||||||
if block_given?
|
if block_given?
|
||||||
|
@ -151,33 +151,6 @@ class Reline::LineEditor
|
|||||||
@screen_size = Reline::IOGate.get_screen_size
|
@screen_size = Reline::IOGate.get_screen_size
|
||||||
@screen_height = @screen_size.first
|
@screen_height = @screen_size.first
|
||||||
reset_variables(prompt, encoding: encoding)
|
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
|
Reline::IOGate.set_winch_handler do
|
||||||
@resized = true
|
@resized = true
|
||||||
end
|
end
|
||||||
@ -244,6 +217,36 @@ class Reline::LineEditor
|
|||||||
end
|
end
|
||||||
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
|
def finalize
|
||||||
Signal.trap('INT', @old_trap)
|
Signal.trap('INT', @old_trap)
|
||||||
begin
|
begin
|
||||||
|
Loading…
x
Reference in New Issue
Block a user