使Emacs美化符号模式适用于非空白分隔的单词。

时间:2014-06-27 14:53:21

标签: emacs elisp

Emacs中新的美化符号模式可以很好地用于翻译:

lambda something -> λ something

我也想:

lambda.something -> λsomething

可悲的是,美化符号模式默认只将空格识别为字/符号分隔符。

关于如何使用'。'的任何想法作为代币分隔符?

2 个答案:

答案 0 :(得分:2)

执行替换的代码是prettify-symbols--compose-symbol中的prog-mode.el。如果单词之前或之后的字符具有字符类型 word symbol ,则排除匹配。在许多模式中,例如emacs-lisp-mode .字符具有符号类型。

您可以在主要模式下更改.的语法代码,您可以告诉font-lock在突出显示时使用不同的字符代码(有关详细信息,请参阅变量font-lock-defaults),或者您可以在prettify-symbols--compose-symbol模式下执行ju-jutsu,例如使用defadvice进行修改,或者只需将其替换为您自己的模式。

答案 1 :(得分:2)

感谢Lindydancer,我最终做到了这一点:

(add-hook 'python-mode-hook
          (lambda ()
            (push '("self" . ?◎) prettify-symbols-alist)
            (modify-syntax-entry ?. ".")))

导致合理的折衷输出:

◎.method