Sublime可以将Python文档字符串与单行字符串区别开来吗?

时间:2012-10-02 20:41:34

标签: python sublimetext2 docstring

我想在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>

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

有可能这样做吗?如果是这样,我做错了什么?

2 个答案:

答案 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>(?&lt;=''')</string>
                <key>name</key>
                <string>comment.block.python</string>
            </dict>
        </array>
    </dict>
    
  • 将单个dict添加为string_quoted_doublestring_quoted_single的第一个数组

    <key>string_quoted_double</key>
    <dict>
        <key>patterns</key>
        <array>
            <dict>
                <key>include</key>
                <string>#docstrings</string>
            </dict>
    

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