在Emacs perl模式中的heredocs中引用

时间:2014-04-25 11:58:39

标签: perl emacs

我在Emacs中使用perl-mode,但是当heredoc字符串中有不匹配的引号时,似乎存在语法突出显示的问题。请考虑以下perl代码:

#! /usr/bin/perl

use v5.14;

my $str= <<END;
Hello'
END

my $b=3;

print $str;

这给出了以下屏幕截图:

enter image description here

因此,heredoc字符串之后的所有语法突出显示都会丢失。我在Ubuntu 12.04上使用Gnu Emacs 24.3.1。

2 个答案:

答案 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。)