cperl模式下的Emacs漂亮符号:::必须被我的空格包围

cperl模式下的Emacs漂亮符号:::必须被我的空格包围,emacs,pde,cperl-mode,Emacs,Pde,Cperl Mode,我正在使用带有PDE和cperl模式的Emacs。我真的很想用它来美化符号模式。仅使用perl模式时,会发生以下情况: Mod::thing->new( {c => 'sea'} ); 变成 Mod∷thing→new( {c ⇒ 'sea'} ); 但是,当使用cperl时,相同的表达式变为 Mod::thing→new( {c ⇒ 'sea'} ); 在cperl模式下,:仅变为∷当其两侧用空格分隔时 我已经尝试添加到cperl中——漂亮符号列表和漂亮符号列表。而且仍然只有

我正在使用带有PDE和cperl模式的Emacs。我真的很想用它来美化符号模式。仅使用perl模式时,会发生以下情况:

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

Mod∷thing→new( {c ⇒ 'sea'} );
但是,当使用cperl时,相同的表达式变为

Mod::thing→new( {c ⇒ 'sea'} );
在cperl模式下,
仅变为
当其两侧用空格分隔时

我已经尝试添加到cperl中——漂亮符号列表和漂亮符号列表。而且仍然只有
->
=>
工作


我想这可能是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行编辑为
(修改语法条目?:“”cperl mode语法表)
,而不是
(修改语法条目?:“”cperl mode语法表)
。然后我用字节编译了文件并将其放回
/usr/share/emacs/26.1/lisp/progmodes

您也可以在init文件中执行此操作,这样就不必编辑Emacs附带的任何文件。如果编辑属于Emacs的文件,则每次安装或升级时都需要更新它们

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

这是因为
cperl模式
在其语法表中为
字符提供了语法“符号成分”,而
perl模式
为其提供了语法“标点符号”。我可以将其更改为其他形式吗?要做到这一点,elisp代码是什么?