Skip to content

jlelong/vscode-extend-language

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Utility to extend languages in VS Code

Currently, it is not possible to build a new language as an extension of an existing one, the language-configuration.json file must be self-contained. This can lead to tedious maintenance as changes to the base language have to be forwarded manually. This package aims at helping language developers.

Assume you wand to derive a new language configuration from A-language-configuration.json, you just need to define a file let us say B.extension.language-configuration.json containing

{
    "extends": "path/to/A-language-configuration.json",
    "overrides": {
        "comments": {
            "blockComment": [
                "<!--",
                "-->"
            ]
        },
        "surroundingPairs": [
            ["{", "}"],
            ["[", "]"],
            ["(", ")"],
            ["\"", "\""],
            ["'", "'"],
            ["$", "$"],
            ["`", "`"],
            ["_", "_"],
            ["*", "*"]
        ],
    },
    "folding": {
        "offSide": true,
        "markers": {
            "start": "^\\s*<!--\\s*#?region\\b.*-->",
            "end": "^\\s*<!--\\s*#?endregion\\b.*-->"
        }
    }
}
  • extends means that language B is based on the language configuration of language A. path/to/A-language-configuration.json can either be a relative local path to A-language-configuration.json or an url.
  • The overrides section allows to replace some settings of A-language-configuration.json by their new values in B.
  • Everything outside the overrides section is added to the B configuration. If the key already exists in A-language-configuration.json, it must be an array and in this case their contents are concatenated.

To obtain the self-contained language configuration file for B, B.language-configuration.json, use

const vel = require('vscode-extend-language')

vel.expandConfigurationFile('./B.extension.language-configuration.json', './B.language-configuration.json')

About

Generate a new language configuration file for VS Code by extending an existing one

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors