Home

Awesome

Project Status: Active - The project has reached a stable, usable state and is being actively developed. Travis-CI Build StatusAppVeyor Build Status <!-- README.md is generated from README.Rmd. Please edit that file -->

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.

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.

<table style="width:17%;"> <colgroup> <col width="5%" /> <col width="5%" /> <col width="5%" /> </colgroup> <thead> <tr class="header"> <th align="right">Field</th> <th align="right">Description</th> <th align="right">Setting</th> </tr> </thead> <tbody> <tr class="odd"> <td align="right">write_json</td> <td align="right">Permission to write ~/.R/rstudio/keybindings/addins.json</td> <td align="right">yes</td> </tr> <tr class="even"> <td align="right">write_dcf</td> <td align="right">Permission to duplicate and edit rstudio/addins.dcf of installed packages with addins</td> <td align="right">yes</td> </tr> <tr class="odd"> <td align="right">verbose</td> <td align="right">Permission to run onload/onattach script run with messages to console</td> <td align="right">yes</td> </tr> </tbody> </table>

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.