diff options
author | Lucas Kolstad <lkolstad@uw.edu> | 2017-03-23 15:03:01 -0700 |
---|---|---|
committer | Lucas Kolstad <lkolstad@uw.edu> | 2017-03-24 10:39:37 -0700 |
commit | b3f6f56745f5d288bcf64c8e284ef314ec3e9e30 (patch) | |
tree | 413453f240d753f8a80591d4acf2cfb8dafa9aa6 | |
parent | a5ac3e4e4b66360f4309c77e03d63fa580658a12 (diff) | |
download | ale-b3f6f56745f5d288bcf64c8e284ef314ec3e9e30.zip |
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.
-rw-r--r-- | autoload/ale/list.vim | 10 | ||||
-rw-r--r-- | 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 6486d906..63d51ab5 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 942f592f..6d0164fd 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 |