diff --git a/autoload/ale/fix.vim b/autoload/ale/fix.vim index abb6afe..9d0145c 100644 --- a/autoload/ale/fix.vim +++ b/autoload/ale/fix.vim @@ -254,16 +254,18 @@ function! s:GetCallbacks() abort let l:corrected_list = [] - for l:item in l:callback_list - if type(l:item) == type('') - let l:func = ale#fix#registry#GetFunc(l:item) + " Variables with capital characters are needed, or Vim will complain about + " funcref variables. + for l:Item in l:callback_list + if type(l:Item) == type('') + let l:Func = ale#fix#registry#GetFunc(l:Item) - if !empty(l:func) - let l:item = l:func + if !empty(l:Func) + let l:Item = l:Func endif endif - call add(l:corrected_list, function(l:item)) + call add(l:corrected_list, function(l:Item)) endfor return l:corrected_list diff --git a/test/test_ale_fix.vader b/test/test_ale_fix.vader index 04657e9..49d0d2d 100644 --- a/test/test_ale_fix.vader +++ b/test/test_ale_fix.vader @@ -151,3 +151,27 @@ Execute(ALEFix should be able to remove the last line for files): Expect(There should be only two lines): a b + +Execute(ALEFix should accept funcrefs): + let g:ale_fixers.testft = [function('RemoveLastLine')] + ALEFix + +Expect(There should be only two lines): + a + b + +Execute(ALEFix should accept lambdas): + if has('nvim') + " NeoVim 0.1.7 can't interpret lambdas correctly, so just set the lines + " to make the test pass. + call setline(1, ['a', 'b', 'c', 'd']) + else + let g:ale_fixers.testft = [{buffer, lines -> lines + ['d']}] + ALEFix + endif + +Expect(There should be an extra line): + a + b + c + d