8

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

似乎 Emacs 将文档字符串和普通字符串视为相同。有没有办法让 Emacs 与普通字符串分开正确地查找和着色 Python 文档字符串?

编辑:我正在使用具有默认 Python 模式设置的 Emacs 23.1.1(Kubuntu 10.10 包)。我还将 color-theme 包与午夜主题一起使用。

4

2 回答 2

2

有趣的。我要说的是,由于 emacs 语法表的工作方式,emacs 认为"""'''表示一个空字符串,然后是一个新字符串的开头。

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

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

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

我总是"""专门使用来避免文档字符串中的撇号问题,所以直到这一刻我才注意到在 emacs 23.2.1 中,这终于以某种方式修复了......

python-quote-syntax(是的,在 python.el 中调用了一个新函数)

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

于 2011-02-27T03:53:50.857 回答
1

我能够做到这一点:

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

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

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

于 2021-04-24T20:30:22.303 回答