我在Emacs中使用perl-mode
,但是当heredoc字符串中有不匹配的引号时,似乎存在语法突出显示的问题。请考虑以下perl代码:
#! /usr/bin/perl
use v5.14;
my $str= <<END;
Hello'
END
my $b=3;
print $str;
这给出了以下屏幕截图:
因此,heredoc字符串之后的所有语法突出显示都会丢失。我在Ubuntu 12.04上使用Gnu Emacs 24.3.1。
答案 0 :(得分:4)
目前,perl-mode不处理heredocs的<<END
语法,只处理<<"END"
,<<'END'
或<<\END
'语法。
我刚刚在Emacs“trunk”中修复了它。
答案 1 :(得分:3)
有趣的是,Stack Overflow语法高亮显示器似乎遇到了同样的问题。
我在几年内没有使用Perl编码,但我记得当我这样做时,我更倾向于cperl-mode
而不是perl-mode
。我刚将此代码段复制到cperl-mode
缓冲区中,似乎正确突出显示。
如果你打开尝试这个,一个简单的M-x cperl-mode
应该适用于一个缓冲区。对所有Perl缓冲区使用cperl-mode
,类似这样的
(fset 'perl-mode 'cperl-mode)
应该在cperl-mode
通常使用的任何地方使用perl-mode
。 (请注意,cperl-mode
附带了Emacs。)