【发布时间】:2012-07-09 22:09:03
【问题描述】:
我有一种类似 Lisp 的语言,我想在 Sphinx 代码 sn-p 文档中使用 Pygments 来强调一下。我的方法是扩展现有的 CommonLispLexer 以使用 NameHighlightFilter 添加内置名称。但是,它不起作用,所以我必须遗漏一些明显的东西。我在 conf.py 中添加了以下内容:
def setup(app):
from sphinx.highlighting import lexers
from pygments.lexers import CommonLispLexer
from pygments.token import Name
from pygments.filters import NameHighlightFilter
tl_lexer = CommonLispLexer()
tl_lexer.add_filter(NameHighlightFilter(
names=['define-function', 'define-macro',
'define-variable', 'define-constant'],
tokentype=Name.Builtin,
))
app.add_lexer('tl', tl_lexer)
highlight_language = 'tl'
但是 NameHighlightFilter 没有效果。代码块像 Lisp 一样突出显示,但我的新内置名称没有特殊突出显示。
【问题讨论】:
-
在交互式 Python 会话中运行此代码可确认过滤器未按预期工作。即使在如上所述调用
add_filter之后,define-function 仍然被标记为Name.Variable,而不是Name.Builtin。