summaryrefslogtreecommitdiff
path: root/autoload/ale/list.vim
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-08-08 00:46:42 +0100
committerw0rp <devw0rp@gmail.com>2017-08-08 00:46:42 +0100
commit16cfedf04a46a3d498dfd4f7293c555562d0776e (patch)
tree80440fdc42c41f855a3936e2128ad7d68296d94a /autoload/ale/list.vim
parent2edea153585560e5788d1761595eb0141ad6e3bd (diff)
downloadale-16cfedf04a46a3d498dfd4f7293c555562d0776e.zip
Fix #271 - Add the ability to open the quickfix or loclist windows only after saving a file
Diffstat (limited to 'autoload/ale/list.vim')
-rw-r--r--autoload/ale/list.vim18
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