改进TextMate Perl bundle的语法检查

TextMate下Perl的语法检查对于单个perl包或module很好,但是在开发多个package的project时候,由于当前project目录没有在perl的@INC中,因此语法检查是无法通过的。
一种解决方法是将project源码所在的目录加入到perl的@INC中,或者使用use lib.
这2种不适合单个module的测试,会增加过多的use lib指令。

我是通过修改TextMate的perl bundle的perlcheckmate.pl来将当前project的目录加入语法检查include path中,
实现起来很简单,在
~/Library/Application Support/TextMate/Bundles/Perl.tmbundle/Support/perlcheckmate.pl

找到33 line, 修改如下:

my $inc_path = exists $ENV{TM_PERL_LIB_DIR}?$ENV{TM_PERL_LIB_DIR}:"$ENV{TM_PROJECT_DIRECTORY}/lib";
my @lines = `perl -I$inc_path -Tcw "$file" 2>&1`;

默认语法检查是当前项目下的lib目录添加到INC(符合大多数情况), 也可以通过给TextMate的当前Project添加一个TM_PERL_LIB_DIR变量来手动指定一个目录。

现在,ctrl+shif+V, no errors!

Comments

Leave a Reply