Christophe Weblog Wiki Code Publications Music
implement swank:inspect-current-condition and swank:inspect-frame-var
[swankr.git] / swank.R
diff --git a/swank.R b/swank.R
index 3ab65ee02f1228d8b2c3423b41d33647f0fe4457..e9674bc7f175276229aec93e08d386a2375e4664 100644 (file)
--- a/swank.R
+++ b/swank.R
@@ -533,6 +533,10 @@ emacsInspect <- function(object) {
   UseMethod("emacsInspect")
 }
 
+emacsInspect.default <- function(thing) {
+  c(list(paste("a ", class(thing)[[1]], sep=""), list(quote(`:newline`))))
+}
+
 emacsInspect.list <- function(list) {
   c(list("a list", list(quote(`:newline`))),
     mapply(function(name, value) { list(list(quote(`:line`), name, value)) },
@@ -587,3 +591,16 @@ emacsInspect.numeric <- function(numeric) {
     eval(expr, envir=globalenv())
   }
 }
+
+`swank:inspect-current-condition` <- function(slimeConnection, sldbState) {
+  resetInspector(slimeConnection)
+  inspectObject(slimeConnection, sldbState$condition)
+}
+
+`swank:inspect-frame-var` <- function(slimeConnection, sldbState, frame, var) {
+  resetInspector(slimeConnection)
+  frame <- sldbState$frames[[1+frame]]
+  name <- ls(envir=frame)[[1+var]]
+  object <- get(name, envir=frame)
+  inspectObject(slimeConnection, object)
+}