如何更改Emacs中Python文档字符串的字体样式?

8 投票
2 回答
1754 浏览
提问于 2025-04-16 12:36

我刚开始学习Python,并且用Emacs作为我的编辑器。目前,Emacs对普通字符串(用单引号表示)和文档字符串(用三重引号表示)使用的是相同的颜色。我希望文档字符串能有不同的颜色,所以我通过“选项->自定义Emacs”这个菜单,改变了'font-lock-doc-face'的颜色,并保存了更改。然而,Emacs还是把文档字符串和普通字符串显示成一样的颜色。改变普通字符串的颜色时,文档字符串的颜色也跟着变。

看起来Emacs把文档字符串和普通字符串当成了一样的东西。有没有办法让Emacs能够正确区分并给Python的文档字符串上不同的颜色呢?

补充:我使用的是Emacs 23.1.1(Kubuntu 10.10的版本),并且使用的是默认的Python模式设置。我还使用了color-theme这个插件,主题是午夜主题。

2 个回答

1

我成功做到了这一点:

我通过输入 M-x customize-face 然后输入 font-lock-doc-face 来实现的。

它们两个颜色相同的原因是因为 font-lock-doc-face 是从 font-lock-string-face 继承过来的:

我把 font-lock-string-face 更新成了 font-lock-comment-face(因为我喜欢我的文档字符串和注释有相同的颜色)。你也可以这样做,或者选择“显示所有属性”来选择你自己的颜色。

2

有趣。我本来想说,由于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中的那个函数来让它以不同的方式处理这些字符串。

撰写回答