1 presentationCounter <- 0
3 savePresentedObject <- function(slimeConnection, value) {
4 if(!exists("idToObject", envir=slimeConnection)) {
5 assign("idToObject", new.env(), envir=slimeConnection)
7 ## FIXME this should check for value already being present in the
9 presentationCounter <<- presentationCounter + 1
10 assign(as.character(presentationCounter), value, envir=slimeConnection$idToObject)
14 presentReplResult <- function(slimeConnection, value) {
15 id <- savePresentedObject(slimeConnection, value)
16 sendToEmacs(slimeConnection,
17 list(quote(`:presentation-start`), id, quote(`:repl-result`)))
18 sendReplResult(slimeConnection, value)
19 sendToEmacs(slimeConnection,
20 list(quote(`:presentation-end`), id, quote(`:repl-result`)))
21 sendToEmacs(slimeConnection,
22 list(quote(`:write-string`), "\n", quote(`:repl-result`)))
25 `cl:nth-value` <- function(slimeConnection, sldbState, n, values) {
29 `swank:lookup-presented-object` <- function(slimeConnection, sldbState, id) {
30 if(exists(as.character(id), envir=slimeConnection$idToObject)) {
31 value <- get(as.character(id), envir=slimeConnection$idToObject)
38 `swank:lookup-presented-object-or-lose` <- function(slimeConnection, sldbState, id) {
39 stuff <- `swank:lookup-presented-object`(slimeConnection, sldbState, id)
43 stop(sprintf("attempt to access unrecorded object (id %d)", id))
47 `swank:lookup-and-save-presented-object-or-lose` <- function(slimeConnection, sldbState, id) {
48 obj <- `swank:lookup-presented-object-or-lose`(slimeConnection, sldbState, id)
49 savePresentedObject(slimeConnection, obj)
52 `swank:clear-repl-results` <- function(slimeConnection, sldbState) {
53 if(!exists("idToObject", envir=slimeConnection)) {
54 assign("idToObject", new.env(), envir=slimeConnection)
56 rm(list=ls(slimeConnection$idToObject), envir=slimeConnection$idToObject)
60 `swank:init-presentations` <- function(slimeConnection, sldbState) {
61 sendReplResultFunction <<- presentReplResult