4

我希望能够找到一种方法来用不同的颜色为 python中的函数调用名称着色。此行为适用于 C 语言,但不适用于 Python。这就是为什么我认为应该可以做到。

编辑:

我不是在寻找特定的配色方案语法,而是在寻找我必须添加到 Python.tmLanguage 中的特定行。

在尝试了 jdi 的建议后,我得到了这个:

在此处输入图像描述

我想要的只是数组颜色不同,而不是括号、对象调用方法等......

4

2 回答 2

4

您将需要编辑现有主题,或复制一个,修改它,然后设置为...然后您可以在底部添加类似这样的内容:

<dict>
    <key>name</key>
    <string>Function call</string>
    <key>scope</key>
    <string>meta.function-call - punctuation - meta.function-call.arguments</string>
    <key>settings</key>
    <dict>
        <key>foreground</key>
        <string>#FF0000</string>
    </dict>
</dict>

这采用函数调用模式,并减去调用括号的子集,只留下名称。

默认主题位于:Packages/Color Scheme - Default

突出显示的文本示例

于 2012-08-16T01:52:53.443 回答
1

这是我到目前为止所拥有的,它并不完美,但它有点工作:

我从捆绑在每个 ST2 中的 C.tmLanguage 文件中获取了这部分内容,并添加了一些内容,以便它可以与 Python.tmLanguage 文件中定义的 Python 中的一些默认函数不同的颜色:

    <dict>
        <key>captures</key>
        <dict>
            <key>1</key>
            <dict>
                <key>name</key>
                <string>punctuation.whitespace.function-call.leading.python</string>
            </dict>
            <key>2</key>
            <dict>
                <key>name</key>
                <string>support.function.any-method.python</string>
            </dict>
            <key>3</key>
            <dict>
                <key>name</key>
                <string>punctuation.definition.parameters.python</string>
            </dict>
        </dict>
        <key>match</key>
        <string>(?x) (?: (?= \s )  (?:(?&lt;=else|new|return) | (?&lt;!\w)) (\s+))?
(\b
    (?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate|
        __import__|all|abs|any|apply|callable|chr|cmp|coerce|compile|delattr|dir|
        divmod|eval|execfile|filter|getattr|globals|hasattr|hash|hex|id|
        input|intern|isinstance|issubclass|iter|len|locals|map|max|min|oct|
        ord|pow|range|raw_input|reduce|reload|repr|round|setattr|sorted|
        sum|unichr|vars|zip|basestring|bool|buffer|classmethod|complex|dict|enumerate|file|
        float|frozenset|int|list|long|object|open|property|reversed|set|
        slice|staticmethod|str|super|tuple|type|unicode|xrange|
        abs|add|and|call|cmp|coerce|complex|contains|del|delattr|
        delete|delitem|delslice|div|divmod|enter|eq|exit|float|
        floordiv|ge|get|getattr|getattribute|getitem|getslice|gt|
        hash|hex|iadd|iand|idiv|ifloordiv|ilshift|imod|imul|init|
        int|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|le|len|
        long|lshift|lt|mod|mul|ne|neg|new|nonzero|oct|or|pos|pow|
        radd|rand|rdiv|rdivmod|repr|rfloordiv|rlshift|rmod|rmul|ror|
        rpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem|
        setslice|str|sub|truediv|unicode|xor
    )\s*\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\b | :: )++                  # actual name
)
 \s*(\()</string>
        <key>name</key>
        <string>meta.function-call.python</string>
    </dict>

这就是使用 Monokai Bright 主题输出的样子,虽然它非常微妙,但您可以注意到它open的格式与array.

在此处输入图像描述

于 2012-08-19T22:49:46.160 回答