mirror of
https://github.com/dense-analysis/ale
synced 2024-12-11 17:06:52 +00:00
562680e786
Since Neovim commit c4afb9788c4f139eb2e3b7aa4d6a6a20b67ba156, the sign API uses extmarks internally. Virtual text is already rendered using extmarks. ALE uses the same group name for both signs and virtual text and as a result, both are placed in the same extmark group. Since ALE deletes all extmarks in the virtual text group after all signs have been placed, no signs are ever shown. This commit fixes this by renaming the sign group from `ale` to `ale_signs`.
86 lines
2.1 KiB
Plaintext
86 lines
2.1 KiB
Plaintext
Given foobar (Some imaginary filetype):
|
|
var y = 3+3;
|
|
var y = 3
|
|
|
|
Before:
|
|
Save g:ale_buffer_info
|
|
Save g:ale_echo_cursor
|
|
Save g:ale_run_synchronously
|
|
Save g:ale_set_highlights
|
|
Save g:ale_set_loclist
|
|
Save g:ale_set_quickfix
|
|
Save g:ale_set_signs
|
|
Save g:ale_command_wrapper
|
|
Save g:ale_use_neovim_diagnostics_api
|
|
|
|
let g:ale_command_wrapper = ''
|
|
let g:ale_buffer_info = {}
|
|
let g:ale_run_synchronously = 1
|
|
unlet! g:ale_run_synchronously_callbacks
|
|
let g:ale_set_signs = 1
|
|
" Disable features we don't need for these tests.
|
|
let g:ale_set_quickfix = 0
|
|
let g:ale_set_loclist = 0
|
|
let g:ale_set_highlights = 0
|
|
let g:ale_echo_cursor = 0
|
|
let g:ale_use_neovim_diagnostics_api = 0
|
|
|
|
call ale#sign#Clear()
|
|
|
|
function! TestCallback(buffer, output)
|
|
return [
|
|
\ {'lnum': 1, 'text': 'foo', 'type': 'W'},
|
|
\ {'lnum': 2, 'text': 'foo', 'type': 'E'},
|
|
\]
|
|
endfunction
|
|
|
|
function! CollectSigns()
|
|
redir => l:output
|
|
if has('nvim-0.4.2') || has('patch-8.1.614')
|
|
silent exec 'sign place group=ale_signs'
|
|
else
|
|
silent exec 'sign place'
|
|
endif
|
|
redir END
|
|
|
|
let l:actual_sign_list = []
|
|
|
|
for l:line in split(l:output, "\n")
|
|
let l:match = matchlist(l:line, ale#sign#ParsePattern())
|
|
|
|
if len(l:match) > 0
|
|
call add(l:actual_sign_list, [l:match[1], l:match[3]])
|
|
endif
|
|
endfor
|
|
|
|
return l:actual_sign_list
|
|
endfunction
|
|
|
|
call ale#linter#Define('foobar', {
|
|
\ 'name': 'testlinter',
|
|
\ 'callback': 'TestCallback',
|
|
\ 'executable': has('win32') ? 'cmd' : 'echo',
|
|
\ 'command': has('win32') ? 'echo foo bar' : '/bin/sh -c ''echo foo bar''',
|
|
\})
|
|
|
|
After:
|
|
delfunction TestCallback
|
|
delfunction CollectSigns
|
|
|
|
unlet! g:ale_run_synchronously_callbacks
|
|
call ale#sign#Clear()
|
|
call ale#linter#Reset()
|
|
|
|
Execute(The signs should be updated after linting is done):
|
|
ALELint
|
|
call ale#test#FlushJobs()
|
|
|
|
AssertEqual [['1', 'ALEWarningSign'], ['2', 'ALEErrorSign']], CollectSigns()
|
|
|
|
Execute(Signs should not be set when diagnostics API integration is enabled):
|
|
let g:ale_use_neovim_diagnostics_api = 1
|
|
ALELint
|
|
call ale#test#FlushJobs()
|
|
|
|
AssertEqual [], CollectSigns()
|