diff options
author | Pierre-Nicolas Clauss <pinicarus@protonmail.com> | 2021-01-23 19:06:59 +0100 |
---|---|---|
committer | Pierre-Nicolas Clauss <pinicarus@protonmail.com> | 2021-01-23 19:06:59 +0100 |
commit | 0ac7595fe97607ae99757787eba19cf0870be00d (patch) | |
tree | 43bebcf52c3caf7a22d26b9309d0beb58aa144a9 /ale_linters/erlang | |
parent | db96b007209f7ea0983c58cb1d18771f5a45a543 (diff) | |
parent | 9fd9435cd525b1d3c4470db0d514f72ed31cfece (diff) | |
download | ale-0ac7595fe97607ae99757787eba19cf0870be00d.zip |
Merge remote-tracking branch 'upstream/master'
Signed-off-by: Pierre-Nicolas Clauss <pinicarus@protonmail.com>
Diffstat (limited to 'ale_linters/erlang')
-rw-r--r-- | ale_linters/erlang/elvis.vim | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/ale_linters/erlang/elvis.vim b/ale_linters/erlang/elvis.vim new file mode 100644 index 00000000..31dea3dd --- /dev/null +++ b/ale_linters/erlang/elvis.vim @@ -0,0 +1,39 @@ +" Author: Dmitri Vereshchagin <dmitri.vereshchagin@gmail.com> +" Description: Elvis linter for Erlang files + +call ale#Set('erlang_elvis_executable', 'elvis') + +function! ale_linters#erlang#elvis#Handle(buffer, lines) abort + let l:pattern = '\v:(\d+):[^:]+:(.+)' + let l:loclist = [] + + for l:match in ale#util#GetMatches(a:lines, l:pattern) + call add(l:loclist, { + \ 'lnum': str2nr(l:match[1]), + \ 'text': s:AbbreviateMessage(l:match[2]), + \ 'type': 'W', + \}) + endfor + + return l:loclist +endfunction + +function! s:AbbreviateMessage(text) abort + let l:pattern = '\v\c^(line \d+ is too long):.*$' + + return substitute(a:text, l:pattern, '\1.', '') +endfunction + +function! s:GetCommand(buffer) abort + let l:file = ale#Escape(expand('#' . a:buffer . ':.')) + + return '%e rock --output-format=parsable ' . l:file +endfunction + +call ale#linter#Define('erlang', { +\ 'name': 'elvis', +\ 'callback': 'ale_linters#erlang#elvis#Handle', +\ 'executable': {b -> ale#Var(b, 'erlang_elvis_executable')}, +\ 'command': function('s:GetCommand'), +\ 'lint_file': 1, +\}) |