Christophe
Weblog
Wiki
Code
Publications
Music
projects
/
swankr.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
implement swank:default-directory and swank:set-default-directory
[swankr.git]
/
swank.R
diff --git
a/swank.R
b/swank.R
index c0adff899a9a8b895f06cf692d53a21cf0b9c6ed..5fe20bbefe633d6a9f1c1e0009f11e0cef32c9d6 100644
(file)
--- a/
swank.R
+++ b/
swank.R
@@
-245,17
+245,13
@@
writeSexpToString <- function(obj) {
writeSexpToStringLoop(obj)
}
writeSexpToStringLoop(obj)
}
-withOutputToString <- function(expr) {
- call <- substitute(expr)
- f <- fifo("")
- sink(f)
- tryCatch({ tryCatch(eval.parent(call), finally=sink())
- readLines(f) },
- finally=close(f))
+prin1ToString <- function(val) {
+ paste(deparse(val, backtick=TRUE, control=c("delayPromises", "keepNA")),
+ sep="", collapse="\n")
}
printToString <- function(val) {
}
printToString <- function(val) {
-
withOutputToString(str(val, indent.str="", list.len=5, max.level=2)
)
+
paste(capture.output(print(val)), sep="", collapse="\n"
)
}
`swank:connection-info` <- function (slimeConnection, sldbState) {
}
`swank:connection-info` <- function (slimeConnection, sldbState) {
@@
-282,7
+278,7
@@
printToString <- function(val) {
makeReplResult <- function(value) {
string <- printToString(value)
makeReplResult <- function(value) {
string <- printToString(value)
- list(quote(`:write-string`),
paste(string, collapse="\n")
,
+ list(quote(`:write-string`),
string
,
quote(`:repl-result`))
}
quote(`:repl-result`))
}
@@
-386,7
+382,7
@@
computeRestartsForEmacs <- function (sldbState) {
objs <- ls(envir=frame)
list(lapply(objs, function(name) { list(quote(`:name`), name,
quote(`:id`), 0,
objs <- ls(envir=frame)
list(lapply(objs, function(name) { list(quote(`:name`), name,
quote(`:id`), 0,
- quote(`:value`), p
aste(printToString(eval(parse(text=name), envir=frame)), sep="", collapse="\n"
)) }),
+ quote(`:value`), p
rintToString(eval(parse(text=name), envir=frame)
)) }),
list())
}
list())
}
@@
-427,15
+423,16
@@
withRetryRestart <- function(description, expr) {
`swank:interactive-eval` <- function(slimeConnection, sldbState, string) {
withRetryRestart("retry SLIME interactive evaluation request",
value <- eval(parse(text=string), envir=globalenv()))
`swank:interactive-eval` <- function(slimeConnection, sldbState, string) {
withRetryRestart("retry SLIME interactive evaluation request",
value <- eval(parse(text=string), envir=globalenv()))
- prin
t
ToString(value)
+ prin
1
ToString(value)
}
`swank:eval-and-grab-output` <- function(slimeConnection, sldbState, string) {
withRetryRestart("retry SLIME interactive evaluation request",
{ output <-
}
`swank:eval-and-grab-output` <- function(slimeConnection, sldbState, string) {
withRetryRestart("retry SLIME interactive evaluation request",
{ output <-
- withOutputToString(value <- eval(parse(text=string),
- envir=globalenv())) })
- list(output, printToString(value))
+ capture.output(value <- eval(parse(text=string),
+ envir=globalenv())) })
+ output <- paste(output, sep="", collapse="\n")
+ list(output, prin1ToString(value))
}
`swank:find-definitions-for-emacs` <- function(slimeConnection, sldbState, string) {
}
`swank:find-definitions-for-emacs` <- function(slimeConnection, sldbState, string) {
@@
-503,7
+500,7
@@
inspectObject <- function(slimeConnection, object) {
valuePart <- function(istate, object, string) {
list(quote(`:value`),
valuePart <- function(istate, object, string) {
list(quote(`:value`),
- if(is.null(string)) p
aste(printToString(object),collapse=" "
) else string,
+ if(is.null(string)) p
rintToString(object
) else string,
assignIndexInParts(object, istate))
}
assignIndexInParts(object, istate))
}
@@
-616,3
+613,12
@@
emacsInspect.numeric <- function(numeric) {
object <- get(name, envir=frame)
inspectObject(slimeConnection, object)
}
object <- get(name, envir=frame)
inspectObject(slimeConnection, object)
}
+
+`swank:default-directory` <- function(slimeConnection, sldbState) {
+ getwd()
+}
+
+`swank:set-default-directory` <- function(slimeConnection, sldbState, directory) {
+ setwd(directory)
+ `swank:default-directory`(slimeConnection, sldbState)
+}