X-Git-Url: http://christophe.rhodes.io/gitweb/?p=swankr.git;a=blobdiff_plain;f=swank.R;h=f3a85ccc6a8b0d770b9273180bb179e717fc736d;hp=ca1eff93665ed4b1625e4509a06178355d44a275;hb=19a4e9d454ec87e4374c5e92d69b47c7548fb5af;hpb=081a80aba6b863a9ae5aafd16e12a114e4a5c339 diff --git a/swank.R b/swank.R index ca1eff9..f3a85cc 100644 --- a/swank.R +++ b/swank.R @@ -64,11 +64,13 @@ makeSldbState <- function(condition, level, id) { } sldbLoop <- function(io, sldbState, id) { - sendToEmacs(io, c(list(quote(`:debug`), id, sldbState$level), debuggerInfoForEmacs(sldbState))) - sendToEmacs(io, list(quote(`:debug-activate`), id, sldbState$level, FALSE)) - while(TRUE) { - dispatch(io, readPacket(io), sldbState) - } + tryCatch({ + sendToEmacs(io, c(list(quote(`:debug`), id, sldbState$level), debuggerInfoForEmacs(sldbState))) + sendToEmacs(io, list(quote(`:debug-activate`), id, sldbState$level, FALSE)) + while(TRUE) { + dispatch(io, readPacket(io), sldbState) + } + }, finally=sendToEmacs(io, c(list(quote(`:debug-return`), id, sldbState$level, FALSE)))) } debuggerInfoForEmacs <- function(sldbState, from=0, to=NULL) {