summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucas Kolstad <lkolstad@uw.edu>2017-03-23 15:03:01 -0700
committerLucas Kolstad <lkolstad@uw.edu>2017-03-24 10:39:37 -0700
commitb3f6f56745f5d288bcf64c8e284ef314ec3e9e30 (patch)
tree413453f240d753f8a80591d4acf2cfb8dafa9aa6
parenta5ac3e4e4b66360f4309c77e03d63fa580658a12 (diff)
downloadale-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.vim10
-rw-r--r--test/test_list_opening.vader8
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