diff --git a/autoload/ale/list.vim b/autoload/ale/list.vim index 6486d90..63d51ab 100644 --- a/autoload/ale/list.vim +++ b/autoload/ale/list.vim @@ -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). diff --git a/test/test_list_opening.vader b/test/test_list_opening.vader index 942f592..6d0164f 100644 --- a/test/test_list_opening.vader +++ b/test/test_list_opening.vader @@ -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