X-Git-Url: http://christophe.rhodes.io/gitweb/?p=swankr.git;a=blobdiff_plain;f=swank.R;h=3ab65ee02f1228d8b2c3423b41d33647f0fe4457;hp=d72103fc309fc33c57b5c9cd0ca13f4eaa60ac36;hb=8d84cee073ab58c2c858a6aac994a4f88d91ddb4;hpb=a8a7e4725d583158cfc096a687a897763e00579a diff --git a/swank.R b/swank.R index d72103f..3ab65ee 100644 --- a/swank.R +++ b/swank.R @@ -558,3 +558,32 @@ emacsInspect.numeric <- function(numeric) { object <- `swank:inspector-nth-part`(slimeConnection, sldbState, index) inspectObject(slimeConnection, object) } + +`swank:inspector-pop` <- function(slimeConnection, sldbState) { + if(!is.null(slimeConnection$istate$previous)) { + slimeConnection$istate <- slimeConnection$istate$previous + istateToElisp(slimeConnection$istate) + } else { + FALSE + } +} + +`swank:inspector-next` <- function(slimeConnection, sldbState) { + if(!is.null(slimeConnection$istate$`next`)) { + slimeConnection$istate <- slimeConnection$istate$`next` + istateToElisp(slimeConnection$istate) + } else { + FALSE + } +} + +`swank:inspector-eval` <- function(slimeConnection, sldbState, string) { + expr <- parse(text=string)[[1]] + object <- slimeConnection$istate$object + if(inherits(object, "list")|inherits(object, "environment")) { + substituted <- substituteDirect(expr, object) + eval(substituted, envir=globalenv()) + } else { + eval(expr, envir=globalenv()) + } +}