### latest version of the GNU General Public Licence is available at
### <http://www.gnu.org/licenses/gpl.txt>.
+### KLUDGE: this assumes that we're being sourced with chdir=TRUE.
+### (If not, `swank:swank-require` will work under the circumstances
+### that it used to work anyway -- i.e. the working directory is the
+### swankr directory)
+swankrPath <- getwd()
+
swank <- function(port=4005) {
acceptConnections(port, FALSE)
}
`swank:swank-require` <- function (slimeConnection, sldbState, contribs) {
for(contrib in contribs) {
- filename <- sprintf("%s.R", as.character(contrib))
+ filename <- sprintf("%s/%s.R", swankrPath, as.character(contrib))
if(file.exists(filename)) {
source(filename)
}
expr <- parse(text=string)[[1]]
## O maybe this is even uglier
lookedup <- do.call("bquote", list(expr))
- value <- eval(lookedup, envir = globalenv())
- sendReplResultFunction(slimeConnection, value)
+ tmp <- withVisible(eval(lookedup, envir = globalenv()))
+ if(tmp$visible) {
+ sendReplResultFunction(slimeConnection, tmp$value)
+ }
list()
}
`swank:interactive-eval` <- function(slimeConnection, sldbState, string) {
withRetryRestart("retry SLIME interactive evaluation request",
- value <- eval(parse(text=string), envir=globalenv()))
- prin1ToString(value)
+ tmp <- withVisible(eval(parse(text=string), envir=globalenv())))
+ if(tmp$visible) {
+ prin1ToString(tmp$value)
+ } else {
+ "# invisible value"
+ }
}
`swank:eval-and-grab-output` <- function(slimeConnection, sldbState, string) {
withRetryRestart("retry SLIME interactive evaluation request",
{ output <-
- capture.output(value <- eval(parse(text=string),
- envir=globalenv())) })
+ capture.output(tmp <- withVisible(eval(parse(text=string),
+ envir=globalenv()))) })
output <- paste(output, sep="", collapse="\n")
- list(output, prin1ToString(value))
+ if(tmp$visible) {
+ list(output, prin1ToString(value))
+ } else {
+ list(output, "# invisible value")
+ }
}
`swank:interactive-eval-region` <- function(slimeConnection, sldbState, string) {
withRetryRestart("retry SLIME interactive evaluation request",
- value <- eval(parse(text=string), envir=globalenv()))
- prin1ToString(value)
+ tmp <- withVisible(eval(parse(text=string), envir=globalenv())))
+ if(tmp$visible) {
+ prin1ToString(value)
+ } else {
+ "# invisible value"
+ }
}
`swank:find-definitions-for-emacs` <- function(slimeConnection, sldbState, string) {