ale/ale_linters/perl/perlcritic.vim
Steven Humphrey 99263bdda4 Perlcritic column number and rule names (#640)
* Add column number to perlcritic linting output

This returns the column number of the perlcritic error so that ale can
show the column in addition to the line where perlcritic found an error.

* Add perlcritic configuration for rule names

This adds a configuration setting so that the name of the perlcritic
rule is shown [Rule::Name] after the error message.

This is useful to lookup the rule failure.

* Add a vader test for perlcritic#GetCommand
2017-06-11 21:13:47 +01:00

40 lines
1.1 KiB
VimL

" Author: Vincent Lequertier <https://github.com/SkySymbol>
" Description: This file adds support for checking perl with perl critic
if !exists('g:ale_perl_perlcritic_showrules')
let g:ale_perl_perlcritic_showrules = 0
endif
function! ale_linters#perl#perlcritic#GetCommand(buffer) abort
let l:critic_verbosity = '%l:%c %m\n'
if g:ale_perl_perlcritic_showrules
let l:critic_verbosity = '%l:%c %m [%p]\n'
endif
return "perlcritic --verbose '". l:critic_verbosity . "' --nocolor"
endfunction
function! ale_linters#perl#perlcritic#Handle(buffer, lines) abort
let l:pattern = '\(\d\+\):\(\d\+\) \(.\+\)'
let l:output = []
for l:match in ale#util#GetMatches(a:lines, l:pattern)
call add(l:output, {
\ 'lnum': l:match[1],
\ 'col': l:match[2],
\ 'text': l:match[3],
\})
endfor
return l:output
endfunction
call ale#linter#Define('perl', {
\ 'name': 'perlcritic',
\ 'executable': 'perlcritic',
\ 'output_stream': 'stdout',
\ 'command_callback': 'ale_linters#perl#perlcritic#GetCommand',
\ 'callback': 'ale_linters#perl#perlcritic#Handle',
\})