Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Make ^C in REPL abort the current line, if one is running #5558
If you start the REPL and then run:
Or any other long running command, it'll "hang" for a long time. If you attempt to press Control+C to abort that line, you end up exiting REPL.
When ^C is pressed while a line in REPL is running, it should abort that line, instead of exiting. And the current behaviour is to be maintained in that pressing ^C when nothing is running exitings the REPL.
Relevant IRC conversation: http://irclog.perlgeek.de/perl6/2016-08-11#i_13007834
Working on this now
Fixed with be7ce04 , tests needed
Turns out this was slightly more involved than just setting up a CATCH block, as the CATCH block will only be seen either in the executing thread, or in the .tap block of the signal handler.
So in the end, I decided to always start the code in a separate thread with “start”, and let another Promise be reset by ^C, and then wait for either promise to be kept.