# In RStudio, call reprompt on function that cursor is pointing to.
RStudio_reprompt <- function(verbose = TRUE) {
if (!requireNamespace("rstudioapi") || !requireNamespace("rprojroot"))
stop("RStudio support requires you to install the 'rprojroot' and 'rstudioapi' packages")
sourceContext <- rstudioapi::getSourceEditorContext()
infile <- sourceContext$path
if (grepl("[.][rR]d$", infile)) # editing a help file
reprompt(infile = infile, filename = infile, verbose = verbose)
else if (grepl("[.][rRsSq]$", infile)) { # editing R source
pkgdir <- rprojroot::find_package_root_file(path = dirname(infile))
pkg <- basename(pkgdir)
if (length(sourceContext$selection) == 1) {
fnname <- sourceContext$selection[[1]]$text
} else
fnname <- ""
if (!nchar(fnname))
stop("Select a function name")
if (!exists(fnname))
stop("Object ", sQuote(fnname), " not found. Run 'Install and Restart'?")
existing <- help(fnname)
# Subset to the ones in the current package
existing <- existing[basename(dirname(dirname(existing))) == pkg]
if (length(existing) == 1) {
infile <- file.path(pkgdir, "man", paste0(basename(existing), ".Rd"))
reprompt(infile = infile, filename = infile, verbose = verbose)
} else if (!length(existing))
infile <- reprompt(fnname, filename = file.path(pkgdir, "man", paste0(fnname, ".Rd")),
verbose = verbose)
else
stop("Multiple matches to ", sQuote(fnname), ". Open one help file manually.")
} else
stop("This tool only works on .Rd or .R files.")
rstudioapi::navigateToFile(infile)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.