如何为Python文档字符串更改Emacs的字体?

时间:2011-02-26 22:14:12

标签: python emacs docstring emacs-faces

我刚刚开始学习Python并使用Emacs作为我的编辑器。目前,Emacs对普通字符串(单引号)和文档字符串(三引号)使用相同的颜色。我希望docstrings是一种不同的颜色,所以我使用'Options-> Customize Emacs'菜单选项将'font-lock-doc-face'更改为新颜色并保存更改。但是,Emacs继续保持文档字符串与普通字符串相同的颜色。更改普通字符串的颜色也会将更改应用于文档字符串。

似乎Emacs将docstrings和普通字符串视为相同。有没有办法让Emacs能够正常地从正常字符串中找到并着色Python文档字符串?

编辑:我正在使用Emacs 23.1.1(Kubuntu 10.10软件包)和默认的Python模式设置。我还使用了带有午夜主题的颜色主题包。

2 个答案:

答案 0 :(得分:1)

有趣。我说由于emacs语法表的工作方式,emacs认为"""'''表示一个新字符串开头的空字符串。< / p>

您可以通过将以下代码粘贴到python缓冲区中,轻松地在您的emacs副本中验证这一点:

class MrsRobinson(object):
    '''
    What's that you say?
    '''
    pass

在emacs 23.1.1 [更新:,显然在stackoveflow上!] ,这完全打破了文件其余部分的语法高亮显示。

我总是专门使用"""来避免文档字符串中的撇号问题,所以直到这一分钟我都没注意到在emacs 23.2.1中,这终于得到了解决...

(是的,python.el中有一个名为python-quote-syntax的新函数

所以:在你的emacs版本中,这是不可能的,因为没有正确解析字符串。如果您升级到最新的emacs,可能能够通过在python.el中修改该功能来实现它,以区别对待它们。

答案 1 :(得分:0)

我能够做到这一点:

通过执行 M-x customize-face 并输入:font-lock-doc-face

它们颜色相同的原因是font-lock-doc-face继承自font-lock-string-face

我将 font-lock-string-face 更新为 font-lock-comment-face(因为我更喜欢我的文档字符串与我的评论具有相同的颜色)。您可以执行相同操作或选择“显示所有属性”来选择您自己的属性