mirror of
https://github.com/dense-analysis/ale.git
synced 2025-12-06 20:54:26 +08:00
add: support for rubyfmt as ruby fixer (#4678)
[rubyfmt](https://github.com/fables-tales/rubyfmt) is a formatter for `ruby` code. This commit adds support for `rubyfmt` as a `ruby` fixer (#2991), together with some tests and documentation.
This commit is contained in:
@@ -641,6 +641,11 @@ let s:default_registry = {
|
|||||||
\ 'suggested_filetypes': ['nickel'],
|
\ 'suggested_filetypes': ['nickel'],
|
||||||
\ 'description': 'Fix nickel files with nickel format',
|
\ 'description': 'Fix nickel files with nickel format',
|
||||||
\ },
|
\ },
|
||||||
|
\ 'rubyfmt': {
|
||||||
|
\ 'function': 'ale#fixers#rubyfmt#Fix',
|
||||||
|
\ 'suggested_filetypes': ['ruby'],
|
||||||
|
\ 'description': 'A formatter for Ruby source code',
|
||||||
|
\ },
|
||||||
\}
|
\}
|
||||||
|
|
||||||
" Reset the function registry to the default entries.
|
" Reset the function registry to the default entries.
|
||||||
|
|||||||
16
autoload/ale/fixers/rubyfmt.vim
Normal file
16
autoload/ale/fixers/rubyfmt.vim
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
" Author: Yining <zhang.yining@gmail.com>
|
||||||
|
" Description: support rubyfmt as ALE fixer for Ruby files
|
||||||
|
|
||||||
|
call ale#Set('ruby_rubyfmt_executable', 'rubyfmt')
|
||||||
|
call ale#Set('ruby_rubyfmt_options', '')
|
||||||
|
|
||||||
|
function! ale#fixers#rubyfmt#Fix(buffer) abort
|
||||||
|
let l:executable = ale#Var(a:buffer, 'ruby_rubyfmt_executable')
|
||||||
|
let l:options = ale#Var(a:buffer, 'ruby_rubyfmt_options')
|
||||||
|
|
||||||
|
return {
|
||||||
|
\ 'command': ale#Escape(l:executable)
|
||||||
|
\ . (empty(l:options) ? '' : ' ' . l:options)
|
||||||
|
\}
|
||||||
|
endfunction
|
||||||
|
|
||||||
@@ -258,6 +258,24 @@ g:ale_ruby_syntax_tree_options *g:ale_ruby_syntax_tree_options*
|
|||||||
|
|
||||||
This variable can be changed to modify flags given to SyntaxTree.
|
This variable can be changed to modify flags given to SyntaxTree.
|
||||||
|
|
||||||
|
===============================================================================
|
||||||
|
rubyfmt *ale-ruby-rubyfmt*
|
||||||
|
|
||||||
|
g:ale_ruby_rubyfmt_executable *g:ale_ruby_rubyfmt_executable*
|
||||||
|
*b:ale_ruby_rubyfmt_executable*
|
||||||
|
Type: |String|
|
||||||
|
Default: `'rubyfmt'`
|
||||||
|
|
||||||
|
This option can be changed to change the path for `rubyfmt`.
|
||||||
|
|
||||||
|
|
||||||
|
g:ale_ruby_rubyfmt_options *g:ale_ruby_rubyfmt_options*
|
||||||
|
*b:ale_ruby_rubyfmt_options*
|
||||||
|
Type: |String|
|
||||||
|
Default: `''`
|
||||||
|
|
||||||
|
This option can be changed to pass extra options to `'rubyfmt'`.
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:
|
||||||
|
|||||||
@@ -560,6 +560,7 @@ Notes:
|
|||||||
* `reek`
|
* `reek`
|
||||||
* `rubocop`
|
* `rubocop`
|
||||||
* `ruby`
|
* `ruby`
|
||||||
|
* `rubyfmt`
|
||||||
* `rufo`
|
* `rufo`
|
||||||
* `solargraph`
|
* `solargraph`
|
||||||
* `sorbet`
|
* `sorbet`
|
||||||
|
|||||||
@@ -3352,6 +3352,7 @@ documented in additional help files.
|
|||||||
sorbet................................|ale-ruby-sorbet|
|
sorbet................................|ale-ruby-sorbet|
|
||||||
standardrb............................|ale-ruby-standardrb|
|
standardrb............................|ale-ruby-standardrb|
|
||||||
syntax_tree...........................|ale-ruby-syntax_tree|
|
syntax_tree...........................|ale-ruby-syntax_tree|
|
||||||
|
rubyfmt...............................|ale-ruby-rubyfmt|
|
||||||
rust....................................|ale-rust-options|
|
rust....................................|ale-rust-options|
|
||||||
analyzer..............................|ale-rust-analyzer|
|
analyzer..............................|ale-rust-analyzer|
|
||||||
cargo.................................|ale-rust-cargo|
|
cargo.................................|ale-rust-cargo|
|
||||||
|
|||||||
@@ -569,6 +569,7 @@ formatting.
|
|||||||
* [reek](https://github.com/troessner/reek)
|
* [reek](https://github.com/troessner/reek)
|
||||||
* [rubocop](https://github.com/bbatsov/rubocop)
|
* [rubocop](https://github.com/bbatsov/rubocop)
|
||||||
* [ruby](https://www.ruby-lang.org)
|
* [ruby](https://www.ruby-lang.org)
|
||||||
|
* [rubyfmt](https://github.com/fables-tales/rubyfmt)
|
||||||
* [rufo](https://github.com/ruby-formatter/rufo)
|
* [rufo](https://github.com/ruby-formatter/rufo)
|
||||||
* [solargraph](https://solargraph.org)
|
* [solargraph](https://solargraph.org)
|
||||||
* [sorbet](https://github.com/sorbet/sorbet)
|
* [sorbet](https://github.com/sorbet/sorbet)
|
||||||
|
|||||||
26
test/fixers/test_rubyfmt_fixer_callback.vader
Normal file
26
test/fixers/test_rubyfmt_fixer_callback.vader
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
Before:
|
||||||
|
Save g:ale_ruby_rubyfmt_executable
|
||||||
|
Save g:ale_ruby_rubyfmt_options
|
||||||
|
Save &l:expandtab
|
||||||
|
Save &l:shiftwidth
|
||||||
|
Save &l:tabstop
|
||||||
|
|
||||||
|
After:
|
||||||
|
Restore
|
||||||
|
|
||||||
|
Execute(The rubyfmt callback should return 'rubyfmt' as default command):
|
||||||
|
setlocal noexpandtab
|
||||||
|
Assert
|
||||||
|
\ ale#fixers#rubyfmt#Fix(bufnr('')).command =~# '^' . ale#Escape('rubyfmt'),
|
||||||
|
\ "Default command name is expected to be 'rubyfmt'"
|
||||||
|
|
||||||
|
Execute(The ruby executable and options should be configurable):
|
||||||
|
let g:ale_ruby_rubyfmt_executable = 'foobar'
|
||||||
|
let g:ale_ruby_rubyfmt_options = '--some-option'
|
||||||
|
|
||||||
|
AssertEqual
|
||||||
|
\ {
|
||||||
|
\ 'command': ale#Escape('foobar')
|
||||||
|
\ . ' --some-option',
|
||||||
|
\ },
|
||||||
|
\ ale#fixers#rubyfmt#Fix(bufnr(''))
|
||||||
Reference in New Issue
Block a user