cperl模式下的Emacs Pretty Symbols ::必须被我的空格包围

时间:2019-04-23 22:56:06

标签: emacs elisp pde cperl-mode

我将Emacs与PDE和cperl-mode一起使用。我真的很希望prettify-symbols-mode可以使用它。仅在使用perl模式时会发生这种情况:

Mod::thing->new( {c => 'sea'} );

成为

Mod∷thing→new( {c ⇒ 'sea'} );

但是当使用cperl时,相同的表达式变为

Mod::thing→new( {c ⇒ 'sea'} );

在cperl模式下,::仅在两侧用空格隔开时才变为

我曾尝试添加到cperl中-漂亮符号警报器和漂亮符号警报器。仍然只有->=>有效。

我认为这可能是cperl将字符定义为符号或单词的方式,但是->=>可以很好地工作而不会被空格包围。

2 个答案:

答案 0 :(得分:1)

我明白了。我去/usr/share/emacs/26.1/lisp/progmodes并删除了一个名为cperl-mode.elc的文件。然后我在这里/usr/share/emacs/26.1/lisp/progmodes/cperl-mode.el.gz进入了Archinve。我将cperl-mode.el的第1498行编辑为(modify-syntax-entry ?: "." cperl-mode-syntax-table),而不是(modify-syntax-entry ?: "_" cperl-mode-syntax-table)。然后,我对该文件进行字节编译,然后将其放回/usr/share/emacs/26.1/lisp/progmodes中。

答案 1 :(得分:1)

您也可以在init文件中执行此操作,因此您无需编辑Emacs随附的任何文件。如果您编辑Emacs中的文件,则每次安装或升级时都需要对其进行更新。

(with-eval-after-load "cperl-mode"
  (modify-syntax-entry ?: "." cperl-mode-syntax-table))
相关问题