我为我的文档项目创建了一个自定义指令,该指令是使用Sphinx和reStructuredText构建的。该指令使用如下:
.. xpath-try:: //xpath[@expression="here"]
这会将XPath表达式呈现为一个简单的代码块,但添加了一个链接,用户可以单击该链接以针对示例XML文档执行表达式并查看匹配项(example link,示例{{ 3}})。
我的指令指定它没有内容,接受一个必需参数(xpath表达式)并识别几个选项:
class XPathTryDirective(Directive):
has_content = False
required_arguments = 1
optional_arguments = 0
final_argument_whitespace = True
option_spec = {
'filename': directives.unchanged,
'ns_args': directives.unchanged,
}
def run(self):
xpath_expr = self.arguments[0]
node = xpath_try(xpath_expr, xpath_expr)
...
return [node]
除了如果XPath表达式包含*
之外,所有似乎完全按预期工作,那么我的编辑器(gVim)中的语法高亮显示变得非常混乱。如果我用反斜杠转义*
,那么这会让我的编辑感到高兴,但输出中会出现反斜杠。
我的问题是:
这似乎是一个小问题,但由于我是第一个新手,我发现突出显示非常有帮助。
答案 0 :(得分:1)
指令的参数中的特殊字符是否应该被转义?
不,我认为没有对第一个指令的参数进行额外的处理。哪个符合您的观察结果:无论您指定什么作为指令的参数,您都可以通过self.arguments[0]
直接获取。
或者它是否正常工作,唯一的问题是我的编辑器未能正确突出显示内容?
是的,似乎是这种情况。字符*
在第一次用于强调/斜体,并且由于某种原因它在语法突出显示期间得到更多关注。
这意味着这里的解决方案是调整或修复restructuredtext的vim语法文件。