我試圖讓 VSCode 在我正在撰寫的擴展中使用嵌入式語言的語法突出顯示。
就像 Razor 一樣,我希望 c# 代碼在@{和之間突出顯示}。
在我package.json的部分中,我有以下contributes內容:
"languages": [
{
"id": "csasm",
"aliases": ["CS Asm", "csasm"],
"extensions": [".csasm"],
"configuration": "./language-configuration.csasm.json"
}],
"grammars": [
{
"language": "csasm",
"scopeName": "source.csasm",
"path": "./syntaxes/csasm.tmLanguage.json",
"embeddedLanguages": {
"meta.embedded.block.csharp" : "csharp"
}
}]
和csasm.tmLanguage.json檔案:
{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "CS Asm",
"patterns": [
{
"include":"#csasm"
}
],
"repository": {
"csasm" :{
"patterns": [{
"name" : "meta.embedded.block.csharp",
"begin": "@{",
"end": "}",
}]
}
},
"scopeName": "source.csasm"
}
我的理解是 和 的匹配@{會}用 來標記這些行meta.embedded.block.csharp,它鏈接到embeddedLanguages中的project.json,但情況似乎并非如此。
我找不到該embeddedLanguages標簽的任何示例。(我試過搜索 Razor 是如何實作這一點的,但他們似乎有一個合適的語言服務器?)
我什至找不到除錯問題的方法。
我怎樣才能讓它embeddedLanguages作業?或者失敗了,我該如何除錯呢?
編輯:更改了語言檔案csasm,如下所示并洗掉了該embeddedLanguages部分。
"patterns": [{
"name" : "meta.embedded.block.csharp",
"begin": "@{",
"end": "}",
"patterns" : [{
"include" : "source.csharp"
}]
},
仍然沒有使用 c# 的樂趣。我會打開另一個問題。
uj5u.com熱心網友回復:
可以在此處找到 reStructuredText 語言的作業示例,
https://github.com/trond-snekvik/vscode-rst/blob/v1.5.1/syntaxes/rst.tmLanguage.json#L284
語法規則 ( domain-cpp) 捕獲一個文本塊,然后將其中的一部分標記為 C/C 源代碼 ( source.cpp)。
然后 VSCode 足夠聰明,可以使用 C/C 語法突出顯示嵌入部分,而您不需要embeddedLanguages在project.json.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/414216.html
標籤:
