Christophe Weblog Wiki Code Publications Music
`swank:describe-function` and `swank:describe-symbol` implementations
[swankr.git] / swank.R
diff --git a/swank.R b/swank.R
index 8ba9060f6147a47956ba4e6e18a8d4a8ebd9be45..67fdbbcfc9cdb1d63e72130a3e169176312f9584 100644 (file)
--- a/swank.R
+++ b/swank.R
@@ -361,6 +361,22 @@ sendReplResultFunction <- sendReplResult
   }
 }
 
+`swank:describe-function` <- function(slimeConnection, sldbState, op, package) {
+  ## FIXME: maybe not the best match?
+  `swank:operator-arglist`(slimeConnection, sldbState, op, package)
+}
+
+helpFilesWithTopicString <- function(value) {
+  output <- capture.output(tools:::Rd2txt(utils:::.getHelpFile(value),
+                                          options=list(underline_titles=FALSE)))
+  paste(output, collapse="\n")
+}
+
+`swank:describe-symbol` <- function(slimeConnection, sldbState, op, package) {
+  value <- help(op)
+  helpFilesWithTopicString(value)
+}
+
 `swank:throw-to-toplevel` <- function(slimeConnection, sldbState) {
   condition <- simpleCondition("Throw to toplevel")
   class(condition) <- c("swankTopLevel", class(condition))