Javascript 如何在tmLanguage文件中添加另一个要解析为嵌入式JS的标记? 背景故事(不是很重要,但它勾勒出了问题的框架)
我在JSP中有一个TagLib,它接受其内容并将其包含的代码包装在脚本块中(它做的更多,但为了解决这个问题,它并不重要)。例如:Javascript 如何在tmLanguage文件中添加另一个要解析为嵌入式JS的标记? 背景故事(不是很重要,但它勾勒出了问题的框架),javascript,textmate,taglib,sublimetext,Javascript,Textmate,Taglib,Sublimetext,我在JSP中有一个TagLib,它接受其内容并将其包含的代码包装在脚本块中(它做的更多,但为了解决这个问题,它并不重要)。例如: <aui:script use="some-module"> //my code </aui:script> //我的代码 将作为 <script type="text/javascript> AUI().use('sub-module', function(A) { // my code
<aui:script use="some-module">
//my code
</aui:script>
//我的代码
将作为
<script type="text/javascript>
AUI().use('sub-module', function(A) {
// my code
}
</script>
我在使用正则表达式规则时遇到了很多麻烦,但我还是设法使用普通规则使它在某种程度上正常工作。我应该补充一点,这是一个新的区块,与常规区块一样
{
name = 'source.js.embedded.html';
begin = '(?:^\s+)?(<)((?i:(aui[\:]script)))\b(?![^>]*/>)';
end = '(?<=</(aui[\:]script))(>)(?:\s*\n)?';
beginCaptures = {
1 = { name = 'punctuation.definition.tag.html'; };
2 = { name = 'entity.name.tag.script.html'; };
};
endCaptures = {
2 = {
name = 'punctuation.definition.tag.html';
};
};
patterns = (
{
include = '#tag-stuff';
},
{
begin = '(?<!</(?:aui[\:]script))(>)';
end = '(</)((?i:aui[\:]script))';
captures = {
1 = {
name = 'punctuation.definition.tag.html';
};
2 = {
name = 'entity.name.tag.script.html';
};
};
patterns = (
{ name = 'comment.line.double-slash.js';
match = '(//).*?((?=</(aui[\:]script))|$\n?)';
captures = {
1 = {
name = 'punctuation.definition.comment.js';
};
};
},
{
name = 'comment.block.js';
begin = '/\*';
end = '\*/|(?=</(aui[\:]script))';
captures = {
0 = {
name = 'punctuation.definition.comment.js';
};
};
},
{
include = '#php';
},
{
include = 'source.js';
},
);
},
);
}
{
name='source.js.embedded.html';
begin='(?:^\s+)(]*/>);
end='(?我在使用正则表达式规则时遇到了很多麻烦,但我还是设法使用普通规则使它在某种程度上正常工作。我应该补充一点,这是一个新的块,与常规块一样
{
name = 'source.js.embedded.html';
begin = '(?:^\s+)?(<)((?i:(aui[\:]script)))\b(?![^>]*/>)';
end = '(?<=</(aui[\:]script))(>)(?:\s*\n)?';
beginCaptures = {
1 = { name = 'punctuation.definition.tag.html'; };
2 = { name = 'entity.name.tag.script.html'; };
};
endCaptures = {
2 = {
name = 'punctuation.definition.tag.html';
};
};
patterns = (
{
include = '#tag-stuff';
},
{
begin = '(?<!</(?:aui[\:]script))(>)';
end = '(</)((?i:aui[\:]script))';
captures = {
1 = {
name = 'punctuation.definition.tag.html';
};
2 = {
name = 'entity.name.tag.script.html';
};
};
patterns = (
{ name = 'comment.line.double-slash.js';
match = '(//).*?((?=</(aui[\:]script))|$\n?)';
captures = {
1 = {
name = 'punctuation.definition.comment.js';
};
};
},
{
name = 'comment.block.js';
begin = '/\*';
end = '\*/|(?=</(aui[\:]script))';
captures = {
0 = {
name = 'punctuation.definition.comment.js';
};
};
},
{
include = '#php';
},
{
include = 'source.js';
},
);
},
);
}
{
name='source.js.embedded.html';
begin='(?:^\s+)(]*/>);
end='(?我还为那些需要该格式的人添加了一个XML版本。你说的“这是一个新块”是什么意思?你是说它被添加到HTML.tmLanguage
文件的某个地方?我还为那些需要该格式的人添加了一个XML版本。你说的“这是一个新块”是什么意思?您的意思是这会添加到HTML.tmLanguage
文件的某个地方吗?