Pass the buffer's filename to Credo

By default, Credo attributes input from STDIN as though it came from a
file named `stdin`. This change passes the buffer's filename, too, so
that Credo can use that information when applying its configuration.

This is a nice improvement because files like `mix.exs` are normally
excluded from Credo-based linting. Previously, ALE would show lint
warnings for those files as they were edited. Now, they are correctly
honor the Credo configuration and don't produce lint output.
This commit is contained in:
Jon Parise 2017-02-09 19:15:49 -08:00
parent 5de445c041
commit d3e7d3d5e7

View File

@ -3,8 +3,8 @@
function! ale_linters#elixir#credo#Handle(buffer, lines) abort function! ale_linters#elixir#credo#Handle(buffer, lines) abort
" Matches patterns line the following: " Matches patterns line the following:
" "
" stdin:19: F: Pipe chain should start with a raw value. " lib/filename.ex:19:7: F: Pipe chain should start with a raw value.
let l:pattern = '\v^stdin:(\d+):?(\d+)?: (.): (.+)$' let l:pattern = '\v^.+:(\d+):?(\d+)?: (.): (.+)$'
let l:output = [] let l:output = []
for l:line in a:lines for l:line in a:lines
@ -41,5 +41,5 @@ endfunction
call ale#linter#Define('elixir', { call ale#linter#Define('elixir', {
\ 'name': 'credo', \ 'name': 'credo',
\ 'executable': 'mix', \ 'executable': 'mix',
\ 'command': 'mix credo suggest --format=flycheck --read-from-stdin', \ 'command': 'mix credo suggest --format=flycheck --read-from-stdin %s',
\ 'callback': 'ale_linters#elixir#credo#Handle' }) \ 'callback': 'ale_linters#elixir#credo#Handle' })