diff options
Diffstat (limited to 'autoload/ale/list.vim')
-rw-r--r-- | autoload/ale/list.vim | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/autoload/ale/list.vim b/autoload/ale/list.vim index 6186d863..f7c8ddd6 100644 --- a/autoload/ale/list.vim +++ b/autoload/ale/list.vim @@ -11,6 +11,16 @@ function! ale#list#IsQuickfixOpen() abort return 0 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 + let l:val = ale#Var(a:buffer, 'open_list') + let l:saved = getbufvar(a:buffer, 'ale_save_event_fired', 0) + + return (type(l:val) == type(1) && l:val == 1) + \ || (l:val ==# 'on_save' && l:saved) +endfunction + function! ale#list#SetLists(buffer, loclist) abort let l:title = expand('#' . a:buffer . ':p') @@ -35,8 +45,10 @@ function! ale#list#SetLists(buffer, loclist) abort endif endif - " If we have errors in our list, open the list. Only if it isn't already open - if (g:ale_open_list && !empty(a:loclist)) || g:ale_keep_list_window_open + let l:keep_open = ale#Var(a:buffer, 'keep_list_window_open') + + " Open a window to show the problems if we need to. + if s:ShouldOpen(a:buffer) && (l:keep_open || !empty(a:loclist)) let l:winnr = winnr() let l:mode = mode() let l:reset_visual_selection = l:mode ==? 'v' || l:mode ==# "\<c-v>" @@ -68,7 +80,7 @@ function! ale#list#SetLists(buffer, loclist) abort endfunction function! ale#list#CloseWindowIfNeeded(buffer) abort - if g:ale_keep_list_window_open || !g:ale_open_list + if ale#Var(a:buffer, 'keep_list_window_open') || !s:ShouldOpen(a:buffer) return endif |