#505 - Do not lint files on enter if the option for linting when the filetype changed is on

This commit is contained in:
w0rp 2017-09-02 16:57:01 +01:00
parent 52eff3bd83
commit f9b43a566c
4 changed files with 41 additions and 1 deletions

View File

@ -33,7 +33,13 @@ endfunction
function! ale#events#FileTypeEvent(buffer, new_filetype) abort
let l:filetype = getbufvar(a:buffer, 'ale_original_filetype', '')
if a:new_filetype isnot# l:filetype
" If we're setting the filetype for the first time after it was blank,
" and the option for linting on enter is off, then we should set this
" filetype as the original filetype. Otherwise ALE will still appear to
" lint files because of the BufEnter event, etc.
if empty(l:filetype) && !ale#Var(a:buffer, 'lint_on_enter')
call setbufvar(a:buffer, 'ale_original_filetype', a:new_filetype)
elseif a:new_filetype isnot# l:filetype
call ale#Queue(300, 'lint_file', a:buffer)
endif
endfunction

View File

@ -683,6 +683,10 @@ g:ale_lint_on_filetype_changed *g:ale_lint_on_filetype_changed*
changed quickly several times in a row, but resulting in only one lint
cycle.
If |g:ale_lint_on_enter| is set to `0`, then ALE will not lint a file when
the filetype is initially set. Otherwise ALE would still lint files when
buffers are opened, and the option for doing so is turned off.
g:ale_lint_on_save *g:ale_lint_on_save*

View File

@ -3,6 +3,9 @@ Before:
let g:ale_set_signs = 1
call ale#linter#Reset()
sign unplace *
function! GenerateResults(buffer, output)
return [
\ {

View File

@ -3,6 +3,8 @@ Before:
let g:queue_calls = []
unlet! b:ale_lint_on_enter
function! ale#Queue(...)
call add(g:queue_calls, a:000)
endfunction
@ -10,6 +12,7 @@ Before:
After:
Restore
unlet! b:ale_lint_on_enter
unlet! g:queue_calls
" Reload the ALE code to load the real function again.
@ -45,3 +48,27 @@ Execute(Linting should be queued when the filetype changes):
call ale#events#FileTypeEvent(bufnr(''), 'bazboz')
AssertEqual [[300, 'lint_file', bufnr('')]], g:queue_calls
Execute(Linting shouldn't be done when the original filetype was blank and linting on enter is off):
let b:ale_lint_on_enter = 0
let b:ale_original_filetype = ''
call ale#events#FileTypeEvent(bufnr(''), 'bazboz')
AssertEqual [], g:queue_calls
Execute(Linting should be done when the original filetype was blank and linting on enter is on):
let b:ale_lint_on_enter = 1
let b:ale_original_filetype = ''
call ale#events#FileTypeEvent(bufnr(''), 'bazboz')
AssertEqual [[300, 'lint_file', bufnr('')]], g:queue_calls
Execute(The new filetype should become the "original" one if the original was blank and linting on enter is off):
let b:ale_lint_on_enter = 0
let b:ale_original_filetype = ''
call ale#events#FileTypeEvent(bufnr(''), 'bazboz')
AssertEqual 'bazboz', b:ale_original_filetype