【问题标题】:Is there a way to highlight function calls using Pygments (or another library)?有没有办法使用 Pygments(或其他库)突出显示函数调用?
【发布时间】:2017-09-19 09:30:46
【问题描述】:
我很失望地发现没有使用 Pygments 突出显示函数调用。
See it online(我用所有可用的样式对其进行了测试)
突出显示了内置函数,但不是我的。
我查看了the tokens list,但没有提到例如“函数调用”或“对象属性”。
我考虑过通过添加像\w+\(.*?\) 这样的正则表达式规则来扩展词法分析器。但是由于我没有想到的极端情况,我害怕增加错误。
你知道为什么这个功能没有直接在 Pygments 中实现吗?
【问题讨论】:
标签:
python
syntax-highlighting
tokenize
lexer
pygments
【解决方案1】:
如果您有想要突出显示的特定功能列表,您可以添加自定义荧光笔,如内置 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