From 4e821e64c7292ba635e55c409a015023d7549374 Mon Sep 17 00:00:00 2001 From: w0rp Date: Tue, 28 Nov 2017 09:47:04 +0000 Subject: [PATCH] Fix #1168 - Make the ruby linter executable configurable --- ale_linters/ruby/ruby.vim | 16 ++++++++++-- doc/ale-ruby.txt | 17 ++++++++++--- doc/ale.txt | 1 + .../test_ruby_command_callback.vader | 25 +++++++++++++++++++ 4 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 test/command_callback/test_ruby_command_callback.vader diff --git a/ale_linters/ruby/ruby.vim b/ale_linters/ruby/ruby.vim index a9f7b51..1aa8885 100644 --- a/ale_linters/ruby/ruby.vim +++ b/ale_linters/ruby/ruby.vim @@ -1,10 +1,22 @@ " Author: Brandon Roehl - https://github.com/BrandonRoehl " Description: Ruby MRI for Ruby files +call ale#Set('ruby_ruby_executable', 'ruby') + +function! ale_linters#ruby#ruby#GetExecutable(buffer) abort + return ale#Var(a:buffer, 'ruby_ruby_executable') +endfunction + +function! ale_linters#ruby#ruby#GetCommand(buffer) abort + let l:executable = ale_linters#ruby#ruby#GetExecutable(a:buffer) + + return ale#Escape(l:executable) . ' -w -c -T1 %t' +endfunction + call ale#linter#Define('ruby', { \ 'name': 'ruby', -\ 'executable': 'ruby', +\ 'executable_callback': 'ale_linters#ruby#ruby#GetExecutable', +\ 'command_callback': 'ale_linters#ruby#ruby#GetCommand', \ 'output_stream': 'stderr', -\ 'command': 'ruby -w -c -T1 %t', \ 'callback': 'ale#handlers#ruby#HandleSyntaxErrors', \}) diff --git a/doc/ale-ruby.txt b/doc/ale-ruby.txt index c710a26..94181ed 100644 --- a/doc/ale-ruby.txt +++ b/doc/ale-ruby.txt @@ -58,10 +58,10 @@ g:ale_ruby_reek_show_wiki_link *g:ale_ruby_reek_show_wiki_link* =============================================================================== rubocop *ale-ruby-rubocop* -g:ale_ruby_rubocop_executable g:ale_ruby_rubocop_executable - b:ale_ruby_rubocop_executable +g:ale_ruby_rubocop_executable *g:ale_ruby_rubocop_executable* + *b:ale_ruby_rubocop_executable* Type: String - Default: 'rubocop' + Default: `'rubocop'` Override the invoked rubocop binary. This is useful for running rubocop from binstubs or a bundle. @@ -75,5 +75,16 @@ g:ale_ruby_rubocop_options *g:ale_ruby_rubocop_options* This variable can be change to modify flags given to rubocop. +=============================================================================== +ruby *ale-ruby-ruby* + +g:ale_ruby_ruby_executable *g:ale_ruby_ruby_executable* + *b:ale_ruby_ruby_executable* + Type: String + Default: `'ruby'` + + This variable can be changed to use a different executable for ruby. + + =============================================================================== vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: diff --git a/doc/ale.txt b/doc/ale.txt index d1afb42..7d87077 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -170,6 +170,7 @@ CONTENTS *ale-contents* rails_best_practices................|ale-ruby-rails_best_practices| reek................................|ale-ruby-reek| rubocop.............................|ale-ruby-rubocop| + ruby................................|ale-ruby-ruby| rust..................................|ale-rust-options| cargo...............................|ale-rust-cargo| rls.................................|ale-rust-rls| diff --git a/test/command_callback/test_ruby_command_callback.vader b/test/command_callback/test_ruby_command_callback.vader new file mode 100644 index 0000000..3813d56 --- /dev/null +++ b/test/command_callback/test_ruby_command_callback.vader @@ -0,0 +1,25 @@ +Before: + Save g:ale_ruby_ruby_executable + + unlet! g:ale_ruby_ruby_executable + + runtime ale_linters/ruby/ruby.vim + +After: + Restore + + call ale#linter#Reset() + +Execute(The default command should be correct): + AssertEqual 'ruby', ale_linters#ruby#ruby#GetExecutable(bufnr('')) + AssertEqual + \ ale#Escape('ruby') . ' -w -c -T1 %t', + \ ale_linters#ruby#ruby#GetCommand(bufnr('')) + +Execute(The executable should be configurable): + let g:ale_ruby_ruby_executable = 'foobar' + + AssertEqual 'foobar', ale_linters#ruby#ruby#GetExecutable(bufnr('')) + AssertEqual + \ ale#Escape('foobar') . ' -w -c -T1 %t', + \ ale_linters#ruby#ruby#GetCommand(bufnr(''))