{"id":13459062,"url":"https://github.com/wooorm/starry-night","last_synced_at":"2025-05-14T17:05:18.292Z","repository":{"id":37623564,"uuid":"490836894","full_name":"wooorm/starry-night","owner":"wooorm","description":"Syntax highlighting, like GitHub","archived":false,"fork":false,"pushed_at":"2025-03-17T13:23:24.000Z","size":6874,"stargazers_count":1563,"open_issues_count":1,"forks_count":34,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-05-14T17:03:13.104Z","etag":null,"topics":["ast","code","github","gogh","highlight","highlighting","linguist","prettylights","syntax","treelights","virtual"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wooorm.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":null,"funding":"funding.yml","license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"wooorm"}},"created_at":"2022-05-10T19:38:01.000Z","updated_at":"2025-05-14T11:22:06.000Z","dependencies_parsed_at":"2023-01-31T11:46:18.842Z","dependency_job_id":"1186565c-173e-4bc8-8076-0df2e3453775","html_url":"https://github.com/wooorm/starry-night","commit_stats":{"total_commits":139,"total_committers":4,"mean_commits":34.75,"dds":"0.021582733812949617","last_synced_commit":"fbfa7f9c640b09da4a445298734447f5f01c1c46"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wooorm%2Fstarry-night","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wooorm%2Fstarry-night/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wooorm%2Fstarry-night/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wooorm%2Fstarry-night/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wooorm","download_url":"https://codeload.github.com/wooorm/starry-night/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254190396,"owners_count":22029632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ast","code","github","gogh","highlight","highlighting","linguist","prettylights","syntax","treelights","virtual"],"created_at":"2024-07-31T09:01:02.220Z","updated_at":"2025-05-14T17:05:18.226Z","avatar_url":"https://github.com/wooorm.png","language":"JavaScript","funding_links":["https://github.com/sponsors/wooorm"],"categories":["JavaScript","Syntax highlighting"],"sub_categories":["Self-hosted"],"readme":"[![](media/cover-dark.jpg)](https://artsandculture.google.com/asset/the-starry-night/bgEuwDxel93-Pg#gh-dark-mode-only)\n[![](media/cover-light.jpg#gh-dark-mode-only)](https://artsandculture.google.com/asset/the-starry-night/bgEuwDxel93-Pg#gh-light-mode-only)\n\n\u003cp align=\"center\"\u003eClose up of \u003cb\u003eThe Starry Night\u003c/b\u003e by Vincent van Gogh (1889)\u003cbr\u003ewith examples of \u003ccode\u003estarry-night\u003c/code\u003e over it\u003c/p\u003e\n\n\u003cbr\u003e\n\n# starry-night\n\n[![Build][badge-build-image]][badge-build-url]\n[![Coverage][badge-coverage-image]][badge-coverage-url]\n[![Downloads][badge-downloads-image]][badge-downloads-url]\n[![Size][badge-size-image]][badge-size-url]\n\nSyntax highlighting,\nlike what GitHub uses to highlight code,\nbut free and open source and JavaScript!\n\n## Contents\n\n* [What is this?](#what-is-this)\n* [When should I use this?](#when-should-i-use-this)\n* [What is `PrettyLights`?](#what-is-prettylights)\n* [Install](#install)\n* [Use](#use)\n* [API](#api)\n  * [`all`](#all)\n  * [`common`](#common)\n  * [`createStarryNight(grammars[, options])`](#createstarrynightgrammars-options)\n  * [`starryNight.flagToScope(flag)`](#starrynightflagtoscopeflag)\n  * [`starryNight.highlight(value, scope)`](#starrynighthighlightvalue-scope)\n  * [`starryNight.missingScopes()`](#starrynightmissingscopes)\n  * [`starryNight.register(grammars)`](#starrynightregistergrammars)\n  * [`starryNight.scopes()`](#starrynightscopes)\n  * [`GetOnigurumaUrl`](#getonigurumaurl)\n  * [`Grammar`](#grammar)\n  * [`Options`](#options)\n* [Examples](#examples)\n  * [Example: serializing hast as html](#example-serializing-hast-as-html)\n  * [Example: using `starry-night` on the client](#example-using-starry-night-on-the-client)\n  * [Example: turning hast into react nodes](#example-turning-hast-into-react-nodes)\n  * [Example: adding line numbers](#example-adding-line-numbers)\n  * [Example: integrate with unified, remark, and rehype](#example-integrate-with-unified-remark-and-rehype)\n  * [Example: integrating with `markdown-it`](#example-integrating-with-markdown-it)\n* [Syntax tree](#syntax-tree)\n* [CSS](#css)\n* [Languages](#languages)\n* [Compatibility](#compatibility)\n* [Security](#security)\n* [Related](#related)\n* [Contribute](#contribute)\n* [License](#license)\n\n## What is this?\n\nThis package is an open source version of GitHub’s closed-source `PrettyLights`\nproject (more on that later).\nIt supports **600+ grammars** and its **extremely high quality**.\nIt uses TextMate grammars which are also used in popular editors\n(SublimeText, Atom, VS Code, \\\u0026c).\nThey’re heavy but high quality.\n\n## When should I use this?\n\n`starry-night` is a **high quality** highlighter\n(when your readers or authors are programmers,\nyou want this!)\nthat can support **tons of grammars**\n(from new things like MDX to much more!)\nwhich approaches how GitHub renders code.\n\nIt has a WASM dependency,\nand rather big grammars,\nwhich means that `starry-night` might be too heavy particularly in browsers,\nin which case [`lowlight`][github-lowlight] or [`refractor`][github-refractor]\nmight be more suitable.\n\nThis project is similar to the excellent [`shiki`][github-shiki],\nand it uses the same underlying dependencies,\nbut `starry-night` is meant to match GitHub in that it produces classes and\nworks with the CSS it ships,\nmaking it easier to add dark mode and other themes with CSS compared to inline\nstyles.\n\nFinally,\nthis package produces objects (an AST),\nwhich makes it useful when you want to perform syntax highlighting in a place\nwhere serialized HTML wouldn’t work or wouldn’t work well.\nFor example,\nwhen you want to show code in a CLI by rendering to ANSI sequences,\nwhen you’re using virtual DOM frameworks (such as React or Preact) so that\ndiffing can be performant,\nor when you’re working with [`hast`][github-hast] or [`rehype`][github-rehype].\n\nBundled,\nminified,\nand gzipped,\n`starry-night` and the WASM binary are 185 kB.\nThere are two lists of grammars you can use:\n[`common`][api-common]\n(±35 languages, good for your own site)\nadds 250 kB and [`all`][api-all]\n(\\~600 languages, useful if you are making a site like GitHub)\nis 1.6 MB.\nYou can also manually choose which grammars to include\n(or add to `common`):\na language is typically between 3 and 5 kB.\nTo illustrate,\nAstro costs 2.1 kB and TSX costs 25.4 kB.\n\n## What is `PrettyLights`?\n\n`PrettyLights` is the syntax highlighter that GitHub uses to turn this:\n\n````markdown\n```markdown\n# Hello, world!\n```\n````\n\n…into this:\n\n```html\n\u003cspan class=\"pl-mh\"\u003e\u003cspan class=\"pl-mh\"\u003e#\u003c/span\u003e\u003cspan class=\"pl-mh\"\u003e \u003c/span\u003eHello, world!\u003c/span\u003e\n```\n\n…which is what `starry-night` does too\n(some small differences in markup,\nbut essentially the same)!\n\n`PrettyLights` is responsible for taking the flag `markdown`,\nlooking it up in\n[`languages.yml` from `github-linguist`][github-linguist-languages-yml]\nto figure out that that means markdown,\ntaking a corresponding grammar\n(in this case\n[`wooorm/markdown-tm-language`][github-markdown-tm-language]),\ndoing some GPL magic in C,\nand turning it into spans with classes.\n\nGitHub is using `PrettyLights` since December 2014,\nwhen it [replaced `Pygments`][github-pages-pygments].\nThey wanted to open source it,\nbut [were unable][github-pages-license] due to licensing issues.\nRecently ([Feb 2019][github-tree-sitter-tree-lights]?),\nGitHub has slowly started to move towards `TreeLights`,\nwhich is based on TreeSitter,\nand also closed source.\nIf `TreeLights` includes a language\n(currently: C, C#, CSS, CodeQL, EJS, Elixir, ERB, Gleam, Go, HTML, Java, JS,\nNix, PHP, Python, RegEx, Ruby, Rust, TLA, TS),\nthat’ll be used,\nfor everything else `PrettyLights` is used.\n\n`starry-night` does what `PrettyLights` does,\nnot what `TreeLights` does.\nI’m hopeful that that will be open sourced in the future and we can mimic both.\n\n\u003cbr\u003e\n\n[![](media/slice-1.jpg)][artsandculture-google-starry-night]\n\n## Install\n\nThis package is [ESM only][github-gist-esm].\nIn Node.js (version 16+),\ninstall with [npm][npmjs-install]:\n\n```sh\nnpm install @wooorm/starry-night\n```\n\nIn Deno with [`esm.sh`][esmsh]:\n\n```js\nimport {common, createStarryNight} from 'https://esm.sh/@wooorm/starry-night@3'\n```\n\nIn browsers with [`esm.sh`][esmsh]:\n\n```html\n\u003cscript type=\"module\"\u003e\n  import {common, createStarryNight} from 'https://esm.sh/@wooorm/starry-night@3?bundle'\n\u003c/script\u003e\n```\n\nTo get the CSS in browsers,\ndo\n(see [CSS][section-css] for more info):\n\n```html\n\u003c!-- This supports light and dark mode automatically. --\u003e\n\u003clink rel=\"stylesheet\" href=\"https://esm.sh/@wooorm/starry-night@3/style/both\"\u003e\n```\n\n## Use\n\n```js\nimport {common, createStarryNight} from '@wooorm/starry-night'\n\nconst starryNight = await createStarryNight(common)\n\nconst scope = starryNight.flagToScope('markdown')\nconst tree = starryNight.highlight('# hi', scope)\n\nconsole.log(tree)\n```\n\nYields:\n\n```js\n{\n  type: 'root',\n  children: [\n    {\n      type: 'element',\n      tagName: 'span',\n      properties: {className: ['pl-mh']},\n      children: [\n        {type: 'text', value: '# '},\n        {\n          type: 'element',\n          tagName: 'span',\n          properties: {className: ['pl-en']},\n          children: [{type: 'text', value: 'hi'}]\n        }\n      ]\n    }\n  ]\n}\n```\n\n## API\n\nThis package exports the identifiers\n[`all`][api-all],\n[`common`][api-common],\nand\n[`createStarryNight`][api-create-starry-night]\nfrom the main module.\nIt exports the additional [TypeScript][] types\n[`GetOnigurumaUrl`][api-get-oniguruma-url],\n[`Grammar`][api-grammar],\nand [`Options`][api-options].\nThere is no default export.\n\nIt also includes grammars directly in its export map,\nwhich each expose a [`Grammar`][api-grammar] as the default export.\n**Do not** use the `lang/` folder or the `.js` extension.\n\nFor CSS files,\ndo use `style/` and don’t use `.css`:\n\n```js\nimport sourceMdx from '@wooorm/starry-night/source.mdx' // Grammar.\nimport styleTritanopiaDark from '@wooorm/starry-night/style/tritanopia-dark' // CSS.\n```\n\n### `all`\n\nList of all grammars ([`Array\u003cGrammar\u003e`][api-grammar])\n\n### `common`\n\nList of ±35 common grammars ([`Array\u003cGrammar\u003e`][api-grammar])\n\n### `createStarryNight(grammars[, options])`\n\nCreate a `StarryNight` that can highlight things with the given `grammars`.\nThis is async to allow async loading and registering,\nwhich is currently only used for WASM.\n\n###### Parameters\n\n* `grammars`\n  ([`Array\u003cGrammar\u003e`][api-grammar])\n  — grammars to support\n* `options`\n  ([`Options`][api-options], optional)\n  — configuration\n\n###### Returns\n\nPromise that resolves to an instance which highlights with the bound\ngrammars (`Promise\u003cStarryNight\u003e`).\n\n### `starryNight.flagToScope(flag)`\n\nGet the grammar scope (such as `text.md`) associated with a grammar name\n(such as `markdown`) or grammar extension (such as `.mdwn`).\n\nThis function uses the first word (when splitting on spaces and tabs) that is\nused after the opening of a fenced code block:\n\n````markdown\n```js\nconsole.log(1)\n```\n````\n\nTo match GitHub,\nthis also accepts entire paths:\n\n````markdown\n```path/to/example.js\nconsole.log(1)\n```\n````\n\n\u003e 👉 **Note**:\n\u003e languages can use the same extensions.\n\u003e For example,\n\u003e `.h` is reused by many languages.\n\u003e In those cases,\n\u003e you will get one scope back,\n\u003e but it might not be the most popular language associated with an extension.\n\n###### Parameters\n\n* `flag`\n  (`string`)\n  — grammar name\n  (such as `'markdown'`),\n  grammar extension\n  (such as `'.mdwn'`),\n  or entire file path ending in extension\n\n###### Returns\n\nGrammar scope,\nsuch as `'text.md'`\n(`string` or `undefined`).\n\n###### Example\n\n```js\nimport {common, createStarryNight} from '@wooorm/starry-night'\n\nconst starryNight = await createStarryNight(common)\n\nconsole.log(starryNight.flagToScope('pandoc')) // `'text.md'`\nconsole.log(starryNight.flagToScope('workbook')) // `'text.md'`\nconsole.log(starryNight.flagToScope('.workbook')) // `'text.md'`\nconsole.log(starryNight.flagToScope('path/to/example.js')) // `'source.js'`\nconsole.log(starryNight.flagToScope('whatever')) // `undefined`\n```\n\n### `starryNight.highlight(value, scope)`\n\nHighlight programming code.\n\n###### Parameters\n\n* `value` (`string`)\n  — code to highlight\n* `scope` (`string`)\n  — registered grammar scope to highlight as (such as `'text.md'`)\n\n###### Returns\n\nNode representing highlighted code ([`Root`][github-hast-root]).\n\n###### Example\n\n```js\nimport sourceCss from '@wooorm/starry-night/source.css'\nimport {createStarryNight} from '@wooorm/starry-night'\n\nconst starryNight = await createStarryNight([sourceCss])\n\nconsole.log(starryNight.highlight('em { color: red }', 'source.css'))\n```\n\nYields:\n\n```js\n{\n  type: 'root',\n  children: [\n    {type: 'element', tagName: 'span', properties: [Object], children: [Array]},\n    {type: 'text', value: ' { '},\n    {type: 'element', tagName: 'span', properties: [Object], children: [Array]},\n    {type: 'text', value: ': '},\n    {type: 'element', tagName: 'span', properties: [Object], children: [Array]},\n    {type: 'text', value: ' }'}\n  ]\n}\n```\n\n### `starryNight.missingScopes()`\n\nList scopes that are needed by the registered grammars but that are\nmissing.\n\nTo illustrate,\nthe `text.xml.svg` grammar needs the `text.xml` grammar.\nWhen you register `text.xml.svg` without `text.xml`,\nit will be listed here.\n\n###### Returns\n\nList of grammar scopes,\nsuch as `'text.md'`\n(`Array\u003cstring\u003e`).\n\n###### Example\n\n```js\nimport textXmlSvg from '@wooorm/starry-night/text.xml.svg'\nimport textXml from '@wooorm/starry-night/text.xml'\nimport {createStarryNight} from '@wooorm/starry-night'\n\nconst svg = await createStarryNight([textXmlSvg])\nconsole.log(svg.missingScopes()) //=\u003e ['text.xml']\n\nconst svgAndXml = await createStarryNight([textXmlSvg, textXml])\nconsole.log(svgAndXml.missingScopes()) //=\u003e []\n```\n\n### `starryNight.register(grammars)`\n\nAdd more grammars.\n\n###### Parameters\n\n* `grammars` ([`Array\u003cGrammar\u003e`][api-grammar])\n  — grammars to support\n\n###### Returns\n\nPromise resolving to nothing (`Promise\u003cundefined\u003e`).\n\n###### Example\n\n````js\nimport sourceCss from '@wooorm/starry-night/source.css'\nimport textMd from '@wooorm/starry-night/text.md'\nimport {createStarryNight} from '@wooorm/starry-night'\nimport {toHtml} from 'hast-util-to-html'\n\nconst markdown = '```css\\nem { color: red }\\n```'\n\nconst starryNight = await createStarryNight([textMd])\n\nconsole.log(toHtml(starryNight.highlight(markdown, 'text.md')))\n\nawait starryNight.register([sourceCss])\n\nconsole.log(toHtml(starryNight.highlight(markdown, 'text.md')))\n````\n\nYields:\n\n````html\n\u003cspan class=\"pl-s\"\u003e```\u003c/span\u003e\u003cspan class=\"pl-en\"\u003ecss\u003c/span\u003e\n\u003cspan class=\"pl-c1\"\u003eem { color: red }\u003c/span\u003e\n\u003cspan class=\"pl-s\"\u003e```\u003c/span\u003e\n````\n\n````html\n\u003cspan class=\"pl-s\"\u003e```\u003c/span\u003e\u003cspan class=\"pl-en\"\u003ecss\u003c/span\u003e\n\u003cspan class=\"pl-ent\"\u003eem\u003c/span\u003e { \u003cspan class=\"pl-c1\"\u003ecolor\u003c/span\u003e: \u003cspan class=\"pl-c1\"\u003ered\u003c/span\u003e }\n\u003cspan class=\"pl-s\"\u003e```\u003c/span\u003e\n````\n\n### `starryNight.scopes()`\n\nList all registered scopes.\n\n###### Returns\n\nList of grammar scopes,\nsuch as `'text.md'`\n(`Array\u003cstring\u003e`).\n\n###### Example\n\n```js\nimport {common, createStarryNight} from '@wooorm/starry-night'\n\nconst starryNight = await createStarryNight(common)\n\nconsole.log(starryNight.scopes())\n```\n\nYields:\n\n```js\n[\n  'source.c',\n  'source.c++',\n  // …\n  'text.xml',\n  'text.xml.svg'\n]\n```\n\n### `GetOnigurumaUrl`\n\nFunction to get a URL to the oniguruma WASM (TypeScript type).\n\n\u003e 👉 **Note**:\n\u003e this must currently result in a version 2 URL of `onig.wasm` from\n\u003e [`vscode-oniguruma`][github-vscode-oniguruma].\n\n\u003e ⚠️ **Danger**:\n\u003e when you use this functionality,\n\u003e your project might break at any time\n\u003e (when reinstalling dependencies),\n\u003e except when you make sure that the WASM binary you load manually is what our\n\u003e internally used `vscode-oniguruma` dependency expects.\n\u003e To solve this, you could for example use an npm script called\n\u003e [`dependencies`][npmjs-using-npm-script-dependencies]\n\u003e (which runs everytime `node_modules` is changed)\n\u003e which copies `vscode-oniguruma/release/onig.wasm` to the place you want to\n\u003e host it.\n\n###### Returns\n\nURL object to a WASM binary (`Promise\u003cURL\u003e` or `URL`).\n\n###### Example\n\n```js\nimport {common, createStarryNight} from '@wooorm/starry-night'\n\nconst starryNight = await createStarryNight(common, {\n  getOnigurumaUrlFetch() {\n    return new URL('/onig.wasm', window.location.href);\n  }\n})\n```\n\n### `Grammar`\n\nTextMate grammar with some extra info (TypeScript type).\n\n###### Fields\n\n* `dependencies`\n  (`Array\u003cstring\u003e`, optional, example: `['source.tsx']`)\n  — list of scopes that are needed for this grammar to work\n* `extensions`\n  (`Array\u003cstring\u003e`, example: `['.mdx']`)\n  — list of extensions\n* `extensionsWithDot`\n  (`Array\u003cstring\u003e`, optional, example: `['.php']`)\n  — list of extensions that only match if used w/ a dot\n* `injections`\n  (`Record\u003cstring, Rule\u003e`, optional)\n  — TextMate injections\n* `names`\n  (`Array\u003cstring\u003e`, example: `['mdx']`)\n  — list of names\n* `patterns`\n  (`Array\u003cRule\u003e`)\n  — TextMate patterns\n* `repository`\n  (`Record\u003cstring, Rule\u003e`, optional)\n  — TextMate repository\n* `scopeName`\n  (`string`, example: `'source.mdx'`)\n  — scope\n\n### `Options`\n\nConfiguration (TypeScript type).\n\n###### Fields\n\n* `getOnigurumaUrlFetch`\n  ([`GetOnigurumaUrl`][api-get-oniguruma-url], optional)\n  — get a URL to the oniguruma WASM,\n  typically used in browsers\n* `getOnigurumaUrlFs`\n  ([`GetOnigurumaUrl`][api-get-oniguruma-url], optional)\n  — get a URL to the oniguruma WASM,\n  typically used in Node.js\n\n## Examples\n\n### Example: serializing hast as html\n\n[`hast`][github-hast] trees as returned by `starry-night` can be serialized with\n[`hast-util-to-html`][github-hast-util-to-html]:\n\n```js\nimport {common, createStarryNight} from '@wooorm/starry-night'\nimport {toHtml} from 'hast-util-to-html'\n\nconst starryNight = await createStarryNight(common)\n\nconst tree = starryNight.highlight('\"use strict\";', 'source.js')\n\nconsole.log(toHtml(tree))\n```\n\nYields:\n\n```html\n\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003euse strict\u003cspan class=\"pl-pds\"\u003e\"\u003c/span\u003e\u003c/span\u003e;\n```\n\n### Example: using `starry-night` on the client\n\nYou don’t *have* to do preprocess things on a server.\nParticularly,\nwhen you are not using Node.js or so.\nOr,\nwhen you have a lot of often changing content\n(likely markdown),\nsuch as on a page of comments.\n\nIn those cases,\nyou can run `starry-night` in the browser.\nHere is an example.\nIt also uses [`hast-util-to-dom`][github-hast-util-to-dom],\nwhich is a light way to turn the AST into DOM nodes.\n\nSay we have this `example.js` on our browser (no bundling needed!):\n\n```js\nimport {\n  common,\n  createStarryNight\n} from 'https://esm.sh/@wooorm/starry-night@3?bundle'\nimport {toDom} from 'https://esm.sh/hast-util-to-dom@4?bundle'\n\nconst starryNight = await createStarryNight(common)\nconst prefix = 'language-'\n\nconst nodes = Array.from(document.body.querySelectorAll('code'))\n\nfor (const node of nodes) {\n  const className = Array.from(node.classList).find(function (d) {\n    return d.startsWith(prefix)\n  })\n  if (!className) continue\n  const scope = starryNight.flagToScope(className.slice(prefix.length))\n  if (!scope) continue\n  const tree = starryNight.highlight(node.textContent, scope)\n  node.replaceChildren(toDom(tree, {fragment: true}))\n}\n```\n\n…and then,\nif we would have an `index.html` for our document:\n\n```html\n\u003c!doctype html\u003e\n\u003cmeta charset=utf8\u003e\n\u003ctitle\u003eHello\u003c/title\u003e\n\u003clink rel=stylesheet href=https://esm.sh/@wooorm/starry-night@3/style/both\u003e\n\u003cbody\u003e\n\u003ch1\u003eHello\u003c/h1\u003e\n\u003cp\u003e…world!\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=language-js\u003econsole.log('it works!')\n\u003c/code\u003e\u003c/pre\u003e\n\u003cscript type=module src=./example.js\u003e\u003c/script\u003e\n\u003c/body\u003e\n```\n\nOpening that page in a browser,\nwe’d see the `\u003ccode\u003e` being swapped with:\n\n```html\n\u003ccode class=\"language-js\"\u003e\u003cspan class=\"pl-en\"\u003econsole\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003elog\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003eit works!\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003e\u003c/span\u003e)\n\u003c/code\u003e\n```\n\n### Example: turning hast into react nodes\n\nhast trees as returned by `starry-night` can be turned into\npreact, react, solid, svelte, vue, etc.,\nwith\n[`hast-util-to-jsx-runtime`][github-hast-util-to-jsx-runtime]:\n\n```js\nimport {common, createStarryNight} from '@wooorm/starry-night'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\n\nconst starryNight = await createStarryNight(common)\n\nconst tree = starryNight.highlight('\"use strict\";', 'source.js')\nconst reactNode = toJsxRuntime(tree, {Fragment, jsx, jsxs})\n\nconsole.log(reactNode)\n```\n\nYields:\n\n```js\n{\n  '$$typeof': Symbol(react.element),\n  type: Symbol(react.fragment),\n  key: null,\n  ref: null,\n  props: { children: [ [Object], ';' ] },\n  _owner: null,\n  _store: {}\n}\n```\n\n### Example: adding line numbers\n\nGitHub itself does not add line numbers to the code they highlight.\nYou can do that,\nby transforming the AST.\nHere’s an example of a utility that wraps each line into a span with a class and\na data attribute with its line number.\nThat way,\nyou can style the lines as you please.\nOr you can generate different elements for each line,\nof course.\n\nSay we have our utility as `hast-util-starry-night-gutter.js`:\n\n```js\n/**\n * @import {ElementContent, Element, RootContent, Root} from 'hast'\n */\n\n/**\n * @param {Root} tree\n *   Tree.\n * @returns {undefined}\n *   Nothing.\n */\nexport function starryNightGutter(tree) {\n  /** @type {Array\u003cRootContent\u003e} */\n  const replacement = []\n  const search = /\\r?\\n|\\r/g\n  let index = -1\n  let start = 0\n  let startTextRemainder = ''\n  let lineNumber = 0\n\n  while (++index \u003c tree.children.length) {\n    const child = tree.children[index]\n\n    if (child.type === 'text') {\n      let textStart = 0\n      let match = search.exec(child.value)\n\n      while (match) {\n        // Nodes in this line.\n        const line = /** @type {Array\u003cElementContent\u003e} */ (\n          tree.children.slice(start, index)\n        )\n\n        // Prepend text from a partial matched earlier text.\n        if (startTextRemainder) {\n          line.unshift({type: 'text', value: startTextRemainder})\n          startTextRemainder = ''\n        }\n\n        // Append text from this text.\n        if (match.index \u003e textStart) {\n          line.push({\n            type: 'text',\n            value: child.value.slice(textStart, match.index)\n          })\n        }\n\n        // Add a line, and the eol.\n        lineNumber += 1\n        replacement.push(createLine(line, lineNumber), {\n          type: 'text',\n          value: match[0]\n        })\n\n        start = index + 1\n        textStart = match.index + match[0].length\n        match = search.exec(child.value)\n      }\n\n      // If we matched, make sure to not drop the text after the last line ending.\n      if (start === index + 1) {\n        startTextRemainder = child.value.slice(textStart)\n      }\n    }\n  }\n\n  const line = /** @type {Array\u003cElementContent\u003e} */ (tree.children.slice(start))\n  // Prepend text from a partial matched earlier text.\n  if (startTextRemainder) {\n    line.unshift({type: 'text', value: startTextRemainder})\n    startTextRemainder = ''\n  }\n\n  if (line.length \u003e 0) {\n    lineNumber += 1\n    replacement.push(createLine(line, lineNumber))\n  }\n\n  // Replace children with new array.\n  tree.children = replacement\n}\n\n/**\n * @param {Array\u003cElementContent\u003e} children\n * @param {number} line\n * @returns {Element}\n */\nfunction createLine(children, line) {\n  return {\n    type: 'element',\n    tagName: 'span',\n    properties: {className: 'line', dataLineNumber: line},\n    children\n  }\n}\n```\n\n…and a module `example.js`:\n\n````js\nimport {common, createStarryNight} from '@wooorm/starry-night'\nimport {toHtml} from 'hast-util-to-html'\nimport {starryNightGutter} from './hast-util-starry-night-gutter.js'\n\nconst starryNight = await createStarryNight(common)\n\nconst tree = starryNight.highlight(\n  '# Some heading\\n\\n```js\\nalert(1)\\n```\\n***',\n  'text.md'\n)\n\nstarryNightGutter(tree)\n\nconsole.log(toHtml(tree))\n````\n\nNow running `node example.js` yields:\n\n````html\n\u003cspan class=\"line\" data-line-number=\"1\"\u003e\u003cspan class=\"pl-mh\"\u003e# \u003cspan class=\"pl-en\"\u003eSome heading\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\" data-line-number=\"2\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\" data-line-number=\"3\"\u003e\u003cspan class=\"pl-s\"\u003e```\u003c/span\u003e\u003cspan class=\"pl-en\"\u003ejs\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\" data-line-number=\"4\"\u003e\u003cspan class=\"pl-en\"\u003ealert\u003c/span\u003e(\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e)\u003c/span\u003e\n\u003cspan class=\"line\" data-line-number=\"5\"\u003e\u003cspan class=\"pl-s\"\u003e```\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\" data-line-number=\"6\"\u003e\u003cspan class=\"pl-ms\"\u003e***\u003c/span\u003e\u003c/span\u003e\n````\n\n### Example: integrate with unified, remark, and rehype\n\nThis example shows how to use\n[`rehype-starry-night`][github-rehype-starry-night] with\n[`unified`][github-unified].\nIf we have a markdown file `example.md`:\n\n````markdown\n# Hello\n\n…world!\n\n```js\nconsole.log('it works!')\n```\n````\n\n…and a module `example.js`:\n\n```js\nimport fs from 'node:fs/promises'\nimport rehypeStarryNight from 'rehype-starry-night'\nimport rehypeStringify from 'rehype-stringify'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\n\nconst file = await unified()\n  .use(remarkParse)\n  .use(remarkRehype)\n  .use(rehypeStarryNight)\n  .use(rehypeStringify)\n  .process(await fs.readFile('example.md'))\n\nconsole.log(String(file))\n```\n\n…then running `node example.js` yields:\n\n```html\n\u003ch1\u003eHello\u003c/h1\u003e\n\u003cp\u003e…world!\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-js\"\u003e\u003cspan class=\"pl-en\"\u003econsole\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003elog\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003eit works!\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003e\u003c/span\u003e)\n\u003c/code\u003e\u003c/pre\u003e\n```\n\n### Example: integrating with `markdown-it`\n\nThis example shows how to combine `starry-night` with `markdown-it`.\nIf we have a markdown file `example.md`:\n\n````markdown\n# Hello\n\n…world!\n\n```js\nconsole.log('it works!')\n```\n````\n\n…and a module `example.js`:\n\n```js\n/**\n * @import {ElementContent} from 'hast'\n */\n\nimport fs from 'node:fs/promises'\nimport {common, createStarryNight} from '@wooorm/starry-night'\nimport {toHtml} from 'hast-util-to-html'\nimport markdownIt from 'markdown-it'\n\nconst file = await fs.readFile('example.md')\nconst starryNight = await createStarryNight(common)\n\nconst markdownItInstance = markdownIt({\n  highlight(value, lang) {\n    const scope = starryNight.flagToScope(lang)\n\n    return toHtml({\n      type: 'element',\n      tagName: 'pre',\n      properties: {\n        className: scope\n          ? [\n              'highlight',\n              'highlight-' + scope.replace(/^source\\./, '').replace(/\\./g, '-')\n            ]\n          : undefined\n      },\n      children: scope\n        ? /** @type {Array\u003cElementContent\u003e} */ (\n            starryNight.highlight(value, scope).children\n          )\n        : [{type: 'text', value}]\n    })\n  }\n})\n\nconst html = markdownItInstance.render(String(file))\n\nconsole.log(html)\n```\n\nNow running `node example.js` yields:\n\n```html\n\u003ch1\u003eHello\u003c/h1\u003e\n\u003cp\u003e…world!\u003c/p\u003e\n\u003cpre class=\"highlight highlight-js\"\u003e\u003cspan class=\"pl-en\"\u003econsole\u003c/span\u003e.\u003cspan class=\"pl-c1\"\u003elog\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003eit works!\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003e\u003c/span\u003e)\n\u003c/pre\u003e\n```\n\n\u003cbr\u003e\n\n[![](media/slice-2.jpg)][artsandculture-google-starry-night]\n\n## Syntax tree\n\nThe generated [`hast`][github-hast] starts with a `root` node,\nthat represents the fragment.\nIt contains up to three levels of `\u003cspan\u003e` `element`s,\neach with a single class.\nAll these levels can contain text nodes with the actual code.\nInterestingly,\nTextMate grammars work per line,\nso all line endings are in the root directly,\nmeaning that creating a gutter to display line numbers can be generated rather\nnaïvely by only looking through the root node.\n\n## CSS\n\n`starry-night` does not inject CSS for the syntax highlighted code\n(because well,\n`starry-night` doesn’t have to be turned into HTML and might not run in a\nbrowser!).\nIf you are in a browser,\nyou can use the packaged themes,\nor get creative with CSS!\n💅\n\nAll themes accept CSS variables (custom properties).\nWith the theme `core.css`,\nyou have to define your own properties.\nAll other themes define the colors on `:root`.\nThemes either have a `dark` or `light` suffix,\nor none,\nin which case they automatically switch colors based on a\n`@media (prefers-color-scheme: dark)`.\nAll themes are tiny (under 1 kB).\nThe shipped themes are as follows:\n\n| name | Includes light scheme | Includes dark scheme |\n| - | - | - |\n| [`@wooorm/starry-night/style/core`](style/core.css) | | |\n| [`@wooorm/starry-night/style/light`](style/light.css) | ✅ | |\n| [`@wooorm/starry-night/style/dark`](style/dark.css) | | ✅ |\n| [`@wooorm/starry-night/style/both`](style/both.css) | ✅ | ✅ |\n| [`@wooorm/starry-night/style/colorblind-light`](style/colorblind-light.css) | ✅ | |\n| [`@wooorm/starry-night/style/colorblind-dark`](style/colorblind-dark.css) | | ✅ |\n| [`@wooorm/starry-night/style/colorblind`](style/colorblind.css) | ✅ | ✅ |\n| [`@wooorm/starry-night/style/dimmed-dark`](style/dimmed-dark.css) | | ✅ |\n| [`@wooorm/starry-night/style/dimmed`](style/dimmed.css) | ✅ | ✅ |\n| [`@wooorm/starry-night/style/high-contrast-light`](style/high-contrast-light.css) | ✅ | |\n| [`@wooorm/starry-night/style/high-contrast-dark`](style/high-contrast-dark.css) | | ✅ |\n| [`@wooorm/starry-night/style/high-contrast`](style/high-contrast.css) | ✅ | ✅ |\n| [`@wooorm/starry-night/style/tritanopia-light`](style/tritanopia-light.css) | ✅ | |\n| [`@wooorm/starry-night/style/tritanopia-dark`](style/tritanopia-dark.css) | | ✅ |\n| [`@wooorm/starry-night/style/tritanopia`](style/tritanopia.css) | ✅ | ✅ |\n\n## Languages\n\nChecked grammars are included in [`common`][api-common].\nEverything (that’s needed) is available through\n[`all`][api-all].\nYou can add more grammars as you please.\n\nEach grammar has several associated names and extensions.\nSee source files for which are known and use `flagToScope` to turn them into\nscopes.\n\nSome grammars need other grammars to work.\nYou are responsible for loading those,\nuse `missingScopes` to find which dependencies are needed.\n\nAll licenses are permissive and made available in [`notice`][file-notice].\nChanges should go to upstream repos and\n[`languages.yml` in `github-linguist`][github-linguist-languages-yml].\n\n\u003c!--support start--\u003e\n\n* [x] [`source.c`](lang/source.c.js) — [upstream](https://github.com/textmate/c.tmbundle) — needs: `source.c.platform`\n* [x] [`source.c.platform`](lang/source.c.platform.js) — [upstream](https://github.com/textmate/c.tmbundle)\n* [x] [`source.c++`](lang/source.c++.js) — [upstream](https://github.com/textmate/c.tmbundle) — needs: `source.c`\n* [x] [`source.cs`](lang/source.cs.js) (mit) — [upstream](https://github.com/dotnet/csharp-tmLanguage)\n* [x] [`source.css`](lang/source.css.js) (mit) — [upstream](https://github.com/atom/language-css)\n* [x] [`source.css.less`](lang/source.css.less.js) (mit) — [upstream](https://github.com/atom/language-less) — needs: `source.css`\n* [x] [`source.css.scss`](lang/source.css.scss.js) (mit) — [upstream](https://github.com/atom/language-sass) — needs: `source.css`\n* [x] [`source.diff`](lang/source.diff.js)\n* [x] [`source.go`](lang/source.go.js) (bsd-3-clause) — [upstream](https://github.com/AlanQuatermain/go-tmbundle)\n* [x] [`source.graphql`](lang/source.graphql.js) (mit) — [upstream](https://github.com/graphql/graphiql)\n* [x] [`source.ini`](lang/source.ini.js)\n* [x] [`source.java`](lang/source.java.js) — [upstream](https://github.com/textmate/java.tmbundle)\n* [x] [`source.js`](lang/source.js.js) (mit) — [upstream](https://github.com/atom/language-javascript)\n* [x] [`source.json`](lang/source.json.js) (isc) — [upstream](https://github.com/Nixinova/NovaGrammars)\n* [x] [`source.kotlin`](lang/source.kotlin.js) (apache-2.0) — [upstream](https://github.com/nishtahir/language-kotlin)\n* [x] [`source.lua`](lang/source.lua.js) (mit) — [upstream](https://github.com/LuaLS/lua.tmbundle)\n* [x] [`source.makefile`](lang/source.makefile.js) — [upstream](https://github.com/textmate/make.tmbundle) — needs: `source.shell`\n* [x] [`source.objc`](lang/source.objc.js) — needs: `source.c`, `source.c.platform`, `source.objc.platform`\n* [x] [`source.objc.platform`](lang/source.objc.platform.js)\n* [x] [`source.perl`](lang/source.perl.js) — [upstream](https://github.com/textmate/perl.tmbundle)\n* [x] [`source.python`](lang/source.python.js) (mit) — [upstream](https://github.com/MagicStack/MagicPython)\n* [x] [`source.r`](lang/source.r.js)\n* [x] [`source.ruby`](lang/source.ruby.js) (mit) — [upstream](https://github.com/atom/language-ruby)\n* [x] [`source.rust`](lang/source.rust.js) (mit) — [upstream](https://github.com/dustypomerleau/rust-syntax)\n* [x] [`source.shell`](lang/source.shell.js) (mit) — [upstream](https://github.com/atom/language-shellscript)\n* [x] [`source.sql`](lang/source.sql.js)\n* [x] [`source.swift`](lang/source.swift.js) (mit) — [upstream](https://github.com/jtbandes/swift-tmlanguage)\n* [x] [`source.ts`](lang/source.ts.js) (mit) — [upstream](https://github.com/Microsoft/TypeScript-TmLanguage)\n* [x] [`source.vbnet`](lang/source.vbnet.js) (apache-2.0) — [upstream](https://github.com/angryant0007/VBDotNetSyntax)\n* [x] [`source.yaml`](lang/source.yaml.js) (mit) — [upstream](https://github.com/atom/language-yaml)\n* [x] [`text.html.basic`](lang/text.html.basic.js) (mit) — [upstream](https://github.com/atom/language-html)\n* [x] [`text.html.php`](lang/text.html.php.js) — needs: `text.html.basic`\n* [x] [`text.md`](lang/text.md.js) (mit) — [upstream](https://github.com/wooorm/markdown-tm-language)\n* [x] [`text.xml`](lang/text.xml.js)\n* [x] [`text.xml.svg`](lang/text.xml.svg.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `text.xml`\n* [ ] [`config.xcompose`](lang/config.xcompose.js) (mit)\n* [ ] [`etc`](lang/etc.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `source.regexp.posix`\n* [ ] [`file.lasso`](lang/file.lasso.js) (public domain)\n* [ ] [`go.mod`](lang/go.mod.js) (mit) — [upstream](https://github.com/golang/vscode-go)\n* [ ] [`go.sum`](lang/go.sum.js) (mit) — [upstream](https://github.com/golang/vscode-go)\n* [ ] [`injections.etc`](lang/injections.etc.js) (isc) — [upstream](https://github.com/Alhadis/language-etc)\n* [ ] [`objdump.x86asm`](lang/objdump.x86asm.js) (mit) — needs: `source.c`, `source.c++`\n* [ ] [`source.2da`](lang/source.2da.js) (isc) — [upstream](https://github.com/Alhadis/language-etc)\n* [ ] [`source.4dm`](lang/source.4dm.js) (mit)\n* [ ] [`source.8xp`](lang/source.8xp.js) (bsd-3-clause) — [upstream](https://github.com/TIny-Hacker/language-ti-basic)\n* [ ] [`source.abap`](lang/source.abap.js) — [upstream](https://github.com/pvl/abap.tmbundle)\n* [ ] [`source.abapcds`](lang/source.abapcds.js) (unlicense) — [upstream](https://github.com/FreHu/abap-cds-grammar)\n* [ ] [`source.abl`](lang/source.abl.js) (mit) — [upstream](https://github.com/chriscamicas/abl-tmlanguage)\n* [ ] [`source.abnf`](lang/source.abnf.js) (isc) — [upstream](https://github.com/Alhadis/language-grammars)\n* [ ] [`source.actionscript.3`](lang/source.actionscript.3.js) (mit) — [upstream](https://github.com/simongregory/actionscript3-tmbundle) — needs: `text.html.asdoc`, `text.xml`\n* [ ] [`source.ada`](lang/source.ada.js)\n* [ ] [`source.afm`](lang/source.afm.js) (isc) — [upstream](https://github.com/Alhadis/language-fontforge)\n* [ ] [`source.agc`](lang/source.agc.js) (isc)\n* [ ] [`source.agda`](lang/source.agda.js) (mit) — [upstream](https://github.com/agda/agda-github-syntax-highlighting)\n* [ ] [`source.ahk`](lang/source.ahk.js) (unlicense) — [upstream](https://github.com/ahkscript/SublimeAutoHotkey)\n* [ ] [`source.aidl`](lang/source.aidl.js) (apache-2.0) — [upstream](https://github.com/google/aidl-language)\n* [ ] [`source.al`](lang/source.al.js) (mit) — [upstream](https://github.com/microsoft/AL)\n* [ ] [`source.alloy`](lang/source.alloy.js) (apache-2.0) — [upstream](https://github.com/macekond/Alloy.tmbundle)\n* [ ] [`source.ampl`](lang/source.ampl.js) (mit)\n* [ ] [`source.angelscript`](lang/source.angelscript.js) (unlicense) — [upstream](https://github.com/wronex/sublime-angelscript)\n* [ ] [`source.answersetprogramming`](lang/source.answersetprogramming.js) (mit) — [upstream](https://github.com/nickswalker/asp-syntax-highlight)\n* [ ] [`source.antlr`](lang/source.antlr.js)\n* [ ] [`source.apacheconf`](lang/source.apacheconf.js) (mit) — [upstream](https://github.com/mrmlnc/vscode-apache)\n* [ ] [`source.apex`](lang/source.apex.js) (bsd-3-clause) — [upstream](https://github.com/forcedotcom/apex-tmLanguage)\n* [ ] [`source.apl`](lang/source.apl.js) (isc) — [upstream](https://github.com/Alhadis/language-apl)\n* [ ] [`source.applescript`](lang/source.applescript.js)\n* [ ] [`source.arr`](lang/source.arr.js) (mit) — [upstream](https://github.com/samuela/language-pyret)\n* [ ] [`source.asl`](lang/source.asl.js) (mit) — [upstream](https://github.com/sebadur/language-asl)\n* [ ] [`source.asn`](lang/source.asn.js) (mit) — [upstream](https://github.com/ajlangley/language-asn1)\n* [ ] [`source.asp`](lang/source.asp.js)\n* [ ] [`source.aspectj`](lang/source.aspectj.js) (mit)\n* [ ] [`source.assembly`](lang/source.assembly.js) (bsd-3-clause) — [upstream](https://github.com/Nessphoro/sublimeassembly)\n* [ ] [`source.astro`](lang/source.astro.js) (mit) — [upstream](https://github.com/withastro/language-tools) — needs: `source.js`, `source.ts`, `source.tsx`\n* [ ] [`source.ats`](lang/source.ats.js) (mit)\n* [ ] [`source.autoit`](lang/source.autoit.js) (mit)\n* [ ] [`source.avro`](lang/source.avro.js) (mit) — [upstream](https://github.com/Jason3S/avro.tmLanguage)\n* [ ] [`source.awk`](lang/source.awk.js) (mit)\n* [ ] [`source.ballerina`](lang/source.ballerina.js) (apache-2.0) — [upstream](https://github.com/ballerina-platform/ballerina-grammar)\n* [ ] [`source.basic`](lang/source.basic.js) (apache-2.0) — [upstream](https://github.com/telnet23/language-basic)\n* [ ] [`source.batchfile`](lang/source.batchfile.js) (mit) — [upstream](https://github.com/mmims/language-batchfile)\n* [ ] [`source.bb`](lang/source.bb.js) (mit) — [upstream](https://github.com/yoctoproject/vscode-bitbake)\n* [ ] [`source.bdf`](lang/source.bdf.js) (isc) — [upstream](https://github.com/Alhadis/language-fontforge) — needs: `source.xlfd`\n* [ ] [`source.befunge`](lang/source.befunge.js) (mit)\n* [ ] [`source.berry`](lang/source.berry.js) (mit) — [upstream](https://github.com/berry-lang/berry-grammar)\n* [ ] [`source.bf`](lang/source.bf.js) (mit) — [upstream](https://github.com/Drako/SublimeBrainfuck)\n* [ ] [`source.bh`](lang/source.bh.js) (bsd-3-clause) — [upstream](https://github.com/B-Lang-org/language-bh)\n* [ ] [`source.bicep`](lang/source.bicep.js) (mit) — [upstream](https://github.com/azure/bicep)\n* [ ] [`source.blitzmax`](lang/source.blitzmax.js)\n* [ ] [`source.boo`](lang/source.boo.js) (mit) — [upstream](https://github.com/drslump/sublime-boo)\n* [ ] [`source.boogie`](lang/source.boogie.js) (mit) — [upstream](https://github.com/boogie-org/boogie-vscode)\n* [ ] [`source.bp`](lang/source.bp.js) (mit) — [upstream](https://github.com/flimberger/android-system-tools)\n* [ ] [`source.bqn`](lang/source.bqn.js) (mit) — [upstream](https://github.com/razetime/bqn-vscode)\n* [ ] [`source.brs`](lang/source.brs.js) (mit) — [upstream](https://github.com/rokucommunity/vscode-brightscript-language)\n* [ ] [`source.bsl`](lang/source.bsl.js) (mit) — [upstream](https://github.com/1c-syntax/vsc-language-1c-bsl) — needs: `source.sdbl`\n* [ ] [`source.bst`](lang/source.bst.js) (mit) — [upstream](https://github.com/zyoshoka/bst.tmLanguage)\n* [ ] [`source.bsv`](lang/source.bsv.js) (mit)\n* [ ] [`source.c.ec`](lang/source.c.ec.js) (unlicense) — [upstream](https://github.com/ecere/ec.tmbundle) — needs: `source.c`\n* [ ] [`source.c.linker`](lang/source.c.linker.js) (mit) — [upstream](https://github.com/donno2048/Linker.tmLanguage)\n* [ ] [`source.c.nwscript`](lang/source.c.nwscript.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `source.c`\n* [ ] [`source.cabal`](lang/source.cabal.js) (mit) — [upstream](https://github.com/atom-haskell/language-haskell)\n* [ ] [`source.Caddyfile`](lang/source.Caddyfile.js) (mit) — [upstream](https://github.com/caddyserver/vscode-caddyfile)\n* [ ] [`source.cadence`](lang/source.cadence.js) (apache-2.0) — [upstream](https://github.com/onflow/vscode-cadence)\n* [ ] [`source.cairo`](lang/source.cairo.js) (apache-2.0) — [upstream](https://github.com/software-mansion-labs/cairo-tm-grammar)\n* [ ] [`source.cairo0`](lang/source.cairo0.js) (apache-2.0) — [upstream](https://github.com/software-mansion-labs/cairo-tm-grammar)\n* [ ] [`source.camlp4.ocaml`](lang/source.camlp4.ocaml.js) — needs: `source.ocaml`\n* [ ] [`source.capnp`](lang/source.capnp.js)\n* [ ] [`source.cds`](lang/source.cds.js) (apache-2.0) — [upstream](https://github.com/SAP/cds-textmate-grammar)\n* [ ] [`source.ceylon`](lang/source.ceylon.js) (apache-2.0)\n* [ ] [`source.cfscript`](lang/source.cfscript.js) (mit) — needs: `source.sql`\n* [ ] [`source.changelogs.rpm-spec`](lang/source.changelogs.rpm-spec.js) (mit)\n* [ ] [`source.chapel`](lang/source.chapel.js) (apache-2.0) — [upstream](https://github.com/chapel-lang/chapel-tmbundle)\n* [ ] [`source.cil`](lang/source.cil.js) (apache-2.0) — [upstream](https://github.com/google/selinux-policy-languages)\n* [ ] [`source.circom`](lang/source.circom.js) (mit) — [upstream](https://github.com/iden3/circom-highlighting-vscode)\n* [ ] [`source.cirru`](lang/source.cirru.js) (mit) — [upstream](https://github.com/Cirru/sublime-cirru)\n* [ ] [`source.clar`](lang/source.clar.js) (mit) — [upstream](https://github.com/hirosystems/clarity.tmbundle)\n* [ ] [`source.clarion`](lang/source.clarion.js) (mit) — [upstream](https://github.com/fushnisoft/SublimeClarion)\n* [ ] [`source.clean`](lang/source.clean.js) (mit)\n* [ ] [`source.click`](lang/source.click.js) (mit)\n* [ ] [`source.clips`](lang/source.clips.js) (mit)\n* [ ] [`source.clojure`](lang/source.clojure.js) (mit) — [upstream](https://github.com/atom/language-clojure)\n* [ ] [`source.cmake`](lang/source.cmake.js) (mit) — [upstream](https://github.com/microsoft/vscode-cmake-tools)\n* [ ] [`source.cobol`](lang/source.cobol.js) (mit) — [upstream](https://github.com/spgennard/vscode_cobol)\n* [ ] [`source.coffee`](lang/source.coffee.js) (mit) — [upstream](https://github.com/atom/language-coffee-script) — needs: `source.js`\n* [ ] [`source.commonlisp`](lang/source.commonlisp.js) (mit) — [upstream](https://github.com/qingpeng9802/common-lisp-tmlanguage)\n* [ ] [`source.cool`](lang/source.cool.js) (mit)\n* [ ] [`source.coq`](lang/source.coq.js) (mit)\n* [ ] [`source.crystal`](lang/source.crystal.js) (mit) — [upstream](https://github.com/atom-crystal/language-crystal) — needs: `text.html.basic`\n* [ ] [`source.csound`](lang/source.csound.js) (mit) — [upstream](https://github.com/nwhetsell/language-csound)\n* [ ] [`source.csound-document`](lang/source.csound-document.js) (mit) — [upstream](https://github.com/nwhetsell/language-csound) — needs: `source.csound`, `text.xml`\n* [ ] [`source.csound-score`](lang/source.csound-score.js) (mit) — [upstream](https://github.com/nwhetsell/language-csound) — needs: `source.csound`\n* [ ] [`source.css.mss`](lang/source.css.mss.js) (mit)\n* [ ] [`source.css.postcss.sugarss`](lang/source.css.postcss.sugarss.js) (mit)\n* [ ] [`source.csswg`](lang/source.csswg.js) (cc0-1.0) — [upstream](https://github.com/tabatkins/bikeshed)\n* [ ] [`source.cuda-c++`](lang/source.cuda-c++.js) (bsd-3-clause) — [upstream](https://github.com/harrism/sublimetext-cuda-cpp) — needs: `source.c++`\n* [ ] [`source.cue`](lang/source.cue.js) (mit) — [upstream](https://github.com/cue-sh/vscode-cue)\n* [ ] [`source.cuesheet`](lang/source.cuesheet.js) (mit) — [upstream](https://github.com/relikd/CUE-Sheet_sublime)\n* [ ] [`source.curlrc`](lang/source.curlrc.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.curry`](lang/source.curry.js) (mit) — [upstream](https://github.com/fwcd/vscode-curry)\n* [ ] [`source.cwl`](lang/source.cwl.js) (mit)\n* [ ] [`source.cylc`](lang/source.cylc.js) (bsd-3-clause) — [upstream](https://github.com/cylc/Cylc.tmbundle)\n* [ ] [`source.cypher`](lang/source.cypher.js) (apache-2.0) — [upstream](https://github.com/fredbenenson/sublime-cypher)\n* [ ] [`source.cython`](lang/source.cython.js) — needs: `source.regexp.python`\n* [ ] [`source.d`](lang/source.d.js) — [upstream](https://github.com/textmate/d.tmbundle) — needs: `text.html.javadoc`\n* [ ] [`source.d2`](lang/source.d2.js) (bsd-3-clause) — [upstream](https://github.com/terrastruct/d2-vscode)\n* [ ] [`source.dart`](lang/source.dart.js) (bsd-3-clause) — [upstream](https://github.com/dart-lang/dart-syntax-highlight)\n* [ ] [`source.data-weave`](lang/source.data-weave.js) (mit) — [upstream](https://github.com/mulesoft-labs/data-weave-tmLanguage)\n* [ ] [`source.deb-control`](lang/source.deb-control.js) (mit) — [upstream](https://github.com/tsbarnes/language-debian)\n* [ ] [`source.denizenscript`](lang/source.denizenscript.js) (mit) — [upstream](https://github.com/DenizenScript/denizenscript-grammar)\n* [ ] [`source.desktop`](lang/source.desktop.js)\n* [ ] [`source.dircolors`](lang/source.dircolors.js) (mit)\n* [ ] [`source.ditroff`](lang/source.ditroff.js) (isc) — [upstream](https://github.com/Alhadis/language-roff) — needs: `source.ditroff.desc`, `text.roff`\n* [ ] [`source.ditroff.desc`](lang/source.ditroff.desc.js) (isc) — [upstream](https://github.com/Alhadis/language-roff)\n* [ ] [`source.dm`](lang/source.dm.js) (mit) — [upstream](https://github.com/spacestation13/dm-syntax)\n* [ ] [`source.dockerfile`](lang/source.dockerfile.js) (mit) — [upstream](https://github.com/asbjornenge/Docker.tmbundle)\n* [ ] [`source.dot`](lang/source.dot.js)\n* [ ] [`source.dotenv`](lang/source.dotenv.js) (isc) — [upstream](https://github.com/Alhadis/language-etc)\n* [ ] [`source.dune`](lang/source.dune.js) (mit) — [upstream](https://github.com/maelvls/vscode-dune)\n* [ ] [`source.dylan`](lang/source.dylan.js)\n* [ ] [`source.earthfile`](lang/source.earthfile.js) (mpl-2.0) — [upstream](https://github.com/earthly/earthfile-grammar)\n* [ ] [`source.ebnf`](lang/source.ebnf.js) (isc) — [upstream](https://github.com/Alhadis/language-grammars) — needs: `source.lex.regexp`\n* [ ] [`source.ecl`](lang/source.ecl.js) (apache-2.0) — [upstream](https://github.com/hpcc-systems/ecl-tmLanguage)\n* [ ] [`source.edgeql`](lang/source.edgeql.js) (mit) — [upstream](https://github.com/edgedb/edgedb-editor-plugin)\n* [ ] [`source.editorconfig`](lang/source.editorconfig.js) (mit) — [upstream](https://github.com/sindresorhus/atom-editorconfig)\n* [ ] [`source.eiffel`](lang/source.eiffel.js)\n* [ ] [`source.elixir`](lang/source.elixir.js) (apache-2.0) — [upstream](https://github.com/elixir-lang/elixir-tmbundle) — needs: `text.elixir`\n* [ ] [`source.elm`](lang/source.elm.js) (mit) — [upstream](https://github.com/elm-community/Elm.tmLanguage)\n* [ ] [`source.elvish`](lang/source.elvish.js) (bsd-2-clause) — [upstream](https://github.com/elves/elvish)\n* [ ] [`source.elvish-transcript`](lang/source.elvish-transcript.js) (bsd-2-clause) — [upstream](https://github.com/elves/elvish) — needs: `source.elvish`\n* [ ] [`source.emacs.lisp`](lang/source.emacs.lisp.js) (isc) — [upstream](https://github.com/Alhadis/language-emacs-lisp)\n* [ ] [`source.erlang`](lang/source.erlang.js) (apache-2.0) — [upstream](https://github.com/erlang-ls/grammar)\n* [ ] [`source.euphoria`](lang/source.euphoria.js) (mit) — [upstream](https://github.com/OpenEuphoria/vscode-euphoria)\n* [ ] [`source.factor`](lang/source.factor.js) (bsd-2-clause)\n* [ ] [`source.fan`](lang/source.fan.js) (mit)\n* [ ] [`source.fancy`](lang/source.fancy.js) (bsd-3-clause) — [upstream](https://github.com/fancy-lang/fancy-tmbundle)\n* [ ] [`source.faust`](lang/source.faust.js) (mit)\n* [ ] [`source.figfont`](lang/source.figfont.js) (isc) — [upstream](https://github.com/Alhadis/language-fontforge)\n* [ ] [`source.firestore`](lang/source.firestore.js) (mit)\n* [ ] [`source.firrtl`](lang/source.firrtl.js) (apache-2.0) — [upstream](https://github.com/chipsalliance/firrtl-syntax)\n* [ ] [`source.fish`](lang/source.fish.js) (mit)\n* [ ] [`source.fnl`](lang/source.fnl.js) (mit) — [upstream](https://github.com/kongeor/vsc-fennel)\n* [ ] [`source.fontdir`](lang/source.fontdir.js) (isc) — [upstream](https://github.com/Alhadis/language-fontforge) — needs: `source.xlfd`\n* [ ] [`source.fontforge`](lang/source.fontforge.js) (isc) — [upstream](https://github.com/Alhadis/language-fontforge)\n* [ ] [`source.forth`](lang/source.forth.js)\n* [ ] [`source.fortran`](lang/source.fortran.js)\n* [ ] [`source.fortran.modern`](lang/source.fortran.modern.js) — needs: `source.fortran`\n* [ ] [`source.fsharp`](lang/source.fsharp.js) (mit) — [upstream](https://github.com/ionide/ionide-fsgrammar)\n* [ ] [`source.fstar`](lang/source.fstar.js) (apache-2.0) — [upstream](https://github.com/FStarLang/atom-fstar)\n* [ ] [`source.ftl`](lang/source.ftl.js) (mit) — [upstream](https://github.com/macabeus/vscode-fluent)\n* [ ] [`source.futhark`](lang/source.futhark.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.gap`](lang/source.gap.js) — [upstream](https://github.com/dhowden/gap-tmbundle)\n* [ ] [`source.gcode`](lang/source.gcode.js) (mit) — [upstream](https://github.com/appliedengdesign/vscode-gcode-syntax)\n* [ ] [`source.gdb`](lang/source.gdb.js) (zlib) — [upstream](https://github.com/quarnster/SublimeGDB)\n* [ ] [`source.gdresource`](lang/source.gdresource.js) (mit) — [upstream](https://github.com/godotengine/godot-vscode-plugin)\n* [ ] [`source.gdscript`](lang/source.gdscript.js) (mit) — [upstream](https://github.com/godotengine/godot-vscode-plugin)\n* [ ] [`source.gedcom`](lang/source.gedcom.js) (apache-2.0) — [upstream](https://github.com/fguitton/vscode-gedcom)\n* [ ] [`source.gemfile-lock`](lang/source.gemfile-lock.js) (mit) — [upstream](https://github.com/hmarr/gemfile-lock-tmlanguage)\n* [ ] [`source.gemini`](lang/source.gemini.js) (mit) — [upstream](https://github.com/printfn/gemini-vscode)\n* [ ] [`source.generic-db`](lang/source.generic-db.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.genero-4gl`](lang/source.genero-4gl.js) (unlicense) — [upstream](https://github.com/FourjsGenero/GeneroFgl.tmbundle)\n* [ ] [`source.genero-per`](lang/source.genero-per.js) (unlicense) — [upstream](https://github.com/FourjsGenero/GeneroFgl.tmbundle)\n* [ ] [`source.gerber`](lang/source.gerber.js) (isc) — [upstream](https://github.com/Alhadis/language-pcb)\n* [ ] [`source.gf`](lang/source.gf.js) (mit) — [upstream](https://github.com/johnjcamilleri/language-gf)\n* [ ] [`source.git-revlist`](lang/source.git-revlist.js) (isc) — [upstream](https://github.com/Nixinova/NovaGrammars)\n* [ ] [`source.gitattributes`](lang/source.gitattributes.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`, `source.gitignore`\n* [ ] [`source.gitconfig`](lang/source.gitconfig.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `source.shell`\n* [ ] [`source.gitignore`](lang/source.gitignore.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.gjs`](lang/source.gjs.js) (mit) — [upstream](https://github.com/lifeart/vsc-ember-syntax) — needs: `source.js`\n* [ ] [`source.gleam`](lang/source.gleam.js) (apache-2.0) — [upstream](https://github.com/gleam-lang/vscode-gleam)\n* [ ] [`source.glsl`](lang/source.glsl.js) (unlicense) — [upstream](https://github.com/euler0/sublime-glsl)\n* [ ] [`source.gn`](lang/source.gn.js) (bsd-3-clause) — [upstream](https://github.com/devoncarew/language-gn)\n* [ ] [`source.gnuplot`](lang/source.gnuplot.js) (mit)\n* [ ] [`source.golo`](lang/source.golo.js) (mit) — [upstream](https://github.com/TypeUnsafe/sublime-golo)\n* [ ] [`source.gosu.2`](lang/source.gosu.2.js) (apache-2.0) — [upstream](https://github.com/jpcamara/Textmate-Gosu-Bundle)\n* [ ] [`source.grace`](lang/source.grace.js) (mit)\n* [ ] [`source.gremlin`](lang/source.gremlin.js) (isc) — [upstream](https://github.com/Alhadis/language-roff) — needs: `text.roff`\n* [ ] [`source.groovy`](lang/source.groovy.js)\n* [ ] [`source.groovy.gradle`](lang/source.groovy.gradle.js) (apache-2.0) — needs: `source.groovy`\n* [ ] [`source.gsc`](lang/source.gsc.js) (unlicense) — [upstream](https://github.com/Jake-NotTheMuss/CoDT7-Sublime)\n* [ ] [`source.gts`](lang/source.gts.js) (mit) — [upstream](https://github.com/lifeart/vsc-ember-syntax) — needs: `source.ts`\n* [ ] [`source.hack`](lang/source.hack.js) (mit) — [upstream](https://github.com/slackhq/vscode-hack) — needs: `text.html.basic`\n* [ ] [`source.haproxy-config`](lang/source.haproxy-config.js) (mit)\n* [ ] [`source.harbour`](lang/source.harbour.js) (mit)\n* [ ] [`source.haskell`](lang/source.haskell.js) (mit) — [upstream](https://github.com/atom-haskell/language-haskell)\n* [ ] [`source.hc`](lang/source.hc.js) (unlicense)\n* [ ] [`source.hcl`](lang/source.hcl.js) (mpl-2.0) — [upstream](https://github.com/hashicorp/syntax)\n* [ ] [`source.hcl.terraform`](lang/source.hcl.terraform.js) (mpl-2.0) — [upstream](https://github.com/hashicorp/syntax)\n* [ ] [`source.hlsl`](lang/source.hlsl.js) (mit)\n* [ ] [`source.hocon`](lang/source.hocon.js) (mit) — [upstream](https://github.com/jacobwgillespie/language-hocon)\n* [ ] [`source.hoon`](lang/source.hoon.js) (mit) — [upstream](https://github.com/pkova/hoon-grammar)\n* [ ] [`source.hosts`](lang/source.hosts.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.hql`](lang/source.hql.js) (mit)\n* [ ] [`source.httpspec`](lang/source.httpspec.js) (mit) — [upstream](https://github.com/samsalisbury/Sublime-HTTP) — needs: `source.json`\n* [ ] [`source.hx`](lang/source.hx.js) (mit) — [upstream](https://github.com/vshaxe/haxe-TmLanguage)\n* [ ] [`source.hxml`](lang/source.hxml.js) (mit) — [upstream](https://github.com/vshaxe/haxe-TmLanguage) — needs: `source.hx`\n* [ ] [`source.hy`](lang/source.hy.js) (mit) — [upstream](https://github.com/tshakalekholoane/vscode-hy)\n* [ ] [`source.iCalendar`](lang/source.iCalendar.js) (mit) — [upstream](https://github.com/kimsey0/iCalendar-sublime)\n* [ ] [`source.ice`](lang/source.ice.js) (bsd-3-clause) — [upstream](https://github.com/zeroc-ice/vscode-slice)\n* [ ] [`source.ideal`](lang/source.ideal.js) (isc) — [upstream](https://github.com/Alhadis/language-roff) — needs: `source.pic`, `text.roff`\n* [ ] [`source.idl`](lang/source.idl.js) (bsd-3-clause) — [upstream](https://github.com/mgalloy/idl.tmbundle)\n* [ ] [`source.idris`](lang/source.idris.js) (mit) — [upstream](https://github.com/idris-hackers/idris-sublime)\n* [ ] [`source.igor`](lang/source.igor.js) (bsd-3-clause) — [upstream](https://github.com/byte-physics/language-igor)\n* [ ] [`source.imba`](lang/source.imba.js) (mit) — [upstream](https://github.com/imba/imba-linguist-grammar)\n* [ ] [`source.inform7`](lang/source.inform7.js) (mit) — [upstream](https://github.com/erkyrath/language-inform7)\n* [ ] [`source.ini.npmrc`](lang/source.ini.npmrc.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.ink`](lang/source.ink.js) (mit) — [upstream](https://github.com/inkle/ink-tmlanguage)\n* [ ] [`source.inno`](lang/source.inno.js) (mit) — [upstream](https://github.com/idleberg/atom-language-innosetup) — needs: `source.pascal`\n* [ ] [`source.inputrc`](lang/source.inputrc.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.io`](lang/source.io.js)\n* [ ] [`source.ioke`](lang/source.ioke.js) (mit)\n* [ ] [`source.isabelle.root`](lang/source.isabelle.root.js) (bsd-2-clause) — [upstream](https://github.com/lsf37/Isabelle.tmbundle)\n* [ ] [`source.isabelle.theory`](lang/source.isabelle.theory.js) (bsd-2-clause) — [upstream](https://github.com/lsf37/Isabelle.tmbundle)\n* [ ] [`source.ispc`](lang/source.ispc.js) (bsd-3-clause) — [upstream](https://github.com/ispc/ispc.syntax)\n* [ ] [`source.j`](lang/source.j.js) (mit) — [upstream](https://github.com/tikkanz/JSyntax)\n* [ ] [`source.jai`](lang/source.jai.js) (mit) — [upstream](https://github.com/SogoCZE/Jails)\n* [ ] [`source.janet`](lang/source.janet.js) (mit) — [upstream](https://github.com/janet-lang/vscode-janet)\n* [ ] [`source.jasmin`](lang/source.jasmin.js) (wtfpl) — [upstream](https://github.com/atmarksharp/jasmin-sublime)\n* [ ] [`source.java-properties`](lang/source.java-properties.js) — [upstream](https://github.com/textmate/java.tmbundle)\n* [ ] [`source.jcl`](lang/source.jcl.js) (mit) — [upstream](https://github.com/spgennard/vscode_cobol)\n* [ ] [`source.jest.snap`](lang/source.jest.snap.js) (mit) — [upstream](https://github.com/jest-community/vscode-jest)\n* [ ] [`source.jflex`](lang/source.jflex.js) (bsd-2-clause) — [upstream](https://github.com/jflex-de/jflex.tmbundle) — needs: `source.java`\n* [ ] [`source.jison`](lang/source.jison.js) (mit) — needs: `source.jisonlex`\n* [ ] [`source.jisonlex`](lang/source.jisonlex.js) (mit) — needs: `source.jison`, `source.js`\n* [ ] [`source.jolie`](lang/source.jolie.js) (mit)\n* [ ] [`source.jq`](lang/source.jq.js) (mit) — [upstream](https://github.com/wader/language-jq)\n* [ ] [`source.js.objj`](lang/source.js.objj.js) — needs: `source.js`\n* [ ] [`source.json.comments`](lang/source.json.comments.js) (mit) — [upstream](https://github.com/DecimalTurn/vscode-jsonc-syntax-highlighting)\n* [ ] [`source.jsoniq`](lang/source.jsoniq.js) (apache-2.0) — [upstream](https://github.com/wcandillon/language-jsoniq)\n* [ ] [`source.jsonnet`](lang/source.jsonnet.js) (apache-2.0) — [upstream](https://github.com/google/language-jsonnet)\n* [ ] [`source.julia`](lang/source.julia.js) (mit) — [upstream](https://github.com/JuliaEditorSupport/atom-language-julia)\n* [ ] [`source.julia.console`](lang/source.julia.console.js) (mit) — [upstream](https://github.com/JuliaEditorSupport/atom-language-julia) — needs: `source.julia`, `source.shell`\n* [ ] [`source.just`](lang/source.just.js) (mit) — [upstream](https://github.com/nefrob/vscode-just)\n* [ ] [`source.kakscript`](lang/source.kakscript.js) (unlicense) — [upstream](https://github.com/kakoune-editor/language-kak)\n* [ ] [`source.kdl`](lang/source.kdl.js) (apache-2.0) — [upstream](https://github.com/kdl-org/vscode-kdl)\n* [ ] [`source.kerboscript`](lang/source.kerboscript.js) (mit) — [upstream](https://github.com/KSP-KOS/language-kerboscript)\n* [ ] [`source.keyvalues`](lang/source.keyvalues.js) (isc) — [upstream](https://github.com/Nixinova/NovaGrammars)\n* [ ] [`source.kickstart`](lang/source.kickstart.js) (mit) — [upstream](https://github.com/wgwoods/language-kickstart)\n* [ ] [`source.kusto`](lang/source.kusto.js) (apache-2.0) — [upstream](https://github.com/mmanela/kusto-sublime)\n* [ ] [`source.lark`](lang/source.lark.js) (isc) — [upstream](https://github.com/Alhadis/language-grammars)\n* [ ] [`source.lean`](lang/source.lean.js) (apache-2.0) — [upstream](https://github.com/leanprover/vscode-lean)\n* [ ] [`source.lean4`](lang/source.lean4.js) (apache-2.0) — [upstream](https://github.com/leanprover/vscode-lean4)\n* [ ] [`source.lex`](lang/source.lex.js) (isc) — [upstream](https://github.com/Alhadis/language-grammars) — needs: `source.c++`, `source.jflex`\n* [ ] [`source.lex.regexp`](lang/source.lex.regexp.js) (isc) — [upstream](https://github.com/Alhadis/language-grammars)\n* [ ] [`source.ligo`](lang/source.ligo.js) (mit) — [upstream](https://github.com/pewulfman/Ligo-grammar)\n* [ ] [`source.lilypond`](lang/source.lilypond.js) (mit) — [upstream](https://github.com/nwhetsell/linter-lilypond) — needs: `source.lisp`\n* [ ] [`source.lisp`](lang/source.lisp.js)\n* [ ] [`source.litcoffee`](lang/source.litcoffee.js) (mit) — [upstream](https://github.com/atom/language-coffee-script) — needs: `source.coffee`, `text.html.basic`\n* [ ] [`source.livecodescript`](lang/source.livecodescript.js) (bsd-3-clause) — [upstream](https://github.com/Ferruslogic/vscode-livecodescript)\n* [ ] [`source.livescript`](lang/source.livescript.js) (mit) — [upstream](https://github.com/paulmillr/LiveScript.tmbundle)\n* [ ] [`source.llvm`](lang/source.llvm.js) (mit) — [upstream](https://github.com/whitequark/llvm.tmbundle)\n* [ ] [`source.logos`](lang/source.logos.js) (mit) — [upstream](https://github.com/Cykey/Sublime-Logos) — needs: `source.c++`, `source.objc`\n* [ ] [`source.logtalk`](lang/source.logtalk.js)\n* [ ] [`source.lolcode`](lang/source.lolcode.js) (mit) — [upstream](https://github.com/KrazIvan/LOLCODE-grammar-vscode)\n* [ ] [`source.loomscript`](lang/source.loomscript.js) (mit)\n* [ ] [`source.lsl`](lang/source.lsl.js)\n* [ ] [`source.ltspice.symbol`](lang/source.ltspice.symbol.js) (isc) — [upstream](https://github.com/Alhadis/language-pcb)\n* [ ] [`source.luau`](lang/source.luau.js) (mit) — [upstream](https://github.com/JohnnyMorganz/Luau.tmLanguage)\n* [ ] [`source.m2`](lang/source.m2.js) (mit) — [upstream](https://github.com/Macaulay2/language-macaulay2)\n* [ ] [`source.m4`](lang/source.m4.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.m68k`](lang/source.m68k.js) (mit)\n* [ ] [`source.mask`](lang/source.mask.js) (mit) — needs: `source.js`, `text.html.basic`\n* [ ] [`source.mathematica`](lang/source.mathematica.js) (apache-2.0) — [upstream](https://github.com/shadanan/mathematica-tmbundle)\n* [ ] [`source.matlab`](lang/source.matlab.js) (bsd-2-clause) — [upstream](https://github.com/mathworks/MATLAB-Language-grammar)\n* [ ] [`source.maxscript`](lang/source.maxscript.js) (isc)\n* [ ] [`source.mc`](lang/source.mc.js) (mit)\n* [ ] [`source.mcfunction`](lang/source.mcfunction.js) (mit) — [upstream](https://github.com/MinecraftCommands/syntax-mcfunction)\n* [ ] [`source.mdx`](lang/source.mdx.js) (mit) — [upstream](https://github.com/wooorm/markdown-tm-language) — needs: `source.tsx`\n* [ ] [`source.mercury`](lang/source.mercury.js) (mit)\n* [ ] [`source.mermaid`](lang/source.mermaid.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid.c4c-diagram`, `source.mermaid.class-diagram`, `source.mermaid.er-diagram`, `source.mermaid.flowchart`, `source.mermaid.gantt`, `source.mermaid.gitgraph`, `source.mermaid.mindmap`, `source.mermaid.pie-chart`, `source.mermaid.requirement-diagram`, `source.mermaid.sequence-diagram`, `source.mermaid.state-diagram`, `source.mermaid.user-journey`\n* [ ] [`source.mermaid.c4c-diagram`](lang/source.mermaid.c4c-diagram.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid`, `source.mermaid.user-journey`, `source.wsd`\n* [ ] [`source.mermaid.class-diagram`](lang/source.mermaid.class-diagram.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid`, `source.mermaid.flowchart`\n* [ ] [`source.mermaid.er-diagram`](lang/source.mermaid.er-diagram.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid`\n* [ ] [`source.mermaid.flowchart`](lang/source.mermaid.flowchart.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid`\n* [ ] [`source.mermaid.gantt`](lang/source.mermaid.gantt.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid`, `source.mermaid.flowchart`\n* [ ] [`source.mermaid.gitgraph`](lang/source.mermaid.gitgraph.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.json`, `source.mermaid`\n* [ ] [`source.mermaid.mindmap`](lang/source.mermaid.mindmap.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid`, `source.mermaid.flowchart`\n* [ ] [`source.mermaid.pie-chart`](lang/source.mermaid.pie-chart.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid`\n* [ ] [`source.mermaid.requirement-diagram`](lang/source.mermaid.requirement-diagram.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid`\n* [ ] [`source.mermaid.sequence-diagram`](lang/source.mermaid.sequence-diagram.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.json`, `source.mermaid`\n* [ ] [`source.mermaid.state-diagram`](lang/source.mermaid.state-diagram.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid`\n* [ ] [`source.mermaid.user-journey`](lang/source.mermaid.user-journey.js) (isc) — [upstream](https://github.com/Alhadis/language-mermaid) — needs: `source.mermaid`\n* [ ] [`source.meson`](lang/source.meson.js) (apache-2.0) — [upstream](https://github.com/TingPing/language-meson)\n* [ ] [`source.miniyaml`](lang/source.miniyaml.js) (mit) — [upstream](https://github.com/OpenRA/atom-miniyaml)\n* [ ] [`source.mint`](lang/source.mint.js) (mit) — [upstream](https://github.com/mint-lang/mint-vscode) — needs: `source.css`, `source.css.scss`, `source.js`\n* [ ] [`source.ml`](lang/source.ml.js) — [upstream](https://github.com/textmate/standard-ml.tmbundle)\n* [ ] [`source.mligo`](lang/source.mligo.js) (mit) — [upstream](https://github.com/pewulfman/Ligo-grammar)\n* [ ] [`source.mlir`](lang/source.mlir.js) (apache-2.0) — [upstream](https://github.com/jpienaar/mlir-grammar)\n* [ ] [`source.mo`](lang/source.mo.js) (apache-2.0) — [upstream](https://github.com/dfinity/vscode-motoko)\n* [ ] [`source.modelica`](lang/source.modelica.js) (mit) — [upstream](https://github.com/BorisChumichev/modelicaSublimeTextPackage)\n* [ ] [`source.modula-3`](lang/source.modula-3.js) (bsd-3-clause) — [upstream](https://github.com/newgrammars/m3)\n* [ ] [`source.modula2`](lang/source.modula2.js) (mit) — [upstream](https://github.com/harogaston/Sublime-Modula-2)\n* [ ] [`source.mojo`](lang/source.mojo.js) (mit) — [upstream](https://github.com/modularml/mojo-syntax)\n* [ ] [`source.monkey`](lang/source.monkey.js) (mit)\n* [ ] [`source.moonbit`](lang/source.moonbit.js) (apache-2.0) — [upstream](https://github.com/moonbitlang/moonbit-tmLanguage)\n* [ ] [`source.moonscript`](lang/source.moonscript.js) (mit)\n* [ ] [`source.move`](lang/source.move.js) (mit) — [upstream](https://github.com/damirka/vscode-move-syntax)\n* [ ] [`source.mql5`](lang/source.mql5.js) (mit)\n* [ ] [`source.msg`](lang/source.msg.js) (mit) — [upstream](https://github.com/omnetpp/omnetpp-textmate-msg)\n* [ ] [`source.msl`](lang/source.msl.js) (mit) — [upstream](https://github.com/gen-angry/language-msl)\n* [ ] [`source.mupad`](lang/source.mupad.js) (mit) — [upstream](https://github.com/ccreutzig/sublime-MuPAD)\n* [ ] [`source.mzn`](lang/source.mzn.js) (mpl-2.0) — [upstream](https://github.com/Dekker1/vscode-minizinc)\n* [ ] [`source.nanorc`](lang/source.nanorc.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`, `injections.etc`\n* [ ] [`source.nasal`](lang/source.nasal.js) (mit) — [upstream](https://github.com/BobDotCom/Nasal.tmbundle)\n* [ ] [`source.nasl`](lang/source.nasl.js) (mit) — [upstream](https://github.com/tenable/sublimetext-nasl)\n* [ ] [`source.ncl`](lang/source.ncl.js) (mit)\n* [ ] [`source.ne`](lang/source.ne.js) (unlicense) — [upstream](https://github.com/Hardmath123/sublime-nearley)\n* [ ] [`source.ned`](lang/source.ned.js) (mit) — [upstream](https://github.com/omnetpp/omnetpp-textmate-ned)\n* [ ] [`source.nemerle`](lang/source.nemerle.js)\n* [ ] [`source.neon`](lang/source.neon.js) (isc) — [upstream](https://github.com/Alhadis/language-etc)\n* [ ] [`source.nesc`](lang/source.nesc.js) (mit) — needs: `source.c`\n* [ ] [`source.netlinx`](lang/source.netlinx.js) (mit)\n* [ ] [`source.netlinx.erb`](lang/source.netlinx.erb.js) (mit) — needs: `source.netlinx`\n* [ ] [`source.nextflow`](lang/source.nextflow.js) (mit) — needs: `source.nextflow-groovy`\n* [ ] [`source.nextflow-groovy`](lang/source.nextflow-groovy.js) (mit)\n* [ ] [`source.nginx`](lang/source.nginx.js) (mit) — [upstream](https://github.com/brandonwamboldt/sublime-nginx)\n* [ ] [`source.nim`](lang/source.nim.js) (mit) — [upstream](https://github.com/nim-lang/NimLime)\n* [ ] [`source.ninja`](lang/source.ninja.js) (mit)\n* [ ] [`source.nit`](lang/source.nit.js) (wtfpl)\n* [ ] [`source.nix`](lang/source.nix.js) (mit) — [upstream](https://github.com/sambacha/nix-linguist)\n* [ ] [`source.nr`](lang/source.nr.js) (apache-2.0) — [upstream](https://github.com/noir-lang/vscode-noir)\n* [ ] [`source.nsis`](lang/source.nsis.js) (apache-2.0)\n* [ ] [`source.nu`](lang/source.nu.js) (apache-2.0)\n* [ ] [`source.nunjucks`](lang/source.nunjucks.js) (mit)\n* [ ] [`source.nushell`](lang/source.nushell.js) (mit) — [upstream](https://github.com/hustcer/nu-grammar)\n* [ ] [`source.nut`](lang/source.nut.js) (mit)\n* [ ] [`source.objc++`](lang/source.objc++.js) — needs: `source.c++`, `source.objc`\n* [ ] [`source.objectscript`](lang/source.objectscript.js) (mit) — needs: `source.objectscript_macros`\n* [ ] [`source.objectscript_macros`](lang/source.objectscript_macros.js) (mit) — needs: `source.objectscript`\n* [ ] [`source.ocaml`](lang/source.ocaml.js) — needs: `source.camlp4.ocaml`\n* [ ] [`source.odin`](lang/source.odin.js) (mit) — [upstream](https://github.com/odin-lang/sublime-odin)\n* [ ] [`source.odin-ehr`](lang/source.odin-ehr.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.ooc`](lang/source.ooc.js) (bsd-2-clause)\n* [ ] [`source.opa`](lang/source.opa.js) (mit) — [upstream](https://github.com/mads379/opa.tmbundle)\n* [ ] [`source.opal`](lang/source.opal.js) (mit) — [upstream](https://github.com/artifactz/sublime-opal)\n* [ ] [`source.opentype`](lang/source.opentype.js) (isc) — [upstream](https://github.com/Alhadis/language-fontforge)\n* [ ] [`source.opts`](lang/source.opts.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.overpassql`](lang/source.overpassql.js) (mpl-2.0) — [upstream](https://github.com/nickswalker/overpassql-tmlanguage)\n* [ ] [`source.ox`](lang/source.ox.js) (mit)\n* [ ] [`source.oz`](lang/source.oz.js) (mit)\n* [ ] [`source.p4`](lang/source.p4.js) (mit)\n* [ ] [`source.pact`](lang/source.pact.js) (bsd-3-clause) — [upstream](https://github.com/kadena-io/pact-atom)\n* [ ] [`source.pan`](lang/source.pan.js) (mit)\n* [ ] [`source.papyrus.skyrim`](lang/source.papyrus.skyrim.js) (mit)\n* [ ] [`source.parrot.pir`](lang/source.parrot.pir.js)\n* [ ] [`source.pascal`](lang/source.pascal.js)\n* [ ] [`source.pawn`](lang/source.pawn.js) (mit)\n* [ ] [`source.pcb.board`](lang/source.pcb.board.js) (isc) — [upstream](https://github.com/Alhadis/language-pcb) — needs: `source.pcb.sexp`\n* [ ] [`source.pcb.schematic`](lang/source.pcb.schematic.js) (isc) — [upstream](https://github.com/Alhadis/language-pcb) — needs: `source.pcb.sexp`, `source.scheme`\n* [ ] [`source.pcb.sexp`](lang/source.pcb.sexp.js) (isc) — [upstream](https://github.com/Alhadis/language-pcb)\n* [ ] [`source.pddl`](lang/source.pddl.js) (mit) — [upstream](https://github.com/jan-dolejsi/vscode-pddl)\n* [ ] [`source.peggy`](lang/source.peggy.js) (mit) — [upstream](https://github.com/peggyjs/code-peggy-language) — needs: `source.js`\n* [ ] [`source.pep8`](lang/source.pep8.js) (wtfpl)\n* [ ] [`source.php.zephir`](lang/source.php.zephir.js) — [upstream](https://github.com/phalcon/zephir-sublime)\n* [ ] [`source.pic`](lang/source.pic.js) (isc) — [upstream](https://github.com/Alhadis/language-roff) — needs: `source.shell`, `text.html.basic`, `text.roff`\n* [ ] [`source.pig_latin`](lang/source.pig_latin.js) (mit)\n* [ ] [`source.pike`](lang/source.pike.js) (unlicense)\n* [ ] [`source.pip-requirements`](lang/source.pip-requirements.js) (mit) — [upstream](https://github.com/microsoft/vscode-python)\n* [ ] [`source.pkl`](lang/source.pkl.js) (apache-2.0) — [upstream](https://github.com/apple/pkl.tmbundle)\n* [ ] [`source.plist`](lang/source.plist.js) (mit) — [upstream](https://github.com/atom/language-property-list)\n* [ ] [`source.po`](lang/source.po.js)\n* [ ] [`source.pogoscript`](lang/source.pogoscript.js) (mit)\n* [ ] [`source.polar`](lang/source.polar.js) (apache-2.0) — [upstream](https://github.com/osohq/polar-grammar)\n* [ ] [`source.pony`](lang/source.pony.js) (bsd-2-clause) — [upstream](https://github.com/CausalityLtd/sublime-pony)\n* [ ] [`source.portugol`](lang/source.portugol.js) (mit) — [upstream](https://github.com/luisgbr1el/portugol-grammar)\n* [ ] [`source.postcss`](lang/source.postcss.js) (mit)\n* [ ] [`source.postscript`](lang/source.postscript.js) (isc) — [upstream](https://github.com/Alhadis/Atom-PostScript)\n* [ ] [`source.pov-ray sdl`](\u003clang/source.pov-ray sdl.js\u003e) (mit)\n* [ ] [`source.powerbuilder`](lang/source.powerbuilder.js) (mit) — [upstream](https://github.com/informaticon/PowerBuilder.tmbundle)\n* [ ] [`source.powershell`](lang/source.powershell.js) (mit) — [upstream](https://github.com/PowerShell/EditorSyntax)\n* [ ] [`source.praat`](lang/source.praat.js) (mit) — [upstream](https://github.com/orhunulusahin/praatvscode)\n* [ ] [`source.prisma`](lang/source.prisma.js) (apache-2.0) — [upstream](https://github.com/prisma/vscode-prisma)\n* [ ] [`source.processing`](lang/source.processing.js)\n* [ ] [`source.procfile`](lang/source.procfile.js) (bsd-3-clause) — [upstream](https://github.com/benspaulding/vscode-procfile) — needs: `source.shell`\n* [ ] [`source.prolog`](lang/source.prolog.js) (mpl-2.0)\n* [ ] [`source.prolog.eclipse`](lang/source.prolog.eclipse.js) (mpl-2.0) — needs: `source.prolog`\n* [ ] [`source.promela`](lang/source.promela.js) (mit) — [upstream](https://github.com/corbanmailloux/sublime-promela-spin)\n* [ ] [`source.proto`](lang/source.proto.js) (mit) — [upstream](https://github.com/zxh0/vscode-proto3)\n* [ ] [`source.puppet`](lang/source.puppet.js) (mit) — [upstream](https://github.com/russCloak/SublimePuppet)\n* [ ] [`source.purescript`](lang/source.purescript.js) (mit) — [upstream](https://github.com/purescript-contrib/atom-language-purescript)\n* [ ] [`source.python.kivy`](lang/source.python.kivy.js) (mit) — [upstream](https://github.com/p0lygun/kivy-language-grammer) — needs: `source.python`\n* [ ] [`source.q`](lang/source.q.js) (mit) — [upstream](https://github.com/komsit37/sublime-q)\n* [ ] [`source.qasm`](lang/source.qasm.js) (mit)\n* [ ] [`source.QB64`](lang/source.QB64.js) (mit) — [upstream](https://github.com/QB64Official/vscode)\n* [ ] [`source.ql`](lang/source.ql.js) (mit) — [upstream](https://github.com/github/vscode-codeql)\n* [ ] [`source.qmake`](lang/source.qmake.js)\n* [ ] [`source.qml`](lang/source.qml.js) (mit) — needs: `source.js`\n* [ ] [`source.qsharp`](lang/source.qsharp.js) (mit) — [upstream](https://github.com/microsoft/qsharp)\n* [ ] [`source.quake`](lang/source.quake.js) (bsd-3-clause)\n* [ ] [`source.quoting.raku`](lang/source.quoting.raku.js) — [upstream](https://github.com/perl6/atom-language-perl6) — needs: `source.raku`\n* [ ] [`source.racket`](lang/source.racket.js) (mit)\n* [ ] [`source.raku`](lang/source.raku.js) — [upstream](https://github.com/perl6/atom-language-perl6) — needs: `source.quoting.raku`\n* [ ] [`source.rascal`](lang/source.rascal.js) (bsd-2-clause) — [upstream](https://github.com/usethesource/rascal-syntax-highlighting)\n* [ ] [`source.rbs`](lang/source.rbs.js) (mit) — [upstream](https://github.com/soutaro/vscode-rbs-syntax)\n* [ ] [`source.reason`](lang/source.reason.js) (mit) — [upstream](https://github.com/reasonml-editor/language-reason)\n* [ ] [`source.rebol`](lang/source.rebol.js) (mit) — [upstream](https://github.com/Oldes/Sublime-REBOL)\n* [ ] [`source.record-jar`](lang/source.record-jar.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.red`](lang/source.red.js) (mit) — [upstream](https://github.com/Oldes/Sublime-Red)\n* [ ] [`source.redirects`](lang/source.redirects.js) (isc) — [upstream](https://github.com/Nixinova/NovaGrammars)\n* [ ] [`source.reg`](lang/source.reg.js) (mit)\n* [ ] [`source.regexp`](lang/source.regexp.js) (isc) — [upstream](https://github.com/Alhadis/language-regexp) — needs: `source.regexp.extended`, `source.regexp.posix`, `source.sy`\n* [ ] [`source.regexp.extended`](lang/source.regexp.extended.js) (isc) — [upstream](https://github.com/Alhadis/language-regexp) — needs: `source.regexp`\n* [ ] [`source.regexp.posix`](lang/source.regexp.posix.js) (isc) — [upstream](https://github.com/Alhadis/language-regexp) — needs: `source.regexp`\n* [ ] [`source.regexp.python`](lang/source.regexp.python.js) (mit) — [upstream](https://github.com/MagicStack/MagicPython)\n* [ ] [`source.rego`](lang/source.rego.js) (apache-2.0) — [upstream](https://github.com/open-policy-agent/vscode-opa)\n* [ ] [`source.religo`](lang/source.religo.js) (mit) — [upstream](https://github.com/pewulfman/Ligo-grammar)\n* [ ] [`source.renpy`](lang/source.renpy.js) (mit) — [upstream](https://github.com/williamd1k0/language-renpy) — needs: `source.regexp.python`\n* [ ] [`source.rescript`](lang/source.rescript.js) (mit) — [upstream](https://github.com/rescript-lang/rescript-vscode)\n* [ ] [`source.rexx`](lang/source.rexx.js) (mit) — [upstream](https://github.com/mblocker/rexx-sublime)\n* [ ] [`source.rez`](lang/source.rez.js) — [upstream](https://github.com/textmate/rez.tmbundle)\n* [ ] [`source.ring`](lang/source.ring.js) (mit)\n* [ ] [`source.roc`](lang/source.roc.js) (mit) — [upstream](https://github.com/ivan-demchenko/roc-vscode-unofficial)\n* [ ] [`source.ron`](lang/source.ron.js) (mit) — [upstream](https://github.com/a5huynh/vscode-ron)\n* [ ] [`source.rpgle`](lang/source.rpgle.js) (mit) — [upstream](https://github.com/barrettotte/vscode-ibmi-languages) — needs: `source.sql`\n* [ ] [`source.rpm-spec`](lang/source.rpm-spec.js) (mit) — needs: `source.changelogs.rpm-spec`, `source.shell`\n* [ ] [`source.sas`](lang/source.sas.js) (mit) — [upstream](https://github.com/rpardee/sas.tmbundle)\n* [ ] [`source.sass`](lang/source.sass.js) (mit) — [upstream](https://github.com/atom/language-sass) — needs: `source.css`\n* [ ] [`source.scad`](lang/source.scad.js) (mit) — [upstream](https://github.com/tbuser/openscad.tmbundle)\n* [ ] [`source.scala`](lang/source.scala.js) (mit) — [upstream](https://github.com/scala/vscode-scala-syntax)\n* [ ] [`source.scaml`](lang/source.scaml.js) (apache-2.0) — [upstream](https://github.com/scalate/Scalate.tmbundle) — needs: `source.scala`\n* [ ] [`source.scenic`](lang/source.scenic.js) (mit) — [upstream](https://github.com/UCSCFormalMethods/Scenic-tmLanguage)\n* [ ] [`source.scheme`](lang/source.scheme.js)\n* [ ] [`source.scilab`](lang/source.scilab.js)\n* [ ] [`source.scm`](lang/source.scm.js) (mit) — [upstream](https://github.com/jrieken/vscode-tree-sitter-query)\n* [ ] [`source.sdbl`](lang/source.sdbl.js) (mit) — [upstream](https://github.com/1c-syntax/vsc-language-1c-bsl)\n* [ ] [`source.sed`](lang/source.sed.js) (isc) — [upstream](https://github.com/Alhadis/language-sed)\n* [ ] [`source.sepolicy`](lang/source.sepolicy.js) (apache-2.0) — [upstream](https://github.com/google/selinux-policy-languages)\n* [ ] [`source.sfv`](lang/source.sfv.js) (isc) — [upstream](https://github.com/Alhadis/language-etc)\n* [ ] [`source.shaderlab`](lang/source.shaderlab.js) (mit)\n* [ ] [`source.shellcheckrc`](lang/source.shellcheckrc.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.shen`](lang/source.shen.js) (bsd-3-clause)\n* [ ] [`source.sieve`](lang/source.sieve.js) (isc) — [upstream](https://github.com/Alhadis/language-etc)\n* [ ] [`source.singularity`](lang/source.singularity.js) (mit) — [upstream](https://github.com/onnovalkering/vscode-singularity)\n* [ ] [`source.slang`](lang/source.slang.js) (apache-2.0) — [upstream](https://github.com/shader-slang/slang-vscode-extension)\n* [ ] [`source.slint`](lang/source.slint.js) (mit) — [upstream](https://github.com/slint-ui/slint-tmLanguage)\n* [ ] [`source.smali`](lang/source.smali.js) (mit) — [upstream](https://github.com/ShaneWilton/sublime-smali)\n* [ ] [`source.smalltalk`](lang/source.smalltalk.js) (mit)\n* [ ] [`source.smithy`](lang/source.smithy.js) (apache-2.0) — [upstream](https://github.com/awslabs/smithy-vscode)\n* [ ] [`source.smpl`](lang/source.smpl.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.smt`](lang/source.smt.js) (unlicense)\n* [ ] [`source.solidity`](lang/source.solidity.js) (mit) — [upstream](https://github.com/davidhq/SublimeEthereum)\n* [ ] [`source.solution`](lang/source.solution.js) (isc) — [upstream](https://github.com/Nixinova/NovaGrammars)\n* [ ] [`source.sourcepawn`](lang/source.sourcepawn.js) (mit) — [upstream](https://github.com/Sarrus1/sourcepawn-vscode)\n* [ ] [`source.sparql`](lang/source.sparql.js) (mit) — [upstream](https://github.com/peta/turtle.tmbundle) — needs: `source.turtle`\n* [ ] [`source.spin`](lang/source.spin.js) (zlib) — [upstream](https://github.com/bitbased/sublime-spintools)\n* [ ] [`source.sqf`](lang/source.sqf.js) (apache-2.0) — [upstream](https://github.com/JonBons/Sublime-SQF-Language)\n* [ ] [`source.ssh-config`](lang/source.ssh-config.js) (isc) — [upstream](https://github.com/Alhadis/language-etc)\n* [ ] [`source.stan`](lang/source.stan.js) (mit) — [upstream](https://github.com/stan-dev/atom-language-stan)\n* [ ] [`source.star`](lang/source.star.js) (isc) — [upstream](https://github.com/Alhadis/language-etc)\n* [ ] [`source.stata`](lang/source.stata.js) (mit) — [upstream](https://github.com/pschumm/Stata.tmbundle)\n* [ ] [`source.stl`](lang/source.stl.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.string-template`](lang/source.string-template.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.stylus`](lang/source.stylus.js) (mit)\n* [ ] [`source.supercollider`](lang/source.supercollider.js) (mit) — [upstream](https://github.com/supercollider/language-supercollider)\n* [ ] [`source.svelte`](lang/source.svelte.js) (mit) — [upstream](https://github.com/sebastinez/svelte-atom) — needs: `source.css`, `source.js`, `source.ts`\n* [ ] [`source.sway`](lang/source.sway.js) (apache-2.0) — [upstream](https://github.com/FuelLabs/sway-vscode-plugin)\n* [ ] [`source.sy`](lang/source.sy.js) (isc) — [upstream](https://github.com/Alhadis/language-regexp) — needs: `source.regexp`\n* [ ] [`source.systemverilog`](lang/source.systemverilog.js) (apache-2.0) — [upstream](https://github.com/TheClams/SystemVerilog)\n* [ ] [`source.tact`](lang/source.tact.js) (mit) — [upstream](https://github.com/tact-lang/tact-sublime)\n* [ ] [`source.talon`](lang/source.talon.js) (mit) — [upstream](https://github.com/mrob95/vscode-TalonScript)\n* [ ] [`source.tcl`](lang/source.tcl.js)\n* [ ] [`source.tea`](lang/source.tea.js) (apache-2.0) — needs: `source.js`, `text.html.basic`, `text.xml`\n* [ ] [`source.templ`](lang/source.templ.js) (mit) — [upstream](https://github.com/templ-go/templ-vscode) — needs: `source.go`\n* [ ] [`source.terra`](lang/source.terra.js) (bsd-3-clause)\n* [ ] [`source.textgrid`](lang/source.textgrid.js) (mit) — [upstream](https://github.com/orhunulusahin/praatvscode)\n* [ ] [`source.textproto`](lang/source.textproto.js) (mit) — [upstream](https://github.com/thejustinwalsh/textproto-grammar)\n* [ ] [`source.thrift`](lang/source.thrift.js)\n* [ ] [`source.tl`](lang/source.tl.js) (mit)\n* [ ] [`source.tla`](lang/source.tla.js) (mit)\n* [ ] [`source.tlverilog`](lang/source.tlverilog.js) (mit) — [upstream](https://github.com/adamint/tlv-vscode)\n* [ ] [`source.tm-properties`](lang/source.tm-properties.js) — [upstream](https://github.com/textmate/textmate.tmbundle)\n* [ ] [`source.toc`](lang/source.toc.js) (unlicense) — [upstream](https://github.com/nebularg/language-toc-wow)\n* [ ] [`source.toit`](lang/source.toit.js) (mit) — [upstream](https://github.com/toitware/ide-tools)\n* [ ] [`source.toml`](lang/source.toml.js) — [upstream](https://github.com/textmate/toml.tmbundle)\n* [ ] [`source.tsp`](lang/source.tsp.js) (mit) — [upstream](https://github.com/microsoft/typespec)\n* [ ] [`source.tsql`](lang/source.tsql.js) (mit) — [upstream](https://github.com/beau-witter/language-tsql)\n* [ ] [`source.tsx`](lang/source.tsx.js) (mit) — [upstream](https://github.com/Microsoft/TypeScript-TmLanguage)\n* [ ] [`source.turing`](lang/source.turing.js) (isc) — [upstream](https://github.com/Alhadis/language-turing)\n* [ ] [`source.turtle`](lang/source.turtle.js) (mit) — [upstream](https://github.com/peta/turtle.tmbundle)\n* [ ] [`source.txl`](lang/source.txl.js) (apache-2.0) — [upstream](https://github.com/MikeHoffert/Sublime-Text-TXL-syntax)\n* [ ] [`source.typst`](lang/source.typst.js) (apache-2.0) — [upstream](https://github.com/michidk/typst-grammar)\n* [ ] [`source.ur`](lang/source.ur.js) (mit)\n* [ ] [`source.v`](lang/source.v.js) (mit) — [upstream](https://github.com/0x9ef/vscode-vlang)\n* [ ] [`source.vala`](lang/source.vala.js) (mit) — [upstream](https://github.com/technosophos/Vala-TMBundle)\n* [ ] [`source.varnish.vcl`](lang/source.varnish.vcl.js) (mit) — [upstream](https://github.com/brandonwamboldt/sublime-varnish)\n* [ ] [`source.vba`](lang/source.vba.js) (mpl-2.0) — [upstream](https://github.com/serkonda7/vscode-vba)\n* [ ] [`source.vcard`](lang/source.vcard.js) (mit) — [upstream](https://github.com/cstrachan88/vscode-vcard)\n* [ ] [`source.velocity`](lang/source.velocity.js) (mit) — [upstream](https://github.com/animecyc/AtomLanguageVelocity)\n* [ ] [`source.verilog`](lang/source.verilog.js)\n* [ ] [`source.vhdl`](lang/source.vhdl.js)\n* [ ] [`source.vim-snippet`](lang/source.vim-snippet.js) (mit) — [upstream](https://github.com/Alhadis/language-viml)\n* [ ] [`source.viml`](lang/source.viml.js) (mit) — [upstream](https://github.com/Alhadis/language-viml)\n* [ ] [`source.vue`](lang/source.vue.js) (mit) — [upstream](https://github.com/vuejs/language-tools) — needs: `source.css`, `text.html.basic`\n* [ ] [`source.vyper`](lang/source.vyper.js) (mit) — [upstream](https://github.com/davidhq/SublimeEthereum)\n* [ ] [`source.wavefront.mtl`](lang/source.wavefront.mtl.js) (isc) — [upstream](https://github.com/Alhadis/language-wavefront)\n* [ ] [`source.wavefront.obj`](lang/source.wavefront.obj.js) (isc) — [upstream](https://github.com/Alhadis/language-wavefront)\n* [ ] [`source.wdl`](lang/source.wdl.js) (apache-2.0) — [upstream](https://github.com/stjude-rust-labs/sprocket-vscode)\n* [ ] [`source.webassembly`](lang/source.webassembly.js) (isc) — [upstream](https://github.com/Alhadis/language-webassembly)\n* [ ] [`source.webidl`](lang/source.webidl.js) (mit) — [upstream](https://github.com/andik/IDL-Syntax)\n* [ ] [`source.wgetrc`](lang/source.wgetrc.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`source.wgsl`](lang/source.wgsl.js) (mit) — [upstream](https://github.com/wgsl-analyzer/wgsl-analyzer)\n* [ ] [`source.whiley`](lang/source.whiley.js) (apache-2.0) — [upstream](https://github.com/Whiley/WhileySyntaxBundle)\n* [ ] [`source.win32-messages`](lang/source.win32-messages.js) (isc) — [upstream](https://github.com/Nixinova/NovaGrammars)\n* [ ] [`source.wit`](lang/source.wit.js) (apache-2.0) — [upstream](https://github.com/bytecodealliance/vscode-wit)\n* [ ] [`source.witcherscript`](lang/source.witcherscript.js) (mit) — [upstream](https://github.com/ADawesomeguy/witcherscript-grammar)\n* [ ] [`source.wollok`](lang/source.wollok.js) (mit)\n* [ ] [`source.wren`](lang/source.wren.js) (mit) — [upstream](https://github.com/Nelarius/vscode-wren)\n* [ ] [`source.wsd`](lang/source.wsd.js) (mit) — [upstream](https://github.com/qjebbs/vscode-plantuml)\n* [ ] [`source.x10`](lang/source.x10.js) (apache-2.0)\n* [ ] [`source.x86`](lang/source.x86.js) (mit) — [upstream](https://github.com/calculuswhiz/Assembly-Syntax-Definition)\n* [ ] [`source.xc`](lang/source.xc.js) — needs: `source.c`\n* [ ] [`source.xlfd`](lang/source.xlfd.js) (isc) — [upstream](https://github.com/Alhadis/language-fontforge)\n* [ ] [`source.xmake`](lang/source.xmake.js) (mit) — [upstream](https://github.com/xmake-io/xmake-lua.tmbundle)\n* [ ] [`source.xojo`](lang/source.xojo.js) (apache-2.0) — [upstream](https://github.com/jimmckay/XojoSyntaxTM)\n* [ ] [`source.xq`](lang/source.xq.js) (apache-2.0) — [upstream](https://github.com/wcandillon/language-jsoniq)\n* [ ] [`source.xtend`](lang/source.xtend.js) (mit)\n* [ ] [`source.yacc`](lang/source.yacc.js) (isc) — [upstream](https://github.com/Alhadis/language-grammars) — needs: `source.c++`, `source.java`\n* [ ] [`source.yaml.salt`](lang/source.yaml.salt.js) (mit) — [upstream](https://github.com/saltstack/atom-salt) — needs: `source.python`\n* [ ] [`source.yang`](lang/source.yang.js) (mit)\n* [ ] [`source.yara`](lang/source.yara.js) (mit) — [upstream](https://github.com/infosec-intern/vscode-yara)\n* [ ] [`source.yasnippet`](lang/source.yasnippet.js) (isc) — [upstream](https://github.com/Alhadis/language-emacs-lisp) — needs: `source.emacs.lisp`\n* [ ] [`source.yul`](lang/source.yul.js) (mit) — [upstream](https://github.com/davidhq/SublimeEthereum)\n* [ ] [`source.zap`](lang/source.zap.js)\n* [ ] [`source.zeek`](lang/source.zeek.js) (bsd-3-clause) — [upstream](https://github.com/zeek/zeek-sublime)\n* [ ] [`source.zenscript`](lang/source.zenscript.js) (mit) — [upstream](https://github.com/CraftTweaker/ZenScript-tmLanguage)\n* [ ] [`source.zig`](lang/source.zig.js) (mit) — [upstream](https://github.com/ziglang/sublime-zig-language)\n* [ ] [`source.zil`](lang/source.zil.js)\n* [ ] [`text.adblock`](lang/text.adblock.js) (mit) — [upstream](https://github.com/AdguardTeam/VscodeAdblockSyntax)\n* [ ] [`text.bibtex`](lang/text.bibtex.js) — [upstream](https://github.com/textmate/latex.tmbundle)\n* [ ] [`text.browserslist`](lang/text.browserslist.js) (mit) — [upstream](https://github.com/browserslist/browserslist-vscode)\n* [ ] [`text.cfml.basic`](lang/text.cfml.basic.js) (mit)\n* [ ] [`text.checksums`](lang/text.checksums.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`text.codeowners`](lang/text.codeowners.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`\n* [ ] [`text.conllu`](lang/text.conllu.js) (apache-2.0)\n* [ ] [`text.crontab`](lang/text.crontab.js)\n* [ ] [`text.dfy.dafny`](lang/text.dfy.dafny.js) (mit) — [upstream](https://github.com/DafnyVSCode/Dafny-VSCode)\n* [ ] [`text.elixir`](lang/text.elixir.js) (apache-2.0) — [upstream](https://github.com/elixir-lang/elixir-tmbundle) — needs: `source.elixir`\n* [ ] [`text.eml.basic`](lang/text.eml.basic.js) (mit) — [upstream](https://github.com/mariozaizar/language-eml)\n* [ ] [`text.gherkin.feature`](lang/text.gherkin.feature.js) (mit) — [upstream](https://github.com/cucumber/cucumber-tmbundle)\n* [ ] [`text.grammarkdown`](lang/text.grammarkdown.js) (isc) — [upstream](https://github.com/Alhadis/language-grammars)\n* [ ] [`text.haml`](lang/text.haml.js) (mit) — needs: `source.ruby`\n* [ ] [`text.html.asciidoc`](lang/text.html.asciidoc.js) (mit) — [upstream](https://github.com/zuckschwerdt/asciidoc.tmbundle) — needs: `text.html.basic`\n* [ ] [`text.html.asdoc`](lang/text.html.asdoc.js) (mit) — [upstream](https://github.com/simongregory/actionscript3-tmbundle) — needs: `text.html.basic`\n* [ ] [`text.html.asp`](lang/text.html.asp.js) — needs: `source.asp`, `text.html.basic`\n* [ ] [`text.html.cfm`](lang/text.html.cfm.js) (mit) — needs: `source.cfscript`, `text.cfml.basic`\n* [ ] [`text.html.creole`](lang/text.html.creole.js) (mit) — [upstream](https://github.com/Siddley/Creole) — needs: `text.html.basic`\n* [ ] [`text.html.cshtml`](lang/text.html.cshtml.js) (mit) — [upstream](https://github.com/github-linguist/razor-plus) — needs: `source.cs`, `text.html.basic`\n* [ ] [`text.html.django`](lang/text.html.django.js) — needs: `text.html.basic`\n* [ ] [`text.html.ecmarkup`](lang/text.html.ecmarkup.js) (isc) — [upstream](https://github.com/Alhadis/language-etc) — needs: `etc`, `source.yaml`, `text.grammarkdown`, `text.html.basic`\n* [ ] [`text.html.ecr`](lang/text.html.ecr.js) (mit) — [upstream](https://github.com/atom-crystal/language-crystal) — needs: `source.crystal`, `text.html.basic`\n* [ ] [`text.html.edge`](lang/text.html.edge.js) (mit) — [upstream](https://github.com/edge-js/edge-vscode)\n* [ ] [`text.html.elixir`](lang/text.html.elixir.js) (apache-2.0) — [upstream](https://github.com/elixir-lang/elixir-tmbundle) — needs: `text.elixir`, `text.html.basic`\n* [ ] [`text.html.erb`](lang/text.html.erb.js) (mit) — [upstream](https://github.com/atom/language-ruby) — needs: `source.ruby`, `text.html.basic`\n* [ ] [`text.html.ftl`](lang/text.html.ftl.js) (mit) — needs: `text.html.basic`\n* [ ] [`text.html.handlebars`](lang/text.html.handlebars.js) (mit) — [upstream](https://github.com/daaain/Handlebars) — needs: `text.html.basic`\n* [ ] [`text.html.javadoc`](lang/text.html.javadoc.js)\n* [ ] [`text.html.js`](lang/text.html.js.js) (mit) — needs: `text.html.basic`\n* [ ] [`text.html.jsp`](lang/text.html.jsp.js) — [upstream](https://github.com/textmate/java.tmbundle) — needs: `text.html.basic`\n* [ ] [`text.html.jte`](lang/text.html.jte.js) (apache-2.0) — [upstream](https://github.com/maj2c/jte-template-syntax-highlight) — needs: `source.java`, `text.html.basic`\n* [ ] [`text.html.liquid`](lang/text.html.liquid.js) (mit) — [upstream](https://github.com/Shopify/liquid-tm-grammar) — needs: `text.html.basic`\n* [ ] [`text.html.mako`](lang/text.html.mako.js) (mit) — needs: `text.html.basic`\n* [ ] [`text.html.markdown.source.gfm.apib`](lang/text.html.markdown.source.gfm.apib.js) (mit) — [upstream](https://github.com/apiaryio/api-blueprint-sublime-plugin) — needs: `source.js`, `text.html.markdown.source.gfm.mson`\n* [ ] [`text.html.markdown.source.gfm.mson`](lang/text.html.markdown.source.gfm.mson.js) (mit) — [upstream](https://github.com/apiaryio/api-blueprint-sublime-plugin)\n* [ ] [`text.html.mediawiki`](lang/text.html.mediawiki.js)\n* [ ] [`text.html.nunjucks`](lang/text.html.nunjucks.js) (mit) — needs: `source.nunjucks`, `text.html.basic`\n* [ ] [`text.html.php.blade`](lang/text.html.php.blade.js) (mit) — needs: `text.html.basic`\n* [ ] [`text.html.riot`](lang/text.html.riot.js) (mit)\n* [ ] [`text.html.slash`](lang/text.html.slash.js) (mit) — needs: `text.html.basic`\n* [ ] [`text.html.smarty`](lang/text.html.smarty.js) — needs: `text.html.basic`\n* [ ] [`text.html.soy`](lang/text.html.soy.js) (mit) — needs: `text.html.basic`\n* [ ] [`text.html.statamic`](lang/text.html.statamic.js) (mit) — [upstream](https://github.com/Stillat/vscode-antlers-language-server) — needs: `text.html.basic`\n* [ ] [`text.html.twig`](lang/text.html.twig.js) (bsd-3-clause) — [upstream](https://github.com/Anomareh/PHP-Twig.tmbundle)\n* [ ] [`text.jade`](lang/text.jade.js) (mit) — needs: `source.js`, `text.html.basic`\n* [ ] [`text.marko`](lang/text.marko.js) (mit) — [upstream](https://github.com/marko-js/marko-tmbundle) — needs: `source.js`\n* [ ] [`text.muse`](lang/text.muse.js) (isc) — [upstream](https://github.com/Alhadis/language-emacs-lisp)\n* [ ] [`text.python.console`](lang/text.python.console.js) (mit) — [upstream](https://github.com/MagicStack/MagicPython) — needs: `source.python`\n* [ ] [`text.python.traceback`](lang/text.python.traceback.js) (mit) — [upstream](https://github.com/MagicStack/MagicPython) — needs: `source.python`\n* [ ] [`text.rdoc`](lang/text.rdoc.js) (mit)\n* [ ] [`text.restructuredtext`](lang/text.restructuredtext.js) (mit) — [upstream](https://github.com/Lukasa/language-restructuredtext)\n* [ ] [`text.robot`](lang/text.robot.js) (apache-2.0) — [upstream](https://github.com/shellderp/sublime-robot-plugin)\n* [ ] [`text.robots-txt`](lang/text.robots-txt.js) (isc) — [upstream](https://github.com/Nixinova/NovaGrammars)\n* [ ] [`text.roff`](lang/text.roff.js) (isc) — [upstream](https://github.com/Alhadis/language-roff) — needs: `source.ditroff`, `source.gremlin`, `source.ideal`, `source.pic`\n* [ ] [`text.rtf`](lang/text.rtf.js) (mit) — [upstream](https://github.com/nwhetsell/language-rtf)\n* [ ] [`text.runoff`](lang/text.runoff.js) (isc) — [upstream](https://github.com/Alhadis/language-roff)\n* [ ] [`text.sfd`](lang/text.sfd.js) (isc) — [upstream](https://github.com/Alhadis/language-fontforge) — needs: `source.fontforge`\n* [ ] [`text.shell-session`](lang/text.shell-session.js) (mit) — [upstream](https://github.com/atom/language-shellscript) — needs: `source.shell`\n* [ ] [`text.slim`](lang/text.slim.js) (mit) — needs: `text.html.basic`\n* [ ] [`text.srt`](lang/text.srt.js) (isc) — [upstream](https://github.com/Alhadis/language-subtitles) — needs: `text.html.basic`\n* [ ] [`text.tex`](lang/text.tex.js) — [upstream](https://github.com/textmate/latex.tmbundle) — needs: `source.r`\n* [ ] [`text.tex.latex`](lang/text.tex.latex.js) — [upstream](https://github.com/textmate/latex.tmbundle) — needs: `text.tex`\n* [ ] [`text.tex.latex.haskell`](lang/text.tex.latex.haskell.js) (mit) — [upstream](https://github.com/atom-haskell/language-haskell) — needs: `source.haskell`, `text.tex.latex`\n* [ ] [`text.tex.latex.sweave`](lang/text.tex.latex.sweave.js) — [upstream](https://github.com/textmate/sweave.tmbundle) — needs: `source.r`, `text.tex.latex`\n* [ ] [`text.texinfo`](lang/text.texinfo.js) (isc) — [upstream](https://github.com/Alhadis/language-texinfo)\n* [ ] [`text.vim-help`](lang/text.vim-help.js) (mit) — [upstream](https://github.com/Alhadis/language-viml) — needs: `source.viml`\n* [ ] [`text.vtt`](lang/text.vtt.js) (isc) — [upstream](https://github.com/Alhadis/language-subtitles) — needs: `text.html.basic`\n* [ ] [`text.xml.ant`](lang/text.xml.ant.js) (mit) — needs: `text.xml`\n* [ ] [`text.xml.plist`](lang/text.xml.plist.js) (mit) — [upstream](https://github.com/atom/language-property-list) — needs: `text.xml`\n* [ ] [`text.xml.pom`](lang/text.xml.pom.js) — needs: `source.groovy`, `text.xml`\n* [ ] [`text.xml.xsl`](lang/text.xml.xsl.js) — needs: `text.xml`\n* [ ] [`text.zone_file`](lang/text.zone_file.js) (mit) — [upstream](https://github.com/sixty4k/st2-zonefile)\n\n\u003c!--support end--\u003e\n\n## Compatibility\n\nThis project is compatible with maintained versions of Node.js.\n\nWhen we cut a new major release,\nwe drop support for unmaintained versions of Node.\nThis means we try to keep the current release line,\n`wooorm@starry-night@3`,\ncompatible with Node.js 16.\n\nYou can pass your own TextMate grammars,\nprovided that they work with\n[`vscode-textmate`][github-vscode-textmate],\nand that they have the added fields `extensions`,\n`names`,\nand `scopeName`\n(see types for the definitions and the grammars in `lang/` for examples).\n\n## Security\n\nThis package is safe.\n\n## Related\n\n* [`lowlight`][github-lowlight]\n  — similar but based on `highlight.js`\n* [`refractor`][github-refractor]\n  — similar but based on `Prism`\n\n## Contribute\n\nYes please!\nSee [How to Contribute to Open Source][opensource-guide-contribute].\n\n## License\n\nThe grammars included in this package are covered by their repositories’\nrespective licenses,\nwhich are permissive\n(`apache-2.0`, `mit`, etc),\nand made available in [`notice`][file-notice].\n\nAll other files [MIT][file-license] © [Titus Wormer][wooorm]\n\n\u003cbr\u003e\n\n[![](media/slice-3.jpg)][artsandculture-google-starry-night]\n\n\u003c!-- Definitions --\u003e\n\n[api-all]: #all\n\n[api-common]: #common\n\n[api-create-starry-night]: #createstarrynightgrammars-options\n\n[api-get-oniguruma-url]: #getonigurumaurl\n\n[api-grammar]: #grammar\n\n[api-options]: #options\n\n[artsandculture-google-starry-night]: https://artsandculture.google.com/asset/the-starry-night/bgEuwDxel93-Pg\n\n[badge-build-image]: https://github.com/wooorm/starry-night/workflows/main/badge.svg\n\n[badge-build-url]: https://github.com/wooorm/starry-night/actions\n\n[badge-coverage-image]: https://img.shields.io/codecov/c/github/wooorm/starry-night.svg\n\n[badge-coverage-url]: https://codecov.io/github/wooorm/starry-night\n\n[badge-downloads-image]: https://img.shields.io/npm/dm/@wooorm/starry-night.svg\n\n[badge-downloads-url]: https://www.npmjs.com/package/@wooorm/starry-night\n\n[badge-size-image]: https://img.shields.io/bundlejs/size/@wooorm/starry-night?exports=createStarryNight\n\n[badge-size-url]: https://bundlejs.com/?q=@wooorm/starry-night\n\n[esmsh]: https://esm.sh\n\n[file-license]: license\n\n[file-notice]: notice\n\n[github-gist-esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c\n\n[github-hast]: https://github.com/syntax-tree/hast\n\n[github-hast-root]: https://github.com/syntax-tree/hast#root\n\n[github-hast-util-to-dom]: https://github.com/syntax-tree/hast-util-to-dom\n\n[github-hast-util-to-html]: https://github.com/syntax-tree/hast-util-to-html\n\n[github-hast-util-to-jsx-runtime]: https://github.com/syntax-tree/hast-util-to-jsx-runtime\n\n[github-linguist-languages-yml]: https://github.com/github-linguist/linguist/blob/b5432eb/lib/linguist/languages.yml#L4031\n\n[github-lowlight]: https://github.com/wooorm/lowlight\n\n[github-markdown-tm-language]: https://github.com/wooorm/markdown-tm-language\n\n[github-pages-license]: https://github.com/github/pages-gem/issues/160#issuecomment-134565796\n\n[github-pages-pygments]: https://github.com/github/pages-gem/pull/79#issuecomment-85997762\n\n[github-refractor]: https://github.com/wooorm/refractor\n\n[github-rehype]: https://github.com/rehypejs/rehype\n\n[github-rehype-starry-night]: https://github.com/rehypejs/rehype-starry-night\n\n[github-shiki]: https://github.com/shikijs","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwooorm%2Fstarry-night","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwooorm%2Fstarry-night","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwooorm%2Fstarry-night/lists"}