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
enough support for emacs/slim to start swank for itself
[swankr.git]
/
swank.R
diff --git
a/swank.R
b/swank.R
index 34998b652e189799bc6bf70461099f50bc5d68eb..ebf580c510af115b66c703f4557797917b72c27e 100644
(file)
--- a/
swank.R
+++ b/
swank.R
@@
-18,10
+18,15
@@
swank <- function(port=4005) {
}
startSwank <- function(portFile) {
}
startSwank <- function(portFile) {
- acceptConnections(
FALSE
, portFile)
+ acceptConnections(
4005
, portFile)
}
acceptConnections <- function(port, portFile) {
}
acceptConnections <- function(port, portFile) {
+ if(portFile != FALSE) {
+ f <- file(portFile, open="w+")
+ cat(port, file=f)
+ close(f)
+ }
s <- socketConnection(host="localhost", server=TRUE, port=port, open="r+b")
on.exit(close(s))
serve(s)
s <- socketConnection(host="localhost", server=TRUE, port=port, open="r+b")
on.exit(close(s))
serve(s)
@@
-494,6
+499,12
@@
withRetryRestart <- function(description, expr) {
list(output, prin1ToString(value))
}
list(output, prin1ToString(value))
}
+`swank:interactive-eval-region` <- function(slimeConnection, sldbState, string) {
+ withRetryRestart("retry SLIME interactive evaluation request",
+ value <- eval(parse(text=string), envir=globalenv()))
+ prin1ToString(value)
+}
+
`swank:find-definitions-for-emacs` <- function(slimeConnection, sldbState, string) {
if(exists(string, envir = globalenv())) {
thing <- get(string, envir = globalenv())
`swank:find-definitions-for-emacs` <- function(slimeConnection, sldbState, string) {
if(exists(string, envir = globalenv())) {
thing <- get(string, envir = globalenv())