我想在Sublime Text 2中区分Python文档字符串和单行字符串。查看Python语言定义,我可以看到这一点,以及使用相同comment.block的撇号字符串的匹配定义。 .python名称。
<dict>
<key>begin</key>
<string>^\s*(?=[uU]?[rR]?""")</string>
<key>end</key>
<string>(?<=""")</string>
<key>name</key>
<string>comment.block.python</string>
...
但是当我创建一个像这样的新颜色规则时:
<dict>
<key>name</key>
<string>Docstring</string>
<key>scope</key>
<string>comment.block.python</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#008800</string>
</dict>
</dict>
什么都没发生;它们的颜色与单行字符串相同。
有可能这样做吗?如果是这样,我做错了什么?
答案 0 :(得分:3)
也许改为:
<dict>
<key>name</key>
<string>Docstring</string>
<key>scope</key>
<string>string.quoted.double.block.python</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#008800</string>
</dict>
</dict>
我只是简单地测试了一下,但似乎有效。
答案 1 :(得分:0)
我认为Python.tmLanguage
有一点错误。这是文档字符串的修复,虽然我不确定它是否是一个很好的:
将docstrings键替换为:
<key>docstrings</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>begin</key>
<string>^\s*([uU]?[rR]?""")</string>
<key>end</key>
<string>(""")</string>
<key>name</key>
<string>comment.block.python</string>
</dict>
<dict>
<key>begin</key>
<string>^\s*(?=[uU]?[rR]?''')</string>
<key>end</key>
<string>(?<=''')</string>
<key>name</key>
<string>comment.block.python</string>
</dict>
</array>
</dict>
将单个dict添加为string_quoted_double
和string_quoted_single
的第一个数组
<key>string_quoted_double</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#docstrings</string>
</dict>
这应该会自动使文档字符串成为注释。