summaryrefslogtreecommitdiff
path: root/ale_linters/perl/perl.vim
diff options
context:
space:
mode:
Diffstat (limited to 'ale_linters/perl/perl.vim')
-rw-r--r--ale_linters/perl/perl.vim11
1 files changed, 10 insertions, 1 deletions
diff --git a/ale_linters/perl/perl.vim b/ale_linters/perl/perl.vim
index f4b35ab9..087d03eb 100644
--- a/ale_linters/perl/perl.vim
+++ b/ale_linters/perl/perl.vim
@@ -17,6 +17,11 @@ function! ale_linters#perl#perl#GetCommand(buffer) abort
\ . ' %t'
endfunction
+let s:begin_failed_skip_pattern = '\v' . join([
+\ '^Compilation failed in require',
+\ '^Can''t locate',
+\], '|')
+
function! ale_linters#perl#perl#Handle(buffer, lines) abort
let l:pattern = '\(.\+\) at \(.\+\) line \(\d\+\)'
let l:output = []
@@ -28,7 +33,11 @@ function! ale_linters#perl#perl#Handle(buffer, lines) abort
let l:type = 'E'
if ale#path#IsBufferPath(a:buffer, l:match[2])
- \&& l:text !=# 'BEGIN failed--compilation aborted'
+ \ && (
+ \ l:text !=# 'BEGIN failed--compilation aborted'
+ \ || empty(l:output)
+ \ || match(l:output[-1].text, s:begin_failed_skip_pattern) < 0
+ \ )
call add(l:output, {
\ 'lnum': l:line,
\ 'text': l:text,