cperl 模式下的 Emacs Pretty Symbols::: 必须包围我的空间
Emacs Pretty Symbols in cperl mode: :: must be surrounded my spaces
我将 Emacs 与 PDE 和 cperl 模式结合使用。我真的很想使用 prettify-symbols-mode 来处理它。仅使用 perl-mode 时会发生这种情况:
Mod::thing->new( {c => 'sea'} );
变成
Mod∷thing→new( {c ⇒ 'sea'} );
然而当使用 cperl 时相同的表达式变成
Mod::thing→new( {c ⇒ 'sea'} );
在 cperl 模式下,::
只有在两边用空格分隔时才会变成 ∷
。
我已经尝试添加到 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))
我将 Emacs 与 PDE 和 cperl 模式结合使用。我真的很想使用 prettify-symbols-mode 来处理它。仅使用 perl-mode 时会发生这种情况:
Mod::thing->new( {c => 'sea'} );
变成
Mod∷thing→new( {c ⇒ 'sea'} );
然而当使用 cperl 时相同的表达式变成
Mod::thing→new( {c ⇒ 'sea'} );
在 cperl 模式下,::
只有在两边用空格分隔时才会变成 ∷
。
我已经尝试添加到 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))