summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/engine.vim2
-rw-r--r--autoload/ale/list.vim4
-rw-r--r--plugin/ale.vim4
-rw-r--r--test/test_list_opening.vader20
-rw-r--r--test/test_setting_loclist_from_another_buffer.vader13
5 files changed, 29 insertions, 14 deletions
diff --git a/autoload/ale/engine.vim b/autoload/ale/engine.vim
index efd5dac1..1ab9c8b2 100644
--- a/autoload/ale/engine.vim
+++ b/autoload/ale/engine.vim
@@ -255,7 +255,7 @@ endfunction
function! ale#engine#SetResults(buffer, loclist) abort
if g:ale_set_quickfix || g:ale_set_loclist
- call ale#list#SetLists(a:loclist)
+ call ale#list#SetLists(a:buffer, a:loclist)
endif
if g:ale_set_signs
diff --git a/autoload/ale/list.vim b/autoload/ale/list.vim
index a086b10c..7b846761 100644
--- a/autoload/ale/list.vim
+++ b/autoload/ale/list.vim
@@ -11,11 +11,11 @@ function! ale#list#IsQuickfixOpen() abort
return 0
endfunction
-function! ale#list#SetLists(loclist) abort
+function! ale#list#SetLists(buffer, loclist) abort
if g:ale_set_quickfix
call setqflist(a:loclist)
elseif g:ale_set_loclist
- call setloclist(0, a:loclist)
+ call setloclist(bufwinid(str2nr(a:buffer)), a:loclist)
endif
" If we don't auto-open lists, bail out here.
diff --git a/plugin/ale.vim b/plugin/ale.vim
index bdbf3ad1..8fa0093c 100644
--- a/plugin/ale.vim
+++ b/plugin/ale.vim
@@ -194,7 +194,9 @@ function! s:ALEToggle() abort
" Lint immediately
call ale#Queue(0)
else
- for l:buffer in keys(g:ale_buffer_info)
+ " Make sure the buffer number is a number, not a string,
+ " otherwise things can go wrong.
+ for l:buffer in map(keys(g:ale_buffer_info), 'str2nr(v:val)')
" Stop jobs and delete stored buffer data
call ale#cleanup#Buffer(l:buffer)
" Clear signs, loclist, quicklist
diff --git a/test/test_list_opening.vader b/test/test_list_opening.vader
index e3517bf3..942f592f 100644
--- a/test/test_list_opening.vader
+++ b/test/test_list_opening.vader
@@ -35,18 +35,18 @@ Execute(IsQuickfixOpen should return the right output):
AssertEqual 0, ale#list#IsQuickfixOpen()
Execute(The quickfix window should not open by default for the loclist):
- call ale#list#SetLists(g:loclist)
+ call ale#list#SetLists(bufnr('%'), g:loclist)
Assert !ale#list#IsQuickfixOpen()
Execute(The quickfix window should open for just the loclist):
let g:ale_open_list = 1
" It should not open for an empty list.
- call ale#list#SetLists([])
+ call ale#list#SetLists(bufnr('%'), [])
Assert !ale#list#IsQuickfixOpen()
" With a non-empty loclist, the window must open.
- call ale#list#SetLists(g:loclist)
+ call ale#list#SetLists(bufnr('%'), g:loclist)
Assert ale#list#IsQuickfixOpen()
Execute(The quickfix window should stay open for just the loclist):
@@ -54,14 +54,14 @@ Execute(The quickfix window should stay open for just the loclist):
let g:ale_keep_list_window_open = 1
" The window should stay open after even after it is made blank again.
- call ale#list#SetLists(g:loclist)
- call ale#list#SetLists([])
+ call ale#list#SetLists(bufnr('%'), g:loclist)
+ call ale#list#SetLists(bufnr('%'), [])
Assert ale#list#IsQuickfixOpen()
Execute(The quickfix window should not open by default when quickfix is on):
let g:ale_set_quickfix = 1
- call ale#list#SetLists(g:loclist)
+ call ale#list#SetLists(bufnr('%'), g:loclist)
Assert !ale#list#IsQuickfixOpen()
Execute(The quickfix window should open for the quickfix list):
@@ -69,11 +69,11 @@ Execute(The quickfix window should open for the quickfix list):
let g:ale_open_list = 1
" It should not open for an empty list.
- call ale#list#SetLists([])
+ call ale#list#SetLists(bufnr('%'), [])
Assert !ale#list#IsQuickfixOpen()
" With a non-empty quickfix list, the window must open.
- call ale#list#SetLists(g:loclist)
+ call ale#list#SetLists(bufnr('%'), g:loclist)
Assert ale#list#IsQuickfixOpen()
Execute(The quickfix window should stay open for the quickfix list):
@@ -82,6 +82,6 @@ Execute(The quickfix window should stay open for the quickfix list):
let g:ale_keep_list_window_open = 1
" The window should stay open after even after it is made blank again.
- call ale#list#SetLists(g:loclist)
- call ale#list#SetLists([])
+ call ale#list#SetLists(bufnr('%'), g:loclist)
+ call ale#list#SetLists(bufnr('%'), [])
Assert ale#list#IsQuickfixOpen()
diff --git a/test/test_setting_loclist_from_another_buffer.vader b/test/test_setting_loclist_from_another_buffer.vader
new file mode 100644
index 00000000..4b757c61
--- /dev/null
+++ b/test/test_setting_loclist_from_another_buffer.vader
@@ -0,0 +1,13 @@
+Before:
+ let g:original_buffer = bufnr('%')
+ new
+
+After:
+ unlet! g:original_buffer
+
+Execute(Errors should be set in the loclist for the original buffer, not the new one):
+ call ale#list#SetLists(g:original_buffer, [{'lnum': 4, 'text': 'foo'}])
+
+ AssertEqual [], getloclist(0)
+ AssertEqual 1, len(getloclist(bufwinid(g:original_buffer)))
+ AssertEqual 'foo', getloclist(bufwinid(g:original_buffer))[0].text