summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/list.vim24
-rw-r--r--test/test_list_titles.vader63
2 files changed, 79 insertions, 8 deletions
diff --git a/autoload/ale/list.vim b/autoload/ale/list.vim
index 63d51ab5..ea6d958c 100644
--- a/autoload/ale/list.vim
+++ b/autoload/ale/list.vim
@@ -12,18 +12,26 @@ function! ale#list#IsQuickfixOpen() abort
endfunction
function! ale#list#SetLists(buffer, loclist) abort
+ let l:title = expand('#' . a:buffer . ':p')
+
if g:ale_set_quickfix
- call setqflist(a:loclist)
+ if has('nvim')
+ call setqflist(a:loclist, ' ', l:title)
+ else
+ call setqflist(a:loclist)
+ call setqflist([], 'r', {'title': l:title})
+ endif
elseif g:ale_set_loclist
" If windows support is off, bufwinid() may not exist.
- if exists('*bufwinid')
- " Set the results on the window for the buffer.
- call setloclist(bufwinid(str2nr(a:buffer)), a:loclist)
+ " We'll set result in the current window, which might not be correct,
+ " but is better than nothing.
+ let l:win_id = exists('*bufwinid') ? bufwinid(str2nr(a:buffer)) : 0
+
+ if has('nvim')
+ call setloclist(l:win_id, a:loclist, ' ', l:title)
else
- " Set the results in the current window.
- " This may not be the same window we ran the linters for, but
- " it's better than nothing.
- call setloclist(0, a:loclist)
+ call setloclist(l:win_id, a:loclist)
+ call setloclist(l:win_id, [], 'r', {'title': l:title})
endif
endif
diff --git a/test/test_list_titles.vader b/test/test_list_titles.vader
new file mode 100644
index 00000000..fe28629d
--- /dev/null
+++ b/test/test_list_titles.vader
@@ -0,0 +1,63 @@
+Before:
+ Save g:ale_set_loclist
+ Save g:ale_set_quickfix
+
+ let g:ale_set_loclist = 0
+ let g:ale_set_quickfix = 0
+
+ silent! cd /testplugin/test
+
+After:
+ Restore
+
+ call setloclist(0, [])
+ call setqflist([])
+
+Execute(The loclist titles should be set appropriately):
+ silent noautocmd file foo
+
+ let g:ale_set_loclist = 1
+
+ call ale#list#SetLists(bufnr(''), [
+ \ {'bufnr': bufnr(''), 'lnum': 5, 'col': 5, 'text': 'x', 'type': 'E'},
+ \])
+
+ AssertEqual [{
+ \ 'lnum': 5,
+ \ 'bufnr': bufnr(''),
+ \ 'col': 5,
+ \ 'text': 'x',
+ \ 'valid': 1,
+ \ 'vcol': 0,
+ \ 'nr': 0,
+ \ 'type': 'E',
+ \ 'pattern': '',
+ \}], getloclist(0)
+
+ if !has('nvim')
+ AssertEqual {'title': getcwd() . '/foo'}, getloclist(0, {'title': ''})
+ endif
+
+Execute(The quickfix titles should be set appropriately):
+ silent noautocmd file foo
+
+ let g:ale_set_quickfix = 1
+
+ call ale#list#SetLists(bufnr(''), [
+ \ {'bufnr': bufnr(''), 'lnum': 5, 'col': 5, 'text': 'x', 'type': 'E'},
+ \])
+ AssertEqual [{
+ \ 'lnum': 5,
+ \ 'bufnr': bufnr(''),
+ \ 'col': 5,
+ \ 'text': 'x',
+ \ 'valid': 1,
+ \ 'vcol': 0,
+ \ 'nr': 0,
+ \ 'type': 'E',
+ \ 'pattern': '',
+ \}], getqflist()
+
+ if !has('nvim')
+ AssertEqual {'title': getcwd() . '/foo'}, getqflist({'title': ''})
+ endif