如何更改Emacs中Python文档字符串的字体样式?
我刚开始学习Python,并且用Emacs作为我的编辑器。目前,Emacs对普通字符串(用单引号表示)和文档字符串(用三重引号表示)使用的是相同的颜色。我希望文档字符串能有不同的颜色,所以我通过“选项->自定义Emacs”这个菜单,改变了'font-lock-doc-face'的颜色,并保存了更改。然而,Emacs还是把文档字符串和普通字符串显示成一样的颜色。改变普通字符串的颜色时,文档字符串的颜色也跟着变。
看起来Emacs把文档字符串和普通字符串当成了一样的东西。有没有办法让Emacs能够正确区分并给Python的文档字符串上不同的颜色呢?
补充:我使用的是Emacs 23.1.1(Kubuntu 10.10的版本),并且使用的是默认的Python模式设置。我还使用了color-theme这个插件,主题是午夜主题。
2 个回答
我成功做到了这一点:
我通过输入 M-x customize-face
然后输入 font-lock-doc-face
来实现的。
它们两个颜色相同的原因是因为 font-lock-doc-face
是从 font-lock-string-face
继承过来的:
我把 font-lock-string-face
更新成了 font-lock-comment-face
(因为我喜欢我的文档字符串和注释有相同的颜色)。你也可以这样做,或者选择“显示所有属性”来选择你自己的颜色。
有趣。我本来想说,由于emacs的语法表的工作方式,emacs认为"""
和'''
代表一个空字符串后面接着一个新字符串的开始。
你可以很简单地在你的emacs里验证这一点,只需把下面的代码粘贴到一个python的编辑窗口中:
class MrsRobinson(object):
'''
What's that you say?
'''
pass
在emacs 23.1.1版本中[更新:显然在stackoverflow上也是如此!]这会完全破坏文件其余部分的语法高亮显示。
我总是使用"""
来避免在文档字符串中出现撇号的问题,所以直到刚刚我才注意到在emacs 23.2.1中,这个问题似乎终于被修复了……
(没错,python.el中有一个新函数叫python-quote-syntax
)
所以:在你当前的emacs版本中,这是不可能的,因为字符串没有被正确解析。如果你升级到最新的emacs,你可能可以通过修改python.el中的那个函数来让它以不同的方式处理这些字符串。