Add a fixer for r based on the styler package (#2401)

* Add styler as a new fixer for R files
* Add to the list of supported tools
* Add documentation
This commit is contained in:
Thibault Vatter 2019-04-23 14:44:26 -04:00 committed by w0rp
parent 893ac34cca
commit ce0b14979e
7 changed files with 61 additions and 0 deletions

View File

@ -285,6 +285,11 @@ let s:default_registry = {
\ 'suggested_filetypes': ['kt'],
\ 'description': 'Fix Kotlin files with ktlint.',
\ },
\ 'styler': {
\ 'function': 'ale#fixers#styler#Fix',
\ 'suggested_filetypes': ['r'],
\ 'description': 'Fix R files with styler.',
\ },
\ 'latexindent': {
\ 'function': 'ale#fixers#latexindent#Fix',
\ 'suggested_filetypes': ['tex'],

View File

@ -0,0 +1,16 @@
" Author: tvatter <thibault.vatter@gmail.com>
" Description: Fixing R files with styler.
call ale#Set('r_styler_executable', 'Rscript')
call ale#Set('r_styler_options', 'tidyverse_style')
function! ale#fixers#styler#Fix(buffer) abort
return {
\ 'command': 'Rscript --vanilla -e '
\ . '"suppressPackageStartupMessages(library(styler));'
\ . 'style_file(commandArgs(TRUE), style = '
\ . ale#Var(a:buffer, 'r_styler_options') . ')"'
\ . ' %t',
\ 'read_temporary_file': 1,
\}
endfunction

View File

@ -25,5 +25,21 @@ g:ale_r_lintr_lint_package *g:ale_r_lintr_lint_package*
of `lintr::lint`. This prevents erroneous namespace warnings when linting
package files.
===============================================================================
styler *ale-r-styler*
g:ale_r_styler_options *g:ale_r_styler_options*
*b:ale_r_styler_options*
Type: |String|
Default: `'styler::tidyverse_style'`
This option can be configured to change the options for styler.
The value of this option will be used as the `style` argument for the
`styler::style_file` options. Consult the styler documentation
for more information.
===============================================================================
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View File

@ -357,6 +357,7 @@ Notes:
* `qmllint`
* R
* `lintr`
* `styler`
* Racket
* `raco`
* ReasonML

View File

@ -2149,6 +2149,7 @@ documented in additional help files.
qmlfmt................................|ale-qml-qmlfmt|
r.......................................|ale-r-options|
lintr.................................|ale-r-lintr|
styler................................|ale-r-styler|
reasonml................................|ale-reasonml-options|
merlin................................|ale-reasonml-merlin|
ols...................................|ale-reasonml-ols|

View File

@ -366,6 +366,7 @@ formatting.
* [qmllint](https://github.com/qt/qtdeclarative/tree/5.11/tools/qmllint)
* R
* [lintr](https://github.com/jimhester/lintr)
* [styler](https://github.com/r-lib/styler)
* Racket
* [raco](https://docs.racket-lang.org/raco/)
* ReasonML

View File

@ -0,0 +1,21 @@
Before:
call ale#test#SetDirectory('/testplugin/test/fixers')
After:
Restore
call ale#test#RestoreDirectory()
Execute(The styler callback should include custom styler options):
let g:ale_r_styler_options = "a_custom_option"
AssertEqual
\ {
\ 'command': 'Rscript --vanilla -e '
\ . '"suppressPackageStartupMessages(library(styler));'
\ . 'style_file(commandArgs(TRUE), style = '
\ . 'a_custom_option)"'
\ . ' %t',
\ 'read_temporary_file': 1,
\ },
\ ale#fixers#styler#Fix(bufnr(''))