1.onAttach <- function(...) { 2 3 if (requireNamespace("knitr", quietly = TRUE)) { 4 knit_engines <- get("knit_engines", envir = asNamespace("knitr")) 5 knit_engines$set(d3 = knit_d3) 6 } 7 8 rstudio <- rstudio_version() 9 if (!is.null(rstudio)) { 10 11 # check for desktop mode on windows and linux (other modes are fine) 12 if (!is_osx() && (rstudio$mode == "desktop")) { 13 14 if (rstudio$version < "1.2.637") 15 packageStartupMessage( 16 "r2d3 should be run under RStudio v1.2 or higher. Please update at:\n", 17 "https://www.rstudio.com/rstudio/download/preview/\n" 18 ) 19 } 20 } 21} 22 23# get the current rstudio version and mode (desktop vs. server) 24rstudio_version <- function() { 25 26 # Running at the RStudio console 27 if (rstudioapi::isAvailable()) { 28 29 rstudioapi::versionInfo() 30 31 # Running in a child process 32 } else if (!is.na(Sys.getenv("RSTUDIO", unset = NA))) { 33 34 # detect desktop vs. server using server-only environment variable 35 mode <- ifelse(is.na(Sys.getenv("RSTUDIO_HTTP_REFERER", unset = NA)), 36 "desktop", "server") 37 38 # detect version using Rmd new env var added in 1.2.638 39 version <- Sys.getenv("RSTUDIO_VERSION", unset = "1.1") 40 41 # return version info 42 list( 43 mode = mode, 44 version = version 45 ) 46 47 # Not running in RStudio 48 } else { 49 NULL 50 } 51} 52 53is_osx <- function() { 54 Sys.info()["sysname"] == "Darwin" 55} 56 57 58