From d6f3d4976d21e516193da5907db3f06e56d3e5c8 Mon Sep 17 00:00:00 2001 From: Henrique Barcelos <16565602+hbarcelos@users.noreply.github.com> Date: Sat, 2 Jul 2022 10:05:03 -0300 Subject: [PATCH] Allow `shfmt` fixer to use `.editorconfig` (#4244) * fix: added support for local solhint executable * feat: added support for matching parse errors * test: added test for solhint command callback and handler * chore: removed command callback test * refactor: made solhint handler structure closer to eslint * refactor(shfmt-fixer): remove derivation of default CLI arguments --- autoload/ale/fixers/shfmt.vim | 18 ++--------- test/fixers/test_shfmt_fixer_callback.vader | 34 +-------------------- 2 files changed, 3 insertions(+), 49 deletions(-) diff --git a/autoload/ale/fixers/shfmt.vim b/autoload/ale/fixers/shfmt.vim index 06e8da57..0eefc985 100644 --- a/autoload/ale/fixers/shfmt.vim +++ b/autoload/ale/fixers/shfmt.vim @@ -5,27 +5,13 @@ scriptencoding utf-8 call ale#Set('sh_shfmt_executable', 'shfmt') call ale#Set('sh_shfmt_options', '') -function! s:DefaultOption(buffer) abort - if getbufvar(a:buffer, '&expandtab') == 0 - " Tab is used by default - return '' - endif - - let l:tabsize = getbufvar(a:buffer, '&shiftwidth') - - if l:tabsize == 0 - let l:tabsize = getbufvar(a:buffer, '&tabstop') - endif - - return ' -i ' . l:tabsize -endfunction - function! ale#fixers#shfmt#Fix(buffer) abort let l:executable = ale#Var(a:buffer, 'sh_shfmt_executable') let l:options = ale#Var(a:buffer, 'sh_shfmt_options') return { \ 'command': ale#Escape(l:executable) - \ . (empty(l:options) ? s:DefaultOption(a:buffer) : ' ' . l:options) + \ . ' -filename=%s' + \ . (empty(l:options) ? '' : ' ' . l:options) \} endfunction diff --git a/test/fixers/test_shfmt_fixer_callback.vader b/test/fixers/test_shfmt_fixer_callback.vader index 99cb0987..02fce526 100644 --- a/test/fixers/test_shfmt_fixer_callback.vader +++ b/test/fixers/test_shfmt_fixer_callback.vader @@ -14,39 +14,6 @@ Execute(The shfmt callback should return 'shfmt' as default command): \ ale#fixers#shfmt#Fix(bufnr('')).command =~# '^' . ale#Escape('shfmt'), \ "Default command name is expected to be 'shfmt'" -Execute(The shfmt callback should return the command with no option as default when noexpandtab is set): - let g:ale_sh_shfmt_executable = 'shfmt' - let g:ale_sh_shfmt_options = '' - setlocal noexpandtab - AssertEqual - \ { - \ 'command': ale#Escape('shfmt'), - \ }, - \ ale#fixers#shfmt#Fix(bufnr('')) - -Execute(The shfmt callback should return the command specifying indent width by looking shiftwidth as default): - let g:ale_sh_shfmt_executable = 'shfmt' - let g:ale_sh_shfmt_options = '' - setlocal expandtab - setlocal shiftwidth=4 - AssertEqual - \ { - \ 'command': ale#Escape('shfmt') . ' -i 4', - \ }, - \ ale#fixers#shfmt#Fix(bufnr('')) - -Execute(The shfmt callback should return the command specifying indent width by looking tabstop when shiftwidth is 0 as default): - let g:ale_sh_shfmt_executable = 'shfmt' - let g:ale_sh_shfmt_options = '' - setlocal expandtab - setlocal shiftwidth=0 - setlocal tabstop=8 - AssertEqual - \ { - \ 'command': ale#Escape('shfmt') . ' -i 8', - \ }, - \ ale#fixers#shfmt#Fix(bufnr('')) - Execute(The shfmt executable and options should be configurable): let g:ale_sh_shfmt_executable = 'foobar' let g:ale_sh_shfmt_options = '--some-option' @@ -54,6 +21,7 @@ Execute(The shfmt executable and options should be configurable): AssertEqual \ { \ 'command': ale#Escape('foobar') + \ . ' -filename=%s' \ . ' --some-option', \ }, \ ale#fixers#shfmt#Fix(bufnr(''))