Merge pull request #305 from notkild/master
Fix rust linting with cargo when multiple targets are present
This commit is contained in:
commit
ccf78c40b1
2 changed files with 10 additions and 2 deletions
|
@ -15,7 +15,7 @@ endfunction
|
||||||
call ale#linter#Define('rust', {
|
call ale#linter#Define('rust', {
|
||||||
\ 'name': 'cargo',
|
\ 'name': 'cargo',
|
||||||
\ 'executable_callback': 'ale_linters#rust#cargo#GetCargoExecutable',
|
\ 'executable_callback': 'ale_linters#rust#cargo#GetCargoExecutable',
|
||||||
\ 'command': 'cargo rustc -- --error-format=json -Z no-trans',
|
\ 'command': 'cargo build --message-format=json -q',
|
||||||
\ 'callback': 'ale_linters#rust#rustc#HandleRustcErrors',
|
\ 'callback': 'ale_linters#rust#rustc#HandleRustcErrors',
|
||||||
\ 'output_stream': 'stderr',
|
\ 'output_stream': 'stdout',
|
||||||
\})
|
\})
|
||||||
|
|
|
@ -17,12 +17,20 @@ function! ale_linters#rust#rustc#HandleRustcErrors(buffer_number, errorlines) ab
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let l:error = json_decode(l:errorline)
|
let l:error = json_decode(l:errorline)
|
||||||
|
if !has_key(l:error, 'code') && !has_key(l:error, 'message')
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has_key(l:error, 'message')
|
||||||
|
let l:error = l:error.message
|
||||||
|
endif
|
||||||
|
|
||||||
if !empty(l:error.code) && index(g:ale_rust_ignore_error_codes, l:error.code.code) > -1
|
if !empty(l:error.code) && index(g:ale_rust_ignore_error_codes, l:error.code.code) > -1
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
|
|
||||||
for l:span in l:error.spans
|
for l:span in l:error.spans
|
||||||
|
let l:span.file_name = fnamemodify(l:span.file_name, ':t')
|
||||||
if l:span.is_primary &&
|
if l:span.is_primary &&
|
||||||
\ (l:span.file_name ==# l:file_name || l:span.file_name ==# '<anon>')
|
\ (l:span.file_name ==# l:file_name || l:span.file_name ==# '<anon>')
|
||||||
call add(l:output, {
|
call add(l:output, {
|
||||||
|
|
Reference in a new issue