X-Git-Url: http://christophe.rhodes.io/gitweb/?p=swankr.git;a=blobdiff_plain;f=swank.R;h=bd7e093703fa4a4d5f9fc5ea7e1ad986853ad7fa;hp=b9d89cbc6959c37b59a0e2c16ec7d064ee677a7b;hb=e35149b43e4da28f542c6bdf2decd802e84dd440;hpb=f5a8e9accbff9a90697cf14b159b7ce1f8335815 diff --git a/swank.R b/swank.R index b9d89cb..bd7e093 100644 --- a/swank.R +++ b/swank.R @@ -259,6 +259,12 @@ printToString <- function(val) { } `swank:swank-require` <- function (slimeConnection, sldbState, contribs) { + for(contrib in contribs) { + filename <- sprintf("%s.R", as.character(contrib)) + if(file.exists(filename)) { + source(filename, verbose=TRUE) + } + } list() } @@ -266,10 +272,22 @@ printToString <- function(val) { list("R", "R") } +sendReplResult <- function(slimeConnection, value) { + string <- printToString(value) + sendToEmacs(slimeConnection, + list(quote(`:write-string`), + paste(string, collapse="\n"), + quote(`:repl-result`))) +} + +sendReplResultFunction <- sendReplResult + `swank:listener-eval` <- function(slimeConnection, sldbState, string) { - val <- eval(parse(text=string), envir = globalenv()) - string <- printToString(val) - sendToEmacs(slimeConnection, list(quote(`:write-string`), paste(string, collapse="\n"), quote(`:repl-result`))) + string <- gsub("#\\.\\(swank:lookup-presented-object-or-lose([^)]*)\\)", ".(`swank:lookup-presented-object-or-lose`(slimeConnection, sldbState,\\1))", string) + expr <- parse(text=string)[[1]] + lookedup <- do.call("bquote", list(expr)) + value <- eval(lookedup, envir = globalenv()) + sendReplResultFunction(slimeConnection, value) list() }