Is there a way to handle a Slime initiated user interrupt.<br><br>For context: I am writing a shell interaction library and would like to intercept user interrupts in order to call sigstop and, possibly, subsequently call sigcont or sigkill to pause, unpause, or kill the shell process. From the command line (i.e. without Slime) or the inferior lisp process comint buffer, I can handle the condition sb-sys:interactive-interrupt in SBCL and get results along the lines I would like:<br>
<br>> * (handler-case (loop :while t :do (sleep 1)) (sb-sys:interactive-interrupt (cond) (print "test") (error cond)))<br>> <br>> ;; User inputs C-c<br>> <br>> "test" ;; <- My code is run<br>
> debugger invoked on a SB-SYS:INTERACTIVE-INTERRUPT in thread #<THREAD<br>> "initial thread" RUNNING<br>> {1002940EE1}>:<br>
> Interactive interrupt at #x7FFFF79CA350.<br>> <br>> Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.<br>> <br>> restarts (invokable by number or by possibly-abbreviated name):<br>> 0: [ABORT] Exit debugger, returning to top level.<br>
> <br>> (#:EVAL-THUNK)<br>> 0] <br><br>However, when the user interrupt initiates from the Slime repl, this handler is bypassed entirely and my wrapper code isn't run. I don't know enough about the way Slime/Swank uses conditions to understand what is happening here. Does anybody know how I can successfully handle a user interrupt that is initiated from within Emacs, either via changing my code or hacking on Slime/Swank itself?<br>
<br>Zach KS<br><br>