81c73da3b9
A new function is added here which will later be modified for public use in linter and fixer callbacks. All linting and fixing now goes through this new function, to prove that it works in all cases.
98 lines
2.2 KiB
Text
98 lines
2.2 KiB
Text
Before:
|
|
Save g:ale_enabled
|
|
Save g:ale_set_signs
|
|
Save g:ale_set_quickfix
|
|
Save g:ale_set_loclist
|
|
Save g:ale_set_highlights
|
|
Save g:ale_echo_cursor
|
|
|
|
let g:ale_enabled = 0
|
|
let g:ale_set_signs = 0
|
|
let g:ale_set_quickfix = 0
|
|
let g:ale_set_loclist = 0
|
|
let g:ale_set_highlights = 0
|
|
let g:ale_echo_cursor = 0
|
|
|
|
function EmptyString() abort
|
|
return ''
|
|
endfunction
|
|
|
|
call ale#engine#InitBufferInfo(bufnr(''))
|
|
" Call this function first, so we can be sure the module is loaded before we
|
|
" check if it exists.
|
|
call ale#lsp_linter#ClearLSPData()
|
|
|
|
call ale#linter#Define('testft', {
|
|
\ 'name': 'lsplinter',
|
|
\ 'lsp': 'tsserver',
|
|
\ 'executable_callback': 'EmptyString',
|
|
\ 'command_callback': 'EmptyString',
|
|
\ 'project_root_callback': 'EmptyString',
|
|
\ 'language_callback': 'EmptyString',
|
|
\})
|
|
|
|
call ale#linter#Define('testft', {
|
|
\ 'name': 'otherlinter',
|
|
\ 'callback': 'TestCallback',
|
|
\ 'executable': has('win32') ? 'cmd': 'true',
|
|
\ 'command': 'true',
|
|
\ 'read_buffer': 0,
|
|
\})
|
|
|
|
After:
|
|
Restore
|
|
|
|
unlet! b:ale_save_event_fired
|
|
|
|
delfunction EmptyString
|
|
call ale#linter#Reset()
|
|
|
|
Given testft(Some file with an imaginary filetype):
|
|
Execute(ALEStopAllLSPs should clear the loclist):
|
|
let g:ale_buffer_info[bufnr('')].loclist = [
|
|
\ {
|
|
\ 'text': 'a',
|
|
\ 'lnum': 10,
|
|
\ 'col': 0,
|
|
\ 'bufnr': bufnr(''),
|
|
\ 'vcol': 0,
|
|
\ 'type': 'E',
|
|
\ 'nr': -1,
|
|
\ 'linter_name': 'lsplinter',
|
|
\ },
|
|
\ {
|
|
\ 'text': 'a',
|
|
\ 'lnum': 10,
|
|
\ 'col': 0,
|
|
\ 'bufnr': bufnr(''),
|
|
\ 'vcol': 0,
|
|
\ 'type': 'E',
|
|
\ 'nr': -1,
|
|
\ 'linter_name': 'otherlinter',
|
|
\ },
|
|
\]
|
|
let g:ale_buffer_info[bufnr('')].active_linter_list = [
|
|
\ {'name': 'lsplinter'},
|
|
\ {'name': 'otherlinter'},
|
|
\]
|
|
|
|
ALEStopAllLSPs
|
|
|
|
" The loclist should be updated.
|
|
AssertEqual g:ale_buffer_info[bufnr('')].loclist, [
|
|
\ {
|
|
\ 'text': 'a',
|
|
\ 'lnum': 10,
|
|
\ 'col': 0,
|
|
\ 'bufnr': bufnr(''),
|
|
\ 'vcol': 0,
|
|
\ 'type': 'E',
|
|
\ 'nr': -1,
|
|
\ 'linter_name': 'otherlinter',
|
|
\ },
|
|
\]
|
|
|
|
" The LSP linter should be removed from the active linter list.
|
|
AssertEqual
|
|
\ ['otherlinter'],
|
|
\ map(copy(g:ale_buffer_info[bufnr('')].active_linter_list), 'v:val.name')
|