我刚刚开始学习Python并使用Emacs作为我的编辑器。目前,Emacs对普通字符串(单引号)和文档字符串(三引号)使用相同的颜色。我希望docstrings是一种不同的颜色,所以我使用'Options-> Customize Emacs'菜单选项将'font-lock-doc-face'更改为新颜色并保存更改。但是,Emacs继续保持文档字符串与普通字符串相同的颜色。更改普通字符串的颜色也会将更改应用于文档字符串。
似乎Emacs将docstrings和普通字符串视为相同。有没有办法让Emacs能够正常地从正常字符串中找到并着色Python文档字符串?
编辑:我正在使用Emacs 23.1.1(Kubuntu 10.10软件包)和默认的Python模式设置。我还使用了带有午夜主题的颜色主题包。
答案 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
(因为我更喜欢我的文档字符串与我的评论具有相同的颜色)。您可以执行相同操作或选择“显示所有属性”来选择您自己的属性