mirror of https://github.com/dense-analysis/ale
Treat ale_open_list integer values as thresholds (#4050)
Only open list window if the number of warnings or errors equals to or exceeds the value of ale_open_list. No change when set to `1`. Co-authored-by: cos <cos>
This commit is contained in:
parent
5856c06775
commit
a58b7b5efb
|
@ -36,12 +36,22 @@ function! ale#list#IsQuickfixOpen() abort
|
|||
endfunction
|
||||
|
||||
" Check if we should open the list, based on the save event being fired, and
|
||||
" that setting being on, or the setting just being set to `1`.
|
||||
function! s:ShouldOpen(buffer) abort
|
||||
" that setting being on, or that the error count is at least as high as the
|
||||
" setting when set to an integer value.
|
||||
function! s:ShouldOpen(buffer, loclist_len) abort
|
||||
let l:val = ale#Var(a:buffer, 'open_list')
|
||||
let l:saved = getbufvar(a:buffer, 'ale_save_event_fired', 0)
|
||||
|
||||
return l:val is 1 || (l:val is# 'on_save' && l:saved)
|
||||
return l:val > 0 ? a:loclist_len >= l:val : l:val is# 'on_save' && l:saved
|
||||
endfunction
|
||||
|
||||
" Check if we should close the list, based on the save event being fired, and
|
||||
" that setting being on, or the setting just being set to an integer value.
|
||||
function! s:ShouldClose(buffer) abort
|
||||
let l:val = ale#Var(a:buffer, 'open_list')
|
||||
let l:saved = getbufvar(a:buffer, 'ale_save_event_fired', 0)
|
||||
|
||||
return !((l:val >= 1) || (l:val is# 'on_save' && l:saved))
|
||||
endfunction
|
||||
|
||||
function! s:Deduplicate(list) abort
|
||||
|
@ -122,9 +132,9 @@ function! s:SetListsImpl(timer_id, buffer, loclist) abort
|
|||
|
||||
" Open a window to show the problems if we need to.
|
||||
"
|
||||
" We'll check if the current buffer's List is not empty here, so the
|
||||
" window will only be opened if the current buffer has problems.
|
||||
if s:ShouldOpen(a:buffer) && !empty(a:loclist)
|
||||
" ShouldOpen() checks if the current buffer has enough problems to be
|
||||
" opened.
|
||||
if s:ShouldOpen(a:buffer, len(a:loclist))
|
||||
let l:winnr = winnr()
|
||||
let l:mode = mode()
|
||||
|
||||
|
@ -230,7 +240,7 @@ function! ale#list#ForcePopulateErrorList(populate_quickfix) abort
|
|||
endfunction
|
||||
|
||||
function! s:CloseWindowIfNeeded(buffer) abort
|
||||
if ale#Var(a:buffer, 'keep_list_window_open') || !s:ShouldOpen(a:buffer)
|
||||
if ale#Var(a:buffer, 'keep_list_window_open') || s:ShouldClose(a:buffer)
|
||||
return
|
||||
endif
|
||||
|
||||
|
|
|
@ -1797,6 +1797,9 @@ g:ale_open_list *g:ale_open_list*
|
|||
loclist (|lopen|) or for the quickfix list instead if |g:ale_set_quickfix|
|
||||
is `1`. (|copen|)
|
||||
|
||||
When set to any higher numberical value, ALE will only open the window when
|
||||
the number of warnings or errors are at least that many.
|
||||
|
||||
When set to `'on_save'`, ALE will only open the loclist after buffers have
|
||||
been saved. The list will be opened some time after buffers are saved and
|
||||
any linter for a buffer returns results.
|
||||
|
|
|
@ -97,6 +97,34 @@ Execute(The quickfix window should open for just the loclist):
|
|||
call ale#list#SetLists(bufnr('%'), [])
|
||||
Assert !ale#list#IsQuickfixOpen()
|
||||
|
||||
Execute(The quickfix window should open on the correct threshold):
|
||||
" The window should open for a value lower than number of entries.
|
||||
let g:ale_open_list = len(g:loclist) - 1
|
||||
call ale#list#SetLists(bufnr('%'), g:loclist)
|
||||
Assert ale#list#IsQuickfixOpen()
|
||||
|
||||
" Clear the list to be ready for a new value.
|
||||
call ale#list#SetLists(bufnr('%'), [])
|
||||
Assert !ale#list#IsQuickfixOpen()
|
||||
|
||||
" It should also open for a value equal to the number of entries.
|
||||
let g:ale_open_list = len(g:loclist)
|
||||
call ale#list#SetLists(bufnr('%'), g:loclist)
|
||||
Assert ale#list#IsQuickfixOpen()
|
||||
|
||||
" Clear the list again, preparing for a final value.
|
||||
call ale#list#SetLists(bufnr('%'), [])
|
||||
Assert !ale#list#IsQuickfixOpen()
|
||||
|
||||
" Window should not open for values higher than number of loclist entries.
|
||||
let g:ale_open_list = len(g:loclist) + 1
|
||||
call ale#list#SetLists(bufnr('%'), g:loclist)
|
||||
Assert !ale#list#IsQuickfixOpen()
|
||||
|
||||
" Clear the list just to clean up.
|
||||
call ale#list#SetLists(bufnr('%'), [])
|
||||
Assert !ale#list#IsQuickfixOpen()
|
||||
|
||||
Execute(The quickfix window height should be correct for the loclist):
|
||||
let g:ale_open_list = 1
|
||||
let g:ale_list_window_size = 7
|
||||
|
|
Loading…
Reference in New Issue