Fix #272 by checking if quickfix is open before reopening to avoid triggering a BufEnter event that causes quickly repeating linting runs when g:ale_lint_on_enter = 1.

Add test assertions that quickfix window closes when lists become empty again.
This commit is contained in:
Lucas Kolstad 2017-03-23 15:03:01 -07:00
parent a5ac3e4e4b
commit b3f6f56745
2 changed files with 14 additions and 4 deletions

View File

@ -36,10 +36,12 @@ function! ale#list#SetLists(buffer, loclist) abort
if len(a:loclist) > 0 || g:ale_keep_list_window_open
let l:winnr = winnr()
if g:ale_set_quickfix
copen
elseif g:ale_set_loclist
lopen
if !ale#list#IsQuickfixOpen()
if g:ale_set_quickfix
copen
elseif g:ale_set_loclist
lopen
endif
endif
" If focus changed, restore it (jump to the last window).

View File

@ -49,6 +49,10 @@ Execute(The quickfix window should open for just the loclist):
call ale#list#SetLists(bufnr('%'), g:loclist)
Assert ale#list#IsQuickfixOpen()
" Clear the list and it should close again.
call ale#list#SetLists(bufnr('%'), [])
Assert !ale#list#IsQuickfixOpen()
Execute(The quickfix window should stay open for just the loclist):
let g:ale_open_list = 1
let g:ale_keep_list_window_open = 1
@ -76,6 +80,10 @@ Execute(The quickfix window should open for the quickfix list):
call ale#list#SetLists(bufnr('%'), g:loclist)
Assert ale#list#IsQuickfixOpen()
" Clear the list and it should close again.
call ale#list#SetLists(bufnr('%'), [])
Assert !ale#list#IsQuickfixOpen()
Execute(The quickfix window should stay open for the quickfix list):
let g:ale_set_quickfix = 1
let g:ale_open_list = 1