diff --git a/plugin/ale.vim b/plugin/ale.vim index 6c044e8f..b6f6f296 100644 --- a/plugin/ale.vim +++ b/plugin/ale.vim @@ -155,14 +155,17 @@ let g:ale_history_enabled = get(g:, 'ale_history_enabled', 1) let g:ale_history_log_output = get(g:, 'ale_history_log_output', 0) function! ALEInitAuGroups() abort + " This value used to be a Boolean as a Number, and is now a String. + let l:text_changed = '' . g:ale_lint_on_text_changed + augroup ALERunOnTextChangedGroup autocmd! if g:ale_enabled - if g:ale_lint_on_text_changed ==? 'always' || g:ale_lint_on_text_changed == 1 + if l:text_changed ==? 'always' || l:text_changed ==# '1' autocmd TextChanged,TextChangedI * call ale#Queue(g:ale_lint_delay) - elseif g:ale_lint_on_text_changed ==? 'normal' + elseif l:text_changed ==? 'normal' autocmd TextChanged * call ale#Queue(g:ale_lint_delay) - elseif g:ale_lint_on_text_changed ==? 'insert' + elseif l:text_changed ==? 'insert' autocmd TextChangedI * call ale#Queue(g:ale_lint_delay) endif endif diff --git a/test/test_ale_init_au_groups.vader b/test/test_ale_init_au_groups.vader index bcefabe1..05d7888d 100644 --- a/test/test_ale_init_au_groups.vader +++ b/test/test_ale_init_au_groups.vader @@ -1,66 +1,56 @@ Before: + function! CheckAutocmd(group) + call ALEInitAuGroups() + redir => l:output + execute 'silent autocmd ' . a:group + redir END + + return map( + \ filter(split(l:output, "\n"), 'v:val =~# ''^ALE'''), + \ 'split(v:val)[1]' + \) + endfunction + Save g:ale_lint_on_text_changed Save g:ale_lint_on_insert_leave - autocmd! After: - Restore g:ale_lint_on_text_changed - Restore g:ale_lint_on_insert_leave - unlet! g:output - unlet! g:expected_autocmd - autocmd! + delfunction CheckAutocmd + Restore -Execute (ALE should bind to TextChanged events when g:ale_lint_on_text_changed = 1): - let g:expected_autocmd = join([ - \ '', - \ '--- Auto-Commands ---', - \ 'ALERunOnTextChangedGroup TextChanged', - \ ' * call ale#Queue(g:ale_lint_delay)', - \ 'ALERunOnTextChangedGroup TextChangedI', - \ ' * call ale#Queue(g:ale_lint_delay)', - \], "\n") + call ALEInitAuGroups() +Execute (g:ale_lint_on_text_changed = 0 should bind no events): + let g:ale_lint_on_text_changed = 0 + + AssertEqual [], CheckAutocmd('ALERunOnTextChangedGroup') + +Execute (g:ale_lint_on_text_changed = 1 bind both events): let g:ale_lint_on_text_changed = 1 - call ALEInitAuGroups() - redir => g:output - autocmd ALERunOnTextChangedGroup TextChanged,TextChangedI * - redir END - - AssertEqual g:expected_autocmd, g:output - -Execute (ALE should bind to TextChanged events when g:ale_lint_on_text_changed = 'always'): - let g:expected_autocmd = join([ - \ '', - \ '--- Auto-Commands ---', - \ 'ALERunOnTextChangedGroup TextChanged', - \ ' * call ale#Queue(g:ale_lint_delay)', - \ 'ALERunOnTextChangedGroup TextChangedI', - \ ' * call ale#Queue(g:ale_lint_delay)', - \], "\n") + AssertEqual ['TextChanged', 'TextChangedI'], CheckAutocmd('ALERunOnTextChangedGroup') +Execute (g:ale_lint_on_text_changed = 'always' should bind both events): let g:ale_lint_on_text_changed = 'always' - call ALEInitAuGroups() - redir => g:output - autocmd ALERunOnTextChangedGroup TextChanged,TextChangedI * - redir END + AssertEqual ['TextChanged', 'TextChangedI'], CheckAutocmd('ALERunOnTextChangedGroup') - AssertEqual g:expected_autocmd, g:output +Execute (g:ale_lint_on_text_changed = 'normal' should bind only TextChanged): + let g:ale_lint_on_text_changed = 'normal' -Execute (ALE should bind to InsertLeave event when g:ale_lint_on_insert_leave = 1): - let g:expected_autocmd = join([ - \ "", - \ "--- Auto-Commands ---", - \ "ALERunOnInsertLeave InsertLeave", - \ " * call ale#Queue(0, 'lint_file')", - \], "\n") + AssertEqual ['TextChanged'], CheckAutocmd('ALERunOnTextChangedGroup') +Execute (g:ale_lint_on_text_changed = 'insert' should bind only TextChangedI): + let g:ale_lint_on_text_changed = 'insert' + + AssertEqual ['TextChangedI'], CheckAutocmd('ALERunOnTextChangedGroup') + +Execute (g:ale_lint_on_insert_leave = 1 should bind InsertLeave): let g:ale_lint_on_insert_leave = 1 - call ALEInitAuGroups() - redir => g:output - autocmd ALERunOnInsertLeave InsertLeave * - redir END + AssertEqual ['InsertLeave'], CheckAutocmd('ALERunOnInsertLeave') - AssertEqual g:expected_autocmd, g:output +Execute (g:ale_lint_on_insert_leave = 0 should bind no events): + let g:ale_lint_on_insert_leave = 0 + + AssertEqual [], CheckAutocmd('ALERunOnInsertLeave')