Fix #499 Set an explicit height for the quickfix list, and make the height configurable

This commit is contained in:
w0rp 2017-06-01 10:39:21 +01:00
parent 81f27a99c8
commit d5ae9b50ea
4 changed files with 82 additions and 9 deletions

View File

@ -46,9 +46,9 @@ function! ale#list#SetLists(buffer, loclist) abort
if !ale#list#IsQuickfixOpen() if !ale#list#IsQuickfixOpen()
if g:ale_set_quickfix if g:ale_set_quickfix
copen execute 'copen ' . str2nr(ale#Var(a:buffer, 'list_window_size'))
elseif g:ale_set_loclist elseif g:ale_set_loclist
lopen execute 'lopen ' . str2nr(ale#Var(a:buffer, 'list_window_size'))
endif endif
endif endif

View File

@ -365,6 +365,19 @@ g:ale_keep_list_window_open *g:ale_keep_list_window_open*
See: |g:ale_open_list| See: |g:ale_open_list|
g:ale_list_window_size *g:ale_list_window_size*
*b:ale_list_window_size*
Type: |Number|
Default: `10`
This number configures the number of lines to set for the height of windows
opened automatically for ALE problems. The default of `10` matches the Vim
default height.
See |g:ale_open_list| for information on automatically opening windows
for quickfix or the loclist.
g:ale_lint_delay *g:ale_lint_delay* g:ale_lint_delay *g:ale_lint_delay*
Type: |Number| Type: |Number|
@ -550,6 +563,8 @@ g:ale_open_list *g:ale_open_list*
including those not set by ALE, unless |g:ale_keep_list_window_open| is set including those not set by ALE, unless |g:ale_keep_list_window_open| is set
to `1`, in which case the window will be kept open until closed manually. to `1`, in which case the window will be kept open until closed manually.
The window size can be configured with |g:ale_list_window_size|.
g:ale_pattern_options *g:ale_pattern_options* g:ale_pattern_options *g:ale_pattern_options*

View File

@ -106,6 +106,9 @@ let g:ale_open_list = get(g:, 'ale_open_list', 0)
" This flag dictates if ale keeps open loclist even if there is no error in loclist " This flag dictates if ale keeps open loclist even if there is no error in loclist
let g:ale_keep_list_window_open = get(g:, 'ale_keep_list_window_open', 0) let g:ale_keep_list_window_open = get(g:, 'ale_keep_list_window_open', 0)
" The window size to set for the quickfix and loclist windows
call ale#Set('list_window_size', 10)
" This flag can be set to 0 to disable setting signs. " This flag can be set to 0 to disable setting signs.
" This is enabled by default only if the 'signs' feature exists. " This is enabled by default only if the 'signs' feature exists.
let g:ale_set_signs = get(g:, 'ale_set_signs', has('signs')) let g:ale_set_signs = get(g:, 'ale_set_signs', has('signs'))

View File

@ -1,6 +1,17 @@
" Author: Yann Fery <yann@fery.me> " Author: Yann Fery <yann@fery.me>
Before: Before:
Save g:ale_set_loclist
Save g:ale_set_quickfix
Save g:ale_open_list
Save g:ale_keep_list_window_open
Save g:ale_list_window_size
let g:ale_set_loclist = 1
let g:ale_set_quickfix = 0
let g:ale_open_list = 0
let g:ale_keep_list_window_open = 0
let g:ale_list_window_size = 10
let g:loclist = [ let g:loclist = [
\ {'lnum': 5, 'col': 5}, \ {'lnum': 5, 'col': 5},
\ {'lnum': 5, 'col': 4}, \ {'lnum': 5, 'col': 4},
@ -8,18 +19,28 @@ Before:
\ {'lnum': 3, 'col': 2}, \ {'lnum': 3, 'col': 2},
\] \]
function GetQuickfixHeight() abort
for l:win in range(1, winnr('$'))
if getwinvar(l:win, '&buftype') ==# 'quickfix'
return winheight(l:win)
endif
endfor
return 0
endfunction
After: After:
Restore
unlet! g:loclist
unlet! b:ale_list_window_size
delfunction GetQuickfixHeight
" Close quickfix window after every execute block " Close quickfix window after every execute block
lcl lcl
ccl ccl
unlet g:loclist
call setloclist(0, []) call setloclist(0, [])
call setqflist([]) call setqflist([])
" Reset options to their default values.
let g:ale_set_loclist = 1
let g:ale_set_quickfix = 0
let g:ale_open_list = 0
let g:ale_keep_list_window_open = 0
Execute(IsQuickfixOpen should return the right output): Execute(IsQuickfixOpen should return the right output):
AssertEqual 0, ale#list#IsQuickfixOpen() AssertEqual 0, ale#list#IsQuickfixOpen()
@ -53,6 +74,22 @@ Execute(The quickfix window should open for just the loclist):
call ale#list#SetLists(bufnr('%'), []) call ale#list#SetLists(bufnr('%'), [])
Assert !ale#list#IsQuickfixOpen() 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
call ale#list#SetLists(bufnr('%'), g:loclist)
AssertEqual 7, GetQuickfixHeight()
Execute(The quickfix window height should be correct for the loclist with buffer variables):
let g:ale_open_list = 1
let b:ale_list_window_size = 8
call ale#list#SetLists(bufnr('%'), g:loclist)
AssertEqual 8, GetQuickfixHeight()
Execute(The quickfix window should stay open for just the loclist): Execute(The quickfix window should stay open for just the loclist):
let g:ale_open_list = 1 let g:ale_open_list = 1
let g:ale_keep_list_window_open = 1 let g:ale_keep_list_window_open = 1
@ -93,3 +130,21 @@ Execute(The quickfix window should stay open for the quickfix list):
call ale#list#SetLists(bufnr('%'), g:loclist) call ale#list#SetLists(bufnr('%'), g:loclist)
call ale#list#SetLists(bufnr('%'), []) call ale#list#SetLists(bufnr('%'), [])
Assert ale#list#IsQuickfixOpen() Assert ale#list#IsQuickfixOpen()
Execute(The quickfix window height should be correct for the quickfix list):
let g:ale_set_quickfix = 1
let g:ale_open_list = 1
let g:ale_list_window_size = 7
call ale#list#SetLists(bufnr('%'), g:loclist)
AssertEqual 7, GetQuickfixHeight()
Execute(The quickfix window height should be correct for the quickfix list with buffer variables):
let g:ale_set_quickfix = 1
let g:ale_open_list = 1
let b:ale_list_window_size = 8
call ale#list#SetLists(bufnr('%'), g:loclist)
AssertEqual 8, GetQuickfixHeight()