有没有办法使用Pygments(或其他库)突出显示函数调用?

时间:2017-09-19 09:30:47

标签: python syntax-highlighting tokenize lexer pygments

我发现函数调用未使用Pygments突出显示,我感到非常失望。

Pygments Syntax Highlighting

See it online(我用所有可用的样式测试过它)

内置函数突出显示但不是我的。

我查看the tokens list,但没有提及“函数调用”或“对象属性”等。

我考虑通过添加像\w+\(.*?\)这样的正则表达式规则来扩展词法分析器。但是由于我没有想到的边缘情况,我担心会增加误差。

你知道为什么这个功能没有直接在Pygments中实现吗?

1 个答案:

答案 0 :(得分:0)

如果您有要突出显示的特定函数列表,您可以添加自定义突出显示器,如内置 NumPyLexer

from pygments.lexers.python import PythonLexer
from pygments.token import Keyword, Name, String

class MyFuncLexer(PythonLexer):
    name = 'MyFuncPython'
    aliases = ['myfuncpython']

    # override the mimetypes to not inherit them from python
    mimetypes = []
    filenames = []

    EXTRA_KEYWORDS = {
        'func'
    }

    def get_tokens_unprocessed(self, text):
        for index, token, value in \
                PythonLexer.get_tokens_unprocessed(self, text):
            if token is Name and value in self.EXTRA_KEYWORDS:
                yield index, Keyword.Pseudo, value
            else:
                yield index, token, value