http://breqwas.net/dropbox/perlsyn_emacs.png
>明显的错误:它突出了注释中的(a =>“b”)样式列表中的数组,哈希和非引用的文字值
>还有一个错误:由于非默认引号符号,它将正则表达式中的第一个单词作为数组高举
>不是一个bug,但看起来很奇怪:它在使用时会突出显示数组和哈希值(即使在注释中,呵呵),但只有在声明时才会突出显示标量
>不是一个错误,但看起来很奇怪:与功能相同的故事:声明时突出显示,而不是在被调用时突出显示
>不是一个错误,但看起来很奇怪:为什么“打印”,“说”和“系统”有不同的颜色?
我可以坚持下去,但我希望能很好地解释“破碎”这个词.
然后我学会了神奇的C-u C-x =键组合,其中显示了光标下文本的文本属性,希望能够制作出更好的自己的着色方案.在这一点上,它开始变得更没意义了.
“print”具有cperl-nonoverridable-face. “die”有font-lock-keyword-face.同时,两者都是功能,可以(通常是)被覆盖. “system”有font-lock-type-face.为什么?函数声明有font-lock-function-name-face – 这没关系,但“use”的参数也是如此.为什么?函数调用和标量根本没有face属性,无法突出显示.为什么?等等,再次,我可以继续前进.
有办法解决所有这些问题吗?是否有一些配置,我可以将词法单位重新映射到其他一些字体,或其他一些方法,使语法高亮不那么疯狂?
为了避免“perl is notarsarsible”的讨论,这里是我正在迁移的编辑器的屏幕截图,使用完全相同的代码:http://breqwas.net/dropbox/perlsyn_pn.png.看起来更合理.
更新:到现在为止(在此问这个问题后3周)我没有找到治疗方法.所有使用emacs的perl程序员我都知道忽略了这些问题.似乎不存在更好的用于emacs的perl荧光笔.阅读cperl-mode docs提供了一些解释(现在各种元素的面孔选择似乎不那么疯狂),但没有提供任何答案.我写了一封给cperl-mode maintainer的电子邮件,里面有这些问题,还有一些挖掘我做了,但没有回复.
是的,你做对了:似乎emacs社区无法在25年内制作一个好的perl语法,perl就是这样.那是一个悲伤的故事.