【发布时间】:2012-12-13 16:58:11
【问题描述】:
我正在为 DocBook 5 XML 制作一个捆绑包,其中经常包含以下内容:
<section>
<title>This is my awesome Java Class called <classname>FunBunny</classname></title>
<para>FunBunny is your friend.</para>
</section>
我希望部分的标题出现在窗口底部的功能弹出窗口中。我使用以下捆绑项目部分工作。
语言语法:
{ patterns = (
{ name = 'meta.tag.xml.docbook5.title';
match = '<title>(.*?)</title>';
/* patterns = ( { include = 'text.xml'; } ); */
},
{ include = 'text.xml'; },
);
}
范围选择器meta.tag.xml.docbook5.title的设置/首选项项目:
{ showInSymbolList = 1;
symbolTransformation = 's/^\s*<title\s?.*?>\s*(.*)\s*<\/title>/$1/';
}
这样做的最终效果是文档中的所有标题元素都匹配并出现在函数弹出窗口中,不包括基于symbolTransformation的<title></title>标签内容。
我会对这么多功能感到满意,因为其他有趣的东西(比如人物)往往有正式的标题,但有一个问题。
title 标记的内容不会根据text.xml 语言语法的其余部分进行解析和识别。上述语言语法中被注释掉的patterns 部分并没有解决这个问题的预期效果——它将所有内容都放入meta.tag.xml.docbook5.title 范围内。
有没有办法在这里得到我想要的东西?也就是说,title 元素的内容,可选地仅用于 section 标题,在函数弹出窗口中和被解析器识别为正常的 XML 内容。
【问题讨论】:
标签: textmate textmatebundles textmate2