From b3f6f56745f5d288bcf64c8e284ef314ec3e9e30 Mon Sep 17 00:00:00 2001 From: Lucas Kolstad Date: Thu, 23 Mar 2017 15:03:01 -0700 Subject: [PATCH] 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. --- autoload/ale/list.vim | 10 ++++++---- test/test_list_opening.vader | 8 ++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) 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