Skip to content

Commit 802b1cb

Browse files
authored
Fix dancing-ruby Ctrl+C stop (#735)
1 parent e26e90e commit 802b1cb

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

lib/irb/easter-egg.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ def render_frame(i)
109109
end
110110
end
111111
when :dancing
112-
begin
112+
STDOUT.cooked do
113+
interrupted = false
114+
prev_trap = trap("SIGINT") { interrupted = true }
113115
canvas = Canvas.new(Reline.get_screen_size)
114116
Reline::IOGate.set_winch_handler do
115117
canvas = Canvas.new(Reline.get_screen_size)
@@ -125,10 +127,12 @@ def render_frame(i)
125127
buff[0, 20] = "\e[0mPress Ctrl+C to stop\e[31m\e[1m"
126128
print "\e[H" + buff
127129
sleep 0.05
130+
break if interrupted
128131
end
129132
rescue Interrupt
130133
ensure
131134
print "\e[0m\e[?1049l"
135+
trap("SIGINT", prev_trap)
132136
end
133137
end
134138
end

0 commit comments

Comments
 (0)