Skip to content

yonicd/rsam

Repository files navigation

Project Status: Active - The project has reached a stable, usable state and is being actively developed. Travis-CI Build StatusAppVeyor Build Status

RStudio Addin Manager

{rsam} provides a command line and user interface to manage RStudio addins.

Installation

Since {rsam} manages the rstudio addins it must write to disk.

remotes::install_github('yonicd/rsam')

Permissions

{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:

  1. 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.

  2. 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

UI

library(rsam)

rsam()

rsam usage

CLI

Retrieve Summary of Installed Addins

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

Building Keyboard Shortcuts

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 Keyboard Shortcut for Addins

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)

Remove Keyboard Shortcut for Addins

rm_shortcut(fn = 'blogdown::serve_site')

Toggle Addins on/off

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"))

Limited Liability Addins

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`)

Feedbacks and enhancement

You've found a bug, or have an enhancment idea? Feel free to open an issue : https://github.com/yonicd/rsam/issues.