Rus*_*Rus 5 visual-studio-code vscode-extensions
我需要JavaScript在我的语言扩展中嵌入标准语言(例如)。这意味着我想在file.js. 我可以这样做吗(如何)?
感谢您提供任何示例!
语法突出显示很简单,只需包含要嵌入的语言的顶级范围即可。例如, Html用于"include": "source.js"在脚本块内添加 js 语法突出显示。
IntelliSense 的难度要大得多。再次,看看vscode的HTML扩展是做什么的。它基本上将 html 文件拆分为虚拟文档(一个用于脚本块,一个用于样式块,一个用于 html),然后嵌入每种语言所需的语言库以提供 IntelliSense。Vetur扩展也做了类似的事情。在这两种情况下,扩展程序都拥有顶级文档(html 或 vue),然后根据发出 IntelliSense 请求的位置委托给正确的嵌入式语言
小智 6
您可以使用附加语法继续嵌入式语言指南中的abc-lang示例:syntaxes/abc.tmLanguage.json
{
"scopeName": "source.abc",
"patterns": [ { "include": "#expression" } ],
"repository": {
"expression": {
"patterns": [
{ "include": "#letter" },
{ "include": "#paren-expression" },
{ "include": "#code" }
]
},
"letter": {
"match": "a|b|c",
"name": "keyword.letter"
},
"paren-expression": {
"begin": "\\(",
"end": "\\)",
"beginCaptures": {
"0": { "name": "punctuation.paren.open" }
},
"endCaptures": {
"0": { "name": "punctuation.paren.close" }
},
"name": "expression.group",
"patterns": [ { "include": "#expression" } ]
},
"code": {
"begin": "```js",
"end": "```",
"beginCaptures": {
"0": { "name": "punctuation.code.open" }
},
"endCaptures": {
"0": { "name": "punctuation.code.close" }
},
"name": "meta.embedded.block.javascript",
"patterns": [ { "include": "source.js" } ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |