ee5a5e8b73
Change some leader keys for Julia, R, Inferior. Remove noweb bindings for Julia and R since it no longer works. Add LSP backend support for R.
173 lines
8.3 KiB
Org Mode
173 lines
8.3 KiB
Org Mode
#+TITLE: ESS (R) layer
|
||
|
||
#+TAGS: dsl|layer|programming
|
||
|
||
[[file:img/r.jpg]]
|
||
|
||
* Table of Contents :TOC_5_gh:noexport:
|
||
- [[#description][Description]]
|
||
- [[#features][Features:]]
|
||
- [[#install][Install]]
|
||
- [[#layer][Layer]]
|
||
- [[#linting][Linting]]
|
||
- [[#lsp][LSP]]
|
||
- [[#options][Options]]
|
||
- [[#key-bindings][Key bindings]]
|
||
- [[#inferior-repl-process][Inferior REPL process]]
|
||
- [[#help][Help]]
|
||
- [[#more-interaction-with-the-repl][More interaction with the REPL]]
|
||
- [[#r-devtools][R devtools]]
|
||
- [[#debugging][Debugging]]
|
||
|
||
* Description
|
||
This layer adds support for statistical programming languages to Spacemacs.
|
||
|
||
** Features:
|
||
- Syntax highlighting
|
||
- Auto-completion
|
||
- Syntax-checking via [[https://github.com/jimhester/lintr][lintr]]
|
||
- Additional data viewer for R via [[https://github.com/myuhe/ess-R-data-view.el][ess-R-data-view]]
|
||
- Support for Org-Babel
|
||
- Showing of inline help for =R= constructs
|
||
- Repl support via =R terminal=
|
||
- Support for =S=, =SAS= and =R=
|
||
- Much more via the [[https://ess.r-project.org/Manual/ess.html#Current-Features][ESS Project]]
|
||
|
||
* Install
|
||
** Layer
|
||
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
|
||
add =ess= to the existing =dotspacemacs-configuration-layers= list in this
|
||
file.
|
||
|
||
** Linting
|
||
Install [[https://github.com/jimhester/lintr][lintr]] library via the R terminal to enable syntax checking.
|
||
To do so start the R terminal and type below code.
|
||
|
||
#+BEGIN_SRC R
|
||
install.packages("lintr")
|
||
#+END_SRC
|
||
|
||
** LSP
|
||
This backend uses an external server to provide the various IDE integrations
|
||
and a more modern UI integration in =spacemacs=.
|
||
|
||
It requires installing the external server via:
|
||
|
||
#+BEGIN_SRC R
|
||
install.packages('languageserver')
|
||
#+END_SRC
|
||
|
||
Enable the =lsp= layer to activate this backend as well as setting the layer
|
||
variable =ess-r-backend=:
|
||
|
||
#+BEGIN_SRC elisp
|
||
(ess :variables ess-r-backend 'lsp)
|
||
#+END_SRC
|
||
|
||
* Options
|
||
Use a key binding to insert =<-=:
|
||
|
||
#+BEGIN_SRC emacs-lisp
|
||
(setq-default dotspacemacs-configuration-layers '((ess :variables
|
||
ess-assign-key "\M--")))
|
||
#+END_SRC
|
||
|
||
* Key bindings
|
||
** Inferior REPL process
|
||
Send code to inferior process with these commands:
|
||
|
||
| Key binding | Description |
|
||
|-------------+------------------------------------------------------|
|
||
| ~SPC m '~ | start REPL |
|
||
| ~SPC m ,~ | send region, current function, or paragraph and step |
|
||
| ~SPC m s i~ | start REPL |
|
||
| ~SPC m s s~ | switch between file and REPL |
|
||
| ~SPC m s S~ | switch the process associate with file |
|
||
|-------------+------------------------------------------------------|
|
||
| ~SPC m s b~ | send buffer and keep code buffer focused |
|
||
| ~SPC m s B~ | send buffer and switch to REPL in insert mode |
|
||
| ~SPC m s d~ | send region or line and step |
|
||
| ~SPC m s D~ | send function or paragraph and step |
|
||
| ~SPC m s f~ | send function and keep code buffer focused |
|
||
| ~SPC m s F~ | send function and focus REPL |
|
||
| ~SPC m s l~ | send line and keep code buffer focused |
|
||
| ~SPC m s L~ | send line and focus REPL |
|
||
| ~SPC m s r~ | send region and keep code buffer focused |
|
||
| ~SPC m s R~ | send region and focus REPL |
|
||
|
||
** Help
|
||
Get help and helpers for inspecting objects at point are available in R buffers only.
|
||
|
||
| Key binding | Description |
|
||
|-------------+----------------------------------------------------------------|
|
||
| ~SPC m h a~ | help apropos |
|
||
| ~SPC m h d~ | display help on object |
|
||
| ~SPC m h e~ | describe object |
|
||
| ~SPC m h h~ | display help on object |
|
||
| ~SPC m h i~ | display index for package |
|
||
| ~SPC m h m~ | manual lookup |
|
||
| ~SPC m h o~ | display demos |
|
||
| ~SPC m h p~ | view data under point using [ess-R-data-view][ess-R-data-view] |
|
||
| ~SPC m h r~ | lookup reference |
|
||
| ~SPC m h t~ | view table using [ess-R-data-view][ess-R-data-view] |
|
||
| ~SPC m h v~ | display vignettes |
|
||
| ~SPC m h w~ | help web search |
|
||
| ~C-j~ | next item in REPL history |
|
||
| ~C-k~ | previous item in REPL history |
|
||
|
||
** More interaction with the REPL
|
||
Helpers that provide further interaction with the REPL.
|
||
|
||
| Key binding | Description |
|
||
|---------------+-------------------------------------------------------|
|
||
| ~SPC m E /~ | set working directory |
|
||
| ~SPC m E TAB~ | install package |
|
||
| ~SPC m E d~ | edit object source or dump() object into a new buffer |
|
||
| ~SPC m E e~ | execute a command in the ESS process |
|
||
| ~SPC m E i~ | install package |
|
||
| ~SPC m E l~ | load installed package |
|
||
| ~SPC m E r~ | reload ESS process |
|
||
| ~SPC m E s~ | set source style |
|
||
| ~SPC m E t~ | build tags for directory |
|
||
| ~SPC m E w~ | set "width" option |
|
||
|
||
** R devtools
|
||
Interaction with the =R= =devtools= package.
|
||
|
||
| Key binding | Description |
|
||
|---------------+------------------------------------------|
|
||
| ~SPC m D TAB~ | interface for =devtools::install()= |
|
||
| ~SPC m D a~ | ask for a devtools command and runs it |
|
||
| ~SPC m D c~ | interface for =devtools::check()= |
|
||
| ~SPC m D d~ | interface for =devtools::document()= |
|
||
| ~SPC m D i~ | interface for =devtools::install()= |
|
||
| ~SPC m D l~ | interface for =devtools::load_all()= |
|
||
| ~SPC m D r~ | interface for =devtools::revdep_check()= |
|
||
| ~SPC m D s~ | set a package for ESS r-package commands |
|
||
| ~SPC m D t~ | interface for =devtools::tests()= |
|
||
| ~SPC m D u~ | interface for =devtools::unload()= |
|
||
|
||
** Debugging
|
||
Tools for debugging
|
||
|
||
| Key binding | Description |
|
||
|--------------+-------------------------------------------------------------------|
|
||
| ~SPC m d ?~ | =ess-tracebug-show-help= |
|
||
| ~SPC m d `~ | show traceback and last error message |
|
||
| ~SPC m d \~~ | display call current call stack |
|
||
| ~SPC m d b~ | set breakpoint |
|
||
| ~SPC m d B~ | set conditional breakpoint |
|
||
| ~SPC m d d~ | set debugging flag for function |
|
||
| ~SPC m d e~ | toggle the =on-error= action |
|
||
| ~SPC m d i~ | jump to point where the last debugger or traceback event occurred |
|
||
| ~SPC m d k~ | kill breakpoint |
|
||
| ~SPC m d K~ | kill all breakpoints in buffer |
|
||
| ~SPC m d l~ | Set breakpoint logger |
|
||
| ~SPC m d n~ | go to next breakpoint |
|
||
| ~SPC m d N~ | go to previous breakpoint |
|
||
| ~SPC m d p~ | go to previous breakpoint |
|
||
| ~SPC m d o~ | toggle breakpoint state |
|
||
| ~SPC m d s~ | set environment for evaluation |
|
||
| ~SPC m d t~ | toggle tracebug |
|
||
| ~SPC m d u~ | unflag function for debug |
|
||
| ~SPC m d w~ | trigger ESS watch mode |
|