我是一个 perl 程序员和一个新的 emacs 用户。我在 Windows 下,使用 cperl-mode 编辑 perl。 Emacs 版本是 24.2.1。这是带有一些示例代码的屏幕截图:
(来源:breqwas.net)
我可以继续前进,但我希望这能很好地解释“ splinter ”这个词。
然后我学会了神奇的 C-u C-x = 组合键,它显示了光标下文本的文本属性,希望能做出更好的自己的配色方案。在这一点上,它开始变得更没有意义了。
“打印”具有 cperl-nonoverridable-face。 “死”有字体锁定关键字脸。同时,两者都是函数,可以(并且经常)被覆盖。 “系统”具有字体锁定字体。为什么?函数声明有 font-lock-function-name-face - 没关系,但是“use”的参数也是如此。为什么?函数调用和标量根本没有 face 属性,无法突出显示。为什么?等等,等等。再一次,我可以继续前进。
有没有办法解决所有这些问题?是否有一些配置可以让我将词法单元重新映射到其他一些字体,或者其他一些使语法突出显示不那么疯狂的方法?
为了避免“perl 无法解析”的说法,这里是我要迁移的编辑器的屏幕截图,代码完全相同:http://breqwas.net/dropbox/perlsyn_pn.png .看起来合理多了。
更新:到目前为止(在这里提出这个问题 3 周后)我没有找到治愈方法。我认识的所有使用 emacs 的 perl 程序员都忽略了这些问题。似乎不存在用于 emacs 的更好的 perl 荧光笔。阅读 cperl-mode 文档提供了一些解释(各种元素的面孔选择现在似乎不那么疯狂了),但没有提供任何答案。我写了一封电子邮件给 cperl-mode 维护者,提出了这些问题,并做了一些进一步的挖掘,但没有得到答复。
是的,你说得对:似乎 emacs 社区在 perl 存在的 25 年里无法制作一个好的 perl 语法高亮。这是一个悲伤的故事。
最佳答案
您可能想尝试 perl-mode
而不是 cperl-mode
.如果您发现其中缺少的功能,我们也许可以从 cperl-mode
移植它们。没有太多的麻烦。 perl-mode
的突出显示不如 cperl-mode
花哨's 但它确实解决了您指出的一些问题。
至于“在声明时突出显示,而不是在调用时突出显示”,这是因为 Emacs 通常以这种方式突出显示。我发现突出显示变量和函数用途的好处为零。我在 perl-mode
中保留了变量用途的突出显示主要是因为它以前就在那里,我不想与心怀不满的用户打交道。此外,在 Perl 的情况下,可能更容易突出显示变量声明并使用与 perl-mode
相同的方法。而cperl-mode
必须做额外的工作来区分这两种情况。
关于perl - Emacs 中 perl 的语法高亮显示已损坏,有修复吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13138932/