Improves the Perl syntax checker to include lib

In .vimrc, you can specify the path for the libraries using :
let g:perl_lib_path = './lib'
This commit is contained in:
Khaled Hussein 2012-06-29 16:01:49 -07:00 committed by khussein
parent 1e94b98705
commit f67266e2f5
2 changed files with 17 additions and 5 deletions

View File

@ -70,11 +70,11 @@
use strict;
use Getopt::Std;
use vars qw/$opt_c $opt_w $opt_f $opt_h/; # needed for Getopt in combination with use strict 'vars'
use vars qw/$opt_I $opt_c $opt_w $opt_f $opt_h/; # needed for Getopt in combination with use strict 'vars'
use constant VERSION => 0.2;
getopts('cwf:h');
getopts('cwf:hI:');
&usage if $opt_h; # not necessarily needed, but good for further extension
@ -92,13 +92,13 @@ my $handle = (defined $opt_f ? \*FILE : \*STDOUT);
(my $file = shift) or &usage; # display usage if no filename is supplied
my $args = (@ARGV ? ' ' . join ' ', @ARGV : '');
my @error_lines = `perl @{[defined $opt_c ? '-c ' : '' ]} @{[defined $opt_w ? '-X ' : '-w ']} "$file$args" 2>&1`;
my @error_lines = `perl @{[defined $opt_I ? "-I$opt_I" : '']} @{[defined $opt_c ? '-c ' : '' ]} @{[defined $opt_w ? '-X ' : '-w ']} "$file$args" 2>&1`;
my @lines = map { "E:$_" } @error_lines;
my @warn_lines;
if(defined($opt_w)) {
@warn_lines = `perl @{[defined $opt_c ? '-c ' : '' ]} -w "$file$args" 2>&1`;
@warn_lines = `perl @{[defined $opt_I ? $opt_I : '']} @{[defined $opt_c ? '-c ' : '' ]} -w "$file$args" 2>&1`;
}
# Any new errors must be warnings
@ -153,6 +153,7 @@ Usage:
-c compile only, don't run (executes 'perl -c')
-w output warnings as warnings instead of errors (slightly slower)
-f write errors to <errorfile>
-I specify \@INC/#include directory <perl_lib_path>
Examples:
* At the command line:

View File

@ -10,6 +10,13 @@
" See http://sam.zoy.org/wtfpl/COPYING for more details.
"
"============================================================================
"
" In order to add some custom lib directories that should be added to the
" perl command line you can add those to the global variable
" g:perl_lib_path.
"
" let g:perl_lib_path = './lib'
"
if exists("loaded_perl_syntax_checker")
finish
endif
@ -24,7 +31,11 @@ endif
let s:checker = 'perl ' . shellescape(expand('<sfile>:p:h') . '/efm_perl.pl') . ' -c -w'
function! SyntaxCheckers_perl_GetLocList()
let makeprg = s:checker . ' ' . shellescape(expand('%'))
if exists("g:perl_lib_path")
let makeprg = s:checker . ' -I' . g:perl_lib_path . ' ' . shellescape(expand('%'))
else
let makeprg = s:checker . ' ' . shellescape(expand('%'))
endif
let errorformat = '%t:%f:%l:%m'
return SyntasticMake({ 'makeprg': makeprg, 'errorformat': errorformat })