Add built-in language grammar extensions for C#, F#, HTML, and Javascript. (#18216)

This commit is contained in:
Cory Rivera
2022-02-04 16:44:47 -08:00
committed by GitHub
parent 6c8e2bf8f3
commit 7bd5968faa
39 changed files with 22564 additions and 3 deletions

View File

@@ -0,0 +1,3 @@
build/**
test/**
cgmanifest.json

View File

@@ -0,0 +1,44 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
// @ts-check
'use strict';
var updateGrammar = require('vscode-grammar-updater');
function patchGrammar(grammar) {
let patchCount = 0;
let visit = function (rule, parent) {
if (rule.name === 'source.js' || rule.name === 'source.css') {
if (parent.parent && parent.parent.property === 'endCaptures') {
rule.name = rule.name + '-ignored-vscode';
patchCount++;
}
}
for (let property in rule) {
let value = rule[property];
if (typeof value === 'object') {
visit(value, { node: rule, property: property, parent: parent });
}
}
};
let repository = grammar.repository;
for (let key in repository) {
visit(repository[key], { node: repository, property: key, parent: undefined });
}
if (patchCount !== 6) {
console.warn(`Expected to patch 6 occurrences of source.js & source.css: Was ${patchCount}`);
}
return grammar;
}
const tsGrammarRepo = 'textmate/html.tmbundle';
const grammarPath = 'Syntaxes/HTML.plist';
updateGrammar.update(tsGrammarRepo, grammarPath, './syntaxes/html.tmLanguage.json', grammar => patchGrammar(grammar));

View File

@@ -0,0 +1,32 @@
{
"registrations": [
{
"component": {
"type": "git",
"git": {
"name": "textmate/html.tmbundle",
"repositoryUrl": "https://github.com/textmate/html.tmbundle",
"commitHash": "0c3d5ee54de3a993f747f54186b73a4d2d3c44a2"
}
},
"licenseDetail": [
"Copyright (c) textmate-html.tmbundle project authors",
"",
"If not otherwise specified (see below), files in this repository fall under the following license:",
"",
"Permission to copy, use, modify, sell and distribute this",
"software is granted. This software is provided \"as is\" without",
"express or implied warranty, and with no claim as to its",
"suitability for any purpose.",
"",
"An exception is made for files in readable text which contain their own license information,",
"or files where an accompanying file exists (in the same directory) with a \"-license\" suffix added",
"to the base-name name of the original file, and an extension of txt, html, or similar. For example",
"\"tidy\" is accompanied by \"tidy-license.txt\"."
],
"license": "TextMate Bundle License",
"version": "0.0.0"
}
],
"version": 1
}

View File

@@ -0,0 +1,55 @@
{
"comments": {
"blockComment": [ "<!--", "-->" ]
},
"brackets": [
["<!--", "-->"],
["<", ">"],
["{", "}"],
["(", ")"]
],
"autoClosingPairs": [
{ "open": "{", "close": "}"},
{ "open": "[", "close": "]"},
{ "open": "(", "close": ")" },
{ "open": "'", "close": "'" },
{ "open": "\"", "close": "\"" },
{ "open": "<!--", "close": "-->", "notIn": [ "comment", "string" ]}
],
"surroundingPairs": [
{ "open": "'", "close": "'" },
{ "open": "\"", "close": "\"" },
{ "open": "{", "close": "}"},
{ "open": "[", "close": "]"},
{ "open": "(", "close": ")" },
{ "open": "<", "close": ">" }
],
"colorizedBracketPairs": [
],
"folding": {
"markers": {
"start": "^\\s*<!--\\s*#region\\b.*-->",
"end": "^\\s*<!--\\s*#endregion\\b.*-->"
}
},
"wordPattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\s]+)",
"onEnterRules": [
{
"beforeText": { "pattern": "<(?!(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr))([_:\\w][_:\\w-.\\d]*)(?:(?:[^'\"/>]|\"[^\"]*\"|'[^']*')*?(?!\\/)>)[^<]*$", "flags": "i" },
"afterText": { "pattern": "^<\\/([_:\\w][_:\\w-.\\d]*)\\s*>", "flags": "i" },
"action": {
"indent": "indentOutdent"
}
},
{
"beforeText": { "pattern": "<(?!(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr))([_:\\w][_:\\w-.\\d]*)(?:(?:[^'\"/>]|\"[^\"]*\"|'[^']*')*?(?!\\/)>)[^<]*$", "flags": "i" },
"action": {
"indent": "indent"
}
}
],
"indentationRules": {
"increaseIndentPattern": "<(?!\\?|(?:area|base|br|col|frame|hr|html|img|input|keygen|link|menuitem|meta|param|source|track|wbr)\\b|[^>]*\\/>)([-_\\.A-Za-z0-9]+)(?=\\s|>)\\b[^>]*>(?!.*<\\/\\1>)|<!--(?!.*-->)|\\{[^}\"']*$",
"decreaseIndentPattern": "^\\s*(<\\/(?!html)[-_\\.A-Za-z0-9]+\\b[^>]*>|-->|\\})"
}
}

View File

@@ -0,0 +1,85 @@
{
"name": "html",
"displayName": "%displayName%",
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
"license": "MIT",
"engines": {
"vscode": "0.10.x"
},
"scripts": {
"update-grammar": "node ./build/update-grammar.js"
},
"contributes": {
"languages": [
{
"id": "html",
"extensions": [
".html",
".htm",
".shtml",
".xhtml",
".xht",
".mdoc",
".jsp",
".asp",
".aspx",
".jshtm",
".volt",
".ejs",
".rhtml"
],
"aliases": [
"HTML",
"htm",
"html",
"xhtml"
],
"mimetypes": [
"text/html",
"text/x-jshtm",
"text/template",
"text/ng-template",
"application/xhtml+xml"
],
"configuration": "./language-configuration.json"
}
],
"grammars": [
{
"scopeName": "text.html.basic",
"path": "./syntaxes/html.tmLanguage.json",
"embeddedLanguages": {
"text.html": "html",
"source.css": "css",
"source.js": "javascript",
"source.python": "python",
"source.smarty": "smarty"
},
"tokenTypes": {
"meta.tag string.quoted": "other"
}
},
{
"language": "html",
"scopeName": "text.html.derivative",
"path": "./syntaxes/html-derivative.tmLanguage.json",
"embeddedLanguages": {
"text.html": "html",
"source.css": "css",
"source.js": "javascript",
"source.python": "python",
"source.smarty": "smarty"
},
"tokenTypes": {
"meta.tag string.quoted": "other"
}
}
]
},
"repository": {
"type": "git",
"url": "https://github.com/microsoft/vscode.git"
}
}

View File

@@ -0,0 +1,4 @@
{
"displayName": "HTML Language Basics",
"description": "Provides syntax highlighting, bracket matching & snippets in HTML files."
}

View File

@@ -0,0 +1,49 @@
{
"information_for_contributors": [
"This file has been converted from https://github.com/textmate/html.tmbundle/blob/master/Syntaxes/HTML%20%28Derivative%29.tmLanguage",
"If you want to provide a fix or improvement, please create a pull request against the original repository.",
"Once accepted there, we are happy to receive an update request."
],
"version": "https://github.com/textmate/html.tmbundle/commit/390c8870273a2ae80244dae6db6ba064a802f407",
"name": "HTML (Derivative)",
"scopeName": "text.html.derivative",
"injections": {
"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)": {
"comment": "Uses R: to ensure this matches after any other injections.",
"patterns": [
{
"match": "<",
"name": "invalid.illegal.bad-angle-bracket.html"
}
]
}
},
"patterns": [
{
"include": "text.html.basic#core-minus-invalid"
},
{
"begin": "(</?)(\\w[^\\s>]*)(?<!/)",
"beginCaptures": {
"1": {
"name": "punctuation.definition.tag.begin.html"
},
"2": {
"name": "entity.name.tag.html"
}
},
"end": "((?: ?/)?>)",
"endCaptures": {
"1": {
"name": "punctuation.definition.tag.end.html"
}
},
"name": "meta.tag.other.unrecognized.html.derivative",
"patterns": [
{
"include": "text.html.basic#attribute"
}
]
}
]
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1