Visual Studio Code 语言扩展继承现有

Kar*_*han 4 typescript visual-studio-code vscode-extensions

在 Visual Studio Code 中,只需提供一个语法文件,例如通过 JSON,就可以相对容易地添加您自己的语言扩展。

我想为我使用的特定脚本语言提供一个语法文件。脚本语言嵌入在 ARM 汇编源代码中,已经存在一个插件。所以我基本上想通过我的脚本语言来扩展 ARM 扩展。目前可以吗?

在我的情况下,这将是 IMO 的方法,因为如果我只是复制现有的扩展(这是 MIT 许可的),我实际上会创建一个硬分叉,我不打算这样做。

idl*_*erg 8

1. 注射

您可以通过将以下内容添加到您的package.json:

"contributes": {
    "grammars": [
        {
            "scopeName": "source.asm.x86_64.your_syntax_extension",
            "path": "./syntaxes/your_syntax_extension.json",
            "injectTo": [ "source.asm.x86_64" ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

2. 包括

如果您的语言扩展使用自定义文件类型,或者您想要覆盖某些父作用域的语法定义,您可以编写自己的定义并包含父作用域。您可以使用以下任一格式:

your_syntax_extension.json

{
  "fileTypes": [
    "myExtension"
  ],
  "name": "Your Syntax Extension",
  "patterns": [
    {
      "include": "source.asm.x86_64"
    }
  ],
  "scopeName": "source.asm.x86_64.your_syntax_extension"
}
Run Code Online (Sandbox Code Playgroud)

your_syntax_extension.tmLanguage

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>fileTypes</key>
    <array>
        <string>myExtension</string>
    </array>
    <key>name</key>
    <string>Your Syntax Extension</string>
    <key>patterns</key>
    <array>
        <dict>
            <key>include</key>
            <string>source.asm.x86_64</string>
        </dict>
    </array>
    <key>scopeName</key>
    <string>source.asm.x86_64.your_syntax_extension</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,您可能希望将扩展包作为依赖项包含在内。为此,请将其唯一标识符添加到您的package.json:

"extensionDependencies": [
    "13xforever.language-x86-64-assembly"
]
Run Code Online (Sandbox Code Playgroud)