Christophe Weblog Wiki Code Publications Music
declare a version in `swank:connection-info`
[swankr.git] / swank.R
diff --git a/swank.R b/swank.R
index d91c35fdbd3663c3d8312a2a204a3e6a0ec73af7..979bd8487ceb2532661c5db39e7228782bc6d4cc 100644 (file)
--- a/swank.R
+++ b/swank.R
@@ -293,6 +293,7 @@ printToString <- function(val) {
 `swank:connection-info` <- function (slimeConnection, sldbState) {
   list(quote(`:pid`), Sys.getpid(),
        quote(`:package`), list(quote(`:name`), "R", quote(`:prompt`), "R> "),
+       quote(`:version`), "2012-04-23",
        quote(`:encoding`), list(quote(`:coding-systems`), list("utf-8-unix")),
        quote(`:lisp-implementation`), list(quote(`:type`), "R",
                                            quote(`:name`), "R",
@@ -348,7 +349,16 @@ sendReplResultFunction <- sendReplResult
 }
 
 `swank:operator-arglist` <- function(slimeConnection, sldbState, op, package) {
-  list()
+  if(!exists(op, envir = globalenv())) {
+    return(list())
+  }
+  funoid <- get(op, envir = globalenv())
+  if(is.function(funoid)) {
+    args <- formals(funoid)
+    paste(sprintf("%s=%s", names(args), args), collapse=", ")
+  } else {
+    list()
+  }
 }
 
 `swank:throw-to-toplevel` <- function(slimeConnection, sldbState) {