Christophe Weblog Wiki Code Publications Music
implement `swank:operator-arglist` properly
[swankr.git] / swank.R
diff --git a/swank.R b/swank.R
index d91c35fdbd3663c3d8312a2a204a3e6a0ec73af7..49f73fff2b1dd3e61e4294140a03f31f727252a0 100644 (file)
--- a/swank.R
+++ b/swank.R
@@ -348,7 +348,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) {