editorUI <- function(id) {
ns <- NS(id)
fluidRow(
shiny::column(width = 4,
shinyAce::aceEditor(
ns("code"),
mode = "r",
height = "200px",
autoComplete = "live",
autoCompleters = "rlang",
hotkeys = list(
runKey=list(
win = "Ctrl-Enter",
mac = "CMD-ENTER"
)
)
)
), # column
shiny::column(width = 8,
tags$div(
style = "overflow-y:scroll; max-height: 300px;",
verbatimTextOutput(ns("codeOutput"))
)
) # column
) # row
}
editorSERVER <- function(
input,
output,
session
) {
ns <- session$ns
shinyAce::aceAutocomplete("code")
shinyAce::aceAnnotate("code")
shinyAce::aceTooltip("code")
tmpFile <- tempfile()
output$codeOutput <- renderPrint({
val <- input$code_runKey
if(is.null(val)) {
return(
"Execute [R] chunks with Ctrl/Cmd-Enter"
)
}
selectionLocal <- val$selection
lineLocal <- val$line
if(val$selection != "") {
toExecute <- selectionLocal
} else {
shiny::validate(
need(!is.null(lineLocal), "Unable to find execution text")
)
toExecute <- lineLocal
}
writeLines(toExecute, con = tmpFile)
return(source(tmpFile, echo = TRUE, local = TRUE))
})
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.