cperl模式中的Emacs Pretty Symbols:::必须包围我的空间

问题描述 投票:2回答:2

我正在使用带有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如何将字符定义为符号或单词,但->=>工作得很好而不被空格包围。

emacs elisp pde cperl-mode
2个回答
1
投票

我知道了。我去了/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中。


1
投票

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

(with-eval-after-load "cperl-mode"
  (modify-syntax-entry ?: "." cperl-mode-syntax-table))
© www.soinside.com 2019 - 2024. All rights reserved.