Use JSON output with vale
Switches all vale instances to JSON output and provides an appropriate handler for that. Without JSON, no end_col is provided and text highlighting only catches the first character of every result.
This commit is contained in:
parent
c4956657dc
commit
96b90b45db
5 changed files with 109 additions and 6 deletions
36
autoload/ale/handlers/vale.vim
Normal file
36
autoload/ale/handlers/vale.vim
Normal file
|
@ -0,0 +1,36 @@
|
|||
" Author: Johannes Wienke <languitar@semipol.de>
|
||||
" Description: output handler for the vale JSON format
|
||||
|
||||
function! ale#handlers#vale#GetType(severity) abort
|
||||
if a:severity is? 'warning'
|
||||
return 'W'
|
||||
endif
|
||||
|
||||
return 'E'
|
||||
endfunction
|
||||
|
||||
function! ale#handlers#vale#Handle(buffer, lines) abort
|
||||
try
|
||||
let l:errors = json_decode(join(a:lines, ''))
|
||||
catch
|
||||
return []
|
||||
endtry
|
||||
|
||||
if empty(l:errors)
|
||||
return []
|
||||
endif
|
||||
|
||||
let l:output = []
|
||||
for l:error in l:errors[keys(l:errors)[0]]
|
||||
call add(l:output, {
|
||||
\ 'lnum': l:error['Line'],
|
||||
\ 'col': l:error['Span'][0],
|
||||
\ 'end_col': l:error['Span'][1],
|
||||
\ 'code': l:error['Check'],
|
||||
\ 'text': l:error['Message'],
|
||||
\ 'type': ale#handlers#vale#GetType(l:error['Severity']),
|
||||
\})
|
||||
endfor
|
||||
|
||||
return l:output
|
||||
endfunction
|
Loading…
Add table
Add a link
Reference in a new issue