Родитель
f99fd366af
Коммит
ae05fdc332
|
@ -29,6 +29,7 @@ const dirs = [
|
|||
'extensions/import',
|
||||
'extensions/integration-tests',
|
||||
'extensions/ipynb',
|
||||
'extensions/javascript',
|
||||
'extensions/json-language-features',
|
||||
'extensions/json-language-features/server',
|
||||
'extensions/kusto',
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
test/**
|
||||
src/**/*.ts
|
||||
syntaxes/Readme.md
|
||||
tsconfig.json
|
||||
cgmanifest.json
|
|
@ -0,0 +1,45 @@
|
|||
{
|
||||
"registrations": [
|
||||
{
|
||||
"component": {
|
||||
"type": "git",
|
||||
"git": {
|
||||
"name": "microsoft/TypeScript-TmLanguage",
|
||||
"repositoryUrl": "https://github.com/microsoft/TypeScript-TmLanguage",
|
||||
"commitHash": "3133e3d914db9a2bb8812119f9273727a305f16b"
|
||||
}
|
||||
},
|
||||
"license": "MIT",
|
||||
"version": "0.0.1",
|
||||
"description": "The file syntaxes/JavaScript.tmLanguage.json was derived from TypeScriptReact.tmLanguage in https://github.com/microsoft/TypeScript-TmLanguage."
|
||||
},
|
||||
{
|
||||
"component": {
|
||||
"type": "git",
|
||||
"git": {
|
||||
"name": "textmate/javascript.tmbundle",
|
||||
"repositoryUrl": "https://github.com/textmate/javascript.tmbundle",
|
||||
"commitHash": "fccf0af0c95430a42e1bf98f0c7a4723a53283e7"
|
||||
}
|
||||
},
|
||||
"licenseDetail": [
|
||||
"Copyright (c) textmate-javascript.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
|
||||
}
|
|
@ -0,0 +1,193 @@
|
|||
{
|
||||
// Note that this file should stay in sync with 'typescript-language-basics/language-configuration.json'
|
||||
"comments": {
|
||||
"lineComment": "//",
|
||||
"blockComment": [
|
||||
"/*",
|
||||
"*/"
|
||||
]
|
||||
},
|
||||
"brackets": [
|
||||
[
|
||||
"${",
|
||||
"}"
|
||||
],
|
||||
[
|
||||
"{",
|
||||
"}"
|
||||
],
|
||||
[
|
||||
"[",
|
||||
"]"
|
||||
],
|
||||
[
|
||||
"(",
|
||||
")"
|
||||
]
|
||||
],
|
||||
"autoClosingPairs": [
|
||||
{
|
||||
"open": "{",
|
||||
"close": "}"
|
||||
},
|
||||
{
|
||||
"open": "[",
|
||||
"close": "]"
|
||||
},
|
||||
{
|
||||
"open": "(",
|
||||
"close": ")"
|
||||
},
|
||||
{
|
||||
"open": "'",
|
||||
"close": "'",
|
||||
"notIn": [
|
||||
"string",
|
||||
"comment"
|
||||
]
|
||||
},
|
||||
{
|
||||
"open": "\"",
|
||||
"close": "\"",
|
||||
"notIn": [
|
||||
"string"
|
||||
]
|
||||
},
|
||||
{
|
||||
"open": "`",
|
||||
"close": "`",
|
||||
"notIn": [
|
||||
"string",
|
||||
"comment"
|
||||
]
|
||||
},
|
||||
{
|
||||
"open": "/**",
|
||||
"close": " */",
|
||||
"notIn": [
|
||||
"string"
|
||||
]
|
||||
}
|
||||
],
|
||||
"surroundingPairs": [
|
||||
[
|
||||
"{",
|
||||
"}"
|
||||
],
|
||||
[
|
||||
"[",
|
||||
"]"
|
||||
],
|
||||
[
|
||||
"(",
|
||||
")"
|
||||
],
|
||||
[
|
||||
"'",
|
||||
"'"
|
||||
],
|
||||
[
|
||||
"\"",
|
||||
"\""
|
||||
],
|
||||
[
|
||||
"`",
|
||||
"`"
|
||||
],
|
||||
[
|
||||
"<",
|
||||
">"
|
||||
]
|
||||
],
|
||||
"autoCloseBefore": ";:.,=}])>` \n\t",
|
||||
"folding": {
|
||||
"markers": {
|
||||
"start": "^\\s*//\\s*#?region\\b",
|
||||
"end": "^\\s*//\\s*#?endregion\\b"
|
||||
}
|
||||
},
|
||||
"wordPattern": {
|
||||
"pattern": "(-?\\d*\\.\\d\\w*)|([^\\`\\~\\@\\!\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>/\\?\\s]+)",
|
||||
},
|
||||
"indentationRules": {
|
||||
"decreaseIndentPattern": {
|
||||
"pattern": "^((?!.*?/\\*).*\\*\/)?\\s*[\\}\\]].*$"
|
||||
},
|
||||
"increaseIndentPattern": {
|
||||
"pattern": "^((?!//).)*(\\{([^}\"'`/]*|(\\t|[ ])*//.*)|\\([^)\"'`/]*|\\[[^\\]\"'`/]*)$"
|
||||
},
|
||||
// e.g. * ...| or */| or *-----*/|
|
||||
"unIndentedLinePattern": {
|
||||
"pattern": "^(\\t|[ ])*[ ]\\*[^/]*\\*/\\s*$|^(\\t|[ ])*[ ]\\*/\\s*$|^(\\t|[ ])*[ ]\\*([ ]([^\\*]|\\*(?!/))*)?$"
|
||||
}
|
||||
},
|
||||
"onEnterRules": [
|
||||
{
|
||||
// e.g. /** | */
|
||||
"beforeText": {
|
||||
"pattern": "^\\s*/\\*\\*(?!/)([^\\*]|\\*(?!/))*$"
|
||||
},
|
||||
"afterText": {
|
||||
"pattern": "^\\s*\\*/$"
|
||||
},
|
||||
"action": {
|
||||
"indent": "indentOutdent",
|
||||
"appendText": " * "
|
||||
}
|
||||
},
|
||||
{
|
||||
// e.g. /** ...|
|
||||
"beforeText": {
|
||||
"pattern": "^\\s*/\\*\\*(?!/)([^\\*]|\\*(?!/))*$"
|
||||
},
|
||||
"action": {
|
||||
"indent": "none",
|
||||
"appendText": " * "
|
||||
}
|
||||
},
|
||||
{
|
||||
// e.g. * ...|
|
||||
"beforeText": {
|
||||
"pattern": "^(\\t|[ ])*[ ]\\*([ ]([^\\*]|\\*(?!/))*)?$"
|
||||
},
|
||||
"previousLineText": {
|
||||
"pattern": "(?=^(\\s*(/\\*\\*|\\*)).*)(?=(?!(\\s*\\*/)))"
|
||||
},
|
||||
"action": {
|
||||
"indent": "none",
|
||||
"appendText": "* "
|
||||
}
|
||||
},
|
||||
{
|
||||
// e.g. */|
|
||||
"beforeText": {
|
||||
"pattern": "^(\\t|[ ])*[ ]\\*/\\s*$"
|
||||
},
|
||||
"action": {
|
||||
"indent": "none",
|
||||
"removeText": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
// e.g. *-----*/|
|
||||
"beforeText": {
|
||||
"pattern": "^(\\t|[ ])*[ ]\\*[^/]*\\*/\\s*$"
|
||||
},
|
||||
"action": {
|
||||
"indent": "none",
|
||||
"removeText": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"beforeText": {
|
||||
"pattern": "^\\s*(\\bcase\\s.+:|\\bdefault:)$"
|
||||
},
|
||||
"afterText": {
|
||||
"pattern": "^(?!\\s*(\\bcase\\b|\\bdefault\\b))"
|
||||
},
|
||||
"action": {
|
||||
"indent": "indent"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,180 @@
|
|||
{
|
||||
"name": "javascript",
|
||||
"displayName": "%displayName%",
|
||||
"description": "%description%",
|
||||
"version": "1.0.0",
|
||||
"publisher": "vscode",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"vscode": "*"
|
||||
},
|
||||
"contributes": {
|
||||
"configurationDefaults": {
|
||||
"[javascript]": {
|
||||
"editor.maxTokenizationLineLength": 2500
|
||||
}
|
||||
},
|
||||
"languages": [
|
||||
{
|
||||
"id": "javascriptreact",
|
||||
"aliases": [
|
||||
"JavaScript JSX",
|
||||
"JavaScript React",
|
||||
"jsx"
|
||||
],
|
||||
"extensions": [
|
||||
".jsx"
|
||||
],
|
||||
"configuration": "./javascript-language-configuration.json"
|
||||
},
|
||||
{
|
||||
"id": "javascript",
|
||||
"aliases": [
|
||||
"JavaScript",
|
||||
"javascript",
|
||||
"js"
|
||||
],
|
||||
"extensions": [
|
||||
".js",
|
||||
".es6",
|
||||
".mjs",
|
||||
".cjs",
|
||||
".pac"
|
||||
],
|
||||
"filenames": [
|
||||
"jakefile"
|
||||
],
|
||||
"firstLine": "^#!.*\\bnode",
|
||||
"mimetypes": [
|
||||
"text/javascript"
|
||||
],
|
||||
"configuration": "./javascript-language-configuration.json"
|
||||
},
|
||||
{
|
||||
"id": "jsx-tags",
|
||||
"aliases": [],
|
||||
"configuration": "./tags-language-configuration.json"
|
||||
}
|
||||
],
|
||||
"grammars": [
|
||||
{
|
||||
"language": "javascriptreact",
|
||||
"scopeName": "source.js.jsx",
|
||||
"path": "./syntaxes/JavaScriptReact.tmLanguage.json",
|
||||
"embeddedLanguages": {
|
||||
"meta.tag.js": "jsx-tags",
|
||||
"meta.tag.without-attributes.js": "jsx-tags",
|
||||
"meta.tag.attributes.js.jsx": "javascriptreact",
|
||||
"meta.embedded.expression.js": "javascriptreact"
|
||||
},
|
||||
"tokenTypes": {
|
||||
"meta.template.expression": "other",
|
||||
"meta.template.expression string": "string",
|
||||
"meta.template.expression comment": "comment",
|
||||
"entity.name.type.instance.jsdoc": "other",
|
||||
"entity.name.function.tagged-template": "other",
|
||||
"meta.import string.quoted": "other",
|
||||
"variable.other.jsdoc": "other"
|
||||
}
|
||||
},
|
||||
{
|
||||
"language": "javascript",
|
||||
"scopeName": "source.js",
|
||||
"path": "./syntaxes/JavaScript.tmLanguage.json",
|
||||
"embeddedLanguages": {
|
||||
"meta.tag.js": "jsx-tags",
|
||||
"meta.tag.without-attributes.js": "jsx-tags",
|
||||
"meta.tag.attributes.js": "javascript",
|
||||
"meta.embedded.expression.js": "javascript"
|
||||
},
|
||||
"tokenTypes": {
|
||||
"meta.template.expression": "other",
|
||||
"meta.template.expression string": "string",
|
||||
"meta.template.expression comment": "comment",
|
||||
"entity.name.type.instance.jsdoc": "other",
|
||||
"entity.name.function.tagged-template": "other",
|
||||
"meta.import string.quoted": "other",
|
||||
"variable.other.jsdoc": "other"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scopeName": "source.js.regexp",
|
||||
"path": "./syntaxes/Regular Expressions (JavaScript).tmLanguage"
|
||||
}
|
||||
],
|
||||
"semanticTokenScopes": [
|
||||
{
|
||||
"language": "javascript",
|
||||
"scopes": {
|
||||
"property": [
|
||||
"variable.other.property.js"
|
||||
],
|
||||
"property.readonly": [
|
||||
"variable.other.constant.property.js"
|
||||
],
|
||||
"variable": [
|
||||
"variable.other.readwrite.js"
|
||||
],
|
||||
"variable.readonly": [
|
||||
"variable.other.constant.object.js"
|
||||
],
|
||||
"function": [
|
||||
"entity.name.function.js"
|
||||
],
|
||||
"namespace": [
|
||||
"entity.name.type.module.js"
|
||||
],
|
||||
"variable.defaultLibrary": [
|
||||
"support.variable.js"
|
||||
],
|
||||
"function.defaultLibrary": [
|
||||
"support.function.js"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"language": "javascriptreact",
|
||||
"scopes": {
|
||||
"property": [
|
||||
"variable.other.property.jsx"
|
||||
],
|
||||
"property.readonly": [
|
||||
"variable.other.constant.property.jsx"
|
||||
],
|
||||
"variable": [
|
||||
"variable.other.readwrite.jsx"
|
||||
],
|
||||
"variable.readonly": [
|
||||
"variable.other.constant.object.jsx"
|
||||
],
|
||||
"function": [
|
||||
"entity.name.function.jsx"
|
||||
],
|
||||
"namespace": [
|
||||
"entity.name.type.module.jsx"
|
||||
],
|
||||
"variable.defaultLibrary": [
|
||||
"support.variable.js"
|
||||
],
|
||||
"function.defaultLibrary": [
|
||||
"support.function.js"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"snippets": [
|
||||
{
|
||||
"language": "javascript",
|
||||
"path": "./snippets/javascript.code-snippets"
|
||||
},
|
||||
{
|
||||
"language": "javascriptreact",
|
||||
"path": "./snippets/javascript.code-snippets"
|
||||
}
|
||||
]
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/microsoft/vscode.git"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"displayName": "JavaScript Language Basics",
|
||||
"description": "Provides snippets, syntax highlighting, bracket matching and folding in JavaScript files."
|
||||
}
|
|
@ -0,0 +1,203 @@
|
|||
{
|
||||
"define module": {
|
||||
"prefix": "define",
|
||||
"body": [
|
||||
"define([",
|
||||
"\t'require',",
|
||||
"\t'${1:dependency}'",
|
||||
"], function(require, ${2:factory}) {",
|
||||
"\t'use strict';",
|
||||
"\t$0",
|
||||
"});"
|
||||
],
|
||||
"description": "define module"
|
||||
},
|
||||
"For Loop": {
|
||||
"prefix": "for",
|
||||
"body": [
|
||||
"for (let ${1:index} = 0; ${1:index} < ${2:array}.length; ${1:index}++) {",
|
||||
"\tconst ${3:element} = ${2:array}[${1:index}];",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"}"
|
||||
],
|
||||
"description": "For Loop"
|
||||
},
|
||||
"For-Each Loop": {
|
||||
"prefix": "foreach",
|
||||
"body": [
|
||||
"${1:array}.forEach(${2:element} => {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"});"
|
||||
],
|
||||
"description": "For-Each Loop"
|
||||
},
|
||||
"For-In Loop": {
|
||||
"prefix": "forin",
|
||||
"body": [
|
||||
"for (const ${1:key} in ${2:object}) {",
|
||||
"\tif (Object.hasOwnProperty.call(${2:object}, ${1:key})) {",
|
||||
"\t\tconst ${3:element} = ${2:object}[${1:key}];",
|
||||
"\t\t$TM_SELECTED_TEXT$0",
|
||||
"\t}",
|
||||
"}"
|
||||
],
|
||||
"description": "For-In Loop"
|
||||
},
|
||||
"For-Of Loop": {
|
||||
"prefix": "forof",
|
||||
"body": [
|
||||
"for (const ${1:iterator} of ${2:object}) {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"}"
|
||||
],
|
||||
"description": "For-Of Loop"
|
||||
},
|
||||
"Function Statement": {
|
||||
"prefix": "function",
|
||||
"body": [
|
||||
"function ${1:name}(${2:params}) {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"}"
|
||||
],
|
||||
"description": "Function Statement"
|
||||
},
|
||||
"If Statement": {
|
||||
"prefix": "if",
|
||||
"body": [
|
||||
"if (${1:condition}) {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"}"
|
||||
],
|
||||
"description": "If Statement"
|
||||
},
|
||||
"If-Else Statement": {
|
||||
"prefix": "ifelse",
|
||||
"body": [
|
||||
"if (${1:condition}) {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"} else {",
|
||||
"\t",
|
||||
"}"
|
||||
],
|
||||
"description": "If-Else Statement"
|
||||
},
|
||||
"New Statement": {
|
||||
"prefix": "new",
|
||||
"body": [
|
||||
"const ${1:name} = new ${2:type}(${3:arguments});$0"
|
||||
],
|
||||
"description": "New Statement"
|
||||
},
|
||||
"Switch Statement": {
|
||||
"prefix": "switch",
|
||||
"body": [
|
||||
"switch (${1:key}) {",
|
||||
"\tcase ${2:value}:",
|
||||
"\t\t$0",
|
||||
"\t\tbreak;",
|
||||
"",
|
||||
"\tdefault:",
|
||||
"\t\tbreak;",
|
||||
"}"
|
||||
],
|
||||
"description": "Switch Statement"
|
||||
},
|
||||
"While Statement": {
|
||||
"prefix": "while",
|
||||
"body": [
|
||||
"while (${1:condition}) {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"}"
|
||||
],
|
||||
"description": "While Statement"
|
||||
},
|
||||
"Do-While Statement": {
|
||||
"prefix": "dowhile",
|
||||
"body": [
|
||||
"do {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"} while (${1:condition});"
|
||||
],
|
||||
"description": "Do-While Statement"
|
||||
},
|
||||
"Try-Catch Statement": {
|
||||
"prefix": "trycatch",
|
||||
"body": [
|
||||
"try {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"} catch (${1:error}) {",
|
||||
"\t",
|
||||
"}"
|
||||
],
|
||||
"description": "Try-Catch Statement"
|
||||
},
|
||||
"Set Timeout Function": {
|
||||
"prefix": "settimeout",
|
||||
"body": [
|
||||
"setTimeout(() => {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"}, ${1:timeout});"
|
||||
],
|
||||
"description": "Set Timeout Function"
|
||||
},
|
||||
"Set Interval Function": {
|
||||
"prefix": "setinterval",
|
||||
"body": [
|
||||
"setInterval(() => {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"}, ${1:interval});"
|
||||
],
|
||||
"description": "Set Interval Function"
|
||||
},
|
||||
"Import Statement": {
|
||||
"prefix": "import",
|
||||
"body": [
|
||||
"import { $0 } from \"${1:module}\";"
|
||||
],
|
||||
"description": "Import external module"
|
||||
},
|
||||
"Region Start": {
|
||||
"prefix": "#region",
|
||||
"body": [
|
||||
"//#region $0"
|
||||
],
|
||||
"description": "Folding Region Start"
|
||||
},
|
||||
"Region End": {
|
||||
"prefix": "#endregion",
|
||||
"body": [
|
||||
"//#endregion"
|
||||
],
|
||||
"description": "Folding Region End"
|
||||
},
|
||||
"Log to the console": {
|
||||
"prefix": "log",
|
||||
"body": [
|
||||
"console.log($1);"
|
||||
],
|
||||
"description": "Log to the console"
|
||||
},
|
||||
"Log warning to console": {
|
||||
"prefix": "warn",
|
||||
"body": [
|
||||
"console.warn($1);"
|
||||
],
|
||||
"description": "Log warning to the console"
|
||||
},
|
||||
"Log error to console": {
|
||||
"prefix": "error",
|
||||
"body": [
|
||||
"console.error($1);"
|
||||
],
|
||||
"description": "Log error to the console"
|
||||
},
|
||||
"new Promise": {
|
||||
"prefix": "newpromise",
|
||||
"body": [
|
||||
"new Promise((resolve, reject) => {",
|
||||
"\t$TM_SELECTED_TEXT$0",
|
||||
"})"
|
||||
],
|
||||
"description": "Create a new Promise"
|
||||
}
|
||||
}
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -0,0 +1,10 @@
|
|||
The file `JavaScript.tmLanguage.json` is derived from [TypeScriptReact.tmLanguage](https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage).
|
||||
|
||||
To update to the latest version:
|
||||
- `cd extensions/typescript` and run `npm run update-grammars`
|
||||
- don't forget to run the integration tests at `./scripts/test-integration.sh`
|
||||
|
||||
The script does the following changes:
|
||||
- fileTypes .tsx -> .js & .jsx
|
||||
- scopeName scope.tsx -> scope.js
|
||||
- update all rule names .tsx -> .js
|
|
@ -0,0 +1,237 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>fileTypes</key>
|
||||
<array/>
|
||||
<key>hideFromUser</key>
|
||||
<true/>
|
||||
<key>name</key>
|
||||
<string>Regular Expressions (JavaScript)</string>
|
||||
<key>patterns</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>include</key>
|
||||
<string>#regexp</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>repository</key>
|
||||
<dict>
|
||||
<key>regex-character-class</key>
|
||||
<dict>
|
||||
<key>patterns</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>\\[wWsSdD]|\.</string>
|
||||
<key>name</key>
|
||||
<string>constant.character.character-class.regexp</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>\\([0-7]{3}|x\h\h|u\h\h\h\h)</string>
|
||||
<key>name</key>
|
||||
<string>constant.character.numeric.regexp</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>\\c[A-Z]</string>
|
||||
<key>name</key>
|
||||
<string>constant.character.control.regexp</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>\\.</string>
|
||||
<key>name</key>
|
||||
<string>constant.character.escape.backslash.regexp</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<key>regexp</key>
|
||||
<dict>
|
||||
<key>patterns</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>\\[bB]|\^|\$</string>
|
||||
<key>name</key>
|
||||
<string>keyword.control.anchor.regexp</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>\\[1-9]\d*</string>
|
||||
<key>name</key>
|
||||
<string>keyword.other.back-reference.regexp</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>[?+*]|\{(\d+,\d+|\d+,|,\d+|\d+)\}\??</string>
|
||||
<key>name</key>
|
||||
<string>keyword.operator.quantifier.regexp</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>match</key>
|
||||
<string>\|</string>
|
||||
<key>name</key>
|
||||
<string>keyword.operator.or.regexp</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>begin</key>
|
||||
<string>(\()((\?=)|(\?!))</string>
|
||||
<key>beginCaptures</key>
|
||||
<dict>
|
||||
<key>1</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>punctuation.definition.group.regexp</string>
|
||||
</dict>
|
||||
<key>3</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>meta.assertion.look-ahead.regexp</string>
|
||||
</dict>
|
||||
<key>4</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>meta.assertion.negative-look-ahead.regexp</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>end</key>
|
||||
<string>(\))</string>
|
||||
<key>endCaptures</key>
|
||||
<dict>
|
||||
<key>1</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>punctuation.definition.group.regexp</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>name</key>
|
||||
<string>meta.group.assertion.regexp</string>
|
||||
<key>patterns</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>include</key>
|
||||
<string>#regexp</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>begin</key>
|
||||
<string>\((\?:)?</string>
|
||||
<key>beginCaptures</key>
|
||||
<dict>
|
||||
<key>0</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>punctuation.definition.group.regexp</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>end</key>
|
||||
<string>\)</string>
|
||||
<key>endCaptures</key>
|
||||
<dict>
|
||||
<key>0</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>punctuation.definition.group.regexp</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>name</key>
|
||||
<string>meta.group.regexp</string>
|
||||
<key>patterns</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>include</key>
|
||||
<string>#regexp</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>begin</key>
|
||||
<string>(\[)(\^)?</string>
|
||||
<key>beginCaptures</key>
|
||||
<dict>
|
||||
<key>1</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>punctuation.definition.character-class.regexp</string>
|
||||
</dict>
|
||||
<key>2</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>keyword.operator.negation.regexp</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>end</key>
|
||||
<string>(\])</string>
|
||||
<key>endCaptures</key>
|
||||
<dict>
|
||||
<key>1</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>punctuation.definition.character-class.regexp</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>name</key>
|
||||
<string>constant.other.character-class.set.regexp</string>
|
||||
<key>patterns</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>captures</key>
|
||||
<dict>
|
||||
<key>1</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>constant.character.numeric.regexp</string>
|
||||
</dict>
|
||||
<key>2</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>constant.character.control.regexp</string>
|
||||
</dict>
|
||||
<key>3</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>constant.character.escape.backslash.regexp</string>
|
||||
</dict>
|
||||
<key>4</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>constant.character.numeric.regexp</string>
|
||||
</dict>
|
||||
<key>5</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>constant.character.control.regexp</string>
|
||||
</dict>
|
||||
<key>6</key>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>constant.character.escape.backslash.regexp</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>match</key>
|
||||
<string>(?:.|(\\(?:[0-7]{3}|x\h\h|u\h\h\h\h))|(\\c[A-Z])|(\\.))\-(?:[^\]\\]|(\\(?:[0-7]{3}|x\h\h|u\h\h\h\h))|(\\c[A-Z])|(\\.))</string>
|
||||
<key>name</key>
|
||||
<string>constant.other.character-class.range.regexp</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>include</key>
|
||||
<string>#regex-character-class</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>include</key>
|
||||
<string>#regex-character-class</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>scopeName</key>
|
||||
<string>source.js.regexp</string>
|
||||
<key>uuid</key>
|
||||
<string>AC8679DE-3AC7-4056-84F9-69A7ADC29DDD</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"comments": {
|
||||
"blockComment": [
|
||||
"{/*",
|
||||
"*/}"
|
||||
]
|
||||
},
|
||||
"brackets": [
|
||||
[
|
||||
"{",
|
||||
"}"
|
||||
],
|
||||
[
|
||||
"[",
|
||||
"]"
|
||||
],
|
||||
[
|
||||
"(",
|
||||
")"
|
||||
],
|
||||
[
|
||||
"<",
|
||||
">"
|
||||
]
|
||||
],
|
||||
"colorizedBracketPairs": [
|
||||
[
|
||||
"{",
|
||||
"}"
|
||||
],
|
||||
[
|
||||
"[",
|
||||
"]"
|
||||
],
|
||||
[
|
||||
"(",
|
||||
")"
|
||||
]
|
||||
],
|
||||
"autoClosingPairs": [
|
||||
{
|
||||
"open": "{",
|
||||
"close": "}"
|
||||
},
|
||||
{
|
||||
"open": "[",
|
||||
"close": "]"
|
||||
},
|
||||
{
|
||||
"open": "(",
|
||||
"close": ")"
|
||||
},
|
||||
{
|
||||
"open": "'",
|
||||
"close": "'",
|
||||
"notIn": [
|
||||
"string",
|
||||
"comment"
|
||||
]
|
||||
},
|
||||
{
|
||||
"open": "\"",
|
||||
"close": "\"",
|
||||
"notIn": [
|
||||
"string"
|
||||
]
|
||||
},
|
||||
{
|
||||
"open": "/**",
|
||||
"close": " */",
|
||||
"notIn": [
|
||||
"string"
|
||||
]
|
||||
}
|
||||
],
|
||||
"surroundingPairs": [
|
||||
[
|
||||
"{",
|
||||
"}"
|
||||
],
|
||||
[
|
||||
"[",
|
||||
"]"
|
||||
],
|
||||
[
|
||||
"(",
|
||||
")"
|
||||
],
|
||||
[
|
||||
"<",
|
||||
">"
|
||||
],
|
||||
[
|
||||
"'",
|
||||
"'"
|
||||
],
|
||||
[
|
||||
"\"",
|
||||
"\""
|
||||
]
|
||||
],
|
||||
"wordPattern": {
|
||||
"pattern": "(-?\\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"
|
||||
}
|
||||
},
|
||||
{
|
||||
// `beforeText` only applies to tokens of a given language. Since we are dealing with jsx-tags,
|
||||
// make sure we apply to the closing `>` of a tag so that mixed language spans
|
||||
// such as `<div onclick={1}>` are handled properly.
|
||||
"beforeText": {
|
||||
"pattern": "^>$"
|
||||
},
|
||||
"afterText": {
|
||||
"pattern": "^<\\/([_:\\w][_:\\w-.\\d]*)\\s*>$",
|
||||
"flags": "i"
|
||||
},
|
||||
"action": {
|
||||
"indent": "indentOutdent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"beforeText": {
|
||||
"pattern": "^>$"
|
||||
},
|
||||
"action": {
|
||||
"indent": "indent"
|
||||
}
|
||||
}
|
||||
],
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
Загрузка…
Ссылка в новой задаче