1071d4279SBram Moolenaar" Vim Compiler File 2071d4279SBram Moolenaar" Compiler: Perl syntax checks (perl -Wc) 3a3ff49fdSBram Moolenaar" Maintainer: Christian J. Robinson <[email protected]> 4*5477506aSBram Moolenaar" Last Change: 2019 Jul 22 5071d4279SBram Moolenaar 6071d4279SBram Moolenaarif exists("current_compiler") 7071d4279SBram Moolenaar finish 8071d4279SBram Moolenaarendif 9071d4279SBram Moolenaarlet current_compiler = "perl" 10071d4279SBram Moolenaar 11071d4279SBram Moolenaarif exists(":CompilerSet") != 2 " older Vim always used :setlocal 12071d4279SBram Moolenaar command -nargs=* CompilerSet setlocal <args> 13071d4279SBram Moolenaarendif 14071d4279SBram Moolenaar 15071d4279SBram Moolenaarlet s:savecpo = &cpo 16071d4279SBram Moolenaarset cpo&vim 17071d4279SBram Moolenaar 18c1a11ed5SBram Moolenaarif exists('g:perl_compiler_force_warnings') && g:perl_compiler_force_warnings == 0 19c1a11ed5SBram Moolenaar let s:warnopt = 'w' 20071d4279SBram Moolenaarelse 21c1a11ed5SBram Moolenaar let s:warnopt = 'W' 22071d4279SBram Moolenaarendif 23071d4279SBram Moolenaar 24c1a11ed5SBram Moolenaarif getline(1) =~# '-[^ ]*T' 25c1a11ed5SBram Moolenaar let s:taintopt = 'T' 26c1a11ed5SBram Moolenaarelse 27c1a11ed5SBram Moolenaar let s:taintopt = '' 28c1a11ed5SBram Moolenaarendif 29c1a11ed5SBram Moolenaar 30*5477506aSBram Moolenaarexe 'CompilerSet makeprg=perl\ -' . s:warnopt . s:taintopt . 'c\ %:S' 31c1a11ed5SBram Moolenaar 32071d4279SBram MoolenaarCompilerSet errorformat= 33071d4279SBram Moolenaar \%-G%.%#had\ compilation\ errors., 34071d4279SBram Moolenaar \%-G%.%#syntax\ OK, 35071d4279SBram Moolenaar \%m\ at\ %f\ line\ %l., 36071d4279SBram Moolenaar \%+A%.%#\ at\ %f\ line\ %l\\,%.%#, 37071d4279SBram Moolenaar \%+C%.%# 38071d4279SBram Moolenaar 39071d4279SBram Moolenaar" Explanation: 40071d4279SBram Moolenaar" %-G%.%#had\ compilation\ errors., - Ignore the obvious. 41071d4279SBram Moolenaar" %-G%.%#syntax\ OK, - Don't include the 'a-okay' message. 42071d4279SBram Moolenaar" %m\ at\ %f\ line\ %l., - Most errors... 43071d4279SBram Moolenaar" %+A%.%#\ at\ %f\ line\ %l\\,%.%#, - As above, including ', near ...' 44071d4279SBram Moolenaar" %+C%.%# - ... Which can be multi-line. 45071d4279SBram Moolenaar 46071d4279SBram Moolenaarlet &cpo = s:savecpo 47071d4279SBram Moolenaarunlet s:savecpo 48