@@ -10,6 +10,8 @@ local({
10
10
11
11
null_dev_id <- c(pdf = 2L )
12
12
null_dev_size <- c(7 + pi , 7 + pi )
13
+ viewer_file <- NULL
14
+ browser_url <- NULL
13
15
14
16
options(
15
17
device = function (... ) {
@@ -18,6 +20,18 @@ local({
18
20
height = null_dev_size [[2L ]],
19
21
bg = " white" )
20
22
dev.control(displaylist = " enable" )
23
+ },
24
+ viewer = function (url , ... ) {
25
+ message(" viewer: " , url )
26
+ viewer_file <<- url
27
+ },
28
+ page_viewer = function (url , ... ) {
29
+ message(" page_viewer: " , url )
30
+ viewer_file <<- url
31
+ },
32
+ browser = function (url , ... ) {
33
+ message(" browser: " , url )
34
+ browser_url <<- url
21
35
}
22
36
)
23
37
@@ -38,10 +52,12 @@ local({
38
52
line <- readLines(con , n = 1 )
39
53
request <- jsonlite :: fromJSON(line )
40
54
cat(sprintf(" [%s]\n %s\n " , request $ time , request $ expr ))
55
+ viewer_file <- NULL
56
+ browser_url <- NULL
41
57
str <- tryCatch({
42
58
expr <- parse(text = request $ expr )
43
59
out <- withVisible(eval(expr , globalenv()))
44
- text <- utils :: capture.output(print(out $ value ))
60
+ text <- utils :: capture.output(print(out $ value , view = TRUE ))
45
61
if (check_null_dev()) {
46
62
record <- recordPlot()
47
63
plot_file <- tempfile(fileext = " .svg" )
@@ -52,6 +68,16 @@ local({
52
68
type = " plot" ,
53
69
result = plot_file
54
70
)
71
+ } else if (! is.null(viewer_file )) {
72
+ res <- list (
73
+ type = " viewer" ,
74
+ result = viewer_file
75
+ )
76
+ } else if (! is.null(browser_url )) {
77
+ res <- list (
78
+ type = " browser" ,
79
+ result = browser_url
80
+ )
55
81
} else if (out $ visible ) {
56
82
res <- list (
57
83
type = " text" ,
0 commit comments