5

我想在 Sublime Text 2 中区分 Python 文档字符串和单行字符串。查看 Python 语言定义,我可以看到这一点,以及使用相同 comment.block.python 名称的撇号字符串的匹配定义.

<dict>
    <key>begin</key>
    <string>^\s*(?=[uU]?[rR]?""")</string>
    <key>end</key>
    <string>(?&lt;=""")</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>

什么都没发生; 它们保持与单行字符串相同的颜色。

是否有可能做到这一点?如果是这样,我做错了什么?

4

2 回答 2

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>

我只是简单地测试了它,但它似乎有效。

于 2012-12-28T08:33:16.647 回答
0

我认为这Python.tmLanguage有一个小错误。这是文档字符串的修复,虽然我不确定它是否是一个不错的修复:

  • 将文档字符串键替换为:

    <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>(?&lt;=''')</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>
    

这应该自动使文档字符串成为注释。

于 2013-09-01T23:24:02.113 回答