RStudio Addin Manager

January 29, 2018 ยท View on GitHub

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()
PackageNameBindingInteractiveKeyShortcut
blogdownServe Siteserve_sitetrueblogdown::serve_sitectrl+shift+a
blogdownNew Postnew_post_addintrueblogdown::new_post_addinctrl+shift+p
blogdownUpdate Metadataupdate_meta_addintrueblogdown::update_meta_addin
bookdownPreview Bookserve_booktruebookdown::serve_book
bookdownInput LaTeX Mathmathquilltruebookdown::mathquill
chunkychunkychunkifyfalsechunky::chunkify
cliprValue to clipboardclipr_resultfalseclipr::clipr_result
cliprOutput to clipboardclipr_outputfalseclipr::clipr_output
colourpickerPlot Colour HelperplotHelperAddintruecolourpicker::plotHelperAddin
colourpickerColour PickercolourPickerAddintruecolourpicker::colourPickerAddin
covrCalculate package test coverageaddin_reportfalsecovr::addin_report
cronRSchedule R scripts on Linux/Unixcron_rstudioaddintruecronR::cron_rstudioaddin
ggeditggeditggeditAddintrueggedit::ggeditAddin
remedyBacktickbacktickrfalseremedy::backtickr
remedyBoldboldrfalseremedy::boldr
remedyChunkchunkrfalseremedy::chunkr
remedyChunksplitchunksplitrfalseremedy::chunksplitr
remedyH1h1rfalseremedy::h1r
remedyH2h2rfalseremedy::h2r
remedyH3h3rfalseremedy::h3r
remedyH4h4rfalseremedy::h4r
remedyH5h5rfalseremedy::h5r
remedyH6h6rfalseremedy::h6r
remedyHtmlcommenthtmlcommentrfalseremedy::htmlcommentr
remedyImageimagerfalseremedy::imager
remedyItalicsitalicsrfalseremedy::italicsr
remedyLaTeXlatexrfalseremedy::latexr
remedyListlistrfalseremedy::listr
remedyRightrightrfalseremedy::rightr
remedyStrikestrikerfalseremedy::striker
remedyTabletablerfalseremedy::tabler
remedyUrlurlrfalseremedy::urlr
remedyXaringanxaringanrfalseremedy::xaringanr
remedyYoutubeyoutuberfalseremedy::youtuber
reprexRender reprexreprex_addintruereprex::reprex_addin
rhandsontableEdit a Data FrameeditAddintruerhandsontable::editAddin
rsamlla1lla1truersam::lla1
rsamlla2lla2truersam::lla2
rsamlla3lla3truersam::lla3
shinyjsColour PickercolourPickerAddintrueshinyjs::colourPickerAddin
sinewcreateOxygenoxygenAddinfalsesinew::oxygenAddin
sinewinteractiveOxygeninterOxyAddIntruesinew::interOxyAddIn
stylerStyle packagestyle_pkgtruestyler::style_pkg
stylerStyle active filestyle_active_filetruestyler::style_active_file
stylerStyle selectionstyle_selectiontruestyler::style_selection
texPreviewtexPreviewtexAddinfalsetexPreview::texAddin
vcsalexaalexatruevcs::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.