我正在使用带有PDE和cperl模式的Emacs。我真的想用美化符号模式来处理它。当只使用perl-mode时会发生这种情况:
Mod::thing->new( {c => 'sea'} );
变
Mod∷thing→new( {c ⇒ 'sea'} );
但是当使用cperl时,同样的表达式变成了
Mod::thing→new( {c ⇒ 'sea'} );
在cperl-mode中,当::
被两侧的空格隔开时,它才变成∷
。
我已经尝试添加到cperl - pretty-symbols-alist和pretty-symbols-alist。仍然只有->
和=>
工作。
我认为可能是cperl如何将字符定义为符号或单词,但->
和=>
工作得很好而不被空格包围。
我知道了。我去了/usr/share/emacs/26.1/lisp/progmodes
并删除了一个名为cperl-mode.elc的文件。然后我在这里进入了一个拱门/usr/share/emacs/26.1/lisp/progmodes/cperl-mode.el.gz
。我编辑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
中。
您也可以在init文件中执行此操作,这样就不必编辑Emacs附带的任何文件。如果您编辑属于Emacs的文件,则每次安装或升级时都需要更新它们。
(with-eval-after-load "cperl-mode"
(modify-syntax-entry ?: "." cperl-mode-syntax-table))