我可以使用cperl-mode和perl-mode的语法高亮吗?

9
Emacs的cperl-mode似乎比perl-mode更不易混淆,但是Skittles效应使得它对我来说难以使用。有没有人有或知道一个.emacs块的例子,可以使cperl-mode使用来自perl-mode的着色,最好是以可读的形式呈现,这样我就可以逐个打开默认颜色,直到我感到舒适为止?
特别是某些内置函数使用了一种可怕的浅绿色调,我发现它非常难以阅读,而且我希望我的变量名不要与前导$和$$等一起被涂成红色。大部分都只是分散注意力。
4个回答

8

按下M-x customize-group RET cperl-faces RET,将颜色更改为您喜欢的颜色。


这并不完全涵盖所有内容,比如允许我防止颜色化前导字形,但看起来这已经是我能得到的最接近的了,谢谢。 - Zed

2
使用颜色主题时,问题仅限于数组和哈希 - 这是因为cperl-mode将这些面定义为粗体,而颜色主题似乎不受影响(Solarized没有)。在Mac OS上的Emacs 23.3中,以下操作将颜色恢复为颜色主题定义的方式:
(custom-set-faces
 '(cperl-array-face ((t (:weight normal))))
 '(cperl-hash-face ((t (:weight normal))))
)

1

您也可以使用“真正的”perl-mode着色,通过覆盖 font-lock 设置为 perl-mode 的设置来实现。

(require 'perl-mode)

(add-hook 'cperl-mode-hook
          (lambda ()
            (setq font-lock-defaults
                  '((perl-font-lock-keywords perl-font-lock-keywords-1 perl-font-lock-keywords-2)
                    nil nil ((?\_ . "w")) nil
                    (font-lock-syntactic-face-function . perl-font-lock-syntactic-face-function)))
            (font-lock-refresh-defaults)))

0

如果您不喜欢特定的默认颜色,可以更改 色彩主题


这并没有帮助。ColorTheme似乎会改变除cperl-mode使用的颜色之外的所有颜色,它也不会改变前导符号的着色,并且似乎不是特别可配置的。但还是谢谢你的想法。 - Zed
cperl-mode 的问题似乎仅限于数组和哈希 - 至少当我尝试使用 Solarize (http://ethanschoonover.com/solarized) 时,那是唯一颜色未被覆盖的区域。 - Sam Kington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接