|
2 | 2 | local({ |
3 | 3 |
|
4 | 4 | # the requested version of renv |
5 | | - version <- "1.0.7.9000" |
6 | | - attr(version, "sha") <- "8c2379948cb5667f47047b0e709c889fd2188feb" |
| 5 | + version <- "1.0.9" |
| 6 | + attr(version, "sha") <- NULL |
7 | 7 |
|
8 | 8 | # the project directory |
9 | 9 | project <- Sys.getenv("RENV_PROJECT") |
@@ -98,6 +98,66 @@ local({ |
98 | 98 | unloadNamespace("renv") |
99 | 99 |
|
100 | 100 | # load bootstrap tools |
| 101 | + ansify <- function(text) { |
| 102 | + if (renv_ansify_enabled()) |
| 103 | + renv_ansify_enhanced(text) |
| 104 | + else |
| 105 | + renv_ansify_default(text) |
| 106 | + } |
| 107 | + |
| 108 | + renv_ansify_enabled <- function() { |
| 109 | + |
| 110 | + override <- Sys.getenv("RENV_ANSIFY_ENABLED", unset = NA) |
| 111 | + if (!is.na(override)) |
| 112 | + return(as.logical(override)) |
| 113 | + |
| 114 | + pane <- Sys.getenv("RSTUDIO_CHILD_PROCESS_PANE", unset = NA) |
| 115 | + if (identical(pane, "build")) |
| 116 | + return(FALSE) |
| 117 | + |
| 118 | + testthat <- Sys.getenv("TESTTHAT", unset = "false") |
| 119 | + if (tolower(testthat) %in% "true") |
| 120 | + return(FALSE) |
| 121 | + |
| 122 | + iderun <- Sys.getenv("R_CLI_HAS_HYPERLINK_IDE_RUN", unset = "false") |
| 123 | + if (tolower(iderun) %in% "false") |
| 124 | + return(FALSE) |
| 125 | + |
| 126 | + TRUE |
| 127 | + |
| 128 | + } |
| 129 | + |
| 130 | + renv_ansify_default <- function(text) { |
| 131 | + text |
| 132 | + } |
| 133 | + |
| 134 | + renv_ansify_enhanced <- function(text) { |
| 135 | + |
| 136 | + # R help links |
| 137 | + pattern <- "`\\?(renv::(?:[^`])+)`" |
| 138 | + replacement <- "`\033]8;;ide:help:\\1\a?\\1\033]8;;\a`" |
| 139 | + text <- gsub(pattern, replacement, text, perl = TRUE) |
| 140 | + |
| 141 | + # runnable code |
| 142 | + pattern <- "`(renv::(?:[^`])+)`" |
| 143 | + replacement <- "`\033]8;;ide:run:\\1\a\\1\033]8;;\a`" |
| 144 | + text <- gsub(pattern, replacement, text, perl = TRUE) |
| 145 | + |
| 146 | + # return ansified text |
| 147 | + text |
| 148 | + |
| 149 | + } |
| 150 | + |
| 151 | + renv_ansify_init <- function() { |
| 152 | + |
| 153 | + envir <- renv_envir_self() |
| 154 | + if (renv_ansify_enabled()) |
| 155 | + assign("ansify", renv_ansify_enhanced, envir = envir) |
| 156 | + else |
| 157 | + assign("ansify", renv_ansify_default, envir = envir) |
| 158 | + |
| 159 | + } |
| 160 | + |
101 | 161 | `%||%` <- function(x, y) { |
102 | 162 | if (is.null(x)) y else x |
103 | 163 | } |
@@ -142,7 +202,10 @@ local({ |
142 | 202 | # compute common indent |
143 | 203 | indent <- regexpr("[^[:space:]]", lines) |
144 | 204 | common <- min(setdiff(indent, -1L)) - leave |
145 | | - paste(substring(lines, common), collapse = "\n") |
| 205 | + text <- paste(substring(lines, common), collapse = "\n") |
| 206 | + |
| 207 | + # substitute in ANSI links for executable renv code |
| 208 | + ansify(text) |
146 | 209 |
|
147 | 210 | } |
148 | 211 |
|
|
0 commit comments