33
44call ale#Set (' erlang_syntaxerl_executable' , ' syntaxerl' )
55
6- function ! ale_linters#erlang#syntaxerl#RunHelpCommand (buffer ) abort
7- let l: executable = ale#Var (a: buffer , ' erlang_syntaxerl_executable' )
8-
9- return ale#command#Run (
10- \ a: buffer ,
11- \ ale#Escape (l: executable ) . ' -h' ,
12- \ function (' ale_linters#erlang#syntaxerl#GetCommand' ),
13- \)
14- endfunction
15-
16- function ! ale_linters#erlang#syntaxerl#GetCommand (buffer , output, meta) abort
17- let l: use_b_option = match (a: output , ' \C\V-b, --base\>' ) > -1
18-
19- return ' %e' . (l: use_b_option ? ' -b %s %t' : ' %t' )
20- endfunction
21-
226function ! ale_linters#erlang#syntaxerl#Handle (buffer , lines ) abort
237 let l: pattern = ' \v\C:(\d+):( warning:)? (.+)'
248 let l: loclist = []
259
2610 for l: match in ale#util#GetMatches (a: lines , l: pattern )
2711 call add (l: loclist , {
28- \ ' lnum' : l: match [1 ] + 0 ,
12+ \ ' lnum' : str2nr ( l: match [1 ]) ,
2913 \ ' text' : l: match [3 ],
3014 \ ' type' : empty (l: match [2 ]) ? ' E' : ' W' ,
3115 \} )
@@ -34,9 +18,27 @@ function! ale_linters#erlang#syntaxerl#Handle(buffer, lines) abort
3418 return l: loclist
3519endfunction
3620
21+ function ! s: GetExecutable (buffer ) abort
22+ return ale#Var (a: buffer , ' erlang_syntaxerl_executable' )
23+ endfunction
24+
25+ function ! s: GetCommand (buffer ) abort
26+ let l: Callback = function (' s:GetCommandFromHelpOutput' )
27+
28+ return ale#command#Run (a: buffer , ' %e -h' , l: Callback , {
29+ \ ' executable' : s: GetExecutable (a: buffer ),
30+ \} )
31+ endfunction
32+
33+ function ! s: GetCommandFromHelpOutput (buffer , output, metadata) abort
34+ let l: has_b_option = match (a: output , ' \V\C-b, --base\>' ) > -1
35+
36+ return l: has_b_option ? ' %e -b %s %t' : ' %e %t'
37+ endfunction
38+
3739call ale#linter#Define (' erlang' , {
3840\ ' name' : ' syntaxerl' ,
39- \ ' executable' : {b - > ale#Var (b , ' erlang_syntaxerl_executable' )},
40- \ ' command' : {b - > ale_linters#erlang#syntaxerl#RunHelpCommand (b )},
4141\ ' callback' : ' ale_linters#erlang#syntaxerl#Handle' ,
42+ \ ' executable' : function (' s:GetExecutable' ),
43+ \ ' command' : function (' s:GetCommand' ),
4244\} )
0 commit comments