{rsam} provides a command line and user interface to manage RStudio addins.
Since {rsam} manages the rstudio addins it must write to disk.
remotes::install_github('yonicd/rsam'){rsam} needs explicit user permissions to write to disk. There are two questions that need to be answered for the package to run as intended.
-
Do you agree to let {rsam} manipulate the addins jsons used to manage RStudio addin keyboard shortcuts?
-
Do you agree to let {rsam} duplicate the dcf files of the installed addins in your
.libPaths()and manipulate them to manage RStudio Addins dropdown list?
Answering the affirmative to both will allow {rsam} to manipulate non R related files. Answering only one will allow for a narrow application of {rsam}.
There are two ways to set answers to the questions:
-
On load or attach of the library a prompt is invoked asking the two questions. This is done to set the permissions once a session.
-
Use
rsam::create_yml()to write _rsam.yml to the home directory(~). In this file there are three fields. When loading {rsam} looks for this file and if it exists then uses the field settings instead of asking questions via prompts.
| Field | Description | Setting |
|---|---|---|
| write_json | Permission to write ~/.R/rstudio/keybindings/addins.json | yes |
| write_dcf | Permission to duplicate and edit rstudio/addins.dcf of installed packages with addins | yes |
| verbose | Permission to run onload/onattach script run with messages to console | yes |
library(rsam)
rsam()fetch_addins()| Package | Name | Binding | Interactive | Key | Shortcut |
|---|---|---|---|---|---|
| blogdown | Serve Site | serve_site | true | blogdown::serve_site | ctrl+shift+a |
| blogdown | New Post | new_post_addin | true | blogdown::new_post_addin | ctrl+shift+p |
| blogdown | Update Metadata | update_meta_addin | true | blogdown::update_meta_addin | |
| bookdown | Preview Book | serve_book | true | bookdown::serve_book | |
| bookdown | Input LaTeX Math | mathquill | true | bookdown::mathquill | |
| chunky | chunky | chunkify | false | chunky::chunkify | |
| clipr | Value to clipboard | clipr_result | false | clipr::clipr_result | |
| clipr | Output to clipboard | clipr_output | false | clipr::clipr_output | |
| colourpicker | Plot Colour Helper | plotHelperAddin | true | colourpicker::plotHelperAddin | |
| colourpicker | Colour Picker | colourPickerAddin | true | colourpicker::colourPickerAddin | |
| covr | Calculate package test coverage | addin_report | false | covr::addin_report | |
| cronR | Schedule R scripts on Linux/Unix | cron_rstudioaddin | true | cronR::cron_rstudioaddin | |
| ggedit | ggedit | ggeditAddin | true | ggedit::ggeditAddin | |
| remedy | Backtick | backtickr | false | remedy::backtickr | |
| remedy | Bold | boldr | false | remedy::boldr | |
| remedy | Chunk | chunkr | false | remedy::chunkr | |
| remedy | Chunksplit | chunksplitr | false | remedy::chunksplitr | |
| remedy | H1 | h1r | false | remedy::h1r | |
| remedy | H2 | h2r | false | remedy::h2r | |
| remedy | H3 | h3r | false | remedy::h3r | |
| remedy | H4 | h4r | false | remedy::h4r | |
| remedy | H5 | h5r | false | remedy::h5r | |
| remedy | H6 | h6r | false | remedy::h6r | |
| remedy | Htmlcomment | htmlcommentr | false | remedy::htmlcommentr | |
| remedy | Image | imager | false | remedy::imager | |
| remedy | Italics | italicsr | false | remedy::italicsr | |
| remedy | LaTeX | latexr | false | remedy::latexr | |
| remedy | List | listr | false | remedy::listr | |
| remedy | Right | rightr | false | remedy::rightr | |
| remedy | Strike | striker | false | remedy::striker | |
| remedy | Table | tabler | false | remedy::tabler | |
| remedy | Url | urlr | false | remedy::urlr | |
| remedy | Xaringan | xaringanr | false | remedy::xaringanr | |
| remedy | Youtube | youtuber | false | remedy::youtuber | |
| reprex | Render reprex | reprex_addin | true | reprex::reprex_addin | |
| rhandsontable | Edit a Data Frame | editAddin | true | rhandsontable::editAddin | |
| rsam | lla1 | lla1 | true | rsam::lla1 | |
| rsam | lla2 | lla2 | true | rsam::lla2 | |
| rsam | lla3 | lla3 | true | rsam::lla3 | |
| shinyjs | Colour Picker | colourPickerAddin | true | shinyjs::colourPickerAddin | |
| sinew | createOxygen | oxygenAddin | false | sinew::oxygenAddin | |
| sinew | interactiveOxygen | interOxyAddIn | true | sinew::interOxyAddIn | |
| styler | Style package | style_pkg | true | styler::style_pkg | |
| styler | Style active file | style_active_file | true | styler::style_active_file | |
| styler | Style selection | style_selection | true | styler::style_selection | |
| texPreview | texPreview | texAddin | false | texPreview::texAddin | |
| vcs | alexa | alexa | true | vcs::alexa |
rsam has a validation for keyboard keys through the class key
KEYS$`left command/window key`
#> [1] "Command"
#> attr(,"class")
#> [1] "character" "key"
KEYS$shift
#> [1] "Shift"
#> attr(,"class")
#> [1] "character" "key"
KEYS$i
#> [1] "I"
#> attr(,"class")
#> [1] "character" "key"
key <- KEYS$`left command/window key` + KEYS$shift + KEYS$i
key
#> [1] "Command+Shift+I"set_shortcut(fn = 'blogdown::serve_site',shortcut = key)
#if the binding already has a shortcut mapped to it `overide` must be TRUE
set_shortcut(fn = 'blogdown::serve_site',shortcut = key, overide = TRUE)rm_shortcut(fn = 'blogdown::serve_site')Every time a binding is passed to the toggle_addin function it will switch states.
toggle_addin(key = c("blogdown::serve_site","blogdown::new_post_addin","blogdown::update_meta_addin"))rsam gives you 3 empty addins to pass into them whatever you want and run them as your personal addins. You can also set keyboard shortcuts for each one with set_shortcut.
Pass through an expression wrapped the global objects rsam_fn_1(), rsam_fn_2(), and rsam_fn_3() into the Rstudio Addin list.
rsam_fn_1 <- function(){
library(ggplot2)
library(dplyr)
iris%>%ggplot(aes(x=Sepal.Length,y=Sepal.Width)) + geom_point()
}
# Change shortcuts to whatever you want
keys <- KEYS$`left command/window key` + KEYS$shift + KEYS$l
rsam::set_shortcut(fn = 'rsam::lla1',shortcut = keys + KEYS$`1`)
rsam::set_shortcut(fn = 'rsam::lla2',shortcut = keys + KEYS$`2`)
rsam::set_shortcut(fn = 'rsam::lla3',shortcut = keys + KEYS$`3`)You've found a bug, or have an enhancment idea? Feel free to open an issue : https://github.com/yonicd/rsam/issues.
