diff --git a/.gitattributes b/.gitattributes
index 0a56ba75f93..5a817c30b6d 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -6,4 +6,5 @@ ThirdPartyNotices.txt eol=crlf
*.bat eol=crlf
*.cmd eol=crlf
*.ps1 eol=lf
-*.sh eol=lf
\ No newline at end of file
+*.sh eol=lf
+*.rtf -text
\ No newline at end of file
diff --git a/.github/classifier.yml b/.github/classifier.yml
index e0f0cec8169..8acb0002347 100644
--- a/.github/classifier.yml
+++ b/.github/classifier.yml
@@ -15,44 +15,131 @@
css-less-scss: [],
debug-console: [],
debug: {
- assignees: [ isidorn ],
+ assignees: [ weinand ],
assignLabel: false
},
- diff-editor: [],
- dropdown: [],
- editor: {
+ diff-editor: : {
assignees: [],
assignLabel: false
},
- editor-1000-limit: [],
- editor-autoclosing: [],
- editor-autoindent: [],
- editor-brackets: [],
- editor-clipboard: [],
- editor-code-actions: [],
- editor-code-lens: [],
- editor-color-picker: [],
- editor-colors: [],
- editor-columnselect: [],
- editor-commands: [],
- editor-contrib: [],
- editor-drag-and-drop: [],
- editor-find: [],
- editor-folding: [],
- editor-hover: [],
- editor-ime: [],
- editor-input: [],
- editor-ligatures: [],
- editor-links: [],
- editor-minimap: [],
- editor-multicursor: [],
- editor-parameter-hints: [],
- editor-rendering: [],
- editor-smooth: [],
- editor-symbols: [],
- editor-textbuffer: [],
- editor-wrapping: [],
- emmet: [ octref, ramya-rao-a ],
+ dropdown: [],
+ editor: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-1000-limit: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-autoclosing: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-autoindent: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-brackets: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-clipboard: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-code-actions: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-code-lens: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-color-picker: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-colors: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-columnselect: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-commands: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-contrib: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-drag-and-drop: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-find: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-folding: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-hover: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-ime: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-input: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-ligatures: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-links: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-minimap: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-multicursor: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-parameter-hints: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-rendering: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-smooth: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-symbols: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-textbuffer: : {
+ assignees: [],
+ assignLabel: false
+ },
+ editor-wrapping: : {
+ assignees: [],
+ assignLabel: false
+ },
+ emmet: [ octref ],
error-list: [],
explorer-custom: [],
extension-host: [],
@@ -81,14 +168,20 @@
hot-exit: [],
html: [],
install-update: [],
- integrated-terminal: [ Tyriar ],
+ integrated-terminal: [],
integration-test: [],
intellisense-config: [],
issue-reporter: [ RMacfarlane ],
javascript: [ mjbvz ],
json: [],
- keyboard-layout: [],
- keybindings: [],
+ keyboard-layout: : {
+ assignees: [],
+ assignLabel: false
+ },
+ keybindings: : {
+ assignees: [],
+ assignLabel: false
+ },
keybindings-editor: [],
lang-diagnostics: [],
languages basic: [],
diff --git a/.github/commands.yml b/.github/commands.yml
index 70d41295408..c9279232529 100644
--- a/.github/commands.yml
+++ b/.github/commands.yml
@@ -51,6 +51,12 @@
action: 'close',
comment: "The described behavior is how it is expected to work. If you disagree, please explain what is expected and what is not in more detail. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"
},
+ {
+ type: 'label',
+ name: '*english-please',
+ action: 'close',
+ comment: "This issue is being closed because its description is not in English, that makes it hard for us to work on it. Please open a new issue with an English description. You might find [Bing Translator](https://www.bing.com/translator) useful."
+ },
{
type: 'comment',
name: 'duplicate',
@@ -99,7 +105,7 @@
{
type: 'comment',
name: 'a11ymas',
- allowUsers: ['AccessibilityTestingTeam-TCS'],
+ allowUsers: ['AccessibilityTestingTeam-TCS', 'dixitsonali95', 'Mohini78', 'ChitrarupaSharma', 'mspatil110', 'umasarath52', 'v-umnaik'],
action: 'updateLabels',
addLabel: 'a11ymas'
},
diff --git a/.gitignore b/.gitignore
index 6a9804cd237..160c42ed74b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
.DS_Store
+.cache
npm-debug.log
Thumbs.db
node_modules/
@@ -14,6 +15,16 @@ out-editor-min/
out-monaco-editor-core/
out-vscode/
out-vscode-min/
+out-vscode-reh/
+out-vscode-reh-min/
+out-vscode-reh-pkg/
+out-vscode-reh-web/
+out-vscode-reh-web-min/
+out-vscode-reh-web-pkg/
+out-vscode-web/
+out-vscode-web-min/
+src/vs/server
+resources/server
build/node_modules
coverage/
test_data/
diff --git a/.nvmrc b/.nvmrc
index 32c861f970d..f599e28b8ab 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-8.9.2
+10
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 55cfea092a6..b4336e7d127 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -4,6 +4,7 @@
"recommendations": [
"ms-vscode.vscode-typescript-tslint-plugin",
"dbaeumer.vscode-eslint",
+ "EditorConfig.EditorConfig",
"msjsdiag.debugger-for-chrome"
]
}
diff --git a/.vscode/launch.json b/.vscode/launch.json
index e217c585b42..1d8207865fd 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -123,7 +123,8 @@
"request": "launch",
"name": "Launch VS Code",
"windows": {
- "runtimeExecutable": "${workspaceFolder}/scripts/code.bat"
+ "runtimeExecutable": "${workspaceFolder}/scripts/code.bat",
+ "timeout": 20000
},
"osx": {
"runtimeExecutable": "${workspaceFolder}/scripts/code.sh"
@@ -131,6 +132,9 @@
"linux": {
"runtimeExecutable": "${workspaceFolder}/scripts/code.sh"
},
+ "env": {
+ "VSCODE_EXTHOST_WILL_SEND_SOCKET": null
+ },
"breakOnLoad": false,
"urlFilter": "*workbench.html*",
"runtimeArgs": [
@@ -144,6 +148,9 @@
"request": "launch",
"name": "Launch VS Code (Main Process)",
"runtimeExecutable": "${workspaceFolder}/scripts/code.sh",
+ "windows": {
+ "runtimeExecutable": "${workspaceFolder}/scripts/code.bat",
+ },
"runtimeArgs": [
"--no-cached-data"
],
@@ -193,8 +200,8 @@
{
"type": "node",
"request": "launch",
- "name": "Unit Tests",
- "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
+ "name": "Run Unit Tests",
+ "program": "${workspaceFolder}/test/electron/index.js",
"runtimeExecutable": "${workspaceFolder}/.build/electron/Code - OSS.app/Contents/MacOS/Electron",
"windows": {
"runtimeExecutable": "${workspaceFolder}/.build/electron/Code - OSS.exe"
@@ -204,14 +211,9 @@
},
"outputCapture": "std",
"args": [
- "--delay",
- "--timeout",
- "2000"
+ "--remote-debugging-port=9222"
],
"cwd": "${workspaceFolder}",
- "env": {
- "ELECTRON_RUN_AS_NODE": "true"
- },
"outFiles": [
"${workspaceFolder}/out/**/*.js"
]
@@ -268,6 +270,13 @@
"Launch VS Code",
"Attach to Extension Host"
]
- }
+ },
+ {
+ "name": "Debug Unit Tests",
+ "configurations": [
+ "Attach to VS Code",
+ "Run Unit Tests"
+ ]
+ },
]
-}
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 8b9ca6cd07b..1a760bdda6b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -42,11 +42,23 @@
"emmet.excludeLanguages": [],
"typescript.preferences.importModuleSpecifier": "non-relative",
"typescript.preferences.quoteStyle": "single",
- "json.schemas": [{
- "fileMatch": [ "cgmanifest.json" ],
- "url": "./.vscode/cgmanifest.schema.json"
- }, {
- "fileMatch": [ "cglicenses.json" ],
- "url": "./.vscode/cglicenses.schema.json"
- }]
-}
+ "json.schemas": [
+ {
+ "fileMatch": [
+ "cgmanifest.json"
+ ],
+ "url": "./.vscode/cgmanifest.schema.json"
+ },
+ {
+ "fileMatch": [
+ "cglicenses.json"
+ ],
+ "url": "./.vscode/cglicenses.schema.json"
+ }
+ ],
+ "git.ignoreLimitWarning": true,
+ "remote.extensionKind": {
+ "msjsdiag.debugger-for-chrome": "workspace"
+ },
+ "files.insertFinalNewline": true
+}
\ No newline at end of file
diff --git a/.vscode/shared.code-snippets b/.vscode/shared.code-snippets
index 6d6690a0282..fb3df23dd42 100644
--- a/.vscode/shared.code-snippets
+++ b/.vscode/shared.code-snippets
@@ -23,11 +23,13 @@
"description": "Insert Copyright Statement"
},
"TS -> Inject Service": {
+ "scope": "typescript",
"description": "Constructor Injection Pattern",
"prefix": "@inject",
"body": "@$1 private readonly _$2: ${1},$0"
},
"TS -> Event & Emitter": {
+ "scope": "typescript",
"prefix": "emitter",
"description": "Add emitter and event properties",
"body": [
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 4a704226c46..5db8fb3fbc5 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -30,19 +30,16 @@
},
{
"type": "npm",
- "script": "strict-null-check-watch",
- "label": "TS - Strict Null Checks",
+ "script": "strict-initialization-watch",
+ "label": "TS - Strict Initialization",
"isBackground": true,
"presentation": {
"reveal": "never"
},
"problemMatcher": {
"base": "$tsc-watch",
- "owner": "typescript-strict-null",
+ "owner": "typescript-strict-initialization",
"applyTo": "allDocuments"
- },
- "runOptions": {
- "runOn": "folderOpen"
}
},
{
@@ -84,6 +81,7 @@
"type": "gulp",
"task": "hygiene",
"problemMatcher": []
- }
+ },
+
]
}
diff --git a/.yarnrc b/.yarnrc
index b32ae136d49..c45abdbacad 100644
--- a/.yarnrc
+++ b/.yarnrc
@@ -1,3 +1,3 @@
disturl "https://atom.io/download/electron"
-target "3.0.13"
+target "4.2.7"
runtime "electron"
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index 65c8a42b8d2..00000000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1 +0,0 @@
-This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 7775753e8bc..34703fae665 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -37,7 +37,6 @@ If you find your issue already exists, make relevant comments and add your [reac
* 👍 - upvote
* 👎 - downvote
-
If you cannot find an existing issue that describes your bug or feature, create a new issue using the guidelines below.
### Writing Good Bug Reports and Feature Requests
@@ -52,7 +51,9 @@ The built-in tool for reporting an issue, which you can access by using `Report
Please include the following with each issue:
-* Version of VS Code
+* Version of VS Code
+
+* Your operating system
* List of extensions that you have installed
diff --git a/README.md b/README.md
index a7294e71b9b..035ba940a62 100644
--- a/README.md
+++ b/README.md
@@ -1,59 +1,68 @@
-# Visual Studio Code - Open Source
+# Visual Studio Code - Open Source ("Code - OSS")
-[](https://aka.ms/vscode-builds)
+
+[](https://dev.azure.com/vscode/VSCode/_build/latest?definitionId=12)
[](https://github.com/Microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc)
[](https://github.com/Microsoft/vscode/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3Abug)
[](https://gitter.im/Microsoft/vscode)
-[VS Code](https://code.visualstudio.com) is a type of tool that combines the simplicity of
-a code editor with what developers need for their core edit-build-debug cycle. It provides comprehensive editing and debugging support, an extensibility model, and lightweight integration with existing tools.
+## The Repository
-VS Code is updated monthly with new features and bug fixes. You can download it for Windows, macOS, and Linux on [VS Code's website](https://code.visualstudio.com/Download). To get the latest releases every day, you can install the [Insiders version of VS Code](https://code.visualstudio.com/insiders). This builds from the master branch and is updated daily at the very least.
+This repository ("`Code - OSS`") is where we (Microsoft) develop the [Visual Studio Code](https://code.visualstudio.com) product. Not only do we work on code and issues here, we also publish our roadmap, monthly iteration plans, and our endgame plans. The source code here is available to everyone under the standard [MIT license](https://github.com/microsoft/vscode/blob/master/LICENSE.txt).
+
+## Visual Studio Code
-
+
-The [`vscode`](https://github.com/microsoft/vscode) repository is where VS Code is developed and there are many ways you can participate in the project, for example:
+[Visual Studio Code](https://code.visualstudio.com) is a distribution of the `Code - OSS` repository with Microsoft specific customizations released under a traditional [Microsoft product license](https://code.visualstudio.com/License/).
+
+[Visual Studio Code](https://code.visualstudio.com) combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. It provides comprehensive code editing, navigation, and understanding support along with lightweight debugging, a rich extensibility model, and lightweight integration with existing tools.
+
+Visual Studio Code is updated monthly with new features and bug fixes. You can download it for Windows, macOS, and Linux on [Visual Studio Code's website](https://code.visualstudio.com/Download). To get the latest releases every day, install the [Insiders build](https://code.visualstudio.com/insiders).
+
-* [Submit bugs and feature requests](https://github.com/microsoft/vscode/issues) and help us verify as they are checked in.
-* Review [source code changes](https://github.com/microsoft/vscode/pulls).
-* Review the [documentation](https://github.com/microsoft/vscode-docs) and make pull requests for anything from typos to new content.
## Contributing
+There are many ways in which you can participate in the project, for example:
+
+* [Submit bugs and feature requests](https://github.com/microsoft/vscode/issues), and help us verify as they are checked in
+* Review [source code changes](https://github.com/microsoft/vscode/pulls)
+* Review the [documentation](https://github.com/microsoft/vscode-docs) and make pull requests for anything from typos to new content
+
If you are interested in fixing issues and contributing directly to the code base,
please see the document [How to Contribute](https://github.com/Microsoft/vscode/wiki/How-to-Contribute), which covers the following:
* [How to build and run from source](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#build-and-run)
* [The development workflow, including debugging and running tests](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#debugging)
-* [Coding Guidelines](https://github.com/Microsoft/vscode/wiki/Coding-Guidelines)
+* [Coding guidelines](https://github.com/Microsoft/vscode/wiki/Coding-Guidelines)
* [Submitting pull requests](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#pull-requests)
* [Contributing to translations](https://aka.ms/vscodeloc)
-Please also see our [Code of Conduct](CODE_OF_CONDUCT.md).
-
## Feedback
-* Ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/vscode).
-* Request a new feature on [GitHub](CONTRIBUTING.md).
-* Vote for [Popular Feature Requests](https://github.com/Microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc).
-* File a bug in [GitHub Issues](https://github.com/Microsoft/vscode/issues).
-* [Tweet](https://twitter.com/code) us with any other feedback.
+* Ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/vscode)
+* [Request a new feature](CONTRIBUTING.md)
+* Up vote [popular feature requests](https://github.com/Microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc)
+* [File an issue](https://github.com/Microsoft/vscode/issues)
+* Follow [@code](https://twitter.com/code) and let us know what you think!
## Related Projects
-Many of the core components and extensions to Code live in their own repositories on GitHub. For example, the [node debug adapter](https://github.com/microsoft/vscode-node-debug) and the [mono debug adapter](https://github.com/microsoft/vscode-mono-debug) have their own repositories.
-
-For a complete list, please visit the [Related Projects](https://github.com/Microsoft/vscode/wiki/Related-Projects) page on our [wiki](https://github.com/Microsoft/vscode/wiki).
+Many of the core components and extensions to Code live in their own repositories on GitHub. For example, the [node debug adapter](https://github.com/microsoft/vscode-node-debug) and the [mono debug adapter](https://github.com/microsoft/vscode-mono-debug) have their own repositories. For a complete list, please visit the [Related Projects](https://github.com/Microsoft/vscode/wiki/Related-Projects) page on our [wiki](https://github.com/Microsoft/vscode/wiki).
## Bundled Extensions
-Code ships with a set of extensions. These extensions are located in the [extensions](extensions) folder.
-These extensions include grammars and snippets for several languages. Extensions that provide rich language support (code completion, go to definition) for a language have the suffix 'language-features'. For example, the 'json' extension provides coloring for JSON and the 'json-language-features' provides rich language support for JSON.
+Code includes a set of built-in extensions located in the [extensions](extensions) folder, including grammars and snippets for many languages. Extensions that provide rich language support (code completion, Go to Definition) for a language have the suffix `language-features`. For example, the `json` extension provides coloring for `JSON` and the `json-language-features` provides rich language support for `JSON`.
+
+## Code of Conduct
+
+This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
## License
Copyright (c) Microsoft Corporation. All rights reserved.
-Licensed under the [MIT](LICENSE.txt) License.
+Licensed under the [MIT](LICENSE.txt) license.
diff --git a/ThirdPartyNotices.txt b/ThirdPartyNotices.txt
index 4541dbbb24d..64f72e53be0 100644
--- a/ThirdPartyNotices.txt
+++ b/ThirdPartyNotices.txt
@@ -5,106 +5,70 @@ Do Not Translate or Localize
This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise.
-1. atom/language-c (https://github.com/atom/language-c)
-2. atom/language-clojure (https://github.com/atom/language-clojure)
-3. atom/language-coffee-script (https://github.com/atom/language-coffee-script)
-4. atom/language-css (https://github.com/atom/language-css)
-5. atom/language-java (https://github.com/atom/language-java)
-6. atom/language-objective-c (https://github.com/atom/language-objective-c)
-7. atom/language-sass version 0.52.0 (https://github.com/atom/language-sass)
-8. atom/language-shellscript (https://github.com/atom/language-shellscript)
-9. atom/language-xml (https://github.com/atom/language-xml)
-10. chriskempson/tomorrow-theme (https://github.com/chriskempson/tomorrow-theme)
-11. Colorsublime-Themes version 0.1.0 (https://github.com/Colorsublime/Colorsublime-Themes)
-12. daaain/Handlebars (https://github.com/daaain/Handlebars)
-13. davidrios/pug-tmbundle (https://github.com/davidrios/pug-tmbundle)
-14. definitelytyped (https://github.com/DefinitelyTyped/DefinitelyTyped)
-15. demyte/language-cshtml (https://github.com/demyte/language-cshtml)
-16. Document Object Model version 4.0.0 (https://www.w3.org/DOM/)
-17. dotnet/csharp-tmLanguage version 0.1.0 (https://github.com/dotnet/csharp-tmLanguage)
-18. expand-abbreviation version 0.5.8 (https://github.com/emmetio/expand-abbreviation)
-19. fadeevab/make.tmbundle (https://github.com/fadeevab/make.tmbundle)
-20. freebroccolo/atom-language-swift (https://github.com/freebroccolo/atom-language-swift)
-21. HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/)
-22. Ikuyadeu/vscode-R (https://github.com/Ikuyadeu/vscode-R)
-23. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site)
-24. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar)
-25. js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify)
-26. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert)
-27. language-docker (https://github.com/moby/moby)
-28. language-go version 0.39.0 (https://github.com/atom/language-go)
-29. language-less (https://github.com/atom/language-less)
-30. language-php (https://github.com/atom/language-php)
-31. language-rust version 0.4.9 (https://github.com/zargony/atom-language-rust)
-32. MagicStack/MagicPython (https://github.com/MagicStack/MagicPython)
-33. marked version 0.5.0 (https://github.com/markedjs/marked)
-34. mdn-data version 1.1.12 (https://github.com/mdn/data)
-35. Microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/Microsoft/TypeScript-TmLanguage)
-36. Microsoft/vscode-JSON.tmLanguage (https://github.com/Microsoft/vscode-JSON.tmLanguage)
-37. Microsoft/vscode-mssql (https://github.com/Microsoft/vscode-mssql)
-38. mmims/language-batchfile (https://github.com/mmims/language-batchfile)
-39. octicons-code version 3.1.0 (https://registry.npmjs.org/octicons/-/octicons-3.1.0.tgz)
-40. octicons-font version 3.1.0 (https://registry.npmjs.org/octicons/-/octicons-3.1.0.tgz)
-41. PowerShell/EditorSyntax (https://github.com/powershell/editorsyntax)
-42. seti-ui version 0.1.0 (https://github.com/jesseweed/seti-ui)
-43. shaders-tmLanguage version 0.1.0 (https://github.com/tgjones/shaders-tmLanguage)
-44. textmate/asp.vb.net.tmbundle (https://github.com/textmate/asp.vb.net.tmbundle)
-45. textmate/c.tmbundle (https://github.com/textmate/c.tmbundle)
-46. textmate/diff.tmbundle (https://github.com/textmate/diff.tmbundle)
-47. textmate/git.tmbundle (https://github.com/textmate/git.tmbundle)
-48. textmate/groovy.tmbundle (https://github.com/textmate/groovy.tmbundle)
-49. textmate/html.tmbundle (https://github.com/textmate/html.tmbundle)
-50. textmate/ini.tmbundle (https://github.com/textmate/ini.tmbundle)
-51. textmate/javascript.tmbundle (https://github.com/textmate/javascript.tmbundle)
-52. textmate/lua.tmbundle (https://github.com/textmate/lua.tmbundle)
-53. textmate/markdown.tmbundle (https://github.com/textmate/markdown.tmbundle)
-54. textmate/perl.tmbundle (https://github.com/textmate/perl.tmbundle)
-55. textmate/ruby.tmbundle (https://github.com/textmate/ruby.tmbundle)
-56. textmate/yaml.tmbundle (https://github.com/textmate/yaml.tmbundle)
-57. TypeScript-TmLanguage version 0.1.8 (https://github.com/Microsoft/TypeScript-TmLanguage)
+1. atom/language-clojure version 0.22.7 (https://github.com/atom/language-clojure)
+2. atom/language-coffee-script version 0.49.3 (https://github.com/atom/language-coffee-script)
+3. atom/language-java version 0.31.3 (https://github.com/atom/language-java)
+4. atom/language-sass version 0.61.4 (https://github.com/atom/language-sass)
+5. atom/language-shellscript version 0.26.0 (https://github.com/atom/language-shellscript)
+6. atom/language-xml version 0.35.2 (https://github.com/atom/language-xml)
+7. Colorsublime-Themes version 0.1.0 (https://github.com/Colorsublime/Colorsublime-Themes)
+8. daaain/Handlebars version 1.8.0 (https://github.com/daaain/Handlebars)
+9. davidrios/pug-tmbundle (https://github.com/davidrios/pug-tmbundle)
+10. definitelytyped (https://github.com/DefinitelyTyped/DefinitelyTyped)
+11. demyte/language-cshtml version 0.3.0 (https://github.com/demyte/language-cshtml)
+12. Document Object Model version 4.0.0 (https://www.w3.org/DOM/)
+13. dotnet/csharp-tmLanguage version 0.1.0 (https://github.com/dotnet/csharp-tmLanguage)
+14. expand-abbreviation version 0.5.8 (https://github.com/emmetio/expand-abbreviation)
+15. fadeevab/make.tmbundle (https://github.com/fadeevab/make.tmbundle)
+16. freebroccolo/atom-language-swift (https://github.com/freebroccolo/atom-language-swift)
+17. HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/)
+18. Ikuyadeu/vscode-R version 0.5.5 (https://github.com/Ikuyadeu/vscode-R)
+19. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site)
+20. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar)
+21. jeff-hykin/cpp-textmate-grammar version 1.12.11 (https://github.com/jeff-hykin/cpp-textmate-grammar)
+22. jeff-hykin/cpp-textmate-grammar version 1.12.18 (https://github.com/jeff-hykin/cpp-textmate-grammar)
+23. js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify)
+24. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert)
+25. language-docker (https://github.com/moby/moby)
+26. language-go version 0.44.3 (https://github.com/atom/language-go)
+27. language-less version 0.34.2 (https://github.com/atom/language-less)
+28. language-php version 0.44.1 (https://github.com/atom/language-php)
+29. language-rust version 0.4.12 (https://github.com/zargony/atom-language-rust)
+30. MagicStack/MagicPython version 1.1.1 (https://github.com/MagicStack/MagicPython)
+31. marked version 0.6.2 (https://github.com/markedjs/marked)
+32. mdn-data version 1.1.12 (https://github.com/mdn/data)
+33. Microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/Microsoft/TypeScript-TmLanguage)
+34. Microsoft/vscode-JSON.tmLanguage (https://github.com/Microsoft/vscode-JSON.tmLanguage)
+35. Microsoft/vscode-mssql version 1.6.0 (https://github.com/Microsoft/vscode-mssql)
+36. mmims/language-batchfile version 0.7.5 (https://github.com/mmims/language-batchfile)
+37. octicons version 8.3.0 (https://github.com/primer/octicons)
+38. octref/language-css version 0.42.11 (https://github.com/octref/language-css)
+39. PowerShell/EditorSyntax (https://github.com/powershell/editorsyntax)
+40. promise-polyfill version 8.0.0 (https://github.com/taylorhakes/promise-polyfill)
+41. seti-ui version 0.1.0 (https://github.com/jesseweed/seti-ui)
+42. shaders-tmLanguage version 0.1.0 (https://github.com/tgjones/shaders-tmLanguage)
+43. textmate/asp.vb.net.tmbundle (https://github.com/textmate/asp.vb.net.tmbundle)
+44. textmate/c.tmbundle (https://github.com/textmate/c.tmbundle)
+45. textmate/diff.tmbundle (https://github.com/textmate/diff.tmbundle)
+46. textmate/git.tmbundle (https://github.com/textmate/git.tmbundle)
+47. textmate/groovy.tmbundle (https://github.com/textmate/groovy.tmbundle)
+48. textmate/html.tmbundle (https://github.com/textmate/html.tmbundle)
+49. textmate/ini.tmbundle (https://github.com/textmate/ini.tmbundle)
+50. textmate/javascript.tmbundle (https://github.com/textmate/javascript.tmbundle)
+51. textmate/lua.tmbundle (https://github.com/textmate/lua.tmbundle)
+52. textmate/markdown.tmbundle (https://github.com/textmate/markdown.tmbundle)
+53. textmate/perl.tmbundle (https://github.com/textmate/perl.tmbundle)
+54. textmate/ruby.tmbundle (https://github.com/textmate/ruby.tmbundle)
+55. textmate/yaml.tmbundle (https://github.com/textmate/yaml.tmbundle)
+56. TypeScript-TmLanguage version 0.1.8 (https://github.com/Microsoft/TypeScript-TmLanguage)
+57. TypeScript-TmLanguage version 1.0.0 (https://github.com/Microsoft/TypeScript-TmLanguage)
58. Unicode version 12.0.0 (http://www.unicode.org/)
-59. vscode-logfile-highlighter version 1.2.0 (https://github.com/emilast/vscode-logfile-highlighter)
-60. vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift)
-61. Web Background Synchronization (https://github.com/WICG/BackgroundSync)
+59. vscode-logfile-highlighter version 2.4.1 (https://github.com/emilast/vscode-logfile-highlighter)
+60. vscode-octicons-font version 1.3.1 (https://github.com/Microsoft/vscode-octicons-font)
+61. vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift)
+62. Web Background Synchronization (https://github.com/WICG/BackgroundSync)
-%% atom/language-c NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/textmate/c.tmbundle and distributed under the following
-license, located in `README.mdown`:
-
-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.
-=========================================
-END OF atom/language-c NOTICES AND INFORMATION
-
%% atom/language-clojure NOTICES AND INFORMATION BEGIN HERE
=========================================
Copyright (c) 2014 GitHub Inc.
@@ -212,43 +176,6 @@ OTHER DEALINGS IN THE SOFTWARE.
=========================================
END OF atom/language-coffee-script NOTICES AND INFORMATION
-%% atom/language-css NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/textmate/css.tmbundle and distributed under the following
-license, located in `README.mdown`:
-
-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.
-=========================================
-END OF atom/language-css NOTICES AND INFORMATION
-
%% atom/language-java NOTICES AND INFORMATION BEGIN HERE
=========================================
The MIT License (MIT)
@@ -286,43 +213,6 @@ suitability for any purpose.
=========================================
END OF atom/language-java NOTICES AND INFORMATION
-%% atom/language-objective-c NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (c) 2014 GitHub Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-This package was derived from a TextMate bundle located at
-https://github.com/textmate/objective-c.tmbundle and distributed under the following
-license, located in `README.mdown`:
-
-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.
-=========================================
-END OF atom/language-objective-c NOTICES AND INFORMATION
-
%% atom/language-sass NOTICES AND INFORMATION BEGIN HERE
=========================================
The MIT License (MIT)
@@ -450,22 +340,6 @@ suitability for any purpose.
=========================================
END OF atom/language-xml NOTICES AND INFORMATION
-%% chriskempson/tomorrow-theme NOTICES AND INFORMATION BEGIN HERE
-=========================================
-The MIT License (MIT)
-
-Copyright (C) 2013 Chris Kempson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-=========================================
-END OF chriskempson/tomorrow-theme NOTICES AND INFORMATION
-
%% Colorsublime-Themes NOTICES AND INFORMATION BEGIN HERE
=========================================
Copyright (c) 2015 Colorsublime.com
@@ -825,6 +699,32 @@ THE SOFTWARE.
=========================================
END OF ionide/ionide-fsgrammar NOTICES AND INFORMATION
+%% jeff-hykin/cpp-textmate-grammar NOTICES AND INFORMATION BEGIN HERE
+=========================================
+MIT License
+
+Copyright (c) 2019 Jeff Hykin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF jeff-hykin/cpp-textmate-grammar NOTICES AND INFORMATION
+
%% js-beautify NOTICES AND INFORMATION BEGIN HERE
=========================================
The MIT License (MIT)
@@ -1800,11 +1700,11 @@ THE SOFTWARE.
=========================================
END OF mmims/language-batchfile NOTICES AND INFORMATION
-%% octicons-code NOTICES AND INFORMATION BEGIN HERE
+%% octicons NOTICES AND INFORMATION BEGIN HERE
=========================================
-The MIT License (MIT)
+MIT License
-(c) 2012-2015 GitHub
+Copyright (c) 2019 GitHub Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -1813,109 +1713,55 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
=========================================
-END OF octicons-code NOTICES AND INFORMATION
+END OF octicons NOTICES AND INFORMATION
-%% octicons-font NOTICES AND INFORMATION BEGIN HERE
+%% octref/language-css NOTICES AND INFORMATION BEGIN HERE
=========================================
-(c) 2012-2015 GitHub
+The MIT License (MIT)
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+Copyright (c) 2014 GitHub Inc.
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
+This package was derived from a TextMate bundle located at
+https://github.com/textmate/css.tmbundle and distributed under the following
+license, located in `README.mdown`:
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
+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.
=========================================
-END OF octicons-font NOTICES AND INFORMATION
+END OF octref/language-css NOTICES AND INFORMATION
%% PowerShell/EditorSyntax NOTICES AND INFORMATION BEGIN HERE
=========================================
@@ -1945,6 +1791,33 @@ SOFTWARE.
=========================================
END OF PowerShell/EditorSyntax NOTICES AND INFORMATION
+%% promise-polyfill NOTICES AND INFORMATION BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2014 Taylor Hakes
+Copyright (c) 2014 Forbes Lindesay
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF promise-polyfill NOTICES AND INFORMATION
+
%% seti-ui NOTICES AND INFORMATION BEGIN HERE
=========================================
Copyright (c) 2014 Jesse Weed
@@ -2357,6 +2230,32 @@ SOFTWARE.
=========================================
END OF vscode-logfile-highlighter NOTICES AND INFORMATION
+%% vscode-octicons-font NOTICES AND INFORMATION BEGIN HERE
+=========================================
+MIT License
+
+ Copyright (c) Microsoft Corporation. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
+=========================================
+END OF vscode-octicons-font NOTICES AND INFORMATION
+
%% vscode-swift NOTICES AND INFORMATION BEGIN HERE
=========================================
The MIT License (MIT)
diff --git a/build/.cachesalt b/build/.cachesalt
new file mode 100644
index 00000000000..105ce86ae3c
--- /dev/null
+++ b/build/.cachesalt
@@ -0,0 +1 @@
+2019-07-11T05:47:05.444Z
diff --git a/build/.nativeignore b/build/.nativeignore
new file mode 100644
index 00000000000..a4823bf719c
--- /dev/null
+++ b/build/.nativeignore
@@ -0,0 +1,107 @@
+# cleanup rules for native node modules, .gitignore style
+
+nan/**
+*/node_modules/nan/**
+
+fsevents/binding.gyp
+fsevents/fsevents.cc
+fsevents/build/**
+fsevents/src/**
+fsevents/test/**
+!fsevents/**/*.node
+
+vscode-sqlite3/binding.gyp
+vscode-sqlite3/benchmark/**
+vscode-sqlite3/cloudformation/**
+vscode-sqlite3/deps/**
+vscode-sqlite3/test/**
+vscode-sqlite3/build/**
+vscode-sqlite3/src/**
+!vscode-sqlite3/build/Release/*.node
+
+oniguruma/binding.gyp
+oniguruma/build/**
+oniguruma/src/**
+oniguruma/deps/**
+!oniguruma/build/Release/*.node
+!oniguruma/src/*.js
+
+windows-mutex/binding.gyp
+windows-mutex/build/**
+windows-mutex/src/**
+!windows-mutex/**/*.node
+
+native-keymap/binding.gyp
+native-keymap/build/**
+native-keymap/src/**
+native-keymap/deps/**
+!native-keymap/build/Release/*.node
+
+native-is-elevated/binding.gyp
+native-is-elevated/build/**
+native-is-elevated/src/**
+native-is-elevated/deps/**
+!native-is-elevated/build/Release/*.node
+
+native-watchdog/binding.gyp
+native-watchdog/build/**
+native-watchdog/src/**
+!native-watchdog/build/Release/*.node
+
+spdlog/binding.gyp
+spdlog/build/**
+spdlog/deps/**
+spdlog/src/**
+spdlog/test/**
+!spdlog/build/Release/*.node
+
+jschardet/dist/**
+
+windows-foreground-love/binding.gyp
+windows-foreground-love/build/**
+windows-foreground-love/src/**
+!windows-foreground-love/**/*.node
+
+windows-process-tree/binding.gyp
+windows-process-tree/build/**
+windows-process-tree/src/**
+!windows-process-tree/**/*.node
+
+keytar/binding.gyp
+keytar/build/**
+keytar/src/**
+keytar/script/**
+keytar/node_modules/**
+!keytar/**/*.node
+
+node-pty/binding.gyp
+node-pty/build/**
+node-pty/src/**
+node-pty/tools/**
+node-pty/deps/**
+!node-pty/build/Release/*.exe
+!node-pty/build/Release/*.dll
+!node-pty/build/Release/*.node
+
+nsfw/binding.gyp
+nsfw/build/**
+nsfw/src/**
+nsfw/openpa/**
+nsfw/includes/**
+!nsfw/build/Release/*.node
+!nsfw/**/*.a
+
+vsda/build/**
+vsda/ci/**
+vsda/src/**
+vsda/.gitignore
+vsda/binding.gyp
+vsda/README.md
+vsda/targets
+!vsda/build/Release/vsda.node
+
+vscode-windows-ca-certs/**/*
+!vscode-windows-ca-certs/package.json
+!vscode-windows-ca-certs/**/*.node
+
+node-addon-api/**/*
diff --git a/build/azure-pipelines/common/extract-telemetry.sh b/build/azure-pipelines/common/extract-telemetry.sh
new file mode 100755
index 00000000000..84bbd9c537c
--- /dev/null
+++ b/build/azure-pipelines/common/extract-telemetry.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+set -e
+
+cd $BUILD_STAGINGDIRECTORY
+mkdir extraction
+cd extraction
+git clone --depth 1 https://github.com/Microsoft/vscode-extension-telemetry.git
+git clone --depth 1 https://github.com/Microsoft/vscode-chrome-debug-core.git
+git clone --depth 1 https://github.com/Microsoft/vscode-node-debug2.git
+git clone --depth 1 https://github.com/Microsoft/vscode-node-debug.git
+git clone --depth 1 https://github.com/Microsoft/vscode-html-languageservice.git
+git clone --depth 1 https://github.com/Microsoft/vscode-json-languageservice.git
+$BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --sourceDir $BUILD_SOURCESDIRECTORY --excludedDir $BUILD_SOURCESDIRECTORY/extensions --outputDir . --applyEndpoints
+$BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --config $BUILD_SOURCESDIRECTORY/build/azure-pipelines/common/telemetry-config.json -o .
+mkdir -p $BUILD_SOURCESDIRECTORY/.build/telemetry
+mv declarations-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-core.json
+mv config-resolved.json $BUILD_SOURCESDIRECTORY/.build/telemetry/telemetry-extensions.json
+cd ..
+rm -rf extraction
\ No newline at end of file
diff --git a/build/azure-pipelines/common/installDistro.ts b/build/azure-pipelines/common/installDistro.ts
deleted file mode 100644
index 3cb97afd273..00000000000
--- a/build/azure-pipelines/common/installDistro.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-import * as cp from 'child_process';
-
-function yarnInstall(packageName: string): void {
- cp.execSync(`yarn add --no-lockfile ${packageName}`);
-}
-
-const product = require('../../../product.json');
-const dependencies = product.dependencies || {} as { [name: string]: string; };
-
-Object.keys(dependencies).forEach(name => {
- const url = dependencies[name];
- yarnInstall(url);
-});
\ No newline at end of file
diff --git a/build/azure-pipelines/common/publish.ts b/build/azure-pipelines/common/publish.ts
index 2095c2d2532..62113c8f3b3 100644
--- a/build/azure-pipelines/common/publish.ts
+++ b/build/azure-pipelines/common/publish.ts
@@ -6,7 +6,6 @@
'use strict';
import * as fs from 'fs';
-import { execSync } from 'child_process';
import { Readable } from 'stream';
import * as crypto from 'crypto';
import * as azure from 'azure-storage';
@@ -65,7 +64,7 @@ interface Asset {
platform: string;
type: string;
url: string;
- mooncakeUrl: string;
+ mooncakeUrl?: string;
hash: string;
sha256hash: string;
size: number;
@@ -152,9 +151,6 @@ async function publish(commit: string, quality: string, platform: string, type:
const queuedBy = process.env['BUILD_QUEUEDBY']!;
const sourceBranch = process.env['BUILD_SOURCEBRANCH']!;
- const isReleased = quality === 'insider'
- && /^master$|^refs\/heads\/master$/.test(sourceBranch)
- && /Project Collection Service Accounts|Microsoft.VisualStudio.Services.TFS/.test(queuedBy);
console.log('Publishing...');
console.log('Quality:', quality);
@@ -164,7 +160,6 @@ async function publish(commit: string, quality: string, platform: string, type:
console.log('Version:', version);
console.log('Commit:', commit);
console.log('Is Update:', isUpdate);
- console.log('Is Released:', isReleased);
console.log('File:', file);
const stat = await new Promise((c, e) => fs.stat(file, (err, stat) => err ? e(err) : c(stat)));
@@ -184,40 +179,18 @@ async function publish(commit: string, quality: string, platform: string, type:
const blobService = azure.createBlobService(storageAccount, process.env['AZURE_STORAGE_ACCESS_KEY_2']!)
.withFilter(new azure.ExponentialRetryPolicyFilter(20));
- const mooncakeBlobService = azure.createBlobService(storageAccount, process.env['MOONCAKE_STORAGE_ACCESS_KEY']!, `${storageAccount}.blob.core.chinacloudapi.cn`)
- .withFilter(new azure.ExponentialRetryPolicyFilter(20));
+ await assertContainer(blobService, quality);
- // mooncake is fussy and far away, this is needed!
- mooncakeBlobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
+ const blobExists = await doesAssetExist(blobService, quality, blobName);
- await Promise.all([
- assertContainer(blobService, quality),
- assertContainer(mooncakeBlobService, quality)
- ]);
-
- const [blobExists, moooncakeBlobExists] = await Promise.all([
- doesAssetExist(blobService, quality, blobName),
- doesAssetExist(mooncakeBlobService, quality, blobName)
- ]);
-
- const promises: Array> = [];
-
- if (!blobExists) {
- promises.push(uploadBlob(blobService, quality, blobName, file));
- }
-
- if (!moooncakeBlobExists) {
- promises.push(uploadBlob(mooncakeBlobService, quality, blobName, file));
- }
-
- if (promises.length === 0) {
+ if (blobExists) {
console.log(`Blob ${quality}, ${blobName} already exists, not publishing again.`);
return;
}
console.log('Uploading blobs to Azure storage...');
- await Promise.all(promises);
+ await uploadBlob(blobService, quality, blobName, file);
console.log('Blobs successfully uploaded.');
@@ -229,7 +202,6 @@ async function publish(commit: string, quality: string, platform: string, type:
platform: platform,
type: type,
url: `${process.env['AZURE_CDN_URL']}/${quality}/${blobName}`,
- mooncakeUrl: `${process.env['MOONCAKE_CDN_URL']}/${quality}/${blobName}`,
hash: sha1hash,
sha256hash,
size
@@ -246,7 +218,7 @@ async function publish(commit: string, quality: string, platform: string, type:
id: commit,
timestamp: (new Date()).getTime(),
version,
- isReleased: config.frozen ? false : isReleased,
+ isReleased: false,
sourceBranch,
queuedBy,
assets: [] as Array,
@@ -265,8 +237,10 @@ async function publish(commit: string, quality: string, platform: string, type:
}
function main(): void {
- if (process.env['VSCODE_BUILD_SKIP_PUBLISH']) {
- console.warn('Skipping publish due to VSCODE_BUILD_SKIP_PUBLISH');
+ const commit = process.env['BUILD_SOURCEVERSION'];
+
+ if (!commit) {
+ console.warn('Skipping publish due to missing BUILD_SOURCEVERSION');
return;
}
@@ -275,7 +249,6 @@ function main(): void {
});
const [quality, platform, type, name, version, _isUpdate, file] = opts._;
- const commit = execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim();
publish(commit, quality, platform, type, name, version, _isUpdate, file, opts).catch(err => {
console.error(err);
diff --git a/build/azure-pipelines/common/release.ts b/build/azure-pipelines/common/release.ts
new file mode 100644
index 00000000000..1220bd62e68
--- /dev/null
+++ b/build/azure-pipelines/common/release.ts
@@ -0,0 +1,109 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+import { DocumentClient } from 'documentdb';
+
+interface Config {
+ id: string;
+ frozen: boolean;
+}
+
+function createDefaultConfig(quality: string): Config {
+ return {
+ id: quality,
+ frozen: false
+ };
+}
+
+function getConfig(quality: string): Promise {
+ const client = new DocumentClient(process.env['AZURE_DOCUMENTDB_ENDPOINT']!, { masterKey: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
+ const collection = 'dbs/builds/colls/config';
+ const query = {
+ query: `SELECT TOP 1 * FROM c WHERE c.id = @quality`,
+ parameters: [
+ { name: '@quality', value: quality }
+ ]
+ };
+
+ return new Promise((c, e) => {
+ client.queryDocuments(collection, query).toArray((err, results) => {
+ if (err && err.code !== 409) { return e(err); }
+
+ c(!results || results.length === 0 ? createDefaultConfig(quality) : results[0] as any as Config);
+ });
+ });
+}
+
+function doRelease(commit: string, quality: string): Promise {
+ const client = new DocumentClient(process.env['AZURE_DOCUMENTDB_ENDPOINT']!, { masterKey: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
+ const collection = 'dbs/builds/colls/' + quality;
+ const query = {
+ query: 'SELECT TOP 1 * FROM c WHERE c.id = @id',
+ parameters: [{ name: '@id', value: commit }]
+ };
+
+ let updateTries = 0;
+
+ function update(): Promise {
+ updateTries++;
+
+ return new Promise((c, e) => {
+ client.queryDocuments(collection, query).toArray((err, results) => {
+ if (err) { return e(err); }
+ if (results.length !== 1) { return e(new Error('No documents')); }
+
+ const release = results[0];
+ release.isReleased = true;
+
+ client.replaceDocument(release._self, release, err => {
+ if (err && err.code === 409 && updateTries < 5) { return c(update()); }
+ if (err) { return e(err); }
+
+ console.log('Build successfully updated.');
+ c();
+ });
+ });
+ });
+ }
+
+ return update();
+}
+
+async function release(commit: string, quality: string): Promise {
+ const config = await getConfig(quality);
+
+ console.log('Quality config:', config);
+
+ if (config.frozen) {
+ console.log(`Skipping release because quality ${quality} is frozen.`);
+ return;
+ }
+
+ await doRelease(commit, quality);
+}
+
+function env(name: string): string {
+ const result = process.env[name];
+
+ if (!result) {
+ throw new Error(`Skipping release due to missing env: ${name}`);
+ }
+
+ return result;
+}
+
+async function main(): Promise {
+ const commit = env('BUILD_SOURCEVERSION');
+ const quality = env('VSCODE_QUALITY');
+
+ await release(commit, quality);
+}
+
+main().catch(err => {
+ console.error(err);
+ process.exit(1);
+});
diff --git a/build/azure-pipelines/common/symbols.ts b/build/azure-pipelines/common/symbols.ts
index 1a5125295f3..153be4f25b1 100644
--- a/build/azure-pipelines/common/symbols.ts
+++ b/build/azure-pipelines/common/symbols.ts
@@ -36,7 +36,6 @@ export interface IVersionAccessor extends IApplicationAccessor {
enum Platform {
WIN_32 = 'win32-ia32',
WIN_64 = 'win32-x64',
- LINUX_32 = 'linux-ia32',
LINUX_64 = 'linux-x64',
MAC_OS = 'darwin-x64'
}
@@ -147,6 +146,10 @@ async function ensureVersionAndSymbols(options: IOptions) {
// Check version does not exist
console.log(`HockeyApp: checking for existing version ${options.versions.code} (${options.platform})`);
const versions = await getVersions({ accessToken: options.access.hockeyAppToken, appId: options.access.hockeyAppId });
+ if (!Array.isArray(versions.app_versions)) {
+ throw new Error(`Unexpected response: ${JSON.stringify(versions)}`);
+ }
+
if (versions.app_versions.some(v => v.version === options.versions.code)) {
console.log(`HockeyApp: Returning without uploading symbols because version ${options.versions.code} (${options.platform}) was already found`);
return;
@@ -185,13 +188,17 @@ const hockeyAppToken = process.argv[3];
const is64 = process.argv[4] === 'x64';
const hockeyAppId = process.argv[5];
+if (process.argv.length !== 6) {
+ throw new Error(`HockeyApp: Unexpected number of arguments. Got ${process.argv}`);
+}
+
let platform: Platform;
if (process.platform === 'darwin') {
platform = Platform.MAC_OS;
} else if (process.platform === 'win32') {
platform = is64 ? Platform.WIN_64 : Platform.WIN_32;
} else {
- platform = is64 ? Platform.LINUX_64 : Platform.LINUX_32;
+ platform = Platform.LINUX_64;
}
// Create version and upload symbols in HockeyApp
@@ -212,7 +219,9 @@ if (repository && codeVersion && electronVersion && (product.quality === 'stable
}).then(() => {
console.log('HockeyApp: done');
}).catch(error => {
- console.error(`HockeyApp: error (${error})`);
+ console.error(`HockeyApp: error ${error} (AppID: ${hockeyAppId})`);
+
+ return process.exit(1);
});
} else {
console.log(`HockeyApp: skipping due to unexpected context (repository: ${repository}, codeVersion: ${codeVersion}, electronVersion: ${electronVersion}, quality: ${product.quality})`);
diff --git a/build/azure-pipelines/common/sync-mooncake.ts b/build/azure-pipelines/common/sync-mooncake.ts
new file mode 100644
index 00000000000..1eac8f34e92
--- /dev/null
+++ b/build/azure-pipelines/common/sync-mooncake.ts
@@ -0,0 +1,171 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+import * as url from 'url';
+import * as azure from 'azure-storage';
+import * as mime from 'mime';
+import { DocumentClient, RetrievedDocument } from 'documentdb';
+
+function log(...args: any[]) {
+ console.log(...[`[${new Date().toISOString()}]`, ...args]);
+}
+
+function error(...args: any[]) {
+ console.error(...[`[${new Date().toISOString()}]`, ...args]);
+}
+
+if (process.argv.length < 3) {
+ error('Usage: node sync-mooncake.js ');
+ process.exit(-1);
+}
+
+interface Build extends RetrievedDocument {
+ assets: Asset[];
+}
+
+interface Asset {
+ platform: string;
+ type: string;
+ url: string;
+ mooncakeUrl: string;
+ hash: string;
+ sha256hash: string;
+ size: number;
+ supportsFastUpdate?: boolean;
+}
+
+function updateBuild(commit: string, quality: string, platform: string, type: string, asset: Asset): Promise {
+ const client = new DocumentClient(process.env['AZURE_DOCUMENTDB_ENDPOINT']!, { masterKey: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
+ const collection = 'dbs/builds/colls/' + quality;
+ const updateQuery = {
+ query: 'SELECT TOP 1 * FROM c WHERE c.id = @id',
+ parameters: [{ name: '@id', value: commit }]
+ };
+
+ let updateTries = 0;
+
+ function _update(): Promise {
+ updateTries++;
+
+ return new Promise((c, e) => {
+ client.queryDocuments(collection, updateQuery).toArray((err, results) => {
+ if (err) { return e(err); }
+ if (results.length !== 1) { return e(new Error('No documents')); }
+
+ const release = results[0];
+
+ release.assets = [
+ ...release.assets.filter((a: any) => !(a.platform === platform && a.type === type)),
+ asset
+ ];
+
+ client.replaceDocument(release._self, release, err => {
+ if (err && err.code === 409 && updateTries < 5) { return c(_update()); }
+ if (err) { return e(err); }
+
+ log('Build successfully updated.');
+ c();
+ });
+ });
+ });
+ }
+
+ return _update();
+}
+
+async function sync(commit: string, quality: string): Promise {
+ log(`Synchronizing Mooncake assets for ${quality}, ${commit}...`);
+
+ const cosmosdb = new DocumentClient(process.env['AZURE_DOCUMENTDB_ENDPOINT']!, { masterKey: process.env['AZURE_DOCUMENTDB_MASTERKEY'] });
+ const collection = `dbs/builds/colls/${quality}`;
+ const query = {
+ query: 'SELECT TOP 1 * FROM c WHERE c.id = @id',
+ parameters: [{ name: '@id', value: commit }]
+ };
+
+ const build = await new Promise((c, e) => {
+ cosmosdb.queryDocuments(collection, query).toArray((err, results) => {
+ if (err) { return e(err); }
+ if (results.length !== 1) { return e(new Error('No documents')); }
+ c(results[0] as Build);
+ });
+ });
+
+ log(`Found build for ${commit}, with ${build.assets.length} assets`);
+
+ const storageAccount = process.env['AZURE_STORAGE_ACCOUNT_2']!;
+
+ const blobService = azure.createBlobService(storageAccount, process.env['AZURE_STORAGE_ACCESS_KEY_2']!)
+ .withFilter(new azure.ExponentialRetryPolicyFilter(20));
+
+ const mooncakeBlobService = azure.createBlobService(storageAccount, process.env['MOONCAKE_STORAGE_ACCESS_KEY']!, `${storageAccount}.blob.core.chinacloudapi.cn`)
+ .withFilter(new azure.ExponentialRetryPolicyFilter(20));
+
+ // mooncake is fussy and far away, this is needed!
+ blobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
+ mooncakeBlobService.defaultClientRequestTimeoutInMs = 10 * 60 * 1000;
+
+ for (const asset of build.assets) {
+ try {
+ const blobPath = url.parse(asset.url).path;
+
+ if (!blobPath) {
+ throw new Error(`Failed to parse URL: ${asset.url}`);
+ }
+
+ const blobName = blobPath.replace(/^\/\w+\//, '');
+
+ log(`Found ${blobName}`);
+
+ if (asset.mooncakeUrl) {
+ log(` Already in Mooncake ✔️`);
+ continue;
+ }
+
+ const readStream = blobService.createReadStream(quality, blobName, undefined!);
+ const blobOptions: azure.BlobService.CreateBlockBlobRequestOptions = {
+ contentSettings: {
+ contentType: mime.lookup(blobPath),
+ cacheControl: 'max-age=31536000, public'
+ }
+ };
+
+ const writeStream = mooncakeBlobService.createWriteStreamToBlockBlob(quality, blobName, blobOptions, undefined);
+
+ log(` Uploading to Mooncake...`);
+ await new Promise((c, e) => readStream.pipe(writeStream).on('finish', c).on('error', e));
+
+ log(` Updating build in DB...`);
+ asset.mooncakeUrl = `${process.env['MOONCAKE_CDN_URL']}${blobPath}`;
+ await updateBuild(commit, quality, asset.platform, asset.type, asset);
+
+ log(` Done ✔️`);
+ } catch (err) {
+ error(err);
+ }
+ }
+
+ log(`All done ✔️`);
+}
+
+function main(): void {
+ const commit = process.env['BUILD_SOURCEVERSION'];
+
+ if (!commit) {
+ error('Skipping publish due to missing BUILD_SOURCEVERSION');
+ return;
+ }
+
+ const quality = process.argv[2];
+
+ sync(commit, quality).catch(err => {
+ error(err);
+ process.exit(1);
+ });
+}
+
+main();
diff --git a/build/azure-pipelines/common/telemetry-config.json b/build/azure-pipelines/common/telemetry-config.json
new file mode 100644
index 00000000000..fcba1e042ba
--- /dev/null
+++ b/build/azure-pipelines/common/telemetry-config.json
@@ -0,0 +1,72 @@
+[
+ {
+ "eventPrefix": "typescript-language-features/",
+ "sourceDirs": [
+ "../../s/extensions/typescript-language-features"
+ ],
+ "excludedDirs": [],
+ "applyEndpoints": true
+ },
+ {
+ "eventPrefix": "git/",
+ "sourceDirs": [
+ "../../s/extensions/git"
+ ],
+ "excludedDirs": [],
+ "applyEndpoints": true
+ },
+ {
+ "eventPrefix": "extension-telemetry/",
+ "sourceDirs": [
+ "vscode-extension-telemetry"
+ ],
+ "excludedDirs": [],
+ "applyEndpoints": true
+ },
+ {
+ "eventPrefix": "vscode-markdown/",
+ "sourceDirs": [
+ "../../s/extensions/markdown-language-features"
+ ],
+ "excludedDirs": [],
+ "applyEndpoints": true
+ },
+ {
+ "eventPrefix": "html-language-features/",
+ "sourceDirs": [
+ "../../s/extensions/html-language-features",
+ "vscode-html-languageservice"
+ ],
+ "excludedDirs": [],
+ "applyEndpoints": true
+ },
+ {
+ "eventPrefix": "json-language-features/",
+ "sourceDirs": [
+ "../../s/extensions/json-language-features",
+ "vscode-json-languageservice"
+ ],
+ "excludedDirs": [],
+ "applyEndpoints": true
+ },
+ {
+ "eventPrefix": "ms-vscode.node2/",
+ "sourceDirs": [
+ "vscode-chrome-debug-core",
+ "vscode-node-debug2"
+ ],
+ "excludedDirs": [],
+ "applyEndpoints": true,
+ "patchDebugEvents": true
+ },
+ {
+ "eventPrefix": "ms-vscode.node/",
+ "sourceDirs": [
+ "vscode-chrome-debug-core",
+ "vscode-node-debug"
+ ],
+ "excludedDirs": [],
+ "applyEndpoints": true,
+ "patchDebugEvents": true
+ }
+]
\ No newline at end of file
diff --git a/build/azure-pipelines/darwin/continuous-build-darwin.yml b/build/azure-pipelines/darwin/continuous-build-darwin.yml
index 99e17e940a6..018719423fe 100644
--- a/build/azure-pipelines/darwin/continuous-build-darwin.yml
+++ b/build/azure-pipelines/darwin/continuous-build-darwin.yml
@@ -1,13 +1,25 @@
steps:
- task: NodeTool@0
inputs:
- versionSpec: "8.12.0"
+ versionSpec: "10.15.1"
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: '$(ArtifactFeed)'
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
- script: |
- yarn
+ yarn --frozen-lockfile
displayName: Install Dependencies
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
+ inputs:
+ keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: '$(ArtifactFeed)'
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- script: |
yarn gulp electron-x64
displayName: Download Electron
@@ -17,9 +29,6 @@ steps:
- script: |
yarn monaco-compile-check
displayName: Run Monaco Editor Checks
-- script: |
- yarn strict-null-check
- displayName: Run Strict Null Checks
- script: |
yarn compile
displayName: Compile Sources
diff --git a/build/azure-pipelines/darwin/product-build-darwin.yml b/build/azure-pipelines/darwin/product-build-darwin.yml
index ff9d32b35ca..b712e072849 100644
--- a/build/azure-pipelines/darwin/product-build-darwin.yml
+++ b/build/azure-pipelines/darwin/product-build-darwin.yml
@@ -1,29 +1,95 @@
steps:
+- script: |
+ mkdir -p .build
+ echo -n $BUILD_SOURCEVERSION > .build/commit
+ displayName: Prepare cache flag
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .build/commit'
+ targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
+ vstsFeed: 'npm-vscode'
+ platformIndependent: true
+ alias: 'Compilation'
+
+- script: |
+ set -e
+ exit 1
+ displayName: Check RestoreCache
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
- task: NodeTool@0
inputs:
- versionSpec: "8.12.0"
+ versionSpec: "10.15.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
-- script: |
- set -e
- echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc
- yarn
- yarn gulp -- hygiene
- yarn monaco-compile-check
- yarn strict-null-check
- VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" yarn gulp -- mixin
- node build/azure-pipelines/common/installDistro.js
- node build/lib/builtInExtensions.js
- displayName: Prepare build
+- task: AzureKeyVault@1
+ displayName: 'Azure Key Vault: Get Secrets'
+ inputs:
+ azureSubscription: 'vscode-builds-subscription'
+ KeyVaultName: vscode
- script: |
set -e
- VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" \
- AZURE_STORAGE_ACCESS_KEY="$(AZURE_STORAGE_ACCESS_KEY)" \
- yarn gulp -- vscode-darwin-min upload-vscode-sourcemaps
+
+ cat << EOF > ~/.netrc
+ machine github.com
+ login vscode
+ password $(github-distro-mixin-password)
+ EOF
+
+ git config user.email "vscode@microsoft.com"
+ git config user.name "VSCode"
+ displayName: Prepare tooling
+
+- script: |
+ set -e
+ git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
+ git fetch distro
+ git merge $(node -p "require('./package.json').distro")
+ displayName: Merge distro
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: 'npm-vscode'
+
+- script: |
+ set -e
+ CHILD_CONCURRENCY=1 yarn --frozen-lockfile
+ displayName: Install dependencies
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: 'npm-vscode'
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+
+- script: |
+ set -e
+ yarn postinstall
+ displayName: Run postinstall scripts
+ condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
+
+- script: |
+ set -e
+ node build/azure-pipelines/mixin
+ displayName: Mix in quality
+
+- script: |
+ set -e
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ yarn gulp vscode-darwin-min-ci
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ yarn gulp vscode-reh-darwin-min-ci
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ yarn gulp vscode-reh-web-darwin-min-ci
displayName: Build
- script: |
@@ -32,6 +98,13 @@ steps:
# APP_NAME="`ls $(agent.builddirectory)/VSCode-darwin | head -n 1`"
# yarn smoketest -- --build "$(agent.builddirectory)/VSCode-darwin/$APP_NAME"
displayName: Run unit tests
+ condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+
+- script: |
+ set -e
+ ./scripts/test-integration.sh --build --tfs "Integration Tests"
+ displayName: Run integration tests
+ condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
@@ -59,31 +132,12 @@ steps:
- script: |
set -e
-
- # remove pkg from archive
- zip -d ../VSCode-darwin.zip "*.pkg"
-
- # publish the build
- PACKAGEJSON=`ls ../VSCode-darwin/*.app/Contents/Resources/app/package.json`
- VERSION=`node -p "require(\"$PACKAGEJSON\").version"`
- AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \
- AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \
- MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \
- node build/azure-pipelines/common/publish.js \
- "$(VSCODE_QUALITY)" \
- darwin \
- archive \
- "VSCode-darwin-$(VSCODE_QUALITY).zip" \
- $VERSION \
- true \
- ../VSCode-darwin.zip
-
- # publish hockeyapp symbols
- node build/azure-pipelines/common/symbols.js "$(VSCODE_MIXIN_PASSWORD)" "$(VSCODE_HOCKEYAPP_TOKEN)" "$(VSCODE_ARCH)" "$(VSCODE_HOCKEYAPP_ID_MACOS)"
-
- # upload configuration
- AZURE_STORAGE_ACCESS_KEY="$(AZURE_STORAGE_ACCESS_KEY)" \
- yarn gulp -- upload-vscode-configuration
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
+ AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
+ AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
+ VSCODE_HOCKEYAPP_TOKEN="$(vscode-hockeyapp-token)" \
+ ./build/azure-pipelines/darwin/publish.sh
displayName: Publish
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
diff --git a/build/azure-pipelines/darwin/publish.sh b/build/azure-pipelines/darwin/publish.sh
new file mode 100755
index 00000000000..fa453bcaff5
--- /dev/null
+++ b/build/azure-pipelines/darwin/publish.sh
@@ -0,0 +1,36 @@
+#!/usr/bin/env bash
+set -e
+
+# remove pkg from archive
+zip -d ../VSCode-darwin.zip "*.pkg"
+
+# publish the build
+PACKAGEJSON=`ls ../VSCode-darwin/*.app/Contents/Resources/app/package.json`
+VERSION=`node -p "require(\"$PACKAGEJSON\").version"`
+node build/azure-pipelines/common/publish.js \
+ "$VSCODE_QUALITY" \
+ darwin \
+ archive \
+ "VSCode-darwin-$VSCODE_QUALITY.zip" \
+ $VERSION \
+ true \
+ ../VSCode-darwin.zip
+
+# package Remote Extension Host
+pushd .. && mv vscode-reh-darwin vscode-server-darwin && zip -Xry vscode-server-darwin.zip vscode-server-darwin && popd
+
+# publish Remote Extension Host
+node build/azure-pipelines/common/publish.js \
+ "$VSCODE_QUALITY" \
+ server-darwin \
+ archive-unsigned \
+ "vscode-server-darwin.zip" \
+ $VERSION \
+ true \
+ ../vscode-server-darwin.zip
+
+# publish hockeyapp symbols
+node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" x64 "$VSCODE_HOCKEYAPP_ID_MACOS"
+
+# upload configuration
+yarn gulp upload-vscode-configuration
diff --git a/build/azure-pipelines/distro-build.yml b/build/azure-pipelines/distro-build.yml
new file mode 100644
index 00000000000..62ee67ad1c6
--- /dev/null
+++ b/build/azure-pipelines/distro-build.yml
@@ -0,0 +1,42 @@
+trigger:
+ branches:
+ include: ['master', 'release/*']
+pr:
+ branches:
+ include: ['master', 'release/*']
+
+steps:
+- task: NodeTool@0
+ inputs:
+ versionSpec: "10.15.1"
+
+- task: AzureKeyVault@1
+ displayName: 'Azure Key Vault: Get Secrets'
+ inputs:
+ azureSubscription: 'vscode-builds-subscription'
+ KeyVaultName: vscode
+
+- script: |
+ set -e
+
+ cat << EOF > ~/.netrc
+ machine github.com
+ login vscode
+ password $(github-distro-mixin-password)
+ EOF
+
+ git config user.email "vscode@microsoft.com"
+ git config user.name "VSCode"
+
+ git remote add distro "https://github.com/$VSCODE_MIXIN_REPO.git"
+ git fetch distro
+
+ # Push master branch into oss/master
+ git push distro origin/master:refs/heads/oss/master
+
+ # Push every release branch into oss/release
+ git for-each-ref --format="%(refname:short)" refs/remotes/origin/release/* | sed 's/^origin\/\(.*\)$/\0:refs\/heads\/oss\/\1/' | xargs git push distro
+
+ git merge $(node -p "require('./package.json').distro")
+
+ displayName: Sync & Merge Distro
diff --git a/build/azure-pipelines/linux/continuous-build-linux.yml b/build/azure-pipelines/linux/continuous-build-linux.yml
index fc124c5bf45..8b0aaca2ad9 100644
--- a/build/azure-pipelines/linux/continuous-build-linux.yml
+++ b/build/azure-pipelines/linux/continuous-build-linux.yml
@@ -9,13 +9,25 @@ steps:
sudo service xvfb start
- task: NodeTool@0
inputs:
- versionSpec: "8.12.0"
+ versionSpec: "10.15.1"
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: '$(ArtifactFeed)'
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
- script: |
- yarn
+ yarn --frozen-lockfile
displayName: Install Dependencies
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
+ inputs:
+ keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: '$(ArtifactFeed)'
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- script: |
yarn gulp electron-x64
displayName: Download Electron
@@ -25,9 +37,6 @@ steps:
- script: |
yarn monaco-compile-check
displayName: Run Monaco Editor Checks
-- script: |
- yarn strict-null-check
- displayName: Run Strict Null Checks
- script: |
yarn compile
displayName: Compile Sources
@@ -37,9 +46,12 @@ steps:
- script: |
DISPLAY=:10 ./scripts/test.sh --tfs "Unit Tests"
displayName: Run Unit Tests
+- script: |
+ DISPLAY=:10 ./scripts/test-integration.sh --tfs "Integration Tests"
+ displayName: Run Integration Tests
- task: PublishTestResults@2
displayName: Publish Tests Results
inputs:
testResultsFiles: '*-results.xml'
searchFolder: '$(Build.ArtifactStagingDirectory)/test-results'
- condition: succeededOrFailed()
\ No newline at end of file
+ condition: succeededOrFailed()
diff --git a/build/azure-pipelines/linux/multiarch/alpine/build.sh b/build/azure-pipelines/linux/multiarch/alpine/build.sh
new file mode 100755
index 00000000000..4f01bc9a7e5
--- /dev/null
+++ b/build/azure-pipelines/linux/multiarch/alpine/build.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -e
+echo 'noop'
\ No newline at end of file
diff --git a/build/azure-pipelines/linux/multiarch/alpine/prebuild.sh b/build/azure-pipelines/linux/multiarch/alpine/prebuild.sh
new file mode 100755
index 00000000000..4f01bc9a7e5
--- /dev/null
+++ b/build/azure-pipelines/linux/multiarch/alpine/prebuild.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -e
+echo 'noop'
\ No newline at end of file
diff --git a/build/azure-pipelines/linux/multiarch/alpine/publish.sh b/build/azure-pipelines/linux/multiarch/alpine/publish.sh
new file mode 100755
index 00000000000..4f01bc9a7e5
--- /dev/null
+++ b/build/azure-pipelines/linux/multiarch/alpine/publish.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -e
+echo 'noop'
\ No newline at end of file
diff --git a/build/azure-pipelines/linux/multiarch/arm64/build.sh b/build/azure-pipelines/linux/multiarch/arm64/build.sh
new file mode 100755
index 00000000000..4f01bc9a7e5
--- /dev/null
+++ b/build/azure-pipelines/linux/multiarch/arm64/build.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -e
+echo 'noop'
\ No newline at end of file
diff --git a/build/azure-pipelines/linux/multiarch/arm64/prebuild.sh b/build/azure-pipelines/linux/multiarch/arm64/prebuild.sh
new file mode 100755
index 00000000000..4f01bc9a7e5
--- /dev/null
+++ b/build/azure-pipelines/linux/multiarch/arm64/prebuild.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -e
+echo 'noop'
\ No newline at end of file
diff --git a/build/azure-pipelines/linux/multiarch/arm64/publish.sh b/build/azure-pipelines/linux/multiarch/arm64/publish.sh
new file mode 100755
index 00000000000..4f01bc9a7e5
--- /dev/null
+++ b/build/azure-pipelines/linux/multiarch/arm64/publish.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -e
+echo 'noop'
\ No newline at end of file
diff --git a/build/azure-pipelines/linux/multiarch/armhf/build.sh b/build/azure-pipelines/linux/multiarch/armhf/build.sh
new file mode 100755
index 00000000000..4f01bc9a7e5
--- /dev/null
+++ b/build/azure-pipelines/linux/multiarch/armhf/build.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -e
+echo 'noop'
\ No newline at end of file
diff --git a/build/azure-pipelines/linux/multiarch/armhf/prebuild.sh b/build/azure-pipelines/linux/multiarch/armhf/prebuild.sh
new file mode 100755
index 00000000000..4f01bc9a7e5
--- /dev/null
+++ b/build/azure-pipelines/linux/multiarch/armhf/prebuild.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -e
+echo 'noop'
\ No newline at end of file
diff --git a/build/azure-pipelines/linux/multiarch/armhf/publish.sh b/build/azure-pipelines/linux/multiarch/armhf/publish.sh
new file mode 100755
index 00000000000..4f01bc9a7e5
--- /dev/null
+++ b/build/azure-pipelines/linux/multiarch/armhf/publish.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+set -e
+echo 'noop'
\ No newline at end of file
diff --git a/build/azure-pipelines/linux/product-build-linux-multiarch.yml b/build/azure-pipelines/linux/product-build-linux-multiarch.yml
new file mode 100644
index 00000000000..dff5ae2ceaf
--- /dev/null
+++ b/build/azure-pipelines/linux/product-build-linux-multiarch.yml
@@ -0,0 +1,115 @@
+steps:
+- script: |
+ mkdir -p .build
+ echo -n $BUILD_SOURCEVERSION > .build/commit
+ displayName: Prepare cache flag
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .build/commit'
+ targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
+ vstsFeed: 'npm-vscode'
+ platformIndependent: true
+ alias: 'Compilation'
+
+- script: |
+ set -e
+ exit 1
+ displayName: Check RestoreCache
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- task: NodeTool@0
+ inputs:
+ versionSpec: "10.15.1"
+
+- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
+ inputs:
+ versionSpec: "1.10.1"
+
+- task: AzureKeyVault@1
+ displayName: 'Azure Key Vault: Get Secrets'
+ inputs:
+ azureSubscription: 'vscode-builds-subscription'
+ KeyVaultName: vscode
+
+- task: Docker@1
+ displayName: 'Pull image'
+ inputs:
+ azureSubscriptionEndpoint: 'vscode-builds-subscription'
+ azureContainerRegistry: vscodehub.azurecr.io
+ command: 'Run an image'
+ imageName: 'vscode-linux-build-agent:$(VSCODE_ARCH)'
+ containerCommand: uname
+
+- script: |
+ set -e
+
+ cat << EOF > ~/.netrc
+ machine github.com
+ login vscode
+ password $(github-distro-mixin-password)
+ EOF
+
+ git config user.email "vscode@microsoft.com"
+ git config user.name "VSCode"
+ displayName: Prepare tooling
+
+- script: |
+ set -e
+ git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
+ git fetch distro
+ git merge $(node -p "require('./package.json').distro")
+ displayName: Merge distro
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: 'npm-vscode'
+
+- script: |
+ set -e
+ CHILD_CONCURRENCY=1 yarn --frozen-lockfile
+ displayName: Install dependencies
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: 'npm-vscode'
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+
+- script: |
+ set -e
+ yarn postinstall
+ displayName: Run postinstall scripts
+ condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
+
+- script: |
+ set -e
+ node build/azure-pipelines/mixin
+ displayName: Mix in quality
+
+- script: |
+ set -e
+ CHILD_CONCURRENCY=1 ./build/azure-pipelines/linux/multiarch/$(VSCODE_ARCH)/prebuild.sh
+ displayName: Prebuild
+
+- script: |
+ set -e
+ ./build/azure-pipelines/linux/multiarch/$(VSCODE_ARCH)/build.sh
+ displayName: Build
+
+- script: |
+ set -e
+ AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
+ AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ VSCODE_HOCKEYAPP_TOKEN="$(vscode-hockeyapp-token)" \
+ ./build/azure-pipelines/linux/multiarch/$(VSCODE_ARCH)/publish.sh
+ displayName: Publish
+
+- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
+ displayName: 'Component Detection'
+ continueOnError: true
\ No newline at end of file
diff --git a/build/azure-pipelines/linux/product-build-linux.yml b/build/azure-pipelines/linux/product-build-linux.yml
index 6cf126af1e4..dee07a95d78 100644
--- a/build/azure-pipelines/linux/product-build-linux.yml
+++ b/build/azure-pipelines/linux/product-build-linux.yml
@@ -1,112 +1,130 @@
steps:
+- script: |
+ mkdir -p .build
+ echo -n $BUILD_SOURCEVERSION > .build/commit
+ displayName: Prepare cache flag
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .build/commit'
+ targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
+ vstsFeed: 'npm-vscode'
+ platformIndependent: true
+ alias: 'Compilation'
+
+- script: |
+ set -e
+ exit 1
+ displayName: Check RestoreCache
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
- task: NodeTool@0
inputs:
- versionSpec: "8.12.0"
+ versionSpec: "10.15.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
-- script: |
- set -e
- export npm_config_arch="$(VSCODE_ARCH)"
- if [[ "$(VSCODE_ARCH)" == "ia32" ]]; then
- export PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig"
- fi
-
- echo "machine monacotools.visualstudio.com password $(VSO_PAT)" > ~/.netrc
- CHILD_CONCURRENCY=1 yarn
- npm run gulp -- hygiene
- npm run monaco-compile-check
- npm run strict-null-check
- VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- mixin
- node build/azure-pipelines/common/installDistro.js
- node build/lib/builtInExtensions.js
+- task: AzureKeyVault@1
+ displayName: 'Azure Key Vault: Get Secrets'
+ inputs:
+ azureSubscription: 'vscode-builds-subscription'
+ KeyVaultName: vscode
- script: |
set -e
- VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)" npm run gulp -- vscode-linux-$(VSCODE_ARCH)-min
- name: build
+ cat << EOF > ~/.netrc
+ machine github.com
+ login vscode
+ password $(github-distro-mixin-password)
+ EOF
+
+ git config user.email "vscode@microsoft.com"
+ git config user.name "VSCode"
+ displayName: Prepare tooling
- script: |
set -e
- npm run gulp -- "electron-$(VSCODE_ARCH)"
+ git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
+ git fetch distro
+ git merge $(node -p "require('./package.json').distro")
+ displayName: Merge distro
- # xvfb seems to be crashing often, let's make sure it's always up
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: 'npm-vscode'
+
+- script: |
+ set -e
+ CHILD_CONCURRENCY=1 yarn --frozen-lockfile
+ displayName: Install dependencies
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: 'npm-vscode'
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+
+- script: |
+ set -e
+ yarn postinstall
+ displayName: Run postinstall scripts
+ condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
+
+- script: |
+ set -e
+ node build/azure-pipelines/mixin
+ displayName: Mix in quality
+
+- script: |
+ set -e
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ yarn gulp vscode-linux-x64-min-ci
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ yarn gulp vscode-reh-linux-x64-min-ci
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ yarn gulp vscode-reh-web-linux-x64-min-ci
+ displayName: Build
+
+- script: |
+ set -e
service xvfb start
-
- DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests"
- # yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)"
- name: test
+ displayName: Start xvfb
+ condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
- REPO="$(pwd)"
- ROOT="$REPO/.."
- ARCH="$(VSCODE_ARCH)"
+ DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests"
+ displayName: Run unit tests
+ condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- # Publish tarball
- PLATFORM_LINUX="linux-$(VSCODE_ARCH)"
- [[ "$ARCH" == "ia32" ]] && DEB_ARCH="i386" || DEB_ARCH="amd64"
- [[ "$ARCH" == "ia32" ]] && RPM_ARCH="i386" || RPM_ARCH="x86_64"
- BUILDNAME="VSCode-$PLATFORM_LINUX"
- BUILD="$ROOT/$BUILDNAME"
- BUILD_VERSION="$(date +%s)"
- [ -z "$VSCODE_QUALITY" ] && TARBALL_FILENAME="code-$BUILD_VERSION.tar.gz" || TARBALL_FILENAME="code-$VSCODE_QUALITY-$BUILD_VERSION.tar.gz"
- TARBALL_PATH="$ROOT/$TARBALL_FILENAME"
- PACKAGEJSON="$BUILD/resources/app/package.json"
- VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
+- script: |
+ set -e
+ DISPLAY=:10 ./scripts/test-integration.sh --build --tfs "Integration Tests"
+ # yarn smoketest -- --build "$(agent.builddirectory)/VSCode-linux-x64"
+ displayName: Run integration tests
+ condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- rm -rf $ROOT/code-*.tar.*
- (cd $ROOT && tar -czf $TARBALL_PATH $BUILDNAME)
-
- AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \
- AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \
- MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \
- node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_LINUX" archive-unsigned "$TARBALL_FILENAME" "$VERSION" true "$TARBALL_PATH"
-
- # Publish hockeyapp symbols
- node build/azure-pipelines/common/symbols.js "$(VSCODE_MIXIN_PASSWORD)" "$(VSCODE_HOCKEYAPP_TOKEN)" "$(VSCODE_ARCH)" "$(VSCODE_HOCKEYAPP_ID_LINUX64)"
-
- # Publish DEB
- npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-deb"
- PLATFORM_DEB="linux-deb-$ARCH"
- [[ "$ARCH" == "ia32" ]] && DEB_ARCH="i386" || DEB_ARCH="amd64"
- DEB_FILENAME="$(ls $REPO/.build/linux/deb/$DEB_ARCH/deb/)"
- DEB_PATH="$REPO/.build/linux/deb/$DEB_ARCH/deb/$DEB_FILENAME"
-
- AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \
- AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \
- MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \
- node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_DEB" package "$DEB_FILENAME" "$VERSION" true "$DEB_PATH"
-
- # Publish RPM
- npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-build-rpm"
- PLATFORM_RPM="linux-rpm-$ARCH"
- [[ "$ARCH" == "ia32" ]] && RPM_ARCH="i386" || RPM_ARCH="x86_64"
- RPM_FILENAME="$(ls $REPO/.build/linux/rpm/$RPM_ARCH/ | grep .rpm)"
- RPM_PATH="$REPO/.build/linux/rpm/$RPM_ARCH/$RPM_FILENAME"
-
- AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \
- AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \
- MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \
- node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_RPM" package "$RPM_FILENAME" "$VERSION" true "$RPM_PATH"
-
- # Publish Snap
- npm run gulp -- "vscode-linux-$(VSCODE_ARCH)-prepare-snap"
-
- # Pack snap tarball artifact, in order to preserve file perms
- mkdir -p $REPO/.build/linux/snap-tarball
- SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-$(VSCODE_ARCH).tar.gz"
- rm -rf $SNAP_TARBALL_PATH
- (cd .build/linux && tar -czf $SNAP_TARBALL_PATH snap)
-
-- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
- displayName: 'Component Detection'
- continueOnError: true
+- script: |
+ set -e
+ AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
+ AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ VSCODE_HOCKEYAPP_TOKEN="$(vscode-hockeyapp-token)" \
+ ./build/azure-pipelines/linux/publish.sh
+ displayName: Publish
- task: PublishPipelineArtifact@0
displayName: 'Publish Pipeline Artifact'
inputs:
- artifactName: snap-$(VSCODE_ARCH)
+ artifactName: snap-x64
targetPath: .build/linux/snap-tarball
+
+- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
+ displayName: 'Component Detection'
+ continueOnError: true
diff --git a/build/azure-pipelines/linux/publish.sh b/build/azure-pipelines/linux/publish.sh
new file mode 100755
index 00000000000..5fc86d02d60
--- /dev/null
+++ b/build/azure-pipelines/linux/publish.sh
@@ -0,0 +1,60 @@
+#!/usr/bin/env bash
+set -e
+REPO="$(pwd)"
+ROOT="$REPO/.."
+
+# Publish tarball
+PLATFORM_LINUX="linux-x64"
+BUILDNAME="VSCode-$PLATFORM_LINUX"
+BUILD="$ROOT/$BUILDNAME"
+BUILD_VERSION="$(date +%s)"
+[ -z "$VSCODE_QUALITY" ] && TARBALL_FILENAME="code-$BUILD_VERSION.tar.gz" || TARBALL_FILENAME="code-$VSCODE_QUALITY-$BUILD_VERSION.tar.gz"
+TARBALL_PATH="$ROOT/$TARBALL_FILENAME"
+PACKAGEJSON="$BUILD/resources/app/package.json"
+VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
+
+rm -rf $ROOT/code-*.tar.*
+(cd $ROOT && tar -czf $TARBALL_PATH $BUILDNAME)
+
+node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_LINUX" archive-unsigned "$TARBALL_FILENAME" "$VERSION" true "$TARBALL_PATH"
+
+# Publish Remote Extension Host
+LEGACY_SERVER_BUILD_NAME="vscode-reh-$PLATFORM_LINUX"
+SERVER_BUILD_NAME="vscode-server-$PLATFORM_LINUX"
+SERVER_TARBALL_FILENAME="vscode-server-$PLATFORM_LINUX.tar.gz"
+SERVER_TARBALL_PATH="$ROOT/$SERVER_TARBALL_FILENAME"
+
+rm -rf $ROOT/vscode-server-*.tar.*
+(cd $ROOT && mv $LEGACY_SERVER_BUILD_NAME $SERVER_BUILD_NAME && tar --owner=0 --group=0 -czf $SERVER_TARBALL_PATH $SERVER_BUILD_NAME)
+
+node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "server-$PLATFORM_LINUX" archive-unsigned "$SERVER_TARBALL_FILENAME" "$VERSION" true "$SERVER_TARBALL_PATH"
+
+# Publish hockeyapp symbols
+node build/azure-pipelines/common/symbols.js "$VSCODE_MIXIN_PASSWORD" "$VSCODE_HOCKEYAPP_TOKEN" "x64" "$VSCODE_HOCKEYAPP_ID_LINUX64"
+
+# Publish DEB
+yarn gulp "vscode-linux-x64-build-deb"
+PLATFORM_DEB="linux-deb-x64"
+DEB_ARCH="amd64"
+DEB_FILENAME="$(ls $REPO/.build/linux/deb/$DEB_ARCH/deb/)"
+DEB_PATH="$REPO/.build/linux/deb/$DEB_ARCH/deb/$DEB_FILENAME"
+
+node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_DEB" package "$DEB_FILENAME" "$VERSION" true "$DEB_PATH"
+
+# Publish RPM
+yarn gulp "vscode-linux-x64-build-rpm"
+PLATFORM_RPM="linux-rpm-x64"
+RPM_ARCH="x86_64"
+RPM_FILENAME="$(ls $REPO/.build/linux/rpm/$RPM_ARCH/ | grep .rpm)"
+RPM_PATH="$REPO/.build/linux/rpm/$RPM_ARCH/$RPM_FILENAME"
+
+node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "$PLATFORM_RPM" package "$RPM_FILENAME" "$VERSION" true "$RPM_PATH"
+
+# Publish Snap
+yarn gulp "vscode-linux-x64-prepare-snap"
+
+# Pack snap tarball artifact, in order to preserve file perms
+mkdir -p $REPO/.build/linux/snap-tarball
+SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-x64.tar.gz"
+rm -rf $SNAP_TARBALL_PATH
+(cd .build/linux && tar -czf $SNAP_TARBALL_PATH snap)
diff --git a/build/azure-pipelines/linux/snap-build-linux.yml b/build/azure-pipelines/linux/snap-build-linux.yml
index 29252107f46..4c3f602e8ce 100644
--- a/build/azure-pipelines/linux/snap-build-linux.yml
+++ b/build/azure-pipelines/linux/snap-build-linux.yml
@@ -1,30 +1,43 @@
steps:
- task: NodeTool@0
inputs:
- versionSpec: "8.12.0"
+ versionSpec: "10.15.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
+- task: AzureKeyVault@1
+ displayName: 'Azure Key Vault: Get Secrets'
+ inputs:
+ azureSubscription: 'vscode-builds-subscription'
+ KeyVaultName: vscode
+
- task: DownloadPipelineArtifact@0
displayName: 'Download Pipeline Artifact'
inputs:
- artifactName: snap-$(VSCODE_ARCH)
+ artifactName: snap-x64
targetPath: .build/linux/snap-tarball
- script: |
set -e
+ # Get snapcraft version
+ snapcraft --version
+
+ # Make sure we get latest packages
+ sudo apt-get update
+ sudo apt-get upgrade -y
+
+ # Define variables
REPO="$(pwd)"
- ARCH="$(VSCODE_ARCH)"
- SNAP_ROOT="$REPO/.build/linux/snap/$ARCH"
+ SNAP_ROOT="$REPO/.build/linux/snap/x64"
# Install build dependencies
(cd build && yarn)
# Unpack snap tarball artifact, in order to preserve file perms
- SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-$ARCH.tar.gz"
+ SNAP_TARBALL_PATH="$REPO/.build/linux/snap-tarball/snap-x64.tar.gz"
(cd .build/linux && tar -xzf $SNAP_TARBALL_PATH)
# Create snap package
@@ -33,10 +46,9 @@ steps:
PACKAGEJSON="$(ls $SNAP_ROOT/code*/usr/share/code*/resources/app/package.json)"
VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
SNAP_PATH="$SNAP_ROOT/$SNAP_FILENAME"
- (cd $SNAP_ROOT/code-* && snapcraft snap --output "$SNAP_PATH")
+ (cd $SNAP_ROOT/code-* && sudo --preserve-env snapcraft snap --output "$SNAP_PATH")
# Publish snap package
- AZURE_DOCUMENTDB_MASTERKEY="$(AZURE_DOCUMENTDB_MASTERKEY)" \
- AZURE_STORAGE_ACCESS_KEY_2="$(AZURE_STORAGE_ACCESS_KEY_2)" \
- MOONCAKE_STORAGE_ACCESS_KEY="$(MOONCAKE_STORAGE_ACCESS_KEY)" \
- node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "linux-snap-$ARCH" package "$SNAP_FILENAME" "$VERSION" true "$SNAP_PATH"
\ No newline at end of file
+ AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
+ AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
+ node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "linux-snap-x64" package "$SNAP_FILENAME" "$VERSION" true "$SNAP_PATH"
\ No newline at end of file
diff --git a/build/azure-pipelines/mixin.js b/build/azure-pipelines/mixin.js
new file mode 100644
index 00000000000..efb7d4d1ca9
--- /dev/null
+++ b/build/azure-pipelines/mixin.js
@@ -0,0 +1,41 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+const json = require('gulp-json-editor');
+const buffer = require('gulp-buffer');
+const filter = require('gulp-filter');
+const es = require('event-stream');
+const vfs = require('vinyl-fs');
+const fancyLog = require('fancy-log');
+const ansiColors = require('ansi-colors');
+
+function main() {
+ const quality = process.env['VSCODE_QUALITY'];
+
+ if (!quality) {
+ console.log('Missing VSCODE_QUALITY, skipping mixin');
+ return;
+ }
+
+ const productJsonFilter = filter('product.json', { restore: true });
+
+ fancyLog(ansiColors.blue('[mixin]'), `Mixing in sources:`);
+ return vfs
+ .src(`quality/${quality}/**`, { base: `quality/${quality}` })
+ .pipe(filter(f => !f.isDirectory()))
+ .pipe(productJsonFilter)
+ .pipe(buffer())
+ .pipe(json(o => Object.assign({}, require('../product.json'), o)))
+ .pipe(productJsonFilter.restore)
+ .pipe(es.mapSync(function (f) {
+ fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎'));
+ return f;
+ }))
+ .pipe(vfs.dest('.'));
+}
+
+main();
\ No newline at end of file
diff --git a/build/azure-pipelines/product-build.yml b/build/azure-pipelines/product-build.yml
index afebc973ccc..f38f4311826 100644
--- a/build/azure-pipelines/product-build.yml
+++ b/build/azure-pipelines/product-build.yml
@@ -1,65 +1,150 @@
resources:
containers:
- container: vscode-x64
- image: joaomoreno/vscode-linux-build-agent:x64
- - container: vscode-ia32
- image: joaomoreno/vscode-linux-build-agent:ia32
+ image: vscodehub.azurecr.io/vscode-linux-build-agent:x64
+ endpoint: VSCodeHub
- container: snapcraft
- image: snapcore/snapcraft
+ image: snapcore/snapcraft:stable
jobs:
+- job: Compile
+ pool:
+ vmImage: 'Ubuntu-16.04'
+ container: vscode-x64
+ steps:
+ - template: product-compile.yml
+
- job: Windows
- condition: eq(variables['VSCODE_BUILD_WIN32'], 'true')
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32'], 'true'))
pool:
vmImage: VS2017-Win2016
variables:
VSCODE_ARCH: x64
+ dependsOn:
+ - Compile
steps:
- template: win32/product-build-win32.yml
- job: Windows32
- condition: eq(variables['VSCODE_BUILD_WIN32_32BIT'], 'true')
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32_32BIT'], 'true'))
pool:
vmImage: VS2017-Win2016
variables:
VSCODE_ARCH: ia32
+ dependsOn:
+ - Compile
steps:
- template: win32/product-build-win32.yml
- job: Linux
- condition: eq(variables['VSCODE_BUILD_LINUX'], 'true')
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
pool:
vmImage: 'Ubuntu-16.04'
- variables:
- VSCODE_ARCH: x64
container: vscode-x64
+ dependsOn:
+ - Compile
steps:
- template: linux/product-build-linux.yml
- job: LinuxSnap
- condition: eq(variables['VSCODE_BUILD_LINUX'], 'true')
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
pool:
vmImage: 'Ubuntu-16.04'
- variables:
- VSCODE_ARCH: x64
container: snapcraft
dependsOn: Linux
steps:
- template: linux/snap-build-linux.yml
-- job: Linux32
- condition: eq(variables['VSCODE_BUILD_LINUX_32BIT'], 'true')
+- job: LinuxArmhf
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARMHF'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
pool:
vmImage: 'Ubuntu-16.04'
variables:
- VSCODE_ARCH: ia32
- container: vscode-ia32
+ VSCODE_ARCH: armhf
+ dependsOn:
+ - Compile
steps:
- - template: linux/product-build-linux.yml
+ - template: linux/product-build-linux-multiarch.yml
+
+- job: LinuxArm64
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARM64'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
+ pool:
+ vmImage: 'Ubuntu-16.04'
+ variables:
+ VSCODE_ARCH: arm64
+ dependsOn:
+ - Compile
+ steps:
+ - template: linux/product-build-linux-multiarch.yml
+
+- job: LinuxAlpine
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ALPINE'], 'true'), ne(variables['VSCODE_QUALITY'], 'stable'))
+ pool:
+ vmImage: 'Ubuntu-16.04'
+ variables:
+ VSCODE_ARCH: alpine
+ dependsOn:
+ - Compile
+ steps:
+ - template: linux/product-build-linux-multiarch.yml
+
+- job: LinuxWeb
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WEB'], 'true'))
+ pool:
+ vmImage: 'Ubuntu-16.04'
+ variables:
+ VSCODE_ARCH: x64
+ dependsOn:
+ - Compile
+ steps:
+ - template: web/product-build-web.yml
- job: macOS
- condition: eq(variables['VSCODE_BUILD_MACOS'], 'true')
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_MACOS'], 'true'))
pool:
vmImage: macOS 10.13
+ dependsOn:
+ - Compile
steps:
- - template: darwin/product-build-darwin.yml
\ No newline at end of file
+ - template: darwin/product-build-darwin.yml
+
+- job: Release
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), or(eq(variables['VSCODE_RELEASE'], 'true'), and(or(eq(variables['VSCODE_QUALITY'], 'insider'), eq(variables['VSCODE_QUALITY'], 'exploration')), eq(variables['Build.Reason'], 'Schedule'))))
+ pool:
+ vmImage: 'Ubuntu-16.04'
+ dependsOn:
+ - Windows
+ - Windows32
+ - Linux
+ - LinuxSnap
+ - LinuxArmhf
+ - LinuxAlpine
+ - macOS
+ steps:
+ - template: release.yml
+
+- job: Mooncake
+ pool:
+ vmImage: 'Ubuntu-16.04'
+ condition: and(succeededOrFailed(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'))
+ dependsOn:
+ - Windows
+ - Windows32
+ - Linux
+ - LinuxSnap
+ - LinuxArmhf
+ - LinuxAlpine
+ - LinuxWeb
+ - macOS
+ steps:
+ - template: sync-mooncake.yml
+
+trigger: none
+pr: none
+
+schedules:
+- cron: "0 5 * * Mon-Fri"
+ displayName: Mon-Fri at 7:00
+ branches:
+ include:
+ - master
diff --git a/build/azure-pipelines/product-compile.yml b/build/azure-pipelines/product-compile.yml
new file mode 100644
index 00000000000..e5105326e7b
--- /dev/null
+++ b/build/azure-pipelines/product-compile.yml
@@ -0,0 +1,124 @@
+steps:
+- script: |
+ mkdir -p .build
+ echo -n $BUILD_SOURCEVERSION > .build/commit
+ displayName: Prepare cache flag
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .build/commit'
+ targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
+ vstsFeed: 'npm-vscode'
+ platformIndependent: true
+ alias: 'Compilation'
+
+- task: NodeTool@0
+ inputs:
+ versionSpec: "10.15.1"
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
+ inputs:
+ versionSpec: "1.10.1"
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- task: AzureKeyVault@1
+ displayName: 'Azure Key Vault: Get Secrets'
+ inputs:
+ azureSubscription: 'vscode-builds-subscription'
+ KeyVaultName: vscode
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- script: |
+ set -e
+ cat << EOF > ~/.netrc
+ machine github.com
+ login vscode
+ password $(github-distro-mixin-password)
+ EOF
+
+ git config user.email "vscode@microsoft.com"
+ git config user.name "VSCode"
+ displayName: Prepare tooling
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- script: |
+ set -e
+ git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
+ git fetch distro
+ git merge $(node -p "require('./package.json').distro")
+ displayName: Merge distro
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: 'npm-vscode'
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- script: |
+ set -e
+ CHILD_CONCURRENCY=1 yarn --frozen-lockfile
+ displayName: Install dependencies
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'), ne(variables['CacheRestored'], 'true'))
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: 'npm-vscode'
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'), ne(variables['CacheRestored'], 'true'))
+
+- script: |
+ set -e
+ yarn postinstall
+ displayName: Run postinstall scripts
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'), eq(variables['CacheRestored'], 'true'))
+
+# Mixin must run before optimize, because the CSS loader will
+# inline small SVGs
+- script: |
+ set -e
+ node build/azure-pipelines/mixin
+ displayName: Mix in quality
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- script: |
+ set -e
+ yarn gulp hygiene
+ yarn monaco-compile-check
+ displayName: Run hygiene checks
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+
+- script: |
+ set -
+ ./build/azure-pipelines/common/extract-telemetry.sh
+ displayName: Extract Telemetry
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- script: |
+ set -e
+ yarn gulp compile-build
+ yarn gulp compile-extensions-build
+ yarn gulp minify-vscode
+ yarn gulp minify-vscode-reh
+ yarn gulp minify-vscode-reh-web
+ displayName: Compile
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- script: |
+ set -e
+ AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
+ node build/azure-pipelines/upload-sourcemaps
+ displayName: Upload sourcemaps
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .build/commit'
+ targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
+ vstsFeed: 'npm-vscode'
+ platformIndependent: true
+ alias: 'Compilation'
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
\ No newline at end of file
diff --git a/build/azure-pipelines/publish-types/.gitignore b/build/azure-pipelines/publish-types/.gitignore
new file mode 100644
index 00000000000..e94ecda764e
--- /dev/null
+++ b/build/azure-pipelines/publish-types/.gitignore
@@ -0,0 +1,2 @@
+node_modules/
+*.js
\ No newline at end of file
diff --git a/build/azure-pipelines/publish-types/check-version.ts b/build/azure-pipelines/publish-types/check-version.ts
new file mode 100644
index 00000000000..2c730889112
--- /dev/null
+++ b/build/azure-pipelines/publish-types/check-version.ts
@@ -0,0 +1,43 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+import * as cp from 'child_process';
+
+let tag = '';
+try {
+ tag = cp
+ .execSync('git describe --tags `git rev-list --tags --max-count=1`')
+ .toString()
+ .trim();
+
+ if (!isValidTag(tag)) {
+ throw Error(`Invalid tag ${tag}`);
+ }
+} catch (err) {
+ console.error(err);
+ console.error('Failed to update types');
+ process.exit(1);
+}
+
+function isValidTag(t: string) {
+ if (t.split('.').length !== 3) {
+ return false;
+ }
+
+ const [major, minor, bug] = t.split('.');
+
+ // Only release for tags like 1.34.0
+ if (bug !== '0') {
+ return false;
+ }
+
+ if (parseInt(major, 10) === NaN || parseInt(minor, 10) === NaN) {
+ return false;
+ }
+
+ return true;
+}
\ No newline at end of file
diff --git a/build/azure-pipelines/publish-types/publish-types.yml b/build/azure-pipelines/publish-types/publish-types.yml
new file mode 100644
index 00000000000..ff03cecedb1
--- /dev/null
+++ b/build/azure-pipelines/publish-types/publish-types.yml
@@ -0,0 +1,67 @@
+# Publish @types/vscode for each release
+
+trigger:
+ branches:
+ include: ['refs/tags/*']
+
+pr: none
+
+steps:
+- task: NodeTool@0
+ inputs:
+ versionSpec: "10.15.1"
+
+- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
+ inputs:
+ versionSpec: "1.10.1"
+
+- bash: |
+ # Install build dependencies
+ (cd build && yarn)
+ node build/azure-pipelines/publish-types/check-version.js
+ displayName: Check version
+
+- bash: |
+ git config --global user.email "vscode@microsoft.com"
+ git config --global user.name "VSCode"
+
+ git clone https://$(GITHUB_TOKEN)@github.com/DefinitelyTyped/DefinitelyTyped.git --depth=1
+ node build/azure-pipelines/publish-types/update-types.js
+
+ TAG_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`)
+
+ cd DefinitelyTyped
+
+ git diff --color | cat
+ git add -A
+ git status
+ git checkout -b "vscode-types-$TAG_VERSION"
+ git commit -m "VS Code $TAG_VERSION Extension API"
+ git push origin "vscode-types-$TAG_VERSION"
+
+ displayName: Push update to DefinitelyTyped
+
+- bash: |
+ TAG_VERSION=$(git describe --tags `git rev-list --tags --max-count=1`)
+ CHANNEL="G1C14HJ2F"
+
+ MESSAGE="DefinitelyTyped/DefinitelyTyped#vscode-types-$TAG_VERSION created. Endgame master, please open this link, examine changes and create a PR:"
+ LINK="https://github.com/DefinitelyTyped/DefinitelyTyped/compare/vscode-types-$TAG_VERSION?quick_pull=1&body=Updating%20VS%20Code%20Extension%20API.%20See%20https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fvscode%2Fissues%2F70175%20for%20details."
+ MESSAGE2="[@octref, @jrieken, @kmaetzel, @egamma]. Please review and merge PR to publish @types/vscode."
+
+ curl -X POST -H "Authorization: Bearer $(SLACK_TOKEN)" \
+ -H 'Content-type: application/json; charset=utf-8' \
+ --data '{"channel":"'"$CHANNEL"'", "link_names": true, "text":"'"$MESSAGE"'"}' \
+ https://slack.com/api/chat.postMessage
+
+ curl -X POST -H "Authorization: Bearer $(SLACK_TOKEN)" \
+ -H 'Content-type: application/json; charset=utf-8' \
+ --data '{"channel":"'"$CHANNEL"'", "link_names": true, "text":"'"$LINK"'"}' \
+ https://slack.com/api/chat.postMessage
+
+ curl -X POST -H "Authorization: Bearer $(SLACK_TOKEN)" \
+ -H 'Content-type: application/json; charset=utf-8' \
+ --data '{"channel":"'"$CHANNEL"'", "link_names": true, "text":"'"$MESSAGE2"'"}' \
+ https://slack.com/api/chat.postMessage
+
+ displayName: Send message on Slack
diff --git a/build/azure-pipelines/publish-types/update-types.ts b/build/azure-pipelines/publish-types/update-types.ts
new file mode 100644
index 00000000000..a5ef449b77b
--- /dev/null
+++ b/build/azure-pipelines/publish-types/update-types.ts
@@ -0,0 +1,73 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+import * as fs from 'fs';
+import * as cp from 'child_process';
+import * as path from 'path';
+
+let tag = '';
+try {
+ tag = cp
+ .execSync('git describe --tags `git rev-list --tags --max-count=1`')
+ .toString()
+ .trim();
+
+ const dtsUri = `https://raw.githubusercontent.com/microsoft/vscode/${tag}/src/vs/vscode.d.ts`;
+ const outPath = path.resolve(process.cwd(), 'DefinitelyTyped/types/vscode/index.d.ts');
+ cp.execSync(`curl ${dtsUri} --output ${outPath}`);
+
+ updateDTSFile(outPath, tag);
+
+ console.log(`Done updating vscode.d.ts at ${outPath}`);
+} catch (err) {
+ console.error(err);
+ console.error('Failed to update types');
+ process.exit(1);
+}
+
+function updateDTSFile(outPath: string, tag: string) {
+ const oldContent = fs.readFileSync(outPath, 'utf-8');
+ const newContent = getNewFileContent(oldContent, tag);
+
+ fs.writeFileSync(outPath, newContent);
+}
+
+function getNewFileContent(content: string, tag: string) {
+ const oldheader = [
+ `/*---------------------------------------------------------------------------------------------`,
+ ` * Copyright (c) Microsoft Corporation. All rights reserved.`,
+ ` * Licensed under the MIT License. See License.txt in the project root for license information.`,
+ ` *--------------------------------------------------------------------------------------------*/`
+ ].join('\n');
+
+ return getNewFileHeader(tag) + content.slice(oldheader.length);
+}
+
+function getNewFileHeader(tag: string) {
+ const [major, minor] = tag.split('.');
+ const shorttag = `${major}.${minor}`;
+
+ const header = [
+ `// Type definitions for Visual Studio Code ${shorttag}`,
+ `// Project: https://github.com/microsoft/vscode`,
+ `// Definitions by: Visual Studio Code Team, Microsoft `,
+ `// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped`,
+ ``,
+ `/*---------------------------------------------------------------------------------------------`,
+ ` * Copyright (c) Microsoft Corporation. All rights reserved.`,
+ ` * Licensed under the MIT License.`,
+ ` * See https://github.com/Microsoft/vscode/blob/master/LICENSE.txt for license information.`,
+ ` *--------------------------------------------------------------------------------------------*/`,
+ ``,
+ `/**`,
+ ` * Type Definition for Visual Studio Code ${shorttag} Extension API`,
+ ` * See https://code.visualstudio.com/api for more information`,
+ ` */`
+ ].join('\n');
+
+ return header;
+}
diff --git a/build/azure-pipelines/release.yml b/build/azure-pipelines/release.yml
new file mode 100644
index 00000000000..eee54a1d8b7
--- /dev/null
+++ b/build/azure-pipelines/release.yml
@@ -0,0 +1,22 @@
+steps:
+- task: NodeTool@0
+ inputs:
+ versionSpec: "10.x"
+
+- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
+ inputs:
+ versionSpec: "1.x"
+
+- task: AzureKeyVault@1
+ displayName: 'Azure Key Vault: Get Secrets'
+ inputs:
+ azureSubscription: 'vscode-builds-subscription'
+ KeyVaultName: vscode
+
+- script: |
+ set -e
+
+ (cd build ; yarn)
+
+ AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
+ node build/azure-pipelines/common/release.js
diff --git a/build/azure-pipelines/sync-mooncake.yml b/build/azure-pipelines/sync-mooncake.yml
new file mode 100644
index 00000000000..f3e8bc07856
--- /dev/null
+++ b/build/azure-pipelines/sync-mooncake.yml
@@ -0,0 +1,24 @@
+steps:
+- task: NodeTool@0
+ inputs:
+ versionSpec: "10.15.1"
+
+- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
+ inputs:
+ versionSpec: "1.10.1"
+
+- task: AzureKeyVault@1
+ displayName: 'Azure Key Vault: Get Secrets'
+ inputs:
+ azureSubscription: 'vscode-builds-subscription'
+ KeyVaultName: vscode
+
+- script: |
+ set -e
+
+ (cd build ; yarn)
+
+ AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
+ AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
+ MOONCAKE_STORAGE_ACCESS_KEY="$(vscode-mooncake-storage-key)" \
+ node build/azure-pipelines/common/sync-mooncake.js "$VSCODE_QUALITY"
diff --git a/build/azure-pipelines/upload-sourcemaps.js b/build/azure-pipelines/upload-sourcemaps.js
new file mode 100644
index 00000000000..ac3bd55a7f5
--- /dev/null
+++ b/build/azure-pipelines/upload-sourcemaps.js
@@ -0,0 +1,39 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+const path = require('path');
+const es = require('event-stream');
+const azure = require('gulp-azure-storage');
+const vfs = require('vinyl-fs');
+const util = require('../lib/util');
+const root = path.dirname(path.dirname(__dirname));
+const commit = util.getVersion(root);
+
+function main() {
+ const vs = vfs.src('out-vscode-min/**/*.map', { base: 'out-vscode-min' }) // client source-maps only
+ .pipe(es.mapSync(f => {
+ f.path = `${f.base}/core/${f.relative}`;
+ return f;
+ }));
+
+ const extensionsOut = vfs.src(['.build/extensions/**/*.js.map', '!**/node_modules/**'], { base: '.build' });
+
+ return es.merge(vs, extensionsOut)
+ .pipe(es.through(function (data) {
+ // debug
+ console.log('Uploading Sourcemap', data.relative);
+ this.emit('data', data);
+ }))
+ .pipe(azure.upload({
+ account: process.env.AZURE_STORAGE_ACCOUNT,
+ key: process.env.AZURE_STORAGE_ACCESS_KEY,
+ container: 'sourcemaps',
+ prefix: commit + '/'
+ }));
+}
+
+main();
\ No newline at end of file
diff --git a/build/azure-pipelines/web/product-build-web.yml b/build/azure-pipelines/web/product-build-web.yml
new file mode 100644
index 00000000000..7c65dc982f0
--- /dev/null
+++ b/build/azure-pipelines/web/product-build-web.yml
@@ -0,0 +1,96 @@
+steps:
+- script: |
+ mkdir -p .build
+ echo -n $BUILD_SOURCEVERSION > .build/commit
+ displayName: Prepare cache flag
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .build/commit'
+ targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
+ vstsFeed: 'npm-vscode'
+ platformIndependent: true
+ alias: 'Compilation'
+
+- script: |
+ set -e
+ exit 1
+ displayName: Check RestoreCache
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
+- task: NodeTool@0
+ inputs:
+ versionSpec: "10.15.1"
+
+- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
+ inputs:
+ versionSpec: "1.10.1"
+
+- task: AzureKeyVault@1
+ displayName: 'Azure Key Vault: Get Secrets'
+ inputs:
+ azureSubscription: 'vscode-builds-subscription'
+ KeyVaultName: vscode
+
+- script: |
+ set -e
+ cat << EOF > ~/.netrc
+ machine github.com
+ login vscode
+ password $(github-distro-mixin-password)
+ EOF
+
+ git config user.email "vscode@microsoft.com"
+ git config user.name "VSCode"
+ displayName: Prepare tooling
+
+- script: |
+ set -e
+ git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git"
+ git fetch distro
+ git merge $(node -p "require('./package.json').distro")
+ displayName: Merge distro
+
+# - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+# inputs:
+# keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+# targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+# vstsFeed: 'npm-vscode'
+
+- script: |
+ set -e
+ CHILD_CONCURRENCY=1 yarn --frozen-lockfile
+ displayName: Install dependencies
+ # condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+
+# - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
+# inputs:
+# keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+# targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+# vstsFeed: 'npm-vscode'
+# condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+
+# - script: |
+# set -e
+# yarn postinstall
+# displayName: Run postinstall scripts
+# condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
+
+- script: |
+ set -e
+ node build/azure-pipelines/mixin
+ displayName: Mix in quality
+
+- script: |
+ set -e
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ yarn gulp vscode-web-min-ci
+ displayName: Build
+
+- script: |
+ set -e
+ AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
+ AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
+ VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ ./build/azure-pipelines/web/publish.sh
+ displayName: Publish
diff --git a/build/azure-pipelines/web/publish.sh b/build/azure-pipelines/web/publish.sh
new file mode 100755
index 00000000000..2c112362a25
--- /dev/null
+++ b/build/azure-pipelines/web/publish.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+set -e
+REPO="$(pwd)"
+ROOT="$REPO/.."
+
+# Publish Web Client
+WEB_BUILD_NAME="vscode-web"
+WEB_TARBALL_FILENAME="vscode-web.tar.gz"
+WEB_TARBALL_PATH="$ROOT/$WEB_TARBALL_FILENAME"
+BUILD="$ROOT/$WEB_BUILD_NAME"
+PACKAGEJSON="$BUILD/package.json"
+VERSION=$(node -p "require(\"$PACKAGEJSON\").version")
+
+rm -rf $ROOT/vscode-web.tar.*
+
+(cd $ROOT && tar --owner=0 --group=0 -czf $WEB_TARBALL_PATH $WEB_BUILD_NAME)
+
+node build/azure-pipelines/common/publish.js "$VSCODE_QUALITY" "web-standalone" archive-unsigned "$WEB_TARBALL_FILENAME" "$VERSION" true "$WEB_TARBALL_PATH"
diff --git a/build/azure-pipelines/win32/continuous-build-win32.yml b/build/azure-pipelines/win32/continuous-build-win32.yml
index 7145e67e2ad..9b6d61ee974 100644
--- a/build/azure-pipelines/win32/continuous-build-win32.yml
+++ b/build/azure-pipelines/win32/continuous-build-win32.yml
@@ -1,7 +1,7 @@
steps:
- task: NodeTool@0
inputs:
- versionSpec: "8.12.0"
+ versionSpec: "10.15.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
versionSpec: "1.10.1"
@@ -9,9 +9,21 @@ steps:
inputs:
versionSpec: '2.x'
addToPath: true
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: '$(ArtifactFeed)'
- powershell: |
- yarn
+ yarn --frozen-lockfile
displayName: Install Dependencies
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
+ inputs:
+ keyfile: '.yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: '$(ArtifactFeed)'
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- powershell: |
yarn gulp electron
displayName: Download Electron
@@ -21,9 +33,6 @@ steps:
- powershell: |
yarn monaco-compile-check
displayName: Run Monaco Editor Checks
-- script: |
- yarn strict-null-check
- displayName: Run Strict Null Checks
- powershell: |
yarn compile
displayName: Compile Sources
diff --git a/build/azure-pipelines/win32/product-build-win32.yml b/build/azure-pipelines/win32/product-build-win32.yml
index 418af9e10a9..7a72dcfb09b 100644
--- a/build/azure-pipelines/win32/product-build-win32.yml
+++ b/build/azure-pipelines/win32/product-build-win32.yml
@@ -1,7 +1,26 @@
steps:
+- powershell: |
+ mkdir .build -ea 0
+ "$env:BUILD_SOURCEVERSION" | Out-File -Encoding ascii -NoNewLine .build\commit
+ displayName: Prepare cache flag
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .build/commit'
+ targetfolder: '.build, out-build, out-vscode-min, out-vscode-reh-min, out-vscode-reh-web-min'
+ vstsFeed: 'npm-vscode'
+ platformIndependent: true
+ alias: 'Compilation'
+
+- powershell: |
+ $ErrorActionPreference = "Stop"
+ exit 1
+ displayName: Check RestoreCache
+ condition: and(succeeded(), ne(variables['CacheRestored-Compilation'], 'true'))
+
- task: NodeTool@0
inputs:
- versionSpec: "8.12.0"
+ versionSpec: "10.15.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
@@ -12,41 +31,98 @@ steps:
versionSpec: '2.x'
addToPath: true
+- task: AzureKeyVault@1
+ displayName: 'Azure Key Vault: Get Secrets'
+ inputs:
+ azureSubscription: 'vscode-builds-subscription'
+ KeyVaultName: vscode
+
+- powershell: |
+ . build/azure-pipelines/win32/exec.ps1
+ $ErrorActionPreference = "Stop"
+ "machine github.com`nlogin vscode`npassword $(github-distro-mixin-password)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII
+
+ exec { git config user.email "vscode@microsoft.com" }
+ exec { git config user.name "VSCode" }
+
+ mkdir .build -ea 0
+ "$(VSCODE_ARCH)" | Out-File -Encoding ascii -NoNewLine .build\arch
+ displayName: Prepare tooling
+
+- powershell: |
+ . build/azure-pipelines/win32/exec.ps1
+ $ErrorActionPreference = "Stop"
+ exec { git remote add distro "https://github.com/$(VSCODE_MIXIN_REPO).git" }
+ exec { git fetch distro }
+ exec { git merge $(node -p "require('./package.json').distro") }
+ displayName: Merge distro
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .build/arch, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: 'npm-vscode'
+
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- "machine monacotools.visualstudio.com password $(VSO_PAT)" | Out-File "$env:USERPROFILE\_netrc" -Encoding ASCII
$env:npm_config_arch="$(VSCODE_ARCH)"
$env:CHILD_CONCURRENCY="1"
- $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)"
- exec { yarn }
- exec { npm run gulp -- hygiene }
- exec { npm run monaco-compile-check }
- exec { npm run strict-null-check }
- exec { npm run gulp -- mixin }
- exec { node build/azure-pipelines/common/installDistro.js }
- exec { node build/lib/builtInExtensions.js }
+ exec { yarn --frozen-lockfile }
+ displayName: Install dependencies
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+
+- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
+ inputs:
+ keyfile: 'build/.cachesalt, .build/arch, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
+ vstsFeed: 'npm-vscode'
+ condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- $env:VSCODE_MIXIN_PASSWORD="$(VSCODE_MIXIN_PASSWORD)"
- exec { npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-min" }
- exec { npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-inno-updater" }
- name: build
+ exec { yarn postinstall }
+ displayName: Run postinstall scripts
+ condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { npm run gulp -- "electron-$(VSCODE_ARCH)" }
+ exec { node build/azure-pipelines/mixin }
+ displayName: Mix in quality
+
+- powershell: |
+ . build/azure-pipelines/win32/exec.ps1
+ $ErrorActionPreference = "Stop"
+ $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
+ exec { yarn gulp "vscode-win32-$env:VSCODE_ARCH-min-ci" }
+ exec { yarn gulp "vscode-reh-win32-$env:VSCODE_ARCH-min-ci" }
+ exec { yarn gulp "vscode-reh-web-win32-$env:VSCODE_ARCH-min-ci" }
+ exec { yarn gulp "vscode-win32-$env:VSCODE_ARCH-code-helper" }
+ exec { yarn gulp "vscode-win32-$env:VSCODE_ARCH-inno-updater" }
+ displayName: Build
+
+- powershell: |
+ . build/azure-pipelines/win32/exec.ps1
+ $ErrorActionPreference = "Stop"
+ exec { yarn gulp "electron-$(VSCODE_ARCH)" }
exec { .\scripts\test.bat --build --tfs "Unit Tests" }
- # yarn smoketest -- --build "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
- name: test
+ displayName: Run unit tests
+ condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+
+- powershell: |
+ . build/azure-pipelines/win32/exec.ps1
+ $ErrorActionPreference = "Stop"
+ exec { yarn gulp "electron-$(VSCODE_ARCH)" }
+ exec { .\scripts\test-integration.bat --build --tfs "Integration Tests" }
+ displayName: Run integration tests
+ condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
inputs:
ConnectedServiceName: 'ESRP CodeSign'
- FolderPath: '$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH)'
+ FolderPath: '$(agent.builddirectory)/VSCode-win32-$(VSCODE_ARCH),$(agent.builddirectory)/vscode-reh-win32-$(VSCODE_ARCH)'
Pattern: '*.dll,*.exe,*.node'
signConfigType: inlineSignParams
inlineOperation: |
@@ -114,38 +190,18 @@ steps:
- powershell: |
$ErrorActionPreference = "Stop"
- .\build\azure-pipelines\win32\import-esrp-auth-cert.ps1 -AuthCertificateBase64 $(ESRP_AUTH_CERTIFICATE) -AuthCertificateKey $(ESRP_AUTH_CERTIFICATE_KEY)
+ .\build\azure-pipelines\win32\import-esrp-auth-cert.ps1 -AuthCertificateBase64 $(esrp-auth-certificate) -AuthCertificateKey $(esrp-auth-certificate-key)
displayName: Import ESRP Auth Certificate
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { npm run gulp -- "vscode-win32-$(VSCODE_ARCH)-archive" "vscode-win32-$(VSCODE_ARCH)-system-setup" "vscode-win32-$(VSCODE_ARCH)-user-setup" --sign }
-
- $Repo = "$(pwd)"
- $Root = "$Repo\.."
- $SystemExe = "$Repo\.build\win32-$(VSCODE_ARCH)\system-setup\VSCodeSetup.exe"
- $UserExe = "$Repo\.build\win32-$(VSCODE_ARCH)\user-setup\VSCodeSetup.exe"
- $Zip = "$Repo\.build\win32-$(VSCODE_ARCH)\archive\VSCode-win32-$(VSCODE_ARCH).zip"
- $Build = "$Root\VSCode-win32-$(VSCODE_ARCH)"
-
- # get version
- $PackageJson = Get-Content -Raw -Path "$Build\resources\app\package.json" | ConvertFrom-Json
- $Version = $PackageJson.version
- $Quality = "$env:VSCODE_QUALITY"
- $env:AZURE_STORAGE_ACCESS_KEY_2 = "$(AZURE_STORAGE_ACCESS_KEY_2)"
- $env:MOONCAKE_STORAGE_ACCESS_KEY = "$(MOONCAKE_STORAGE_ACCESS_KEY)"
- $env:AZURE_DOCUMENTDB_MASTERKEY = "$(AZURE_DOCUMENTDB_MASTERKEY)"
-
- $assetPlatform = if ("$(VSCODE_ARCH)" -eq "ia32") { "win32" } else { "win32-x64" }
-
- exec { node build/azure-pipelines/common/publish.js $Quality "$global:assetPlatform-archive" archive "VSCode-win32-$(VSCODE_ARCH)-$Version.zip" $Version true $Zip }
- exec { node build/azure-pipelines/common/publish.js $Quality "$global:assetPlatform" setup "VSCodeSetup-$(VSCODE_ARCH)-$Version.exe" $Version true $SystemExe }
- exec { node build/azure-pipelines/common/publish.js $Quality "$global:assetPlatform-user" setup "VSCodeUserSetup-$(VSCODE_ARCH)-$Version.exe" $Version true $UserExe }
-
- # publish hockeyapp symbols
- $hockeyAppId = if ("$(VSCODE_ARCH)" -eq "ia32") { "$(VSCODE_HOCKEYAPP_ID_WIN32)" } else { "$(VSCODE_HOCKEYAPP_ID_WIN64)" }
- exec { node build/azure-pipelines/common/symbols.js "$(VSCODE_MIXIN_PASSWORD)" "$(VSCODE_HOCKEYAPP_TOKEN)" "$(VSCODE_ARCH)" $hockeyAppId }
+ $env:AZURE_STORAGE_ACCESS_KEY_2 = "$(vscode-storage-key)"
+ $env:AZURE_DOCUMENTDB_MASTERKEY = "$(builds-docdb-key-readwrite)"
+ $env:VSCODE_HOCKEYAPP_TOKEN = "$(vscode-hockeyapp-token)"
+ $env:VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)"
+ .\build\azure-pipelines\win32\publish.ps1
+ displayName: Publish
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: 'Component Detection'
diff --git a/build/azure-pipelines/win32/publish.ps1 b/build/azure-pipelines/win32/publish.ps1
new file mode 100644
index 00000000000..86da6df4e0a
--- /dev/null
+++ b/build/azure-pipelines/win32/publish.ps1
@@ -0,0 +1,37 @@
+. build/azure-pipelines/win32/exec.ps1
+$ErrorActionPreference = "Stop"
+
+$Arch = "$env:VSCODE_ARCH"
+
+exec { yarn gulp "vscode-win32-$Arch-archive" "vscode-win32-$Arch-system-setup" "vscode-win32-$Arch-user-setup" --sign }
+
+$Repo = "$(pwd)"
+$Root = "$Repo\.."
+$SystemExe = "$Repo\.build\win32-$Arch\system-setup\VSCodeSetup.exe"
+$UserExe = "$Repo\.build\win32-$Arch\user-setup\VSCodeSetup.exe"
+$Zip = "$Repo\.build\win32-$Arch\archive\VSCode-win32-$Arch.zip"
+$LegacyServer = "$Root\vscode-reh-win32-$Arch"
+$ServerName = "vscode-server-win32-$Arch"
+$Server = "$Root\$ServerName"
+$ServerZip = "$Repo\.build\vscode-server-win32-$Arch.zip"
+$Build = "$Root\VSCode-win32-$Arch"
+
+# Create server archive
+exec { Rename-Item -Path $LegacyServer -NewName $ServerName }
+exec { .\node_modules\7zip\7zip-lite\7z.exe a -tzip $ServerZip $Server -r }
+
+# get version
+$PackageJson = Get-Content -Raw -Path "$Build\resources\app\package.json" | ConvertFrom-Json
+$Version = $PackageJson.version
+$Quality = "$env:VSCODE_QUALITY"
+
+$AssetPlatform = if ("$Arch" -eq "ia32") { "win32" } else { "win32-x64" }
+
+exec { node build/azure-pipelines/common/publish.js $Quality "$AssetPlatform-archive" archive "VSCode-win32-$Arch-$Version.zip" $Version true $Zip }
+exec { node build/azure-pipelines/common/publish.js $Quality "$AssetPlatform" setup "VSCodeSetup-$Arch-$Version.exe" $Version true $SystemExe }
+exec { node build/azure-pipelines/common/publish.js $Quality "$AssetPlatform-user" setup "VSCodeUserSetup-$Arch-$Version.exe" $Version true $UserExe }
+exec { node build/azure-pipelines/common/publish.js $Quality "server-$AssetPlatform" archive "vscode-server-win32-$Arch.zip" $Version true $ServerZip }
+
+# publish hockeyapp symbols
+$hockeyAppId = if ("$Arch" -eq "ia32") { "$env:VSCODE_HOCKEYAPP_ID_WIN32" } else { "$env:VSCODE_HOCKEYAPP_ID_WIN64" }
+exec { node build/azure-pipelines/common/symbols.js "$env:VSCODE_MIXIN_PASSWORD" "$env:VSCODE_HOCKEYAPP_TOKEN" "$Arch" $hockeyAppId }
diff --git a/build/builtInExtensions.json b/build/builtInExtensions.json
index b4b5bcdfb87..a3483f451e2 100644
--- a/build/builtInExtensions.json
+++ b/build/builtInExtensions.json
@@ -1,7 +1,7 @@
[
{
"name": "ms-vscode.node-debug",
- "version": "1.30.4",
+ "version": "1.35.3",
"repo": "https://github.com/Microsoft/vscode-node-debug",
"metadata": {
"id": "b6ded8fb-a0a0-4c1c-acbd-ab2a3bc995a6",
@@ -16,7 +16,7 @@
},
{
"name": "ms-vscode.node-debug2",
- "version": "1.31.2",
+ "version": "1.33.0",
"repo": "https://github.com/Microsoft/vscode-node-debug2",
"metadata": {
"id": "36d19e17-7569-4841-a001-947eb18602b2",
@@ -31,7 +31,7 @@
},
{
"name": "ms-vscode.references-view",
- "version": "0.0.21",
+ "version": "0.0.29",
"repo": "https://github.com/Microsoft/vscode-reference-view",
"metadata": {
"id": "dc489f46-520d-4556-ae85-1f9eab3c412d",
diff --git a/build/builtin/main.js b/build/builtin/main.js
index 849027ad2b9..b094a67cac5 100644
--- a/build/builtin/main.js
+++ b/build/builtin/main.js
@@ -10,7 +10,7 @@ const path = require('path');
let window = null;
app.once('ready', () => {
- window = new BrowserWindow({ width: 800, height: 600 });
+ window = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, webviewTag: true } });
window.setMenuBarVisibility(false);
window.loadURL(url.format({ pathname: path.join(__dirname, 'index.html'), protocol: 'file:', slashes: true }));
// window.webContents.openDevTools();
diff --git a/build/gulpfile.compile.js b/build/gulpfile.compile.js
new file mode 100644
index 00000000000..21aa7896558
--- /dev/null
+++ b/build/gulpfile.compile.js
@@ -0,0 +1,16 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+const gulp = require('gulp');
+const util = require('./lib/util');
+const task = require('./lib/task');
+const compilation = require('./lib/compilation');
+
+// Full compile, including nls and inline sources in sourcemaps, for build
+const compileBuildTask = task.define('compile-build', task.series(util.rimraf('out-build'), compilation.compileTask('src', 'out-build', true)));
+gulp.task(compileBuildTask);
+exports.compileBuildTask = compileBuildTask;
\ No newline at end of file
diff --git a/build/gulpfile.editor.js b/build/gulpfile.editor.js
index e59be13ea3e..7bbf246a8dc 100644
--- a/build/gulpfile.editor.js
+++ b/build/gulpfile.editor.js
@@ -6,6 +6,7 @@
const gulp = require('gulp');
const path = require('path');
const util = require('./lib/util');
+const task = require('./lib/task');
const common = require('./lib/optimize');
const es = require('event-stream');
const File = require('vinyl');
@@ -48,9 +49,6 @@ var editorResources = [
'!**/test/**'
];
-var editorOtherSources = [
-];
-
var BUNDLED_FILE_HEADER = [
'/*!-----------------------------------------------------------',
' * Copyright (c) Microsoft Corporation. All rights reserved.',
@@ -63,8 +61,7 @@ var BUNDLED_FILE_HEADER = [
const languages = i18n.defaultLanguages.concat([]); // i18n.defaultLanguages.concat(process.env.VSCODE_QUALITY !== 'stable' ? i18n.extraLanguages : []);
-gulp.task('clean-editor-src', util.rimraf('out-editor-src'));
-gulp.task('extract-editor-src', ['clean-editor-src'], function () {
+const extractEditorSrcTask = task.define('extract-editor-src', () => {
console.log(`If the build fails, consider tweaking shakeLevel below to a lower value.`);
const apiusages = monacoapi.execute().usageContent;
const extrausages = fs.readFileSync(path.join(root, 'build', 'monaco', 'monaco.usage.recipe')).toString();
@@ -84,6 +81,7 @@ gulp.task('extract-editor-src', ['clean-editor-src'], function () {
'typings/thenable.d.ts',
'typings/es6-promise.d.ts',
'typings/require-monaco.d.ts',
+ "typings/lib.es2018.promise.d.ts",
'vs/monaco.d.ts'
],
libs: [
@@ -100,15 +98,11 @@ gulp.task('extract-editor-src', ['clean-editor-src'], function () {
});
});
-// Full compile, including nls and inline sources in sourcemaps, for build
-gulp.task('clean-editor-build', util.rimraf('out-editor-build'));
-gulp.task('compile-editor-build', ['clean-editor-build', 'extract-editor-src'], compilation.compileTask('out-editor-src', 'out-editor-build', true));
+const compileEditorAMDTask = task.define('compile-editor-amd', compilation.compileTask('out-editor-src', 'out-editor-build', true));
-gulp.task('clean-optimized-editor', util.rimraf('out-editor'));
-gulp.task('optimize-editor', ['clean-optimized-editor', 'compile-editor-build'], common.optimizeTask({
+const optimizeEditorAMDTask = task.define('optimize-editor-amd', common.optimizeTask({
src: 'out-editor-build',
entryPoints: editorEntryPoints,
- otherSources: editorOtherSources,
resources: editorResources,
loaderConfig: {
paths: {
@@ -125,11 +119,9 @@ gulp.task('optimize-editor', ['clean-optimized-editor', 'compile-editor-build'],
languages: languages
}));
-gulp.task('clean-minified-editor', util.rimraf('out-editor-min'));
-gulp.task('minify-editor', ['clean-minified-editor', 'optimize-editor'], common.minifyTask('out-editor'));
+const minifyEditorAMDTask = task.define('minify-editor-amd', common.minifyTask('out-editor'));
-gulp.task('clean-editor-esm', util.rimraf('out-editor-esm'));
-gulp.task('extract-editor-esm', ['clean-editor-esm', 'clean-editor-distro', 'extract-editor-src'], function () {
+const createESMSourcesAndResourcesTask = task.define('extract-editor-esm', () => {
standalone.createESMSourcesAndResources2({
srcFolder: './out-editor-src',
outFolder: './out-editor-esm',
@@ -151,7 +143,8 @@ gulp.task('extract-editor-esm', ['clean-editor-esm', 'clean-editor-distro', 'ext
}
});
});
-gulp.task('compile-editor-esm', ['extract-editor-esm', 'clean-editor-distro'], function () {
+
+const compileEditorESMTask = task.define('compile-editor-esm', () => {
if (process.platform === 'win32') {
const result = cp.spawnSync(`..\\node_modules\\.bin\\tsc.cmd`, {
cwd: path.join(__dirname, '../out-editor-esm')
@@ -202,8 +195,16 @@ function toExternalDTS(contents) {
return lines.join('\n');
}
-gulp.task('clean-editor-distro', util.rimraf('out-monaco-editor-core'));
-gulp.task('editor-distro', ['clean-editor-distro', 'compile-editor-esm', 'minify-editor', 'optimize-editor'], function () {
+function filterStream(testFunc) {
+ return es.through(function (data) {
+ if (!testFunc(data.relative)) {
+ return;
+ }
+ this.emit('data', data);
+ });
+}
+
+const finalEditorResourcesTask = task.define('final-editor-resources', () => {
return es.merge(
// other assets
es.merge(
@@ -233,6 +234,14 @@ gulp.task('editor-distro', ['clean-editor-distro', 'compile-editor-esm', 'minify
}))
.pipe(gulp.dest('out-monaco-editor-core')),
+ // version.txt
+ gulp.src('build/monaco/version.txt')
+ .pipe(es.through(function (data) {
+ data.contents = Buffer.from(`monaco-editor-core: https://github.com/Microsoft/vscode/tree/${sha1}`);
+ this.emit('data', data);
+ }))
+ .pipe(gulp.dest('out-monaco-editor-core')),
+
// README.md
gulp.src('build/monaco/README-npm.md')
.pipe(es.through(function (data) {
@@ -266,7 +275,7 @@ gulp.task('editor-distro', ['clean-editor-distro', 'compile-editor-esm', 'minify
var strContents = data.contents.toString();
var newStr = '//# sourceMappingURL=' + relativePathToMap.replace(/\\/g, '/');
- strContents = strContents.replace(/\/\/\# sourceMappingURL=[^ ]+$/, newStr);
+ strContents = strContents.replace(/\/\/# sourceMappingURL=[^ ]+$/, newStr);
data.contents = Buffer.from(strContents);
this.emit('data', data);
@@ -282,59 +291,31 @@ gulp.task('editor-distro', ['clean-editor-distro', 'compile-editor-esm', 'minify
);
});
-gulp.task('analyze-editor-distro', function () {
- // @ts-ignore
- var bundleInfo = require('../out-editor/bundleInfo.json');
- var graph = bundleInfo.graph;
- var bundles = bundleInfo.bundles;
-
- var inverseGraph = {};
- Object.keys(graph).forEach(function (module) {
- var dependencies = graph[module];
- dependencies.forEach(function (dep) {
- inverseGraph[dep] = inverseGraph[dep] || [];
- inverseGraph[dep].push(module);
- });
- });
-
- var detailed = {};
- Object.keys(bundles).forEach(function (entryPoint) {
- var included = bundles[entryPoint];
- var includedMap = {};
- included.forEach(function (included) {
- includedMap[included] = true;
- });
-
- var explanation = [];
- included.map(function (included) {
- if (included.indexOf('!') >= 0) {
- return;
- }
-
- var reason = (inverseGraph[included] || []).filter(function (mod) {
- return !!includedMap[mod];
- });
- explanation.push({
- module: included,
- reason: reason
- });
- });
-
- detailed[entryPoint] = explanation;
- });
-
- console.log(JSON.stringify(detailed, null, '\t'));
-});
-
-function filterStream(testFunc) {
- return es.through(function (data) {
- if (!testFunc(data.relative)) {
- return;
- }
- this.emit('data', data);
- });
-}
-
+gulp.task('editor-distro',
+ task.series(
+ task.parallel(
+ util.rimraf('out-editor-src'),
+ util.rimraf('out-editor-build'),
+ util.rimraf('out-editor-esm'),
+ util.rimraf('out-monaco-editor-core'),
+ util.rimraf('out-editor'),
+ util.rimraf('out-editor-min')
+ ),
+ extractEditorSrcTask,
+ task.parallel(
+ task.series(
+ compileEditorAMDTask,
+ optimizeEditorAMDTask,
+ minifyEditorAMDTask
+ ),
+ task.series(
+ createESMSourcesAndResourcesTask,
+ compileEditorESMTask
+ )
+ ),
+ finalEditorResourcesTask
+ )
+);
//#region monaco type checking
@@ -354,6 +335,7 @@ function createTscCompileTask(watch) {
let errors = [];
let reporter = createReporter();
let report;
+ // eslint-disable-next-line no-control-regex
let magic = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; // https://stackoverflow.com/questions/25245716/remove-all-ansi-colors-styles-from-strings
child.stdout.on('data', data => {
@@ -387,7 +369,10 @@ function createTscCompileTask(watch) {
};
}
-gulp.task('monaco-typecheck-watch', createTscCompileTask(true));
-gulp.task('monaco-typecheck', createTscCompileTask(false));
+const monacoTypecheckWatchTask = task.define('monaco-typecheck-watch', createTscCompileTask(true));
+exports.monacoTypecheckWatchTask = monacoTypecheckWatchTask;
+
+const monacoTypecheckTask = task.define('monaco-typecheck', createTscCompileTask(false));
+exports.monacoTypecheckTask = monacoTypecheckTask;
//#endregion
diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js
index 1488f96ec44..e4f7b58d50a 100644
--- a/build/gulpfile.extensions.js
+++ b/build/gulpfile.extensions.js
@@ -11,8 +11,8 @@ const path = require('path');
const tsb = require('gulp-tsb');
const es = require('event-stream');
const filter = require('gulp-filter');
-const rimraf = require('rimraf');
const util = require('./lib/util');
+const task = require('./lib/task');
const watcher = require('./lib/watch');
const createReporter = require('./lib/reporter').createReporter;
const glob = require('glob');
@@ -22,6 +22,7 @@ const root = path.dirname(__dirname);
const commit = util.getVersion(root);
const plumber = require('gulp-plumber');
const _ = require('underscore');
+const ext = require('./lib/extensions');
const extensionsPath = path.join(path.dirname(__dirname), 'extensions');
@@ -43,16 +44,6 @@ const tasks = compilations.map(function (tsconfigFile) {
const name = relativeDirname.replace(/\//g, '-');
- // Tasks
- const clean = 'clean-extension:' + name;
- const compile = 'compile-extension:' + name;
- const watch = 'watch-extension:' + name;
-
- // Build Tasks
- const cleanBuild = 'clean-extension-build:' + name;
- const compileBuild = 'compile-extension-build:' + name;
- const watchBuild = 'watch-extension-build:' + name;
-
const root = path.join('extensions', relativeDirname);
const srcBase = path.join(root, 'src');
const src = path.join(srcBase, '**');
@@ -111,18 +102,18 @@ const tasks = compilations.map(function (tsconfigFile) {
const srcOpts = { cwd: path.dirname(__dirname), base: srcBase };
- gulp.task(clean, cb => rimraf(out, cb));
+ const cleanTask = task.define(`clean-extension-${name}`, util.rimraf(out));
- gulp.task(compile, [clean], () => {
+ const compileTask = task.define(`compile-extension:${name}`, task.series(cleanTask, () => {
const pipeline = createPipeline(false, true);
const input = gulp.src(src, srcOpts);
return input
.pipe(pipeline())
.pipe(gulp.dest(out));
- });
+ }));
- gulp.task(watch, [clean], () => {
+ const watchTask = task.define(`watch-extension:${name}`, task.series(cleanTask, () => {
const pipeline = createPipeline(false);
const input = gulp.src(src, srcOpts);
const watchInput = watcher(src, srcOpts);
@@ -130,43 +121,43 @@ const tasks = compilations.map(function (tsconfigFile) {
return watchInput
.pipe(util.incremental(pipeline, input))
.pipe(gulp.dest(out));
- });
+ }));
- gulp.task(cleanBuild, cb => rimraf(out, cb));
-
- gulp.task(compileBuild, [clean], () => {
+ const compileBuildTask = task.define(`compile-build-extension-${name}`, task.series(cleanTask, () => {
const pipeline = createPipeline(true, true);
const input = gulp.src(src, srcOpts);
return input
.pipe(pipeline())
.pipe(gulp.dest(out));
- });
+ }));
- gulp.task(watchBuild, [clean], () => {
- const pipeline = createPipeline(true);
- const input = gulp.src(src, srcOpts);
- const watchInput = watcher(src, srcOpts);
+ // Tasks
+ gulp.task(compileTask);
+ gulp.task(watchTask);
- return watchInput
- .pipe(util.incremental(() => pipeline(), input))
- .pipe(gulp.dest(out));
- });
-
- return {
- clean: clean,
- compile: compile,
- watch: watch,
- cleanBuild: cleanBuild,
- compileBuild: compileBuild,
- watchBuild: watchBuild
- };
+ return { compileTask, watchTask, compileBuildTask };
});
-gulp.task('clean-extensions', tasks.map(t => t.clean));
-gulp.task('compile-extensions', tasks.map(t => t.compile));
-gulp.task('watch-extensions', tasks.map(t => t.watch));
+const compileExtensionsTask = task.define('compile-extensions', task.parallel(...tasks.map(t => t.compileTask)));
+gulp.task(compileExtensionsTask);
+exports.compileExtensionsTask = compileExtensionsTask;
-gulp.task('clean-extensions-build', tasks.map(t => t.cleanBuild));
-gulp.task('compile-extensions-build', tasks.map(t => t.compileBuild));
-gulp.task('watch-extensions-build', tasks.map(t => t.watchBuild));
+const watchExtensionsTask = task.define('watch-extensions', task.parallel(...tasks.map(t => t.watchTask)));
+gulp.task(watchExtensionsTask);
+exports.watchExtensionsTask = watchExtensionsTask;
+
+const compileExtensionsBuildLegacyTask = task.define('compile-extensions-build-legacy', task.parallel(...tasks.map(t => t.compileBuildTask)));
+gulp.task(compileExtensionsBuildLegacyTask);
+
+// Azure Pipelines
+
+const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions'));
+const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series(
+ cleanExtensionsBuildTask,
+ task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream().pipe(gulp.dest('.build'))),
+ task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream().pipe(gulp.dest('.build'))),
+));
+
+gulp.task(compileExtensionsBuildTask);
+exports.compileExtensionsBuildTask = compileExtensionsBuildTask;
\ No newline at end of file
diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js
index 1af30179a06..f6594804322 100644
--- a/build/gulpfile.hygiene.js
+++ b/build/gulpfile.hygiene.js
@@ -42,7 +42,8 @@ const indentationFilter = [
// except specific files
'!ThirdPartyNotices.txt',
- '!LICENSE.txt',
+ '!LICENSE.{txt,rtf}',
+ '!LICENSES.chromium.html',
'!**/LICENSE',
'!src/vs/nls.js',
'!src/vs/nls.build.js',
@@ -81,11 +82,12 @@ const indentationFilter = [
'!src/typings/**/*.d.ts',
'!extensions/**/*.d.ts',
'!**/*.{svg,exe,png,bmp,scpt,bat,cmd,cur,ttf,woff,eot,md,ps1,template,yaml,yml,d.ts.recipe,ico,icns}',
- '!build/{lib,tslintRules}/**/*.js',
+ '!build/{lib,tslintRules,download}/**/*.js',
'!build/**/*.sh',
'!build/azure-pipelines/**/*.js',
'!build/azure-pipelines/**/*.config',
'!**/Dockerfile',
+ '!**/Dockerfile.*',
'!**/*.Dockerfile',
'!**/*.dockerfile',
'!extensions/markdown-language-features/media/*.js'
@@ -117,7 +119,8 @@ const copyrightFilter = [
'!resources/completions/**',
'!extensions/markdown-language-features/media/highlight.css',
'!extensions/html-language-features/server/src/modes/typescript/*',
- '!extensions/*/server/bin/*'
+ '!extensions/*/server/bin/*',
+ '!src/vs/editor/test/node/classification/typescript-test.ts',
];
const eslintFilter = [
@@ -173,6 +176,17 @@ gulp.task('tslint', () => {
function hygiene(some) {
let errorCount = 0;
+ const productJson = es.through(function (file) {
+ const product = JSON.parse(file.contents.toString('utf8'));
+
+ if (product.extensionsGallery) {
+ console.error('product.json: Contains "extensionsGallery"');
+ errorCount++;
+ }
+
+ this.emit('data', file);
+ });
+
const indentation = es.through(function (file) {
const lines = file.contents.toString('utf8').split(/\r\n|\r|\n/);
file.__lines = lines;
@@ -228,7 +242,7 @@ function hygiene(some) {
let formatted = result.dest.replace(/\r\n/gm, '\n');
if (original !== formatted) {
- console.error('File not formatted:', file.relative);
+ console.error("File not formatted. Run the 'Format Document' command to fix it:", file.relative);
errorCount++;
}
cb(null, file);
@@ -256,8 +270,13 @@ function hygiene(some) {
input = some;
}
+ const productJsonFilter = filter('product.json', { restore: true });
+
const result = input
.pipe(filter(f => !f.stat.isDirectory()))
+ .pipe(productJsonFilter)
+ .pipe(process.env['BUILD_SOURCEVERSION'] ? es.through() : productJson)
+ .pipe(productJsonFilter.restore)
.pipe(filter(indentationFilter))
.pipe(indentation)
.pipe(filter(copyrightFilter))
diff --git a/build/gulpfile.mixin.js b/build/gulpfile.mixin.js
deleted file mode 100644
index 0b032152cf9..00000000000
--- a/build/gulpfile.mixin.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-'use strict';
-
-const gulp = require('gulp');
-const json = require('gulp-json-editor');
-const buffer = require('gulp-buffer');
-const filter = require('gulp-filter');
-const es = require('event-stream');
-const util = require('./lib/util');
-const remote = require('gulp-remote-src');
-const zip = require('gulp-vinyl-zip');
-
-const pkg = require('../package.json');
-
-gulp.task('mixin', function () {
- const repo = process.env['VSCODE_MIXIN_REPO'];
-
- if (!repo) {
- console.log('Missing VSCODE_MIXIN_REPO, skipping mixin');
- return;
- }
-
- const quality = process.env['VSCODE_QUALITY'];
-
- if (!quality) {
- console.log('Missing VSCODE_QUALITY, skipping mixin');
- return;
- }
-
- const url = `https://github.com/${repo}/archive/${pkg.distro}.zip`;
- const opts = { base: url };
- const username = process.env['VSCODE_MIXIN_USERNAME'];
- const password = process.env['VSCODE_MIXIN_PASSWORD'];
-
- if (username || password) {
- opts.auth = { user: username || '', pass: password || '' };
- }
-
- console.log('Mixing in sources from \'' + url + '\':');
-
- let all = remote('', opts)
- .pipe(zip.src())
- .pipe(filter(function (f) { return !f.isDirectory(); }))
- .pipe(util.rebase(1));
-
- if (quality) {
- const productJsonFilter = filter('product.json', { restore: true });
- const mixin = all
- .pipe(filter(['quality/' + quality + '/**']))
- .pipe(util.rebase(2))
- .pipe(productJsonFilter)
- .pipe(buffer())
- .pipe(json(o => Object.assign({}, require('../product.json'), o)))
- .pipe(productJsonFilter.restore);
-
- all = es.merge(mixin);
- }
-
- return all
- .pipe(es.mapSync(function (f) {
- console.log(f.relative);
- return f;
- }))
- .pipe(gulp.dest('.'));
-});
\ No newline at end of file
diff --git a/build/gulpfile.reh.js b/build/gulpfile.reh.js
new file mode 100644
index 00000000000..a956fba979e
--- /dev/null
+++ b/build/gulpfile.reh.js
@@ -0,0 +1,145 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+const gulp = require('gulp');
+
+const path = require('path');
+const es = require('event-stream');
+const util = require('./lib/util');
+const task = require('./lib/task');
+const vfs = require('vinyl-fs');
+const flatmap = require('gulp-flatmap');
+const gunzip = require('gulp-gunzip');
+const untar = require('gulp-untar');
+const File = require('vinyl');
+const fs = require('fs');
+const remote = require('gulp-remote-retry-src');
+const rename = require('gulp-rename');
+const filter = require('gulp-filter');
+const cp = require('child_process');
+
+const REPO_ROOT = path.dirname(__dirname);
+
+const BUILD_TARGETS = [
+ { platform: 'win32', arch: 'ia32', pkgTarget: 'node8-win-x86' },
+ { platform: 'win32', arch: 'x64', pkgTarget: 'node8-win-x64' },
+ { platform: 'darwin', arch: null, pkgTarget: 'node8-macos-x64' },
+ { platform: 'linux', arch: 'ia32', pkgTarget: 'node8-linux-x86' },
+ { platform: 'linux', arch: 'x64', pkgTarget: 'node8-linux-x64' },
+ { platform: 'linux', arch: 'armhf', pkgTarget: 'node8-linux-armv7' },
+ { platform: 'linux', arch: 'arm64', pkgTarget: 'node8-linux-arm64' },
+ { platform: 'linux', arch: 'alpine', pkgTarget: 'node8-linux-alpine' },
+];
+
+const noop = () => { return Promise.resolve(); };
+
+gulp.task('vscode-reh-win32-ia32-min', noop);
+gulp.task('vscode-reh-win32-x64-min', noop);
+gulp.task('vscode-reh-darwin-min', noop);
+gulp.task('vscode-reh-linux-x64-min', noop);
+gulp.task('vscode-reh-linux-armhf-min', noop);
+gulp.task('vscode-reh-linux-arm64-min', noop);
+gulp.task('vscode-reh-linux-alpine-min', noop);
+
+gulp.task('vscode-reh-web-win32-ia32-min', noop);
+gulp.task('vscode-reh-web-win32-x64-min', noop);
+gulp.task('vscode-reh-web-darwin-min', noop);
+gulp.task('vscode-reh-web-linux-x64-min', noop);
+gulp.task('vscode-reh-web-linux-alpine-min', noop);
+
+function getNodeVersion() {
+ const yarnrc = fs.readFileSync(path.join(REPO_ROOT, 'remote', '.yarnrc'), 'utf8');
+ const target = /^target "(.*)"$/m.exec(yarnrc)[1];
+ return target;
+}
+
+const nodeVersion = getNodeVersion();
+
+BUILD_TARGETS.forEach(({ platform, arch }) => {
+ if (platform === 'darwin') {
+ arch = 'x64';
+ }
+
+ gulp.task(task.define(`node-${platform}-${arch}`, () => {
+ const nodePath = path.join('.build', 'node', `v${nodeVersion}`, `${platform}-${arch}`);
+
+ if (!fs.existsSync(nodePath)) {
+ util.rimraf(nodePath);
+
+ return nodejs(platform, arch)
+ .pipe(vfs.dest(nodePath));
+ }
+
+ return Promise.resolve(null);
+ }));
+});
+
+const defaultNodeTask = gulp.task(`node-${process.platform}-${process.arch}`);
+
+if (defaultNodeTask) {
+ gulp.task(task.define('node', defaultNodeTask));
+}
+
+function nodejs(platform, arch) {
+ if (arch === 'ia32') {
+ arch = 'x86';
+ }
+
+ if (platform === 'win32') {
+ return remote(`/dist/v${nodeVersion}/win-${arch}/node.exe`, { base: 'https://nodejs.org' })
+ .pipe(rename('node.exe'));
+ }
+
+ if (arch === 'alpine') {
+ const contents = cp.execSync(`docker run --rm node:${nodeVersion}-alpine /bin/sh -c 'cat \`which node\`'`, { maxBuffer: 100 * 1024 * 1024, encoding: 'buffer' });
+ return es.readArray([new File({ path: 'node', contents, stat: { mode: parseInt('755', 8) } })]);
+ }
+
+ if (platform === 'darwin') {
+ arch = 'x64';
+ }
+
+ if (arch === 'armhf') {
+ arch = 'armv7l';
+ }
+
+ return remote(`/dist/v${nodeVersion}/node-v${nodeVersion}-${platform}-${arch}.tar.gz`, { base: 'https://nodejs.org' })
+ .pipe(flatmap(stream => stream.pipe(gunzip()).pipe(untar())))
+ .pipe(filter('**/node'))
+ .pipe(util.setExecutableBit('**'))
+ .pipe(rename('node'));
+}
+
+function mixinServer(watch) {
+ const packageJSONPath = path.join(path.dirname(__dirname), 'package.json');
+ function exec(cmdLine) {
+ console.log(cmdLine);
+ cp.execSync(cmdLine, { stdio: "inherit" });
+ }
+ function checkout() {
+ const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath).toString());
+ exec('git fetch distro');
+ exec(`git checkout ${packageJSON['distro']} -- src/vs/server resources/server`);
+ exec('git reset HEAD src/vs/server resources/server');
+ }
+ checkout();
+ if (watch) {
+ console.log('Enter watch mode (observing package.json)');
+ const watcher = fs.watch(packageJSONPath);
+ watcher.addListener('change', () => {
+ try {
+ checkout();
+ } catch (e) {
+ console.log(e);
+ }
+ });
+ }
+ return Promise.resolve();
+}
+
+gulp.task(task.define('mixin-server', () => mixinServer(false)));
+gulp.task(task.define('mixin-server-watch', () => mixinServer(true)));
diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
index d68e419c570..99bd930a91c 100644
--- a/build/gulpfile.vscode.js
+++ b/build/gulpfile.vscode.js
@@ -20,7 +20,7 @@ const filter = require('gulp-filter');
const json = require('gulp-json-editor');
const _ = require('underscore');
const util = require('./lib/util');
-const ext = require('./lib/extensions');
+const task = require('./lib/task');
const buildfile = require('../src/buildfile');
const common = require('./lib/optimize');
const root = path.dirname(__dirname);
@@ -33,6 +33,8 @@ const deps = require('./dependencies');
const getElectronVersion = require('./lib/electron').getElectronVersion;
const createAsar = require('./lib/asar').createAsar;
const minimist = require('minimist');
+const { compileBuildTask } = require('./gulpfile.compile');
+const { compileExtensionsBuildTask } = require('./gulpfile.extensions');
const productionDependencies = deps.getProductionDependencies(path.dirname(__dirname));
// @ts-ignore
@@ -47,6 +49,7 @@ const nodeModules = ['electron', 'original-fs']
const vscodeEntryPoints = _.flatten([
buildfile.entrypoint('vs/workbench/workbench.main'),
buildfile.base,
+ buildfile.serviceWorker,
buildfile.workbench,
buildfile.code
]);
@@ -60,19 +63,22 @@ const vscodeResources = [
'out-build/bootstrap-amd.js',
'out-build/bootstrap-window.js',
'out-build/paths.js',
- 'out-build/vs/**/*.{svg,png,cur,html}',
+ 'out-build/vs/**/*.{svg,png,html}',
+ '!out-build/vs/code/browser/**/*.html',
'out-build/vs/base/common/performance.js',
- 'out-build/vs/base/node/{stdForkStart.js,terminateProcess.sh,cpuUsage.sh}',
+ 'out-build/vs/base/node/languagePacks.js',
+ 'out-build/vs/base/node/{stdForkStart.js,terminateProcess.sh,cpuUsage.sh,ps.sh}',
'out-build/vs/base/browser/ui/octiconLabel/octicons/**',
'out-build/vs/workbench/browser/media/*-theme.css',
- 'out-build/vs/workbench/parts/debug/**/*.json',
- 'out-build/vs/workbench/parts/execution/**/*.scpt',
- 'out-build/vs/workbench/parts/webview/electron-browser/webview-pre.js',
+ 'out-build/vs/workbench/contrib/debug/**/*.json',
+ 'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt',
+ 'out-build/vs/workbench/contrib/webview/browser/pre/*.js',
+ 'out-build/vs/workbench/contrib/webview/electron-browser/pre/*.js',
'out-build/vs/**/markdown.css',
- 'out-build/vs/workbench/parts/tasks/**/*.json',
- 'out-build/vs/workbench/parts/welcome/walkThrough/**/*.md',
- 'out-build/vs/workbench/services/files/**/*.exe',
- 'out-build/vs/workbench/services/files/**/*.md',
+ 'out-build/vs/workbench/contrib/tasks/**/*.json',
+ 'out-build/vs/workbench/contrib/welcome/walkThrough/**/*.md',
+ 'out-build/vs/platform/files/**/*.exe',
+ 'out-build/vs/platform/files/**/*.md',
'out-build/vs/code/electron-browser/workbench/**',
'out-build/vs/code/electron-browser/sharedProcess/sharedProcess.js',
'out-build/vs/code/electron-browser/issue/issueReporter.js',
@@ -80,35 +86,32 @@ const vscodeResources = [
'!**/test/**'
];
-const BUNDLED_FILE_HEADER = [
- '/*!--------------------------------------------------------',
- ' * Copyright (C) Microsoft Corporation. All rights reserved.',
- ' *--------------------------------------------------------*/'
-].join('\n');
-
-gulp.task('clean-optimized-vscode', util.rimraf('out-vscode'));
-gulp.task('optimize-vscode', ['clean-optimized-vscode', 'compile-build', 'compile-extensions-build'], common.optimizeTask({
- src: 'out-build',
- entryPoints: vscodeEntryPoints,
- otherSources: [],
- resources: vscodeResources,
- loaderConfig: common.loaderConfig(nodeModules),
- header: BUNDLED_FILE_HEADER,
- out: 'out-vscode',
- bundleInfo: undefined
-}));
-
-
-gulp.task('optimize-index-js', ['optimize-vscode'], () => {
- const fullpath = path.join(process.cwd(), 'out-vscode/bootstrap-window.js');
- const contents = fs.readFileSync(fullpath).toString();
- const newContents = contents.replace('[/*BUILD->INSERT_NODE_MODULES*/]', JSON.stringify(nodeModules));
- fs.writeFileSync(fullpath, newContents);
-});
+const optimizeVSCodeTask = task.define('optimize-vscode', task.series(
+ util.rimraf('out-vscode'),
+ common.optimizeTask({
+ src: 'out-build',
+ entryPoints: vscodeEntryPoints,
+ resources: vscodeResources,
+ loaderConfig: common.loaderConfig(nodeModules),
+ out: 'out-vscode',
+ bundleInfo: undefined
+ })
+));
+gulp.task(optimizeVSCodeTask);
const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
-gulp.task('clean-minified-vscode', util.rimraf('out-vscode-min'));
-gulp.task('minify-vscode', ['clean-minified-vscode', 'optimize-index-js'], common.minifyTask('out-vscode', `${sourceMappingURLBase}/core`));
+const minifyVSCodeTask = task.define('minify-vscode', task.series(
+ optimizeVSCodeTask,
+ util.rimraf('out-vscode-min'),
+ () => {
+ const fullpath = path.join(process.cwd(), 'out-vscode/bootstrap-window.js');
+ const contents = fs.readFileSync(fullpath).toString();
+ const newContents = contents.replace('[/*BUILD->INSERT_NODE_MODULES*/]', JSON.stringify(nodeModules));
+ fs.writeFileSync(fullpath, newContents);
+ },
+ common.minifyTask('out-vscode', `${sourceMappingURLBase}/core`)
+));
+gulp.task(minifyVSCodeTask);
// Package
@@ -197,13 +200,11 @@ function getElectron(arch) {
};
}
-gulp.task('clean-electron', util.rimraf('.build/electron'));
-gulp.task('electron', ['clean-electron'], getElectron(process.arch));
-gulp.task('electron-ia32', ['clean-electron'], getElectron('ia32'));
-gulp.task('electron-x64', ['clean-electron'], getElectron('x64'));
-gulp.task('electron-arm', ['clean-electron'], getElectron('arm'));
-gulp.task('electron-arm64', ['clean-electron'], getElectron('arm64'));
-
+gulp.task(task.define('electron', task.series(util.rimraf('.build/electron'), getElectron(process.arch))));
+gulp.task(task.define('electron-ia32', task.series(util.rimraf('.build/electron'), getElectron('ia32'))));
+gulp.task(task.define('electron-x64', task.series(util.rimraf('.build/electron'), getElectron('x64'))));
+gulp.task(task.define('electron-arm', task.series(util.rimraf('.build/electron'), getElectron('armv7l'))));
+gulp.task(task.define('electron-arm64', task.series(util.rimraf('.build/electron'), getElectron('arm64'))));
/**
* Compute checksums for some files.
@@ -239,14 +240,14 @@ function computeChecksum(filename) {
return hash;
}
-function packageTask(platform, arch, opts) {
+function packageTask(platform, arch, sourceFolderName, destinationFolderName, opts) {
opts = opts || {};
- const destination = path.join(path.dirname(root), 'VSCode') + (platform ? '-' + platform : '') + (arch ? '-' + arch : '');
+ const destination = path.join(path.dirname(root), destinationFolderName);
platform = platform || process.platform;
return () => {
- const out = opts.minified ? 'out-vscode-min' : 'out-vscode';
+ const out = sourceFolderName;
const checksums = computeChecksums(out, [
'vs/workbench/workbench.main.js',
@@ -257,17 +258,14 @@ function packageTask(platform, arch, opts) {
const src = gulp.src(out + '/**', { base: '.' })
.pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + out), 'out'); }))
- .pipe(util.setExecutableBit(['**/*.sh']))
- .pipe(filter(['**', '!**/*.js.map']));
+ .pipe(util.setExecutableBit(['**/*.sh']));
- const root = path.resolve(path.join(__dirname, '..'));
+ const extensions = gulp.src('.build/extensions/**', { base: '.build', dot: true });
- const sources = es.merge(src, ext.packageExtensionsStream({
- sourceMappingURLBase: sourceMappingURLBase
- }));
+ const sources = es.merge(src, extensions)
+ .pipe(filter(['**', '!**/*.js.map'], { dot: true }));
let version = packageJson.version;
- // @ts-ignore JSON checking: quality is optional
const quality = product.quality;
if (quality && quality !== 'stable') {
@@ -295,45 +293,27 @@ function packageTask(platform, arch, opts) {
const productJsonStream = gulp.src(['product.json'], { base: '.' })
.pipe(json(productJsonUpdate));
- const license = gulp.src(['LICENSES.chromium.html', 'LICENSE.txt', 'ThirdPartyNotices.txt', 'licenses/**'], { base: '.' });
-
- const watermark = gulp.src(['resources/letterpress.svg', 'resources/letterpress-dark.svg', 'resources/letterpress-hc.svg'], { base: '.' });
+ const license = gulp.src(['LICENSES.chromium.html', product.licenseFileName, 'ThirdPartyNotices.txt', 'licenses/**'], { base: '.', allowEmpty: true });
// TODO the API should be copied to `out` during compile, not here
const api = gulp.src('src/vs/vscode.d.ts').pipe(rename('out/vs/vscode.d.ts'));
- const depsSrc = [
- ..._.flatten(productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`])),
- // @ts-ignore JSON checking: dependencies is optional
- ..._.flatten(Object.keys(product.dependencies || {}).map(d => [`node_modules/${d}/**`, `!node_modules/${d}/**/{test,tests}/**`]))
- ];
+ const telemetry = gulp.src('.build/telemetry/**', { base: '.build/telemetry', dot: true });
- const deps = gulp.src(depsSrc, { base: '.', dot: true })
+ const root = path.resolve(path.join(__dirname, '..'));
+ const dependenciesSrc = _.flatten(productionDependencies.map(d => path.relative(root, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`]));
+
+ const deps = gulp.src(dependenciesSrc, { base: '.', dot: true })
.pipe(filter(['**', '!**/package-lock.json']))
- .pipe(util.cleanNodeModule('fsevents', ['binding.gyp', 'fsevents.cc', 'build/**', 'src/**', 'test/**'], ['**/*.node']))
- .pipe(util.cleanNodeModule('vscode-sqlite3', ['binding.gyp', 'benchmark/**', 'cloudformation/**', 'deps/**', 'test/**', 'build/**', 'src/**'], ['build/Release/*.node']))
- .pipe(util.cleanNodeModule('oniguruma', ['binding.gyp', 'build/**', 'src/**', 'deps/**'], ['build/Release/*.node', 'src/*.js']))
- .pipe(util.cleanNodeModule('windows-mutex', ['binding.gyp', 'build/**', 'src/**'], ['**/*.node']))
- .pipe(util.cleanNodeModule('native-keymap', ['binding.gyp', 'build/**', 'src/**', 'deps/**'], ['build/Release/*.node']))
- .pipe(util.cleanNodeModule('native-is-elevated', ['binding.gyp', 'build/**', 'src/**', 'deps/**'], ['build/Release/*.node']))
- .pipe(util.cleanNodeModule('native-watchdog', ['binding.gyp', 'build/**', 'src/**'], ['build/Release/*.node']))
- .pipe(util.cleanNodeModule('spdlog', ['binding.gyp', 'build/**', 'deps/**', 'src/**', 'test/**'], ['build/Release/*.node']))
- .pipe(util.cleanNodeModule('jschardet', ['dist/**']))
- .pipe(util.cleanNodeModule('windows-foreground-love', ['binding.gyp', 'build/**', 'src/**'], ['**/*.node']))
- .pipe(util.cleanNodeModule('windows-process-tree', ['binding.gyp', 'build/**', 'src/**'], ['**/*.node']))
- .pipe(util.cleanNodeModule('gc-signals', ['binding.gyp', 'build/**', 'src/**', 'deps/**'], ['build/Release/*.node', 'src/index.js']))
- .pipe(util.cleanNodeModule('keytar', ['binding.gyp', 'build/**', 'src/**', 'script/**', 'node_modules/**'], ['**/*.node']))
- .pipe(util.cleanNodeModule('node-pty', ['binding.gyp', 'build/**', 'src/**', 'tools/**'], ['build/Release/*.exe', 'build/Release/*.dll', 'build/Release/*.node']))
- .pipe(util.cleanNodeModule('vscode-nsfw', ['binding.gyp', 'build/**', 'src/**', 'openpa/**', 'includes/**'], ['build/Release/*.node', '**/*.a']))
- .pipe(util.cleanNodeModule('vsda', ['binding.gyp', 'README.md', 'build/**', '*.bat', '*.sh', '*.cpp', '*.h'], ['build/Release/vsda.node']))
+ .pipe(util.cleanNodeModules(path.join(__dirname, '.nativeignore')))
.pipe(createAsar(path.join(process.cwd(), 'node_modules'), ['**/*.node', '**/vscode-ripgrep/bin/*', '**/node-pty/build/Release/*'], 'app/node_modules.asar'));
let all = es.merge(
packageJsonStream,
productJsonStream,
license,
- watermark,
api,
+ telemetry,
sources,
deps
);
@@ -383,12 +363,12 @@ function packageTask(platform, arch, opts) {
.pipe(util.skipDirectories())
.pipe(util.fixWin32DirectoryPermissions())
.pipe(electron(_.extend({}, config, { platform, arch, ffmpegChromium: true })))
- .pipe(filter(['**', '!LICENSE', '!LICENSES.chromium.html', '!version']));
+ .pipe(filter(['**', '!LICENSE', '!LICENSES.chromium.html', '!version'], { dot: true }));
- result = es.merge(result, gulp.src('resources/completions/**', { base: '.' }));
+ // result = es.merge(result, gulp.src('resources/completions/**', { base: '.' }));
if (platform === 'win32') {
- result = es.merge(result, gulp.src('resources/win32/bin/code.js', { base: 'resources/win32' }));
+ result = es.merge(result, gulp.src('resources/win32/bin/code.js', { base: 'resources/win32', allowEmpty: true }));
result = es.merge(result, gulp.src('resources/win32/bin/code.cmd', { base: 'resources/win32' })
.pipe(replace('@@NAME@@', product.nameShort))
@@ -396,14 +376,19 @@ function packageTask(platform, arch, opts) {
result = es.merge(result, gulp.src('resources/win32/bin/code.sh', { base: 'resources/win32' })
.pipe(replace('@@NAME@@', product.nameShort))
+ .pipe(replace('@@PRODNAME@@', product.nameLong))
+ .pipe(replace('@@VERSION@@', version))
.pipe(replace('@@COMMIT@@', commit))
.pipe(replace('@@APPNAME@@', product.applicationName))
+ .pipe(replace('@@DATAFOLDER@@', product.dataFolderName))
+ .pipe(replace('@@QUALITY@@', quality))
.pipe(rename(function (f) { f.basename = product.applicationName; f.extname = ''; })));
result = es.merge(result, gulp.src('resources/win32/VisualElementsManifest.xml', { base: 'resources/win32' })
.pipe(rename(product.nameShort + '.VisualElementsManifest.xml')));
} else if (platform === 'linux') {
result = es.merge(result, gulp.src('resources/linux/bin/code.sh', { base: '.' })
+ .pipe(replace('@@PRODNAME@@', product.nameLong))
.pipe(replace('@@NAME@@', product.applicationName))
.pipe(rename('bin/' + product.applicationName)));
}
@@ -423,29 +408,40 @@ function packageTask(platform, arch, opts) {
const buildRoot = path.dirname(root);
-gulp.task('clean-vscode-win32-ia32', util.rimraf(path.join(buildRoot, 'VSCode-win32-ia32')));
-gulp.task('clean-vscode-win32-x64', util.rimraf(path.join(buildRoot, 'VSCode-win32-x64')));
-gulp.task('clean-vscode-darwin', util.rimraf(path.join(buildRoot, 'VSCode-darwin')));
-gulp.task('clean-vscode-linux-ia32', util.rimraf(path.join(buildRoot, 'VSCode-linux-ia32')));
-gulp.task('clean-vscode-linux-x64', util.rimraf(path.join(buildRoot, 'VSCode-linux-x64')));
-gulp.task('clean-vscode-linux-arm', util.rimraf(path.join(buildRoot, 'VSCode-linux-arm')));
-gulp.task('clean-vscode-linux-arm64', util.rimraf(path.join(buildRoot, 'VSCode-linux-arm64')));
+const BUILD_TARGETS = [
+ { platform: 'win32', arch: 'ia32' },
+ { platform: 'win32', arch: 'x64' },
+ { platform: 'darwin', arch: null, opts: { stats: true } },
+ { platform: 'linux', arch: 'ia32' },
+ { platform: 'linux', arch: 'x64' },
+ { platform: 'linux', arch: 'arm' },
+ { platform: 'linux', arch: 'arm64' },
+];
+BUILD_TARGETS.forEach(buildTarget => {
+ const dashed = (str) => (str ? `-${str}` : ``);
+ const platform = buildTarget.platform;
+ const arch = buildTarget.arch;
+ const opts = buildTarget.opts;
-gulp.task('vscode-win32-ia32', ['optimize-vscode', 'clean-vscode-win32-ia32'], packageTask('win32', 'ia32'));
-gulp.task('vscode-win32-x64', ['optimize-vscode', 'clean-vscode-win32-x64'], packageTask('win32', 'x64'));
-gulp.task('vscode-darwin', ['optimize-vscode', 'clean-vscode-darwin'], packageTask('darwin', null, { stats: true }));
-gulp.task('vscode-linux-ia32', ['optimize-vscode', 'clean-vscode-linux-ia32'], packageTask('linux', 'ia32'));
-gulp.task('vscode-linux-x64', ['optimize-vscode', 'clean-vscode-linux-x64'], packageTask('linux', 'x64'));
-gulp.task('vscode-linux-arm', ['optimize-vscode', 'clean-vscode-linux-arm'], packageTask('linux', 'arm'));
-gulp.task('vscode-linux-arm64', ['optimize-vscode', 'clean-vscode-linux-arm64'], packageTask('linux', 'arm64'));
+ ['', 'min'].forEach(minified => {
+ const sourceFolderName = `out-vscode${dashed(minified)}`;
+ const destinationFolderName = `VSCode${dashed(platform)}${dashed(arch)}`;
-gulp.task('vscode-win32-ia32-min', ['minify-vscode', 'clean-vscode-win32-ia32'], packageTask('win32', 'ia32', { minified: true }));
-gulp.task('vscode-win32-x64-min', ['minify-vscode', 'clean-vscode-win32-x64'], packageTask('win32', 'x64', { minified: true }));
-gulp.task('vscode-darwin-min', ['minify-vscode', 'clean-vscode-darwin'], packageTask('darwin', null, { minified: true, stats: true }));
-gulp.task('vscode-linux-ia32-min', ['minify-vscode', 'clean-vscode-linux-ia32'], packageTask('linux', 'ia32', { minified: true }));
-gulp.task('vscode-linux-x64-min', ['minify-vscode', 'clean-vscode-linux-x64'], packageTask('linux', 'x64', { minified: true }));
-gulp.task('vscode-linux-arm-min', ['minify-vscode', 'clean-vscode-linux-arm'], packageTask('linux', 'arm', { minified: true }));
-gulp.task('vscode-linux-arm64-min', ['minify-vscode', 'clean-vscode-linux-arm64'], packageTask('linux', 'arm64', { minified: true }));
+ const vscodeTaskCI = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}-ci`, task.series(
+ util.rimraf(path.join(buildRoot, destinationFolderName)),
+ packageTask(platform, arch, sourceFolderName, destinationFolderName, opts)
+ ));
+ gulp.task(vscodeTaskCI);
+
+ const vscodeTask = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}`, task.series(
+ compileBuildTask,
+ compileExtensionsBuildTask,
+ minified ? minifyVSCodeTask : optimizeVSCodeTask,
+ vscodeTaskCI
+ ));
+ gulp.task(vscodeTask);
+ });
+});
// Transifex Localizations
@@ -468,30 +464,46 @@ const apiHostname = process.env.TRANSIFEX_API_URL;
const apiName = process.env.TRANSIFEX_API_NAME;
const apiToken = process.env.TRANSIFEX_API_TOKEN;
-gulp.task('vscode-translations-push', ['optimize-vscode'], function () {
- const pathToMetadata = './out-vscode/nls.metadata.json';
- const pathToExtensions = './extensions/*';
- const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}';
+gulp.task(task.define(
+ 'vscode-translations-push',
+ task.series(
+ compileBuildTask,
+ compileExtensionsBuildTask,
+ optimizeVSCodeTask,
+ function () {
+ const pathToMetadata = './out-vscode/nls.metadata.json';
+ const pathToExtensions = './extensions/*';
+ const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}';
- return es.merge(
- gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()),
- gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
- gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
- ).pipe(i18n.findObsoleteResources(apiHostname, apiName, apiToken)
- ).pipe(i18n.pushXlfFiles(apiHostname, apiName, apiToken));
-});
+ return es.merge(
+ gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()),
+ gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
+ gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
+ ).pipe(i18n.findObsoleteResources(apiHostname, apiName, apiToken)
+ ).pipe(i18n.pushXlfFiles(apiHostname, apiName, apiToken));
+ }
+ )
+));
-gulp.task('vscode-translations-export', ['optimize-vscode'], function () {
- const pathToMetadata = './out-vscode/nls.metadata.json';
- const pathToExtensions = './extensions/*';
- const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}';
+gulp.task(task.define(
+ 'vscode-translations-export',
+ task.series(
+ compileBuildTask,
+ compileExtensionsBuildTask,
+ optimizeVSCodeTask,
+ function () {
+ const pathToMetadata = './out-vscode/nls.metadata.json';
+ const pathToExtensions = './extensions/*';
+ const pathToSetup = 'build/win32/**/{Default.isl,messages.en.isl}';
- return es.merge(
- gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()),
- gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
- gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
- ).pipe(vfs.dest('../vscode-translations-export'));
-});
+ return es.merge(
+ gulp.src(pathToMetadata).pipe(i18n.createXlfFilesForCoreBundle()),
+ gulp.src(pathToSetup).pipe(i18n.createXlfFilesForIsl()),
+ gulp.src(pathToExtensions).pipe(i18n.createXlfFilesForExtensions())
+ ).pipe(vfs.dest('../vscode-translations-export'));
+ }
+ )
+));
gulp.task('vscode-translations-pull', function () {
return es.merge([...i18n.defaultLanguages, ...i18n.extraLanguages].map(language => {
@@ -515,83 +527,8 @@ gulp.task('vscode-translations-import', function () {
}));
});
-// Sourcemaps
-
-gulp.task('upload-vscode-sourcemaps', ['vscode-darwin-min', 'minify-vscode'], () => {
- const vs = gulp.src('out-vscode-min/**/*.map', { base: 'out-vscode-min' })
- .pipe(es.mapSync(f => {
- f.path = `${f.base}/core/${f.relative}`;
- return f;
- }));
-
- const extensionsOut = gulp.src('extensions/**/out/**/*.map', { base: '.' });
- const extensionsDist = gulp.src('extensions/**/dist/**/*.map', { base: '.' });
-
- return es.merge(vs, extensionsOut, extensionsDist)
- .pipe(es.through(function (data) {
- // debug
- console.log('Uploading Sourcemap', data.relative);
- this.emit('data', data);
- }))
- .pipe(azure.upload({
- account: process.env.AZURE_STORAGE_ACCOUNT,
- key: process.env.AZURE_STORAGE_ACCESS_KEY,
- container: 'sourcemaps',
- prefix: commit + '/'
- }));
-});
-
-const allConfigDetailsPath = path.join(os.tmpdir(), 'configuration.json');
-gulp.task('upload-vscode-configuration', ['generate-vscode-configuration'], () => {
- if (!shouldSetupSettingsSearch()) {
- const branch = process.env.BUILD_SOURCEBRANCH;
- console.log(`Only runs on master and release branches, not ${branch}`);
- return;
- }
-
- if (!fs.existsSync(allConfigDetailsPath)) {
- throw new Error(`configuration file at ${allConfigDetailsPath} does not exist`);
- }
-
- const settingsSearchBuildId = getSettingsSearchBuildId(packageJson);
- if (!settingsSearchBuildId) {
- throw new Error('Failed to compute build number');
- }
-
- return gulp.src(allConfigDetailsPath)
- .pipe(azure.upload({
- account: process.env.AZURE_STORAGE_ACCOUNT,
- key: process.env.AZURE_STORAGE_ACCESS_KEY,
- container: 'configuration',
- prefix: `${settingsSearchBuildId}/${commit}/`
- }));
-});
-
-function shouldSetupSettingsSearch() {
- const branch = process.env.BUILD_SOURCEBRANCH;
- return branch && (/\/master$/.test(branch) || branch.indexOf('/release/') >= 0);
-}
-
-function getSettingsSearchBuildId(packageJson) {
- try {
- const branch = process.env.BUILD_SOURCEBRANCH;
- const branchId = branch.indexOf('/release/') >= 0 ? 0 :
- /\/master$/.test(branch) ? 1 :
- 2; // Some unexpected branch
-
- const out = cp.execSync(`git rev-list HEAD --count`);
- const count = parseInt(out.toString());
-
- //
- // 1.25.1, 1,234,567 commits, master = 1250112345671
- return util.versionStringToNumber(packageJson.version) * 1e8 + count * 10 + branchId;
- } catch (e) {
- throw new Error('Could not determine build number: ' + e.toString());
- }
-}
-
// This task is only run for the MacOS build
-gulp.task('generate-vscode-configuration', () => {
+const generateVSCodeConfigurationTask = task.define('generate-vscode-configuration', () => {
return new Promise((resolve, reject) => {
const buildDir = process.env['AGENT_BUILDDIRECTORY'];
if (!buildDir) {
@@ -627,3 +564,59 @@ gulp.task('generate-vscode-configuration', () => {
});
});
});
+
+const allConfigDetailsPath = path.join(os.tmpdir(), 'configuration.json');
+gulp.task(task.define(
+ 'upload-vscode-configuration',
+ task.series(
+ generateVSCodeConfigurationTask,
+ () => {
+ if (!shouldSetupSettingsSearch()) {
+ const branch = process.env.BUILD_SOURCEBRANCH;
+ console.log(`Only runs on master and release branches, not ${branch}`);
+ return;
+ }
+
+ if (!fs.existsSync(allConfigDetailsPath)) {
+ throw new Error(`configuration file at ${allConfigDetailsPath} does not exist`);
+ }
+
+ const settingsSearchBuildId = getSettingsSearchBuildId(packageJson);
+ if (!settingsSearchBuildId) {
+ throw new Error('Failed to compute build number');
+ }
+
+ return gulp.src(allConfigDetailsPath)
+ .pipe(azure.upload({
+ account: process.env.AZURE_STORAGE_ACCOUNT,
+ key: process.env.AZURE_STORAGE_ACCESS_KEY,
+ container: 'configuration',
+ prefix: `${settingsSearchBuildId}/${commit}/`
+ }));
+ }
+ )
+));
+
+function shouldSetupSettingsSearch() {
+ const branch = process.env.BUILD_SOURCEBRANCH;
+ return branch && (/\/master$/.test(branch) || branch.indexOf('/release/') >= 0);
+}
+
+function getSettingsSearchBuildId(packageJson) {
+ try {
+ const branch = process.env.BUILD_SOURCEBRANCH;
+ const branchId = branch.indexOf('/release/') >= 0 ? 0 :
+ /\/master$/.test(branch) ? 1 :
+ 2; // Some unexpected branch
+
+ const out = cp.execSync(`git rev-list HEAD --count`);
+ const count = parseInt(out.toString());
+
+ //
+ // 1.25.1, 1,234,567 commits, master = 1250112345671
+ return util.versionStringToNumber(packageJson.version) * 1e8 + count * 10 + branchId;
+ } catch (e) {
+ throw new Error('Could not determine build number: ' + e.toString());
+ }
+}
+
diff --git a/build/gulpfile.vscode.linux.js b/build/gulpfile.vscode.linux.js
index fae082779d7..a718cfb0082 100644
--- a/build/gulpfile.vscode.linux.js
+++ b/build/gulpfile.vscode.linux.js
@@ -12,6 +12,7 @@ const shell = require('gulp-shell');
const es = require('event-stream');
const vfs = require('vinyl-fs');
const util = require('./lib/util');
+const task = require('./lib/task');
const packageJson = require('../package.json');
const product = require('../product.json');
const rpmDependencies = require('../resources/linux/rpm/dependencies.json');
@@ -22,7 +23,7 @@ const commit = util.getVersion(root);
const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
function getDebPackageArch(arch) {
- return { x64: 'amd64', ia32: 'i386', arm: 'armhf', arm64: "arm64" }[arch];
+ return { x64: 'amd64', arm: 'armhf', arm64: "arm64" }[arch];
}
function prepareDebPackage(arch) {
@@ -41,7 +42,7 @@ function prepareDebPackage(arch) {
.pipe(replace('@@NAME_LONG@@', product.nameLong))
.pipe(replace('@@NAME_SHORT@@', product.nameShort))
.pipe(replace('@@NAME@@', product.applicationName))
- .pipe(replace('@@ICON@@', product.applicationName))
+ .pipe(replace('@@ICON@@', product.linuxIconName))
.pipe(replace('@@URLPROTOCOL@@', product.urlProtocol));
const appdata = gulp.src('resources/linux/code.appdata.xml', { base: '.' })
@@ -51,13 +52,13 @@ function prepareDebPackage(arch) {
.pipe(rename('usr/share/appdata/' + product.applicationName + '.appdata.xml'));
const icon = gulp.src('resources/linux/code.png', { base: '.' })
- .pipe(rename('usr/share/pixmaps/' + product.applicationName + '.png'));
+ .pipe(rename('usr/share/pixmaps/' + product.linuxIconName + '.png'));
- const bash_completion = gulp.src('resources/completions/bash/code')
- .pipe(rename('usr/share/bash-completion/completions/code'));
+ // const bash_completion = gulp.src('resources/completions/bash/code')
+ // .pipe(rename('usr/share/bash-completion/completions/code'));
- const zsh_completion = gulp.src('resources/completions/zsh/_code')
- .pipe(rename('usr/share/zsh/vendor-completions/_code'));
+ // const zsh_completion = gulp.src('resources/completions/zsh/_code')
+ // .pipe(rename('usr/share/zsh/vendor-completions/_code'));
const code = gulp.src(binaryDir + '/**/*', { base: binaryDir })
.pipe(rename(function (p) { p.dirname = 'usr/share/' + product.applicationName + '/' + p.dirname; }));
@@ -93,7 +94,7 @@ function prepareDebPackage(arch) {
.pipe(replace('@@UPDATEURL@@', product.updateUrl || '@@UPDATEURL@@'))
.pipe(rename('DEBIAN/postinst'));
- const all = es.merge(control, postinst, postrm, prerm, desktops, appdata, icon, bash_completion, zsh_completion, code);
+ const all = es.merge(control, postinst, postrm, prerm, desktops, appdata, icon, /* bash_completion, zsh_completion, */ code);
return all.pipe(vfs.dest(destination));
};
@@ -113,7 +114,7 @@ function getRpmBuildPath(rpmArch) {
}
function getRpmPackageArch(arch) {
- return { x64: 'x86_64', ia32: 'i386', arm: 'armhf', arm64: "arm64" }[arch];
+ return { x64: 'x86_64', arm: 'armhf', arm64: "arm64" }[arch];
}
function prepareRpmPackage(arch) {
@@ -131,7 +132,7 @@ function prepareRpmPackage(arch) {
.pipe(replace('@@NAME_LONG@@', product.nameLong))
.pipe(replace('@@NAME_SHORT@@', product.nameShort))
.pipe(replace('@@NAME@@', product.applicationName))
- .pipe(replace('@@ICON@@', product.applicationName))
+ .pipe(replace('@@ICON@@', product.linuxIconName))
.pipe(replace('@@URLPROTOCOL@@', product.urlProtocol));
const appdata = gulp.src('resources/linux/code.appdata.xml', { base: '.' })
@@ -141,13 +142,13 @@ function prepareRpmPackage(arch) {
.pipe(rename('usr/share/appdata/' + product.applicationName + '.appdata.xml'));
const icon = gulp.src('resources/linux/code.png', { base: '.' })
- .pipe(rename('BUILD/usr/share/pixmaps/' + product.applicationName + '.png'));
+ .pipe(rename('BUILD/usr/share/pixmaps/' + product.linuxIconName + '.png'));
- const bash_completion = gulp.src('resources/completions/bash/code')
- .pipe(rename('BUILD/usr/share/bash-completion/completions/code'));
+ // const bash_completion = gulp.src('resources/completions/bash/code')
+ // .pipe(rename('BUILD/usr/share/bash-completion/completions/code'));
- const zsh_completion = gulp.src('resources/completions/zsh/_code')
- .pipe(rename('BUILD/usr/share/zsh/site-functions/_code'));
+ // const zsh_completion = gulp.src('resources/completions/zsh/_code')
+ // .pipe(rename('BUILD/usr/share/zsh/site-functions/_code'));
const code = gulp.src(binaryDir + '/**/*', { base: binaryDir })
.pipe(rename(function (p) { p.dirname = 'BUILD/usr/share/' + product.applicationName + '/' + p.dirname; }));
@@ -155,6 +156,7 @@ function prepareRpmPackage(arch) {
const spec = gulp.src('resources/linux/rpm/code.spec.template', { base: '.' })
.pipe(replace('@@NAME@@', product.applicationName))
.pipe(replace('@@NAME_LONG@@', product.nameLong))
+ .pipe(replace('@@ICON@@', product.linuxIconName))
.pipe(replace('@@VERSION@@', packageJson.version))
.pipe(replace('@@RELEASE@@', linuxPackageRevision))
.pipe(replace('@@ARCHITECTURE@@', rpmArch))
@@ -169,7 +171,7 @@ function prepareRpmPackage(arch) {
const specIcon = gulp.src('resources/linux/rpm/code.xpm', { base: '.' })
.pipe(rename('SOURCES/' + product.applicationName + '.xpm'));
- const all = es.merge(code, desktops, appdata, icon, bash_completion, zsh_completion, spec, specIcon);
+ const all = es.merge(code, desktops, appdata, icon, /* bash_completion, zsh_completion, */ spec, specIcon);
return all.pipe(vfs.dest(getRpmBuildPath(rpmArch)));
};
@@ -198,14 +200,20 @@ function prepareSnapPackage(arch) {
return function () {
const desktop = gulp.src('resources/linux/code.desktop', { base: '.' })
+ .pipe(rename(`usr/share/applications/${product.applicationName}.desktop`));
+
+ const desktopUrlHandler = gulp.src('resources/linux/code-url-handler.desktop', { base: '.' })
+ .pipe(rename(`usr/share/applications/${product.applicationName}-url-handler.desktop`));
+
+ const desktops = es.merge(desktop, desktopUrlHandler)
.pipe(replace('@@NAME_LONG@@', product.nameLong))
.pipe(replace('@@NAME_SHORT@@', product.nameShort))
.pipe(replace('@@NAME@@', product.applicationName))
- .pipe(replace('@@ICON@@', `/usr/share/pixmaps/${product.applicationName}.png`))
- .pipe(rename(`usr/share/applications/${product.applicationName}.desktop`));
+ .pipe(replace('@@ICON@@', `/usr/share/pixmaps/${product.linuxIconName}.png`))
+ .pipe(replace('@@URLPROTOCOL@@', product.urlProtocol));
const icon = gulp.src('resources/linux/code.png', { base: '.' })
- .pipe(rename(`usr/share/pixmaps/${product.applicationName}.png`));
+ .pipe(rename(`usr/share/pixmaps/${product.linuxIconName}.png`));
const code = gulp.src(binaryDir + '/**/*', { base: binaryDir })
.pipe(rename(function (p) { p.dirname = `usr/share/${product.applicationName}/${p.dirname}`; }));
@@ -215,13 +223,10 @@ function prepareSnapPackage(arch) {
.pipe(replace('@@VERSION@@', commit.substr(0, 8)))
.pipe(rename('snap/snapcraft.yaml'));
- const snapUpdate = gulp.src('resources/linux/snap/snapUpdate.sh', { base: '.' })
- .pipe(rename(`usr/share/${product.applicationName}/snapUpdate.sh`));
-
const electronLaunch = gulp.src('resources/linux/snap/electron-launch', { base: '.' })
.pipe(rename('electron-launch'));
- const all = es.merge(desktop, icon, code, snapcraft, electronLaunch, snapUpdate);
+ const all = es.merge(desktops, icon, code, snapcraft, electronLaunch);
return all.pipe(vfs.dest(destination));
};
@@ -232,42 +237,35 @@ function buildSnapPackage(arch) {
return shell.task(`cd ${snapBuildPath} && snapcraft build`);
}
-gulp.task('clean-vscode-linux-ia32-deb', util.rimraf('.build/linux/deb/i386'));
-gulp.task('clean-vscode-linux-x64-deb', util.rimraf('.build/linux/deb/amd64'));
-gulp.task('clean-vscode-linux-arm-deb', util.rimraf('.build/linux/deb/armhf'));
-gulp.task('clean-vscode-linux-arm64-deb', util.rimraf('.build/linux/deb/arm64'));
-gulp.task('clean-vscode-linux-ia32-rpm', util.rimraf('.build/linux/rpm/i386'));
-gulp.task('clean-vscode-linux-x64-rpm', util.rimraf('.build/linux/rpm/x86_64'));
-gulp.task('clean-vscode-linux-arm-rpm', util.rimraf('.build/linux/rpm/armhf'));
-gulp.task('clean-vscode-linux-arm64-rpm', util.rimraf('.build/linux/rpm/arm64'));
-gulp.task('clean-vscode-linux-ia32-snap', util.rimraf('.build/linux/snap/x64'));
-gulp.task('clean-vscode-linux-x64-snap', util.rimraf('.build/linux/snap/x64'));
-gulp.task('clean-vscode-linux-arm-snap', util.rimraf('.build/linux/snap/x64'));
-gulp.task('clean-vscode-linux-arm64-snap', util.rimraf('.build/linux/snap/x64'));
+const BUILD_TARGETS = [
+ { arch: 'x64' },
+ { arch: 'arm' },
+ { arch: 'arm64' },
+];
-gulp.task('vscode-linux-ia32-prepare-deb', ['clean-vscode-linux-ia32-deb'], prepareDebPackage('ia32'));
-gulp.task('vscode-linux-x64-prepare-deb', ['clean-vscode-linux-x64-deb'], prepareDebPackage('x64'));
-gulp.task('vscode-linux-arm-prepare-deb', ['clean-vscode-linux-arm-deb'], prepareDebPackage('arm'));
-gulp.task('vscode-linux-arm64-prepare-deb', ['clean-vscode-linux-arm64-deb'], prepareDebPackage('arm64'));
-gulp.task('vscode-linux-ia32-build-deb', ['vscode-linux-ia32-prepare-deb'], buildDebPackage('ia32'));
-gulp.task('vscode-linux-x64-build-deb', ['vscode-linux-x64-prepare-deb'], buildDebPackage('x64'));
-gulp.task('vscode-linux-arm-build-deb', ['vscode-linux-arm-prepare-deb'], buildDebPackage('arm'));
-gulp.task('vscode-linux-arm64-build-deb', ['vscode-linux-arm64-prepare-deb'], buildDebPackage('arm64'));
+BUILD_TARGETS.forEach((buildTarget) => {
+ const arch = buildTarget.arch;
-gulp.task('vscode-linux-ia32-prepare-rpm', ['clean-vscode-linux-ia32-rpm'], prepareRpmPackage('ia32'));
-gulp.task('vscode-linux-x64-prepare-rpm', ['clean-vscode-linux-x64-rpm'], prepareRpmPackage('x64'));
-gulp.task('vscode-linux-arm-prepare-rpm', ['clean-vscode-linux-arm-rpm'], prepareRpmPackage('arm'));
-gulp.task('vscode-linux-arm64-prepare-rpm', ['clean-vscode-linux-arm64-rpm'], prepareRpmPackage('arm64'));
-gulp.task('vscode-linux-ia32-build-rpm', ['vscode-linux-ia32-prepare-rpm'], buildRpmPackage('ia32'));
-gulp.task('vscode-linux-x64-build-rpm', ['vscode-linux-x64-prepare-rpm'], buildRpmPackage('x64'));
-gulp.task('vscode-linux-arm-build-rpm', ['vscode-linux-arm-prepare-rpm'], buildRpmPackage('arm'));
-gulp.task('vscode-linux-arm64-build-rpm', ['vscode-linux-arm64-prepare-rpm'], buildRpmPackage('arm64'));
+ {
+ const debArch = getDebPackageArch(arch);
+ const prepareDebTask = task.define(`vscode-linux-${arch}-prepare-deb`, task.series(util.rimraf(`.build/linux/deb/${debArch}`), prepareDebPackage(arch)));
+ // gulp.task(prepareDebTask);
+ const buildDebTask = task.define(`vscode-linux-${arch}-build-deb`, task.series(prepareDebTask, buildDebPackage(arch)));
+ gulp.task(buildDebTask);
+ }
-gulp.task('vscode-linux-ia32-prepare-snap', ['clean-vscode-linux-ia32-snap'], prepareSnapPackage('ia32'));
-gulp.task('vscode-linux-x64-prepare-snap', ['clean-vscode-linux-x64-snap'], prepareSnapPackage('x64'));
-gulp.task('vscode-linux-arm-prepare-snap', ['clean-vscode-linux-arm-snap'], prepareSnapPackage('arm'));
-gulp.task('vscode-linux-arm64-prepare-snap', ['clean-vscode-linux-arm64-snap'], prepareSnapPackage('arm64'));
-gulp.task('vscode-linux-ia32-build-snap', ['vscode-linux-ia32-prepare-snap'], buildSnapPackage('ia32'));
-gulp.task('vscode-linux-x64-build-snap', ['vscode-linux-x64-prepare-snap'], buildSnapPackage('x64'));
-gulp.task('vscode-linux-arm-build-snap', ['vscode-linux-arm-prepare-snap'], buildSnapPackage('arm'));
-gulp.task('vscode-linux-arm64-build-snap', ['vscode-linux-arm64-prepare-snap'], buildSnapPackage('arm64'));
+ {
+ const rpmArch = getRpmPackageArch(arch);
+ const prepareRpmTask = task.define(`vscode-linux-${arch}-prepare-rpm`, task.series(util.rimraf(`.build/linux/rpm/${rpmArch}`), prepareRpmPackage(arch)));
+ // gulp.task(prepareRpmTask);
+ const buildRpmTask = task.define(`vscode-linux-${arch}-build-rpm`, task.series(prepareRpmTask, buildRpmPackage(arch)));
+ gulp.task(buildRpmTask);
+ }
+
+ {
+ const prepareSnapTask = task.define(`vscode-linux-${arch}-prepare-snap`, task.series(util.rimraf(`.build/linux/snap/${arch}`), prepareSnapPackage(arch)));
+ gulp.task(prepareSnapTask);
+ const buildSnapTask = task.define(`vscode-linux-${arch}-build-snap`, task.series(prepareSnapTask, buildSnapPackage(arch)));
+ gulp.task(buildSnapTask);
+ }
+});
diff --git a/build/gulpfile.vscode.web.js b/build/gulpfile.vscode.web.js
new file mode 100644
index 00000000000..11da75e482d
--- /dev/null
+++ b/build/gulpfile.vscode.web.js
@@ -0,0 +1,151 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+const gulp = require('gulp');
+const path = require('path');
+const es = require('event-stream');
+const util = require('./lib/util');
+const task = require('./lib/task');
+const common = require('./lib/optimize');
+const product = require('../product.json');
+const rename = require('gulp-rename');
+const filter = require('gulp-filter');
+const json = require('gulp-json-editor');
+const _ = require('underscore');
+const deps = require('./dependencies');
+const vfs = require('vinyl-fs');
+const packageJson = require('../package.json');
+const { compileBuildTask } = require('./gulpfile.compile');
+
+const REPO_ROOT = path.dirname(__dirname);
+const commit = util.getVersion(REPO_ROOT);
+const BUILD_ROOT = path.dirname(REPO_ROOT);
+const WEB_FOLDER = path.join(REPO_ROOT, 'remote', 'web');
+
+const productionDependencies = deps.getProductionDependencies(WEB_FOLDER);
+
+const nodeModules = Object.keys(product.dependencies || {})
+ .concat(_.uniq(productionDependencies.map(d => d.name)));
+
+const vscodeWebResources = [
+
+ // Workbench
+ 'out-build/vs/{base,platform,editor,workbench}/**/*.{svg,png,html}',
+ 'out-build/vs/base/browser/ui/octiconLabel/octicons/**',
+ 'out-build/vs/**/markdown.css',
+
+ // Webview
+ 'out-build/vs/workbench/contrib/webview/browser/pre/*.js',
+
+ // Excludes
+ '!out-build/vs/**/{node,electron-browser,electron-main}/**',
+ '!out-build/vs/editor/standalone/**',
+ '!out-build/vs/workbench/**/*-tb.png',
+ '!**/test/**'
+];
+
+const buildfile = require('../src/buildfile');
+
+const vscodeWebEntryPoints = [
+ buildfile.workbenchWeb,
+ buildfile.serviceWorker,
+ buildfile.keyboardMaps,
+ buildfile.base
+];
+
+const optimizeVSCodeWebTask = task.define('optimize-vscode-web', task.series(
+ util.rimraf('out-vscode-web'),
+ common.optimizeTask({
+ src: 'out-build',
+ entryPoints: _.flatten(vscodeWebEntryPoints),
+ otherSources: [],
+ resources: vscodeWebResources,
+ loaderConfig: common.loaderConfig(nodeModules),
+ out: 'out-vscode-web',
+ bundleInfo: undefined
+ })
+));
+
+const minifyVSCodeWebTask = task.define('minify-vscode-web', task.series(
+ optimizeVSCodeWebTask,
+ util.rimraf('out-vscode-web-min'),
+ common.minifyTask('out-vscode-web', `https://ticino.blob.core.windows.net/sourcemaps/${commit}/core`)
+));
+gulp.task(minifyVSCodeWebTask);
+
+function packageTask(sourceFolderName, destinationFolderName) {
+ const destination = path.join(BUILD_ROOT, destinationFolderName);
+
+ return () => {
+ const src = gulp.src(sourceFolderName + '/**', { base: '.' })
+ .pipe(rename(function (path) { path.dirname = path.dirname.replace(new RegExp('^' + sourceFolderName), 'out'); }))
+ .pipe(filter(['**', '!**/*.js.map']));
+
+ const sources = es.merge(src);
+
+ let version = packageJson.version;
+ const quality = product.quality;
+
+ if (quality && quality !== 'stable') {
+ version += '-' + quality;
+ }
+
+ const name = product.nameShort;
+ const packageJsonStream = gulp.src(['remote/web/package.json'], { base: 'remote/web' })
+ .pipe(json({ name, version }));
+
+ const date = new Date().toISOString();
+
+ const productJsonStream = gulp.src(['product.json'], { base: '.' })
+ .pipe(json({ commit, date }));
+
+ const license = gulp.src(['remote/LICENSE'], { base: 'remote' });
+
+ const dependenciesSrc = _.flatten(productionDependencies.map(d => path.relative(REPO_ROOT, d.path)).map(d => [`${d}/**`, `!${d}/**/{test,tests}/**`, `!${d}/.bin/**`]));
+
+ const deps = gulp.src(dependenciesSrc, { base: 'remote/web', dot: true })
+ .pipe(filter(['**', '!**/package-lock.json']))
+ .pipe(util.cleanNodeModules(path.join(__dirname, '.nativeignore')));
+
+ const favicon = gulp.src('resources/server/favicon.ico', { base: 'resources/server' });
+
+ let all = es.merge(
+ packageJsonStream,
+ productJsonStream,
+ license,
+ sources,
+ deps,
+ favicon
+ );
+
+ let result = all
+ .pipe(util.skipDirectories())
+ .pipe(util.fixWin32DirectoryPermissions());
+
+ return result.pipe(vfs.dest(destination));
+ };
+}
+
+const dashed = (str) => (str ? `-${str}` : ``);
+
+['', 'min'].forEach(minified => {
+ const sourceFolderName = `out-vscode-web${dashed(minified)}`;
+ const destinationFolderName = `vscode-web`;
+
+ const vscodeWebTaskCI = task.define(`vscode-web${dashed(minified)}-ci`, task.series(
+ minified ? minifyVSCodeWebTask : optimizeVSCodeWebTask,
+ util.rimraf(path.join(BUILD_ROOT, destinationFolderName)),
+ packageTask(sourceFolderName, destinationFolderName)
+ ));
+ gulp.task(vscodeWebTaskCI);
+
+ const vscodeWebTask = task.define(`vscode-web${dashed(minified)}`, task.series(
+ compileBuildTask,
+ vscodeWebTaskCI
+ ));
+ gulp.task(vscodeWebTask);
+});
\ No newline at end of file
diff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.js
index 1cfc5b4c4f7..497fc553c03 100644
--- a/build/gulpfile.vscode.win32.js
+++ b/build/gulpfile.vscode.win32.js
@@ -12,6 +12,7 @@ const assert = require('assert');
const cp = require('child_process');
const _7z = require('7zip')['7z'];
const util = require('./lib/util');
+const task = require('./lib/task');
const pkg = require('../package.json');
const product = require('../product.json');
const vfs = require('vinyl-fs');
@@ -24,7 +25,7 @@ const zipDir = arch => path.join(repoPath, '.build', `win32-${arch}`, 'archive')
const zipPath = arch => path.join(zipDir(arch), `VSCode-win32-${arch}.zip`);
const setupDir = (arch, target) => path.join(repoPath, '.build', `win32-${arch}`, `${target}-setup`);
const issPath = path.join(__dirname, 'win32', 'code.iss');
-const innoSetupPath = path.join(path.dirname(path.dirname(require.resolve('innosetup-compiler'))), 'bin', 'ISCC.exe');
+const innoSetupPath = path.join(path.dirname(path.dirname(require.resolve('innosetup'))), 'bin', 'ISCC.exe');
const signPS1 = path.join(repoPath, 'build', 'azure-pipelines', 'win32', 'sign.ps1');
function packageInnoSetup(iss, options, cb) {
@@ -105,8 +106,8 @@ function buildWin32Setup(arch, target) {
}
function defineWin32SetupTasks(arch, target) {
- gulp.task(`clean-vscode-win32-${arch}-${target}-setup`, util.rimraf(setupDir(arch, target)));
- gulp.task(`vscode-win32-${arch}-${target}-setup`, [`clean-vscode-win32-${arch}-${target}-setup`], buildWin32Setup(arch, target));
+ const cleanTask = util.rimraf(setupDir(arch, target));
+ gulp.task(task.define(`vscode-win32-${arch}-${target}-setup`, task.series(cleanTask, buildWin32Setup(arch, target))));
}
defineWin32SetupTasks('ia32', 'system');
@@ -124,11 +125,8 @@ function archiveWin32Setup(arch) {
};
}
-gulp.task('clean-vscode-win32-ia32-archive', util.rimraf(zipDir('ia32')));
-gulp.task('vscode-win32-ia32-archive', ['clean-vscode-win32-ia32-archive'], archiveWin32Setup('ia32'));
-
-gulp.task('clean-vscode-win32-x64-archive', util.rimraf(zipDir('x64')));
-gulp.task('vscode-win32-x64-archive', ['clean-vscode-win32-x64-archive'], archiveWin32Setup('x64'));
+gulp.task(task.define('vscode-win32-ia32-archive', task.series(util.rimraf(zipDir('ia32')), archiveWin32Setup('ia32'))));
+gulp.task(task.define('vscode-win32-x64-archive', task.series(util.rimraf(zipDir('x64')), archiveWin32Setup('x64'))));
function copyInnoUpdater(arch) {
return () => {
@@ -137,15 +135,17 @@ function copyInnoUpdater(arch) {
};
}
-gulp.task('vscode-win32-ia32-copy-inno-updater', copyInnoUpdater('ia32'));
-gulp.task('vscode-win32-x64-copy-inno-updater', copyInnoUpdater('x64'));
-
-function patchInnoUpdater(arch) {
+function updateIcon(executablePath) {
return cb => {
const icon = path.join(repoPath, 'resources', 'win32', 'code.ico');
- rcedit(path.join(buildPath(arch), 'tools', 'inno_updater.exe'), { icon }, cb);
+ rcedit(executablePath, { icon }, cb);
};
}
-gulp.task('vscode-win32-ia32-inno-updater', ['vscode-win32-ia32-copy-inno-updater'], patchInnoUpdater('ia32'));
-gulp.task('vscode-win32-x64-inno-updater', ['vscode-win32-x64-copy-inno-updater'], patchInnoUpdater('x64'));
\ No newline at end of file
+gulp.task(task.define('vscode-win32-ia32-inno-updater', task.series(copyInnoUpdater('ia32'), updateIcon(path.join(buildPath('ia32'), 'tools', 'inno_updater.exe')))));
+gulp.task(task.define('vscode-win32-x64-inno-updater', task.series(copyInnoUpdater('x64'), updateIcon(path.join(buildPath('x64'), 'tools', 'inno_updater.exe')))));
+
+// CodeHelper.exe icon
+
+gulp.task(task.define('vscode-win32-ia32-code-helper', task.series(updateIcon(path.join(buildPath('ia32'), 'resources', 'app', 'out', 'vs', 'platform', 'files', 'node', 'watcher', 'win32', 'CodeHelper.exe')))));
+gulp.task(task.define('vscode-win32-x64-code-helper', task.series(updateIcon(path.join(buildPath('x64'), 'resources', 'app', 'out', 'vs', 'platform', 'files', 'node', 'watcher', 'win32', 'CodeHelper.exe')))));
diff --git a/build/lib/builtInExtensions.js b/build/lib/builtInExtensions.js
index c5797c78b61..a687bbccb4c 100644
--- a/build/lib/builtInExtensions.js
+++ b/build/lib/builtInExtensions.js
@@ -14,7 +14,8 @@ const es = require('event-stream');
const rename = require('gulp-rename');
const vfs = require('vinyl-fs');
const ext = require('./extensions');
-const util = require('gulp-util');
+const fancyLog = require('fancy-log');
+const ansiColors = require('ansi-colors');
const root = path.dirname(path.dirname(__dirname));
const builtInExtensions = require('../builtInExtensions.json');
@@ -43,7 +44,7 @@ function isUpToDate(extension) {
function syncMarketplaceExtension(extension) {
if (isUpToDate(extension)) {
- util.log(util.colors.blue('[marketplace]'), `${extension.name}@${extension.version}`, util.colors.green('✔︎'));
+ fancyLog(ansiColors.blue('[marketplace]'), `${extension.name}@${extension.version}`, ansiColors.green('✔︎'));
return es.readArray([]);
}
@@ -52,13 +53,13 @@ function syncMarketplaceExtension(extension) {
return ext.fromMarketplace(extension.name, extension.version, extension.metadata)
.pipe(rename(p => p.dirname = `${extension.name}/${p.dirname}`))
.pipe(vfs.dest('.build/builtInExtensions'))
- .on('end', () => util.log(util.colors.blue('[marketplace]'), extension.name, util.colors.green('✔︎')));
+ .on('end', () => fancyLog(ansiColors.blue('[marketplace]'), extension.name, ansiColors.green('✔︎')));
}
function syncExtension(extension, controlState) {
switch (controlState) {
case 'disabled':
- util.log(util.colors.blue('[disabled]'), util.colors.gray(extension.name));
+ fancyLog(ansiColors.blue('[disabled]'), ansiColors.gray(extension.name));
return es.readArray([]);
case 'marketplace':
@@ -66,15 +67,15 @@ function syncExtension(extension, controlState) {
default:
if (!fs.existsSync(controlState)) {
- util.log(util.colors.red(`Error: Built-in extension '${extension.name}' is configured to run from '${controlState}' but that path does not exist.`));
+ fancyLog(ansiColors.red(`Error: Built-in extension '${extension.name}' is configured to run from '${controlState}' but that path does not exist.`));
return es.readArray([]);
} else if (!fs.existsSync(path.join(controlState, 'package.json'))) {
- util.log(util.colors.red(`Error: Built-in extension '${extension.name}' is configured to run from '${controlState}' but there is no 'package.json' file in that directory.`));
+ fancyLog(ansiColors.red(`Error: Built-in extension '${extension.name}' is configured to run from '${controlState}' but there is no 'package.json' file in that directory.`));
return es.readArray([]);
}
- util.log(util.colors.blue('[local]'), `${extension.name}: ${util.colors.cyan(controlState)}`, util.colors.green('✔︎'));
+ fancyLog(ansiColors.blue('[local]'), `${extension.name}: ${ansiColors.cyan(controlState)}`, ansiColors.green('✔︎'));
return es.readArray([]);
}
}
@@ -93,8 +94,8 @@ function writeControlFile(control) {
}
function main() {
- util.log('Syncronizing built-in extensions...');
- util.log(`You can manage built-in extensions with the ${util.colors.cyan('--builtin')} flag`);
+ fancyLog('Syncronizing built-in extensions...');
+ fancyLog(`You can manage built-in extensions with the ${ansiColors.cyan('--builtin')} flag`);
const control = readControlFile();
const streams = [];
diff --git a/build/lib/compilation.js b/build/lib/compilation.js
index f0468121d7a..62aff873509 100644
--- a/build/lib/compilation.js
+++ b/build/lib/compilation.js
@@ -16,7 +16,8 @@ const monacodts = require("../monaco/api");
const nls = require("./nls");
const reporter_1 = require("./reporter");
const util = require("./util");
-const util2 = require("gulp-util");
+const fancyLog = require("fancy-log");
+const ansiColors = require("ansi-colors");
const watch = require('./watch');
const reporter = reporter_1.createReporter();
function getTypeScriptCompilerOptions(src) {
@@ -111,7 +112,6 @@ class MonacoGenerator {
this._executeSoonTimer = null;
this._isWatch = isWatch;
this.stream = es.through();
- this._watchers = [];
this._watchedFiles = {};
let onWillReadFile = (moduleId, filePath) => {
if (!this._isWatch) {
@@ -121,26 +121,10 @@ class MonacoGenerator {
return;
}
this._watchedFiles[filePath] = true;
- const watcher = fs.watch(filePath);
- watcher.addListener('change', () => {
+ fs.watchFile(filePath, () => {
this._declarationResolver.invalidateCache(moduleId);
this._executeSoon();
});
- watcher.addListener('error', (err) => {
- console.error(`Encountered error while watching ${filePath}.`);
- console.log(err);
- delete this._watchedFiles[filePath];
- for (let i = 0; i < this._watchers.length; i++) {
- if (this._watchers[i] === watcher) {
- this._watchers.splice(i, 1);
- break;
- }
- }
- watcher.close();
- this._declarationResolver.invalidateCache(moduleId);
- this._executeSoon();
- });
- this._watchers.push(watcher);
};
this._fsProvider = new class extends monacodts.FSProvider {
readFileSync(moduleId, filePath) {
@@ -150,11 +134,9 @@ class MonacoGenerator {
};
this._declarationResolver = new monacodts.DeclarationResolver(this._fsProvider);
if (this._isWatch) {
- const recipeWatcher = fs.watch(monacodts.RECIPE_PATH);
- recipeWatcher.addListener('change', () => {
+ fs.watchFile(monacodts.RECIPE_PATH, () => {
this._executeSoon();
});
- this._watchers.push(recipeWatcher);
}
}
_executeSoon() {
@@ -167,9 +149,6 @@ class MonacoGenerator {
this.execute();
}, 20);
}
- dispose() {
- this._watchers.forEach(watcher => watcher.close());
- }
_run() {
let r = monacodts.run3(this._declarationResolver);
if (!r && !this._isWatch) {
@@ -179,7 +158,7 @@ class MonacoGenerator {
return r;
}
_log(message, ...rest) {
- util2.log(util2.colors.cyan('[monaco.d.ts]'), message, ...rest);
+ fancyLog(ansiColors.cyan('[monaco.d.ts]'), message, ...rest);
}
execute() {
const startTime = Date.now();
diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts
index fede9e74492..f9544af9cc5 100644
--- a/build/lib/compilation.ts
+++ b/build/lib/compilation.ts
@@ -17,7 +17,9 @@ import * as monacodts from '../monaco/api';
import * as nls from './nls';
import { createReporter } from './reporter';
import * as util from './util';
-import * as util2 from 'gulp-util';
+import * as fancyLog from 'fancy-log';
+import * as ansiColors from 'ansi-colors';
+
const watch = require('./watch');
const reporter = createReporter();
@@ -135,7 +137,6 @@ class MonacoGenerator {
private readonly _isWatch: boolean;
public readonly stream: NodeJS.ReadWriteStream;
- private readonly _watchers: fs.FSWatcher[];
private readonly _watchedFiles: { [filePath: string]: boolean; };
private readonly _fsProvider: monacodts.FSProvider;
private readonly _declarationResolver: monacodts.DeclarationResolver;
@@ -143,7 +144,6 @@ class MonacoGenerator {
constructor(isWatch: boolean) {
this._isWatch = isWatch;
this.stream = es.through();
- this._watchers = [];
this._watchedFiles = {};
let onWillReadFile = (moduleId: string, filePath: string) => {
if (!this._isWatch) {
@@ -154,26 +154,10 @@ class MonacoGenerator {
}
this._watchedFiles[filePath] = true;
- const watcher = fs.watch(filePath);
- watcher.addListener('change', () => {
+ fs.watchFile(filePath, () => {
this._declarationResolver.invalidateCache(moduleId);
this._executeSoon();
});
- watcher.addListener('error', (err) => {
- console.error(`Encountered error while watching ${filePath}.`);
- console.log(err);
- delete this._watchedFiles[filePath];
- for (let i = 0; i < this._watchers.length; i++) {
- if (this._watchers[i] === watcher) {
- this._watchers.splice(i, 1);
- break;
- }
- }
- watcher.close();
- this._declarationResolver.invalidateCache(moduleId);
- this._executeSoon();
- });
- this._watchers.push(watcher);
};
this._fsProvider = new class extends monacodts.FSProvider {
public readFileSync(moduleId: string, filePath: string): Buffer {
@@ -184,11 +168,9 @@ class MonacoGenerator {
this._declarationResolver = new monacodts.DeclarationResolver(this._fsProvider);
if (this._isWatch) {
- const recipeWatcher = fs.watch(monacodts.RECIPE_PATH);
- recipeWatcher.addListener('change', () => {
+ fs.watchFile(monacodts.RECIPE_PATH, () => {
this._executeSoon();
});
- this._watchers.push(recipeWatcher);
}
}
@@ -204,10 +186,6 @@ class MonacoGenerator {
}, 20);
}
- public dispose(): void {
- this._watchers.forEach(watcher => watcher.close());
- }
-
private _run(): monacodts.IMonacoDeclarationResult | null {
let r = monacodts.run3(this._declarationResolver);
if (!r && !this._isWatch) {
@@ -218,7 +196,7 @@ class MonacoGenerator {
}
private _log(message: any, ...rest: any[]): void {
- util2.log(util2.colors.cyan('[monaco.d.ts]'), message, ...rest);
+ fancyLog(ansiColors.cyan('[monaco.d.ts]'), message, ...rest);
}
public execute(): void {
diff --git a/build/lib/electron.js b/build/lib/electron.js
index 6387133675b..63e867a98fe 100644
--- a/build/lib/electron.js
+++ b/build/lib/electron.js
@@ -24,7 +24,7 @@ module.exports.getElectronVersion = getElectronVersion;
if (require.main === module) {
const version = getElectronVersion();
const versionFile = path.join(root, '.build', 'electron', 'version');
- const isUpToDate = fs.existsSync(versionFile) && fs.readFileSync(versionFile, 'utf8') === `v${version}`;
+ const isUpToDate = fs.existsSync(versionFile) && fs.readFileSync(versionFile, 'utf8') === `${version}`;
process.exit(isUpToDate ? 0 : 1);
}
diff --git a/build/lib/extensions.js b/build/lib/extensions.js
index 994d1336e6b..73d2c7acef3 100644
--- a/build/lib/extensions.js
+++ b/build/lib/extensions.js
@@ -13,26 +13,30 @@ const File = require("vinyl");
const vsce = require("vsce");
const stats_1 = require("./stats");
const util2 = require("./util");
-const remote = require("gulp-remote-src");
+const remote = require("gulp-remote-retry-src");
const vzip = require('gulp-vinyl-zip');
const filter = require("gulp-filter");
const rename = require("gulp-rename");
-const util = require('gulp-util');
+const fancyLog = require("fancy-log");
+const ansiColors = require("ansi-colors");
const buffer = require('gulp-buffer');
const json = require("gulp-json-editor");
const webpack = require('webpack');
const webpackGulp = require('webpack-stream');
-const root = path.resolve(path.join(__dirname, '..', '..'));
-function fromLocal(extensionPath, sourceMappingURLBase) {
+const util = require('./util');
+const root = path.dirname(path.dirname(__dirname));
+const commit = util.getVersion(root);
+const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
+function fromLocal(extensionPath) {
const webpackFilename = path.join(extensionPath, 'extension.webpack.config.js');
if (fs.existsSync(webpackFilename)) {
- return fromLocalWebpack(extensionPath, sourceMappingURLBase);
+ return fromLocalWebpack(extensionPath);
}
else {
return fromLocalNormal(extensionPath);
}
}
-function fromLocalWebpack(extensionPath, sourceMappingURLBase) {
+function fromLocalWebpack(extensionPath) {
const result = es.through();
const packagedDependencies = [];
const packageJsonConfig = require(path.join(extensionPath, 'package.json'));
@@ -77,9 +81,9 @@ function fromLocalWebpack(extensionPath, sourceMappingURLBase) {
return data;
}))
.pipe(packageJsonFilter.restore);
- const webpackStreams = webpackConfigLocations.map(webpackConfigPath => () => {
+ const webpackStreams = webpackConfigLocations.map(webpackConfigPath => {
const webpackDone = (err, stats) => {
- util.log(`Bundled extension: ${util.colors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
+ fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
if (err) {
result.emit('error', err);
}
@@ -103,22 +107,14 @@ function fromLocalWebpack(extensionPath, sourceMappingURLBase) {
// source map handling:
// * rewrite sourceMappingURL
// * save to disk so that upload-task picks this up
- if (sourceMappingURLBase) {
- const contents = data.contents.toString('utf8');
- data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
- return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
- }), 'utf8');
- if (/\.js\.map$/.test(data.path)) {
- if (!fs.existsSync(path.dirname(data.path))) {
- fs.mkdirSync(path.dirname(data.path));
- }
- fs.writeFileSync(data.path, data.contents);
- }
- }
+ const contents = data.contents.toString('utf8');
+ data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
+ return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
+ }), 'utf8');
this.emit('data', data);
}));
});
- es.merge(sequence(webpackStreams), patchFilesStream)
+ es.merge(...webpackStreams, patchFilesStream)
// .pipe(es.through(function (data) {
// // debug
// console.log('out', data.path, data.contents.length);
@@ -157,7 +153,7 @@ const baseHeaders = {
function fromMarketplace(extensionName, version, metadata) {
const [publisher, name] = extensionName.split('.');
const url = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${name}/${version}/vspackage`;
- util.log('Downloading extension:', util.colors.yellow(`${extensionName}@${version}`), '...');
+ fancyLog('Downloading extension:', ansiColors.yellow(`${extensionName}@${version}`), '...');
const options = {
base: url,
requestOptions: {
@@ -179,34 +175,12 @@ exports.fromMarketplace = fromMarketplace;
const excludedExtensions = [
'vscode-api-tests',
'vscode-colorize-tests',
+ 'vscode-test-resolver',
'ms-vscode.node-debug',
'ms-vscode.node-debug2',
];
const builtInExtensions = require('../builtInExtensions.json');
-/**
- * We're doing way too much stuff at once, with webpack et al. So much stuff
- * that while downloading extensions from the marketplace, node js doesn't get enough
- * stack frames to complete the download in under 2 minutes, at which point the
- * marketplace server cuts off the http request. So, we sequentialize the extensino tasks.
- */
-function sequence(streamProviders) {
- const result = es.through();
- function pop() {
- if (streamProviders.length === 0) {
- result.emit('end');
- }
- else {
- const fn = streamProviders.shift();
- fn()
- .on('end', function () { setTimeout(pop, 0); })
- .pipe(result, { end: false });
- }
- }
- pop();
- return result;
-}
-function packageExtensionsStream(optsIn) {
- const opts = optsIn || {};
+function packageLocalExtensionsStream() {
const localExtensionDescriptions = glob.sync('extensions/*/package.json')
.map(manifestPath => {
const extensionPath = path.dirname(path.join(root, manifestPath));
@@ -214,21 +188,22 @@ function packageExtensionsStream(optsIn) {
return { name: extensionName, path: extensionPath };
})
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
- .filter(({ name }) => opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true)
.filter(({ name }) => builtInExtensions.every(b => b.name !== name));
- const localExtensions = () => sequence([...localExtensionDescriptions.map(extension => () => {
- return fromLocal(extension.path, opts.sourceMappingURLBase)
- .pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
- })]);
- const localExtensionDependencies = () => gulp.src('extensions/node_modules/**', { base: '.' });
- const marketplaceExtensions = () => es.merge(...builtInExtensions
- .filter(({ name }) => opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true)
- .map(extension => {
+ const nodeModules = gulp.src('extensions/node_modules/**', { base: '.' });
+ const localExtensions = localExtensionDescriptions.map(extension => {
+ return fromLocal(extension.path)
+ .pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
+ });
+ return es.merge(nodeModules, ...localExtensions)
+ .pipe(util2.setExecutableBit(['**/*.sh']));
+}
+exports.packageLocalExtensionsStream = packageLocalExtensionsStream;
+function packageMarketplaceExtensionsStream() {
+ const extensions = builtInExtensions.map(extension => {
return fromMarketplace(extension.name, extension.version, extension.metadata)
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
- }));
- return sequence([localExtensions, localExtensionDependencies, marketplaceExtensions])
- .pipe(util2.setExecutableBit(['**/*.sh']))
- .pipe(filter(['**', '!**/*.js.map']));
+ });
+ return es.merge(extensions)
+ .pipe(util2.setExecutableBit(['**/*.sh']));
}
-exports.packageExtensionsStream = packageExtensionsStream;
+exports.packageMarketplaceExtensionsStream = packageMarketplaceExtensionsStream;
diff --git a/build/lib/extensions.ts b/build/lib/extensions.ts
index 844b711a829..4b185aff681 100644
--- a/build/lib/extensions.ts
+++ b/build/lib/extensions.ts
@@ -13,28 +13,31 @@ import * as File from 'vinyl';
import * as vsce from 'vsce';
import { createStatsStream } from './stats';
import * as util2 from './util';
-import remote = require('gulp-remote-src');
+import remote = require('gulp-remote-retry-src');
const vzip = require('gulp-vinyl-zip');
import filter = require('gulp-filter');
import rename = require('gulp-rename');
-const util = require('gulp-util');
+import * as fancyLog from 'fancy-log';
+import * as ansiColors from 'ansi-colors';
const buffer = require('gulp-buffer');
import json = require('gulp-json-editor');
const webpack = require('webpack');
const webpackGulp = require('webpack-stream');
+const util = require('./util');
+const root = path.dirname(path.dirname(__dirname));
+const commit = util.getVersion(root);
+const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${commit}`;
-const root = path.resolve(path.join(__dirname, '..', '..'));
-
-function fromLocal(extensionPath: string, sourceMappingURLBase?: string): Stream {
+function fromLocal(extensionPath: string): Stream {
const webpackFilename = path.join(extensionPath, 'extension.webpack.config.js');
if (fs.existsSync(webpackFilename)) {
- return fromLocalWebpack(extensionPath, sourceMappingURLBase);
+ return fromLocalWebpack(extensionPath);
} else {
return fromLocalNormal(extensionPath);
}
}
-function fromLocalWebpack(extensionPath: string, sourceMappingURLBase: string | undefined): Stream {
+function fromLocalWebpack(extensionPath: string): Stream {
const result = es.through();
const packagedDependencies: string[] = [];
@@ -90,10 +93,10 @@ function fromLocalWebpack(extensionPath: string, sourceMappingURLBase: string |
.pipe(packageJsonFilter.restore);
- const webpackStreams = webpackConfigLocations.map(webpackConfigPath => () => {
+ const webpackStreams = webpackConfigLocations.map(webpackConfigPath => {
const webpackDone = (err: any, stats: any) => {
- util.log(`Bundled extension: ${util.colors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
+ fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
if (err) {
result.emit('error', err);
}
@@ -122,24 +125,16 @@ function fromLocalWebpack(extensionPath: string, sourceMappingURLBase: string |
// source map handling:
// * rewrite sourceMappingURL
// * save to disk so that upload-task picks this up
- if (sourceMappingURLBase) {
- const contents = (data.contents).toString('utf8');
- data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
- return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
- }), 'utf8');
+ const contents = (data.contents).toString('utf8');
+ data.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, function (_m, g1) {
+ return `\n//# sourceMappingURL=${sourceMappingURLBase}/extensions/${path.basename(extensionPath)}/${relativeOutputPath}/${g1}`;
+ }), 'utf8');
- if (/\.js\.map$/.test(data.path)) {
- if (!fs.existsSync(path.dirname(data.path))) {
- fs.mkdirSync(path.dirname(data.path));
- }
- fs.writeFileSync(data.path, data.contents);
- }
- }
this.emit('data', data);
}));
});
- es.merge(sequence(webpackStreams), patchFilesStream)
+ es.merge(...webpackStreams, patchFilesStream)
// .pipe(es.through(function (data) {
// // debug
// console.log('out', data.path, data.contents.length);
@@ -187,7 +182,7 @@ export function fromMarketplace(extensionName: string, version: string, metadata
const [publisher, name] = extensionName.split('.');
const url = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${name}/${version}/vspackage`;
- util.log('Downloading extension:', util.colors.yellow(`${extensionName}@${version}`), '...');
+ fancyLog('Downloading extension:', ansiColors.yellow(`${extensionName}@${version}`), '...');
const options = {
base: url,
@@ -209,17 +204,10 @@ export function fromMarketplace(extensionName: string, version: string, metadata
.pipe(packageJsonFilter.restore);
}
-interface IPackageExtensionsOptions {
- /**
- * Set to undefined to package all of them.
- */
- desiredExtensions?: string[];
- sourceMappingURLBase?: string;
-}
-
const excludedExtensions = [
'vscode-api-tests',
'vscode-colorize-tests',
+ 'vscode-test-resolver',
'ms-vscode.node-debug',
'ms-vscode.node-debug2',
];
@@ -233,33 +221,7 @@ interface IBuiltInExtension {
const builtInExtensions: IBuiltInExtension[] = require('../builtInExtensions.json');
-/**
- * We're doing way too much stuff at once, with webpack et al. So much stuff
- * that while downloading extensions from the marketplace, node js doesn't get enough
- * stack frames to complete the download in under 2 minutes, at which point the
- * marketplace server cuts off the http request. So, we sequentialize the extensino tasks.
- */
-function sequence(streamProviders: { (): Stream }[]): Stream {
- const result = es.through();
-
- function pop() {
- if (streamProviders.length === 0) {
- result.emit('end');
- } else {
- const fn = streamProviders.shift()!;
- fn()
- .on('end', function () { setTimeout(pop, 0); })
- .pipe(result, { end: false });
- }
- }
-
- pop();
- return result;
-}
-
-export function packageExtensionsStream(optsIn?: IPackageExtensionsOptions): NodeJS.ReadWriteStream {
- const opts = optsIn || {};
-
+export function packageLocalExtensionsStream(): NodeJS.ReadWriteStream {
const localExtensionDescriptions = (glob.sync('extensions/*/package.json'))
.map(manifestPath => {
const extensionPath = path.dirname(path.join(root, manifestPath));
@@ -267,26 +229,24 @@ export function packageExtensionsStream(optsIn?: IPackageExtensionsOptions): Nod
return { name: extensionName, path: extensionPath };
})
.filter(({ name }) => excludedExtensions.indexOf(name) === -1)
- .filter(({ name }) => opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true)
.filter(({ name }) => builtInExtensions.every(b => b.name !== name));
- const localExtensions = () => sequence([...localExtensionDescriptions.map(extension => () => {
- return fromLocal(extension.path, opts.sourceMappingURLBase)
+ const nodeModules = gulp.src('extensions/node_modules/**', { base: '.' });
+ const localExtensions = localExtensionDescriptions.map(extension => {
+ return fromLocal(extension.path)
.pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
- })]);
+ });
- const localExtensionDependencies = () => gulp.src('extensions/node_modules/**', { base: '.' });
-
- const marketplaceExtensions = () => es.merge(
- ...builtInExtensions
- .filter(({ name }) => opts.desiredExtensions ? opts.desiredExtensions.indexOf(name) >= 0 : true)
- .map(extension => {
- return fromMarketplace(extension.name, extension.version, extension.metadata)
- .pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
- })
- );
-
- return sequence([localExtensions, localExtensionDependencies, marketplaceExtensions])
- .pipe(util2.setExecutableBit(['**/*.sh']))
- .pipe(filter(['**', '!**/*.js.map']));
+ return es.merge(nodeModules, ...localExtensions)
+ .pipe(util2.setExecutableBit(['**/*.sh']));
+}
+
+export function packageMarketplaceExtensionsStream(): NodeJS.ReadWriteStream {
+ const extensions = builtInExtensions.map(extension => {
+ return fromMarketplace(extension.name, extension.version, extension.metadata)
+ .pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
+ });
+
+ return es.merge(extensions)
+ .pipe(util2.setExecutableBit(['**/*.sh']));
}
diff --git a/build/lib/i18n.js b/build/lib/i18n.js
index 1fc6b060e9c..c40b2988e28 100644
--- a/build/lib/i18n.js
+++ b/build/lib/i18n.js
@@ -13,15 +13,16 @@ const xml2js = require("xml2js");
const glob = require("glob");
const https = require("https");
const gulp = require("gulp");
-const util = require("gulp-util");
+const fancyLog = require("fancy-log");
+const ansiColors = require("ansi-colors");
const iconv = require("iconv-lite");
const NUMBER_OF_CONCURRENT_DOWNLOADS = 4;
function log(message, ...rest) {
- util.log(util.colors.green('[i18n]'), message, ...rest);
+ fancyLog(ansiColors.green('[i18n]'), message, ...rest);
}
exports.defaultLanguages = [
- { id: 'zh-tw', folderName: 'cht', transifexId: 'zh-hant' },
- { id: 'zh-cn', folderName: 'chs', transifexId: 'zh-hans' },
+ { id: 'zh-tw', folderName: 'cht', translationId: 'zh-hant' },
+ { id: 'zh-cn', folderName: 'chs', translationId: 'zh-hans' },
{ id: 'ja', folderName: 'jpn' },
{ id: 'ko', folderName: 'kor' },
{ id: 'de', folderName: 'deu' },
@@ -371,7 +372,11 @@ function processCoreBundleFormat(fileHeader, languages, json, emitter) {
}
});
});
- let languageDirectory = path.join(__dirname, '..', '..', 'i18n');
+ let languageDirectory = path.join(__dirname, '..', '..', '..', 'vscode-loc', 'i18n');
+ if (!fs.existsSync(languageDirectory)) {
+ log(`No VS Code localization repository found. Looking at ${languageDirectory}`);
+ log(`To bundle translations please check out the vscode-loc repository as a sibling of the vscode repository.`);
+ }
let sortedLanguages = sortLanguages(languages);
sortedLanguages.forEach((language) => {
if (process.env['VSCODE_BUILD_VERBOSE']) {
@@ -379,22 +384,25 @@ function processCoreBundleFormat(fileHeader, languages, json, emitter) {
}
statistics[language.id] = 0;
let localizedModules = Object.create(null);
- let languageFolderName = language.folderName || language.id;
- let cwd = path.join(languageDirectory, languageFolderName, 'src');
+ let languageFolderName = language.translationId || language.id;
+ let i18nFile = path.join(languageDirectory, `vscode-language-pack-${languageFolderName}`, 'translations', 'main.i18n.json');
+ let allMessages;
+ if (fs.existsSync(i18nFile)) {
+ let content = stripComments(fs.readFileSync(i18nFile, 'utf8'));
+ allMessages = JSON.parse(content);
+ }
modules.forEach((module) => {
let order = keysSection[module];
- let i18nFile = path.join(cwd, module) + '.i18n.json';
- let messages = null;
- if (fs.existsSync(i18nFile)) {
- let content = stripComments(fs.readFileSync(i18nFile, 'utf8'));
- messages = JSON.parse(content);
+ let moduleMessage;
+ if (allMessages) {
+ moduleMessage = allMessages.contents[module];
}
- else {
+ if (!moduleMessage) {
if (process.env['VSCODE_BUILD_VERBOSE']) {
log(`No localized messages found for module ${module}. Using default messages.`);
}
- messages = defaultMessages[module];
- statistics[language.id] = statistics[language.id] + Object.keys(messages).length;
+ moduleMessage = defaultMessages[module];
+ statistics[language.id] = statistics[language.id] + Object.keys(moduleMessage).length;
}
let localizedMessages = [];
order.forEach((keyInfo) => {
@@ -405,7 +413,7 @@ function processCoreBundleFormat(fileHeader, languages, json, emitter) {
else {
key = keyInfo.key;
}
- let message = messages[key];
+ let message = moduleMessage[key];
if (!message) {
if (process.env['VSCODE_BUILD_VERBOSE']) {
log(`No localized message found for key ${key} in module ${module}. Using default message.`);
@@ -488,7 +496,7 @@ function getResource(sourceFile) {
else if (/^vs\/code/.test(sourceFile)) {
return { name: 'vs/code', project: workbenchProject };
}
- else if (/^vs\/workbench\/parts/.test(sourceFile)) {
+ else if (/^vs\/workbench\/contrib/.test(sourceFile)) {
resource = sourceFile.split('/', 4).join('/');
return { name: resource, project: workbenchProject };
}
@@ -572,7 +580,7 @@ function createXlfFilesForExtensions() {
}
return _xlf;
}
- gulp.src([`./extensions/${extensionName}/package.nls.json`, `./extensions/${extensionName}/**/nls.metadata.json`]).pipe(event_stream_1.through(function (file) {
+ gulp.src([`./extensions/${extensionName}/package.nls.json`, `./extensions/${extensionName}/**/nls.metadata.json`], { allowEmpty: true }).pipe(event_stream_1.through(function (file) {
if (file.isBuffer()) {
const buffer = file.contents;
const basename = path.basename(file.path);
@@ -949,7 +957,7 @@ function retrieveResource(language, resource, apiHostname, credentials) {
return limiter.queue(() => new Promise((resolve, reject) => {
const slug = resource.name.replace(/\//g, '_');
const project = resource.project;
- let transifexLanguageId = language.id === 'ps' ? 'en' : language.transifexId || language.id;
+ let transifexLanguageId = language.id === 'ps' ? 'en' : language.translationId || language.id;
const options = {
hostname: apiHostname,
path: `/api/2/project/${project}/resource/${slug}/translation/${transifexLanguageId}?file&mode=onlyreviewed`,
@@ -1032,7 +1040,7 @@ function prepareI18nPackFiles(externalExtensions, resultingTranslationPaths, pse
let extensionsPacks = {};
let errors = [];
return event_stream_1.through(function (xlf) {
- let project = path.dirname(xlf.relative);
+ let project = path.basename(path.dirname(xlf.relative));
let resource = path.basename(xlf.relative, '.xlf');
let contents = xlf.contents.toString();
let parsePromise = pseudo ? XLF.parsePseudo(contents) : XLF.parse(contents);
diff --git a/build/lib/i18n.resources.json b/build/lib/i18n.resources.json
index 296d1286fbb..32b0e6fb4c7 100644
--- a/build/lib/i18n.resources.json
+++ b/build/lib/i18n.resources.json
@@ -27,135 +27,155 @@
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/cli",
+ "name": "vs/workbench/api/common",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/codeEditor",
+ "name": "vs/workbench/contrib/cli",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/comments",
+ "name": "vs/workbench/contrib/codeEditor",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/debug",
+ "name": "vs/workbench/contrib/callHierarchy",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/emmet",
+ "name": "vs/workbench/contrib/comments",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/execution",
+ "name": "vs/workbench/contrib/debug",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/extensions",
+ "name": "vs/workbench/contrib/emmet",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/feedback",
+ "name": "vs/workbench/contrib/extensions",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/files",
+ "name": "vs/workbench/contrib/externalTerminal",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/html",
+ "name": "vs/workbench/contrib/feedback",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/markers",
+ "name": "vs/workbench/contrib/files",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/localizations",
+ "name": "vs/workbench/contrib/html",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/logs",
+ "name": "vs/workbench/contrib/issue",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/output",
+ "name": "vs/workbench/contrib/markers",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/performance",
+ "name": "vs/workbench/contrib/localizations",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/preferences",
+ "name": "vs/workbench/contrib/logs",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/quickopen",
+ "name": "vs/workbench/contrib/output",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/relauncher",
+ "name": "vs/workbench/contrib/performance",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/scm",
+ "name": "vs/workbench/contrib/preferences",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/search",
+ "name": "vs/workbench/contrib/quickopen",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/snippets",
+ "name": "vs/workbench/contrib/remote",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/stats",
+ "name": "vs/workbench/contrib/relauncher",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/surveys",
+ "name": "vs/workbench/contrib/scm",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/tasks",
+ "name": "vs/workbench/contrib/search",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/terminal",
+ "name": "vs/workbench/contrib/snippets",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/themes",
+ "name": "vs/workbench/contrib/format",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/trust",
+ "name": "vs/workbench/contrib/stats",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/update",
+ "name": "vs/workbench/contrib/surveys",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/url",
+ "name": "vs/workbench/contrib/tasks",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/watermark",
+ "name": "vs/workbench/contrib/terminal",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/webview",
+ "name": "vs/workbench/contrib/themes",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/welcome",
+ "name": "vs/workbench/contrib/trust",
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/parts/outline",
+ "name": "vs/workbench/contrib/update",
+ "project": "vscode-workbench"
+ },
+ {
+ "name": "vs/workbench/contrib/url",
+ "project": "vscode-workbench"
+ },
+ {
+ "name": "vs/workbench/contrib/watermark",
+ "project": "vscode-workbench"
+ },
+ {
+ "name": "vs/workbench/contrib/webview",
+ "project": "vscode-workbench"
+ },
+ {
+ "name": "vs/workbench/contrib/welcome",
+ "project": "vscode-workbench"
+ },
+ {
+ "name": "vs/workbench/contrib/outline",
"project": "vscode-workbench"
},
{
@@ -195,13 +215,17 @@
"project": "vscode-workbench"
},
{
- "name": "vs/workbench/services/jsonschemas",
+ "name": "vs/workbench/services/extensionManagement",
"project": "vscode-workbench"
},
{
"name": "vs/workbench/services/files",
"project": "vscode-workbench"
},
+ {
+ "name": "vs/workbench/services/integrity",
+ "project": "vscode-workbench"
+ },
{
"name": "vs/workbench/services/keybinding",
"project": "vscode-workbench"
@@ -238,6 +262,10 @@
"name": "vs/workbench/services/decorations",
"project": "vscode-workbench"
},
+ {
+ "name": "vs/workbench/services/label",
+ "project": "vscode-workbench"
+ },
{
"name": "vs/workbench/services/preferences",
"project": "vscode-preferences"
diff --git a/build/lib/i18n.ts b/build/lib/i18n.ts
index 81ba0c0939e..9f53df17bad 100644
--- a/build/lib/i18n.ts
+++ b/build/lib/i18n.ts
@@ -13,19 +13,19 @@ import * as xml2js from 'xml2js';
import * as glob from 'glob';
import * as https from 'https';
import * as gulp from 'gulp';
-
-import * as util from 'gulp-util';
+import * as fancyLog from 'fancy-log';
+import * as ansiColors from 'ansi-colors';
import * as iconv from 'iconv-lite';
const NUMBER_OF_CONCURRENT_DOWNLOADS = 4;
function log(message: any, ...rest: any[]): void {
- util.log(util.colors.green('[i18n]'), message, ...rest);
+ fancyLog(ansiColors.green('[i18n]'), message, ...rest);
}
export interface Language {
- id: string; // laguage id, e.g. zh-tw, de
- transifexId?: string; // language id used in transifex, e.g zh-hant, de (optional, if not set, the id is used)
+ id: string; // language id, e.g. zh-tw, de
+ translationId?: string; // language id used in translation tools, e.g. zh-hant, de (optional, if not set, the id is used)
folderName?: string; // language specific folder name, e.g. cht, deu (optional, if not set, the id is used)
}
@@ -38,8 +38,8 @@ export interface InnoSetup {
}
export const defaultLanguages: Language[] = [
- { id: 'zh-tw', folderName: 'cht', transifexId: 'zh-hant' },
- { id: 'zh-cn', folderName: 'chs', transifexId: 'zh-hans' },
+ { id: 'zh-tw', folderName: 'cht', translationId: 'zh-hant' },
+ { id: 'zh-cn', folderName: 'chs', translationId: 'zh-hans' },
{ id: 'ja', folderName: 'jpn' },
{ id: 'ko', folderName: 'kor' },
{ id: 'de', folderName: 'deu' },
@@ -144,6 +144,15 @@ interface BundledExtensionFormat {
};
}
+interface I18nFormat {
+ version: string;
+ contents: {
+ [module: string]: {
+ [messageKey: string]: string;
+ };
+ };
+}
+
export class Line {
private buffer: string[] = [];
@@ -486,7 +495,11 @@ function processCoreBundleFormat(fileHeader: string, languages: Language[], json
});
});
- let languageDirectory = path.join(__dirname, '..', '..', 'i18n');
+ let languageDirectory = path.join(__dirname, '..', '..', '..', 'vscode-loc', 'i18n');
+ if (!fs.existsSync(languageDirectory)) {
+ log(`No VS Code localization repository found. Looking at ${languageDirectory}`);
+ log(`To bundle translations please check out the vscode-loc repository as a sibling of the vscode repository.`);
+ }
let sortedLanguages = sortLanguages(languages);
sortedLanguages.forEach((language) => {
if (process.env['VSCODE_BUILD_VERBOSE']) {
@@ -495,21 +508,25 @@ function processCoreBundleFormat(fileHeader: string, languages: Language[], json
statistics[language.id] = 0;
let localizedModules: Map = Object.create(null);
- let languageFolderName = language.folderName || language.id;
- let cwd = path.join(languageDirectory, languageFolderName, 'src');
+ let languageFolderName = language.translationId || language.id;
+ let i18nFile = path.join(languageDirectory, `vscode-language-pack-${languageFolderName}`, 'translations', 'main.i18n.json');
+ let allMessages: I18nFormat | undefined;
+ if (fs.existsSync(i18nFile)) {
+ let content = stripComments(fs.readFileSync(i18nFile, 'utf8'));
+ allMessages = JSON.parse(content);
+ }
modules.forEach((module) => {
let order = keysSection[module];
- let i18nFile = path.join(cwd, module) + '.i18n.json';
- let messages: Map | null = null;
- if (fs.existsSync(i18nFile)) {
- let content = stripComments(fs.readFileSync(i18nFile, 'utf8'));
- messages = JSON.parse(content);
- } else {
+ let moduleMessage: { [messageKey: string]: string } | undefined;
+ if (allMessages) {
+ moduleMessage = allMessages.contents[module];
+ }
+ if (!moduleMessage) {
if (process.env['VSCODE_BUILD_VERBOSE']) {
log(`No localized messages found for module ${module}. Using default messages.`);
}
- messages = defaultMessages[module];
- statistics[language.id] = statistics[language.id] + Object.keys(messages).length;
+ moduleMessage = defaultMessages[module];
+ statistics[language.id] = statistics[language.id] + Object.keys(moduleMessage).length;
}
let localizedMessages: string[] = [];
order.forEach((keyInfo) => {
@@ -519,7 +536,7 @@ function processCoreBundleFormat(fileHeader: string, languages: Language[], json
} else {
key = keyInfo.key;
}
- let message: string = messages![key];
+ let message: string = moduleMessage![key];
if (!message) {
if (process.env['VSCODE_BUILD_VERBOSE']) {
log(`No localized message found for key ${key} in module ${module}. Using default message.`);
@@ -602,7 +619,7 @@ export function getResource(sourceFile: string): Resource {
return { name: 'vs/base', project: editorProject };
} else if (/^vs\/code/.test(sourceFile)) {
return { name: 'vs/code', project: workbenchProject };
- } else if (/^vs\/workbench\/parts/.test(sourceFile)) {
+ } else if (/^vs\/workbench\/contrib/.test(sourceFile)) {
resource = sourceFile.split('/', 4).join('/');
return { name: resource, project: workbenchProject };
} else if (/^vs\/workbench\/services/.test(sourceFile)) {
@@ -684,7 +701,7 @@ export function createXlfFilesForExtensions(): ThroughStream {
}
return _xlf;
}
- gulp.src([`./extensions/${extensionName}/package.nls.json`, `./extensions/${extensionName}/**/nls.metadata.json`]).pipe(through(function (file: File) {
+ gulp.src([`./extensions/${extensionName}/package.nls.json`, `./extensions/${extensionName}/**/nls.metadata.json`], { allowEmpty: true }).pipe(through(function (file: File) {
if (file.isBuffer()) {
const buffer: Buffer = file.contents as Buffer;
const basename = path.basename(file.path);
@@ -1085,7 +1102,7 @@ function retrieveResource(language: Language, resource: Resource, apiHostname: s
return limiter.queue(() => new Promise((resolve, reject) => {
const slug = resource.name.replace(/\//g, '_');
const project = resource.project;
- let transifexLanguageId = language.id === 'ps' ? 'en' : language.transifexId || language.id;
+ let transifexLanguageId = language.id === 'ps' ? 'en' : language.translationId || language.id;
const options = {
hostname: apiHostname,
path: `/api/2/project/${project}/resource/${slug}/translation/${transifexLanguageId}?file&mode=onlyreviewed`,
@@ -1186,7 +1203,7 @@ export function prepareI18nPackFiles(externalExtensions: Map, resultingT
let extensionsPacks: Map = {};
let errors: any[] = [];
return through(function (this: ThroughStream, xlf: File) {
- let project = path.dirname(xlf.relative);
+ let project = path.basename(path.dirname(xlf.relative));
let resource = path.basename(xlf.relative, '.xlf');
let contents = xlf.contents.toString();
let parsePromise = pseudo ? XLF.parsePseudo(contents) : XLF.parse(contents);
@@ -1353,4 +1370,4 @@ function decodeEntities(value: string): string {
function pseudify(message: string) {
return '\uFF3B' + message.replace(/[aouei]/g, '$&$&') + '\uFF3D';
-}
\ No newline at end of file
+}
diff --git a/build/lib/node.js b/build/lib/node.js
new file mode 100644
index 00000000000..403ae3d9657
--- /dev/null
+++ b/build/lib/node.js
@@ -0,0 +1,15 @@
+"use strict";
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+Object.defineProperty(exports, "__esModule", { value: true });
+const path = require("path");
+const fs = require("fs");
+const root = path.dirname(path.dirname(__dirname));
+const yarnrcPath = path.join(root, 'remote', '.yarnrc');
+const yarnrc = fs.readFileSync(yarnrcPath, 'utf8');
+const version = /^target\s+"([^"]+)"$/m.exec(yarnrc)[1];
+const node = process.platform === 'win32' ? 'node.exe' : 'node';
+const nodePath = path.join(root, '.build', 'node', `v${version}`, `${process.platform}-${process.arch}`, node);
+console.log(nodePath);
diff --git a/build/lib/node.ts b/build/lib/node.ts
new file mode 100644
index 00000000000..64397034461
--- /dev/null
+++ b/build/lib/node.ts
@@ -0,0 +1,16 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as path from 'path';
+import * as fs from 'fs';
+
+const root = path.dirname(path.dirname(__dirname));
+const yarnrcPath = path.join(root, 'remote', '.yarnrc');
+const yarnrc = fs.readFileSync(yarnrcPath, 'utf8');
+const version = /^target\s+"([^"]+)"$/m.exec(yarnrc)![1];
+const node = process.platform === 'win32' ? 'node.exe' : 'node';
+const nodePath = path.join(root, '.build', 'node', `v${version}`, `${process.platform}-${process.arch}`, node);
+
+console.log(nodePath);
\ No newline at end of file
diff --git a/build/lib/optimize.js b/build/lib/optimize.js
index 07cdebe30ee..2b59d926838 100644
--- a/build/lib/optimize.js
+++ b/build/lib/optimize.js
@@ -13,7 +13,8 @@ const flatmap = require("gulp-flatmap");
const sourcemaps = require("gulp-sourcemaps");
const uglify = require("gulp-uglify");
const composer = require("gulp-uglify/composer");
-const gulpUtil = require("gulp-util");
+const fancyLog = require("fancy-log");
+const ansiColors = require("ansi-colors");
const path = require("path");
const pump = require("pump");
const uglifyes = require("uglify-es");
@@ -24,7 +25,7 @@ const stats_1 = require("./stats");
const util = require("./util");
const REPO_ROOT_PATH = path.join(__dirname, '../..');
function log(prefix, message) {
- gulpUtil.log(gulpUtil.colors.cyan('[' + prefix + ']'), message);
+ fancyLog(ansiColors.cyan('[' + prefix + ']'), message);
}
function loaderConfig(emptyPaths) {
const result = {
@@ -110,13 +111,17 @@ function toBundleStream(src, bundledFileHeader, bundles) {
return toConcatStream(src, bundledFileHeader, bundle.sources, bundle.dest);
}));
}
+const DEFAULT_FILE_HEADER = [
+ '/*!--------------------------------------------------------',
+ ' * Copyright (C) Microsoft Corporation. All rights reserved.',
+ ' *--------------------------------------------------------*/'
+].join('\n');
function optimizeTask(opts) {
const src = opts.src;
const entryPoints = opts.entryPoints;
- const otherSources = opts.otherSources;
const resources = opts.resources;
const loaderConfig = opts.loaderConfig;
- const bundledFileHeader = opts.header;
+ const bundledFileHeader = opts.header || DEFAULT_FILE_HEADER;
const bundleLoader = (typeof opts.bundleLoader === 'undefined' ? true : opts.bundleLoader);
const out = opts.out;
return function () {
@@ -136,7 +141,7 @@ function optimizeTask(opts) {
}
filteredResources.push('!' + resource);
});
- gulp.src(filteredResources, { base: `${src}` }).pipe(resourcesStream);
+ gulp.src(filteredResources, { base: `${src}`, allowEmpty: true }).pipe(resourcesStream);
const bundleInfoArray = [];
if (opts.bundleInfo) {
bundleInfoArray.push(new VinylFile({
@@ -147,20 +152,7 @@ function optimizeTask(opts) {
}
es.readArray(bundleInfoArray).pipe(bundleInfoStream);
});
- const otherSourcesStream = es.through();
- const otherSourcesStreamArr = [];
- gulp.src(otherSources, { base: `${src}` })
- .pipe(es.through(function (data) {
- otherSourcesStreamArr.push(toConcatStream(src, bundledFileHeader, [data], data.relative));
- }, function () {
- if (!otherSourcesStreamArr.length) {
- setTimeout(function () { otherSourcesStream.emit('end'); }, 0);
- }
- else {
- es.merge(otherSourcesStreamArr).pipe(otherSourcesStream);
- }
- }));
- const result = es.merge(loader(src, bundledFileHeader, bundleLoader), bundlesStream, otherSourcesStream, resourcesStream, bundleInfoStream);
+ const result = es.merge(loader(src, bundledFileHeader, bundleLoader), bundlesStream, resourcesStream, bundleInfoStream);
return result
.pipe(sourcemaps.write('./', {
sourceRoot: undefined,
@@ -223,7 +215,12 @@ function minifyTask(src, sourceMapBaseUrl) {
return cb => {
const jsFilter = filter('**/*.js', { restore: true });
const cssFilter = filter('**/*.css', { restore: true });
- pump(gulp.src([src + '/**', '!' + src + '/**/*.map']), jsFilter, sourcemaps.init({ loadMaps: true }), uglifyWithCopyrights(), jsFilter.restore, cssFilter, minifyCSS({ reduceIdents: false }), cssFilter.restore, sourcemaps.write('./', {
+ pump(gulp.src([src + '/**', '!' + src + '/**/*.map']), jsFilter, sourcemaps.init({ loadMaps: true }), uglifyWithCopyrights(), jsFilter.restore, cssFilter, minifyCSS({ reduceIdents: false }), cssFilter.restore, sourcemaps.mapSources((sourcePath) => {
+ if (sourcePath === 'bootstrap-fork.js') {
+ return 'bootstrap-fork.orig.js';
+ }
+ return sourcePath;
+ }), sourcemaps.write('./', {
sourceMappingURL,
sourceRoot: undefined,
includeContent: true,
diff --git a/build/lib/optimize.ts b/build/lib/optimize.ts
index 85d15b23543..6bf1233c303 100644
--- a/build/lib/optimize.ts
+++ b/build/lib/optimize.ts
@@ -14,7 +14,8 @@ import * as flatmap from 'gulp-flatmap';
import * as sourcemaps from 'gulp-sourcemaps';
import * as uglify from 'gulp-uglify';
import * as composer from 'gulp-uglify/composer';
-import * as gulpUtil from 'gulp-util';
+import * as fancyLog from 'fancy-log';
+import * as ansiColors from 'ansi-colors';
import * as path from 'path';
import * as pump from 'pump';
import * as sm from 'source-map';
@@ -28,7 +29,7 @@ import * as util from './util';
const REPO_ROOT_PATH = path.join(__dirname, '../..');
function log(prefix: string, message: string): void {
- gulpUtil.log(gulpUtil.colors.cyan('[' + prefix + ']'), message);
+ fancyLog(ansiColors.cyan('[' + prefix + ']'), message);
}
export function loaderConfig(emptyPaths?: string[]) {
@@ -141,10 +142,6 @@ export interface IOptimizeTaskOpts {
* (for AMD files, will get bundled and get Copyright treatment)
*/
entryPoints: bundle.IEntryPoint[];
- /**
- * (for non-AMD files that should get Copyright treatment)
- */
- otherSources: string[];
/**
* (svg, etc.)
*/
@@ -157,7 +154,7 @@ export interface IOptimizeTaskOpts {
/**
* (basically the Copyright treatment)
*/
- header: string;
+ header?: string;
/**
* (emit bundleInfo.json file)
*/
@@ -172,13 +169,18 @@ export interface IOptimizeTaskOpts {
languages?: Language[];
}
+const DEFAULT_FILE_HEADER = [
+ '/*!--------------------------------------------------------',
+ ' * Copyright (C) Microsoft Corporation. All rights reserved.',
+ ' *--------------------------------------------------------*/'
+].join('\n');
+
export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStream {
const src = opts.src;
const entryPoints = opts.entryPoints;
- const otherSources = opts.otherSources;
const resources = opts.resources;
const loaderConfig = opts.loaderConfig;
- const bundledFileHeader = opts.header;
+ const bundledFileHeader = opts.header || DEFAULT_FILE_HEADER;
const bundleLoader = (typeof opts.bundleLoader === 'undefined' ? true : opts.bundleLoader);
const out = opts.out;
@@ -200,7 +202,7 @@ export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStr
}
filteredResources.push('!' + resource);
});
- gulp.src(filteredResources, { base: `${src}` }).pipe(resourcesStream);
+ gulp.src(filteredResources, { base: `${src}`, allowEmpty: true }).pipe(resourcesStream);
const bundleInfoArray: VinylFile[] = [];
if (opts.bundleInfo) {
@@ -213,24 +215,9 @@ export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStr
es.readArray(bundleInfoArray).pipe(bundleInfoStream);
});
- const otherSourcesStream = es.through();
- const otherSourcesStreamArr: NodeJS.ReadWriteStream[] = [];
-
- gulp.src(otherSources, { base: `${src}` })
- .pipe(es.through(function (data) {
- otherSourcesStreamArr.push(toConcatStream(src, bundledFileHeader, [data], data.relative));
- }, function () {
- if (!otherSourcesStreamArr.length) {
- setTimeout(function () { otherSourcesStream.emit('end'); }, 0);
- } else {
- es.merge(otherSourcesStreamArr).pipe(otherSourcesStream);
- }
- }));
-
const result = es.merge(
loader(src, bundledFileHeader, bundleLoader),
bundlesStream,
- otherSourcesStream,
resourcesStream,
bundleInfoStream
);
@@ -317,6 +304,13 @@ export function minifyTask(src: string, sourceMapBaseUrl?: string): (cb: any) =>
cssFilter,
minifyCSS({ reduceIdents: false }),
cssFilter.restore,
+ (sourcemaps).mapSources((sourcePath: string) => {
+ if (sourcePath === 'bootstrap-fork.js') {
+ return 'bootstrap-fork.orig.js';
+ }
+
+ return sourcePath;
+ }),
sourcemaps.write('./', {
sourceMappingURL,
sourceRoot: undefined,
diff --git a/build/lib/reporter.js b/build/lib/reporter.js
index 598aabec244..e0461dc6d9d 100644
--- a/build/lib/reporter.js
+++ b/build/lib/reporter.js
@@ -6,7 +6,8 @@
Object.defineProperty(exports, "__esModule", { value: true });
const es = require("event-stream");
const _ = require("underscore");
-const util = require("gulp-util");
+const fancyLog = require("fancy-log");
+const ansiColors = require("ansi-colors");
const fs = require("fs");
const path = require("path");
const allErrors = [];
@@ -17,7 +18,7 @@ function onStart() {
return;
}
startTime = new Date().getTime();
- util.log(`Starting ${util.colors.green('compilation')}...`);
+ fancyLog(`Starting ${ansiColors.green('compilation')}...`);
}
function onEnd() {
if (--count > 0) {
@@ -38,7 +39,7 @@ function log() {
errors.map(err => {
if (!seen.has(err)) {
seen.add(err);
- util.log(`${util.colors.red('Error')}: ${err}`);
+ fancyLog(`${ansiColors.red('Error')}: ${err}`);
}
});
const regex = /^([^(]+)\((\d+),(\d+)\): (.*)$/;
@@ -53,7 +54,7 @@ function log() {
catch (err) {
//noop
}
- util.log(`Finished ${util.colors.green('compilation')} with ${errors.length} errors after ${util.colors.magenta((new Date().getTime() - startTime) + ' ms')}`);
+ fancyLog(`Finished ${ansiColors.green('compilation')} with ${errors.length} errors after ${ansiColors.magenta((new Date().getTime() - startTime) + ' ms')}`);
}
function createReporter() {
const errors = [];
diff --git a/build/lib/reporter.ts b/build/lib/reporter.ts
index 68e037e9224..ec908817518 100644
--- a/build/lib/reporter.ts
+++ b/build/lib/reporter.ts
@@ -7,7 +7,8 @@
import * as es from 'event-stream';
import * as _ from 'underscore';
-import * as util from 'gulp-util';
+import * as fancyLog from 'fancy-log';
+import * as ansiColors from 'ansi-colors';
import * as fs from 'fs';
import * as path from 'path';
@@ -21,7 +22,7 @@ function onStart(): void {
}
startTime = new Date().getTime();
- util.log(`Starting ${util.colors.green('compilation')}...`);
+ fancyLog(`Starting ${ansiColors.green('compilation')}...`);
}
function onEnd(): void {
@@ -47,7 +48,7 @@ function log(): void {
errors.map(err => {
if (!seen.has(err)) {
seen.add(err);
- util.log(`${util.colors.red('Error')}: ${err}`);
+ fancyLog(`${ansiColors.red('Error')}: ${err}`);
}
});
@@ -65,7 +66,7 @@ function log(): void {
//noop
}
- util.log(`Finished ${util.colors.green('compilation')} with ${errors.length} errors after ${util.colors.magenta((new Date().getTime() - startTime!) + ' ms')}`);
+ fancyLog(`Finished ${ansiColors.green('compilation')} with ${errors.length} errors after ${ansiColors.magenta((new Date().getTime() - startTime!) + ' ms')}`);
}
export interface IReporter {
diff --git a/build/lib/standalone.js b/build/lib/standalone.js
index cf921e7401c..7e363da0948 100644
--- a/build/lib/standalone.js
+++ b/build/lib/standalone.js
@@ -27,23 +27,23 @@ function writeFile(filePath, contents) {
fs.writeFileSync(filePath, contents);
}
function extractEditor(options) {
- const tsConfig = JSON.parse(fs.readFileSync(path.join(options.sourcesRoot, 'tsconfig.json')).toString());
+ const tsConfig = JSON.parse(fs.readFileSync(path.join(options.sourcesRoot, 'tsconfig.monaco.json')).toString());
let compilerOptions;
if (tsConfig.extends) {
compilerOptions = Object.assign({}, require(path.join(options.sourcesRoot, tsConfig.extends)).compilerOptions, tsConfig.compilerOptions);
+ delete tsConfig.extends;
}
else {
compilerOptions = tsConfig.compilerOptions;
}
tsConfig.compilerOptions = compilerOptions;
+ compilerOptions.noEmit = false;
compilerOptions.noUnusedLocals = false;
compilerOptions.preserveConstEnums = false;
compilerOptions.declaration = false;
compilerOptions.moduleResolution = ts.ModuleResolutionKind.Classic;
- delete compilerOptions.types;
- delete tsConfig.extends;
- tsConfig.exclude = [];
options.compilerOptions = compilerOptions;
+ console.log(`Running with shakeLevel ${tss.toStringShakeLevel(options.shakeLevel)}`);
let result = tss.shake(options);
for (let fileName in result) {
if (result.hasOwnProperty(fileName)) {
diff --git a/build/lib/standalone.ts b/build/lib/standalone.ts
index b7b0fee295f..6a4cdbf7718 100644
--- a/build/lib/standalone.ts
+++ b/build/lib/standalone.ts
@@ -31,26 +31,27 @@ function writeFile(filePath: string, contents: Buffer | string): void {
}
export function extractEditor(options: tss.ITreeShakingOptions & { destRoot: string }): void {
- const tsConfig = JSON.parse(fs.readFileSync(path.join(options.sourcesRoot, 'tsconfig.json')).toString());
+ const tsConfig = JSON.parse(fs.readFileSync(path.join(options.sourcesRoot, 'tsconfig.monaco.json')).toString());
let compilerOptions: { [key: string]: any };
if (tsConfig.extends) {
compilerOptions = Object.assign({}, require(path.join(options.sourcesRoot, tsConfig.extends)).compilerOptions, tsConfig.compilerOptions);
+ delete tsConfig.extends;
} else {
compilerOptions = tsConfig.compilerOptions;
}
tsConfig.compilerOptions = compilerOptions;
+ compilerOptions.noEmit = false;
compilerOptions.noUnusedLocals = false;
compilerOptions.preserveConstEnums = false;
compilerOptions.declaration = false;
compilerOptions.moduleResolution = ts.ModuleResolutionKind.Classic;
- delete compilerOptions.types;
- delete tsConfig.extends;
- tsConfig.exclude = [];
options.compilerOptions = compilerOptions;
+ console.log(`Running with shakeLevel ${tss.toStringShakeLevel(options.shakeLevel)}`);
+
let result = tss.shake(options);
for (let fileName in result) {
if (result.hasOwnProperty(fileName)) {
diff --git a/build/lib/stats.js b/build/lib/stats.js
index c08cd57b3bc..99ad665f223 100644
--- a/build/lib/stats.js
+++ b/build/lib/stats.js
@@ -5,7 +5,8 @@
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const es = require("event-stream");
-const util = require("gulp-util");
+const fancyLog = require("fancy-log");
+const ansiColors = require("ansi-colors");
const appInsights = require("applicationinsights");
class Entry {
constructor(name, totalCount, totalSize) {
@@ -24,13 +25,13 @@ class Entry {
}
else {
if (this.totalCount === 1) {
- return `Stats for '${util.colors.grey(this.name)}': ${Math.round(this.totalSize / 1204)}KB`;
+ return `Stats for '${ansiColors.grey(this.name)}': ${Math.round(this.totalSize / 1204)}KB`;
}
else {
const count = this.totalCount < 100
- ? util.colors.green(this.totalCount.toString())
- : util.colors.red(this.totalCount.toString());
- return `Stats for '${util.colors.grey(this.name)}': ${count} files, ${Math.round(this.totalSize / 1204)}KB`;
+ ? ansiColors.green(this.totalCount.toString())
+ : ansiColors.red(this.totalCount.toString());
+ return `Stats for '${ansiColors.grey(this.name)}': ${count} files, ${Math.round(this.totalSize / 1204)}KB`;
}
}
}
@@ -57,13 +58,13 @@ function createStatsStream(group, log) {
}, function () {
if (log) {
if (entry.totalCount === 1) {
- util.log(`Stats for '${util.colors.grey(entry.name)}': ${Math.round(entry.totalSize / 1204)}KB`);
+ fancyLog(`Stats for '${ansiColors.grey(entry.name)}': ${Math.round(entry.totalSize / 1204)}KB`);
}
else {
const count = entry.totalCount < 100
- ? util.colors.green(entry.totalCount.toString())
- : util.colors.red(entry.totalCount.toString());
- util.log(`Stats for '${util.colors.grey(entry.name)}': ${count} files, ${Math.round(entry.totalSize / 1204)}KB`);
+ ? ansiColors.green(entry.totalCount.toString())
+ : ansiColors.red(entry.totalCount.toString());
+ fancyLog(`Stats for '${ansiColors.grey(entry.name)}': ${count} files, ${Math.round(entry.totalSize / 1204)}KB`);
}
}
this.emit('end');
diff --git a/build/lib/stats.ts b/build/lib/stats.ts
index 7f5548dc1c4..a94b1c9ae1a 100644
--- a/build/lib/stats.ts
+++ b/build/lib/stats.ts
@@ -6,7 +6,8 @@
'use strict';
import * as es from 'event-stream';
-import * as util from 'gulp-util';
+import * as fancyLog from 'fancy-log';
+import * as ansiColors from 'ansi-colors';
import * as File from 'vinyl';
import * as appInsights from 'applicationinsights';
@@ -22,14 +23,14 @@ class Entry {
}
} else {
if (this.totalCount === 1) {
- return `Stats for '${util.colors.grey(this.name)}': ${Math.round(this.totalSize / 1204)}KB`;
+ return `Stats for '${ansiColors.grey(this.name)}': ${Math.round(this.totalSize / 1204)}KB`;
} else {
const count = this.totalCount < 100
- ? util.colors.green(this.totalCount.toString())
- : util.colors.red(this.totalCount.toString());
+ ? ansiColors.green(this.totalCount.toString())
+ : ansiColors.red(this.totalCount.toString());
- return `Stats for '${util.colors.grey(this.name)}': ${count} files, ${Math.round(this.totalSize / 1204)}KB`;
+ return `Stats for '${ansiColors.grey(this.name)}': ${count} files, ${Math.round(this.totalSize / 1204)}KB`;
}
}
}
@@ -58,14 +59,14 @@ export function createStatsStream(group: string, log?: boolean): es.ThroughStrea
}, function () {
if (log) {
if (entry.totalCount === 1) {
- util.log(`Stats for '${util.colors.grey(entry.name)}': ${Math.round(entry.totalSize / 1204)}KB`);
+ fancyLog(`Stats for '${ansiColors.grey(entry.name)}': ${Math.round(entry.totalSize / 1204)}KB`);
} else {
const count = entry.totalCount < 100
- ? util.colors.green(entry.totalCount.toString())
- : util.colors.red(entry.totalCount.toString());
+ ? ansiColors.green(entry.totalCount.toString())
+ : ansiColors.red(entry.totalCount.toString());
- util.log(`Stats for '${util.colors.grey(entry.name)}': ${count} files, ${Math.round(entry.totalSize / 1204)}KB`);
+ fancyLog(`Stats for '${ansiColors.grey(entry.name)}': ${count} files, ${Math.round(entry.totalSize / 1204)}KB`);
}
}
diff --git a/build/lib/task.js b/build/lib/task.js
new file mode 100644
index 00000000000..f1e6e3f6245
--- /dev/null
+++ b/build/lib/task.js
@@ -0,0 +1,96 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+'use strict';
+Object.defineProperty(exports, "__esModule", { value: true });
+const fancyLog = require("fancy-log");
+const ansiColors = require("ansi-colors");
+function _isPromise(p) {
+ if (typeof p.then === 'function') {
+ return true;
+ }
+ return false;
+}
+function _renderTime(time) {
+ return `${Math.round(time)} ms`;
+}
+async function _execute(task) {
+ const name = task.taskName || task.displayName || ``;
+ if (!task._tasks) {
+ fancyLog('Starting', ansiColors.cyan(name), '...');
+ }
+ const startTime = process.hrtime();
+ await _doExecute(task);
+ const elapsedArr = process.hrtime(startTime);
+ const elapsedNanoseconds = (elapsedArr[0] * 1e9 + elapsedArr[1]);
+ if (!task._tasks) {
+ fancyLog(`Finished`, ansiColors.cyan(name), 'after', ansiColors.magenta(_renderTime(elapsedNanoseconds / 1e6)));
+ }
+}
+async function _doExecute(task) {
+ // Always invoke as if it were a callback task
+ return new Promise((resolve, reject) => {
+ if (task.length === 1) {
+ // this is a callback task
+ task((err) => {
+ if (err) {
+ return reject(err);
+ }
+ resolve();
+ });
+ return;
+ }
+ const taskResult = task();
+ if (typeof taskResult === 'undefined') {
+ // this is a sync task
+ resolve();
+ return;
+ }
+ if (_isPromise(taskResult)) {
+ // this is a promise returning task
+ taskResult.then(resolve, reject);
+ return;
+ }
+ // this is a stream returning task
+ taskResult.on('end', _ => resolve());
+ taskResult.on('error', err => reject(err));
+ });
+}
+function series(...tasks) {
+ const result = async () => {
+ for (let i = 0; i < tasks.length; i++) {
+ await _execute(tasks[i]);
+ }
+ };
+ result._tasks = tasks;
+ return result;
+}
+exports.series = series;
+function parallel(...tasks) {
+ const result = async () => {
+ await Promise.all(tasks.map(t => _execute(t)));
+ };
+ result._tasks = tasks;
+ return result;
+}
+exports.parallel = parallel;
+function define(name, task) {
+ if (task._tasks) {
+ // This is a composite task
+ const lastTask = task._tasks[task._tasks.length - 1];
+ if (lastTask._tasks || lastTask.taskName) {
+ // This is a composite task without a real task function
+ // => generate a fake task function
+ return define(name, series(task, () => Promise.resolve()));
+ }
+ lastTask.taskName = name;
+ task.displayName = name;
+ return task;
+ }
+ // This is a simple task
+ task.taskName = name;
+ task.displayName = name;
+ return task;
+}
+exports.define = define;
diff --git a/build/lib/task.ts b/build/lib/task.ts
new file mode 100644
index 00000000000..4e571ec9294
--- /dev/null
+++ b/build/lib/task.ts
@@ -0,0 +1,125 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+import * as fancyLog from 'fancy-log';
+import * as ansiColors from 'ansi-colors';
+
+export interface BaseTask {
+ displayName?: string;
+ taskName?: string;
+ _tasks?: Task[];
+}
+export interface PromiseTask extends BaseTask {
+ (): Promise;
+}
+export interface StreamTask extends BaseTask {
+ (): NodeJS.ReadWriteStream;
+}
+export interface CallbackTask extends BaseTask {
+ (cb?: (err?: any) => void): void;
+}
+
+export type Task = PromiseTask | StreamTask | CallbackTask;
+
+function _isPromise(p: Promise | NodeJS.ReadWriteStream): p is Promise {
+ if (typeof (p).then === 'function') {
+ return true;
+ }
+ return false;
+}
+
+function _renderTime(time: number): string {
+ return `${Math.round(time)} ms`;
+}
+
+async function _execute(task: Task): Promise {
+ const name = task.taskName || task.displayName || ``;
+ if (!task._tasks) {
+ fancyLog('Starting', ansiColors.cyan(name), '...');
+ }
+ const startTime = process.hrtime();
+ await _doExecute(task);
+ const elapsedArr = process.hrtime(startTime);
+ const elapsedNanoseconds = (elapsedArr[0] * 1e9 + elapsedArr[1]);
+ if (!task._tasks) {
+ fancyLog(`Finished`, ansiColors.cyan(name), 'after', ansiColors.magenta(_renderTime(elapsedNanoseconds / 1e6)));
+ }
+}
+
+async function _doExecute(task: Task): Promise {
+ // Always invoke as if it were a callback task
+ return new Promise((resolve, reject) => {
+ if (task.length === 1) {
+ // this is a callback task
+ task((err) => {
+ if (err) {
+ return reject(err);
+ }
+ resolve();
+ });
+ return;
+ }
+
+ const taskResult = task();
+
+ if (typeof taskResult === 'undefined') {
+ // this is a sync task
+ resolve();
+ return;
+ }
+
+ if (_isPromise(taskResult)) {
+ // this is a promise returning task
+ taskResult.then(resolve, reject);
+ return;
+ }
+
+ // this is a stream returning task
+ taskResult.on('end', _ => resolve());
+ taskResult.on('error', err => reject(err));
+ });
+}
+
+export function series(...tasks: Task[]): PromiseTask {
+ const result = async () => {
+ for (let i = 0; i < tasks.length; i++) {
+ await _execute(tasks[i]);
+ }
+ };
+ result._tasks = tasks;
+ return result;
+}
+
+export function parallel(...tasks: Task[]): PromiseTask {
+ const result = async () => {
+ await Promise.all(tasks.map(t => _execute(t)));
+ };
+ result._tasks = tasks;
+ return result;
+}
+
+export function define(name: string, task: Task): Task {
+ if (task._tasks) {
+ // This is a composite task
+ const lastTask = task._tasks[task._tasks.length - 1];
+
+ if (lastTask._tasks || lastTask.taskName) {
+ // This is a composite task without a real task function
+ // => generate a fake task function
+ return define(name, series(task, () => Promise.resolve()));
+ }
+
+ lastTask.taskName = name;
+ task.displayName = name;
+ return task;
+ }
+
+ // This is a simple task
+ task.taskName = name;
+ task.displayName = name;
+ return task;
+}
diff --git a/build/lib/test/i18n.test.js b/build/lib/test/i18n.test.js
index 8044a5eb711..3dd104259fa 100644
--- a/build/lib/test/i18n.test.js
+++ b/build/lib/test/i18n.test.js
@@ -27,14 +27,14 @@ suite('XLF Parser Tests', () => {
});
test('JSON file source path to Transifex resource match', () => {
const editorProject = 'vscode-editor', workbenchProject = 'vscode-workbench';
- const platform = { name: 'vs/platform', project: editorProject }, editorContrib = { name: 'vs/editor/contrib', project: editorProject }, editor = { name: 'vs/editor', project: editorProject }, base = { name: 'vs/base', project: editorProject }, code = { name: 'vs/code', project: workbenchProject }, workbenchParts = { name: 'vs/workbench/parts/html', project: workbenchProject }, workbenchServices = { name: 'vs/workbench/services/files', project: workbenchProject }, workbench = { name: 'vs/workbench', project: workbenchProject };
+ const platform = { name: 'vs/platform', project: editorProject }, editorContrib = { name: 'vs/editor/contrib', project: editorProject }, editor = { name: 'vs/editor', project: editorProject }, base = { name: 'vs/base', project: editorProject }, code = { name: 'vs/code', project: workbenchProject }, workbenchParts = { name: 'vs/workbench/contrib/html', project: workbenchProject }, workbenchServices = { name: 'vs/workbench/services/textfile', project: workbenchProject }, workbench = { name: 'vs/workbench', project: workbenchProject };
assert.deepEqual(i18n.getResource('vs/platform/actions/browser/menusExtensionPoint'), platform);
assert.deepEqual(i18n.getResource('vs/editor/contrib/clipboard/browser/clipboard'), editorContrib);
assert.deepEqual(i18n.getResource('vs/editor/common/modes/modesRegistry'), editor);
assert.deepEqual(i18n.getResource('vs/base/common/errorMessage'), base);
assert.deepEqual(i18n.getResource('vs/code/electron-main/window'), code);
- assert.deepEqual(i18n.getResource('vs/workbench/parts/html/browser/webview'), workbenchParts);
- assert.deepEqual(i18n.getResource('vs/workbench/services/files/node/fileService'), workbenchServices);
+ assert.deepEqual(i18n.getResource('vs/workbench/contrib/html/browser/webview'), workbenchParts);
+ assert.deepEqual(i18n.getResource('vs/workbench/services/textfile/node/testFileService'), workbenchServices);
assert.deepEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
});
});
diff --git a/build/lib/test/i18n.test.ts b/build/lib/test/i18n.test.ts
index cfc1041974b..29a0f665799 100644
--- a/build/lib/test/i18n.test.ts
+++ b/build/lib/test/i18n.test.ts
@@ -38,8 +38,8 @@ suite('XLF Parser Tests', () => {
editor = { name: 'vs/editor', project: editorProject },
base = { name: 'vs/base', project: editorProject },
code = { name: 'vs/code', project: workbenchProject },
- workbenchParts = { name: 'vs/workbench/parts/html', project: workbenchProject },
- workbenchServices = { name: 'vs/workbench/services/files', project: workbenchProject },
+ workbenchParts = { name: 'vs/workbench/contrib/html', project: workbenchProject },
+ workbenchServices = { name: 'vs/workbench/services/textfile', project: workbenchProject },
workbench = { name: 'vs/workbench', project: workbenchProject};
assert.deepEqual(i18n.getResource('vs/platform/actions/browser/menusExtensionPoint'), platform);
@@ -47,8 +47,8 @@ suite('XLF Parser Tests', () => {
assert.deepEqual(i18n.getResource('vs/editor/common/modes/modesRegistry'), editor);
assert.deepEqual(i18n.getResource('vs/base/common/errorMessage'), base);
assert.deepEqual(i18n.getResource('vs/code/electron-main/window'), code);
- assert.deepEqual(i18n.getResource('vs/workbench/parts/html/browser/webview'), workbenchParts);
- assert.deepEqual(i18n.getResource('vs/workbench/services/files/node/fileService'), workbenchServices);
+ assert.deepEqual(i18n.getResource('vs/workbench/contrib/html/browser/webview'), workbenchParts);
+ assert.deepEqual(i18n.getResource('vs/workbench/services/textfile/node/testFileService'), workbenchServices);
assert.deepEqual(i18n.getResource('vs/workbench/browser/parts/panel/panelActions'), workbench);
});
});
\ No newline at end of file
diff --git a/build/lib/treeshaking.js b/build/lib/treeshaking.js
index da51ac19104..50ff7caa01d 100644
--- a/build/lib/treeshaking.js
+++ b/build/lib/treeshaking.js
@@ -14,6 +14,17 @@ var ShakeLevel;
ShakeLevel[ShakeLevel["InnerFile"] = 1] = "InnerFile";
ShakeLevel[ShakeLevel["ClassMembers"] = 2] = "ClassMembers";
})(ShakeLevel = exports.ShakeLevel || (exports.ShakeLevel = {}));
+function toStringShakeLevel(shakeLevel) {
+ switch (shakeLevel) {
+ case 0 /* Files */:
+ return 'Files (0)';
+ case 1 /* InnerFile */:
+ return 'InnerFile (1)';
+ case 2 /* ClassMembers */:
+ return 'ClassMembers (2)';
+ }
+}
+exports.toStringShakeLevel = toStringShakeLevel;
function printDiagnostics(diagnostics) {
for (const diag of diagnostics) {
let result = '';
@@ -394,6 +405,7 @@ function markNodes(languageService, options) {
|| memberName === 'toJSON'
|| memberName === 'toString'
|| memberName === 'dispose' // TODO: keeping all `dispose` methods
+ || /^_(.*)Brand$/.test(memberName || '') // TODO: keeping all members ending with `Brand`...
) {
enqueue_black(member);
}
@@ -513,10 +525,6 @@ function generateResult(languageService, shakeLevel) {
// keep method
continue;
}
- if (/^_(.*)Brand$/.test(member.name.getText())) {
- // TODO: keep all members ending with `Brand`...
- continue;
- }
let pos = member.pos - node.pos;
let end = member.end - node.pos;
toWrite = toWrite.substring(0, pos) + toWrite.substring(end);
diff --git a/build/lib/treeshaking.ts b/build/lib/treeshaking.ts
index 060808312e6..f0969633655 100644
--- a/build/lib/treeshaking.ts
+++ b/build/lib/treeshaking.ts
@@ -17,6 +17,17 @@ export const enum ShakeLevel {
ClassMembers = 2
}
+export function toStringShakeLevel(shakeLevel: ShakeLevel): string {
+ switch(shakeLevel) {
+ case ShakeLevel.Files:
+ return 'Files (0)';
+ case ShakeLevel.InnerFile:
+ return 'InnerFile (1)';
+ case ShakeLevel.ClassMembers:
+ return 'ClassMembers (2)';
+ }
+}
+
export interface ITreeShakingOptions {
/**
* The full path to the root where sources are.
@@ -513,6 +524,7 @@ function markNodes(languageService: ts.LanguageService, options: ITreeShakingOpt
|| memberName === 'toJSON'
|| memberName === 'toString'
|| memberName === 'dispose'// TODO: keeping all `dispose` methods
+ || /^_(.*)Brand$/.test(memberName || '') // TODO: keeping all members ending with `Brand`...
) {
enqueue_black(member);
}
@@ -642,10 +654,6 @@ function generateResult(languageService: ts.LanguageService, shakeLevel: ShakeLe
// keep method
continue;
}
- if (/^_(.*)Brand$/.test(member.name.getText())) {
- // TODO: keep all members ending with `Brand`...
- continue;
- }
let pos = member.pos - node.pos;
let end = member.end - node.pos;
diff --git a/build/lib/tslint/noNlsInStandaloneEditorRule.js b/build/lib/tslint/noNlsInStandaloneEditorRule.js
new file mode 100644
index 00000000000..affd4cc8370
--- /dev/null
+++ b/build/lib/tslint/noNlsInStandaloneEditorRule.js
@@ -0,0 +1,54 @@
+"use strict";
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+Object.defineProperty(exports, "__esModule", { value: true });
+const ts = require("typescript");
+const Lint = require("tslint");
+const path_1 = require("path");
+class Rule extends Lint.Rules.AbstractRule {
+ apply(sourceFile) {
+ if (/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(sourceFile.fileName)
+ || /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(sourceFile.fileName)
+ || /vs(\/|\\)editor(\/|\\)editor.api/.test(sourceFile.fileName)
+ || /vs(\/|\\)editor(\/|\\)editor.main/.test(sourceFile.fileName)
+ || /vs(\/|\\)editor(\/|\\)editor.worker/.test(sourceFile.fileName)) {
+ return this.applyWithWalker(new NoNlsInStandaloneEditorRuleWalker(sourceFile, this.getOptions()));
+ }
+ return [];
+ }
+}
+exports.Rule = Rule;
+class NoNlsInStandaloneEditorRuleWalker extends Lint.RuleWalker {
+ constructor(file, opts) {
+ super(file, opts);
+ }
+ visitImportEqualsDeclaration(node) {
+ if (node.moduleReference.kind === ts.SyntaxKind.ExternalModuleReference) {
+ this._validateImport(node.moduleReference.expression.getText(), node);
+ }
+ }
+ visitImportDeclaration(node) {
+ this._validateImport(node.moduleSpecifier.getText(), node);
+ }
+ visitCallExpression(node) {
+ super.visitCallExpression(node);
+ // import('foo') statements inside the code
+ if (node.expression.kind === ts.SyntaxKind.ImportKeyword) {
+ const [path] = node.arguments;
+ this._validateImport(path.getText(), node);
+ }
+ }
+ _validateImport(path, node) {
+ // remove quotes
+ path = path.slice(1, -1);
+ // resolve relative paths
+ if (path[0] === '.') {
+ path = path_1.join(this.getSourceFile().fileName, path);
+ }
+ if (/vs(\/|\\)nls/.test(path)) {
+ this.addFailure(this.createFailure(node.getStart(), node.getWidth(), `Not allowed to import vs/nls in standalone editor modules. Use standaloneStrings.ts`));
+ }
+ }
+}
diff --git a/build/lib/tslint/noNlsInStandaloneEditorRule.ts b/build/lib/tslint/noNlsInStandaloneEditorRule.ts
new file mode 100644
index 00000000000..ae23d74d784
--- /dev/null
+++ b/build/lib/tslint/noNlsInStandaloneEditorRule.ts
@@ -0,0 +1,67 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as ts from 'typescript';
+import * as Lint from 'tslint';
+import { join } from 'path';
+
+export class Rule extends Lint.Rules.AbstractRule {
+ public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
+ if (
+ /vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(sourceFile.fileName)
+ || /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(sourceFile.fileName)
+ || /vs(\/|\\)editor(\/|\\)editor.api/.test(sourceFile.fileName)
+ || /vs(\/|\\)editor(\/|\\)editor.main/.test(sourceFile.fileName)
+ || /vs(\/|\\)editor(\/|\\)editor.worker/.test(sourceFile.fileName)
+ ) {
+ return this.applyWithWalker(new NoNlsInStandaloneEditorRuleWalker(sourceFile, this.getOptions()));
+ }
+
+ return [];
+ }
+}
+
+class NoNlsInStandaloneEditorRuleWalker extends Lint.RuleWalker {
+
+ constructor(file: ts.SourceFile, opts: Lint.IOptions) {
+ super(file, opts);
+ }
+
+ protected visitImportEqualsDeclaration(node: ts.ImportEqualsDeclaration): void {
+ if (node.moduleReference.kind === ts.SyntaxKind.ExternalModuleReference) {
+ this._validateImport(node.moduleReference.expression.getText(), node);
+ }
+ }
+
+ protected visitImportDeclaration(node: ts.ImportDeclaration): void {
+ this._validateImport(node.moduleSpecifier.getText(), node);
+ }
+
+ protected visitCallExpression(node: ts.CallExpression): void {
+ super.visitCallExpression(node);
+
+ // import('foo') statements inside the code
+ if (node.expression.kind === ts.SyntaxKind.ImportKeyword) {
+ const [path] = node.arguments;
+ this._validateImport(path.getText(), node);
+ }
+ }
+
+ private _validateImport(path: string, node: ts.Node): void {
+ // remove quotes
+ path = path.slice(1, -1);
+
+ // resolve relative paths
+ if (path[0] === '.') {
+ path = join(this.getSourceFile().fileName, path);
+ }
+
+ if (
+ /vs(\/|\\)nls/.test(path)
+ ) {
+ this.addFailure(this.createFailure(node.getStart(), node.getWidth(), `Not allowed to import vs/nls in standalone editor modules. Use standaloneStrings.ts`));
+ }
+ }
+}
diff --git a/build/lib/tslint/noStandaloneEditorRule.js b/build/lib/tslint/noStandaloneEditorRule.js
index 37bcf40e673..44b70a6a8d7 100644
--- a/build/lib/tslint/noStandaloneEditorRule.js
+++ b/build/lib/tslint/noStandaloneEditorRule.js
@@ -44,8 +44,8 @@ class NoStandaloneEditorRuleWalker extends Lint.RuleWalker {
if (path[0] === '.') {
path = path_1.join(this.getSourceFile().fileName, path);
}
- if (/vs(\/|\\)editor(\/|\\)standalone/.test(path)
- || /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone/.test(path)
+ if (/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(path)
+ || /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.api/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.main/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.worker/.test(path)) {
diff --git a/build/lib/tslint/noStandaloneEditorRule.ts b/build/lib/tslint/noStandaloneEditorRule.ts
index b85e2da037a..713b94097d4 100644
--- a/build/lib/tslint/noStandaloneEditorRule.ts
+++ b/build/lib/tslint/noStandaloneEditorRule.ts
@@ -53,8 +53,8 @@ class NoStandaloneEditorRuleWalker extends Lint.RuleWalker {
}
if (
- /vs(\/|\\)editor(\/|\\)standalone/.test(path)
- || /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone/.test(path)
+ /vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(path)
+ || /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.api/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.main/.test(path)
|| /vs(\/|\\)editor(\/|\\)editor.worker/.test(path)
diff --git a/build/lib/tslint/translationRemindRule.js b/build/lib/tslint/translationRemindRule.js
index 45bbd4688f6..2234094421b 100644
--- a/build/lib/tslint/translationRemindRule.js
+++ b/build/lib/tslint/translationRemindRule.js
@@ -33,7 +33,7 @@ class TranslationRemindRuleWalker extends Lint.RuleWalker {
visitImportLikeDeclaration(node) {
const currentFile = node.getSourceFile().fileName;
const matchService = currentFile.match(/vs\/workbench\/services\/\w+/);
- const matchPart = currentFile.match(/vs\/workbench\/parts\/\w+/);
+ const matchPart = currentFile.match(/vs\/workbench\/contrib\/\w+/);
if (!matchService && !matchPart) {
return;
}
diff --git a/build/lib/tslint/translationRemindRule.ts b/build/lib/tslint/translationRemindRule.ts
index 559b782c6da..e2671599d3c 100644
--- a/build/lib/tslint/translationRemindRule.ts
+++ b/build/lib/tslint/translationRemindRule.ts
@@ -42,7 +42,7 @@ class TranslationRemindRuleWalker extends Lint.RuleWalker {
private visitImportLikeDeclaration(node: ts.ImportDeclaration | ts.ImportEqualsDeclaration) {
const currentFile = node.getSourceFile().fileName;
const matchService = currentFile.match(/vs\/workbench\/services\/\w+/);
- const matchPart = currentFile.match(/vs\/workbench\/parts\/\w+/);
+ const matchPart = currentFile.match(/vs\/workbench\/contrib\/\w+/);
if (!matchService && !matchPart) {
return;
}
diff --git a/build/lib/typings/gulp-remote-src.d.ts b/build/lib/typings/gulp-remote-src.d.ts
index 6ea57f84fe5..ff9026b79bb 100644
--- a/build/lib/typings/gulp-remote-src.d.ts
+++ b/build/lib/typings/gulp-remote-src.d.ts
@@ -1,4 +1,4 @@
-declare module 'gulp-remote-src' {
+declare module 'gulp-remote-retry-src' {
import stream = require("stream");
@@ -20,4 +20,4 @@ declare module 'gulp-remote-src' {
}
export = remote;
-}
\ No newline at end of file
+}
diff --git a/build/lib/util.js b/build/lib/util.js
index e6f041f3d60..be2670261d7 100644
--- a/build/lib/util.js
+++ b/build/lib/util.js
@@ -8,7 +8,6 @@ const es = require("event-stream");
const debounce = require("debounce");
const _filter = require("gulp-filter");
const rename = require("gulp-rename");
-const _ = require("underscore");
const path = require("path");
const fs = require("fs");
const _rimraf = require("rimraf");
@@ -67,6 +66,9 @@ function fixWin32DirectoryPermissions() {
exports.fixWin32DirectoryPermissions = fixWin32DirectoryPermissions;
function setExecutableBit(pattern) {
const setBit = es.mapSync(f => {
+ if (!f.stat) {
+ f.stat = { isFile() { return true; } };
+ }
f.stat.mode = /* 100755 */ 33261;
return f;
});
@@ -98,22 +100,18 @@ function skipDirectories() {
});
}
exports.skipDirectories = skipDirectories;
-function cleanNodeModule(name, excludes, includes) {
- const toGlob = (path) => '**/node_modules/' + name + (path ? '/' + path : '');
- const negate = (str) => '!' + str;
- const allFilter = _filter(toGlob('**'), { restore: true });
- const globs = [toGlob('**')].concat(excludes.map(_.compose(negate, toGlob)));
+function cleanNodeModules(rulePath) {
+ const rules = fs.readFileSync(rulePath, 'utf8')
+ .split(/\r?\n/g)
+ .map(line => line.trim())
+ .filter(line => line && !/^#/.test(line));
+ const excludes = rules.filter(line => !/^!/.test(line)).map(line => `!**/node_modules/${line}`);
+ const includes = rules.filter(line => /^!/.test(line)).map(line => `**/node_modules/${line.substr(1)}`);
const input = es.through();
- const nodeModuleInput = input.pipe(allFilter);
- let output = nodeModuleInput.pipe(_filter(globs));
- if (includes) {
- const includeGlobs = includes.map(toGlob);
- output = es.merge(output, nodeModuleInput.pipe(_filter(includeGlobs)));
- }
- output = output.pipe(allFilter.restore);
+ const output = es.merge(input.pipe(_filter(['**', ...excludes])), input.pipe(_filter(includes)));
return es.duplex(input, output);
}
-exports.cleanNodeModule = cleanNodeModule;
+exports.cleanNodeModules = cleanNodeModules;
function loadSourcemaps() {
const input = es.through();
const output = input
@@ -180,7 +178,8 @@ function rimraf(dir) {
return cb(err);
});
};
- return cb => retry(cb);
+ retry.taskName = `clean-${path.basename(dir).toLowerCase()}`;
+ return retry;
}
exports.rimraf = rimraf;
function getVersion(root) {
diff --git a/build/lib/util.ts b/build/lib/util.ts
index 4617cc83f2f..578271e6648 100644
--- a/build/lib/util.ts
+++ b/build/lib/util.ts
@@ -93,6 +93,9 @@ export function fixWin32DirectoryPermissions(): NodeJS.ReadWriteStream {
export function setExecutableBit(pattern?: string | string[]): NodeJS.ReadWriteStream {
const setBit = es.mapSync(f => {
+ if (!f.stat) {
+ f.stat = { isFile() { return true; } } as any;
+ }
f.stat.mode = /* 100755 */ 33261;
return f;
});
@@ -129,23 +132,21 @@ export function skipDirectories(): NodeJS.ReadWriteStream {
});
}
-export function cleanNodeModule(name: string, excludes: string[], includes?: string[]): NodeJS.ReadWriteStream {
- const toGlob = (path: string) => '**/node_modules/' + name + (path ? '/' + path : '');
- const negate = (str: string) => '!' + str;
+export function cleanNodeModules(rulePath: string): NodeJS.ReadWriteStream {
+ const rules = fs.readFileSync(rulePath, 'utf8')
+ .split(/\r?\n/g)
+ .map(line => line.trim())
+ .filter(line => line && !/^#/.test(line));
- const allFilter = _filter(toGlob('**'), { restore: true });
- const globs = [toGlob('**')].concat(excludes.map(_.compose(negate, toGlob) as (x: string) => string));
+ const excludes = rules.filter(line => !/^!/.test(line)).map(line => `!**/node_modules/${line}`);
+ const includes = rules.filter(line => /^!/.test(line)).map(line => `**/node_modules/${line.substr(1)}`);
const input = es.through();
- const nodeModuleInput = input.pipe(allFilter);
- let output: NodeJS.ReadWriteStream = nodeModuleInput.pipe(_filter(globs));
+ const output = es.merge(
+ input.pipe(_filter(['**', ...excludes])),
+ input.pipe(_filter(includes))
+ );
- if (includes) {
- const includeGlobs = includes.map(toGlob);
- output = es.merge(output, nodeModuleInput.pipe(_filter(includeGlobs)));
- }
-
- output = output.pipe(allFilter.restore);
return es.duplex(input, output);
}
@@ -233,8 +234,8 @@ export function rimraf(dir: string): (cb: any) => void {
return cb(err);
});
};
-
- return cb => retry(cb);
+ retry.taskName = `clean-${path.basename(dir).toLowerCase()}`;
+ return retry;
}
export function getVersion(root: string): string | undefined {
diff --git a/build/lib/watch/package.json b/build/lib/watch/package.json
index 0d031340153..b26f589ce0d 100644
--- a/build/lib/watch/package.json
+++ b/build/lib/watch/package.json
@@ -4,7 +4,8 @@
"description": "",
"author": "Microsoft ",
"private": true,
+ "license": "MIT",
"devDependencies": {
- "gulp-watch": "^4.3.9"
+ "gulp-watch": "5.0.1"
}
}
diff --git a/build/lib/watch/yarn.lock b/build/lib/watch/yarn.lock
index 0f2ac1e204d..f7d5d976b1f 100644
--- a/build/lib/watch/yarn.lock
+++ b/build/lib/watch/yarn.lock
@@ -7,23 +7,29 @@ abbrev@1:
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-ajv@^4.9.1:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
- integrity sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=
+ansi-colors@1.1.0, ansi-colors@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
+ integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==
dependencies:
- co "^4.6.0"
- json-stable-stringify "^1.0.1"
+ ansi-wrap "^0.1.0"
+
+ansi-gray@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
+ integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE=
+ dependencies:
+ ansi-wrap "0.1.0"
ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
- integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
+ integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
anymatch@^1.3.0:
version "1.3.2"
@@ -33,6 +39,14 @@ anymatch@^1.3.0:
micromatch "^2.1.5"
normalize-path "^2.0.0"
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
aproba@^1.0.3:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
@@ -53,97 +67,69 @@ arr-diff@^2.0.0:
dependencies:
arr-flatten "^1.0.1"
-arr-flatten@^1.0.1:
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
-array-differ@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
- integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=
-
-array-uniq@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
- integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
array-unique@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
-asn1@~0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
- integrity sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-assert-plus@1.0.0, assert-plus@^1.0.0:
+assign-symbols@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
- integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-assert-plus@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
- integrity sha1-104bh+ev/A24qttwIfP+SBAasjQ=
+async-each@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
-async-each@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
- integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
- integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
-
-aws-sign2@~0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
- integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
-
-aws4@^1.2.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
- integrity sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=
+atob@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-bcrypt-pbkdf@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
- integrity sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
dependencies:
- tweetnacl "^0.14.3"
-
-beeper@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809"
- integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
binary-extensions@^1.0.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
integrity sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=
-block-stream@*:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
- integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
- dependencies:
- inherits "~2.0.0"
-
-boom@2.x.x:
- version "2.10.1"
- resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
- integrity sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=
- dependencies:
- hoek "2.x.x"
-
brace-expansion@^1.1.7:
version "1.1.8"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
@@ -161,64 +147,127 @@ braces@^1.8.2:
preserve "^0.2.0"
repeat-element "^1.1.2"
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
- integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-
-chalk@^1.0.0, chalk@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+braces@^2.3.1, braces@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
dependencies:
- ansi-styles "^2.2.1"
- escape-string-regexp "^1.0.2"
- has-ansi "^2.0.0"
- strip-ansi "^3.0.0"
- supports-color "^2.0.0"
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
-chokidar@^1.6.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
- integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
dependencies:
- anymatch "^1.3.0"
- async-each "^1.0.0"
- glob-parent "^2.0.0"
- inherits "^2.0.1"
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+chokidar@^2.0.0:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5"
+ integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
+ glob-parent "^3.1.0"
+ inherits "^2.0.3"
is-binary-path "^1.0.0"
- is-glob "^2.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^3.0.0"
path-is-absolute "^1.0.0"
- readdirp "^2.0.0"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
optionalDependencies:
- fsevents "^1.0.0"
+ fsevents "^1.2.7"
+
+chownr@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6"
+ integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+clone-buffer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
+ integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg=
clone-stats@^0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=
+clone-stats@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
+ integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=
+
clone@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
integrity sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
- integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+clone@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+ integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
+
+cloneable-readable@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec"
+ integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==
+ dependencies:
+ inherits "^2.0.1"
+ process-nextick-args "^2.0.0"
+ readable-stream "^2.3.5"
code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-combined-stream@^1.0.5, combined-stream@~1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
- integrity sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
dependencies:
- delayed-stream "~1.0.0"
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-support@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
+ integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
concat-map@0.0.1:
version "0.0.1"
@@ -230,46 +279,61 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0:
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
-core-util-is@1.0.2, core-util-is@~1.0.0:
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-cryptiles@2.x.x:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
- integrity sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=
- dependencies:
- boom "2.x.x"
-
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
- dependencies:
- assert-plus "^1.0.0"
-
-dateformat@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062"
- integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=
-
-debug@^2.2.0:
+debug@^2.2.0, debug@^2.3.3:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
-deep-extend@~0.4.0:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
- integrity sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=
+debug@^3.2.6:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
-delayed-stream@~1.0.0:
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
- integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
delegates@^1.0.0:
version "1.0.0"
@@ -281,25 +345,6 @@ detect-libc@^1.0.2:
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.2.tgz#71ad5d204bf17a6a6ca8f450c61454066ef461e1"
integrity sha1-ca1dIEvxempsqPRQxhRUBm70YeE=
-duplexer2@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db"
- integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=
- dependencies:
- readable-stream "~1.1.9"
-
-ecc-jsbn@~0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
- integrity sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=
- dependencies:
- jsbn "~0.1.0"
-
-escape-string-regexp@^1.0.2:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
expand-brackets@^0.1.4:
version "0.1.5"
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
@@ -307,6 +352,19 @@ expand-brackets@^0.1.4:
dependencies:
is-posix-bracket "^0.1.0"
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
expand-range@^1.8.1:
version "1.8.2"
resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
@@ -314,10 +372,20 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
-extend@~3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
- integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
extglob@^0.3.1:
version "0.3.2"
@@ -326,17 +394,27 @@ extglob@^0.3.1:
dependencies:
is-extglob "^1.0.0"
-extsprintf@1.3.0, extsprintf@^1.2.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
- integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
-
-fancy-log@^1.1.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948"
- integrity sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
dependencies:
- chalk "^1.1.1"
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+fancy-log@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1"
+ integrity sha1-9BEl49hPLn2JpD0G2VjI94vha+E=
+ dependencies:
+ ansi-gray "^0.1.1"
+ color-support "^1.1.3"
time-stamp "^1.0.0"
filename-regex@^2.0.0:
@@ -355,6 +433,16 @@ fill-range@^2.1.0:
repeat-element "^1.1.2"
repeat-string "^1.5.2"
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
first-chunk-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70"
@@ -362,7 +450,7 @@ first-chunk-stream@^2.0.0:
dependencies:
readable-stream "^2.0.2"
-for-in@^1.0.1:
+for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
@@ -374,51 +462,32 @@ for-own@^0.1.4:
dependencies:
for-in "^1.0.1"
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
- integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
-
-form-data@~2.1.1:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
- integrity sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.5"
- mime-types "^2.1.12"
+ map-cache "^0.2.2"
+
+fs-minipass@^1.2.5:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
+ integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==
+ dependencies:
+ minipass "^2.2.1"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-fsevents@^1.0.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
- integrity sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==
+fsevents@^1.2.7:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
+ integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
dependencies:
- nan "^2.3.0"
- node-pre-gyp "^0.6.39"
-
-fstream-ignore@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
- integrity sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=
- dependencies:
- fstream "^1.0.0"
- inherits "2"
- minimatch "^3.0.0"
-
-fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
- integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=
- dependencies:
- graceful-fs "^4.1.2"
- inherits "~2.0.0"
- mkdirp ">=0.5 0"
- rimraf "2"
+ nan "^2.12.1"
+ node-pre-gyp "^0.12.0"
gauge@~2.7.3:
version "2.7.4"
@@ -434,12 +503,10 @@ gauge@~2.7.3:
strip-ansi "^3.0.1"
wide-align "^1.1.0"
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
- dependencies:
- assert-plus "^1.0.0"
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
glob-base@^0.3.0:
version "0.3.0"
@@ -456,7 +523,7 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
-glob-parent@^3.0.1:
+glob-parent@^3.0.1, glob-parent@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
@@ -476,120 +543,83 @@ glob@^7.0.5:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glogg@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5"
- integrity sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=
- dependencies:
- sparkles "^1.0.0"
+graceful-fs@^4.1.11:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
+ integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
graceful-fs@^4.1.2:
version "4.1.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
-gulp-util@^3.0.7:
- version "3.0.8"
- resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f"
- integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08=
- dependencies:
- array-differ "^1.0.0"
- array-uniq "^1.0.2"
- beeper "^1.0.0"
- chalk "^1.0.0"
- dateformat "^2.0.0"
- fancy-log "^1.1.0"
- gulplog "^1.0.0"
- has-gulplog "^0.1.0"
- lodash._reescape "^3.0.0"
- lodash._reevaluate "^3.0.0"
- lodash._reinterpolate "^3.0.0"
- lodash.template "^3.0.0"
- minimist "^1.1.0"
- multipipe "^0.1.2"
- object-assign "^3.0.0"
- replace-ext "0.0.1"
- through2 "^2.0.0"
- vinyl "^0.5.0"
-
-gulp-watch@^4.3.9:
- version "4.3.11"
- resolved "https://registry.yarnpkg.com/gulp-watch/-/gulp-watch-4.3.11.tgz#162fc563de9fc770e91f9a7ce3955513a9a118c0"
- integrity sha1-Fi/FY96fx3DpH5p845VVE6mhGMA=
+gulp-watch@5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/gulp-watch/-/gulp-watch-5.0.1.tgz#83d378752f5bfb46da023e73c17ed1da7066215d"
+ integrity sha512-HnTSBdzAOFIT4wmXYPDUn783TaYAq9bpaN05vuZNP5eni3z3aRx0NAKbjhhMYtcq76x4R1wf4oORDGdlrEjuog==
dependencies:
+ ansi-colors "1.1.0"
anymatch "^1.3.0"
- chokidar "^1.6.1"
+ chokidar "^2.0.0"
+ fancy-log "1.3.2"
glob-parent "^3.0.1"
- gulp-util "^3.0.7"
object-assign "^4.1.0"
path-is-absolute "^1.0.1"
+ plugin-error "1.0.1"
readable-stream "^2.2.2"
slash "^1.0.0"
- vinyl "^1.2.0"
+ vinyl "^2.1.0"
vinyl-file "^2.0.0"
-gulplog@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5"
- integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U=
- dependencies:
- glogg "^1.0.0"
-
-har-schema@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
- integrity sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=
-
-har-validator@~4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
- integrity sha1-M0gdDxu/9gDdID11gSpqX7oALio=
- dependencies:
- ajv "^4.9.1"
- har-schema "^1.0.5"
-
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
- dependencies:
- ansi-regex "^2.0.0"
-
-has-gulplog@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
- integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=
- dependencies:
- sparkles "^1.0.0"
-
has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
-hawk@3.1.3, hawk@~3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
- integrity sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
dependencies:
- boom "2.x.x"
- cryptiles "2.x.x"
- hoek "2.x.x"
- sntp "1.x.x"
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
-hoek@2.x.x:
- version "2.16.3"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
- integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
-
-http-signature@~1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
- integrity sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
dependencies:
- assert-plus "^0.2.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+iconv-lite@^0.4.4:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+ignore-walk@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+ integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+ dependencies:
+ minimatch "^3.0.4"
inflight@^1.0.4:
version "1.0.6"
@@ -599,16 +629,35 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@^2.0.1, inherits@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+inherits@^2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
ini@~1.3.0:
version "1.3.4"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
integrity sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
is-binary-path@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
@@ -621,6 +670,38 @@ is-buffer@^1.1.5:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
is-dotfile@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
@@ -633,17 +714,24 @@ is-equal-shallow@^0.1.3:
dependencies:
is-primitive "^2.0.0"
-is-extendable@^0.1.1:
+is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
is-extglob@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
-is-extglob@^2.1.0:
+is-extglob@^2.1.0, is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
@@ -669,6 +757,13 @@ is-glob@^3.1.0:
dependencies:
is-extglob "^2.1.0"
+is-glob@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
is-number@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
@@ -683,6 +778,13 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
is-posix-bracket@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
@@ -693,20 +795,15 @@ is-primitive@^2.0.0:
resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
is-utf8@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
-isarray@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
- integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
isarray@1.0.0, isarray@~1.0.0:
version "1.0.0"
@@ -720,49 +817,12 @@ isobject@^2.0.0:
dependencies:
isarray "1.0.0"
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
- integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
- integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-
-json-schema@0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
- integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
-
-json-stable-stringify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
- integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=
- dependencies:
- jsonify "~0.0.0"
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
- integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-
-jsonify@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
- integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
-
-jsprim@^1.2.2:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
- integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.3.0"
- json-schema "0.2.3"
- verror "1.10.0"
-
-kind-of@^3.0.2:
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
@@ -776,104 +836,27 @@ kind-of@^4.0.0:
dependencies:
is-buffer "^1.1.5"
-lodash._basecopy@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
- integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-lodash._basetostring@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5"
- integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+ integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
-lodash._basevalues@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7"
- integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-lodash._getnative@^3.0.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
- integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=
-
-lodash._isiterateecall@^3.0.0:
- version "3.0.9"
- resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
- integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=
-
-lodash._reescape@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a"
- integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=
-
-lodash._reevaluate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed"
- integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=
-
-lodash._reinterpolate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
- integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-
-lodash._root@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
- integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=
-
-lodash.escape@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
- integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
dependencies:
- lodash._root "^3.0.0"
-
-lodash.isarguments@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
- integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=
-
-lodash.isarray@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
- integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=
-
-lodash.keys@^3.0.0:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
- integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=
- dependencies:
- lodash._getnative "^3.0.0"
- lodash.isarguments "^3.0.0"
- lodash.isarray "^3.0.0"
-
-lodash.restparam@^3.0.0:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
- integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
-
-lodash.template@^3.0.0:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
- integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=
- dependencies:
- lodash._basecopy "^3.0.0"
- lodash._basetostring "^3.0.0"
- lodash._basevalues "^3.0.0"
- lodash._isiterateecall "^3.0.0"
- lodash._reinterpolate "^3.0.0"
- lodash.escape "^3.0.0"
- lodash.keys "^3.0.0"
- lodash.restparam "^3.0.0"
- lodash.templatesettings "^3.0.0"
-
-lodash.templatesettings@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5"
- integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=
- dependencies:
- lodash._reinterpolate "^3.0.0"
- lodash.escape "^3.0.0"
+ object-visit "^1.0.0"
micromatch@^2.1.5:
version "2.3.11"
@@ -894,19 +877,26 @@ micromatch@^2.1.5:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
-mime-db@~1.30.0:
- version "1.30.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
- integrity sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=
-
-mime-types@^2.1.12, mime-types@~2.1.7:
- version "2.1.17"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
- integrity sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=
+micromatch@^3.1.10, micromatch@^3.1.4:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
dependencies:
- mime-db "~1.30.0"
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
-minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4:
+minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@@ -918,12 +908,35 @@ minimist@0.0.8:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
-minimist@^1.1.0, minimist@^1.2.0:
+minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
-"mkdirp@>=0.5 0", mkdirp@^0.5.1:
+minipass@^2.2.1, minipass@^2.3.5:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
+ integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
+ integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
+ dependencies:
+ minipass "^2.2.1"
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.0, mkdirp@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
@@ -935,34 +948,57 @@ ms@2.0.0:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-multipipe@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
- integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=
+ms@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+nan@^2.12.1:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
+ integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
dependencies:
- duplexer2 "0.0.2"
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
-nan@^2.3.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46"
- integrity sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=
+needle@^2.2.1:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
+ integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
+ dependencies:
+ debug "^3.2.6"
+ iconv-lite "^0.4.4"
+ sax "^1.2.4"
-node-pre-gyp@^0.6.39:
- version "0.6.39"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
- integrity sha512-OsJV74qxnvz/AMGgcfZoDaeDXKD3oY3QVIbBmwszTFkRisTSXbMQyn4UWzUMOtA5SVhrBZOTp0wcoSBgfMfMmQ==
+node-pre-gyp@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
+ integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
dependencies:
detect-libc "^1.0.2"
- hawk "3.1.3"
mkdirp "^0.5.1"
+ needle "^2.2.1"
nopt "^4.0.1"
+ npm-packlist "^1.1.6"
npmlog "^4.0.2"
- rc "^1.1.7"
- request "2.81.0"
+ rc "^1.2.7"
rimraf "^2.6.1"
semver "^5.3.0"
- tar "^2.2.1"
- tar-pack "^3.4.0"
+ tar "^4"
nopt@^4.0.1:
version "4.0.1"
@@ -972,13 +1008,31 @@ nopt@^4.0.1:
abbrev "1"
osenv "^0.1.4"
-normalize-path@^2.0.0, normalize-path@^2.0.1:
+normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
dependencies:
remove-trailing-separator "^1.0.1"
+normalize-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+npm-bundled@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
+ integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
+
+npm-packlist@^1.1.6:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44"
+ integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+
npmlog@^4.0.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
@@ -994,21 +1048,27 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
-oauth-sign@~0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
- integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
-
-object-assign@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
- integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=
-
object-assign@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
object.omit@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
@@ -1017,7 +1077,14 @@ object.omit@^2.0.0:
for-own "^0.1.4"
is-extendable "^0.1.1"
-once@^1.3.0, once@^1.3.3:
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
@@ -1052,6 +1119,11 @@ parse-glob@^3.0.4:
is-extglob "^1.0.0"
is-glob "^2.0.0"
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
path-dirname@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
@@ -1062,11 +1134,6 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-performance-now@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
- integrity sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=
-
pify@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -1084,26 +1151,36 @@ pinkie@^2.0.0:
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+plugin-error@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c"
+ integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==
+ dependencies:
+ ansi-colors "^1.0.1"
+ arr-diff "^4.0.0"
+ arr-union "^3.1.0"
+ extend-shallow "^3.0.2"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
process-nextick-args@~1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=
-punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
- integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
-
-qs@~6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
- integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=
-
randomatic@^1.1.3:
version "1.1.7"
resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
@@ -1112,17 +1189,17 @@ randomatic@^1.1.3:
is-number "^3.0.0"
kind-of "^4.0.0"
-rc@^1.1.7:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077"
- integrity sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=
+rc@^1.2.7:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
dependencies:
- deep-extend "~0.4.0"
+ deep-extend "^0.6.0"
ini "~1.3.0"
minimist "^1.2.0"
strip-json-comments "~2.0.1"
-readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2:
+readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
integrity sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==
@@ -1135,25 +1212,27 @@ readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable
string_decoder "~1.0.3"
util-deprecate "~1.0.1"
-readable-stream@~1.1.9:
- version "1.1.14"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
- integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
+readable-stream@^2.3.5:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
+ integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
dependencies:
core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "0.0.1"
- string_decoder "~0.10.x"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
-readdirp@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
- integrity sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=
+readdirp@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
dependencies:
- graceful-fs "^4.1.2"
- minimatch "^3.0.2"
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
readable-stream "^2.0.2"
- set-immediate-shim "^1.0.1"
regex-cache@^0.4.2:
version "0.4.4"
@@ -1162,6 +1241,14 @@ regex-cache@^0.4.2:
dependencies:
is-equal-shallow "^0.1.3"
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@@ -1172,7 +1259,7 @@ repeat-element@^1.1.2:
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
-repeat-string@^1.5.2:
+repeat-string@^1.5.2, repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
@@ -1182,46 +1269,55 @@ replace-ext@0.0.1:
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=
-request@2.81.0:
- version "2.81.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
- integrity sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=
- dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- caseless "~0.12.0"
- combined-stream "~1.0.5"
- extend "~3.0.0"
- forever-agent "~0.6.1"
- form-data "~2.1.1"
- har-validator "~4.2.1"
- hawk "~3.1.3"
- http-signature "~1.1.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.7"
- oauth-sign "~0.8.1"
- performance-now "^0.2.0"
- qs "~6.4.0"
- safe-buffer "^5.0.1"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "^0.6.0"
- uuid "^3.0.0"
+replace-ext@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
+ integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
-rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1:
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+rimraf@^2.6.1:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
dependencies:
glob "^7.0.5"
-safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@^5.1.2:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
+ integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
semver@^5.3.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
@@ -1232,10 +1328,15 @@ set-blocking@~2.0.0:
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-set-immediate-shim@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
- integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
signal-exit@^3.0.0:
version "3.0.2"
@@ -1247,32 +1348,71 @@ slash@^1.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
-sntp@1.x.x:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
- integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
dependencies:
- hoek "2.x.x"
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
-sparkles@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3"
- integrity sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=
-
-sshpk@^1.7.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
- integrity sha1-US322mKHFEMW3EwY/hzx2UBzm+M=
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- dashdash "^1.12.0"
- getpass "^0.1.1"
- optionalDependencies:
- bcrypt-pbkdf "^1.0.0"
- ecc-jsbn "~0.1.1"
- jsbn "~0.1.0"
- tweetnacl "~0.14.0"
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
+ integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+ dependencies:
+ atob "^2.1.1"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+ integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+source-map@^0.5.6:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
string-width@^1.0.1, string-width@^1.0.2:
version "1.0.2"
@@ -1283,11 +1423,6 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
-string_decoder@~0.10.x:
- version "0.10.31"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
- integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
-
string_decoder@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
@@ -1295,10 +1430,12 @@ string_decoder@~1.0.3:
dependencies:
safe-buffer "~5.1.0"
-stringstream@~0.0.4:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
- integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
@@ -1327,90 +1464,87 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
- integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-
-tar-pack@^3.4.0:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
- integrity sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==
+tar@^4:
+ version "4.4.10"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1"
+ integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==
dependencies:
- debug "^2.2.0"
- fstream "^1.0.10"
- fstream-ignore "^1.0.5"
- once "^1.3.3"
- readable-stream "^2.1.4"
- rimraf "^2.5.1"
- tar "^2.2.1"
- uid-number "^0.0.6"
-
-tar@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
- integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
- dependencies:
- block-stream "*"
- fstream "^1.0.2"
- inherits "2"
-
-through2@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
- integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=
- dependencies:
- readable-stream "^2.1.5"
- xtend "~4.0.1"
+ chownr "^1.1.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.3.5"
+ minizlib "^1.2.1"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.3"
time-stamp@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
-tough-cookie@~2.3.0:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
- integrity sha1-C2GKVWW23qkL80JdBNVe3EdadWE=
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
dependencies:
- punycode "^1.4.1"
+ kind-of "^3.0.2"
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
dependencies:
- safe-buffer "^5.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
- integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
-uid-number@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
- integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
+ integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-uuid@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
- integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==
-
-verror@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
- integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
- dependencies:
- assert-plus "^1.0.0"
- core-util-is "1.0.2"
- extsprintf "^1.2.0"
-
vinyl-file@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a"
@@ -1423,16 +1557,7 @@ vinyl-file@^2.0.0:
strip-bom-stream "^2.0.0"
vinyl "^1.1.0"
-vinyl@^0.5.0:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde"
- integrity sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=
- dependencies:
- clone "^1.0.0"
- clone-stats "^0.0.1"
- replace-ext "0.0.1"
-
-vinyl@^1.1.0, vinyl@^1.2.0:
+vinyl@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884"
integrity sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=
@@ -1441,6 +1566,18 @@ vinyl@^1.1.0, vinyl@^1.2.0:
clone-stats "^0.0.1"
replace-ext "0.0.1"
+vinyl@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86"
+ integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==
+ dependencies:
+ clone "^2.1.1"
+ clone-buffer "^1.0.0"
+ clone-stats "^1.0.0"
+ cloneable-readable "^1.0.0"
+ remove-trailing-separator "^1.0.1"
+ replace-ext "^1.0.0"
+
wide-align@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
@@ -1453,7 +1590,7 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-xtend@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
- integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+yallist@^3.0.0, yallist@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
+ integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
diff --git a/build/monaco/ThirdPartyNotices.txt b/build/monaco/ThirdPartyNotices.txt
index a459893cc97..1de70ddaab6 100644
--- a/build/monaco/ThirdPartyNotices.txt
+++ b/build/monaco/ThirdPartyNotices.txt
@@ -7,6 +7,31 @@ herein, whether by implication, estoppel or otherwise.
+%% nodejs path library (https://github.com/nodejs/node/tree/43dd49c9782848c25e5b03448c8a0f923f13c158)
+=========================================
+Copyright Joyent, Inc. and other Node contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to permit
+persons to whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF nodejs path library NOTICES AND INFORMATION
+
%% promise-polyfill version 8.1.0 (https://github.com/taylorhakes/promise-polyfill)
=========================================
diff --git a/build/monaco/api.js b/build/monaco/api.js
index 716d1f56655..5cd0be82039 100644
--- a/build/monaco/api.js
+++ b/build/monaco/api.js
@@ -7,14 +7,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const ts = require("typescript");
const path = require("path");
-const util = require("gulp-util");
+const fancyLog = require("fancy-log");
+const ansiColors = require("ansi-colors");
const dtsv = '2';
const tsfmt = require('../../tsfmt.json');
const SRC = path.join(__dirname, '../../src');
exports.RECIPE_PATH = path.join(__dirname, './monaco.d.ts.recipe');
const DECLARATION_PATH = path.join(__dirname, '../../src/vs/monaco.d.ts');
function logErr(message, ...rest) {
- util.log(util.colors.yellow(`[monaco.d.ts]`), message, ...rest);
+ fancyLog(ansiColors.yellow(`[monaco.d.ts]`), message, ...rest);
}
function isDeclaration(a) {
return (a.kind === ts.SyntaxKind.InterfaceDeclaration
@@ -305,8 +306,8 @@ function generateDeclarationFile(recipe, sourceFileGetter) {
let usageImports = [];
let usage = [];
let failed = false;
- usage.push(`var a;`);
- usage.push(`var b;`);
+ usage.push(`var a: any;`);
+ usage.push(`var b: any;`);
const generateUsageImport = (moduleId) => {
let importName = 'm' + (++usageCounter);
usageImports.push(`import * as ${importName} from './${moduleId.replace(/\.d\.ts$/, '')}';`);
@@ -456,11 +457,20 @@ class FSProvider {
existsSync(filePath) {
return fs.existsSync(filePath);
}
+ statSync(filePath) {
+ return fs.statSync(filePath);
+ }
readFileSync(_moduleId, filePath) {
return fs.readFileSync(filePath);
}
}
exports.FSProvider = FSProvider;
+class CacheEntry {
+ constructor(sourceFile, mtime) {
+ this.sourceFile = sourceFile;
+ this.mtime = mtime;
+ }
+}
class DeclarationResolver {
constructor(_fsProvider) {
this._fsProvider = _fsProvider;
@@ -470,31 +480,43 @@ class DeclarationResolver {
this._sourceFileCache[moduleId] = null;
}
getDeclarationSourceFile(moduleId) {
+ if (this._sourceFileCache[moduleId]) {
+ // Since we cannot trust file watching to invalidate the cache, check also the mtime
+ const fileName = this._getFileName(moduleId);
+ const mtime = this._fsProvider.statSync(fileName).mtime.getTime();
+ if (this._sourceFileCache[moduleId].mtime !== mtime) {
+ this._sourceFileCache[moduleId] = null;
+ }
+ }
if (!this._sourceFileCache[moduleId]) {
this._sourceFileCache[moduleId] = this._getDeclarationSourceFile(moduleId);
}
- return this._sourceFileCache[moduleId];
+ return this._sourceFileCache[moduleId] ? this._sourceFileCache[moduleId].sourceFile : null;
+ }
+ _getFileName(moduleId) {
+ if (/\.d\.ts$/.test(moduleId)) {
+ return path.join(SRC, moduleId);
+ }
+ return path.join(SRC, `${moduleId}.ts`);
}
_getDeclarationSourceFile(moduleId) {
- if (/\.d\.ts$/.test(moduleId)) {
- const fileName = path.join(SRC, moduleId);
- if (!this._fsProvider.existsSync(fileName)) {
- return null;
- }
- const fileContents = this._fsProvider.readFileSync(moduleId, fileName).toString();
- return ts.createSourceFile(fileName, fileContents, ts.ScriptTarget.ES5);
- }
- const fileName = path.join(SRC, `${moduleId}.ts`);
+ const fileName = this._getFileName(moduleId);
if (!this._fsProvider.existsSync(fileName)) {
return null;
}
+ const mtime = this._fsProvider.statSync(fileName).mtime.getTime();
+ if (/\.d\.ts$/.test(moduleId)) {
+ // const mtime = this._fsProvider.statFileSync()
+ const fileContents = this._fsProvider.readFileSync(moduleId, fileName).toString();
+ return new CacheEntry(ts.createSourceFile(fileName, fileContents, ts.ScriptTarget.ES5), mtime);
+ }
const fileContents = this._fsProvider.readFileSync(moduleId, fileName).toString();
const fileMap = {
'file.ts': fileContents
};
const service = ts.createLanguageService(new TypeScriptLanguageServiceHost({}, fileMap, {}));
const text = service.getEmitOutput('file.ts', true).outputFiles[0].text;
- return ts.createSourceFile(fileName, text, ts.ScriptTarget.ES5);
+ return new CacheEntry(ts.createSourceFile(fileName, text, ts.ScriptTarget.ES5), mtime);
}
}
exports.DeclarationResolver = DeclarationResolver;
diff --git a/build/monaco/api.ts b/build/monaco/api.ts
index d12b77787a0..ef9c9a584dc 100644
--- a/build/monaco/api.ts
+++ b/build/monaco/api.ts
@@ -6,7 +6,8 @@
import * as fs from 'fs';
import * as ts from 'typescript';
import * as path from 'path';
-import * as util from 'gulp-util';
+import * as fancyLog from 'fancy-log';
+import * as ansiColors from 'ansi-colors';
const dtsv = '2';
@@ -17,7 +18,7 @@ export const RECIPE_PATH = path.join(__dirname, './monaco.d.ts.recipe');
const DECLARATION_PATH = path.join(__dirname, '../../src/vs/monaco.d.ts');
function logErr(message: any, ...rest: any[]): void {
- util.log(util.colors.yellow(`[monaco.d.ts]`), message, ...rest);
+ fancyLog(ansiColors.yellow(`[monaco.d.ts]`), message, ...rest);
}
type SourceFileGetter = (moduleId: string) => ts.SourceFile | null;
@@ -365,8 +366,8 @@ function generateDeclarationFile(recipe: string, sourceFileGetter: SourceFileGet
let failed = false;
- usage.push(`var a;`);
- usage.push(`var b;`);
+ usage.push(`var a: any;`);
+ usage.push(`var b: any;`);
const generateUsageImport = (moduleId: string) => {
let importName = 'm' + (++usageCounter);
@@ -547,14 +548,24 @@ export class FSProvider {
public existsSync(filePath: string): boolean {
return fs.existsSync(filePath);
}
+ public statSync(filePath: string): fs.Stats {
+ return fs.statSync(filePath);
+ }
public readFileSync(_moduleId: string, filePath: string): Buffer {
return fs.readFileSync(filePath);
}
}
+class CacheEntry {
+ constructor(
+ public readonly sourceFile: ts.SourceFile,
+ public readonly mtime: number
+ ) {}
+}
+
export class DeclarationResolver {
- private _sourceFileCache: { [moduleId: string]: ts.SourceFile | null; };
+ private _sourceFileCache: { [moduleId: string]: CacheEntry | null; };
constructor(private readonly _fsProvider: FSProvider) {
this._sourceFileCache = Object.create(null);
@@ -565,32 +576,51 @@ export class DeclarationResolver {
}
public getDeclarationSourceFile(moduleId: string): ts.SourceFile | null {
+ if (this._sourceFileCache[moduleId]) {
+ // Since we cannot trust file watching to invalidate the cache, check also the mtime
+ const fileName = this._getFileName(moduleId);
+ const mtime = this._fsProvider.statSync(fileName).mtime.getTime();
+ if (this._sourceFileCache[moduleId]!.mtime !== mtime) {
+ this._sourceFileCache[moduleId] = null;
+ }
+ }
if (!this._sourceFileCache[moduleId]) {
this._sourceFileCache[moduleId] = this._getDeclarationSourceFile(moduleId);
}
- return this._sourceFileCache[moduleId];
+ return this._sourceFileCache[moduleId] ? this._sourceFileCache[moduleId]!.sourceFile : null;
}
- private _getDeclarationSourceFile(moduleId: string): ts.SourceFile | null {
+ private _getFileName(moduleId: string): string {
if (/\.d\.ts$/.test(moduleId)) {
- const fileName = path.join(SRC, moduleId);
- if (!this._fsProvider.existsSync(fileName)) {
- return null;
- }
- const fileContents = this._fsProvider.readFileSync(moduleId, fileName).toString();
- return ts.createSourceFile(fileName, fileContents, ts.ScriptTarget.ES5);
+ return path.join(SRC, moduleId);
}
- const fileName = path.join(SRC, `${moduleId}.ts`);
+ return path.join(SRC, `${moduleId}.ts`);
+ }
+
+ private _getDeclarationSourceFile(moduleId: string): CacheEntry | null {
+ const fileName = this._getFileName(moduleId);
if (!this._fsProvider.existsSync(fileName)) {
return null;
}
+ const mtime = this._fsProvider.statSync(fileName).mtime.getTime();
+ if (/\.d\.ts$/.test(moduleId)) {
+ // const mtime = this._fsProvider.statFileSync()
+ const fileContents = this._fsProvider.readFileSync(moduleId, fileName).toString();
+ return new CacheEntry(
+ ts.createSourceFile(fileName, fileContents, ts.ScriptTarget.ES5),
+ mtime
+ );
+ }
const fileContents = this._fsProvider.readFileSync(moduleId, fileName).toString();
const fileMap: IFileMap = {
'file.ts': fileContents
};
const service = ts.createLanguageService(new TypeScriptLanguageServiceHost({}, fileMap, {}));
const text = service.getEmitOutput('file.ts', true).outputFiles[0].text;
- return ts.createSourceFile(fileName, text, ts.ScriptTarget.ES5);
+ return new CacheEntry(
+ ts.createSourceFile(fileName, text, ts.ScriptTarget.ES5),
+ mtime
+ );
}
}
diff --git a/build/monaco/monaco.d.ts.recipe b/build/monaco/monaco.d.ts.recipe
index ed3a8f5d260..afba093b25c 100644
--- a/build/monaco/monaco.d.ts.recipe
+++ b/build/monaco/monaco.d.ts.recipe
@@ -5,6 +5,8 @@
declare namespace monaco {
+ // THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.
+
export type Thenable = PromiseLike;
export interface IDisposable {
diff --git a/build/monaco/monaco.usage.recipe b/build/monaco/monaco.usage.recipe
index e75b8585a2d..f1a74a25e30 100644
--- a/build/monaco/monaco.usage.recipe
+++ b/build/monaco/monaco.usage.recipe
@@ -10,8 +10,10 @@ import { CountBadge } from './vs/base/browser/ui/countBadge/countBadge';
import { SimpleWorkerClient, create as create1 } from './vs/base/common/worker/simpleWorker';
import { create as create2 } from './vs/editor/common/services/editorSimpleWorker';
import { QuickOpenWidget } from './vs/base/parts/quickopen/browser/quickOpenWidget';
+import { WorkbenchAsyncDataTree } from './vs/platform/list/browser/listService';
import { SyncDescriptor0, SyncDescriptor1, SyncDescriptor2, SyncDescriptor3, SyncDescriptor4, SyncDescriptor5, SyncDescriptor6, SyncDescriptor7, SyncDescriptor8 } from './vs/platform/instantiation/common/descriptors';
import { DiffNavigator } from './vs/editor/browser/widget/diffNavigator';
+import { DocumentRangeFormattingEditProvider } from './vs/editor/common/modes';
import * as editorAPI from './vs/editor/editor.api';
(function () {
@@ -22,14 +24,16 @@ import * as editorAPI from './vs/editor/editor.api';
a = (b).getWorkspace; // IWorkspaceFolderProvider
a = (b).style; // IThemable
a = (b).style; // IThemable
+ a = (>b).style; // IThemable
a = (b).userHome; // IUserHomeProvider
a = (b).previous; // IDiffNavigator
a = (>b).type;
a = (b).start;
a = (b).end;
- a = (>b).getProxyObject; // IWorkerClient
+ a = (>b).getProxyObject; // IWorkerClient
a = create1;
a = create2;
+ a = (b).extensionId;
// injection madness
a = (>b).ctor;
diff --git a/build/monaco/package.json b/build/monaco/package.json
index efd919085b2..1962694ce6d 100644
--- a/build/monaco/package.json
+++ b/build/monaco/package.json
@@ -1,7 +1,7 @@
{
"name": "monaco-editor-core",
"private": true,
- "version": "0.14.3",
+ "version": "0.16.0",
"description": "A browser based code editor",
"author": "Microsoft Corporation",
"license": "MIT",
diff --git a/src/vs/base/test/node/stream/fixtures/empty.txt b/build/monaco/version.txt
similarity index 100%
rename from src/vs/base/test/node/stream/fixtures/empty.txt
rename to build/monaco/version.txt
diff --git a/build/npm/postinstall.js b/build/npm/postinstall.js
index ea2d2d9a2dc..cd41092192c 100644
--- a/build/npm/postinstall.js
+++ b/build/npm/postinstall.js
@@ -17,7 +17,14 @@ function yarnInstall(location, opts) {
opts.cwd = location;
opts.stdio = 'inherit';
- const result = cp.spawnSync(yarn, ['install'], opts);
+ const raw = process.env['npm_config_argv'] || '{}';
+ const argv = JSON.parse(raw);
+ const original = argv.original || [];
+ const args = original.filter(arg => arg === '--ignore-optional' || arg === '--frozen-lockfile');
+
+ console.log(`Installing dependencies in ${location}...`);
+ console.log(`$ yarn ${args.join(' ')}`);
+ const result = cp.spawnSync(yarn, args, opts);
if (result.error || result.status !== 0) {
process.exit(1);
@@ -26,6 +33,10 @@ function yarnInstall(location, opts) {
yarnInstall('extensions'); // node modules shared by all extensions
+yarnInstall('remote'); // node modules used by vscode server
+
+yarnInstall('remote/web'); // node modules used by vscode web
+
const allExtensionFolders = fs.readdirSync('extensions');
const extensions = allExtensionFolders.filter(e => {
try {
diff --git a/build/npm/preinstall.js b/build/npm/preinstall.js
index a2029c364fa..3b0d7dc538f 100644
--- a/build/npm/preinstall.js
+++ b/build/npm/preinstall.js
@@ -7,8 +7,8 @@ let err = false;
const majorNodeVersion = parseInt(/^(\d+)\./.exec(process.versions.node)[1]);
-if (majorNodeVersion < 8 || majorNodeVersion >= 9) {
- console.error('\033[1;31m*** Please use node >=8 and <9.\033[0;0m');
+if (majorNodeVersion < 8 || majorNodeVersion >= 11) {
+ console.error('\033[1;31m*** Please use node >=8 and <11.\033[0;0m');
err = true;
}
diff --git a/build/npm/update-distro.js b/build/npm/update-distro.js
new file mode 100644
index 00000000000..947a4967d60
--- /dev/null
+++ b/build/npm/update-distro.js
@@ -0,0 +1,18 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+const cp = require('child_process');
+const path = require('path');
+const fs = require('fs');
+
+const rootPath = path.dirname(path.dirname(path.dirname(__dirname)));
+const vscodePath = path.join(rootPath, 'vscode');
+const distroPath = path.join(rootPath, 'vscode-distro');
+const commit = cp.execSync('git rev-parse HEAD', { cwd: distroPath, encoding: 'utf8' }).trim();
+const packageJsonPath = path.join(vscodePath, 'package.json');
+const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
+
+packageJson.distro = commit;
+fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
\ No newline at end of file
diff --git a/build/npm/update-grammar.js b/build/npm/update-grammar.js
index b4f94044419..5321b7b1dcd 100644
--- a/build/npm/update-grammar.js
+++ b/build/npm/update-grammar.js
@@ -12,6 +12,8 @@ var cson = require('cson-parser');
var https = require('https');
var url = require('url');
+let commitDate = '0000-00-00';
+
/**
* @param {string} urlString
*/
@@ -80,7 +82,7 @@ function getCommitSha(repoId, repoPath) {
});
}
-exports.update = function (repoId, repoPath, dest, modifyGrammar, version = 'master') {
+exports.update = function (repoId, repoPath, dest, modifyGrammar, version = 'master', packageJsonPathOverride = '') {
var contentPath = 'https://raw.githubusercontent.com/' + repoId + `/${version}/` + repoPath;
console.log('Reading from ' + contentPath);
return download(contentPath).then(function (content) {
@@ -120,30 +122,39 @@ exports.update = function (repoId, repoPath, dest, modifyGrammar, version = 'mas
try {
fs.writeFileSync(dest, JSON.stringify(result, null, '\t').replace(/\n/g, '\r\n'));
- // Add commit sha to cgmanifest
let cgmanifestRead = JSON.parse(fs.readFileSync('./cgmanifest.json').toString());
let promises = new Array();
- let packageJsonPath = 'https://raw.githubusercontent.com/' + repoId + `/${info.commitSha}/package.json`;
- for (let i = 0; i < cgmanifestRead.registrations.length; i++) {
- if (cgmanifestRead.registrations[i].component.git.repositoryUrl.substr(cgmanifestRead.registrations[i].component.git.repositoryUrl.length - repoId.length, repoId.length) === repoId) {
- cgmanifestRead.registrations[i].component.git.commitHash = info.commitSha;
- promises.push(download(packageJsonPath).then(function (packageJson) {
- if (packageJson) {
- try {
- cgmanifestRead.registrations[i].version = JSON.parse(packageJson).version;
- } catch (e) {
- console.log('File does not exist at' + packageJsonPath);
- }
- }
- }));
- break;
+ const currentCommitDate = info.commitDate.substr(0, 10);
+
+ // Add commit sha to cgmanifest.
+ if (currentCommitDate > commitDate) {
+ let packageJsonPath = 'https://raw.githubusercontent.com/' + repoId + `/${info.commitSha}/`;
+ if (packageJsonPathOverride) {
+ packageJsonPath += packageJsonPathOverride;
+ }
+ packageJsonPath += '/package.json';
+ for (let i = 0; i < cgmanifestRead.registrations.length; i++) {
+ if (cgmanifestRead.registrations[i].component.git.repositoryUrl.substr(cgmanifestRead.registrations[i].component.git.repositoryUrl.length - repoId.length, repoId.length) === repoId) {
+ cgmanifestRead.registrations[i].component.git.commitHash = info.commitSha;
+ commitDate = currentCommitDate;
+ promises.push(download(packageJsonPath).then(function (packageJson) {
+ if (packageJson) {
+ try {
+ cgmanifestRead.registrations[i].version = JSON.parse(packageJson).version;
+ } catch (e) {
+ console.log('Cannot get version. File does not exist at ' + packageJsonPath);
+ }
+ }
+ }));
+ break;
+ }
}
}
Promise.all(promises).then(function (allResult) {
fs.writeFileSync('./cgmanifest.json', JSON.stringify(cgmanifestRead, null, '\t').replace(/\n/g, '\r\n'));
});
if (info) {
- console.log('Updated ' + path.basename(dest) + ' to ' + repoId + '@' + info.commitSha.substr(0, 7) + ' (' + info.commitDate.substr(0, 10) + ')');
+ console.log('Updated ' + path.basename(dest) + ' to ' + repoId + '@' + info.commitSha.substr(0, 7) + ' (' + currentCommitDate + ')');
} else {
console.log('Updated ' + path.basename(dest));
}
diff --git a/build/npm/update-localization-extension.js b/build/npm/update-localization-extension.js
index 50dcaca3eb6..b1656dc88f4 100644
--- a/build/npm/update-localization-extension.js
+++ b/build/npm/update-localization-extension.js
@@ -74,7 +74,7 @@ function update(options) {
let translationPaths = [];
i18n.pullI18nPackFiles(server, userName, apiToken, { id: languageId }, translationPaths)
.on('error', (error) => {
- console.log(`Error occured while importing translations:`);
+ console.log(`Error occurred while importing translations:`);
translationPaths = undefined;
if (Array.isArray(error)) {
error.forEach(console.log);
@@ -100,7 +100,7 @@ function update(options) {
gulp.src(path.join(location, languageId, '**', '*.xlf'))
.pipe(i18n.prepareI18nPackFiles(i18n.externalExtensionsWithTranslations, translationPaths, languageId === 'ps'))
.on('error', (error) => {
- console.log(`Error occured while importing translations:`);
+ console.log(`Error occurred while importing translations:`);
translationPaths = undefined;
if (Array.isArray(error)) {
error.forEach(console.log);
diff --git a/build/package.json b/build/package.json
index 64c0f9277b0..a382150c3f0 100644
--- a/build/package.json
+++ b/build/package.json
@@ -1,10 +1,13 @@
{
"name": "code-oss-dev-build",
"version": "1.0.0",
+ "license": "MIT",
"devDependencies": {
+ "@types/ansi-colors": "^3.2.0",
"@types/azure": "0.9.19",
"@types/debounce": "^1.0.0",
"@types/documentdb": "1.10.2",
+ "@types/fancy-log": "^1.3.0",
"@types/glob": "^7.1.1",
"@types/gulp": "^4.0.5",
"@types/gulp-concat": "^0.0.32",
@@ -13,12 +16,11 @@
"@types/gulp-rename": "^0.0.33",
"@types/gulp-sourcemaps": "^0.0.32",
"@types/gulp-uglify": "^3.0.5",
- "@types/gulp-util": "^3.0.34",
"@types/mime": "0.0.29",
"@types/minimatch": "^3.0.3",
"@types/minimist": "^1.2.0",
"@types/mocha": "2.2.39",
- "@types/node": "8.0.33",
+ "@types/node": "^10.14.8",
"@types/pump": "^1.0.1",
"@types/request": "^2.47.0",
"@types/rimraf": "^2.0.2",
@@ -27,7 +29,7 @@
"@types/uglify-es": "^3.0.0",
"@types/underscore": "^1.8.9",
"@types/xml2js": "0.0.33",
- "applicationinsights": "1.0.6",
+ "applicationinsights": "1.0.8",
"azure-storage": "^2.1.0",
"documentdb": "1.13.0",
"github-releases": "^0.4.1",
@@ -38,8 +40,9 @@
"minimist": "^1.2.0",
"request": "^2.85.0",
"tslint": "^5.9.1",
- "typescript": "3.2.2",
+ "typescript": "3.5.2",
"vsce": "1.48.0",
+ "vscode-telemetry-extractor": "1.5.3",
"xml2js": "^0.4.17"
},
"scripts": {
diff --git a/build/tsconfig.json b/build/tsconfig.json
index 46ad745bc23..df15ccdd1be 100644
--- a/build/tsconfig.json
+++ b/build/tsconfig.json
@@ -8,7 +8,7 @@
"resolveJsonModule": true,
"experimentalDecorators": true,
// enable JavaScript type checking for the language service
- // use the tsconfig.build.json for compiling wich disable JavaScript
+ // use the tsconfig.build.json for compiling which disable JavaScript
// type checking so that JavaScript file are not transpiled
"allowJs": true,
"checkJs": true,
@@ -22,4 +22,4 @@
"exclude": [
"node_modules/**"
]
-}
\ No newline at end of file
+}
diff --git a/build/win32/Cargo.lock b/build/win32/Cargo.lock
index dcc1440b35e..3c95fb34cdf 100644
--- a/build/win32/Cargo.lock
+++ b/build/win32/Cargo.lock
@@ -1,3 +1,5 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
[[package]]
name = "build_const"
version = "0.2.0"
@@ -27,7 +29,7 @@ dependencies = [
[[package]]
name = "inno_updater"
-version = "0.7.1"
+version = "0.8.0"
dependencies = [
"byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"crc 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/build/win32/code.iss b/build/win32/code.iss
index 43572199eb5..831b31a3c71 100644
--- a/build/win32/code.iss
+++ b/build/win32/code.iss
@@ -1,7 +1,7 @@
#define LocalizedLanguageFile(Language = "") \
DirExists(RepoDir + "\licenses") && Language != "" \
- ? ('; LicenseFile: "' + RepoDir + '\licenses\LICENSE-' + Language + '.txt"') \
- : '; LicenseFile: "' + RepoDir + '\LICENSE.txt"'
+ ? ('; LicenseFile: "' + RepoDir + '\licenses\LICENSE-' + Language + '.rtf"') \
+ : '; LicenseFile: "' + RepoDir + '\LICENSE.rtf"'
[Setup]
AppId={#AppId}
@@ -1034,7 +1034,7 @@ begin
AltArch := '32';
end;
- if not Result then begin
+ if not Result and not WizardSilent() then begin
MsgBox('Please uninstall the ' + AltArch + '-bit version of {#NameShort} before installing this ' + ThisArch + '-bit version.', mbInformation, MB_OK);
end;
end;
diff --git a/build/win32/i18n/messages.en.isl b/build/win32/i18n/messages.en.isl
index 4bd6c75ad43..a6aab59b95a 100644
--- a/build/win32/i18n/messages.en.isl
+++ b/build/win32/i18n/messages.en.isl
@@ -2,7 +2,7 @@
AddContextMenuFiles=Add "Open with %1" action to Windows Explorer file context menu
AddContextMenuFolders=Add "Open with %1" action to Windows Explorer directory context menu
AssociateWithFiles=Register %1 as an editor for supported file types
-AddToPath=Add to PATH (available after restart)
+AddToPath=Add to PATH (requires shell restart)
RunAfter=Run %1 after installation
Other=Other:
SourceFile=%1 Source File
\ No newline at end of file
diff --git a/build/win32/inno_updater.exe b/build/win32/inno_updater.exe
index 140065f673c..baca28361d1 100644
Binary files a/build/win32/inno_updater.exe and b/build/win32/inno_updater.exe differ
diff --git a/build/yarn.lock b/build/yarn.lock
index 4d2a53c8ee7..23ac4d9b84d 100644
--- a/build/yarn.lock
+++ b/build/yarn.lock
@@ -2,6 +2,14 @@
# yarn lockfile v1
+"@dsherret/to-absolute-glob@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1f6475dc8bd974cea07a2daf3864b317b1dd332c"
+ integrity sha1-H2R13IvZdM6gei2vOGSzF7HdMyw=
+ dependencies:
+ is-absolute "^1.0.0"
+ is-negated-glob "^1.0.0"
+
"@gulp-sourcemaps/map-sources@1.X":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda"
@@ -10,6 +18,32 @@
normalize-path "^2.0.1"
through2 "^2.0.3"
+"@nodelib/fs.scandir@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz#7fa8fed654939e1a39753d286b48b4836d00e0eb"
+ integrity sha512-NT/skIZjgotDSiXs0WqYhgcuBKhUMgfekCmCGtkUAiLqZdOnrdjmZr9wRl3ll64J9NF79uZ4fk16Dx0yMc/Xbg==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.1"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.1", "@nodelib/fs.stat@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.1.tgz#814f71b1167390cfcb6a6b3d9cdeb0951a192c14"
+ integrity sha512-+RqhBlLn6YRBGOIoVYthsG0J9dfpO79eJyN7BYBkZJtfqrBwf2KK+rD/M/yjZR6WBmIhAgOV7S60eCgaSWtbFw==
+
+"@nodelib/fs.walk@^1.2.1":
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.2.tgz#6a6450c5e17012abd81450eb74949a4d970d2807"
+ integrity sha512-J/DR3+W12uCzAJkw7niXDcqcKBg6+5G5Q/ZpThpGNzAUz70eOR6RV4XnnSN01qHZiVl0eavoxJsBypQoKsV2QQ==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.1"
+ fastq "^1.6.0"
+
+"@types/ansi-colors@^3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@types/ansi-colors/-/ansi-colors-3.2.0.tgz#3e4fe85d9131ce1c6994f3040bd0b25306c16a6e"
+ integrity sha512-0caWAhXht9N2lOdMzJLXybsSkYCx1QOdxx6pae48tswI9QV3DFX26AoOpy0JxwhCb+zISTqmd6H8t9Zby9BoZg==
+
"@types/azure@0.9.19":
version "0.9.19"
resolved "https://registry.yarnpkg.com/@types/azure/-/azure-0.9.19.tgz#1a6a9bd856b437ddecf3f9fc8407a683c869ba02"
@@ -47,6 +81,11 @@
resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86"
integrity sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==
+"@types/fancy-log@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@types/fancy-log/-/fancy-log-1.3.0.tgz#a61ab476e5e628cd07a846330df53b85e05c8ce0"
+ integrity sha512-mQjDxyOM1Cpocd+vm1kZBP7smwKZ4TNokFeds9LV7OZibmPJFEzY3+xZMrKfUdNT71lv8GoCPD6upKwHxubClw==
+
"@types/form-data@*":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-2.2.1.tgz#ee2b3b8eaa11c0938289953606b745b738c54b1e"
@@ -117,16 +156,6 @@
"@types/node" "*"
"@types/uglify-js" "^2"
-"@types/gulp-util@^3.0.34":
- version "3.0.34"
- resolved "https://registry.yarnpkg.com/@types/gulp-util/-/gulp-util-3.0.34.tgz#d1291ebf706d93f46eb8df11344bbfd96247697e"
- integrity sha512-E06WN1OfqL5UsMwJ1T7ClgnaXgaPipb7Ee8euMc3KRHLNqxdvWrDir9KA6uevgzBgT7XbjgmzZA2pkzDqBBX7A==
- dependencies:
- "@types/node" "*"
- "@types/through2" "*"
- "@types/vinyl" "*"
- chalk "^2.2.0"
-
"@types/gulp@^4.0.5":
version "4.0.5"
resolved "https://registry.yarnpkg.com/@types/gulp/-/gulp-4.0.5.tgz#f5f498d5bf9538364792de22490a12c0e6bc5eb4"
@@ -166,10 +195,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.51.tgz#b31d716fb8d58eeb95c068a039b9b6292817d5fb"
integrity sha512-El3+WJk2D/ppWNd2X05aiP5l2k4EwF7KwheknQZls+I26eSICoWRhRIJ56jGgw2dqNGQ5LtNajmBU2ajS28EvQ==
-"@types/node@8.0.33":
- version "8.0.33"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.33.tgz#1126e94374014e54478092830704f6ea89df04cd"
- integrity sha512-vmCdO8Bm1ExT+FWfC9sd9r4jwqM7o97gGy2WBshkkXbf/2nLAJQUrZfIhw27yVOtLUev6kSZc4cav/46KbDd8A==
+"@types/node@^10.14.8":
+ version "10.14.13"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.13.tgz#ac786d623860adf39a3f51d629480aacd6a6eec7"
+ integrity sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ==
"@types/pump@^1.0.1":
version "1.0.1"
@@ -196,7 +225,7 @@
"@types/glob" "*"
"@types/node" "*"
-"@types/through2@*", "@types/through2@^2.0.34":
+"@types/through2@^2.0.34":
version "2.0.34"
resolved "https://registry.yarnpkg.com/@types/through2/-/through2-2.0.34.tgz#9c2a259a238dace2a05a2f8e94b786961bc27ac4"
integrity sha512-nhRG8+RuG/L+0fAZBQYaRflXKjTrHOKH8MFTChnf+dNVMxA3wHYYrfj0tztK0W51ABXjGfRCDc0vRkecCOrsow==
@@ -328,10 +357,10 @@ ansi-wrap@0.1.0:
resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
-applicationinsights@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.0.6.tgz#bc201810de91cea910dab34e8ad35ecde488edeb"
- integrity sha512-VQT3kBpJVPw5fCO5n+WUeSx0VHjxFtD7znYbILBlVgOS9/cMDuGFmV2Br3ObzFyZUDGNbEfW36fD1y2/vAiCKw==
+applicationinsights@1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.0.8.tgz#db6e3d983cf9f9405fe1ee5ba30ac6e1914537b5"
+ integrity sha512-KzOOGdphOS/lXWMFZe5440LUdFbrLpMvh2SaRxn7BmiI550KAoSb2gIhiq6kJZ9Ir3AxRRztjhzif+e5P5IXIg==
dependencies:
diagnostic-channel "0.2.0"
diagnostic-channel-publishers "0.2.1"
@@ -344,16 +373,36 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
+array-back@^3.0.1:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0"
+ integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==
+
array-differ@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=
+array-differ@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b"
+ integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
array-uniq@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+arrify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
+ integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==
+
asn1@~0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
@@ -481,6 +530,13 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
+braces@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
browserify-mime@~1.2.9:
version "1.2.9"
resolved "https://registry.yarnpkg.com/browserify-mime/-/browserify-mime-1.2.9.tgz#aeb1af28de6c0d7a6a2ce40adb68ff18422af31f"
@@ -512,7 +568,7 @@ chalk@^1.0.0, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@^2.2.0, chalk@^2.3.0:
+chalk@^2.3.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
@@ -548,6 +604,11 @@ co@^4.6.0:
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+code-block-writer@9.4.1:
+ version "9.4.1"
+ resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-9.4.1.tgz#1448fca79dfc7a3649000f4c85be6bc770604c4c"
+ integrity sha512-LHAB+DL4YZDcwK8y/kAxZ0Lf/ncwLh/Ux4cTVWbPwIdrf1gPxXiPcwpz8r8/KqXu1aD+Raz46EOxDjFlbyO6bA==
+
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
@@ -584,6 +645,16 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies:
delayed-stream "~1.0.0"
+command-line-args@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.1.1.tgz#88e793e5bb3ceb30754a86863f0401ac92fd369a"
+ integrity sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg==
+ dependencies:
+ array-back "^3.0.1"
+ find-replace "^3.0.0"
+ lodash.camelcase "^4.3.0"
+ typical "^4.0.0"
+
commander@^2.12.1, commander@^2.8.1:
version "2.19.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
@@ -710,6 +781,13 @@ diff@^3.2.0:
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
documentdb@1.13.0:
version "1.13.0"
resolved "https://registry.yarnpkg.com/documentdb/-/documentdb-1.13.0.tgz#bba6f03150b2f42498cec4261bc439d834a33f8b"
@@ -829,11 +907,30 @@ fast-deep-equal@^1.0.0:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
+fast-glob@^3.0.3:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.0.4.tgz#d484a41005cb6faeb399b951fd1bd70ddaebb602"
+ integrity sha512-wkIbV6qg37xTJwqSsdnIphL1e+LaGz4AIQqr00mIubMaEhv1/HEmJ0uuCGZRNRUkZZmOB5mJKO0ZUTVq+SxMQg==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.1"
+ "@nodelib/fs.walk" "^1.2.1"
+ glob-parent "^5.0.0"
+ is-glob "^4.0.1"
+ merge2 "^1.2.3"
+ micromatch "^4.0.2"
+
fast-json-stable-stringify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+fastq@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2"
+ integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==
+ dependencies:
+ reusify "^1.0.0"
+
fd-slicer@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
@@ -841,6 +938,20 @@ fd-slicer@~1.1.0:
dependencies:
pend "~1.2.0"
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-replace@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38"
+ integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==
+ dependencies:
+ array-back "^3.0.1"
+
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -864,6 +975,15 @@ form-data@~2.3.1:
combined-stream "1.0.6"
mime-types "^2.1.12"
+fs-extra@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
+ integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -886,6 +1006,13 @@ github-releases@^0.4.1:
prettyjson "1.2.1"
request "2.81.0"
+glob-parent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954"
+ integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==
+ dependencies:
+ is-glob "^4.0.1"
+
glob@^7.0.6, glob@^7.1.1:
version "7.1.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
@@ -898,6 +1025,32 @@ glob@^7.0.6, glob@^7.1.1:
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@^7.1.3:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globby@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22"
+ integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.0.3"
+ glob "^7.1.3"
+ ignore "^5.1.1"
+ merge2 "^1.2.3"
+ slash "^3.0.0"
+
glogg@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810"
@@ -910,6 +1063,11 @@ graceful-fs@4.X:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
+ integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
+
gulp-bom@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/gulp-bom/-/gulp-bom-1.0.0.tgz#38a183a07187bd57a7922d37977441f379df2abf"
@@ -1086,6 +1244,11 @@ iconv-lite@0.4.23:
dependencies:
safer-buffer ">= 2.1.2 < 3"
+ignore@^5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558"
+ integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==
+
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -1094,21 +1257,75 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+is-absolute@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576"
+ integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==
+ dependencies:
+ is-relative "^1.0.0"
+ is-windows "^1.0.1"
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-glob@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-negated-glob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
+ integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-relative@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
+ integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==
+ dependencies:
+ is-unc-path "^1.0.0"
+
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+is-unc-path@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d"
+ integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==
+ dependencies:
+ unc-path-regex "^0.1.2"
+
is-utf8@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+is-windows@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
@@ -1171,6 +1388,13 @@ json-stringify-safe@~5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
@@ -1248,6 +1472,11 @@ lodash._root@^3.0.0:
resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+
lodash.escape@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
@@ -1331,6 +1560,19 @@ mdurl@^1.0.1:
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+merge2@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5"
+ integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==
+
+micromatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
+ integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.0.5"
+
mime-db@~1.30.0:
version "1.30.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
@@ -1382,6 +1624,17 @@ ms@2.0.0:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+multimatch@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3"
+ integrity sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==
+ dependencies:
+ "@types/minimatch" "^3.0.3"
+ array-differ "^3.0.0"
+ array-union "^2.1.0"
+ arrify "^2.0.1"
+ minimatch "^3.0.4"
+
multipipe@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
@@ -1480,6 +1733,11 @@ path-parse@^1.0.5:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
@@ -1495,6 +1753,11 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+picomatch@^2.0.5:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6"
+ integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==
+
prettyjson@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prettyjson/-/prettyjson-1.2.1.tgz#fcffab41d19cab4dfae5e575e64246619b12d289"
@@ -1667,6 +1930,16 @@ resolve@^1.3.2:
dependencies:
path-parse "^1.0.5"
+reusify@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+run-parallel@^1.1.9:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
+ integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
+
safe-buffer@^5.0.1, safe-buffer@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
@@ -1702,6 +1975,11 @@ semver@^5.1.0, semver@^5.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
sntp@1.x.x:
version "1.0.9"
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
@@ -1825,6 +2103,13 @@ tmp@0.0.29:
dependencies:
os-tmpdir "~1.0.1"
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
tough-cookie@~2.3.0:
version "2.3.3"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
@@ -1839,6 +2124,20 @@ tough-cookie@~2.3.3:
dependencies:
punycode "^1.4.1"
+ts-morph@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-3.1.3.tgz#bbfa1d14481ee23bdd1c030340ccf4a243cfc844"
+ integrity sha512-CwjgyJTtd3f8vBi7Vr0IOgdOY6Wi/Tq0MhieXOE2B5ns5WWRD7BwMNHtv+ZufKI/S2U/lMrh+Q3bOauE4tsv2g==
+ dependencies:
+ "@dsherret/to-absolute-glob" "^2.0.2"
+ code-block-writer "9.4.1"
+ fs-extra "^8.1.0"
+ glob-parent "^5.0.0"
+ globby "^10.0.1"
+ is-negated-glob "^1.0.0"
+ multimatch "^4.0.0"
+ typescript "^3.0.1"
+
tslib@^1.8.0, tslib@^1.8.1:
version "1.9.3"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
@@ -1894,16 +2193,31 @@ typed-rest-client@^0.9.0:
tunnel "0.0.4"
underscore "1.8.3"
-typescript@3.2.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5"
- integrity sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==
+typescript@3.5.2:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c"
+ integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==
+
+typescript@^3.0.1:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977"
+ integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==
+
+typical@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4"
+ integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==
uc.micro@^1.0.1, uc.micro@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376"
integrity sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==
+unc-path-regex@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
+ integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo=
+
underscore@1.8.3, underscore@~1.8.3:
version "1.8.3"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022"
@@ -1914,6 +2228,11 @@ underscore@^1.8.3:
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961"
integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
urix@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
@@ -1994,6 +2313,20 @@ vsce@1.48.0:
yauzl "^2.3.1"
yazl "^2.2.2"
+vscode-ripgrep@^1.5.5:
+ version "1.5.5"
+ resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.5.5.tgz#24c0e9cb356cf889c98e15ecb58f9cf654a1d961"
+ integrity sha512-OrPrAmcun4+uZAuNcQvE6CCPskh+5AsjANod/Q3zRcJcGNxgoOSGlQN9RPtatkUNmkN8Nn8mZBnS1jMylu/dKg==
+
+vscode-telemetry-extractor@1.5.3:
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/vscode-telemetry-extractor/-/vscode-telemetry-extractor-1.5.3.tgz#c17f9065a47425edafd23ea161e80c23274e009d"
+ integrity sha512-feioJ1e1KyMa9rzblnLbSOduo+Ny0l62H3/bSDgfgCSnU/km+tTSYxPBvZHVr7iQfQGC95J61yC/ObqS9EbaQg==
+ dependencies:
+ command-line-args "^5.1.1"
+ ts-morph "^3.1.3"
+ vscode-ripgrep "^1.5.5"
+
vso-node-api@6.1.2-preview:
version "6.1.2-preview"
resolved "https://registry.yarnpkg.com/vso-node-api/-/vso-node-api-6.1.2-preview.tgz#aab3546df2451ecd894e071bb99b5df19c5fa78f"
diff --git a/cglicenses.json b/cglicenses.json
index 3d96813f3ef..b7f408109bf 100644
--- a/cglicenses.json
+++ b/cglicenses.json
@@ -6,694 +6,768 @@
// DO NOT EDIT THIS FILE UNLESS THE OSS TOOL INDICATES THAT YOU SHOULD.
//
[
-{
- // Reason: The license at https://github.com/aadsm/jschardet/blob/master/LICENSE
- // does not include a clear Copyright statement and does not credit authors.
- "name": "jschardet",
- "licenseDetail": [
- "Chardet was originally ported from C++ by Mark Pilgrim. It is now maintained",
- " by Dan Blanchard and Ian Cordasco, and was formerly maintained by Erik Rose.",
- " JSChardet was ported from python to JavaScript by António Afonso ",
- " (https://github.com/aadsm/jschardet) and transformed into an npm package by ",
- "Markus Ast (https://github.com/brainafk)",
- "",
- "GNU LESSER GENERAL PUBLIC LICENSE",
- "\t\t Version 2.1, February 1999",
- "",
- " Copyright (C) 1991,",
- "1999 Free Software Foundation, Inc.",
- " 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA",
- " Everyone is permitted to copy and distribute verbatim copies",
- " of this license document, but changing it is not allowed.",
- "",
- "[This is the first released version of the Lesser GPL. It also counts",
- " as the successor of the GNU Library Public License, version 2, hence",
- " the version number 2.1.",
- "]",
- "",
- "\t\t\t Preamble",
- "",
- " The licenses for most software are designed to take away your",
- "freedom to share and change it. By contrast, the GNU General Public",
- "Licenses are intended to guarantee your freedom to share and change",
- "free software--to make sure the software is free for all its users.",
- "",
- " This license, the Lesser General Public License, applies to some",
- "specially designated software packages--typically libraries--of the",
- "Free Software Foundation and other authors who decide to use it. You",
- "can use it too, but we suggest you first think carefully about whether",
- "this license or the ordinary General Public License is the better",
- "strategy to use in any particular case, based on the explanations below.",
- "",
- " When we speak of free software, we are referring to freedom of use,",
- "not price. Our General Public Licenses are designed to make sure that",
- "you have the freedom to distribute copies of free software (and charge",
- "for this service if you wish); that you receive source code or can get",
- "it if you want it; that you can change the software and use pieces of",
- "it in new free programs; and that you are informed that you can do",
- "these things.",
- "",
- " To protect your rights, we need to make restrictions that forbid",
- "distributors to deny you these rights or to ask you to surrender these",
- "rights. These restrictions translate to certain responsibilities for",
- "you if you distribute copies of the library or if you modify it.",
- "",
- " For example, if you distribute copies of the library, whether gratis",
- "or for a fee, you must give the recipients all the rights that we gave",
- "you. You must make sure that they, too, receive or can get the source",
- "code. If you link other code with the library, you must provide",
- "complete object files to the recipients, so that they can relink them",
- "with the library after making changes to the library and recompiling",
- "it. And you must show them these terms so they know their rights.",
- "",
- " We protect your rights with a two-step method: (1) we copyright the",
- "library, and (2) we offer you this license, which gives you legal",
- "permission to copy, distribute and/or modify the library.",
- "",
- " To protect each distributor, we want to make it very clear that",
- "there is no warranty for the free library. Also, if the library is",
- "modified by someone else and passed on, the recipients should know",
- "that what they have is not the original version, so that the original",
- "author's reputation will not be affected by problems that might be",
- "introduced by others.",
- "",
- " Finally, software patents pose a constant threat to the existence of",
- "any free program. We wish to make sure that a company cannot",
- "effectively restrict the users of a free program by obtaining a",
- "restrictive license from a patent holder. Therefore, we insist that",
- "any patent license obtained for a version of the library must be",
- "consistent with the full freedom of use specified in this license.",
- "",
- " Most GNU software, including some libraries, is covered by the",
- "ordinary GNU General Public License. This license, the GNU Lesser",
- "General Public License, applies to certain designated libraries, and",
- "is quite different from the ordinary General Public License. We use",
- "this license for certain libraries in order to permit linking those",
- "libraries into non-free programs.",
- "",
- " When a program is linked with a library, whether statically or using",
- "a shared library, the combination of the two is legally speaking a",
- "combined work, a derivative of the original library. The ordinary",
- "General Public License therefore permits such linking only if the",
- "entire combination fits its criteria of freedom. The Lesser General",
- "Public License permits more lax criteria for linking other code with",
- "the library.",
- "",
- " We call this license the \"Lesser\" General Public License because it",
- "does Less to protect the user's freedom than the ordinary General",
- "Public License. It also provides other free software developers Less",
- "of an advantage over competing non-free programs. These disadvantages",
- "are the reason we use the ordinary General Public License for many",
- "libraries. However, the Lesser license provides advantages in certain",
- "special circumstances.",
- "",
- " For example, on rare occasions, there may be a special need to",
- "encourage the widest possible use of a certain library, so that it becomes",
- "a de-facto standard. To achieve this, non-free programs must be",
- "allowed to use the library. A more frequent case is that a free",
- "library does the same job as widely used non-free libraries. In this",
- "case, there is little to gain by limiting the free library to free",
- "software only, so we use the Lesser General Public License.",
- "",
- " In other cases, permission to use a particular library in non-free",
- "programs enables a greater number of people to use a large body of",
- "free software. For example, permission to use the GNU C Library in",
- "non-free programs enables many more people to use the whole GNU",
- "operating system, as well as its variant, the GNU/Linux operating",
- "system.",
- "",
- " Although the Lesser General Public License is Less protective of the",
- "users' freedom, it does ensure that the user of a program that is",
- "linked with the Library has the freedom and the wherewithal to run",
- "that program using a modified version of the Library.",
- "",
- " The precise terms and conditions for copying, distribution and",
- "modification follow. Pay close attention to the difference between a",
- "\"work based on the library\" and a \"work that uses the library\". The",
- "former contains code derived from the library, whereas the latter must",
- "be combined with the library in order to run.",
- "",
- "\t\t GNU LESSER GENERAL PUBLIC LICENSE",
- " TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION",
- "",
- " 0. This License Agreement applies to any software library or other",
- "program which contains a notice placed by the copyright holder or",
- "other authorized party saying it may be distributed under the terms of",
- "this Lesser General Public License (also called \"this License\").",
- "Each licensee is addressed as \"you\".",
- "",
- " A \"library\" means a collection of software functions and/or data",
- "prepared so as to be conveniently linked with application programs",
- "(which use some of those functions and data) to form executables.",
- "",
- " The \"Library\", below, refers to any such software library or work",
- "which has been distributed under these terms. A \"work based on the",
- "Library\" means either the Library or any derivative work under",
- "copyright law: that is to say, a work containing the Library or a",
- "portion of it, either verbatim or with modifications and/or translated",
- "straightforwardly into another language. (Hereinafter, translation is",
- "included without limitation in the term \"modification\".)",
- "",
- " \"Source code\" for a work means the preferred form of the work for",
- "making modifications to it. For a library, complete source code means",
- "all the source code for all modules it contains, plus any associated",
- "interface definition files, plus the scripts used to control compilation",
- "and installation of the library.",
- "",
- " Activities other than copying, distribution and modification are not",
- "covered by this License; they are outside its scope. The act of",
- "running a program using the Library is not restricted, and output from",
- "such a program is covered only if its contents constitute a work based",
- "on the Library (independent of the use of the Library in a tool for",
- "writing it). Whether that is true depends on what the Library does",
- "and what the program that uses the Library does.",
- "",
- " 1. You may copy and distribute verbatim copies of the Library's",
- "complete source code as you receive it, in any medium, provided that",
- "you conspicuously and appropriately publish on each copy an",
- "appropriate copyright notice and disclaimer of warranty; keep intact",
- "all the notices that refer to this License and to the absence of any",
- "warranty; and distribute a copy of this License along with the",
- "Library.",
- "",
- " You may charge a fee for the physical act of transferring a copy,",
- "and you may at your option offer warranty protection in exchange for a",
- "fee.",
- "",
- " 2. You may modify your copy or copies of the Library or any portion",
- "of it, thus forming a work based on the Library, and copy and",
- "distribute such modifications or work under the terms of Section 1",
- "above, provided that you also meet all of these conditions:",
- "",
- " a) The modified work must itself be a software library.",
- "",
- " b) You must cause the files modified to carry prominent notices",
- " stating that you changed the files and the date of any change.",
- "",
- " c) You must cause the whole of the work to be licensed at no",
- " charge to all third parties under the terms of this License.",
- "",
- " d) If a facility in the modified Library refers to a function or a",
- " table of data to be supplied by an application program that uses",
- " the facility, other than as an argument passed when the facility",
- " is invoked, then you must make a good faith effort to ensure that,",
- " in the event an application does not supply such function or",
- " table, the facility still operates, and performs whatever part of",
- " its purpose remains meaningful.",
- "",
- " (For example, a function in a library to compute square roots has",
- " a purpose that is entirely well-defined independent of the",
- " application. Therefore, Subsection 2d requires that any",
- " application-supplied function or table used by this function must",
- " be optional: if the application does not supply it, the square",
- " root function must still compute square roots.)",
- "",
- "These requirements apply to the modified work as a whole. If",
- "identifiable sections of that work are not derived from the Library,",
- "and can be reasonably considered independent and separate works in",
- "themselves, then this License, and its terms, do not apply to those",
- "sections when you distribute them as separate works. But when you",
- "distribute the same sections as part of a whole which is a work based",
- "on the Library, the distribution of the whole must be on the terms of",
- "this License, whose permissions for other licensees extend to the",
- "entire whole, and thus to each and every part regardless of who wrote",
- "it.",
- "",
- "Thus, it is not the intent of this section to claim rights or contest",
- "your rights to work written entirely by you; rather, the intent is to",
- "exercise the right to control the distribution of derivative or",
- "collective works based on the Library.",
- "",
- "In addition, mere aggregation of another work not based on the Library",
- "with the Library (or with a work based on the Library) on a volume of",
- "a storage or distribution medium does not bring the other work under",
- "the scope of this License.",
- "",
- " 3. You may opt to apply the terms of the ordinary GNU General Public",
- "License instead of this License to a given copy of the Library. To do",
- "this, you must alter all the notices that refer to this License, so",
- "that they refer to the ordinary GNU General Public License, version 2,",
- "instead of to this License. (If a newer version than version 2 of the",
- "ordinary GNU General Public License has appeared, then you can specify",
- "that version instead if you wish.) Do not make any other change in",
- "these notices.",
- "",
- " Once this change is made in a given copy, it is irreversible for",
- "that copy, so the ordinary GNU General Public License applies to all",
- "subsequent copies and derivative works made from that copy.",
- "",
- " This option is useful when you wish to copy part of the code of",
- "the Library into a program that is not a library.",
- "",
- " 4. You may copy and distribute the Library (or a portion or",
- "derivative of it, under Section 2) in object code or executable form",
- "under the terms of Sections 1 and 2 above provided that you accompany",
- "it with the complete corresponding machine-readable source code, which",
- "must be distributed under the terms of Sections 1 and 2 above on a",
- "medium customarily used for software interchange.",
- "",
- " If distribution of object code is made by offering access to copy",
- "from a designated place, then offering equivalent access to copy the",
- "source code from the same place satisfies the requirement to",
- "distribute the source code, even though third parties are not",
- "compelled to copy the source along with the object code.",
- "",
- " 5. A program that contains no derivative of any portion of the",
- "Library, but is designed to work with the Library by being compiled or",
- "linked with it, is called a \"work that uses the Library\". Such a",
- "work, in isolation, is not a derivative work of the Library, and",
- "therefore falls outside the scope of this License.",
- "",
- " However, linking a \"work that uses the Library\" with the Library",
- "creates an executable that is a derivative of the Library (because it",
- "contains portions of the Library), rather than a \"work that uses the",
- "library\". The executable is therefore covered by this License.",
- "Section 6 states terms for distribution of such executables.",
- "",
- " When a \"work that uses the Library\" uses material from a header file",
- "that is part of the Library, the object code for the work may be a",
- "derivative work of the Library even though the source code is not.",
- "Whether this is true is especially significant if the work can be",
- "linked without the Library, or if the work is itself a library. The",
- "threshold for this to be true is not precisely defined by law.",
- "",
- " If such an object file uses only numerical parameters, data",
- "structure layouts and accessors, and small macros and small inline",
- "functions (ten lines or less in length), then the use of the object",
- "file is unrestricted, regardless of whether it is legally a derivative",
- "work. (Executables containing this object code plus portions of the",
- "Library will still fall under Section 6.)",
- "",
- " Otherwise, if the work is a derivative of the Library, you may",
- "distribute the object code for the work under the terms of Section 6.",
- "Any executables containing that work also fall under Section 6,",
- "whether or not they are linked directly with the Library itself.",
- "",
- " 6. As an exception to the Sections above, you may also combine or",
- "link a \"work that uses the Library\" with the Library to produce a",
- "work containing portions of the Library, and distribute that work",
- "under terms of your choice, provided that the terms permit",
- "modification of the work for the customer's own use and reverse",
- "engineering for debugging such modifications.",
- "",
- " You must give prominent notice with each copy of the work that the",
- "Library is used in it and that the Library and its use are covered by",
- "this License. You must supply a copy of this License. If the work",
- "during execution displays copyright notices, you must include the",
- "copyright notice for the Library among them, as well as a reference",
- "directing the user to the copy of this License. Also, you must do one",
- "of these things:",
- "",
- " a) Accompany the work with the complete corresponding",
- " machine-readable source code for the Library including whatever",
- " changes were used in the work (which must be distributed under",
- " Sections 1 and 2 above); and, if the work is an executable linked",
- " with the Library, with the complete machine-readable \"work that",
- " uses the Library\", as object code and/or source code, so that the",
- " user can modify the Library and then relink to produce a modified",
- " executable containing the modified Library. (It is understood",
- " that the user who changes the contents of definitions files in the",
- " Library will not necessarily be able to recompile the application",
- " to use the modified definitions.)",
- "",
- " b) Use a suitable shared library mechanism for linking with the",
- " Library. A suitable mechanism is one that (1) uses at run time a",
- " copy of the library already present on the user's computer system,",
- " rather than copying library functions into the executable, and (2)",
- " will operate properly with a modified version of the library, if",
- " the user installs one, as long as the modified version is",
- " interface-compatible with the version that the work was made with.",
- "",
- " c) Accompany the work with a written offer, valid for at",
- " least three years, to give the same user the materials",
- " specified in Subsection 6a, above, for a charge no more",
- " than the cost of performing this distribution.",
- "",
- " d) If distribution of the work is made by offering access to copy",
- " from a designated place, offer equivalent access to copy the above",
- " specified materials from the same place.",
- "",
- " e) Verify that the user has already received a copy of these",
- " materials or that you have already sent this user a copy.",
- "",
- " For an executable, the required form of the \"work that uses the",
- "Library\" must include any data and utility programs needed for",
- "reproducing the executable from it. However, as a special exception,",
- "the materials to be distributed need not include anything that is",
- "normally distributed (in either source or binary form) with the major",
- "components (compiler, kernel, and so on) of the operating system on",
- "which the executable runs, unless that component itself accompanies",
- "the executable.",
- "",
- " It may happen that this requirement contradicts the license",
- "restrictions of other proprietary libraries that do not normally",
- "accompany the operating system. Such a contradiction means you cannot",
- "use both them and the Library together in an executable that you",
- "distribute.",
- "",
- " 7. You may place library facilities that are a work based on the",
- "Library side-by-side in a single library together with other library",
- "facilities not covered by this License, and distribute such a combined",
- "library, provided that the separate distribution of the work based on",
- "the Library and of the other library facilities is otherwise",
- "permitted, and provided that you do these two things:",
- "",
- " a) Accompany the combined library with a copy of the same work",
- " based on the Library, uncombined with any other library",
- " facilities. This must be distributed under the terms of the",
- " Sections above.",
- "",
- " b) Give prominent notice with the combined library of the fact",
- " that part of it is a work based on the Library, and explaining",
- " where to find the accompanying uncombined form of the same work.",
- "",
- " 8. You may not copy, modify, sublicense, link with, or distribute",
- "the Library except as expressly provided under this License. Any",
- "attempt otherwise to copy, modify, sublicense, link with, or",
- "distribute the Library is void, and will automatically terminate your",
- "rights under this License. However, parties who have received copies,",
- "or rights, from you under this License will not have their licenses",
- "terminated so long as such parties remain in full compliance.",
- "",
- " 9. You are not required to accept this License, since you have not",
- "signed it. However, nothing else grants you permission to modify or",
- "distribute the Library or its derivative works. These actions are",
- "prohibited by law if you do not accept this License. Therefore, by",
- "modifying or distributing the Library (or any work based on the",
- "Library), you indicate your acceptance of this License to do so, and",
- "all its terms and conditions for copying, distributing or modifying",
- "the Library or works based on it.",
- "",
- " 10. Each time you redistribute the Library (or any work based on the",
- "Library), the recipient automatically receives a license from the",
- "original licensor to copy, distribute, link with or modify the Library",
- "subject to these terms and conditions. You may not impose any further",
- "restrictions on the recipients' exercise of the rights granted herein.",
- "You are not responsible for enforcing compliance by third parties with",
- "this License.",
- "",
- " 11. If, as a consequence of a court judgment or allegation of patent",
- "infringement or for any other reason (not limited to patent issues),",
- "conditions are imposed on you (whether by court order, agreement or",
- "otherwise) that contradict the conditions of this License, they do not",
- "excuse you from the conditions of this License. If you cannot",
- "distribute so as to satisfy simultaneously your obligations under this",
- "License and any other pertinent obligations, then as a consequence you",
- "may not distribute the Library at all. For example, if a patent",
- "license would not permit royalty-free redistribution of the Library by",
- "all those who receive copies directly or indirectly through you, then",
- "the only way you could satisfy both it and this License would be to",
- "refrain entirely from distribution of the Library.",
- "",
- "If any portion of this section is held invalid or unenforceable under any",
- "particular circumstance, the balance of the section is intended to apply,",
- "and the section as a whole is intended to apply in other circumstances.",
- "",
- "It is not the purpose of this section to induce you to infringe any",
- "patents or other property right claims or to contest validity of any",
- "such claims; this section has the sole purpose of protecting the",
- "integrity of the free software distribution system which is",
- "implemented by public license practices. Many people have made",
- "generous contributions to the wide range of software distributed",
- "through that system in reliance on consistent application of that",
- "system; it is up to the author/donor to decide if he or she is willing",
- "to distribute software through any other system and a licensee cannot",
- "impose that choice.",
- "",
- "This section is intended to make thoroughly clear what is believed to",
- "be a consequence of the rest of this License.",
- "",
- " 12. If the distribution and/or use of the Library is restricted in",
- "certain countries either by patents or by copyrighted interfaces, the",
- "original copyright holder who places the Library under this License may add",
- "an explicit geographical distribution limitation excluding those countries,",
- "so that distribution is permitted only in or among countries not thus",
- "excluded. In such case, this License incorporates the limitation as if",
- "written in the body of this License.",
- "",
- " 13. The Free Software Foundation may publish revised and/or new",
- "versions of the Lesser General Public License from time to time.",
- "Such new versions will be similar in spirit to the present version,",
- "but may differ in detail to address new problems or concerns.",
- "",
- "Each version is given a distinguishing version number. If the Library",
- "specifies a version number of this License which applies to it and",
- "\"any later version\", you have the option of following the terms and",
- "conditions either of that version or of any later version published by",
- "the Free Software Foundation. If the Library does not specify a",
- "license version number, you may choose any version ever published by",
- "the Free Software Foundation.",
- "",
- " 14. If you wish to incorporate parts of the Library into other free",
- "programs whose distribution conditions are incompatible with these,",
- "write to the author to ask for permission. For software which is",
- "copyrighted by the Free Software Foundation, write to the Free",
- "Software Foundation; we sometimes make exceptions for this. Our",
- "decision will be guided by the two goals of preserving the free status",
- "of all derivatives of our free software and of promoting the sharing",
- "and reuse of software generally.",
- "",
- "\t\t\t NO WARRANTY",
- "",
- " 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO",
- "WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.",
- "EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR",
- "OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY",
- "KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE",
- "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR",
- "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE",
- "LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME",
- "THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.",
- "",
- " 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN",
- "WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY",
- "AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU",
- "FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR",
- "CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE",
- "LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING",
- "RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A",
- "FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF",
- "SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH",
- "DAMAGES.",
- "",
- "\t\t END OF TERMS AND CONDITIONS",
- "",
- " How to Apply These Terms to Your New Libraries",
- "",
- " If you develop a new library, and you want it to be of the greatest",
- "possible use to the public, we recommend making it free software that",
- "everyone can redistribute and change. You can do so by permitting",
- "redistribution under these terms (or, alternatively, under the terms of the",
- "ordinary General Public License).",
- "",
- " To apply these terms, attach the following notices to the library. It is",
- "safest to attach them to the start of each source file to most effectively",
- "convey the exclusion of warranty; and each file should have at least the",
- "\"copyright\" line and a pointer to where the full notice is found.",
- "",
- " ",
- " Copyright (C) ",
- "",
- " This library is free software; you can redistribute it and/or",
- " modify it under the terms of the GNU Lesser General Public",
- " License as published by the Free Software Foundation; either",
- " version 2.1 of the License, or (at your option) any later version.",
- "",
- " This library is distributed in the hope that it will be useful,",
- " but WITHOUT ANY WARRANTY; without even the implied warranty of",
- " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU",
- " Lesser General Public License for more details.",
- "",
- " You should have received a copy of the GNU Lesser General Public",
- " License along with this library; if not, write to the Free Software",
- " Foundation, Inc.,",
- "51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA",
- "",
- "Also add information on how to contact you by electronic and paper mail.",
- "",
- "You should also get your employer (if you work as a programmer) or your",
- "school, if any, to sign a \"copyright disclaimer\" for the library, if",
- "necessary. Here is a sample; alter the names:",
- "",
- " Yoyodyne, Inc., hereby disclaims all copyright interest in the",
- " library `Frob' (a library for tweaking knobs) written by James Random Hacker.",
- "",
- " ,",
- "1 April 1990",
- " Ty Coon, President of Vice",
- "",
- "That's all there is to it!"
- ]
-},
-{
- // Added here because the module `parse5` has a dependency to it.
- // The module `parse5` is shipped via the `extension-editing` built-in extension.
- // The module `parse5` does not want to remove it https://github.com/inikulin/parse5/issues/225
- "name": "@types/node",
- "licenseDetail": [
- "This project is licensed under the MIT license.",
- "Copyrights are respective of each contributor listed at the beginning of each definition file.",
- "",
- "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
- "",
- "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
- "",
- "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
- ]
-},
-{
- // We override the license that gets discovered at
- // https://github.com/Microsoft/TypeScript/blob/master/LICENSE.txt
- // because it does not contain a Copyright statement
- "name": "typescript",
- "licenseDetail": [
- "Copyright (c) Microsoft Corporation. All rights reserved.",
- "",
- "Apache License",
- "",
- "Version 2.0, January 2004",
- "",
- "http://www.apache.org/licenses/",
- "",
- "TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION",
- "",
- "1. Definitions.",
- "",
- "\"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.",
- "",
- "\"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.",
- "",
- "\"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.",
- "",
- "\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License.",
- "",
- "\"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.",
- "",
- "\"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.",
- "",
- "\"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).",
- "",
- "\"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.",
- "",
- "\"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"",
- "",
- "\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.",
- "",
- "2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.",
- "",
- "3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.",
- "",
- "4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:",
- "",
- "You must give any other recipients of the Work or Derivative Works a copy of this License; and",
- "",
- "You must cause any modified files to carry prominent notices stating that You changed the files; and",
- "",
- "You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and",
- "",
- "If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.",
- "",
- "5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.",
- "",
- "6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.",
- "",
- "7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.",
- "",
- "8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.",
- "",
- "9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.",
- "",
- "END OF TERMS AND CONDITIONS"
- ]
-},
-{
- // This module comes in from https://github.com/Microsoft/vscode-node-debug2/blob/master/package-lock.json
- "name": "@types/source-map",
- "licenseDetail": [
- "This project is licensed under the MIT license.",
- "Copyrights are respective of each contributor listed at the beginning of each definition file.",
- "",
- "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
- "",
- "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
- "",
- "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
- ]
-},
-{
- "name": "tunnel-agent",
- "licenseDetail": [
- "Copyright (c) tunnel-agent authors",
- "",
- "Apache License",
- "",
- "Version 2.0, January 2004",
- "",
- "http://www.apache.org/licenses/",
- "",
- "TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION",
- "",
- "1. Definitions.",
- "",
- "\"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.",
- "",
- "\"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.",
- "",
- "\"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.",
- "",
- "\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License.",
- "",
- "\"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.",
- "",
- "\"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.",
- "",
- "\"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).",
- "",
- "\"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.",
- "",
- "\"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"",
- "",
- "\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.",
- "",
- "2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.",
- "",
- "3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.",
- "",
- "4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:",
- "",
- "You must give any other recipients of the Work or Derivative Works a copy of this License; and",
- "",
- "You must cause any modified files to carry prominent notices stating that You changed the files; and",
- "",
- "You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and",
- "",
- "If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.",
- "",
- "5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.",
- "",
- "6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.",
- "",
- "7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.",
- "",
- "8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.",
- "",
- "9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.",
- "",
- "END OF TERMS AND CONDITIONS"
- ]
-},
-{
- // Waiting for https://github.com/segmentio/noop-logger/issues/2
- "name": "noop-logger",
- "licenseDetail": [
- "This project is licensed under the MIT license.",
- "Copyrights are respective of each contributor listed at the beginning of each definition file.",
- "",
- "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
- "",
- "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
- "",
- "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
- ]
-}
-]
\ No newline at end of file
+ {
+ // Reason: The license at https://github.com/aadsm/jschardet/blob/master/LICENSE
+ // does not include a clear Copyright statement and does not credit authors.
+ "name": "jschardet",
+ "licenseDetail": [
+ "Chardet was originally ported from C++ by Mark Pilgrim. It is now maintained",
+ " by Dan Blanchard and Ian Cordasco, and was formerly maintained by Erik Rose.",
+ " JSChardet was ported from python to JavaScript by António Afonso ",
+ " (https://github.com/aadsm/jschardet) and transformed into an npm package by ",
+ "Markus Ast (https://github.com/brainafk)",
+ "",
+ "GNU LESSER GENERAL PUBLIC LICENSE",
+ "\t\t Version 2.1, February 1999",
+ "",
+ " Copyright (C) 1991,",
+ "1999 Free Software Foundation, Inc.",
+ " 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA",
+ " Everyone is permitted to copy and distribute verbatim copies",
+ " of this license document, but changing it is not allowed.",
+ "",
+ "[This is the first released version of the Lesser GPL. It also counts",
+ " as the successor of the GNU Library Public License, version 2, hence",
+ " the version number 2.1.",
+ "]",
+ "",
+ "\t\t\t Preamble",
+ "",
+ " The licenses for most software are designed to take away your",
+ "freedom to share and change it. By contrast, the GNU General Public",
+ "Licenses are intended to guarantee your freedom to share and change",
+ "free software--to make sure the software is free for all its users.",
+ "",
+ " This license, the Lesser General Public License, applies to some",
+ "specially designated software packages--typically libraries--of the",
+ "Free Software Foundation and other authors who decide to use it. You",
+ "can use it too, but we suggest you first think carefully about whether",
+ "this license or the ordinary General Public License is the better",
+ "strategy to use in any particular case, based on the explanations below.",
+ "",
+ " When we speak of free software, we are referring to freedom of use,",
+ "not price. Our General Public Licenses are designed to make sure that",
+ "you have the freedom to distribute copies of free software (and charge",
+ "for this service if you wish); that you receive source code or can get",
+ "it if you want it; that you can change the software and use pieces of",
+ "it in new free programs; and that you are informed that you can do",
+ "these things.",
+ "",
+ " To protect your rights, we need to make restrictions that forbid",
+ "distributors to deny you these rights or to ask you to surrender these",
+ "rights. These restrictions translate to certain responsibilities for",
+ "you if you distribute copies of the library or if you modify it.",
+ "",
+ " For example, if you distribute copies of the library, whether gratis",
+ "or for a fee, you must give the recipients all the rights that we gave",
+ "you. You must make sure that they, too, receive or can get the source",
+ "code. If you link other code with the library, you must provide",
+ "complete object files to the recipients, so that they can relink them",
+ "with the library after making changes to the library and recompiling",
+ "it. And you must show them these terms so they know their rights.",
+ "",
+ " We protect your rights with a two-step method: (1) we copyright the",
+ "library, and (2) we offer you this license, which gives you legal",
+ "permission to copy, distribute and/or modify the library.",
+ "",
+ " To protect each distributor, we want to make it very clear that",
+ "there is no warranty for the free library. Also, if the library is",
+ "modified by someone else and passed on, the recipients should know",
+ "that what they have is not the original version, so that the original",
+ "author's reputation will not be affected by problems that might be",
+ "introduced by others.",
+ "",
+ " Finally, software patents pose a constant threat to the existence of",
+ "any free program. We wish to make sure that a company cannot",
+ "effectively restrict the users of a free program by obtaining a",
+ "restrictive license from a patent holder. Therefore, we insist that",
+ "any patent license obtained for a version of the library must be",
+ "consistent with the full freedom of use specified in this license.",
+ "",
+ " Most GNU software, including some libraries, is covered by the",
+ "ordinary GNU General Public License. This license, the GNU Lesser",
+ "General Public License, applies to certain designated libraries, and",
+ "is quite different from the ordinary General Public License. We use",
+ "this license for certain libraries in order to permit linking those",
+ "libraries into non-free programs.",
+ "",
+ " When a program is linked with a library, whether statically or using",
+ "a shared library, the combination of the two is legally speaking a",
+ "combined work, a derivative of the original library. The ordinary",
+ "General Public License therefore permits such linking only if the",
+ "entire combination fits its criteria of freedom. The Lesser General",
+ "Public License permits more lax criteria for linking other code with",
+ "the library.",
+ "",
+ " We call this license the \"Lesser\" General Public License because it",
+ "does Less to protect the user's freedom than the ordinary General",
+ "Public License. It also provides other free software developers Less",
+ "of an advantage over competing non-free programs. These disadvantages",
+ "are the reason we use the ordinary General Public License for many",
+ "libraries. However, the Lesser license provides advantages in certain",
+ "special circumstances.",
+ "",
+ " For example, on rare occasions, there may be a special need to",
+ "encourage the widest possible use of a certain library, so that it becomes",
+ "a de-facto standard. To achieve this, non-free programs must be",
+ "allowed to use the library. A more frequent case is that a free",
+ "library does the same job as widely used non-free libraries. In this",
+ "case, there is little to gain by limiting the free library to free",
+ "software only, so we use the Lesser General Public License.",
+ "",
+ " In other cases, permission to use a particular library in non-free",
+ "programs enables a greater number of people to use a large body of",
+ "free software. For example, permission to use the GNU C Library in",
+ "non-free programs enables many more people to use the whole GNU",
+ "operating system, as well as its variant, the GNU/Linux operating",
+ "system.",
+ "",
+ " Although the Lesser General Public License is Less protective of the",
+ "users' freedom, it does ensure that the user of a program that is",
+ "linked with the Library has the freedom and the wherewithal to run",
+ "that program using a modified version of the Library.",
+ "",
+ " The precise terms and conditions for copying, distribution and",
+ "modification follow. Pay close attention to the difference between a",
+ "\"work based on the library\" and a \"work that uses the library\". The",
+ "former contains code derived from the library, whereas the latter must",
+ "be combined with the library in order to run.",
+ "",
+ "\t\t GNU LESSER GENERAL PUBLIC LICENSE",
+ " TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION",
+ "",
+ " 0. This License Agreement applies to any software library or other",
+ "program which contains a notice placed by the copyright holder or",
+ "other authorized party saying it may be distributed under the terms of",
+ "this Lesser General Public License (also called \"this License\").",
+ "Each licensee is addressed as \"you\".",
+ "",
+ " A \"library\" means a collection of software functions and/or data",
+ "prepared so as to be conveniently linked with application programs",
+ "(which use some of those functions and data) to form executables.",
+ "",
+ " The \"Library\", below, refers to any such software library or work",
+ "which has been distributed under these terms. A \"work based on the",
+ "Library\" means either the Library or any derivative work under",
+ "copyright law: that is to say, a work containing the Library or a",
+ "portion of it, either verbatim or with modifications and/or translated",
+ "straightforwardly into another language. (Hereinafter, translation is",
+ "included without limitation in the term \"modification\".)",
+ "",
+ " \"Source code\" for a work means the preferred form of the work for",
+ "making modifications to it. For a library, complete source code means",
+ "all the source code for all modules it contains, plus any associated",
+ "interface definition files, plus the scripts used to control compilation",
+ "and installation of the library.",
+ "",
+ " Activities other than copying, distribution and modification are not",
+ "covered by this License; they are outside its scope. The act of",
+ "running a program using the Library is not restricted, and output from",
+ "such a program is covered only if its contents constitute a work based",
+ "on the Library (independent of the use of the Library in a tool for",
+ "writing it). Whether that is true depends on what the Library does",
+ "and what the program that uses the Library does.",
+ "",
+ " 1. You may copy and distribute verbatim copies of the Library's",
+ "complete source code as you receive it, in any medium, provided that",
+ "you conspicuously and appropriately publish on each copy an",
+ "appropriate copyright notice and disclaimer of warranty; keep intact",
+ "all the notices that refer to this License and to the absence of any",
+ "warranty; and distribute a copy of this License along with the",
+ "Library.",
+ "",
+ " You may charge a fee for the physical act of transferring a copy,",
+ "and you may at your option offer warranty protection in exchange for a",
+ "fee.",
+ "",
+ " 2. You may modify your copy or copies of the Library or any portion",
+ "of it, thus forming a work based on the Library, and copy and",
+ "distribute such modifications or work under the terms of Section 1",
+ "above, provided that you also meet all of these conditions:",
+ "",
+ " a) The modified work must itself be a software library.",
+ "",
+ " b) You must cause the files modified to carry prominent notices",
+ " stating that you changed the files and the date of any change.",
+ "",
+ " c) You must cause the whole of the work to be licensed at no",
+ " charge to all third parties under the terms of this License.",
+ "",
+ " d) If a facility in the modified Library refers to a function or a",
+ " table of data to be supplied by an application program that uses",
+ " the facility, other than as an argument passed when the facility",
+ " is invoked, then you must make a good faith effort to ensure that,",
+ " in the event an application does not supply such function or",
+ " table, the facility still operates, and performs whatever part of",
+ " its purpose remains meaningful.",
+ "",
+ " (For example, a function in a library to compute square roots has",
+ " a purpose that is entirely well-defined independent of the",
+ " application. Therefore, Subsection 2d requires that any",
+ " application-supplied function or table used by this function must",
+ " be optional: if the application does not supply it, the square",
+ " root function must still compute square roots.)",
+ "",
+ "These requirements apply to the modified work as a whole. If",
+ "identifiable sections of that work are not derived from the Library,",
+ "and can be reasonably considered independent and separate works in",
+ "themselves, then this License, and its terms, do not apply to those",
+ "sections when you distribute them as separate works. But when you",
+ "distribute the same sections as part of a whole which is a work based",
+ "on the Library, the distribution of the whole must be on the terms of",
+ "this License, whose permissions for other licensees extend to the",
+ "entire whole, and thus to each and every part regardless of who wrote",
+ "it.",
+ "",
+ "Thus, it is not the intent of this section to claim rights or contest",
+ "your rights to work written entirely by you; rather, the intent is to",
+ "exercise the right to control the distribution of derivative or",
+ "collective works based on the Library.",
+ "",
+ "In addition, mere aggregation of another work not based on the Library",
+ "with the Library (or with a work based on the Library) on a volume of",
+ "a storage or distribution medium does not bring the other work under",
+ "the scope of this License.",
+ "",
+ " 3. You may opt to apply the terms of the ordinary GNU General Public",
+ "License instead of this License to a given copy of the Library. To do",
+ "this, you must alter all the notices that refer to this License, so",
+ "that they refer to the ordinary GNU General Public License, version 2,",
+ "instead of to this License. (If a newer version than version 2 of the",
+ "ordinary GNU General Public License has appeared, then you can specify",
+ "that version instead if you wish.) Do not make any other change in",
+ "these notices.",
+ "",
+ " Once this change is made in a given copy, it is irreversible for",
+ "that copy, so the ordinary GNU General Public License applies to all",
+ "subsequent copies and derivative works made from that copy.",
+ "",
+ " This option is useful when you wish to copy part of the code of",
+ "the Library into a program that is not a library.",
+ "",
+ " 4. You may copy and distribute the Library (or a portion or",
+ "derivative of it, under Section 2) in object code or executable form",
+ "under the terms of Sections 1 and 2 above provided that you accompany",
+ "it with the complete corresponding machine-readable source code, which",
+ "must be distributed under the terms of Sections 1 and 2 above on a",
+ "medium customarily used for software interchange.",
+ "",
+ " If distribution of object code is made by offering access to copy",
+ "from a designated place, then offering equivalent access to copy the",
+ "source code from the same place satisfies the requirement to",
+ "distribute the source code, even though third parties are not",
+ "compelled to copy the source along with the object code.",
+ "",
+ " 5. A program that contains no derivative of any portion of the",
+ "Library, but is designed to work with the Library by being compiled or",
+ "linked with it, is called a \"work that uses the Library\". Such a",
+ "work, in isolation, is not a derivative work of the Library, and",
+ "therefore falls outside the scope of this License.",
+ "",
+ " However, linking a \"work that uses the Library\" with the Library",
+ "creates an executable that is a derivative of the Library (because it",
+ "contains portions of the Library), rather than a \"work that uses the",
+ "library\". The executable is therefore covered by this License.",
+ "Section 6 states terms for distribution of such executables.",
+ "",
+ " When a \"work that uses the Library\" uses material from a header file",
+ "that is part of the Library, the object code for the work may be a",
+ "derivative work of the Library even though the source code is not.",
+ "Whether this is true is especially significant if the work can be",
+ "linked without the Library, or if the work is itself a library. The",
+ "threshold for this to be true is not precisely defined by law.",
+ "",
+ " If such an object file uses only numerical parameters, data",
+ "structure layouts and accessors, and small macros and small inline",
+ "functions (ten lines or less in length), then the use of the object",
+ "file is unrestricted, regardless of whether it is legally a derivative",
+ "work. (Executables containing this object code plus portions of the",
+ "Library will still fall under Section 6.)",
+ "",
+ " Otherwise, if the work is a derivative of the Library, you may",
+ "distribute the object code for the work under the terms of Section 6.",
+ "Any executables containing that work also fall under Section 6,",
+ "whether or not they are linked directly with the Library itself.",
+ "",
+ " 6. As an exception to the Sections above, you may also combine or",
+ "link a \"work that uses the Library\" with the Library to produce a",
+ "work containing portions of the Library, and distribute that work",
+ "under terms of your choice, provided that the terms permit",
+ "modification of the work for the customer's own use and reverse",
+ "engineering for debugging such modifications.",
+ "",
+ " You must give prominent notice with each copy of the work that the",
+ "Library is used in it and that the Library and its use are covered by",
+ "this License. You must supply a copy of this License. If the work",
+ "during execution displays copyright notices, you must include the",
+ "copyright notice for the Library among them, as well as a reference",
+ "directing the user to the copy of this License. Also, you must do one",
+ "of these things:",
+ "",
+ " a) Accompany the work with the complete corresponding",
+ " machine-readable source code for the Library including whatever",
+ " changes were used in the work (which must be distributed under",
+ " Sections 1 and 2 above); and, if the work is an executable linked",
+ " with the Library, with the complete machine-readable \"work that",
+ " uses the Library\", as object code and/or source code, so that the",
+ " user can modify the Library and then relink to produce a modified",
+ " executable containing the modified Library. (It is understood",
+ " that the user who changes the contents of definitions files in the",
+ " Library will not necessarily be able to recompile the application",
+ " to use the modified definitions.)",
+ "",
+ " b) Use a suitable shared library mechanism for linking with the",
+ " Library. A suitable mechanism is one that (1) uses at run time a",
+ " copy of the library already present on the user's computer system,",
+ " rather than copying library functions into the executable, and (2)",
+ " will operate properly with a modified version of the library, if",
+ " the user installs one, as long as the modified version is",
+ " interface-compatible with the version that the work was made with.",
+ "",
+ " c) Accompany the work with a written offer, valid for at",
+ " least three years, to give the same user the materials",
+ " specified in Subsection 6a, above, for a charge no more",
+ " than the cost of performing this distribution.",
+ "",
+ " d) If distribution of the work is made by offering access to copy",
+ " from a designated place, offer equivalent access to copy the above",
+ " specified materials from the same place.",
+ "",
+ " e) Verify that the user has already received a copy of these",
+ " materials or that you have already sent this user a copy.",
+ "",
+ " For an executable, the required form of the \"work that uses the",
+ "Library\" must include any data and utility programs needed for",
+ "reproducing the executable from it. However, as a special exception,",
+ "the materials to be distributed need not include anything that is",
+ "normally distributed (in either source or binary form) with the major",
+ "components (compiler, kernel, and so on) of the operating system on",
+ "which the executable runs, unless that component itself accompanies",
+ "the executable.",
+ "",
+ " It may happen that this requirement contradicts the license",
+ "restrictions of other proprietary libraries that do not normally",
+ "accompany the operating system. Such a contradiction means you cannot",
+ "use both them and the Library together in an executable that you",
+ "distribute.",
+ "",
+ " 7. You may place library facilities that are a work based on the",
+ "Library side-by-side in a single library together with other library",
+ "facilities not covered by this License, and distribute such a combined",
+ "library, provided that the separate distribution of the work based on",
+ "the Library and of the other library facilities is otherwise",
+ "permitted, and provided that you do these two things:",
+ "",
+ " a) Accompany the combined library with a copy of the same work",
+ " based on the Library, uncombined with any other library",
+ " facilities. This must be distributed under the terms of the",
+ " Sections above.",
+ "",
+ " b) Give prominent notice with the combined library of the fact",
+ " that part of it is a work based on the Library, and explaining",
+ " where to find the accompanying uncombined form of the same work.",
+ "",
+ " 8. You may not copy, modify, sublicense, link with, or distribute",
+ "the Library except as expressly provided under this License. Any",
+ "attempt otherwise to copy, modify, sublicense, link with, or",
+ "distribute the Library is void, and will automatically terminate your",
+ "rights under this License. However, parties who have received copies,",
+ "or rights, from you under this License will not have their licenses",
+ "terminated so long as such parties remain in full compliance.",
+ "",
+ " 9. You are not required to accept this License, since you have not",
+ "signed it. However, nothing else grants you permission to modify or",
+ "distribute the Library or its derivative works. These actions are",
+ "prohibited by law if you do not accept this License. Therefore, by",
+ "modifying or distributing the Library (or any work based on the",
+ "Library), you indicate your acceptance of this License to do so, and",
+ "all its terms and conditions for copying, distributing or modifying",
+ "the Library or works based on it.",
+ "",
+ " 10. Each time you redistribute the Library (or any work based on the",
+ "Library), the recipient automatically receives a license from the",
+ "original licensor to copy, distribute, link with or modify the Library",
+ "subject to these terms and conditions. You may not impose any further",
+ "restrictions on the recipients' exercise of the rights granted herein.",
+ "You are not responsible for enforcing compliance by third parties with",
+ "this License.",
+ "",
+ " 11. If, as a consequence of a court judgment or allegation of patent",
+ "infringement or for any other reason (not limited to patent issues),",
+ "conditions are imposed on you (whether by court order, agreement or",
+ "otherwise) that contradict the conditions of this License, they do not",
+ "excuse you from the conditions of this License. If you cannot",
+ "distribute so as to satisfy simultaneously your obligations under this",
+ "License and any other pertinent obligations, then as a consequence you",
+ "may not distribute the Library at all. For example, if a patent",
+ "license would not permit royalty-free redistribution of the Library by",
+ "all those who receive copies directly or indirectly through you, then",
+ "the only way you could satisfy both it and this License would be to",
+ "refrain entirely from distribution of the Library.",
+ "",
+ "If any portion of this section is held invalid or unenforceable under any",
+ "particular circumstance, the balance of the section is intended to apply,",
+ "and the section as a whole is intended to apply in other circumstances.",
+ "",
+ "It is not the purpose of this section to induce you to infringe any",
+ "patents or other property right claims or to contest validity of any",
+ "such claims; this section has the sole purpose of protecting the",
+ "integrity of the free software distribution system which is",
+ "implemented by public license practices. Many people have made",
+ "generous contributions to the wide range of software distributed",
+ "through that system in reliance on consistent application of that",
+ "system; it is up to the author/donor to decide if he or she is willing",
+ "to distribute software through any other system and a licensee cannot",
+ "impose that choice.",
+ "",
+ "This section is intended to make thoroughly clear what is believed to",
+ "be a consequence of the rest of this License.",
+ "",
+ " 12. If the distribution and/or use of the Library is restricted in",
+ "certain countries either by patents or by copyrighted interfaces, the",
+ "original copyright holder who places the Library under this License may add",
+ "an explicit geographical distribution limitation excluding those countries,",
+ "so that distribution is permitted only in or among countries not thus",
+ "excluded. In such case, this License incorporates the limitation as if",
+ "written in the body of this License.",
+ "",
+ " 13. The Free Software Foundation may publish revised and/or new",
+ "versions of the Lesser General Public License from time to time.",
+ "Such new versions will be similar in spirit to the present version,",
+ "but may differ in detail to address new problems or concerns.",
+ "",
+ "Each version is given a distinguishing version number. If the Library",
+ "specifies a version number of this License which applies to it and",
+ "\"any later version\", you have the option of following the terms and",
+ "conditions either of that version or of any later version published by",
+ "the Free Software Foundation. If the Library does not specify a",
+ "license version number, you may choose any version ever published by",
+ "the Free Software Foundation.",
+ "",
+ " 14. If you wish to incorporate parts of the Library into other free",
+ "programs whose distribution conditions are incompatible with these,",
+ "write to the author to ask for permission. For software which is",
+ "copyrighted by the Free Software Foundation, write to the Free",
+ "Software Foundation; we sometimes make exceptions for this. Our",
+ "decision will be guided by the two goals of preserving the free status",
+ "of all derivatives of our free software and of promoting the sharing",
+ "and reuse of software generally.",
+ "",
+ "\t\t\t NO WARRANTY",
+ "",
+ " 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO",
+ "WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.",
+ "EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR",
+ "OTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY",
+ "KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE",
+ "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR",
+ "PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE",
+ "LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME",
+ "THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.",
+ "",
+ " 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN",
+ "WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY",
+ "AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU",
+ "FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR",
+ "CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE",
+ "LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING",
+ "RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A",
+ "FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF",
+ "SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH",
+ "DAMAGES.",
+ "",
+ "\t\t END OF TERMS AND CONDITIONS",
+ "",
+ " How to Apply These Terms to Your New Libraries",
+ "",
+ " If you develop a new library, and you want it to be of the greatest",
+ "possible use to the public, we recommend making it free software that",
+ "everyone can redistribute and change. You can do so by permitting",
+ "redistribution under these terms (or, alternatively, under the terms of the",
+ "ordinary General Public License).",
+ "",
+ " To apply these terms, attach the following notices to the library. It is",
+ "safest to attach them to the start of each source file to most effectively",
+ "convey the exclusion of warranty; and each file should have at least the",
+ "\"copyright\" line and a pointer to where the full notice is found.",
+ "",
+ " ",
+ " Copyright (C) ",
+ "",
+ " This library is free software; you can redistribute it and/or",
+ " modify it under the terms of the GNU Lesser General Public",
+ " License as published by the Free Software Foundation; either",
+ " version 2.1 of the License, or (at your option) any later version.",
+ "",
+ " This library is distributed in the hope that it will be useful,",
+ " but WITHOUT ANY WARRANTY; without even the implied warranty of",
+ " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU",
+ " Lesser General Public License for more details.",
+ "",
+ " You should have received a copy of the GNU Lesser General Public",
+ " License along with this library; if not, write to the Free Software",
+ " Foundation, Inc.,",
+ "51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA",
+ "",
+ "Also add information on how to contact you by electronic and paper mail.",
+ "",
+ "You should also get your employer (if you work as a programmer) or your",
+ "school, if any, to sign a \"copyright disclaimer\" for the library, if",
+ "necessary. Here is a sample; alter the names:",
+ "",
+ " Yoyodyne, Inc., hereby disclaims all copyright interest in the",
+ " library `Frob' (a library for tweaking knobs) written by James Random Hacker.",
+ "",
+ " ,",
+ "1 April 1990",
+ " Ty Coon, President of Vice",
+ "",
+ "That's all there is to it!"
+ ]
+ },
+ {
+ // Added here because the module `parse5` has a dependency to it.
+ // The module `parse5` is shipped via the `extension-editing` built-in extension.
+ // The module `parse5` does not want to remove it https://github.com/inikulin/parse5/issues/225
+ "name": "@types/node",
+ "licenseDetail": [
+ "This project is licensed under the MIT license.",
+ "Copyrights are respective of each contributor listed at the beginning of each definition file.",
+ "",
+ "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
+ "",
+ "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
+ "",
+ "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
+ ]
+ },
+ {
+ // We override the license that gets discovered at
+ // https://github.com/Microsoft/TypeScript/blob/master/LICENSE.txt
+ // because it does not contain a Copyright statement
+ "name": "typescript",
+ "licenseDetail": [
+ "Copyright (c) Microsoft Corporation. All rights reserved.",
+ "",
+ "Apache License",
+ "",
+ "Version 2.0, January 2004",
+ "",
+ "http://www.apache.org/licenses/",
+ "",
+ "TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION",
+ "",
+ "1. Definitions.",
+ "",
+ "\"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.",
+ "",
+ "\"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.",
+ "",
+ "\"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.",
+ "",
+ "\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License.",
+ "",
+ "\"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.",
+ "",
+ "\"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.",
+ "",
+ "\"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).",
+ "",
+ "\"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.",
+ "",
+ "\"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"",
+ "",
+ "\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.",
+ "",
+ "2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.",
+ "",
+ "3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.",
+ "",
+ "4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:",
+ "",
+ "You must give any other recipients of the Work or Derivative Works a copy of this License; and",
+ "",
+ "You must cause any modified files to carry prominent notices stating that You changed the files; and",
+ "",
+ "You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and",
+ "",
+ "If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.",
+ "",
+ "5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.",
+ "",
+ "6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.",
+ "",
+ "7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.",
+ "",
+ "8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.",
+ "",
+ "9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.",
+ "",
+ "END OF TERMS AND CONDITIONS"
+ ]
+ },
+ {
+ // This module comes in from https://github.com/Microsoft/vscode-node-debug2/blob/master/package-lock.json
+ "name": "@types/source-map",
+ "licenseDetail": [
+ "This project is licensed under the MIT license.",
+ "Copyrights are respective of each contributor listed at the beginning of each definition file.",
+ "",
+ "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
+ "",
+ "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
+ "",
+ "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
+ ]
+ },
+ {
+ "name": "tunnel-agent",
+ "licenseDetail": [
+ "Copyright (c) tunnel-agent authors",
+ "",
+ "Apache License",
+ "",
+ "Version 2.0, January 2004",
+ "",
+ "http://www.apache.org/licenses/",
+ "",
+ "TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION",
+ "",
+ "1. Definitions.",
+ "",
+ "\"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.",
+ "",
+ "\"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.",
+ "",
+ "\"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.",
+ "",
+ "\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License.",
+ "",
+ "\"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.",
+ "",
+ "\"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.",
+ "",
+ "\"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).",
+ "",
+ "\"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.",
+ "",
+ "\"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"",
+ "",
+ "\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.",
+ "",
+ "2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.",
+ "",
+ "3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.",
+ "",
+ "4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:",
+ "",
+ "You must give any other recipients of the Work or Derivative Works a copy of this License; and",
+ "",
+ "You must cause any modified files to carry prominent notices stating that You changed the files; and",
+ "",
+ "You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and",
+ "",
+ "If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.",
+ "",
+ "5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.",
+ "",
+ "6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.",
+ "",
+ "7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.",
+ "",
+ "8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.",
+ "",
+ "9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.",
+ "",
+ "END OF TERMS AND CONDITIONS"
+ ]
+ },
+ {
+ // Waiting for https://github.com/segmentio/noop-logger/issues/2
+ "name": "noop-logger",
+ "licenseDetail": [
+ "This project is licensed under the MIT license.",
+ "Copyrights are respective of each contributor listed at the beginning of each definition file.",
+ "",
+ "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:",
+ "",
+ "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",
+ "",
+ "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
+ ]
+ },
+ {
+ "name": "xterm-addon-search",
+ "licenseDetail": [
+ "Copyright (c) 2017, The xterm.js authors (https://github.com/xtermjs/xterm.js)",
+ "",
+ "Permission is hereby granted, free of charge, to any person obtaining a copy",
+ "of this software and associated documentation files (the \"Software\"), to deal",
+ "in the Software without restriction, including without limitation the rights",
+ "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
+ "copies of the Software, and to permit persons to whom the Software is",
+ "furnished to do so, subject to the following conditions:",
+ "",
+ "The above copyright notice and this permission notice shall be included in",
+ "all copies or substantial portions of the Software.",
+ "",
+ "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
+ "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+ "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
+ "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+ "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
+ "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN",
+ "THE SOFTWARE."
+ ]
+ },
+ {
+ "name": "xterm-addon-web-links",
+ "licenseDetail": [
+ "Copyright (c) 2017, The xterm.js authors (https://github.com/xtermjs/xterm.js)",
+ "",
+ "Permission is hereby granted, free of charge, to any person obtaining a copy",
+ "of this software and associated documentation files (the \"Software\"), to deal",
+ "in the Software without restriction, including without limitation the rights",
+ "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
+ "copies of the Software, and to permit persons to whom the Software is",
+ "furnished to do so, subject to the following conditions:",
+ "",
+ "The above copyright notice and this permission notice shall be included in",
+ "all copies or substantial portions of the Software.",
+ "",
+ "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
+ "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+ "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
+ "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+ "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
+ "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN",
+ "THE SOFTWARE."
+ ]
+ },
+ {
+ "name": "atob",
+ "licenseDetail": [
+ "The MIT License (MIT)",
+ "",
+ "Copyright (c) 2015 AJ ONeal",
+ "",
+ "Permission is hereby granted, free of charge, to any person obtaining a copy",
+ "of this software and associated documentation files (the \"Software\"), to deal",
+ "in the Software without restriction, including without limitation the rights",
+ "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell",
+ "copies of the Software, and to permit persons to whom the Software is",
+ "furnished to do so, subject to the following conditions:",
+ "",
+ "The above copyright notice and this permission notice shall be included in all",
+ "copies or substantial portions of the Software.",
+ "",
+ "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR",
+ "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
+ "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE",
+ "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
+ "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,",
+ "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE",
+ "SOFTWARE."
+ ]
+ }
+]
diff --git a/cgmanifest.json b/cgmanifest.json
index f58b3502779..638303702ae 100644
--- a/cgmanifest.json
+++ b/cgmanifest.json
@@ -6,7 +6,7 @@
"git": {
"name": "chromium",
"repositoryUrl": "https://chromium.googlesource.com/chromium/src",
- "commitHash": "164c37e3f235134c88e80fac2a182cfba3f07f00"
+ "commitHash": "c6a08e5368de4352903e702cde750b33239a50ab"
}
},
"licenseDetail": [
@@ -40,20 +40,7 @@
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
],
"isOnlyProductionDependency": true,
- "version": "66.0.3359.181"
- },
- {
- "component": {
- "type": "git",
- "git": {
- "name": "libchromiumcontent",
- "repositoryUrl": "https://github.com/electron/libchromiumcontent",
- "commitHash": "e38e22ed9f48e6e395f2e9faa93d2d7411f52de4"
- }
- },
- "isOnlyProductionDependency": true,
- "license": "MIT",
- "version": "66.0.3359.181"
+ "version": "69.0.3497.128"
},
{
"component": {
@@ -61,11 +48,11 @@
"git": {
"name": "nodejs",
"repositoryUrl": "https://github.com/nodejs/node",
- "commitHash": "5cbb905c1af7cea2d709932d59827d7c6d03ef4a"
+ "commitHash": "8c70b2084ce5f76ea1e3b3c4ccdeee4483fe338b"
}
},
"isOnlyProductionDependency": true,
- "version": "10.2.0"
+ "version": "10.11.0"
},
{
"component": {
@@ -73,12 +60,12 @@
"git": {
"name": "electron",
"repositoryUrl": "https://github.com/electron/electron",
- "commitHash": "f26dcaeaf39e9b829aa0d4fb5a5cb59c5c314b33"
+ "commitHash": "36ea114ac0616e469e75ae94e6d53af48925e036"
}
},
"isOnlyProductionDependency": true,
"license": "MIT",
- "version": "3.0.13"
+ "version": "4.2.7"
},
{
"component": {
@@ -105,6 +92,30 @@
"license": "MIT",
"version": "0.14.0"
},
+ {
+ "component": {
+ "type": "git",
+ "git": {
+ "name": "vscode-octicons-font",
+ "repositoryUrl": "https://github.com/Microsoft/vscode-octicons-font",
+ "commitHash": "415cd5b42ab699b6b46c0bf011ada0a2ae50bfb4"
+ }
+ },
+ "license": "MIT",
+ "version": "1.3.1"
+ },
+ {
+ "component": {
+ "type": "git",
+ "git": {
+ "name": "octicons",
+ "repositoryUrl": "https://github.com/primer/octicons",
+ "commitHash": "d120bf97bc9a12fb415f69fedaf31fe58427ca56"
+ }
+ },
+ "license": "MIT",
+ "version": "8.3.0"
+ },
{
"component": {
"type": "npm",
@@ -493,6 +504,19 @@
" defined by the Mozilla Public License, v. 2.0."
],
"license": "MPL"
+ },
+ {
+ "component": {
+ "type": "git",
+ "git": {
+ "name": "ripgrep",
+ "repositoryUrl": "https://github.com/BurntSushi/ripgrep",
+ "commitHash": "8a7db1a918e969b85cd933d8ed9fa5285b281ba4"
+ }
+ },
+ "isOnlyProductionDependency": true,
+ "license": "MIT",
+ "version": "0.10.0"
}
],
"version": 1
diff --git a/extensions/bat/cgmanifest.json b/extensions/bat/cgmanifest.json
index 1e21679d7b2..5bc3e285f0c 100644
--- a/extensions/bat/cgmanifest.json
+++ b/extensions/bat/cgmanifest.json
@@ -6,11 +6,11 @@
"git": {
"name": "mmims/language-batchfile",
"repositoryUrl": "https://github.com/mmims/language-batchfile",
- "commitHash": "4b67596631b4ecd2c89c2ec1b2e08a6623438903"
+ "commitHash": "95ea8c699f7a8296b15767069868532d52631c46"
}
},
"license": "MIT",
- "version": "0.7.4"
+ "version": "0.7.5"
}
],
"version": 1
diff --git a/extensions/bat/package.json b/extensions/bat/package.json
index c54d1a4ce5d..00bd84e4ae4 100644
--- a/extensions/bat/package.json
+++ b/extensions/bat/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": { "vscode": "*" },
"scripts": {
"update-grammar": "node ../../build/npm/update-grammar.js mmims/language-batchfile grammars/batchfile.cson ./syntaxes/batchfile.tmLanguage.json"
diff --git a/extensions/bat/syntaxes/batchfile.tmLanguage.json b/extensions/bat/syntaxes/batchfile.tmLanguage.json
index 26ae88f43c5..9eff3c9de2b 100644
--- a/extensions/bat/syntaxes/batchfile.tmLanguage.json
+++ b/extensions/bat/syntaxes/batchfile.tmLanguage.json
@@ -4,7 +4,7 @@
"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/mmims/language-batchfile/commit/4b67596631b4ecd2c89c2ec1b2e08a6623438903",
+ "version": "https://github.com/mmims/language-batchfile/commit/95ea8c699f7a8296b15767069868532d52631c46",
"name": "Batch File",
"scopeName": "source.batchfile",
"patterns": [
@@ -46,7 +46,7 @@
"commands": {
"patterns": [
{
- "match": "(?<=^|[\\s@])(?i:adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|brea|cacls|cd|certreq|certutil|change|chcp|chdir|chglogon|chgport|chgusr|chkdsk|chkntfs|choice|cipher|clip|cls|clscluadmin|cluster|cmd|cmdkey|cmstp|color|comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm|edit|endlocal|eraseesentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract|fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl|hashgen|hep|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile|makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group|net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb|nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd|powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess|query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset session|rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|sc|schtasks|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|setspn|setx|sfc|shadow|shift|showmount|shutdown|sort|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time|timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|mic|wscript|xcopy)(?=$|\\s)",
+ "match": "(?<=^|[\\s@])(?i:adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|brea|cacls|cd|certreq|certutil|change|chcp|chdir|chglogon|chgport|chgusr|chkdsk|chkntfs|choice|cipher|clip|cls|clscluadmin|cluster|cmd|cmdkey|cmstp|color|comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm|edit|endlocal|eraseesentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract|fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl|hashgen|hep|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile|makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group|net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb|nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd|powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess|query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset session|rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|scp|sc|schtasks|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|setspn|setx|sfc|shadow|shift|showmount|shutdown|sort|ssh|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time|timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|mic|wscript|xcopy)(?=$|\\s)",
"name": "keyword.command.batchfile"
},
{
diff --git a/extensions/clojure/cgmanifest.json b/extensions/clojure/cgmanifest.json
index 1a9d69c5633..3a72fefb369 100644
--- a/extensions/clojure/cgmanifest.json
+++ b/extensions/clojure/cgmanifest.json
@@ -6,11 +6,11 @@
"git": {
"name": "atom/language-clojure",
"repositoryUrl": "https://github.com/atom/language-clojure",
- "commitHash": "ecc790326bc8e14220e4d2d72a392a30876c3219"
+ "commitHash": "de877502aa4a77ccdc2c7f0c9180436aea3effff"
}
},
"license": "MIT",
- "version": "0.22.6",
+ "version": "0.22.7",
"description": "The file syntaxes/clojure.tmLanguage.json was derived from the Atom package https://github.com/atom/language-clojure which was originally converted from the TextMate bundle https://github.com/mmcgrana/textmate-clojure."
}
],
diff --git a/extensions/clojure/package.json b/extensions/clojure/package.json
index 769b9f46798..3342784348b 100644
--- a/extensions/clojure/package.json
+++ b/extensions/clojure/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": { "vscode": "*" },
"scripts": {
"update-grammar": "node ../../build/npm/update-grammar.js atom/language-clojure grammars/clojure.cson ./syntaxes/clojure.tmLanguage.json"
diff --git a/extensions/clojure/syntaxes/clojure.tmLanguage.json b/extensions/clojure/syntaxes/clojure.tmLanguage.json
index 3d059513af0..29c25edfa24 100644
--- a/extensions/clojure/syntaxes/clojure.tmLanguage.json
+++ b/extensions/clojure/syntaxes/clojure.tmLanguage.json
@@ -4,7 +4,7 @@
"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/atom/language-clojure/commit/ecc790326bc8e14220e4d2d72a392a30876c3219",
+ "version": "https://github.com/atom/language-clojure/commit/de877502aa4a77ccdc2c7f0c9180436aea3effff",
"name": "Clojure",
"scopeName": "source.clojure",
"patterns": [
@@ -83,7 +83,7 @@
"name": "constant.numeric.ratio.clojure"
},
{
- "match": "(-?\\d+[rR][0-9a-zA-Z]+)",
+ "match": "(-?\\d+[rR]\\w+)",
"name": "constant.numeric.arbitrary-radix.clojure"
},
{
@@ -116,17 +116,17 @@
]
},
"keyword": {
- "match": "(?<=(\\s|\\(|\\[|\\{)):[a-zA-Z0-9\\#\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}|\\,))",
+ "match": "(?<=(\\s|\\(|\\[|\\{)):[\\w\\#\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}|\\,))",
"name": "constant.keyword.clojure"
},
"keyfn": {
"patterns": [
{
- "match": "(?<=(\\s|\\(|\\[|\\{))(if(-[-a-z\\?]*)?|when(-[-a-z]*)?|for(-[-a-z]*)?|cond|do|let(-[-a-z\\?]*)?|binding|loop|recur|fn|throw[a-z\\-]*|try|catch|finally|([a-z]*case))(?=(\\s|\\)|\\]|\\}))",
+ "match": "(?<=(\\s|\\(|\\[|\\{))(if(-[-\\p{Ll}\\?]*)?|when(-[-\\p{Ll}]*)?|for(-[-\\p{Ll}]*)?|cond|do|let(-[-\\p{Ll}\\?]*)?|binding|loop|recur|fn|throw[\\p{Ll}\\-]*|try|catch|finally|([\\p{Ll}]*case))(?=(\\s|\\)|\\]|\\}))",
"name": "storage.control.clojure"
},
{
- "match": "(?<=(\\s|\\(|\\[|\\{))(declare-?|(in-)?ns|import|use|require|load|compile|(def[a-z\\-]*))(?=(\\s|\\)|\\]|\\}))",
+ "match": "(?<=(\\s|\\(|\\[|\\{))(declare-?|(in-)?ns|import|use|require|load|compile|(def[\\p{Ll}\\-]*))(?=(\\s|\\)|\\]|\\}))",
"name": "keyword.control.clojure"
}
]
@@ -309,7 +309,7 @@
"include": "#dynamic-variables"
},
{
- "match": "([a-zA-Z\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)",
+ "match": "([\\p{L}\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)",
"name": "entity.global.clojure"
},
{
@@ -387,7 +387,7 @@
"namespace-symbol": {
"patterns": [
{
- "match": "([a-zA-Z\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)/",
+ "match": "([\\p{L}\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)/",
"captures": {
"1": {
"name": "meta.symbol.namespace.clojure"
@@ -399,13 +399,13 @@
"symbol": {
"patterns": [
{
- "match": "([a-zA-Z\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)",
+ "match": "([\\p{L}\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)",
"name": "meta.symbol.clojure"
}
]
},
"var": {
- "match": "(?<=(\\s|\\(|\\[|\\{)\\#)'[a-zA-Z0-9\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}))",
+ "match": "(?<=(\\s|\\(|\\[|\\{)\\#)'[\\w\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}))",
"name": "meta.var.clojure"
},
"vector": {
diff --git a/extensions/coffeescript/cgmanifest.json b/extensions/coffeescript/cgmanifest.json
index 3731fb9e3ff..3c792173e6e 100644
--- a/extensions/coffeescript/cgmanifest.json
+++ b/extensions/coffeescript/cgmanifest.json
@@ -6,12 +6,12 @@
"git": {
"name": "atom/language-coffee-script",
"repositoryUrl": "https://github.com/atom/language-coffee-script",
- "commitHash": "a0da2a73ad817e2fc13c2ef8fcd2624017c39610"
+ "commitHash": "0f6db9143663e18b1ad00667820f46747dba495e"
}
},
"license": "MIT",
"description": "The file syntaxes/coffeescript.tmLanguage.json was derived from the Atom package https://github.com/atom/language-coffee-script which was originally converted from the TextMate bundle https://github.com/jashkenas/coffee-script-tmbundle.",
- "version": "0.49.2"
+ "version": "0.49.3"
}
],
"version": 1
diff --git a/extensions/coffeescript/package.json b/extensions/coffeescript/package.json
index 2758bcdc50b..df5f8ff7c1f 100644
--- a/extensions/coffeescript/package.json
+++ b/extensions/coffeescript/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": { "vscode": "*" },
"scripts": {
"update-grammar": "node ../../build/npm/update-grammar.js atom/language-coffee-script grammars/coffeescript.cson ./syntaxes/coffeescript.tmLanguage.json"
@@ -11,7 +12,7 @@
"contributes": {
"languages": [{
"id": "coffeescript",
- "extensions": [ ".coffee", ".cson" ],
+ "extensions": [ ".coffee", ".cson", ".iced" ],
"aliases": [ "CoffeeScript", "coffeescript", "coffee" ],
"configuration": "./language-configuration.json"
}],
diff --git a/extensions/coffeescript/syntaxes/coffeescript.tmLanguage.json b/extensions/coffeescript/syntaxes/coffeescript.tmLanguage.json
index 5fcff295c61..708856898bc 100644
--- a/extensions/coffeescript/syntaxes/coffeescript.tmLanguage.json
+++ b/extensions/coffeescript/syntaxes/coffeescript.tmLanguage.json
@@ -4,10 +4,13 @@
"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/atom/language-coffee-script/commit/a0da2a73ad817e2fc13c2ef8fcd2624017c39610",
+ "version": "https://github.com/atom/language-coffee-script/commit/0f6db9143663e18b1ad00667820f46747dba495e",
"name": "CoffeeScript",
"scopeName": "source.coffee",
"patterns": [
+ {
+ "include": "#jsx"
+ },
{
"match": "(new)\\s+(?:(?:(class)\\s+(\\w+(?:\\.\\w*)*)?)|(\\w+(?:\\.\\w*)*))",
"name": "meta.class.instance.constructor.coffee",
@@ -1213,6 +1216,101 @@
"include": "#embedded_comment"
}
]
+ },
+ "jsx": {
+ "patterns": [
+ {
+ "include": "#jsx-tag"
+ },
+ {
+ "include": "#jsx-end-tag"
+ }
+ ]
+ },
+ "jsx-expression": {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.curly.coffee"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.curly.coffee"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double_quoted_string"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "jsx-attribute": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.coffee"
+ }
+ },
+ "match": "(?:^|\\s+)([-\\w.]+)\\s*(=)"
+ },
+ {
+ "include": "#double_quoted_string"
+ },
+ {
+ "include": "#single_quoted_string"
+ },
+ {
+ "include": "#jsx-expression"
+ }
+ ]
+ },
+ "jsx-tag": {
+ "patterns": [
+ {
+ "begin": "(<)([-\\w\\.]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.coffee"
+ },
+ "2": {
+ "name": "entity.name.tag.coffee"
+ }
+ },
+ "end": "(/?>)",
+ "name": "meta.tag.coffee",
+ "patterns": [
+ {
+ "include": "#jsx-attribute"
+ }
+ ]
+ }
+ ]
+ },
+ "jsx-end-tag": {
+ "patterns": [
+ {
+ "begin": "()([-\\w\\.]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.coffee"
+ },
+ "2": {
+ "name": "entity.name.tag.coffee"
+ }
+ },
+ "end": "(/?>)",
+ "name": "meta.tag.coffee"
+ }
+ ]
}
}
}
\ No newline at end of file
diff --git a/extensions/configuration-editing/package.json b/extensions/configuration-editing/package.json
index 46f4eba3a95..e555d61457e 100644
--- a/extensions/configuration-editing/package.json
+++ b/extensions/configuration-editing/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": {
"vscode": "^1.0.0"
},
@@ -57,6 +58,10 @@
"fileMatch": "%APP_SETTINGS_HOME%/settings.json",
"url": "vscode://schemas/settings/user"
},
+ {
+ "fileMatch": "%MACHINE_SETTINGS_HOME%/settings.json",
+ "url": "vscode://schemas/settings/machine"
+ },
{
"fileMatch": "%APP_WORKSPACES_HOME%/*/workspace.json",
"url": "vscode://schemas/workspaceConfig"
@@ -92,10 +97,18 @@
{
"fileMatch": "/.vscode/extensions.json",
"url": "vscode://schemas/extensions"
+ },
+ {
+ "fileMatch": "/.devcontainer/devcontainer.json",
+ "url": "./schemas/devContainer.schema.json"
+ },
+ {
+ "fileMatch": "/.devcontainer.json",
+ "url": "./schemas/devContainer.schema.json"
}
]
},
"devDependencies": {
- "@types/node": "^8.10.25"
+ "@types/node": "^10.14.8"
}
}
diff --git a/extensions/configuration-editing/schemas/devContainer.schema.json b/extensions/configuration-editing/schemas/devContainer.schema.json
new file mode 100644
index 00000000000..55950a9021e
--- /dev/null
+++ b/extensions/configuration-editing/schemas/devContainer.schema.json
@@ -0,0 +1,181 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "description": "Defines a dev container",
+ "allowComments": true,
+ "type": "object",
+ "definitions": {
+ "devContainerCommon": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "A name to show for the workspace folder."
+ },
+ "extensions": {
+ "type": "array",
+ "description": "An array of extensions that should be installed into the container.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "settings": {
+ "$ref": "vscode://schemas/settings/machine",
+ "description": "Machine specific settings that should be copied into the container."
+ },
+ "postCreateCommand": {
+ "type": [
+ "string",
+ "array"
+ ],
+ "description": "A command to run after creating the container. If this is a single string, it will be run in a shell. If this is an array of strings, it will be run as a single command without shell.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "devPort": {
+ "type": "integer",
+ "description": "The port VS Code can use to connect to its backend."
+ }
+ }
+ },
+ "nonComposeBase": {
+ "type": "object",
+ "properties": {
+ "appPort": {
+ "type": [
+ "integer",
+ "string",
+ "array"
+ ],
+ "description": "Application ports that are exposed by the container. This can be a single port or an array of ports. Each port can be a number or a string. A number is mapped to the same port on the host. A string is passed to Docker unchanged and can be used to map ports differently, e.g. \"8000:8010\".",
+ "items": {
+ "type": [
+ "integer",
+ "string"
+ ]
+ }
+ },
+ "runArgs": {
+ "type": "array",
+ "description": "The arguments required when starting in the container.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "shutdownAction": {
+ "type": "string",
+ "enum": [
+ "none",
+ "stopContainer"
+ ],
+ "description": "Action to take when VS Code is shutting down. The default is to stop the container."
+ },
+ "overrideCommand": {
+ "type": "boolean",
+ "description": "Whether to overwrite the command specified in the image. The default is true."
+ },
+ "workspaceFolder": {
+ "type": "string",
+ "description": "The path of the workspace folder inside the container."
+ },
+ "workspaceMount": {
+ "type": "string",
+ "description": "The --mount parameter for docker run. The default is to mount the project folder at /workspaces/$project."
+ }
+ }
+ },
+ "dockerFileContainer": {
+ "type": "object",
+ "properties": {
+ "dockerFile": {
+ "type": "string",
+ "description": "The location of the Dockerfile that defines the contents of the container. The path is relative to the folder containing the `devcontainer.json` file."
+ },
+ "context": {
+ "type": "string",
+ "description": "The location of the context folder for building the Docker image. The path is relative to the folder containing the `devcontainer.json` file."
+ }
+ },
+ "required": [
+ "dockerFile"
+ ]
+ },
+ "imageContainer": {
+ "type": "object",
+ "properties": {
+ "image": {
+ "type": "string",
+ "description": "The docker image that will be used to create the container."
+ }
+ },
+ "required": [
+ "image"
+ ]
+ },
+ "composeContainer": {
+ "type": "object",
+ "properties": {
+ "dockerComposeFile": {
+ "type": [
+ "string",
+ "array"
+ ],
+ "description": "The name of the docker-compose file(s) used to start the services.",
+ "items": {
+ "type": "string"
+ }
+ },
+ "service": {
+ "type": "string",
+ "description": "The service you want to work on."
+ },
+ "workspaceFolder": {
+ "type": "string",
+ "description": "The path of the workspace folder inside the container."
+ },
+ "shutdownAction": {
+ "type": "string",
+ "enum": [
+ "none",
+ "stopCompose"
+ ],
+ "description": "Action to take when VS Code is shutting down. The default is to stop the containers."
+ }
+ },
+ "required": [
+ "dockerComposeFile",
+ "service",
+ "workspaceFolder"
+ ]
+ }
+ },
+ "allOf": [
+ {
+ "oneOf": [
+ {
+ "allOf": [
+ {
+ "oneOf": [
+ {
+ "$ref": "#/definitions/dockerFileContainer"
+ },
+ {
+ "$ref": "#/definitions/imageContainer"
+ }
+ ]
+ },
+ {
+ "$ref": "#/definitions/nonComposeBase"
+ }
+ ]
+ },
+ {
+ "$ref": "#/definitions/composeContainer"
+ }
+ ]
+ },
+ {
+ "$ref": "#/definitions/devContainerCommon"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/extensions/configuration-editing/src/extension.ts b/extensions/configuration-editing/src/extension.ts
index b0a083e7e9e..aff533d86d9 100644
--- a/extensions/configuration-editing/src/extension.ts
+++ b/extensions/configuration-editing/src/extension.ts
@@ -3,12 +3,12 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-import * as nls from 'vscode-nls';
-const localize = nls.loadMessageBundle();
-import * as vscode from 'vscode';
-import { getLocation, visit, parse, ParseErrorCode } from 'jsonc-parser';
+import { getLocation, parse, visit } from 'jsonc-parser';
import * as path from 'path';
+import * as vscode from 'vscode';
+import * as nls from 'vscode-nls';
import { SettingsDocument } from './settingsDocumentHelper';
+const localize = nls.loadMessageBundle();
const fadedDecoration = vscode.window.createTextEditorDecorationType({
light: {
@@ -22,9 +22,6 @@ const fadedDecoration = vscode.window.createTextEditorDecorationType({
let pendingLaunchJsonDecoration: NodeJS.Timer;
export function activate(context: vscode.ExtensionContext): void {
- //keybindings.json command-suggestions
- context.subscriptions.push(registerKeybindingsCompletions());
-
//settings.json suggestions
context.subscriptions.push(registerSettingsCompletions());
@@ -48,67 +45,6 @@ export function activate(context: vscode.ExtensionContext): void {
}
}, null, context.subscriptions));
updateLaunchJsonDecorations(vscode.window.activeTextEditor);
-
- context.subscriptions.push(vscode.workspace.onWillSaveTextDocument(e => {
- if (!e.document.fileName.endsWith('/settings.json')) {
- return;
- }
-
- autoFixSettingsJSON(e);
- }));
-}
-
-function autoFixSettingsJSON(willSaveEvent: vscode.TextDocumentWillSaveEvent): void {
- const document = willSaveEvent.document;
- const text = document.getText();
- const edit = new vscode.WorkspaceEdit();
-
- let lastEndOfSomething = -1;
- visit(text, {
- onArrayEnd(offset: number, length: number): void {
- lastEndOfSomething = offset + length;
- },
-
- onLiteralValue(_value: any, offset: number, length: number): void {
- lastEndOfSomething = offset + length;
- },
-
- onObjectEnd(offset: number, length: number): void {
- lastEndOfSomething = offset + length;
- },
-
- onError(error: ParseErrorCode, _offset: number, _length: number): void {
- if (error === ParseErrorCode.CommaExpected && lastEndOfSomething > -1) {
- const fixPosition = document.positionAt(lastEndOfSomething);
-
- // Don't insert a comma immediately before a : or ' :'
- const colonRange = document.getWordRangeAtPosition(fixPosition, / *:/);
- if (!colonRange) {
- edit.insert(document.uri, fixPosition, ',');
- }
- }
- }
- });
-
- willSaveEvent.waitUntil(
- vscode.workspace.applyEdit(edit));
-}
-
-function registerKeybindingsCompletions(): vscode.Disposable {
- const commands = vscode.commands.getCommands(true);
-
- return vscode.languages.registerCompletionItemProvider({ pattern: '**/keybindings.json' }, {
-
- provideCompletionItems(document, position, _token) {
- const location = getLocation(document.getText(), document.offsetAt(position));
- if (location.path[1] === 'command') {
-
- const range = document.getWordRangeAtPosition(position) || new vscode.Range(position, position);
- return commands.then(ids => ids.map(id => newSimpleCompletionItem(JSON.stringify(id), range)));
- }
- return undefined;
- }
- });
}
function registerSettingsCompletions(): vscode.Disposable {
@@ -127,11 +63,20 @@ function registerVariableCompletions(pattern: string): vscode.Disposable {
const indexOf$ = document.lineAt(position.line).text.indexOf('$');
const startPosition = indexOf$ >= 0 ? new vscode.Position(position.line, indexOf$) : position;
- return [{ label: 'workspaceFolder', detail: localize('workspaceFolder', "The path of the folder opened in VS Code") }, { label: 'workspaceFolderBasename', detail: localize('workspaceFolderBasename', "The name of the folder opened in VS Code without any slashes (/)") },
- { label: 'relativeFile', detail: localize('relativeFile', "The current opened file relative to ${workspaceFolder}") }, { label: 'file', detail: localize('file', "The current opened file") }, { label: 'cwd', detail: localize('cwd', "The task runner's current working directory on startup") },
- { label: 'lineNumber', detail: localize('lineNumber', "The current selected line number in the active file") }, { label: 'selectedText', detail: localize('selectedText', "The current selected text in the active file") },
- { label: 'fileDirname', detail: localize('fileDirname', "The current opened file's dirname") }, { label: 'fileExtname', detail: localize('fileExtname', "The current opened file's extension") }, { label: 'fileBasename', detail: localize('fileBasename', "The current opened file's basename") },
- { label: 'fileBasenameNoExtension', detail: localize('fileBasenameNoExtension', "The current opened file's basename with no file extension") }].map(variable => ({
+ return [
+ { label: 'workspaceFolder', detail: localize('workspaceFolder', "The path of the folder opened in VS Code") },
+ { label: 'workspaceFolderBasename', detail: localize('workspaceFolderBasename', "The name of the folder opened in VS Code without any slashes (/)") },
+ { label: 'relativeFile', detail: localize('relativeFile', "The current opened file relative to ${workspaceFolder}") },
+ { label: 'relativeFileDirname', detail: localize('relativeFileDirname', "The current opened file's dirname relative to ${workspaceFolder}") },
+ { label: 'file', detail: localize('file', "The current opened file") },
+ { label: 'cwd', detail: localize('cwd', "The task runner's current working directory on startup") },
+ { label: 'lineNumber', detail: localize('lineNumber', "The current selected line number in the active file") },
+ { label: 'selectedText', detail: localize('selectedText', "The current selected text in the active file") },
+ { label: 'fileDirname', detail: localize('fileDirname', "The current opened file's dirname") },
+ { label: 'fileExtname', detail: localize('fileExtname', "The current opened file's extension") },
+ { label: 'fileBasename', detail: localize('fileBasename', "The current opened file's basename") },
+ { label: 'fileBasenameNoExtension', detail: localize('fileBasenameNoExtension', "The current opened file's basename with no file extension") }
+ ].map(variable => ({
label: '${' + variable.label + '}',
range: new vscode.Range(startPosition, position),
detail: variable.detail
@@ -207,16 +152,6 @@ function provideInstalledExtensionProposals(extensionsContent: IExtensionsConten
return undefined;
}
-function newSimpleCompletionItem(label: string, range: vscode.Range, description?: string, insertText?: string): vscode.CompletionItem {
- const item = new vscode.CompletionItem(label);
- item.kind = vscode.CompletionItemKind.Value;
- item.detail = description;
- item.insertText = insertText || label;
- item.range = range;
-
- return item;
-}
-
function updateLaunchJsonDecorations(editor: vscode.TextEditor | undefined): void {
if (!editor || path.basename(editor.document.fileName) !== 'launch.json') {
return;
diff --git a/extensions/configuration-editing/src/settingsDocumentHelper.ts b/extensions/configuration-editing/src/settingsDocumentHelper.ts
index e6b137809ff..d4ac414897d 100644
--- a/extensions/configuration-editing/src/settingsDocumentHelper.ts
+++ b/extensions/configuration-editing/src/settingsDocumentHelper.ts
@@ -44,8 +44,11 @@ export class SettingsDocument {
const completions: vscode.CompletionItem[] = [];
completions.push(this.newSimpleCompletionItem('${activeEditorShort}', range, localize('activeEditorShort', "the file name (e.g. myFile.txt)")));
- completions.push(this.newSimpleCompletionItem('${activeEditorMedium}', range, localize('activeEditorMedium', "the path of the file relative to the workspace folder (e.g. myFolder/myFile.txt)")));
- completions.push(this.newSimpleCompletionItem('${activeEditorLong}', range, localize('activeEditorLong', "the full path of the file (e.g. /Users/Development/myProject/myFolder/myFile.txt)")));
+ completions.push(this.newSimpleCompletionItem('${activeEditorMedium}', range, localize('activeEditorMedium', "the path of the file relative to the workspace folder (e.g. myFolder/myFileFolder/myFile.txt)")));
+ completions.push(this.newSimpleCompletionItem('${activeEditorLong}', range, localize('activeEditorLong', "the full path of the file (e.g. /Users/Development/myFolder/myFileFolder/myFile.txt)")));
+ completions.push(this.newSimpleCompletionItem('${activeFolderShort}', range, localize('activeFolderShort', "the name of the folder the file is contained in (e.g. myFileFolder)")));
+ completions.push(this.newSimpleCompletionItem('${activeFolderMedium}', range, localize('activeFolderMedium', "the path of the folder the file is contained in, relative to the workspace folder (e.g. myFolder/myFileFolder)")));
+ completions.push(this.newSimpleCompletionItem('${activeFolderLong}', range, localize('activeFolderLong', "the full path of the folder the file is contained in (e.g. /Users/Development/myFolder/myFileFolder)")));
completions.push(this.newSimpleCompletionItem('${rootName}', range, localize('rootName', "name of the workspace (e.g. myFolder or myWorkspace)")));
completions.push(this.newSimpleCompletionItem('${rootPath}', range, localize('rootPath', "file path of the workspace (e.g. /Users/Development/myWorkspace)")));
completions.push(this.newSimpleCompletionItem('${folderName}', range, localize('folderName', "name of the workspace folder the file is contained in (e.g. myFolder)")));
diff --git a/extensions/configuration-editing/yarn.lock b/extensions/configuration-editing/yarn.lock
index 752f2a3a6f9..ce653f097a9 100644
--- a/extensions/configuration-editing/yarn.lock
+++ b/extensions/configuration-editing/yarn.lock
@@ -2,10 +2,10 @@
# yarn lockfile v1
-"@types/node@^8.10.25":
- version "8.10.25"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.25.tgz#801fe4e39372cef18f268db880a5fbfcf71adc7e"
- integrity sha512-WXvAXaknB0c2cJ7N44e1kUrVu5K90mSfPPaT5XxfuSMxEWva86EYIwxUZM3jNZ2P1CIC9e2z4WJqpAF69PQxeA==
+"@types/node@^10.14.8":
+ version "10.14.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.8.tgz#fe444203ecef1162348cd6deb76c62477b2cc6e9"
+ integrity sha512-I4+DbJEhLEg4/vIy/2gkWDvXBOOtPKV9EnLhYjMoqxcRW+TTZtUftkHktz/a8suoD5mUL7m6ReLrkPvSsCQQmw==
jsonc-parser@2.0.2:
version "2.0.2"
diff --git a/extensions/cpp/build/update-grammars.js b/extensions/cpp/build/update-grammars.js
index f02f51ca2cc..29761cdaf95 100644
--- a/extensions/cpp/build/update-grammars.js
+++ b/extensions/cpp/build/update-grammars.js
@@ -6,8 +6,8 @@
var updateGrammar = require('../../../build/npm/update-grammar');
-updateGrammar.update('atom/language-c', 'grammars/c.cson', './syntaxes/c.tmLanguage.json');
-updateGrammar.update('atom/language-c', 'grammars/c%2B%2B.cson', './syntaxes/cpp.tmLanguage.json');
+updateGrammar.update('jeff-hykin/cpp-textmate-grammar', '/syntaxes/c.tmLanguage.json', './syntaxes/c.tmLanguage.json', undefined, 'master', 'source/languages/cpp');
+updateGrammar.update('jeff-hykin/cpp-textmate-grammar', '/syntaxes/cpp.tmLanguage.json', './syntaxes/cpp.tmLanguage.json', undefined, 'master', 'source/languages/cpp');
// `source.c.platform` which is still included by other grammars
updateGrammar.update('textmate/c.tmbundle', 'Syntaxes/Platform.tmLanguage', './syntaxes/platform.tmLanguage.json');
diff --git a/extensions/cpp/cgmanifest.json b/extensions/cpp/cgmanifest.json
index e6666933f61..768ca68ecbc 100644
--- a/extensions/cpp/cgmanifest.json
+++ b/extensions/cpp/cgmanifest.json
@@ -4,14 +4,14 @@
"component": {
"type": "git",
"git": {
- "name": "atom/language-c",
- "repositoryUrl": "https://github.com/atom/language-c",
- "commitHash": "9c0c5f202741a5647025db8d5df5fefba47b036c"
+ "name": "jeff-hykin/cpp-textmate-grammar",
+ "repositoryUrl": "https://github.com/jeff-hykin/cpp-textmate-grammar",
+ "commitHash": "cbd71f90cd9be0f99ddc9b0f65cec62fc3ada6d1"
}
},
"license": "MIT",
- "version": "0.58.1",
- "description": "The files syntaxes/c.json and syntaxes/c++.json were derived from the Atom package https://atom.io/packages/language-c which was originally converted from the C TextMate bundle https://github.com/textmate/c.tmbundle."
+ "version": "1.12.21",
+ "description": "The files syntaxes/c.json and syntaxes/c++.json were derived from https://github.com/atom/language-c which was originally converted from the C TextMate bundle https://github.com/textmate/c.tmbundle."
},
{
"component": {
diff --git a/extensions/cpp/language-configuration.json b/extensions/cpp/language-configuration.json
index e50df32dd11..d430c4d1518 100644
--- a/extensions/cpp/language-configuration.json
+++ b/extensions/cpp/language-configuration.json
@@ -29,4 +29,4 @@
"end": "^\\s*#pragma\\s+endregion\\b"
}
}
-}
\ No newline at end of file
+}
diff --git a/extensions/cpp/package.json b/extensions/cpp/package.json
index ff7ddb1023d..6d8ae8b81df 100644
--- a/extensions/cpp/package.json
+++ b/extensions/cpp/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": { "vscode": "*" },
"scripts": {
"update-grammar": "node ./build/update-grammars.js"
@@ -17,7 +18,7 @@
},
{
"id": "cpp",
- "extensions": [ ".cpp", ".cc", ".cxx", ".hpp", ".hh", ".hxx", ".h", ".ino", ".inl", ".ipp" ],
+ "extensions": [ ".cpp", ".cc", ".cxx", ".hpp", ".hh", ".hxx", ".h", ".i", ".ino", ".inl", ".ipp", ".hpp.in", ".h.in" ],
"aliases": [ "C++", "Cpp", "cpp"],
"configuration": "./language-configuration.json"
}],
@@ -44,4 +45,4 @@
"path": "./snippets/cpp.json"
}]
}
-}
\ No newline at end of file
+}
diff --git a/extensions/cpp/syntaxes/c.tmLanguage.json b/extensions/cpp/syntaxes/c.tmLanguage.json
index bcd5470a64c..1a95c101984 100644
--- a/extensions/cpp/syntaxes/c.tmLanguage.json
+++ b/extensions/cpp/syntaxes/c.tmLanguage.json
@@ -1,10 +1,10 @@
{
"information_for_contributors": [
- "This file has been converted from https://github.com/atom/language-c/blob/master/grammars/c.cson",
+ "This file has been converted from https://github.com/jeff-hykin/cpp-textmate-grammar/blob/master//syntaxes/c.tmLanguage.json",
"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/atom/language-c/commit/9c0c5f202741a5647025db8d5df5fefba47b036c",
+ "version": "https://github.com/jeff-hykin/cpp-textmate-grammar/commit/5209e7f9df7661db6f163753141eeb3de6fb02b3",
"name": "C",
"scopeName": "source.c",
"patterns": [
@@ -17,16 +17,26 @@
{
"include": "#preprocessor-rule-conditional"
},
+ {
+ "include": "#predefined_macros"
+ },
{
"include": "#comments"
},
{
- "match": "\\b(break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while)\\b",
+ "include": "#switch_statement"
+ },
+ {
+ "match": "\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\b",
"name": "keyword.control.c"
},
{
"include": "#storage_types"
},
+ {
+ "match": "typedef",
+ "name": "keyword.other.typedef.c"
+ },
{
"match": "\\b(const|extern|register|restrict|static|volatile|inline)\\b",
"name": "storage.modifier.c"
@@ -57,32 +67,71 @@
"include": "#strings"
},
{
- "begin": "(?x)\n^\\s* ((\\#)\\s*define) \\s+ # define\n((?[a-zA-Z_$][\\w$]*)) # macro name\n(?:\n (\\()\n (\n \\s* \\g \\s* # first argument\n ((,) \\s* \\g \\s*)* # additional arguments\n (?:\\.\\.\\.)? # varargs ellipsis?\n )\n (\\))\n)?",
+ "name": "meta.preprocessor.macro.c",
+ "begin": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((#)\\s*define\\b)\\s+((?=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
- "end": "(?<=\\))(?!\\w)",
"name": "meta.function.c",
+ "begin": "(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/))",
"captures": {
+ "1": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "2": {
+ "name": "comment.block.c"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ }
+ }
+ },
+ "default_statement": {
+ "name": "meta.conditional.case.c",
+ "begin": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.switch.c",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.switch.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#switch_conditional_parentheses"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.switch.c",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.switch.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#default_statement"
+ },
+ {
+ "include": "#case_statement"
+ },
+ {
+ "include": "$self"
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.switch.c",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "switch_conditional_parentheses": {
+ "name": "meta.conditional.switch.c",
+ "begin": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "3": {
+ "name": "comment.block.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.section.parens.begin.bracket.round.conditional.switch.c"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.conditional.switch.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "#c_conditional_context"
+ }
+ ]
+ },
+ "static_assert": {
+ "begin": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "3": {
+ "name": "comment.block.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.other.static_assert.c"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "8": {
+ "name": "comment.block.c"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.section.arguments.begin.bracket.round.static_assert.c"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.static_assert.c"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.static_assert.message.c",
+ "begin": "(,)\\s*(?=(?:L|u8|u|U\\s*\\\")?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.c"
+ }
+ },
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#string_context_c"
+ }
+ ]
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "backslash_escapes": {
+ "match": "(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?] |\n[0-3]\\d{,2}\t |\n[4-7]\\d?\t\t|\nx[a-fA-F0-9]{,2} |\nu[a-fA-F0-9]{,4} |\nU[a-fA-F0-9]{,8} )",
+ "name": "constant.character.escape.c"
+ },
+ "c_conditional_context": {
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "evalutation_context": {
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "member_access": {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*(\\b(?!(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t)\\b)[a-zA-Z_]\\w*\\b(?!\\())",
+ "captures": {
+ "1": {
+ "name": "variable.other.object.access.c"
+ },
"2": {
"name": "punctuation.separator.dot-access.c"
},
@@ -311,10 +797,1413 @@
"name": "punctuation.separator.pointer-access.c"
},
"4": {
+ "patterns": [
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "name": "variable.other.object.access.c"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.c"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.c"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
"name": "variable.other.member.c"
}
+ }
+ },
+ "method_access": {
+ "contentName": "meta.function-call.member.c",
+ "begin": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*([a-zA-Z_]\\w*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.object.access.c"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.c"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "name": "variable.other.object.access.c"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.c"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.c"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.function.member.c"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.c"
+ }
},
- "match": "((\\.)|(->))\\s*(([a-zA-Z_][a-zA-Z_0-9]*)\\b(?!\\s*\\())?"
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "predefined_macros": {
+ "patterns": [
+ {
+ "match": "\\b__cplusplus\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__cplusplus.c"
+ },
+ {
+ "match": "\\b__DATE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__DATE__.c"
+ },
+ {
+ "match": "\\b__FILE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FILE__.c"
+ },
+ {
+ "match": "\\b__LINE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__LINE__.c"
+ },
+ {
+ "match": "\\b__STDC__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__STDC__.c"
+ },
+ {
+ "match": "\\b__STDC_HOSTED__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__STDC_HOSTED__.c"
+ },
+ {
+ "match": "\\b__STDC_NO_COMPLEX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__STDC_NO_COMPLEX__.c"
+ },
+ {
+ "match": "\\b__STDC_VERSION__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__STDC_VERSION__.c"
+ },
+ {
+ "match": "\\b__STDCPP_THREADS__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__STDCPP_THREADS__.c"
+ },
+ {
+ "match": "\\b__TIME__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__TIME__.c"
+ },
+ {
+ "match": "\\bNDEBUG\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.NDEBUG.c"
+ },
+ {
+ "match": "\\b__OBJC__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__OBJC__.c"
+ },
+ {
+ "match": "\\b__ASSEMBLER__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__ASSEMBLER__.c"
+ },
+ {
+ "match": "\\b__ATOM__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__ATOM__.c"
+ },
+ {
+ "match": "\\b__AVX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__AVX__.c"
+ },
+ {
+ "match": "\\b__AVX2__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__AVX2__.c"
+ },
+ {
+ "match": "\\b_CHAR_UNSIGNED\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._CHAR_UNSIGNED.c"
+ },
+ {
+ "match": "\\b__CLR_VER\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__CLR_VER.c"
+ },
+ {
+ "match": "\\b_CONTROL_FLOW_GUARD\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._CONTROL_FLOW_GUARD.c"
+ },
+ {
+ "match": "\\b__COUNTER__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__COUNTER__.c"
+ },
+ {
+ "match": "\\b__cplusplus_cli\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__cplusplus_cli.c"
+ },
+ {
+ "match": "\\b__cplusplus_winrt\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__cplusplus_winrt.c"
+ },
+ {
+ "match": "\\b_CPPRTTI\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._CPPRTTI.c"
+ },
+ {
+ "match": "\\b_CPPUNWIND\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._CPPUNWIND.c"
+ },
+ {
+ "match": "\\b_DEBUG\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._DEBUG.c"
+ },
+ {
+ "match": "\\b_DLL\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._DLL.c"
+ },
+ {
+ "match": "\\b__FUNCDNAME__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FUNCDNAME__.c"
+ },
+ {
+ "match": "\\b__FUNCSIG__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FUNCSIG__.c"
+ },
+ {
+ "match": "\\b__FUNCTION__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FUNCTION__.c"
+ },
+ {
+ "match": "\\b_INTEGRAL_MAX_BITS\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._INTEGRAL_MAX_BITS.c"
+ },
+ {
+ "match": "\\b__INTELLISENSE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INTELLISENSE__.c"
+ },
+ {
+ "match": "\\b_ISO_VOLATILE\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._ISO_VOLATILE.c"
+ },
+ {
+ "match": "\\b_KERNEL_MODE\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._KERNEL_MODE.c"
+ },
+ {
+ "match": "\\b_M_AMD64\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_AMD64.c"
+ },
+ {
+ "match": "\\b_M_ARM\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_ARM.c"
+ },
+ {
+ "match": "\\b_M_ARM_ARMV7VE\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_ARM_ARMV7VE.c"
+ },
+ {
+ "match": "\\b_M_ARM_FP\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_ARM_FP.c"
+ },
+ {
+ "match": "\\b_M_ARM64\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_ARM64.c"
+ },
+ {
+ "match": "\\b_M_CEE\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_CEE.c"
+ },
+ {
+ "match": "\\b_M_CEE_PURE\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_CEE_PURE.c"
+ },
+ {
+ "match": "\\b_M_CEE_SAFE\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_CEE_SAFE.c"
+ },
+ {
+ "match": "\\b_M_FP_EXCEPT\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_FP_EXCEPT.c"
+ },
+ {
+ "match": "\\b_M_FP_FAST\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_FP_FAST.c"
+ },
+ {
+ "match": "\\b_M_FP_PRECISE\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_FP_PRECISE.c"
+ },
+ {
+ "match": "\\b_M_FP_STRICT\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_FP_STRICT.c"
+ },
+ {
+ "match": "\\b_M_IX86\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_IX86.c"
+ },
+ {
+ "match": "\\b_M_IX86_FP\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_IX86_FP.c"
+ },
+ {
+ "match": "\\b_M_X64\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._M_X64.c"
+ },
+ {
+ "match": "\\b_MANAGED\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._MANAGED.c"
+ },
+ {
+ "match": "\\b_MSC_BUILD\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._MSC_BUILD.c"
+ },
+ {
+ "match": "\\b_MSC_EXTENSIONS\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._MSC_EXTENSIONS.c"
+ },
+ {
+ "match": "\\b_MSC_FULL_VER\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._MSC_FULL_VER.c"
+ },
+ {
+ "match": "\\b_MSC_VER\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._MSC_VER.c"
+ },
+ {
+ "match": "\\b_MSVC_LANG\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._MSVC_LANG.c"
+ },
+ {
+ "match": "\\b__MSVC_RUNTIME_CHECKS\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__MSVC_RUNTIME_CHECKS.c"
+ },
+ {
+ "match": "\\b_MT\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._MT.c"
+ },
+ {
+ "match": "\\b_NATIVE_WCHAR_T_DEFINED\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._NATIVE_WCHAR_T_DEFINED.c"
+ },
+ {
+ "match": "\\b_OPENMP\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._OPENMP.c"
+ },
+ {
+ "match": "\\b_PREFAST\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._PREFAST.c"
+ },
+ {
+ "match": "\\b__TIMESTAMP__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__TIMESTAMP__.c"
+ },
+ {
+ "match": "\\b_VC_NO_DEFAULTLIB\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._VC_NO_DEFAULTLIB.c"
+ },
+ {
+ "match": "\\b_WCHAR_T_DEFINED\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._WCHAR_T_DEFINED.c"
+ },
+ {
+ "match": "\\b_WIN32\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._WIN32.c"
+ },
+ {
+ "match": "\\b_WIN64\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._WIN64.c"
+ },
+ {
+ "match": "\\b_WINRT_DLL\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._WINRT_DLL.c"
+ },
+ {
+ "match": "\\b_ATL_VER\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._ATL_VER.c"
+ },
+ {
+ "match": "\\b_MFC_VER\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._MFC_VER.c"
+ },
+ {
+ "match": "\\b__GFORTRAN__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GFORTRAN__.c"
+ },
+ {
+ "match": "\\b__GNUC__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GNUC__.c"
+ },
+ {
+ "match": "\\b__GNUC_MINOR__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GNUC_MINOR__.c"
+ },
+ {
+ "match": "\\b__GNUC_PATCHLEVEL__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GNUC_PATCHLEVEL__.c"
+ },
+ {
+ "match": "\\b__GNUG__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GNUG__.c"
+ },
+ {
+ "match": "\\b__STRICT_ANSI__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__STRICT_ANSI__.c"
+ },
+ {
+ "match": "\\b__BASE_FILE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__BASE_FILE__.c"
+ },
+ {
+ "match": "\\b__INCLUDE_LEVEL__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INCLUDE_LEVEL__.c"
+ },
+ {
+ "match": "\\b__ELF__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__ELF__.c"
+ },
+ {
+ "match": "\\b__VERSION__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__VERSION__.c"
+ },
+ {
+ "match": "\\b__OPTIMIZE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__OPTIMIZE__.c"
+ },
+ {
+ "match": "\\b__OPTIMIZE_SIZE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__OPTIMIZE_SIZE__.c"
+ },
+ {
+ "match": "\\b__NO_INLINE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__NO_INLINE__.c"
+ },
+ {
+ "match": "\\b__GNUC_STDC_INLINE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GNUC_STDC_INLINE__.c"
+ },
+ {
+ "match": "\\b__CHAR_UNSIGNED__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__CHAR_UNSIGNED__.c"
+ },
+ {
+ "match": "\\b__WCHAR_UNSIGNED__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__WCHAR_UNSIGNED__.c"
+ },
+ {
+ "match": "\\b__REGISTER_PREFIX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__REGISTER_PREFIX__.c"
+ },
+ {
+ "match": "\\b__REGISTER_PREFIX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__REGISTER_PREFIX__.c"
+ },
+ {
+ "match": "\\b__SIZE_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZE_TYPE__.c"
+ },
+ {
+ "match": "\\b__PTRDIFF_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__PTRDIFF_TYPE__.c"
+ },
+ {
+ "match": "\\b__WCHAR_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__WCHAR_TYPE__.c"
+ },
+ {
+ "match": "\\b__WINT_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__WINT_TYPE__.c"
+ },
+ {
+ "match": "\\b__INTMAX_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INTMAX_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINTMAX_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINTMAX_TYPE__.c"
+ },
+ {
+ "match": "\\b__SIG_ATOMIC_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIG_ATOMIC_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT8_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT8_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT16_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT16_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT32_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT32_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT64_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT64_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT8_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT8_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT16_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT16_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT32_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT32_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT64_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT64_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST8_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST8_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST16_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST16_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST32_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST32_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST64_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST64_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT_LEAST8_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_LEAST8_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT_LEAST16_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_LEAST16_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT_LEAST32_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_LEAST32_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT_LEAST64_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_LEAST64_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT_FAST8_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST8_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT_FAST16_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST16_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT_FAST32_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST32_TYPE__.c"
+ },
+ {
+ "match": "\\b__INT_FAST64_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST64_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT_FAST8_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_FAST8_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT_FAST16_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_FAST16_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT_FAST32_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_FAST32_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINT_FAST64_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_FAST64_TYPE__.c"
+ },
+ {
+ "match": "\\b__INTPTR_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INTPTR_TYPE__.c"
+ },
+ {
+ "match": "\\b__UINTPTR_TYPE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINTPTR_TYPE__.c"
+ },
+ {
+ "match": "\\b__CHAR_BIT__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__CHAR_BIT__.c"
+ },
+ {
+ "match": "\\b__SCHAR_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SCHAR_MAX__.c"
+ },
+ {
+ "match": "\\b__WCHAR_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__WCHAR_MAX__.c"
+ },
+ {
+ "match": "\\b__SHRT_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SHRT_MAX__.c"
+ },
+ {
+ "match": "\\b__INT_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_MAX__.c"
+ },
+ {
+ "match": "\\b__LONG_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__LONG_MAX__.c"
+ },
+ {
+ "match": "\\b__LONG_LONG_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__LONG_LONG_MAX__.c"
+ },
+ {
+ "match": "\\b__WINT_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__WINT_MAX__.c"
+ },
+ {
+ "match": "\\b__SIZE_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZE_MAX__.c"
+ },
+ {
+ "match": "\\b__PTRDIFF_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__PTRDIFF_MAX__.c"
+ },
+ {
+ "match": "\\b__INTMAX_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INTMAX_MAX__.c"
+ },
+ {
+ "match": "\\b__UINTMAX_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINTMAX_MAX__.c"
+ },
+ {
+ "match": "\\b__SIG_ATOMIC_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIG_ATOMIC_MAX__.c"
+ },
+ {
+ "match": "\\b__INT8_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT8_MAX__.c"
+ },
+ {
+ "match": "\\b__INT16_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT16_MAX__.c"
+ },
+ {
+ "match": "\\b__INT32_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT32_MAX__.c"
+ },
+ {
+ "match": "\\b__INT64_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT64_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT8_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT8_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT16_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT16_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT32_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT32_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT64_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT64_MAX__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST8_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST8_MAX__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST16_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST16_MAX__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST32_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST32_MAX__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST64_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST64_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT_LEAST8_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_LEAST8_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT_LEAST16_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_LEAST16_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT_LEAST32_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_LEAST32_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT_LEAST64_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_LEAST64_MAX__.c"
+ },
+ {
+ "match": "\\b__INT_FAST8_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST8_MAX__.c"
+ },
+ {
+ "match": "\\b__INT_FAST16_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST16_MAX__.c"
+ },
+ {
+ "match": "\\b__INT_FAST32_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST32_MAX__.c"
+ },
+ {
+ "match": "\\b__INT_FAST64_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST64_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT_FAST8_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_FAST8_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT_FAST16_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_FAST16_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT_FAST32_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_FAST32_MAX__.c"
+ },
+ {
+ "match": "\\b__UINT_FAST64_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINT_FAST64_MAX__.c"
+ },
+ {
+ "match": "\\b__INTPTR_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INTPTR_MAX__.c"
+ },
+ {
+ "match": "\\b__UINTPTR_MAX__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__UINTPTR_MAX__.c"
+ },
+ {
+ "match": "\\b__WCHAR_MIN__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__WCHAR_MIN__.c"
+ },
+ {
+ "match": "\\b__WINT_MIN__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__WINT_MIN__.c"
+ },
+ {
+ "match": "\\b__SIG_ATOMIC_MIN__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIG_ATOMIC_MIN__.c"
+ },
+ {
+ "match": "\\b__SCHAR_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SCHAR_WIDTH__.c"
+ },
+ {
+ "match": "\\b__SHRT_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SHRT_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INT_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_WIDTH__.c"
+ },
+ {
+ "match": "\\b__LONG_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__LONG_WIDTH__.c"
+ },
+ {
+ "match": "\\b__LONG_LONG_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__LONG_LONG_WIDTH__.c"
+ },
+ {
+ "match": "\\b__PTRDIFF_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__PTRDIFF_WIDTH__.c"
+ },
+ {
+ "match": "\\b__SIG_ATOMIC_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIG_ATOMIC_WIDTH__.c"
+ },
+ {
+ "match": "\\b__SIZE_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZE_WIDTH__.c"
+ },
+ {
+ "match": "\\b__WCHAR_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__WCHAR_WIDTH__.c"
+ },
+ {
+ "match": "\\b__WINT_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__WINT_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST8_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST8_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST16_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST16_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST32_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST32_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INT_LEAST64_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_LEAST64_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INT_FAST8_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST8_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INT_FAST16_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST16_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INT_FAST32_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST32_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INT_FAST64_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INT_FAST64_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INTPTR_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INTPTR_WIDTH__.c"
+ },
+ {
+ "match": "\\b__INTMAX_WIDTH__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__INTMAX_WIDTH__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_INT__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_INT__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_LONG__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_LONG__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_LONG_LONG__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_LONG_LONG__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_SHORT__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_SHORT__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_POINTER__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_POINTER__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_FLOAT__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_FLOAT__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_DOUBLE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_DOUBLE__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_LONG_DOUBLE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_LONG_DOUBLE__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_SIZE_T__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_SIZE_T__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_WCHAR_T__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_WCHAR_T__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_WINT_T__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_WINT_T__.c"
+ },
+ {
+ "match": "\\b__SIZEOF_PTRDIFF_T__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SIZEOF_PTRDIFF_T__.c"
+ },
+ {
+ "match": "\\b__BYTE_ORDER__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__BYTE_ORDER__.c"
+ },
+ {
+ "match": "\\b__ORDER_LITTLE_ENDIAN__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__ORDER_LITTLE_ENDIAN__.c"
+ },
+ {
+ "match": "\\b__ORDER_BIG_ENDIAN__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__ORDER_BIG_ENDIAN__.c"
+ },
+ {
+ "match": "\\b__ORDER_PDP_ENDIAN__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__ORDER_PDP_ENDIAN__.c"
+ },
+ {
+ "match": "\\b__FLOAT_WORD_ORDER__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FLOAT_WORD_ORDER__.c"
+ },
+ {
+ "match": "\\b__DEPRECATED\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__DEPRECATED.c"
+ },
+ {
+ "match": "\\b__EXCEPTIONS\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__EXCEPTIONS.c"
+ },
+ {
+ "match": "\\b__GXX_RTTI\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GXX_RTTI.c"
+ },
+ {
+ "match": "\\b__USING_SJLJ_EXCEPTIONS__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__USING_SJLJ_EXCEPTIONS__.c"
+ },
+ {
+ "match": "\\b__GXX_EXPERIMENTAL_CXX0X__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GXX_EXPERIMENTAL_CXX0X__.c"
+ },
+ {
+ "match": "\\b__GXX_WEAK__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GXX_WEAK__.c"
+ },
+ {
+ "match": "\\b__NEXT_RUNTIME__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__NEXT_RUNTIME__.c"
+ },
+ {
+ "match": "\\b__LP64__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__LP64__.c"
+ },
+ {
+ "match": "\\b_LP64\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._LP64.c"
+ },
+ {
+ "match": "\\b__SSP__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SSP__.c"
+ },
+ {
+ "match": "\\b__SSP_ALL__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SSP_ALL__.c"
+ },
+ {
+ "match": "\\b__SSP_STRONG__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SSP_STRONG__.c"
+ },
+ {
+ "match": "\\b__SSP_EXPLICIT__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SSP_EXPLICIT__.c"
+ },
+ {
+ "match": "\\b__SANITIZE_ADDRESS__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SANITIZE_ADDRESS__.c"
+ },
+ {
+ "match": "\\b__SANITIZE_THREAD__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__SANITIZE_THREAD__.c"
+ },
+ {
+ "match": "\\b__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1.c"
+ },
+ {
+ "match": "\\b__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2.c"
+ },
+ {
+ "match": "\\b__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4.c"
+ },
+ {
+ "match": "\\b__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8.c"
+ },
+ {
+ "match": "\\b__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16.c"
+ },
+ {
+ "match": "\\b__HAVE_SPECULATION_SAFE_VALUE\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__HAVE_SPECULATION_SAFE_VALUE.c"
+ },
+ {
+ "match": "\\b__GCC_HAVE_DWARF2_CFI_ASM\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GCC_HAVE_DWARF2_CFI_ASM.c"
+ },
+ {
+ "match": "\\b__FP_FAST_FMA\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FP_FAST_FMA.c"
+ },
+ {
+ "match": "\\b__FP_FAST_FMAF\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FP_FAST_FMAF.c"
+ },
+ {
+ "match": "\\b__FP_FAST_FMAL\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FP_FAST_FMAL.c"
+ },
+ {
+ "match": "\\b__FP_FAST_FMAF16\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FP_FAST_FMAF16.c"
+ },
+ {
+ "match": "\\b__FP_FAST_FMAF32\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FP_FAST_FMAF32.c"
+ },
+ {
+ "match": "\\b__FP_FAST_FMAF64\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FP_FAST_FMAF64.c"
+ },
+ {
+ "match": "\\b__FP_FAST_FMAF128\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FP_FAST_FMAF128.c"
+ },
+ {
+ "match": "\\b__FP_FAST_FMAF32X\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FP_FAST_FMAF32X.c"
+ },
+ {
+ "match": "\\b__FP_FAST_FMAF64X\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FP_FAST_FMAF64X.c"
+ },
+ {
+ "match": "\\b__FP_FAST_FMAF128X\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FP_FAST_FMAF128X.c"
+ },
+ {
+ "match": "\\b__GCC_IEC_559\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GCC_IEC_559.c"
+ },
+ {
+ "match": "\\b__GCC_IEC_559_COMPLEX\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__GCC_IEC_559_COMPLEX.c"
+ },
+ {
+ "match": "\\b__NO_MATH_ERRNO__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__NO_MATH_ERRNO__.c"
+ },
+ {
+ "match": "\\b__has_builtin\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__has_builtin.c"
+ },
+ {
+ "match": "\\b__has_feature\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__has_feature.c"
+ },
+ {
+ "match": "\\b__has_extension\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__has_extension.c"
+ },
+ {
+ "match": "\\b__has_cpp_attribute\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__has_cpp_attribute.c"
+ },
+ {
+ "match": "\\b__has_c_attribute\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__has_c_attribute.c"
+ },
+ {
+ "match": "\\b__has_attribute\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__has_attribute.c"
+ },
+ {
+ "match": "\\b__has_declspec_attribute\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__has_declspec_attribute.c"
+ },
+ {
+ "match": "\\b__is_identifier\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__is_identifier.c"
+ },
+ {
+ "match": "\\b__has_include\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__has_include.c"
+ },
+ {
+ "match": "\\b__has_include_next\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__has_include_next.c"
+ },
+ {
+ "match": "\\b__has_warning\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__has_warning.c"
+ },
+ {
+ "match": "\\b__BASE_FILE__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__BASE_FILE__.c"
+ },
+ {
+ "match": "\\b__FILE_NAME__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__FILE_NAME__.c"
+ },
+ {
+ "match": "\\b__clang__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__clang__.c"
+ },
+ {
+ "match": "\\b__clang_major__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__clang_major__.c"
+ },
+ {
+ "match": "\\b__clang_minor__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__clang_minor__.c"
+ },
+ {
+ "match": "\\b__clang_patchlevel__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__clang_patchlevel__.c"
+ },
+ {
+ "match": "\\b__clang_version__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__clang_version__.c"
+ },
+ {
+ "match": "\\b__fp16\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.__fp16.c"
+ },
+ {
+ "match": "\\b_Float16\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined._Float16.c"
+ },
+ {
+ "match": "(\\b__([A-Z_])__\\b)",
+ "captures": {
+ "1": {
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$2.c"
+ }
+ }
+ }
+ ]
+ },
+ "numbers": {
+ "begin": "(?\\]\\)]))\\s*([a-zA-Z_]\\w*)\\s*(?=(?:\\[\\]\\s*)?(?:,|\\)))",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.probably.c"
+ }
+ }
+ },
+ "access-method": {
+ "name": "meta.function-call.member.c",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))\\s*(?:(\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(?:\\.)|(?:->)))*)\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.object.c"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.c"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.dot-access.c"
+ },
+ {
+ "match": "->",
+ "name": "punctuation.separator.pointer-access.c"
+ },
+ {
+ "match": "[a-zA-Z_][a-zA-Z_0-9]*",
+ "name": "variable.object.c"
+ },
+ {
+ "name": "everything.else.c",
+ "match": ".+"
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.function.member.c"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.c"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
},
"block": {
"patterns": [
@@ -352,25 +2241,36 @@
"include": "#preprocessor-rule-conditional-block"
},
{
- "include": "#access"
+ "include": "#method_access"
},
{
- "include": "#libc"
+ "include": "#member_access"
},
{
"include": "#c_function_call"
},
{
- "captures": {
+ "name": "meta.initialization.c",
+ "begin": "(?x)\n(?:\n (?:\n\t(?=\\s)(?=+!]+ | \\(\\) | \\[\\]))\n)\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
"1": {
"name": "variable.other.c"
},
"2": {
- "name": "punctuation.definition.parameters.c"
+ "name": "punctuation.section.parens.begin.bracket.round.initialization.c"
}
},
- "match": "(?x)\n(?:\n (?:\n (?=\\s)(?=+!]+ | \\(\\) | \\[\\]))\n)\n\\s*(\\() # opening bracket",
- "name": "meta.initialization.c"
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.initialization.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
},
{
"begin": "{",
@@ -400,7 +2300,7 @@
]
},
"c_function_call": {
- "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(?=\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(?=\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
"end": "(?<=\\))(?!\\w)",
"name": "meta.function-call.c",
"patterns": [
@@ -435,10 +2335,6 @@
},
"name": "comment.block.c"
},
- {
- "match": "\\*/.*\\n",
- "name": "invalid.illegal.stray-comment-end.c"
- },
{
"captures": {
"1": {
@@ -446,13 +2342,13 @@
}
},
"match": "^// =(\\s*.*?)\\s*=\\s*$\\n?",
- "name": "comment.line.banner.cpp"
+ "name": "comment.line.banner.c"
},
{
"begin": "(^[ \\t]+)?(?=//)",
"beginCaptures": {
"1": {
- "name": "punctuation.whitespace.comment.leading.cpp"
+ "name": "punctuation.whitespace.comment.leading.c"
}
},
"end": "(?!\\G)",
@@ -461,11 +2357,11 @@
"begin": "//",
"beginCaptures": {
"0": {
- "name": "punctuation.definition.comment.cpp"
+ "name": "punctuation.definition.comment.c"
}
},
"end": "(?=\\n)",
- "name": "comment.line.double-slash.cpp",
+ "name": "comment.line.double-slash.c",
"patterns": [
{
"include": "#line_continuation_character"
@@ -488,17 +2384,6 @@
}
]
},
- "libc": {
- "captures": {
- "1": {
- "name": "punctuation.whitespace.support.function.leading.c"
- },
- "2": {
- "name": "support.function.C99.c"
- }
- },
- "match": "(?x) (\\s*) \\b\n(_Exit|(?:nearbyint|nextafter|nexttoward|netoward|nan)[fl]?|a(?:cos|sin)h?[fl]?|abort|abs|asctime|assert\n|atan(?:[h2]?[fl]?)?|atexit|ato[ifl]|atoll|bsearch|btowc|cabs[fl]?|cacos|cacos[fl]|cacosh[fl]?\n|calloc|carg[fl]?|casinh?[fl]?|catanh?[fl]?|cbrt[fl]?|ccosh?[fl]?|ceil[fl]?|cexp[fl]?|cimag[fl]?\n|clearerr|clock|clog[fl]?|conj[fl]?|copysign[fl]?|cosh?[fl]?|cpow[fl]?|cproj[fl]?|creal[fl]?\n|csinh?[fl]?|csqrt[fl]?|ctanh?[fl]?|ctime|difftime|div|erfc?[fl]?|exit|fabs[fl]?\n|exp(?:2[fl]?|[fl]|m1[fl]?)?|fclose|fdim[fl]?|fe[gs]et(?:env|exceptflag|round)|feclearexcept\n|feholdexcept|feof|feraiseexcept|ferror|fetestexcept|feupdateenv|fflush|fgetpos|fgetw?[sc]\n|floor[fl]?|fmax?[fl]?|fmin[fl]?|fmod[fl]?|fopen|fpclassify|fprintf|fputw?[sc]|fread|free|freopen\n|frexp[fl]?|fscanf|fseek|fsetpos|ftell|fwide|fwprintf|fwrite|fwscanf|genv|get[sc]|getchar|gmtime\n|gwc|gwchar|hypot[fl]?|ilogb[fl]?|imaxabs|imaxdiv|isalnum|isalpha|isblank|iscntrl|isdigit|isfinite\n|isgraph|isgreater|isgreaterequal|isinf|isless(?:equal|greater)?|isw?lower|isnan|isnormal|isw?print\n|isw?punct|isw?space|isunordered|isw?upper|iswalnum|iswalpha|iswblank|iswcntrl|iswctype|iswdigit|iswgraph\n|isw?xdigit|labs|ldexp[fl]?|ldiv|lgamma[fl]?|llabs|lldiv|llrint[fl]?|llround[fl]?|localeconv|localtime\n|log[2b]?[fl]?|log1[p0][fl]?|longjmp|lrint[fl]?|lround[fl]?|malloc|mbr?len|mbr?towc|mbsinit|mbsrtowcs\n|mbstowcs|memchr|memcmp|memcpy|memmove|memset|mktime|modf[fl]?|perror|pow[fl]?|printf|puts|putw?c(?:har)?\n|qsort|raise|rand|remainder[fl]?|realloc|remove|remquo[fl]?|rename|rewind|rint[fl]?|round[fl]?|scalbl?n[fl]?\n|scanf|setbuf|setjmp|setlocale|setvbuf|signal|signbit|sinh?[fl]?|snprintf|sprintf|sqrt[fl]?|srand|sscanf\n|strcat|strchr|strcmp|strcoll|strcpy|strcspn|strerror|strftime|strlen|strncat|strncmp|strncpy|strpbrk\n|strrchr|strspn|strstr|strto[kdf]|strtoimax|strtol[dl]?|strtoull?|strtoumax|strxfrm|swprintf|swscanf\n|system|tan|tan[fl]|tanh[fl]?|tgamma[fl]?|time|tmpfile|tmpnam|tolower|toupper|trunc[fl]?|ungetw?c|va_arg\n|va_copy|va_end|va_start|vfw?printf|vfw?scanf|vprintf|vscanf|vsnprintf|vsprintf|vsscanf|vswprintf|vswscanf\n|vwprintf|vwscanf|wcrtomb|wcscat|wcschr|wcscmp|wcscoll|wcscpy|wcscspn|wcsftime|wcslen|wcsncat|wcsncmp|wcsncpy\n|wcspbrk|wcsrchr|wcsrtombs|wcsspn|wcsstr|wcsto[dkf]|wcstoimax|wcstol[dl]?|wcstombs|wcstoull?|wcstoumax|wcsxfrm\n|wctom?b|wmem(?:set|chr|cpy|cmp|move)|wprintf|wscanf)\\b"
- },
"line_continuation_character": {
"patterns": [
{
@@ -511,15 +2396,8 @@
}
]
},
- "numbers": {
- "patterns": [
- {
- "match": "\\b((0(x|X)[0-9a-fA-F]([0-9a-fA-F']*[0-9a-fA-F])?)|(0(b|B)[01]([01']*[01])?)|(([0-9]([0-9']*[0-9])?\\.?[0-9]*([0-9']*[0-9])?)|(\\.[0-9]([0-9']*[0-9])?))((e|E)(\\+|-)?[0-9]([0-9']*[0-9])?)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b",
- "name": "constant.numeric.c"
- }
- ]
- },
"parens": {
+ "name": "meta.parens.c",
"begin": "\\(",
"beginCaptures": {
"0": {
@@ -539,6 +2417,7 @@
]
},
"parens-block": {
+ "name": "meta.parens.block.c",
"begin": "\\(",
"beginCaptures": {
"0": {
@@ -554,6 +2433,10 @@
"patterns": [
{
"include": "#block_innards"
+ },
+ {
+ "match": "(?-mix:(?=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\()\n(?=\n (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n |\n (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
"end": "(?<=\\))(?!\\w)|(?=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
"beginCaptures": {
"1": {
"name": "entity.name.function.c"
@@ -1846,7 +3827,8 @@
"include": "#vararg_ellipses"
},
{
- "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "name": "meta.function.definition.parameters.c",
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
"beginCaptures": {
"1": {
"name": "entity.name.function.c"
@@ -1862,6 +3844,9 @@
}
},
"patterns": [
+ {
+ "include": "#probably_a_parameter"
+ },
{
"include": "#function-innards"
}
@@ -1900,13 +3885,16 @@
"include": "#storage_types"
},
{
- "include": "#access"
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
},
{
"include": "#operators"
},
{
- "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
"beginCaptures": {
"1": {
"name": "entity.name.function.c"
diff --git a/extensions/cpp/syntaxes/cpp.tmLanguage.json b/extensions/cpp/syntaxes/cpp.tmLanguage.json
index f29bc255ba8..5e0af3c03ef 100644
--- a/extensions/cpp/syntaxes/cpp.tmLanguage.json
+++ b/extensions/cpp/syntaxes/cpp.tmLanguage.json
@@ -1,394 +1,14874 @@
{
"information_for_contributors": [
- "This file has been converted from https://github.com/atom/language-c/blob/master/grammars/c%2B%2B.cson",
+ "This file has been converted from https://github.com/jeff-hykin/cpp-textmate-grammar/blob/master//syntaxes/cpp.tmLanguage.json",
"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/atom/language-c/commit/3a269f88b12e512fb9495dc006a1dabf325d3d7f",
+ "version": "https://github.com/jeff-hykin/cpp-textmate-grammar/commit/cbd71f90cd9be0f99ddc9b0f65cec62fc3ada6d1",
"name": "C++",
"scopeName": "source.cpp",
"patterns": [
{
- "include": "#special_block"
+ "include": "#ever_present_context"
},
{
- "include": "#strings"
+ "include": "#constructor_root"
},
{
- "match": "\\b(friend|explicit|virtual|override|final|noexcept)\\b",
- "name": "storage.modifier.cpp"
+ "include": "#destructor_root"
},
{
- "match": "\\b(private:|protected:|public:)",
- "name": "storage.modifier.cpp"
+ "include": "#function_definition"
},
{
- "match": "\\b(catch|operator|try|throw|using)\\b",
- "name": "keyword.control.cpp"
+ "include": "#operator_overload"
},
{
- "match": "\\bdelete\\b(\\s*\\[\\])?|\\bnew\\b(?!])",
- "name": "keyword.control.cpp"
+ "include": "#using_namespace"
},
{
- "match": "\\b(f|m)[A-Z]\\w*\\b",
- "name": "variable.other.readwrite.member.cpp"
+ "include": "#type_alias"
},
{
- "match": "\\bthis\\b",
- "name": "variable.language.this.cpp"
+ "include": "#using_name"
},
{
- "match": "\\bnullptr\\b",
- "name": "constant.language.cpp"
+ "include": "#namespace_alias"
},
{
- "match": "\\btemplate\\b\\s*",
- "name": "storage.type.template.cpp"
+ "include": "#namespace_block"
},
{
- "match": "\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\b\\s*",
- "name": "keyword.operator.cast.cpp"
+ "include": "#extern_block"
},
{
- "match": "::",
- "name": "punctuation.separator.namespace.access.cpp"
+ "include": "#typedef_class"
},
{
- "match": "\\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\b",
- "name": "keyword.operator.cpp"
+ "include": "#typedef_struct"
},
{
- "match": "\\b(class|decltype|wchar_t|char16_t|char32_t)\\b",
- "name": "storage.type.cpp"
+ "include": "#typedef_union"
},
{
- "match": "\\b(constexpr|export|mutable|typename|thread_local)\\b",
- "name": "storage.modifier.cpp"
+ "include": "#typedef_function_pointer"
},
{
- "begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?",
- "name": "meta.angle-brackets.cpp",
+ "inline_comment": {
+ "match": "(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/))",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ "semicolon": {
+ "match": ";",
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "comma": {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ },
+ "assignment_operator": {
+ "match": "\\=",
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "ever_present_context": {
"patterns": [
{
- "include": "#angle_brackets"
+ "include": "#single_line_macro"
},
{
- "include": "$base"
+ "include": "#preprocessor_rule_enabled"
+ },
+ {
+ "include": "#preprocessor_rule_disabled"
+ },
+ {
+ "include": "#preprocessor_rule_conditional"
+ },
+ {
+ "include": "#meta_preprocessor_macro"
+ },
+ {
+ "include": "#meta_preprocessor_diagnostic"
+ },
+ {
+ "include": "#meta_preprocessor_include"
+ },
+ {
+ "include": "#pragma_mark"
+ },
+ {
+ "include": "#meta_preprocessor_line"
+ },
+ {
+ "include": "#meta_preprocessor_undef"
+ },
+ {
+ "include": "#meta_preprocessor_pragma"
+ },
+ {
+ "include": "#hacky_fix_for_stray_directive"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#line_continuation_character"
}
]
},
- "block": {
- "begin": "\\{",
- "beginCaptures": {
- "0": {
- "name": "punctuation.section.block.begin.bracket.curly.c"
- }
- },
- "end": "\\}",
- "endCaptures": {
- "0": {
- "name": "punctuation.section.block.end.bracket.curly.c"
- }
- },
- "name": "meta.block.cpp",
+ "function_body_context": {
"patterns": [
{
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#using_namespace"
+ },
+ {
+ "include": "#type_alias"
+ },
+ {
+ "include": "#using_name"
+ },
+ {
+ "include": "#namespace_alias"
+ },
+ {
+ "include": "#typedef_class"
+ },
+ {
+ "include": "#typedef_struct"
+ },
+ {
+ "include": "#typedef_union"
+ },
+ {
+ "include": "#typedef_function_pointer"
+ },
+ {
+ "include": "#typedef_keyword"
+ },
+ {
+ "include": "#standard_declares"
+ },
+ {
+ "include": "#class_block"
+ },
+ {
+ "include": "#struct_block"
+ },
+ {
+ "include": "#union_block"
+ },
+ {
+ "include": "#enum_block"
+ },
+ {
+ "include": "#access_control_keywords"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#assembly"
+ },
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#switch_statement"
+ },
+ {
+ "include": "#goto_statement"
+ },
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "#label"
+ }
+ ]
+ },
+ "evaluation_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context_c"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#predefined_macros"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#memory_operators"
+ },
+ {
+ "include": "#wordlike_operators"
+ },
+ {
+ "include": "#type_casting_operators"
+ },
+ {
+ "include": "#control_flow_keywords"
+ },
+ {
+ "include": "#exception_keywords"
+ },
+ {
+ "include": "#the_this_keyword"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#builtin_storage_type_initilizer"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ },
+ {
+ "include": "#misc_storage_modifiers"
+ },
+ {
+ "include": "#lambdas"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#parentheses"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "include": "#square_brackets"
+ },
+ {
+ "include": "#empty_square_brackets"
+ },
+ {
+ "include": "#semicolon"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ "function_parameter_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#parameter"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ "template_definition_context": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_template_definition_inner_generated"
+ },
+ {
+ "include": "#template_definition_argument"
+ },
+ {
+ "include": "#template_argument_defaulted"
+ },
+ {
+ "include": "#template_call_innards"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "template_call_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#template_call_range"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#scope_resolution_template_call_inner_generated"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma_in_template_argument"
+ },
+ {
+ "include": "#qualified_type"
+ }
+ ]
+ },
+ "attributes_context": {
+ "patterns": [
+ {
+ "include": "#cpp_attributes"
+ },
+ {
+ "include": "#gcc_attributes"
+ },
+ {
+ "include": "#ms_attributes"
+ },
+ {
+ "include": "#alignas_attribute"
+ }
+ ]
+ },
+ "storage_types": {
+ "patterns": [
+ {
+ "include": "#storage_specifiers"
+ },
+ {
+ "include": "#primitive_types"
+ },
+ {
+ "include": "#non_primitive_types"
+ },
+ {
+ "include": "#pthread_types"
+ },
+ {
+ "include": "#posix_reserved_types"
+ },
+ {
+ "include": "#decltype"
+ },
+ {
+ "include": "#typename"
+ }
+ ]
+ },
+ "block_comment": {
+ "name": "comment.block.cpp",
+ "begin": "\\s*+(\\/\\*)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.cpp"
+ }
+ },
+ "end": "(\\*\\/)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ "line_comment": {
+ "name": "comment.line.double-slash.cpp",
+ "begin": "\\s*+(\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.cpp"
+ }
+ },
+ "end": "(?<=\\n)(?[#;\\/=*C~]+)(?![#;\\/=*C~]))\\s*.+\\s*\\8\\s*(?:\\n|$)))|(^\\s*((\\/\\*)\\s*?((?>[#;\\/=*C~]+)(?![#;\\/=*C~]))\\s*.+\\s*\\8\\s*\\*\\/)))",
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.double-slash.cpp"
+ },
+ "2": {
+ "name": "comment.line.double-slash.cpp"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.cpp"
+ },
+ "4": {
+ "name": "meta.banner.character.cpp"
+ },
+ "5": {
+ "name": "meta.toc-list.banner.block.cpp"
+ },
+ "6": {
+ "name": "comment.line.block.cpp"
+ },
+ "7": {
+ "name": "punctuation.definition.comment.cpp"
+ },
+ "8": {
+ "name": "meta.banner.character.cpp"
+ }
+ }
+ },
+ "invalid_comment_end": {
+ "match": "\\*\\/",
+ "name": "invalid.illegal.unexpected.punctuation.definition.comment.end.cpp"
+ },
+ "comments": {
+ "patterns": [
+ {
+ "include": "#emacs_file_banner"
+ },
+ {
+ "include": "#block_comment"
+ },
+ {
+ "include": "#line_comment"
+ },
+ {
+ "include": "#invalid_comment_end"
+ }
+ ]
+ },
+ "number_literal": {
+ "begin": "(?|\\[|\\]|=))",
- "name": "meta.namespace-block.cpp",
+ }
+ },
+ {
+ "match": "(\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w))?((?:\\w(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.decltype.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.decltype.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "decltype": {
+ "contentName": "meta.arguments.decltype.cpp",
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.decltype.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.decltype.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "pthread_types": {
+ "match": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(((?:private|protected|public))\\s*(:))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "storage.type.modifier.access.control.$6.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.colon.access.control.cpp"
+ }
+ }
+ },
+ "exception_keywords": {
+ "match": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:(?:(delete)\\s*(\\[\\])|(delete))|(new))(?!\\w))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.operator.wordlike.cpp"
+ },
+ "6": {
+ "name": "keyword.operator.delete.array.cpp"
+ },
+ "7": {
+ "name": "keyword.operator.delete.array.bracket.cpp"
+ },
+ "8": {
+ "name": "keyword.operator.delete.cpp"
+ },
+ "9": {
+ "name": "keyword.operator.new.cpp"
+ }
+ }
+ },
+ "control_flow_keywords": {
+ "match": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.goto.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.label.call.cpp"
+ }
+ }
+ },
+ "label": {
+ "match": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(:)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.label.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.separator.label.cpp"
+ }
+ }
+ },
+ "default_statement": {
+ "name": "meta.conditional.case.cpp",
+ "begin": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.section.parens.begin.bracket.round.conditional.switch.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.conditional.switch.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "#c_conditional_context"
+ }
+ ]
+ },
+ "switch_statement": {
+ "name": "meta.block.switch.cpp",
+ "begin": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.switch.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.switch.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#switch_conditional_parentheses"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.switch.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.switch.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#default_statement"
+ },
+ {
+ "include": "#case_statement"
+ },
+ {
+ "include": "$self"
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.switch.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "cpp_attributes": {
+ "name": "support.other.attribute.cpp",
+ "begin": "(\\[\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.attribute.begin.cpp"
+ }
+ },
+ "end": "(\\]\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.attribute.end.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#string_context_c"
+ }
+ ]
+ },
+ {
+ "match": "(using)\\s+((?(?:(?>[^<>]*)\\g<1>?)+)>)\\s*",
+ "captures": {
+ "0": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "template_call_range": {
+ "name": "meta.template.call.cpp",
+ "begin": "(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ "template_isolated_definition": {
+ "match": "(?\\s*$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.template.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.angle-brackets.start.template.definition.cpp"
+ },
+ "3": {
+ "name": "meta.template.definition.cpp",
+ "patterns": [
+ {
+ "include": "#template_definition_context"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.section.angle-brackets.end.template.definition.cpp"
+ }
+ }
+ },
+ "template_definition": {
+ "name": "meta.template.definition.cpp",
+ "begin": "(?)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.angle-brackets.end.template.definition.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "((?<=\\w)\\s*<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "include": "#template_definition_context"
+ }
+ ]
+ },
+ "template_argument_defaulted": {
+ "match": "(?<=<|,)\\s*((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\s+)*)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*([=])",
+ "captures": {
+ "1": {
+ "name": "storage.type.template.cpp"
+ },
+ "2": {
+ "name": "entity.name.type.template.cpp"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.cpp"
+ }
+ }
+ },
+ "template_definition_argument": {
+ "match": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)|((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\s+)+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))|((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*(\\.\\.\\.)\\s*((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*(?:(,)|(?=>|$))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "storage.type.template.argument.$5.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
+ "name": "storage.type.template.argument.$0.cpp"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.type.template.cpp"
+ },
+ "8": {
+ "name": "storage.type.template.cpp"
+ },
+ "9": {
+ "name": "punctuation.vararg-ellipses.template.definition.cpp"
+ },
+ "10": {
+ "name": "entity.name.type.template.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.delimiter.comma.template.argument.cpp"
+ }
+ }
+ },
+ "scope_resolution": {
+ "match": "(::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<4>?)+)>)\\s*)?::)*\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ "3": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_inner_generated": {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.scope-resolution.cpp"
+ },
+ "7": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ }
+ }
+ },
+ "scope_resolution_template_call": {
+ "match": "(::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<4>?)+)>)\\s*)?::)*\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_template_call_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
+ },
+ "3": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_template_call_inner_generated": {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_template_call_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.scope-resolution.template.call.cpp"
+ },
+ "7": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
+ }
+ }
+ },
+ "scope_resolution_template_definition": {
+ "match": "(::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<4>?)+)>)\\s*)?::)*\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_template_definition_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
+ },
+ "3": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_template_definition_inner_generated": {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_template_definition_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.scope-resolution.template.definition.cpp"
+ },
+ "7": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
+ }
+ }
+ },
+ "scope_resolution_function_call": {
+ "match": "(::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<4>?)+)>)\\s*)?::)*\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_call_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
+ },
+ "3": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_function_call_inner_generated": {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_call_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.scope-resolution.function.call.cpp"
+ },
+ "7": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
+ }
+ }
+ },
+ "scope_resolution_function_definition": {
+ "match": "(::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<4>?)+)>)\\s*)?::)*\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
+ },
+ "3": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_function_definition_inner_generated": {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.scope-resolution.function.definition.cpp"
+ },
+ "7": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
+ }
+ }
+ },
+ "scope_resolution_namespace_alias": {
+ "match": "(::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<4>?)+)>)\\s*)?::)*\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_alias_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
+ },
+ "3": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_namespace_alias_inner_generated": {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_alias_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.scope-resolution.namespace.alias.cpp"
+ },
+ "7": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
+ }
+ }
+ },
+ "scope_resolution_namespace_using": {
+ "match": "(::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<4>?)+)>)\\s*)?::)*\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_using_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
+ },
+ "3": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_namespace_using_inner_generated": {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_using_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.scope-resolution.namespace.using.cpp"
+ },
+ "7": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
+ }
+ }
+ },
+ "scope_resolution_namespace_block": {
+ "match": "(::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<4>?)+)>)\\s*)?::)*\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_block_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
+ },
+ "3": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_namespace_block_inner_generated": {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_block_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.scope-resolution.namespace.block.cpp"
+ },
+ "7": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
+ }
+ }
+ },
+ "scope_resolution_parameter": {
+ "match": "(::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<4>?)+)>)\\s*)?::)*\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_parameter_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
+ },
+ "3": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_parameter_inner_generated": {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_parameter_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.scope-resolution.parameter.cpp"
+ },
+ "7": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
+ }
+ }
+ },
+ "scope_resolution_function_definition_operator_overload": {
+ "match": "(::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<4>?)+)>)\\s*)?::)*\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_operator_overload_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
+ },
+ "3": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_function_definition_operator_overload_inner_generated": {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<8>?)+)>)\\s*)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_operator_overload_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.scope-resolution.function.definition.operator-overload.cpp"
+ },
+ "7": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
+ }
+ }
+ },
+ "qualified_type": {
+ "match": "\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<26>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<26>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<26>?)+)>)\\s*)?(?![\\w<:.])",
+ "captures": {
+ "0": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(?![\\w<:.]))(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?",
+ "captures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
}
},
- "end": "\\}",
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "30": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "33": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "34": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ "type_alias": {
+ "match": "(using)\\s*(?!namespace)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<58>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<58>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<58>?)+)>)\\s*)?(?![\\w<:.]))\\s*(\\=)\\s*((?:typename)?)\\s*((?:(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<58>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<58>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<58>?)+)>)\\s*)?(?![\\w<:.]))|(.*(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(\\[)(\\w*)(\\])\\s*)?\\s*(?:(;)|\\n)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "61": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "62": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "63": {
+ "name": "comment.block.cpp"
+ },
+ "64": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "65": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "66": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "67": {
+ "name": "comment.block.cpp"
+ },
+ "68": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "69": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "70": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "71": {
+ "name": "comment.block.cpp"
+ },
+ "72": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "73": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "74": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "75": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "76": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.declaration.type.alias.cpp"
+ },
+ "typename": {
+ "match": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<36>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<36>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<36>?)+)>)\\s*)?(?![\\w<:.]))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "10": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<69>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<69>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<69>?)+)>)\\s*)?(?![\\w<:.]))(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<69>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\())",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.function.definition.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "storage.type.template.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "name": "storage.modifier.$11.cpp"
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "16": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "44": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "45": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "46": {
+ "name": "comment.block.cpp"
+ },
+ "47": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "48": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "49": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "50": {
+ "name": "comment.block.cpp"
+ },
+ "51": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "52": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "53": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "54": {
+ "name": "comment.block.cpp"
+ },
+ "55": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "56": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "57": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "58": {
+ "name": "comment.block.cpp"
+ },
+ "59": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "60": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "61": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "62": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "63": {
+ "name": "comment.block.cpp"
+ },
+ "64": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "65": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_inner_generated"
+ }
+ ]
+ },
+ "66": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
+ },
+ "68": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "70": {
+ "name": "entity.name.function.definition.cpp"
+ },
+ "71": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "72": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "73": {
+ "name": "comment.block.cpp"
+ },
+ "74": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.function.definition.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "contentName": "meta.function.definition.parameters.cpp",
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.begin.bracket.round.cpp"
+ }
+ },
+ "end": "(\\))",
"endCaptures": {
- "0": {
- "name": "punctuation.definition.scope.cpp"
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.cpp"
}
},
"patterns": [
{
- "include": "#special_block"
+ "include": "#ever_present_context"
},
{
- "include": "#constructor"
+ "include": "#parameter_or_maybe_value"
},
{
- "include": "$base"
+ "include": "#comma"
+ },
+ {
+ "include": "#evaluation_context"
}
]
},
{
- "include": "$base"
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "$self"
}
]
},
{
- "begin": "\\b(class|struct)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*:\\s*(public|protected|private)\\s*([_A-Za-z][_A-Za-z0-9]*\\b)((\\s*,\\s*(public|protected|private)\\s*[_A-Za-z][_A-Za-z0-9]*\\b)*))?",
+ "name": "meta.body.function.definition.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.function.definition.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "operator_overload": {
+ "name": "meta.function.definition.special.operator-overload.cpp",
+ "begin": "((?:(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<67>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<67>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<67>?)+)>)\\s*)?(?![\\w<:.]))(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<67>?)+)>)\\s*)?::)*)(operator)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<67>?)+)>)\\s*)?::)*)(?:(?:((?:\\+\\+|\\-\\-|\\(\\)|\\[\\]|\\->|\\+\\+|\\-\\-|\\+|\\-|!|~|\\*|&|new|new\\[\\]|delete|delete\\[\\]|\\->\\*|\\*|\\/|%|\\+|\\-|<<|>>|<=>|<|<=|>|>=|==|!=|&|\\^|\\||&&|\\|\\||=|\\+=|\\-=|\\*=|\\/=|%=|<<=|>>=|&=|\\^=|\\|=|,))|((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:\\[\\])?)))|(\"\")((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\<|\\())",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.function.definition.special.operator-overload.cpp"
+ },
+ "2": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "30": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "32": {
+ "name": "comment.block.cpp"
+ },
+ "33": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "34": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "35": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "36": {
+ "name": "comment.block.cpp"
+ },
+ "37": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "38": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "39": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "40": {
+ "name": "comment.block.cpp"
+ },
+ "41": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "42": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "43": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "44": {
+ "name": "comment.block.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "46": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "47": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "48": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "49": {
+ "name": "comment.block.cpp"
+ },
+ "50": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "51": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "52": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "53": {
+ "name": "comment.block.cpp"
+ },
+ "54": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "55": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator.cpp"
+ },
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "entity.name.operator.type.reference.cpp"
+ }
+ ]
+ },
+ "71": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "72": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "73": {
+ "name": "comment.block.cpp"
+ },
+ "74": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "75": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "76": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "77": {
+ "name": "comment.block.cpp"
+ },
+ "78": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "79": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "80": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "81": {
+ "name": "comment.block.cpp"
+ },
+ "82": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "83": {
+ "name": "entity.name.operator.type.array.cpp"
+ },
+ "84": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
+ "85": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "86": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "87": {
+ "name": "comment.block.cpp"
+ },
+ "88": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "89": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
+ "90": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "91": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "92": {
+ "name": "comment.block.cpp"
+ },
+ "93": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.function.definition.special.operator-overload.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#template_call_range"
+ },
+ {
+ "contentName": "meta.function.definition.parameters.special.operator-overload.cpp",
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.function.definition.special.operator-overload.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.function.definition.special.operator-overload.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "static_assert": {
+ "begin": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.other.static_assert.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.section.arguments.begin.bracket.round.static_assert.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.static_assert.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.static_assert.message.cpp",
+ "begin": "(,)\\s*(?=(?:L|u8|u|U\\s*\\\")?)",
"beginCaptures": {
"1": {
- "name": "storage.type.cpp"
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#string_context_c"
+ }
+ ]
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "function_call": {
+ "begin": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<12>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(((?(?:(?>[^<>]*)\\g<12>?)+)>)\\s*)?(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_call_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
+ },
+ "4": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.function.call.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "13": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "curly_initializer": {
+ "name": "meta.initialization.cpp",
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(?![\\w<:.]))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "name": "storage.type.cpp storage.type.built-in.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "19": {
+ "name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "24": {
+ "name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
+ },
+ "25": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "26": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "29": {
+ "name": "punctuation.section.arguments.begin.bracket.round.initializer.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.initializer.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "constructor_inline": {
+ "name": "meta.function.definition.special.constructor.cpp",
+ "begin": "(^((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:(?:inline|constexpr|mutable|friend|explicit|virtual)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.function.definition.special.constructor.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "patterns": [
+ {
+ "match": "(\\=)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "keyword.other.default.constructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.constructor.cpp"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ },
+ {
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.initializers.cpp"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "contentName": "meta.parameter.initialization.cpp",
+ "begin": "((?(?:(?>[^<>]*)\\g<3>?)+)>)\\s*)?(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "contentName": "meta.parameter.initialization.cpp",
+ "begin": "((?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.function.definition.special.constructor.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "constructor_root": {
+ "name": "meta.function.definition.special.constructor.cpp",
+ "begin": "(\\s*+((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<14>?)+)>)\\s*)?::)*)(((?>(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))::((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\16((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\()))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.function.definition.special.constructor.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp"
+ },
+ {
+ "match": "(?|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.function.definition.special.constructor.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "patterns": [
+ {
+ "match": "(\\=)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "keyword.other.default.constructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.constructor.cpp"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ },
+ {
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.initializers.cpp"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "contentName": "meta.parameter.initialization.cpp",
+ "begin": "((?(?:(?>[^<>]*)\\g<3>?)+)>)\\s*)?(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "contentName": "meta.parameter.initialization.cpp",
+ "begin": "((?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.function.definition.special.constructor.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "destructor_inline": {
+ "name": "meta.function.definition.special.member.destructor.cpp",
+ "begin": "(^((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:(?:inline|constexpr|mutable|friend|explicit|virtual)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*)(~(?|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.function.definition.special.member.destructor.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "patterns": [
+ {
+ "match": "(\\=)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "keyword.other.default.constructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.constructor.cpp"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "contentName": "meta.function.definition.parameters.special.member.destructor.cpp",
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
+ }
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.function.definition.special.member.destructor.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.function.definition.special.member.destructor.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "destructor_root": {
+ "name": "meta.function.definition.special.member.destructor.cpp",
+ "begin": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<14>?)+)>)\\s*)?::)*)(((?>(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))::((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))~\\16((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\()))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.function.definition.special.member.destructor.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp"
+ },
+ {
+ "match": "(?|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.function.definition.special.member.destructor.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "patterns": [
+ {
+ "match": "(\\=)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "keyword.other.default.constructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.constructor.cpp"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "contentName": "meta.function.definition.parameters.special.member.destructor.cpp",
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
+ }
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.function.definition.special.member.destructor.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.function.definition.special.member.destructor.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "include": "#sizeof_operator"
+ },
+ {
+ "include": "#alignof_operator"
+ },
+ {
+ "include": "#alignas_operator"
+ },
+ {
+ "include": "#typeid_operator"
+ },
+ {
+ "include": "#noexcept_operator"
+ },
+ {
+ "match": "--",
+ "name": "keyword.operator.decrement.cpp"
+ },
+ {
+ "match": "\\+\\+",
+ "name": "keyword.operator.increment.cpp"
+ },
+ {
+ "match": "%=|\\+=|-=|\\*=|(?>=|\\|=",
+ "name": "keyword.operator.assignment.compound.bitwise.cpp"
+ },
+ {
+ "match": "<<|>>",
+ "name": "keyword.operator.bitwise.shift.cpp"
+ },
+ {
+ "match": "!=|<=|>=|==|<|>",
+ "name": "keyword.operator.comparison.cpp"
+ },
+ {
+ "match": "&&|!|\\|\\|",
+ "name": "keyword.operator.logical.cpp"
+ },
+ {
+ "match": "&|\\||\\^|~",
+ "name": "keyword.operator.cpp"
+ },
+ {
+ "include": "#assignment_operator"
+ },
+ {
+ "match": "%|\\*|\\/|-|\\+",
+ "name": "keyword.operator.cpp"
+ },
+ {
+ "include": "#ternary_operator"
+ }
+ ]
+ },
+ "wordlike_operators": {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "alignof_operator": {
+ "contentName": "meta.arguments.operator.alignof.cpp",
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.alignof.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "alignas_operator": {
+ "contentName": "meta.arguments.operator.alignas.cpp",
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.alignas.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "typeid_operator": {
+ "contentName": "meta.arguments.operator.typeid.cpp",
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.typeid.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "noexcept_operator": {
+ "contentName": "meta.arguments.operator.noexcept.cpp",
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "ternary_operator": {
+ "applyEndPatternLast": true,
+ "begin": "(\\?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.cpp"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context_c"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#predefined_macros"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#memory_operators"
+ },
+ {
+ "include": "#wordlike_operators"
+ },
+ {
+ "include": "#type_casting_operators"
+ },
+ {
+ "include": "#control_flow_keywords"
+ },
+ {
+ "include": "#exception_keywords"
+ },
+ {
+ "include": "#the_this_keyword"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#builtin_storage_type_initilizer"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ },
+ {
+ "include": "#misc_storage_modifiers"
+ },
+ {
+ "include": "#lambdas"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#parentheses"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "include": "#square_brackets"
+ },
+ {
+ "include": "#empty_square_brackets"
+ },
+ {
+ "include": "#semicolon"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ "function_pointer": {
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(?![\\w<:.]))(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()(\\*)\\s*((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)\\s*(?:(\\[)(\\w*)(\\])\\s*)*(\\))\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "30": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "33": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "34": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "37": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "38": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "39": {
+ "name": "comment.block.cpp"
+ },
+ "40": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "41": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "42": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "43": {
+ "name": "variable.other.definition.pointer.function.cpp"
+ },
+ "44": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "46": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "47": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "48": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
+ }
+ },
+ "end": "(\\))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=[{=,);]|\\n)(?!\\()",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ },
+ "function_pointer_parameter": {
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(?![\\w<:.]))(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()(\\*)\\s*((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)\\s*(?:(\\[)(\\w*)(\\])\\s*)*(\\))\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "30": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "33": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "34": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "37": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "38": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "39": {
+ "name": "comment.block.cpp"
+ },
+ "40": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "41": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "42": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "43": {
+ "name": "variable.parameter.pointer.function.cpp"
+ },
+ "44": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "46": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "47": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "48": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
+ }
+ },
+ "end": "(\\))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=[{=,);]|\\n)(?!\\()",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ },
+ "typedef_function_pointer": {
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(?![\\w<:.]))(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()(\\*)\\s*((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)\\s*(?:(\\[)(\\w*)(\\])\\s*)*(\\))\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?|\\[|\\]|=))",
- "name": "meta.class-struct-block.cpp",
- "patterns": [
- {
- "include": "#angle_brackets"
},
- {
- "begin": "\\{",
- "beginCaptures": {
- "0": {
- "name": "punctuation.section.block.begin.bracket.curly.cpp"
- }
- },
- "end": "(\\})(\\s*\\n)?",
- "endCaptures": {
- "1": {
- "name": "punctuation.section.block.end.bracket.curly.cpp"
- },
- "2": {
- "name": "invalid.illegal.you-forgot-semicolon.cpp"
- }
- },
+ "7": {
"patterns": [
{
- "include": "#special_block"
- },
- {
- "include": "#constructor"
- },
- {
- "include": "$base"
+ "include": "#inline_comment"
}
]
},
- {
- "include": "$base"
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_inner_generated"
+ }
+ ]
+ },
+ "13": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ "15": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "17": {
+ "name": "entity.name.scope-resolution.cpp"
+ },
+ "18": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "20": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ "21": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "25": {
+ "name": "entity.name.type.cpp"
+ },
+ "26": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "28": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "30": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "33": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "34": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "37": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "38": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "39": {
+ "name": "comment.block.cpp"
+ },
+ "40": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "41": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "42": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "43": {
+ "name": "entity.name.type.alias.cpp entity.name.type.pointer.function.cpp"
+ },
+ "44": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "46": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "47": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "48": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
}
- ]
- },
- {
- "begin": "\\b(extern)(?=\\s*\")",
- "beginCaptures": {
+ },
+ "end": "(\\))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=[{=,);]|\\n)(?!\\()",
+ "endCaptures": {
"1": {
- "name": "storage.modifier.cpp"
- }
- },
- "end": "(?<=\\})|(?=\\w)|(?=\\s*#\\s*endif\\b)",
- "name": "meta.extern-block.cpp",
- "patterns": [
- {
- "begin": "\\{",
- "beginCaptures": {
- "0": {
- "name": "punctuation.section.block.begin.bracket.curly.c"
- }
- },
- "end": "\\}|(?=\\s*#\\s*endif\\b)",
- "endCaptures": {
- "0": {
- "name": "punctuation.section.block.end.bracket.curly.c"
- }
- },
+ "name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
+ },
+ "2": {
"patterns": [
{
- "include": "#special_block"
- },
- {
- "include": "$base"
+ "include": "#inline_comment"
}
]
},
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "patterns": [
{
- "include": "$base"
+ "include": "#function_parameter_context"
}
]
}
]
},
- "strings": {
+ "parameter_or_maybe_value": {
+ "name": "meta.parameter.cpp",
+ "begin": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\w)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?=\\))|(,))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
"patterns": [
{
- "begin": "(u|u8|U|L)?\"",
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#function_pointer_parameter"
+ },
+ {
+ "include": "#memory_operators"
+ },
+ {
+ "include": "#builtin_storage_type_initilizer"
+ },
+ {
+ "include": "#curly_initializer"
+ },
+ {
+ "include": "#decltype"
+ },
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "match": "((?:((?:const|static|volatile|register|restrict|extern))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))+)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=,|\\)|=)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#storage_types"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.modifier.specifier.parameter.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "19": {
+ "name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "24": {
+ "name": "storage.type.cpp storage.type.built-in.cpp"
+ },
+ "25": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "26": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "29": {
+ "name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
+ },
+ "30": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "32": {
+ "name": "comment.block.cpp"
+ },
+ "33": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "34": {
+ "name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
+ },
+ "35": {
+ "name": "entity.name.type.parameter.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "37": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "38": {
+ "name": "comment.block.cpp"
+ },
+ "39": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "#scope_resolution_parameter_inner_generated"
+ },
+ {
+ "match": "(?:class|struct|union|enum)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "begin": "(?<==)",
+ "end": "(?:(?=\\))|(,))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\)|,|\\[|=|\\n)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.parameter.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "name": "meta.bracket.square.array.cpp",
+ "begin": "(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.begin.bracket.square.array.type.cpp"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.end.bracket.square.array.type.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "parameter": {
+ "name": "meta.parameter.cpp",
+ "begin": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\w)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?=\\))|(,))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#function_pointer_parameter"
+ },
+ {
+ "include": "#decltype"
+ },
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "match": "((?:((?:const|static|volatile|register|restrict|extern))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))+)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=,|\\)|=)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#storage_types"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.modifier.specifier.parameter.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "19": {
+ "name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "24": {
+ "name": "storage.type.cpp storage.type.built-in.cpp"
+ },
+ "25": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "26": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "29": {
+ "name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
+ },
+ "30": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "32": {
+ "name": "comment.block.cpp"
+ },
+ "33": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "34": {
+ "name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
+ },
+ "35": {
+ "name": "entity.name.type.parameter.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "37": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "38": {
+ "name": "comment.block.cpp"
+ },
+ "39": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#scope_resolution_parameter_inner_generated"
+ },
+ {
+ "match": "(?:class|struct|union|enum)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "begin": "(?<==)",
+ "end": "(?:(?=\\))|(,))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "include": "#assignment_operator"
+ },
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\)|,|\\[|=|\\n)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.parameter.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "name": "meta.bracket.square.array.cpp",
+ "begin": "(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.begin.bracket.square.array.type.cpp"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.end.bracket.square.array.type.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "member_access": {
+ "match": "(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\s*(?:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*(\\b(?!auto[^(?-mix:\\w)]|void[^(?-mix:\\w)]|char[^(?-mix:\\w)]|short[^(?-mix:\\w)]|int[^(?-mix:\\w)]|signed[^(?-mix:\\w)]|unsigned[^(?-mix:\\w)]|long[^(?-mix:\\w)]|float[^(?-mix:\\w)]|double[^(?-mix:\\w)]|bool[^(?-mix:\\w)]|wchar_t[^(?-mix:\\w)]|u_char[^(?-mix:\\w)]|u_short[^(?-mix:\\w)]|u_int[^(?-mix:\\w)]|u_long[^(?-mix:\\w)]|ushort[^(?-mix:\\w)]|uint[^(?-mix:\\w)]|u_quad_t[^(?-mix:\\w)]|quad_t[^(?-mix:\\w)]|qaddr_t[^(?-mix:\\w)]|caddr_t[^(?-mix:\\w)]|daddr_t[^(?-mix:\\w)]|div_t[^(?-mix:\\w)]|dev_t[^(?-mix:\\w)]|fixpt_t[^(?-mix:\\w)]|blkcnt_t[^(?-mix:\\w)]|blksize_t[^(?-mix:\\w)]|gid_t[^(?-mix:\\w)]|in_addr_t[^(?-mix:\\w)]|in_port_t[^(?-mix:\\w)]|ino_t[^(?-mix:\\w)]|key_t[^(?-mix:\\w)]|mode_t[^(?-mix:\\w)]|nlink_t[^(?-mix:\\w)]|id_t[^(?-mix:\\w)]|pid_t[^(?-mix:\\w)]|off_t[^(?-mix:\\w)]|segsz_t[^(?-mix:\\w)]|swblk_t[^(?-mix:\\w)]|uid_t[^(?-mix:\\w)]|id_t[^(?-mix:\\w)]|clock_t[^(?-mix:\\w)]|size_t[^(?-mix:\\w)]|ssize_t[^(?-mix:\\w)]|time_t[^(?-mix:\\w)]|useconds_t[^(?-mix:\\w)]|suseconds_t[^(?-mix:\\w)]|int8_t[^(?-mix:\\w)]|int16_t[^(?-mix:\\w)]|int32_t[^(?-mix:\\w)]|int64_t[^(?-mix:\\w)]|uint8_t[^(?-mix:\\w)]|uint16_t[^(?-mix:\\w)]|uint32_t[^(?-mix:\\w)]|uint64_t[^(?-mix:\\w)]|int_least8_t[^(?-mix:\\w)]|int_least16_t[^(?-mix:\\w)]|int_least32_t[^(?-mix:\\w)]|int_least64_t[^(?-mix:\\w)]|uint_least8_t[^(?-mix:\\w)]|uint_least16_t[^(?-mix:\\w)]|uint_least32_t[^(?-mix:\\w)]|uint_least64_t[^(?-mix:\\w)]|int_fast8_t[^(?-mix:\\w)]|int_fast16_t[^(?-mix:\\w)]|int_fast32_t[^(?-mix:\\w)]|int_fast64_t[^(?-mix:\\w)]|uint_fast8_t[^(?-mix:\\w)]|uint_fast16_t[^(?-mix:\\w)]|uint_fast32_t[^(?-mix:\\w)]|uint_fast64_t[^(?-mix:\\w)]|intptr_t[^(?-mix:\\w)]|uintptr_t[^(?-mix:\\w)]|intmax_t[^(?-mix:\\w)]|intmax_t[^(?-mix:\\w)]|uintmax_t[^(?-mix:\\w)]|uintmax_t[^(?-mix:\\w)])(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b(?!\\())",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.access.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?<=(?:\\.\\*|\\.|->|->\\*))\\s*(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.property.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ }
+ }
+ },
+ {
+ "match": "(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.access.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ }
+ }
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ }
+ ]
+ },
+ "10": {
+ "name": "variable.other.property.cpp"
+ }
+ }
+ },
+ "method_access": {
+ "begin": "(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\s*(?:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*(~?(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.access.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?<=(?:\\.\\*|\\.|->|->\\*))\\s*(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.property.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ }
+ }
+ },
+ {
+ "match": "(?:((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.access.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ }
+ }
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ }
+ ]
+ },
+ "10": {
+ "name": "entity.name.function.member.cpp"
+ },
+ "11": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "using_namespace": {
+ "name": "meta.using-namespace.cpp",
+ "begin": "(?(?:(?>[^<>]*)\\g<7>?)+)>)\\s*)?::)*\\s*+)?((?(?:(?>[^<>]*)\\g<9>?)+)>)\\s*)?::)*\\s*+)\\s*((?|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.namespace.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.namespace.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "match": "((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<5>?)+)>)\\s*)?::)*\\s*+)\\s*((?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.namespace.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.namespace.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_argument": {
+ "match": "##?(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
+ "name": "variable.other.macro.argument.cpp"
+ },
+ "lambdas": {
+ "begin": "((?:(?<=[^\\s]|^)(?])|(?<=\\Wreturn|^return))\\s*(\\[(?!\\[))((?:[^\\]\\[]*\\[.*?\\](?!\\s*\\[)[^\\]\\[]*?)*[^\\]\\[]*?)(\\](?!\\[)))",
+ "beginCaptures": {
+ "2": {
+ "name": "punctuation.definition.capture.begin.lambda.cpp"
+ },
+ "3": {
+ "name": "meta.lambda.capture.cpp",
+ "patterns": [
+ {
+ "include": "#the_this_keyword"
+ },
+ {
+ "match": "((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?=\\]|\\z|$)|(,))|(\\=))",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.capture.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ },
+ "7": {
+ "name": "keyword.operator.assignment.cpp"
+ }
+ }
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.capture.end.lambda.cpp"
+ }
+ },
+ "end": "(?<=})",
+ "patterns": [
+ {
+ "name": "meta.function.definition.parameters.lambda.cpp",
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.lambda.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.lambda.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ },
+ {
+ "match": "(?)((?:.+?(?=\\{|$))?)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.lambda.return-type.cpp"
+ },
+ "2": {
+ "name": "storage.type.return-type.lambda.cpp"
+ }
+ }
+ },
+ {
+ "name": "meta.function.definition.body.lambda.cpp",
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.lambda.cpp"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.lambda.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "enumerator_list": {
+ "match": "((?(?:(?>[^<>]*)\\g<15>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<15>?)+)>)\\s*)?(::))?\\s*((?|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.enum.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.enum.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.enum.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.enum.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#enumerator_list"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#semicolon"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.enum.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "inheritance_context": {
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.comma.inheritance.cpp"
+ },
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(?![\\w<:.]))",
+ "captures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.class.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.class.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.class.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.class.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.class.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.class.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "struct_block": {
+ "name": "meta.block.struct.cpp",
+ "begin": "((((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.struct.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.struct.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.struct.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.struct.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.struct.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "union_block": {
+ "name": "meta.block.union.cpp",
+ "begin": "((((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.union.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.union.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.union.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.union.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.union.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.union.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "extern_block": {
+ "name": "meta.block.extern.cpp",
+ "begin": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(extern)(?=\\s*\\\"))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.extern.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "storage.type.extern.cpp"
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.extern.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.extern.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.extern.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.extern.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.extern.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "typedef_class": {
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.class.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.class.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.class.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.class.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.class.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.class.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "typedef_struct": {
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.struct.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.struct.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.struct.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.struct.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.struct.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "typedef_union": {
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.union.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.union.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.union.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.union.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.union.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.union.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "struct_declare": {
+ "match": "(struct)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\b(?!final\\W|final\\$|override\\W|override\\$)((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\S)(?!:)",
+ "captures": {
+ "1": {
+ "name": "storage.type.struct.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.type.struct.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "20": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "21": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ "union_declare": {
+ "match": "(union)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\b(?!final\\W|final\\$|override\\W|override\\$)((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\S)(?!:)",
+ "captures": {
+ "1": {
+ "name": "storage.type.union.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.type.union.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "20": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "21": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ "enum_declare": {
+ "match": "(enum)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\b(?!final\\W|final\\$|override\\W|override\\$)((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\S)(?!:)",
+ "captures": {
+ "1": {
+ "name": "storage.type.enum.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.type.enum.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "20": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "21": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ "class_declare": {
+ "match": "(class)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\b(?!final\\W|final\\$|override\\W|override\\$)((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\S)(?!:)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.type.class.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "20": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "21": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ "standard_declares": {
+ "patterns": [
+ {
+ "include": "#struct_declare"
+ },
+ {
+ "include": "#union_declare"
+ },
+ {
+ "include": "#enum_declare"
+ },
+ {
+ "include": "#class_declare"
+ }
+ ]
+ },
+ "parameter_struct": {
+ "match": "(struct)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:\\[((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\]((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.struct.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.type.struct.parameter.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "24": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "25": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "26": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "30": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "33": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "34": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ "parameter_enum": {
+ "match": "(enum)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:\\[((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\]((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.enum.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.type.enum.parameter.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "24": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "25": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "26": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "30": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "33": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "34": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ "parameter_union": {
+ "match": "(union)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:\\[((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\]((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.union.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.type.union.parameter.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "24": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "25": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "26": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "30": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "33": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "34": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ "parameter_class": {
+ "match": "(class)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:\\[((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\]((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.type.class.parameter.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "24": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "25": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "26": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "30": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "33": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "34": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ }
+ },
+ "over_qualified_types": {
+ "patterns": [
+ {
+ "include": "#parameter_struct"
+ },
+ {
+ "include": "#parameter_enum"
+ },
+ {
+ "include": "#parameter_union"
+ },
+ {
+ "include": "#parameter_class"
+ }
+ ]
+ },
+ "hacky_fix_for_stray_directive": {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))#define.*(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((#)\\s*define\\b)\\s+((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:(\\()([^()\\\\]+)(\\)))?",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.control.directive.define.cpp"
+ },
+ "6": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "7": {
+ "name": "entity.name.function.preprocessor.cpp"
+ },
+ "8": {
+ "name": "punctuation.definition.parameters.begin.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?<=[(,])\\s*((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.preprocessor.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.cpp"
+ },
+ {
+ "match": "\\.\\.\\.",
+ "name": "punctuation.vararg-ellipses.variable.parameter.preprocessor.cpp"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.definition.parameters.end.cpp"
+ }
+ },
+ "end": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((#)\\s*((?:(?:include|include_next)|import))\\b)\\s*(?:(?:(?:((<)[^>]*(>?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:\\n|$)|(?=\\/\\/)))|((\\\")[^\\\"]*(\\\"?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:\\n|$)|(?=\\/\\/))))|((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:\\n|$)|(?=\\/\\/))))|((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:\\n|$)|(?=\\/\\/)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.control.directive.$7.cpp"
+ },
+ "6": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "8": {
+ "name": "string.quoted.other.lt-gt.include.cpp"
+ },
+ "9": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "10": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "15": {
+ "name": "string.quoted.double.include.cpp"
+ },
+ "16": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "17": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "20": {
+ "name": "comment.block.cpp"
+ },
+ "21": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "22": {
+ "name": "entity.name.other.preprocessor.macro.include.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "24": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "25": {
+ "name": "comment.block.cpp"
+ },
+ "26": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "27": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "28": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "29": {
+ "name": "comment.block.cpp"
+ },
+ "30": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "meta.preprocessor.include.cpp"
+ },
+ "meta_preprocessor_line": {
+ "name": "meta.preprocessor.cpp",
+ "begin": "^\\s*((#)\\s*line)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.line.cpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.cpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "end": "(?<=\\))(?!\\w)|(?=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.cpp"
+ }
+ },
+ "end": "(\\))|(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<14>?)+)>)\\s*)?::)*)(((?>(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))::((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\16((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\()))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.function.definition.special.constructor.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp"
+ },
+ {
+ "match": "(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "keyword.other.default.constructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.constructor.cpp"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ },
+ {
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.initializers.cpp"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "contentName": "meta.parameter.initialization.cpp",
+ "begin": "((?(?:(?>[^<>]*)\\g<3>?)+)>)\\s*)?(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "contentName": "meta.parameter.initialization.cpp",
+ "begin": "((?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.function.definition.special.constructor.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_destructor_root": {
+ "name": "meta.function.definition.special.member.destructor.cpp",
+ "begin": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<14>?)+)>)\\s*)?::)*)(((?>(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))::((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))~\\16((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\()))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.function.definition.special.member.destructor.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp"
+ },
+ {
+ "match": "(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "keyword.other.default.constructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.constructor.cpp"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "contentName": "meta.function.definition.parameters.special.member.destructor.cpp",
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
+ }
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.function.definition.special.member.destructor.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.function.definition.special.member.destructor.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_function_definition": {
+ "name": "meta.function.definition.cpp",
+ "begin": "((?:(?:^|\\G|(?<=;|\\}))|(?<=>))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<69>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<69>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<69>?)+)>)\\s*)?(?![\\w<:.]))(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<69>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\())",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.function.definition.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "storage.type.template.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "11": {
+ "name": "storage.modifier.$11.cpp"
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "16": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "44": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "45": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "46": {
+ "name": "comment.block.cpp"
+ },
+ "47": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "48": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "49": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "50": {
+ "name": "comment.block.cpp"
+ },
+ "51": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "52": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "53": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "54": {
+ "name": "comment.block.cpp"
+ },
+ "55": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "56": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "57": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "58": {
+ "name": "comment.block.cpp"
+ },
+ "59": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "60": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "61": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "62": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "63": {
+ "name": "comment.block.cpp"
+ },
+ "64": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "65": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_inner_generated"
+ }
+ ]
+ },
+ "66": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
+ },
+ "68": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "70": {
+ "name": "entity.name.function.definition.cpp"
+ },
+ "71": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "72": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "73": {
+ "name": "comment.block.cpp"
+ },
+ "74": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.function.definition.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_operator_overload": {
+ "name": "meta.function.definition.special.operator-overload.cpp",
+ "begin": "((?:(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<67>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<67>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<67>?)+)>)\\s*)?(?![\\w<:.]))(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<67>?)+)>)\\s*)?::)*)(operator)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<67>?)+)>)\\s*)?::)*)(?:(?:((?:\\+\\+|\\-\\-|\\(\\)|\\[\\]|\\->|\\+\\+|\\-\\-|\\+|\\-|!|~|\\*|&|new|new\\[\\]|delete|delete\\[\\]|\\->\\*|\\*|\\/|%|\\+|\\-|<<|>>|<=>|<|<=|>|>=|==|!=|&|\\^|\\||&&|\\|\\||=|\\+=|\\-=|\\*=|\\/=|%=|<<=|>>=|&=|\\^=|\\|=|,))|((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?:\\[\\])?)))|(\"\")((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=\\<|\\())",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.function.definition.special.operator-overload.cpp"
+ },
+ "2": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "30": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "32": {
+ "name": "comment.block.cpp"
+ },
+ "33": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "34": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "35": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "36": {
+ "name": "comment.block.cpp"
+ },
+ "37": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "38": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "39": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "40": {
+ "name": "comment.block.cpp"
+ },
+ "41": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "42": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "43": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "44": {
+ "name": "comment.block.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "46": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "47": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "48": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "49": {
+ "name": "comment.block.cpp"
+ },
+ "50": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "51": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "52": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "53": {
+ "name": "comment.block.cpp"
+ },
+ "54": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "55": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator.cpp"
+ },
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "entity.name.operator.type.reference.cpp"
+ }
+ ]
+ },
+ "71": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "72": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "73": {
+ "name": "comment.block.cpp"
+ },
+ "74": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "75": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "76": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "77": {
+ "name": "comment.block.cpp"
+ },
+ "78": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "79": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "80": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "81": {
+ "name": "comment.block.cpp"
+ },
+ "82": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "83": {
+ "name": "entity.name.operator.type.array.cpp"
+ },
+ "84": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
+ "85": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "86": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "87": {
+ "name": "comment.block.cpp"
+ },
+ "88": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "89": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
+ "90": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "91": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "92": {
+ "name": "comment.block.cpp"
+ },
+ "93": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.function.definition.special.operator-overload.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_using_namespace": {
+ "name": "meta.using-namespace.cpp",
+ "begin": "(?(?:(?>[^<>]*)\\g<7>?)+)>)\\s*)?::)*\\s*+)?((?|\\?\\?>)|(?=[;>\\[\\]=]))|(?(?:(?>[^<>]*)\\g<5>?)+)>)\\s*)?::)*\\s*+)\\s*((?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.namespace.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.namespace.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_extern_block": {
+ "name": "meta.block.extern.cpp",
+ "begin": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(extern)(?=\\s*\\\"))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.extern.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "storage.type.extern.cpp"
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.extern.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.extern.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "macro_safe_typedef_class": {
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.class.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.class.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.class.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.class.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.class.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.class.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_typedef_struct": {
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.struct.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.struct.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.struct.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.struct.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.struct.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_typedef_union": {
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.union.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.head.union.cpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.union.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.union.cpp",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.union.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.union.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_typedef_function_pointer": {
+ "begin": "((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(?![\\w<:.]))(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()(\\*)\\s*((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)\\s*(?:(\\[)(\\w*)(\\])\\s*)*(\\))\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "30": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "33": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "34": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "37": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "38": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "39": {
+ "name": "comment.block.cpp"
+ },
+ "40": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "41": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "42": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "43": {
+ "name": "entity.name.type.alias.cpp entity.name.type.pointer.function.cpp"
+ },
+ "44": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "46": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "47": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "48": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
+ }
+ },
+ "end": "(\\))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=[{=,);]|\\n)(?!\\()",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_class_block": {
+ "name": "meta.block.class.cpp",
+ "begin": "((((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.class.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.class.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.class.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_struct_block": {
+ "name": "meta.block.struct.cpp",
+ "begin": "((((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.struct.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.struct.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.struct.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_union_block": {
+ "name": "meta.block.union.cpp",
+ "begin": "((((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(DLLEXPORT)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?\\s*((?:(?\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:(?:(?:::)?(?:(?:(?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?::)*\\s*+)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?:::))?(?:(?:(?:(?>\\s+)|(?:\\/\\*)(?:(?>(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)(?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?:(?:(?(?:(?>[^<>]*)?)+)>)\\s*)?(?![\\w<:.])))+)*))?))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.union.cpp"
+ },
+ "3": {
+ "name": "storage.type.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.type.$3.cpp"
+ },
+ "16": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inheritance_context"
+ }
+ ]
+ }
+ },
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.union.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.union.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_enum_block": {
+ "name": "meta.block.enum.cpp",
+ "begin": "(((?(?:(?>[^<>]*)\\g<15>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<15>?)+)>)\\s*)?(::))?\\s*((?|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.enum.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#enumerator_list"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#semicolon"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.enum.cpp",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "macro_safe_template_definition": {
+ "name": "meta.template.definition.cpp",
+ "begin": "(?)|(?)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "include": "#template_definition_context"
+ }
+ ]
+ },
+ "macro_safe_block": {
+ "name": "meta.block.cpp",
+ "begin": "({)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.cpp"
+ }
+ },
+ "end": "(}|(?=\\s*#\\s*(?:elif|else|endif)\\b))|(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.other.static_assert.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.section.arguments.begin.bracket.round.static_assert.cpp"
+ }
+ },
+ "end": "(\\))|(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:(?:(?:short|signed|unsigned|long)|(?:class|struct|union|enum))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(((::)?(?:((?-mix:(?!\\b(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\s*+(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(::))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?!(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|NULL|true|false|nullptr|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|final|override|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|if|elif|else|endif|ifdef|ifndef|define|undef|include|line|error|warning|pragma|_Pragma|defined|__has_include|__has_cpp_attribute|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized|audit|axiom|transaction_safe|transaction_safe_dynamic)\\b)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(((?(?:(?>[^<>]*)\\g<27>?)+)>)\\s*)?(?![\\w<:.]))(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))?(?:(?:\\&|\\*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))*(?:\\&|\\*))?((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(\\()(\\*)\\s*((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)\\s*(?:(\\[)(\\w*)(\\])\\s*)*(\\))\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "30": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "33": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "34": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "37": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "38": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "39": {
+ "name": "comment.block.cpp"
+ },
+ "40": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "41": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "42": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "43": {
+ "name": "variable.other.definition.pointer.function.cpp"
+ },
+ "44": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "46": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "47": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "48": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
+ }
+ },
+ "end": "(\\))((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?=[{=,);]|\\n)(?!\\()|(?
using namespace std;
+#define EXTERN_C extern "C"
+
class Rectangle {
int width, height;
public:
@@ -18,5 +20,8 @@ int main () {
Rectangle rect;
rect.set_values (3,4);
cout << "area: " << rect.area();
+ Task::links_to;
+ int t = 2;
+ if (t > 0) puts("\n*************************************************");
return 0;
}
\ No newline at end of file
diff --git a/extensions/cpp/test/colorize-results/test-23630_cpp.json b/extensions/cpp/test/colorize-results/test-23630_cpp.json
index f22786a105f..a58961ae945 100644
--- a/extensions/cpp/test/colorize-results/test-23630_cpp.json
+++ b/extensions/cpp/test/colorize-results/test-23630_cpp.json
@@ -1,7 +1,7 @@
[
{
"c": "#",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c punctuation.definition.directive.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp punctuation.definition.directive.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -12,7 +12,7 @@
},
{
"c": "ifndef",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -23,7 +23,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.preprocessor.c",
+ "t": "source.cpp meta.preprocessor.cpp",
"r": {
"dark_plus": "meta.preprocessor: #569CD6",
"light_plus": "meta.preprocessor: #0000FF",
@@ -34,7 +34,7 @@
},
{
"c": "_UCRT",
- "t": "source.cpp meta.preprocessor.c entity.name.function.preprocessor.c",
+ "t": "source.cpp meta.preprocessor.cpp entity.name.function.preprocessor.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -45,7 +45,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.preprocessor.macro.c",
+ "t": "source.cpp meta.preprocessor.macro.cpp",
"r": {
"dark_plus": "meta.preprocessor: #569CD6",
"light_plus": "meta.preprocessor: #0000FF",
@@ -56,7 +56,7 @@
},
{
"c": "#",
- "t": "source.cpp meta.preprocessor.macro.c keyword.control.directive.define.c punctuation.definition.directive.c",
+ "t": "source.cpp meta.preprocessor.macro.cpp keyword.control.directive.define.cpp punctuation.definition.directive.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -67,7 +67,7 @@
},
{
"c": "define",
- "t": "source.cpp meta.preprocessor.macro.c keyword.control.directive.define.c",
+ "t": "source.cpp meta.preprocessor.macro.cpp keyword.control.directive.define.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -78,7 +78,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.preprocessor.macro.c",
+ "t": "source.cpp meta.preprocessor.macro.cpp",
"r": {
"dark_plus": "meta.preprocessor: #569CD6",
"light_plus": "meta.preprocessor: #0000FF",
@@ -89,7 +89,7 @@
},
{
"c": "_UCRT",
- "t": "source.cpp meta.preprocessor.macro.c entity.name.function.preprocessor.c",
+ "t": "source.cpp meta.preprocessor.macro.cpp entity.name.function.preprocessor.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -100,7 +100,7 @@
},
{
"c": "#",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c punctuation.definition.directive.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp punctuation.definition.directive.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -111,7 +111,7 @@
},
{
"c": "endif",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
diff --git a/extensions/cpp/test/colorize-results/test-23850_cpp.json b/extensions/cpp/test/colorize-results/test-23850_cpp.json
index bbb5237498f..924bbc78243 100644
--- a/extensions/cpp/test/colorize-results/test-23850_cpp.json
+++ b/extensions/cpp/test/colorize-results/test-23850_cpp.json
@@ -1,7 +1,7 @@
[
{
"c": "#",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c punctuation.definition.directive.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp punctuation.definition.directive.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -12,7 +12,7 @@
},
{
"c": "ifndef",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -23,7 +23,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.preprocessor.c",
+ "t": "source.cpp meta.preprocessor.cpp",
"r": {
"dark_plus": "meta.preprocessor: #569CD6",
"light_plus": "meta.preprocessor: #0000FF",
@@ -34,7 +34,7 @@
},
{
"c": "_UCRT",
- "t": "source.cpp meta.preprocessor.c entity.name.function.preprocessor.c",
+ "t": "source.cpp meta.preprocessor.cpp entity.name.function.preprocessor.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -45,7 +45,7 @@
},
{
"c": "#",
- "t": "source.cpp meta.preprocessor.macro.c keyword.control.directive.define.c punctuation.definition.directive.c",
+ "t": "source.cpp meta.preprocessor.macro.cpp keyword.control.directive.define.cpp punctuation.definition.directive.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -56,7 +56,7 @@
},
{
"c": "define",
- "t": "source.cpp meta.preprocessor.macro.c keyword.control.directive.define.c",
+ "t": "source.cpp meta.preprocessor.macro.cpp keyword.control.directive.define.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -67,7 +67,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.preprocessor.macro.c",
+ "t": "source.cpp meta.preprocessor.macro.cpp",
"r": {
"dark_plus": "meta.preprocessor: #569CD6",
"light_plus": "meta.preprocessor: #0000FF",
@@ -78,7 +78,7 @@
},
{
"c": "_UCRT",
- "t": "source.cpp meta.preprocessor.macro.c entity.name.function.preprocessor.c",
+ "t": "source.cpp meta.preprocessor.macro.cpp entity.name.function.preprocessor.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -89,7 +89,7 @@
},
{
"c": "#",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c punctuation.definition.directive.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp punctuation.definition.directive.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -100,7 +100,7 @@
},
{
"c": "endif",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
diff --git a/extensions/cpp/test/colorize-results/test_c.json b/extensions/cpp/test/colorize-results/test_c.json
index 0725010d8c2..74be734c5ca 100644
--- a/extensions/cpp/test/colorize-results/test_c.json
+++ b/extensions/cpp/test/colorize-results/test_c.json
@@ -243,7 +243,7 @@
},
{
"c": "int",
- "t": "source.c storage.type.c",
+ "t": "source.c storage.type.built-in.primitive.c",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -265,7 +265,7 @@
},
{
"c": "main",
- "t": "source.c meta.function.c entity.name.function.c",
+ "t": "source.c meta.function.c meta.function.definition.parameters.c entity.name.function.c",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -276,7 +276,7 @@
},
{
"c": "(",
- "t": "source.c meta.function.c punctuation.section.parameters.begin.bracket.round.c",
+ "t": "source.c meta.function.c meta.function.definition.parameters.c punctuation.section.parameters.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -287,7 +287,7 @@
},
{
"c": ")",
- "t": "source.c meta.function.c punctuation.section.parameters.end.bracket.round.c",
+ "t": "source.c meta.function.c meta.function.definition.parameters.c punctuation.section.parameters.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -320,7 +320,7 @@
},
{
"c": "float",
- "t": "source.c meta.block.c storage.type.c",
+ "t": "source.c meta.block.c storage.type.built-in.primitive.c",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -507,7 +507,7 @@
},
{
"c": " ",
- "t": "source.c meta.block.c punctuation.whitespace.support.function.leading.c",
+ "t": "source.c meta.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -518,18 +518,18 @@
},
{
"c": "printf",
- "t": "source.c meta.block.c support.function.C99.c",
+ "t": "source.c meta.block.c meta.function-call.c entity.name.function.c",
"r": {
- "dark_plus": "support.function: #DCDCAA",
- "light_plus": "support.function: #795E26",
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "support.function: #DCDCAA"
+ "hc_black": "entity.name.function: #DCDCAA"
}
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -540,7 +540,7 @@
},
{
"c": "\"",
- "t": "source.c meta.block.c string.quoted.double.c punctuation.definition.string.begin.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c punctuation.definition.string.begin.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -551,7 +551,7 @@
},
{
"c": "Enter coefficients a, b and c: ",
- "t": "source.c meta.block.c string.quoted.double.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -562,7 +562,7 @@
},
{
"c": "\"",
- "t": "source.c meta.block.c string.quoted.double.c punctuation.definition.string.end.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c punctuation.definition.string.end.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -573,7 +573,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -595,7 +595,7 @@
},
{
"c": " ",
- "t": "source.c meta.block.c punctuation.whitespace.support.function.leading.c",
+ "t": "source.c meta.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -606,18 +606,18 @@
},
{
"c": "scanf",
- "t": "source.c meta.block.c support.function.C99.c",
+ "t": "source.c meta.block.c meta.function-call.c entity.name.function.c",
"r": {
- "dark_plus": "support.function: #DCDCAA",
- "light_plus": "support.function: #795E26",
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "support.function: #DCDCAA"
+ "hc_black": "entity.name.function: #DCDCAA"
}
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -628,7 +628,7 @@
},
{
"c": "\"",
- "t": "source.c meta.block.c string.quoted.double.c punctuation.definition.string.begin.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c punctuation.definition.string.begin.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -639,7 +639,7 @@
},
{
"c": "%f%f%f",
- "t": "source.c meta.block.c string.quoted.double.c constant.other.placeholder.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c constant.other.placeholder.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -650,7 +650,7 @@
},
{
"c": "\"",
- "t": "source.c meta.block.c string.quoted.double.c punctuation.definition.string.end.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c punctuation.definition.string.end.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -661,7 +661,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -672,7 +672,7 @@
},
{
"c": "&",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.function-call.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -683,7 +683,7 @@
},
{
"c": "a",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -694,7 +694,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -705,7 +705,7 @@
},
{
"c": "&",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.function-call.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -716,7 +716,7 @@
},
{
"c": "b",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -727,7 +727,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -738,7 +738,7 @@
},
{
"c": "&",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.function-call.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -749,7 +749,7 @@
},
{
"c": "c",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -760,7 +760,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -848,7 +848,7 @@
},
{
"c": "4",
- "t": "source.c meta.block.c constant.numeric.c",
+ "t": "source.c meta.block.c constant.numeric.decimal.c",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #09885A",
@@ -947,7 +947,7 @@
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -958,7 +958,7 @@
},
{
"c": "determinant",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -969,7 +969,7 @@
},
{
"c": ">",
- "t": "source.c meta.block.c keyword.operator.comparison.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.comparison.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -980,7 +980,7 @@
},
{
"c": "0",
- "t": "source.c meta.block.c constant.numeric.c",
+ "t": "source.c meta.block.c meta.parens.block.c constant.numeric.decimal.c",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #09885A",
@@ -991,7 +991,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1057,7 +1057,7 @@
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1068,7 +1068,7 @@
},
{
"c": "-",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1079,7 +1079,7 @@
},
{
"c": "b",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1090,7 +1090,7 @@
},
{
"c": "+",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1101,18 +1101,18 @@
},
{
"c": "sqrt",
- "t": "source.c meta.block.c support.function.C99.c",
+ "t": "source.c meta.block.c meta.parens.block.c meta.function-call.c entity.name.function.c",
"r": {
- "dark_plus": "support.function: #DCDCAA",
- "light_plus": "support.function: #795E26",
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "support.function: #DCDCAA"
+ "hc_black": "entity.name.function: #DCDCAA"
}
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1123,7 +1123,7 @@
},
{
"c": "determinant",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1133,8 +1133,19 @@
}
},
{
- "c": "))",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "c": ")",
+ "t": "source.c meta.block.c meta.parens.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ")",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1156,7 +1167,7 @@
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1167,7 +1178,7 @@
},
{
"c": "2",
- "t": "source.c meta.block.c constant.numeric.c",
+ "t": "source.c meta.block.c meta.parens.block.c constant.numeric.decimal.c",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #09885A",
@@ -1178,7 +1189,7 @@
},
{
"c": "*",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1189,7 +1200,7 @@
},
{
"c": "a",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1200,7 +1211,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1255,7 +1266,7 @@
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1266,7 +1277,7 @@
},
{
"c": "-",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1277,7 +1288,7 @@
},
{
"c": "b",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1288,7 +1299,7 @@
},
{
"c": "-",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1299,18 +1310,18 @@
},
{
"c": "sqrt",
- "t": "source.c meta.block.c support.function.C99.c",
+ "t": "source.c meta.block.c meta.parens.block.c meta.function-call.c entity.name.function.c",
"r": {
- "dark_plus": "support.function: #DCDCAA",
- "light_plus": "support.function: #795E26",
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "support.function: #DCDCAA"
+ "hc_black": "entity.name.function: #DCDCAA"
}
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1321,7 +1332,7 @@
},
{
"c": "determinant",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1331,8 +1342,19 @@
}
},
{
- "c": "))",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "c": ")",
+ "t": "source.c meta.block.c meta.parens.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ")",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1354,7 +1376,7 @@
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1365,7 +1387,7 @@
},
{
"c": "2",
- "t": "source.c meta.block.c constant.numeric.c",
+ "t": "source.c meta.block.c meta.parens.block.c constant.numeric.decimal.c",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #09885A",
@@ -1376,7 +1398,7 @@
},
{
"c": "*",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1387,7 +1409,7 @@
},
{
"c": "a",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1398,7 +1420,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1420,7 +1442,7 @@
},
{
"c": " ",
- "t": "source.c meta.block.c punctuation.whitespace.support.function.leading.c",
+ "t": "source.c meta.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1431,18 +1453,18 @@
},
{
"c": "printf",
- "t": "source.c meta.block.c support.function.C99.c",
+ "t": "source.c meta.block.c meta.function-call.c entity.name.function.c",
"r": {
- "dark_plus": "support.function: #DCDCAA",
- "light_plus": "support.function: #795E26",
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "support.function: #DCDCAA"
+ "hc_black": "entity.name.function: #DCDCAA"
}
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1453,7 +1475,7 @@
},
{
"c": "\"",
- "t": "source.c meta.block.c string.quoted.double.c punctuation.definition.string.begin.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c punctuation.definition.string.begin.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1464,7 +1486,7 @@
},
{
"c": "Roots are: ",
- "t": "source.c meta.block.c string.quoted.double.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1475,7 +1497,7 @@
},
{
"c": "%.2f",
- "t": "source.c meta.block.c string.quoted.double.c constant.other.placeholder.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c constant.other.placeholder.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1486,7 +1508,7 @@
},
{
"c": " and ",
- "t": "source.c meta.block.c string.quoted.double.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1497,7 +1519,7 @@
},
{
"c": "%.2f",
- "t": "source.c meta.block.c string.quoted.double.c constant.other.placeholder.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c constant.other.placeholder.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1508,7 +1530,7 @@
},
{
"c": "\"",
- "t": "source.c meta.block.c string.quoted.double.c punctuation.definition.string.end.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c punctuation.definition.string.end.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1519,7 +1541,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1530,7 +1552,7 @@
},
{
"c": "r1 ",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1541,7 +1563,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1552,7 +1574,7 @@
},
{
"c": " r2",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1563,7 +1585,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1662,7 +1684,7 @@
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1673,7 +1695,7 @@
},
{
"c": "determinant",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1684,7 +1706,7 @@
},
{
"c": "==",
- "t": "source.c meta.block.c keyword.operator.comparison.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.comparison.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1695,7 +1717,7 @@
},
{
"c": "0",
- "t": "source.c meta.block.c constant.numeric.c",
+ "t": "source.c meta.block.c meta.parens.block.c constant.numeric.decimal.c",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #09885A",
@@ -1706,7 +1728,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1827,7 +1849,7 @@
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1838,7 +1860,7 @@
},
{
"c": "2",
- "t": "source.c meta.block.c constant.numeric.c",
+ "t": "source.c meta.block.c meta.parens.block.c constant.numeric.decimal.c",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #09885A",
@@ -1849,7 +1871,7 @@
},
{
"c": "*",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1860,7 +1882,7 @@
},
{
"c": "a",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1871,7 +1893,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1893,7 +1915,7 @@
},
{
"c": " ",
- "t": "source.c meta.block.c punctuation.whitespace.support.function.leading.c",
+ "t": "source.c meta.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1904,18 +1926,18 @@
},
{
"c": "printf",
- "t": "source.c meta.block.c support.function.C99.c",
+ "t": "source.c meta.block.c meta.function-call.c entity.name.function.c",
"r": {
- "dark_plus": "support.function: #DCDCAA",
- "light_plus": "support.function: #795E26",
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "support.function: #DCDCAA"
+ "hc_black": "entity.name.function: #DCDCAA"
}
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1926,7 +1948,7 @@
},
{
"c": "\"",
- "t": "source.c meta.block.c string.quoted.double.c punctuation.definition.string.begin.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c punctuation.definition.string.begin.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1937,7 +1959,7 @@
},
{
"c": "Roots are: ",
- "t": "source.c meta.block.c string.quoted.double.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1948,7 +1970,7 @@
},
{
"c": "%.2f",
- "t": "source.c meta.block.c string.quoted.double.c constant.other.placeholder.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c constant.other.placeholder.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1959,7 +1981,7 @@
},
{
"c": " and ",
- "t": "source.c meta.block.c string.quoted.double.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1970,7 +1992,7 @@
},
{
"c": "%.2f",
- "t": "source.c meta.block.c string.quoted.double.c constant.other.placeholder.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c constant.other.placeholder.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1981,7 +2003,7 @@
},
{
"c": "\"",
- "t": "source.c meta.block.c string.quoted.double.c punctuation.definition.string.end.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c punctuation.definition.string.end.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1992,7 +2014,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2003,7 +2025,7 @@
},
{
"c": " r1",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2014,7 +2036,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2025,7 +2047,7 @@
},
{
"c": " r2",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2036,7 +2058,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2190,7 +2212,7 @@
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2201,7 +2223,7 @@
},
{
"c": "2",
- "t": "source.c meta.block.c constant.numeric.c",
+ "t": "source.c meta.block.c meta.parens.block.c constant.numeric.decimal.c",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #09885A",
@@ -2212,7 +2234,7 @@
},
{
"c": "*",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -2223,7 +2245,7 @@
},
{
"c": "a",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2234,7 +2256,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2278,50 +2300,6 @@
},
{
"c": " ",
- "t": "source.c meta.block.c punctuation.whitespace.support.function.leading.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "sqrt",
- "t": "source.c meta.block.c support.function.C99.c",
- "r": {
- "dark_plus": "support.function: #DCDCAA",
- "light_plus": "support.function: #795E26",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "support.function: #DCDCAA"
- }
- },
- {
- "c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "-",
- "t": "source.c meta.block.c keyword.operator.c",
- "r": {
- "dark_plus": "keyword.operator: #D4D4D4",
- "light_plus": "keyword.operator: #000000",
- "dark_vs": "keyword.operator: #D4D4D4",
- "light_vs": "keyword.operator: #000000",
- "hc_black": "keyword.operator: #D4D4D4"
- }
- },
- {
- "c": "determinant",
"t": "source.c meta.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
@@ -2331,9 +2309,53 @@
"hc_black": "default: #FFFFFF"
}
},
+ {
+ "c": "sqrt",
+ "t": "source.c meta.block.c meta.function-call.c entity.name.function.c",
+ "r": {
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.function: #DCDCAA"
+ }
+ },
+ {
+ "c": "(",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "-",
+ "t": "source.c meta.block.c meta.function-call.c keyword.operator.c",
+ "r": {
+ "dark_plus": "keyword.operator: #D4D4D4",
+ "light_plus": "keyword.operator: #000000",
+ "dark_vs": "keyword.operator: #D4D4D4",
+ "light_vs": "keyword.operator: #000000",
+ "hc_black": "keyword.operator: #D4D4D4"
+ }
+ },
+ {
+ "c": "determinant",
+ "t": "source.c meta.block.c meta.function-call.c",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2355,7 +2377,7 @@
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2366,7 +2388,7 @@
},
{
"c": "2",
- "t": "source.c meta.block.c constant.numeric.c",
+ "t": "source.c meta.block.c meta.parens.block.c constant.numeric.decimal.c",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #09885A",
@@ -2377,7 +2399,7 @@
},
{
"c": "*",
- "t": "source.c meta.block.c keyword.operator.c",
+ "t": "source.c meta.block.c meta.parens.block.c keyword.operator.c",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -2388,7 +2410,7 @@
},
{
"c": "a",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.parens.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2399,7 +2421,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.parens.block.c punctuation.section.parens.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2421,7 +2443,7 @@
},
{
"c": " ",
- "t": "source.c meta.block.c punctuation.whitespace.support.function.leading.c",
+ "t": "source.c meta.block.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2432,18 +2454,18 @@
},
{
"c": "printf",
- "t": "source.c meta.block.c support.function.C99.c",
+ "t": "source.c meta.block.c meta.function-call.c entity.name.function.c",
"r": {
- "dark_plus": "support.function: #DCDCAA",
- "light_plus": "support.function: #795E26",
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "support.function: #DCDCAA"
+ "hc_black": "entity.name.function: #DCDCAA"
}
},
{
"c": "(",
- "t": "source.c meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2454,7 +2476,7 @@
},
{
"c": "\"",
- "t": "source.c meta.block.c string.quoted.double.c punctuation.definition.string.begin.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c punctuation.definition.string.begin.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2465,7 +2487,7 @@
},
{
"c": "Roots are: ",
- "t": "source.c meta.block.c string.quoted.double.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2476,7 +2498,7 @@
},
{
"c": "%.2f",
- "t": "source.c meta.block.c string.quoted.double.c constant.other.placeholder.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c constant.other.placeholder.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2487,7 +2509,7 @@
},
{
"c": "+",
- "t": "source.c meta.block.c string.quoted.double.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2498,7 +2520,7 @@
},
{
"c": "%.2f",
- "t": "source.c meta.block.c string.quoted.double.c constant.other.placeholder.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c constant.other.placeholder.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2509,7 +2531,7 @@
},
{
"c": "i and ",
- "t": "source.c meta.block.c string.quoted.double.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2520,7 +2542,7 @@
},
{
"c": "%.2f",
- "t": "source.c meta.block.c string.quoted.double.c constant.other.placeholder.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c constant.other.placeholder.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2531,7 +2553,7 @@
},
{
"c": "-",
- "t": "source.c meta.block.c string.quoted.double.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2542,7 +2564,7 @@
},
{
"c": "%.2f",
- "t": "source.c meta.block.c string.quoted.double.c constant.other.placeholder.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c constant.other.placeholder.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2553,7 +2575,7 @@
},
{
"c": "i",
- "t": "source.c meta.block.c string.quoted.double.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2564,7 +2586,7 @@
},
{
"c": "\"",
- "t": "source.c meta.block.c string.quoted.double.c punctuation.definition.string.end.c",
+ "t": "source.c meta.block.c meta.function-call.c string.quoted.double.c punctuation.definition.string.end.c",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -2575,7 +2597,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2586,7 +2608,7 @@
},
{
"c": " real",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2597,7 +2619,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2608,7 +2630,7 @@
},
{
"c": " imag",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2619,7 +2641,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2630,7 +2652,7 @@
},
{
"c": " real",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2641,7 +2663,7 @@
},
{
"c": ",",
- "t": "source.c meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2652,7 +2674,7 @@
},
{
"c": " imag",
- "t": "source.c meta.block.c",
+ "t": "source.c meta.block.c meta.function-call.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2663,7 +2685,7 @@
},
{
"c": ")",
- "t": "source.c meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.c meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -2740,7 +2762,7 @@
},
{
"c": "0",
- "t": "source.c meta.block.c constant.numeric.c",
+ "t": "source.c meta.block.c constant.numeric.decimal.c",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #09885A",
diff --git a/extensions/cpp/test/colorize-results/test_cc.json b/extensions/cpp/test/colorize-results/test_cc.json
index f3f72320fb5..4567285df23 100644
--- a/extensions/cpp/test/colorize-results/test_cc.json
+++ b/extensions/cpp/test/colorize-results/test_cc.json
@@ -1,7 +1,7 @@
[
{
"c": "#",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c punctuation.definition.directive.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp punctuation.definition.directive.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -12,7 +12,7 @@
},
{
"c": "if",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -23,7 +23,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.preprocessor.c",
+ "t": "source.cpp meta.preprocessor.cpp",
"r": {
"dark_plus": "meta.preprocessor: #569CD6",
"light_plus": "meta.preprocessor: #0000FF",
@@ -34,7 +34,7 @@
},
{
"c": "B4G_DEBUG_CHECK",
- "t": "source.cpp meta.preprocessor.c entity.name.function.preprocessor.c",
+ "t": "source.cpp meta.preprocessor.cpp entity.name.function.preprocessor.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -56,7 +56,7 @@
},
{
"c": "fprintf",
- "t": "source.cpp meta.function.c entity.name.function.c",
+ "t": "source.cpp entity.name.function.call.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -67,7 +67,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.function.c punctuation.section.parameters.begin.bracket.round.c",
+ "t": "source.cpp punctuation.section.arguments.begin.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -78,7 +78,7 @@
},
{
"c": "stderr",
- "t": "source.cpp meta.function.c",
+ "t": "source.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -89,7 +89,7 @@
},
{
"c": ",",
- "t": "source.cpp meta.function.c punctuation.separator.delimiter.c",
+ "t": "source.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -100,7 +100,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.function.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "t": "source.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -111,7 +111,7 @@
},
{
"c": "num_candidate_ret=",
- "t": "source.cpp meta.function.c string.quoted.double.cpp",
+ "t": "source.cpp string.quoted.double.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -122,7 +122,7 @@
},
{
"c": "%d",
- "t": "source.cpp meta.function.c string.quoted.double.cpp constant.other.placeholder.c",
+ "t": "source.cpp string.quoted.double.cpp constant.other.placeholder.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -133,7 +133,7 @@
},
{
"c": ":",
- "t": "source.cpp meta.function.c string.quoted.double.cpp",
+ "t": "source.cpp string.quoted.double.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -144,7 +144,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.function.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "t": "source.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -155,7 +155,7 @@
},
{
"c": ",",
- "t": "source.cpp meta.function.c punctuation.separator.delimiter.c",
+ "t": "source.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -166,7 +166,7 @@
},
{
"c": " num_candidate",
- "t": "source.cpp meta.function.c",
+ "t": "source.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -177,7 +177,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.function.c punctuation.section.parameters.end.bracket.round.c",
+ "t": "source.cpp punctuation.section.arguments.end.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -188,7 +188,7 @@
},
{
"c": ";",
- "t": "source.cpp punctuation.terminator.statement.c",
+ "t": "source.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -210,7 +210,7 @@
},
{
"c": "for",
- "t": "source.cpp keyword.control.c",
+ "t": "source.cpp keyword.control.for.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -221,7 +221,7 @@
},
{
"c": "(",
- "t": "source.cpp punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.cpp meta.parens.cpp punctuation.section.parens.begin.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -232,7 +232,7 @@
},
{
"c": "int",
- "t": "source.cpp storage.type.c",
+ "t": "source.cpp meta.parens.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -243,7 +243,7 @@
},
{
"c": " i",
- "t": "source.cpp",
+ "t": "source.cpp meta.parens.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -254,7 +254,7 @@
},
{
"c": "=",
- "t": "source.cpp keyword.operator.assignment.c",
+ "t": "source.cpp meta.parens.cpp keyword.operator.assignment.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -265,7 +265,7 @@
},
{
"c": "0",
- "t": "source.cpp constant.numeric.c",
+ "t": "source.cpp meta.parens.cpp constant.numeric.decimal.cpp",
"r": {
"dark_plus": "constant.numeric: #B5CEA8",
"light_plus": "constant.numeric: #09885A",
@@ -276,7 +276,7 @@
},
{
"c": ";",
- "t": "source.cpp punctuation.terminator.statement.c",
+ "t": "source.cpp meta.parens.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -287,7 +287,7 @@
},
{
"c": "i",
- "t": "source.cpp",
+ "t": "source.cpp meta.parens.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -298,7 +298,7 @@
},
{
"c": "<",
- "t": "source.cpp keyword.operator.comparison.c",
+ "t": "source.cpp meta.parens.cpp keyword.operator.comparison.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -309,7 +309,7 @@
},
{
"c": "num_candidate",
- "t": "source.cpp",
+ "t": "source.cpp meta.parens.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -320,7 +320,7 @@
},
{
"c": ";",
- "t": "source.cpp punctuation.terminator.statement.c",
+ "t": "source.cpp meta.parens.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -331,7 +331,7 @@
},
{
"c": "++",
- "t": "source.cpp keyword.operator.increment.c",
+ "t": "source.cpp meta.parens.cpp keyword.operator.increment.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -342,7 +342,7 @@
},
{
"c": "i",
- "t": "source.cpp",
+ "t": "source.cpp meta.parens.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -353,7 +353,7 @@
},
{
"c": ")",
- "t": "source.cpp punctuation.section.parens.end.bracket.round.c",
+ "t": "source.cpp meta.parens.cpp punctuation.section.parens.end.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -375,7 +375,7 @@
},
{
"c": "fprintf",
- "t": "source.cpp meta.function.c entity.name.function.c",
+ "t": "source.cpp entity.name.function.call.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -386,7 +386,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.function.c punctuation.section.parameters.begin.bracket.round.c",
+ "t": "source.cpp punctuation.section.arguments.begin.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -397,7 +397,7 @@
},
{
"c": "stderr",
- "t": "source.cpp meta.function.c",
+ "t": "source.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -408,7 +408,7 @@
},
{
"c": ",",
- "t": "source.cpp meta.function.c punctuation.separator.delimiter.c",
+ "t": "source.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -419,7 +419,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.function.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "t": "source.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -430,7 +430,7 @@
},
{
"c": "%d",
- "t": "source.cpp meta.function.c string.quoted.double.cpp constant.other.placeholder.c",
+ "t": "source.cpp string.quoted.double.cpp constant.other.placeholder.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -441,7 +441,7 @@
},
{
"c": ",",
- "t": "source.cpp meta.function.c string.quoted.double.cpp",
+ "t": "source.cpp string.quoted.double.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -452,7 +452,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.function.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "t": "source.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -463,7 +463,7 @@
},
{
"c": ",",
- "t": "source.cpp meta.function.c punctuation.separator.delimiter.c",
+ "t": "source.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -474,18 +474,18 @@
},
{
"c": "user_candidate",
- "t": "source.cpp meta.function.c",
+ "t": "source.cpp meta.bracket.square.access.cpp variable.other.object.cpp",
"r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
+ "dark_plus": "variable: #9CDCFE",
+ "light_plus": "variable: #001080",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
+ "hc_black": "variable: #9CDCFE"
}
},
{
"c": "[",
- "t": "source.cpp meta.function.c punctuation.definition.begin.bracket.square.c",
+ "t": "source.cpp meta.bracket.square.access.cpp punctuation.definition.begin.bracket.square.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -496,7 +496,7 @@
},
{
"c": "i",
- "t": "source.cpp meta.function.c",
+ "t": "source.cpp meta.bracket.square.access.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -507,7 +507,7 @@
},
{
"c": "]",
- "t": "source.cpp meta.function.c punctuation.definition.end.bracket.square.c",
+ "t": "source.cpp meta.bracket.square.access.cpp punctuation.definition.end.bracket.square.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -518,7 +518,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.function.c punctuation.section.parameters.end.bracket.round.c",
+ "t": "source.cpp punctuation.section.arguments.end.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -529,7 +529,7 @@
},
{
"c": ";",
- "t": "source.cpp punctuation.terminator.statement.c",
+ "t": "source.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -551,7 +551,7 @@
},
{
"c": "fprintf",
- "t": "source.cpp meta.function.c entity.name.function.c",
+ "t": "source.cpp entity.name.function.call.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -562,7 +562,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.function.c punctuation.section.parameters.begin.bracket.round.c",
+ "t": "source.cpp punctuation.section.arguments.begin.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -573,7 +573,7 @@
},
{
"c": "stderr",
- "t": "source.cpp meta.function.c",
+ "t": "source.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -584,7 +584,7 @@
},
{
"c": ",",
- "t": "source.cpp meta.function.c punctuation.separator.delimiter.c",
+ "t": "source.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -595,7 +595,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.function.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "t": "source.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -606,7 +606,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.function.c string.quoted.double.cpp",
+ "t": "source.cpp string.quoted.double.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -617,7 +617,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.function.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "t": "source.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -628,7 +628,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.function.c punctuation.section.parameters.end.bracket.round.c",
+ "t": "source.cpp punctuation.section.arguments.end.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -639,7 +639,7 @@
},
{
"c": ";",
- "t": "source.cpp punctuation.terminator.statement.c",
+ "t": "source.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -650,7 +650,7 @@
},
{
"c": "#",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c punctuation.definition.directive.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp punctuation.definition.directive.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -661,7 +661,7 @@
},
{
"c": "endif",
- "t": "source.cpp meta.preprocessor.c keyword.control.directive.conditional.c",
+ "t": "source.cpp meta.preprocessor.cpp keyword.control.directive.conditional.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -672,7 +672,7 @@
},
{
"c": " ",
- "t": "source.cpp",
+ "t": "source.cpp meta.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -683,7 +683,7 @@
},
{
"c": "void",
- "t": "source.cpp storage.type.c",
+ "t": "source.cpp meta.function.definition.cpp meta.qualified_type.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -694,7 +694,7 @@
},
{
"c": " ",
- "t": "source.cpp",
+ "t": "source.cpp meta.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -705,7 +705,7 @@
},
{
"c": "main",
- "t": "source.cpp meta.function.c entity.name.function.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp entity.name.function.definition.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -716,7 +716,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.function.c punctuation.section.parameters.begin.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.begin.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -726,8 +726,19 @@
}
},
{
- "c": "O obj",
- "t": "source.cpp meta.function.c",
+ "c": "O",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp entity.name.type.parameter.cpp",
+ "r": {
+ "dark_plus": "entity.name.type: #4EC9B0",
+ "light_plus": "entity.name.type: #267F99",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.type: #4EC9B0"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -736,9 +747,20 @@
"hc_black": "default: #FFFFFF"
}
},
+ {
+ "c": "obj",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp variable.parameter.cpp",
+ "r": {
+ "dark_plus": "variable: #9CDCFE",
+ "light_plus": "variable: #001080",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "variable: #9CDCFE"
+ }
+ },
{
"c": ")",
- "t": "source.cpp meta.function.c punctuation.section.parameters.end.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.end.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -749,7 +771,7 @@
},
{
"c": " ",
- "t": "source.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -760,7 +782,7 @@
},
{
"c": "{",
- "t": "source.cpp meta.block.c punctuation.section.block.begin.bracket.curly.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.block.begin.bracket.curly.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -771,7 +793,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -782,7 +804,7 @@
},
{
"c": "LOG_INFO",
- "t": "source.cpp meta.block.c meta.function-call.c entity.name.function.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.function.call.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -793,7 +815,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.begin.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -804,7 +826,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -815,7 +837,7 @@
},
{
"c": "not hilighted as string",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -826,7 +848,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -837,7 +859,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.end.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -848,7 +870,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -859,7 +881,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -870,7 +892,7 @@
},
{
"c": "LOG_INFO",
- "t": "source.cpp meta.block.c meta.function-call.c entity.name.function.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.function.call.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -881,7 +903,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.begin.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -892,7 +914,7 @@
},
{
"c": "obj ",
- "t": "source.cpp meta.block.c meta.function-call.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -903,7 +925,7 @@
},
{
"c": "<<",
- "t": "source.cpp meta.block.c meta.function-call.c keyword.operator.bitwise.shift.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.bitwise.shift.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -914,7 +936,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c meta.function-call.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -925,7 +947,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -936,7 +958,7 @@
},
{
"c": ", even worse; ",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -947,7 +969,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -958,7 +980,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c meta.function-call.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -969,7 +991,7 @@
},
{
"c": "<<",
- "t": "source.cpp meta.block.c meta.function-call.c keyword.operator.bitwise.shift.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.bitwise.shift.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -979,8 +1001,8 @@
}
},
{
- "c": " obj",
- "t": "source.cpp meta.block.c meta.function-call.c",
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -989,9 +1011,20 @@
"hc_black": "default: #FFFFFF"
}
},
+ {
+ "c": "obj",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp variable.other.object.access.cpp",
+ "r": {
+ "dark_plus": "variable: #9CDCFE",
+ "light_plus": "variable: #001080",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "variable: #9CDCFE"
+ }
+ },
{
"c": ".",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.separator.dot-access.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.separator.dot-access.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1002,7 +1035,7 @@
},
{
"c": "x",
- "t": "source.cpp meta.block.c meta.function-call.c variable.other.member.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp variable.other.property.cpp",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
@@ -1013,7 +1046,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c meta.function-call.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1024,7 +1057,7 @@
},
{
"c": "<<",
- "t": "source.cpp meta.block.c meta.function-call.c keyword.operator.bitwise.shift.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.bitwise.shift.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1035,7 +1068,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c meta.function-call.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1046,7 +1079,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1057,7 +1090,7 @@
},
{
"c": " check this out.",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1068,7 +1101,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1079,7 +1112,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.end.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1090,7 +1123,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1101,18 +1134,18 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c punctuation.whitespace.comment.leading.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp",
"r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
+ "dark_plus": "comment: #6A9955",
+ "light_plus": "comment: #008000",
+ "dark_vs": "comment: #6A9955",
+ "light_vs": "comment: #008000",
+ "hc_black": "comment: #7CA668"
}
},
{
"c": "//",
- "t": "source.cpp meta.block.c comment.line.double-slash.cpp punctuation.definition.comment.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp punctuation.definition.comment.cpp",
"r": {
"dark_plus": "comment: #6A9955",
"light_plus": "comment: #008000",
@@ -1123,7 +1156,7 @@
},
{
"c": " everything from this point on is interpeted as a string literal...",
- "t": "source.cpp meta.block.c comment.line.double-slash.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp",
"r": {
"dark_plus": "comment: #6A9955",
"light_plus": "comment: #008000",
@@ -1134,7 +1167,7 @@
},
{
"c": " O x",
- "t": "source.cpp meta.block.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1145,7 +1178,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1155,8 +1188,8 @@
}
},
{
- "c": " std",
- "t": "source.cpp meta.block.c",
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1165,9 +1198,20 @@
"hc_black": "default: #FFFFFF"
}
},
+ {
+ "c": "std",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.scope-resolution.cpp",
+ "r": {
+ "dark_plus": "entity.name.scope-resolution: #4EC9B0",
+ "light_plus": "entity.name.scope-resolution: #267F99",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.scope-resolution: #4EC9B0"
+ }
+ },
{
"c": "::",
- "t": "source.cpp meta.block.c punctuation.separator.namespace.access.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1178,7 +1222,7 @@
},
{
"c": "unique_ptr",
- "t": "source.cpp meta.block.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1189,7 +1233,7 @@
},
{
"c": "<",
- "t": "source.cpp meta.block.c keyword.operator.comparison.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.comparison.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1200,7 +1244,7 @@
},
{
"c": "O",
- "t": "source.cpp meta.block.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1211,7 +1255,7 @@
},
{
"c": ">",
- "t": "source.cpp meta.block.c keyword.operator.comparison.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.comparison.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1222,7 +1266,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1233,7 +1277,7 @@
},
{
"c": "o",
- "t": "source.cpp meta.block.c meta.function-call.c entity.name.function.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.function.call.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -1244,7 +1288,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.begin.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1255,18 +1299,18 @@
},
{
"c": "new",
- "t": "source.cpp meta.block.c meta.function-call.c keyword.control.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.wordlike.cpp keyword.operator.new.cpp",
"r": {
- "dark_plus": "keyword.control: #C586C0",
- "light_plus": "keyword.control: #AF00DB",
- "dark_vs": "keyword.control: #569CD6",
- "light_vs": "keyword.control: #0000FF",
- "hc_black": "keyword.control: #C586C0"
+ "dark_plus": "source.cpp keyword.operator.new: #C586C0",
+ "light_plus": "source.cpp keyword.operator.new: #AF00DB",
+ "dark_vs": "keyword.operator.new: #569CD6",
+ "light_vs": "keyword.operator.new: #0000FF",
+ "hc_black": "source.cpp keyword.operator.new: #C586C0"
}
},
{
"c": " O",
- "t": "source.cpp meta.block.c meta.function-call.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1277,7 +1321,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.end.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1288,7 +1332,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1299,18 +1343,18 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c punctuation.whitespace.comment.leading.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp",
"r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
+ "dark_plus": "comment: #6A9955",
+ "light_plus": "comment: #008000",
+ "dark_vs": "comment: #6A9955",
+ "light_vs": "comment: #008000",
+ "hc_black": "comment: #7CA668"
}
},
{
"c": "//",
- "t": "source.cpp meta.block.c comment.line.double-slash.cpp punctuation.definition.comment.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp punctuation.definition.comment.cpp",
"r": {
"dark_plus": "comment: #6A9955",
"light_plus": "comment: #008000",
@@ -1321,7 +1365,7 @@
},
{
"c": " sadness.",
- "t": "source.cpp meta.block.c comment.line.double-slash.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp",
"r": {
"dark_plus": "comment: #6A9955",
"light_plus": "comment: #008000",
@@ -1332,7 +1376,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c punctuation.whitespace.support.function.leading.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1343,18 +1387,18 @@
},
{
"c": "sprintf",
- "t": "source.cpp meta.block.c support.function.C99.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.function.call.cpp",
"r": {
- "dark_plus": "support.function: #DCDCAA",
- "light_plus": "support.function: #795E26",
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "support.function: #DCDCAA"
+ "hc_black": "entity.name.function: #DCDCAA"
}
},
{
"c": "(",
- "t": "source.cpp meta.block.c punctuation.section.parens.begin.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.begin.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1365,7 +1409,7 @@
},
{
"c": "options",
- "t": "source.cpp meta.block.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1376,7 +1420,7 @@
},
{
"c": ",",
- "t": "source.cpp meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1387,7 +1431,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1398,7 +1442,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.block.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1409,7 +1453,7 @@
},
{
"c": "STYLE=Keramik;TITLE=",
- "t": "source.cpp meta.block.c string.quoted.double.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1420,7 +1464,7 @@
},
{
"c": "%s",
- "t": "source.cpp meta.block.c string.quoted.double.cpp constant.other.placeholder.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp constant.other.placeholder.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1431,7 +1475,7 @@
},
{
"c": ";THEME=",
- "t": "source.cpp meta.block.c string.quoted.double.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1442,7 +1486,7 @@
},
{
"c": "%s",
- "t": "source.cpp meta.block.c string.quoted.double.cpp constant.other.placeholder.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp constant.other.placeholder.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1453,7 +1497,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.block.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1464,7 +1508,7 @@
},
{
"c": ",",
- "t": "source.cpp meta.block.c punctuation.separator.delimiter.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1474,19 +1518,8 @@
}
},
{
- "c": " ",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "...",
- "t": "source.cpp meta.block.c punctuation.separator.dot-access.c",
+ "c": " ...",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1497,7 +1530,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.block.c punctuation.section.parens.end.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.end.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1508,7 +1541,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1519,7 +1552,7 @@
},
{
"c": "}",
- "t": "source.cpp meta.block.c punctuation.section.block.end.bracket.curly.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.block.end.bracket.curly.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1530,7 +1563,7 @@
},
{
"c": "int",
- "t": "source.cpp storage.type.c",
+ "t": "source.cpp meta.function.definition.cpp meta.qualified_type.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -1541,7 +1574,7 @@
},
{
"c": " ",
- "t": "source.cpp",
+ "t": "source.cpp meta.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1552,7 +1585,7 @@
},
{
"c": "main2",
- "t": "source.cpp meta.function.c entity.name.function.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp entity.name.function.definition.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -1563,7 +1596,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.function.c punctuation.section.parameters.begin.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.begin.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1574,7 +1607,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.function.c punctuation.section.parameters.end.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.end.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1585,7 +1618,7 @@
},
{
"c": " ",
- "t": "source.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1596,7 +1629,7 @@
},
{
"c": "{",
- "t": "source.cpp meta.block.c punctuation.section.block.begin.bracket.curly.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.block.begin.bracket.curly.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1607,7 +1640,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c punctuation.whitespace.support.function.leading.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1618,260 +1651,7 @@
},
{
"c": "printf",
- "t": "source.cpp meta.block.c support.function.C99.c",
- "r": {
- "dark_plus": "support.function: #DCDCAA",
- "light_plus": "support.function: #795E26",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "support.function: #DCDCAA"
- }
- },
- {
- "c": "(",
- "t": "source.cpp meta.block.c punctuation.section.parens.begin.bracket.round.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "\"",
- "t": "source.cpp meta.block.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": ";",
- "t": "source.cpp meta.block.c string.quoted.double.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": "\"",
- "t": "source.cpp meta.block.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": ")",
- "t": "source.cpp meta.block.c punctuation.section.parens.end.bracket.round.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": " ",
- "t": "source.cpp meta.block.c punctuation.whitespace.comment.leading.cpp",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "//",
- "t": "source.cpp meta.block.c comment.line.double-slash.cpp punctuation.definition.comment.cpp",
- "r": {
- "dark_plus": "comment: #6A9955",
- "light_plus": "comment: #008000",
- "dark_vs": "comment: #6A9955",
- "light_vs": "comment: #008000",
- "hc_black": "comment: #7CA668"
- }
- },
- {
- "c": " the rest of",
- "t": "source.cpp meta.block.c comment.line.double-slash.cpp",
- "r": {
- "dark_plus": "comment: #6A9955",
- "light_plus": "comment: #008000",
- "dark_vs": "comment: #6A9955",
- "light_vs": "comment: #008000",
- "hc_black": "comment: #7CA668"
- }
- },
- {
- "c": " ",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "asm",
- "t": "source.cpp meta.block.c meta.function-call.c storage.type.c",
- "r": {
- "dark_plus": "storage.type: #569CD6",
- "light_plus": "storage.type: #0000FF",
- "dark_vs": "storage.type: #569CD6",
- "light_vs": "storage.type: #0000FF",
- "hc_black": "storage.type: #569CD6"
- }
- },
- {
- "c": "(",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.parens.begin.bracket.round.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "\"",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": "movw $0x38, ",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": "%a",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp constant.other.placeholder.c",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": "x; ltr ",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": "%a",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp constant.other.placeholder.c",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": "x",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": "\"",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": ")",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.parens.end.bracket.round.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": " ",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "fn",
- "t": "source.cpp meta.block.c meta.function-call.c entity.name.function.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.function.call.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -1882,7 +1662,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.begin.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1893,7 +1673,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1903,8 +1683,8 @@
}
},
{
- "c": "{};",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp",
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1915,7 +1695,7 @@
},
{
"c": "\"",
- "t": "source.cpp meta.block.c meta.function-call.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1926,7 +1706,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.end.bracket.round.function.call.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1937,7 +1717,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1948,18 +1728,18 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c punctuation.whitespace.comment.leading.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp",
"r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
+ "dark_plus": "comment: #6A9955",
+ "light_plus": "comment: #008000",
+ "dark_vs": "comment: #6A9955",
+ "light_vs": "comment: #008000",
+ "hc_black": "comment: #7CA668"
}
},
{
"c": "//",
- "t": "source.cpp meta.block.c comment.line.double-slash.cpp punctuation.definition.comment.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp punctuation.definition.comment.cpp",
"r": {
"dark_plus": "comment: #6A9955",
"light_plus": "comment: #008000",
@@ -1970,7 +1750,216 @@
},
{
"c": " the rest of",
- "t": "source.cpp meta.block.c comment.line.double-slash.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp",
+ "r": {
+ "dark_plus": "comment: #6A9955",
+ "light_plus": "comment: #008000",
+ "dark_vs": "comment: #6A9955",
+ "light_vs": "comment: #008000",
+ "hc_black": "comment: #7CA668"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "asm",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.asm.cpp storage.type.asm.cpp",
+ "r": {
+ "dark_plus": "storage.type: #569CD6",
+ "light_plus": "storage.type: #0000FF",
+ "dark_vs": "storage.type: #569CD6",
+ "light_vs": "storage.type: #0000FF",
+ "hc_black": "storage.type: #569CD6"
+ }
+ },
+ {
+ "c": "(",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.asm.cpp punctuation.section.parens.begin.bracket.round.assembly.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "\"",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.asm.cpp string.quoted.double.cpp punctuation.definition.string.begin.assembly.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": "movw $0x38, %ax; ltr %ax",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.asm.cpp string.quoted.double.cpp meta.embedded.assembly.cpp",
+ "r": {
+ "dark_plus": "meta.embedded: #D4D4D4",
+ "light_plus": "meta.embedded: #000000",
+ "dark_vs": "meta.embedded: #D4D4D4",
+ "light_vs": "meta.embedded: #000000",
+ "hc_black": "meta.embedded: #FFFFFF"
+ }
+ },
+ {
+ "c": "\"",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.asm.cpp string.quoted.double.cpp punctuation.definition.string.end.assembly.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": ")",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.asm.cpp punctuation.section.parens.end.bracket.round.assembly.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "fn",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.function.call.cpp",
+ "r": {
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.function: #DCDCAA"
+ }
+ },
+ {
+ "c": "(",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.begin.bracket.round.function.call.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "\"",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": "{};",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": "\"",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": ")",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.end.bracket.round.function.call.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp",
+ "r": {
+ "dark_plus": "comment: #6A9955",
+ "light_plus": "comment: #008000",
+ "dark_vs": "comment: #6A9955",
+ "light_vs": "comment: #008000",
+ "hc_black": "comment: #7CA668"
+ }
+ },
+ {
+ "c": "//",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp punctuation.definition.comment.cpp",
+ "r": {
+ "dark_plus": "comment: #6A9955",
+ "light_plus": "comment: #008000",
+ "dark_vs": "comment: #6A9955",
+ "light_vs": "comment: #008000",
+ "hc_black": "comment: #7CA668"
+ }
+ },
+ {
+ "c": " the rest of",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp comment.line.double-slash.cpp",
"r": {
"dark_plus": "comment: #6A9955",
"light_plus": "comment: #008000",
@@ -1981,7 +1970,7 @@
},
{
"c": "}",
- "t": "source.cpp meta.block.c punctuation.section.block.end.bracket.curly.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.block.end.bracket.curly.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
diff --git a/extensions/cpp/test/colorize-results/test_cpp.json b/extensions/cpp/test/colorize-results/test_cpp.json
index b3c9a841cc4..025f668b4c9 100644
--- a/extensions/cpp/test/colorize-results/test_cpp.json
+++ b/extensions/cpp/test/colorize-results/test_cpp.json
@@ -23,7 +23,7 @@
},
{
"c": "#",
- "t": "source.cpp meta.preprocessor.include.c keyword.control.directive.include.c punctuation.definition.directive.c",
+ "t": "source.cpp meta.preprocessor.include.cpp keyword.control.directive.include.cpp punctuation.definition.directive.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -34,7 +34,7 @@
},
{
"c": "include",
- "t": "source.cpp meta.preprocessor.include.c keyword.control.directive.include.c",
+ "t": "source.cpp meta.preprocessor.include.cpp keyword.control.directive.include.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -45,7 +45,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.preprocessor.include.c",
+ "t": "source.cpp meta.preprocessor.include.cpp",
"r": {
"dark_plus": "meta.preprocessor: #569CD6",
"light_plus": "meta.preprocessor: #0000FF",
@@ -56,7 +56,7 @@
},
{
"c": "<",
- "t": "source.cpp meta.preprocessor.include.c string.quoted.other.lt-gt.include.c punctuation.definition.string.begin.c",
+ "t": "source.cpp meta.preprocessor.include.cpp string.quoted.other.lt-gt.include.cpp punctuation.definition.string.begin.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -67,7 +67,7 @@
},
{
"c": "iostream",
- "t": "source.cpp meta.preprocessor.include.c string.quoted.other.lt-gt.include.c",
+ "t": "source.cpp meta.preprocessor.include.cpp string.quoted.other.lt-gt.include.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -78,7 +78,7 @@
},
{
"c": ">",
- "t": "source.cpp meta.preprocessor.include.c string.quoted.other.lt-gt.include.c punctuation.definition.string.end.c",
+ "t": "source.cpp meta.preprocessor.include.cpp string.quoted.other.lt-gt.include.cpp punctuation.definition.string.end.cpp",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -89,18 +89,18 @@
},
{
"c": "using",
- "t": "source.cpp meta.using-namespace-declaration.cpp keyword.control.cpp",
+ "t": "source.cpp meta.using-namespace.cpp keyword.other.using.directive.cpp",
"r": {
- "dark_plus": "keyword.control: #C586C0",
- "light_plus": "keyword.control: #AF00DB",
- "dark_vs": "keyword.control: #569CD6",
- "light_vs": "keyword.control: #0000FF",
- "hc_black": "keyword.control: #C586C0"
+ "dark_plus": "keyword.other.using: #C586C0",
+ "light_plus": "keyword.other.using: #AF00DB",
+ "dark_vs": "keyword: #569CD6",
+ "light_vs": "keyword: #0000FF",
+ "hc_black": "keyword.other.using: #C586C0"
}
},
{
"c": " ",
- "t": "source.cpp meta.using-namespace-declaration.cpp",
+ "t": "source.cpp meta.using-namespace.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -111,7 +111,7 @@
},
{
"c": "namespace",
- "t": "source.cpp meta.using-namespace-declaration.cpp storage.type.cpp",
+ "t": "source.cpp meta.using-namespace.cpp keyword.other.namespace.directive.cpp storage.type.namespace.directive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -122,7 +122,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.using-namespace-declaration.cpp",
+ "t": "source.cpp meta.using-namespace.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -133,18 +133,18 @@
},
{
"c": "std",
- "t": "source.cpp meta.using-namespace-declaration.cpp entity.name.type.cpp",
+ "t": "source.cpp meta.using-namespace.cpp entity.name.namespace.cpp",
"r": {
- "dark_plus": "entity.name.type: #4EC9B0",
- "light_plus": "entity.name.type: #267F99",
+ "dark_plus": "entity.name.namespace: #4EC9B0",
+ "light_plus": "entity.name.namespace: #267F99",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "entity.name.type: #4EC9B0"
+ "hc_black": "entity.name.namespace: #4EC9B0"
}
},
{
"c": ";",
- "t": "source.cpp meta.using-namespace-declaration.cpp",
+ "t": "source.cpp meta.using-namespace.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -154,8 +154,63 @@
}
},
{
- "c": "class",
- "t": "source.cpp meta.class-struct-block.cpp storage.type.cpp",
+ "c": "#",
+ "t": "source.cpp meta.preprocessor.macro.cpp keyword.control.directive.define.cpp punctuation.definition.directive.cpp",
+ "r": {
+ "dark_plus": "keyword.control: #C586C0",
+ "light_plus": "keyword.control: #AF00DB",
+ "dark_vs": "keyword.control: #569CD6",
+ "light_vs": "keyword.control: #0000FF",
+ "hc_black": "keyword.control: #C586C0"
+ }
+ },
+ {
+ "c": "define",
+ "t": "source.cpp meta.preprocessor.macro.cpp keyword.control.directive.define.cpp",
+ "r": {
+ "dark_plus": "keyword.control: #C586C0",
+ "light_plus": "keyword.control: #AF00DB",
+ "dark_vs": "keyword.control: #569CD6",
+ "light_vs": "keyword.control: #0000FF",
+ "hc_black": "keyword.control: #C586C0"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.preprocessor.macro.cpp",
+ "r": {
+ "dark_plus": "meta.preprocessor: #569CD6",
+ "light_plus": "meta.preprocessor: #0000FF",
+ "dark_vs": "meta.preprocessor: #569CD6",
+ "light_vs": "meta.preprocessor: #0000FF",
+ "hc_black": "meta.preprocessor: #569CD6"
+ }
+ },
+ {
+ "c": "EXTERN_C",
+ "t": "source.cpp meta.preprocessor.macro.cpp entity.name.function.preprocessor.cpp",
+ "r": {
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
+ "dark_vs": "meta.preprocessor: #569CD6",
+ "light_vs": "meta.preprocessor: #0000FF",
+ "hc_black": "entity.name.function: #DCDCAA"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.preprocessor.macro.cpp meta.block.extern.cpp",
+ "r": {
+ "dark_plus": "meta.preprocessor: #569CD6",
+ "light_plus": "meta.preprocessor: #0000FF",
+ "dark_vs": "meta.preprocessor: #569CD6",
+ "light_vs": "meta.preprocessor: #0000FF",
+ "hc_black": "meta.preprocessor: #569CD6"
+ }
+ },
+ {
+ "c": "extern",
+ "t": "source.cpp meta.preprocessor.macro.cpp meta.block.extern.cpp meta.head.extern.cpp storage.type.extern.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -166,7 +221,62 @@
},
{
"c": " ",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.preprocessor.macro.cpp meta.block.extern.cpp meta.head.extern.cpp",
+ "r": {
+ "dark_plus": "meta.preprocessor: #569CD6",
+ "light_plus": "meta.preprocessor: #0000FF",
+ "dark_vs": "meta.preprocessor: #569CD6",
+ "light_vs": "meta.preprocessor: #0000FF",
+ "hc_black": "meta.preprocessor: #569CD6"
+ }
+ },
+ {
+ "c": "\"",
+ "t": "source.cpp meta.preprocessor.macro.cpp meta.block.extern.cpp meta.head.extern.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": "C",
+ "t": "source.cpp meta.preprocessor.macro.cpp meta.block.extern.cpp meta.head.extern.cpp string.quoted.double.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": "\"",
+ "t": "source.cpp meta.preprocessor.macro.cpp meta.block.extern.cpp meta.head.extern.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": "class",
+ "t": "source.cpp meta.block.class.cpp meta.head.class.cpp storage.type.class.cpp",
+ "r": {
+ "dark_plus": "storage.type: #569CD6",
+ "light_plus": "storage.type: #0000FF",
+ "dark_vs": "storage.type: #569CD6",
+ "light_vs": "storage.type: #0000FF",
+ "hc_black": "storage.type: #569CD6"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.block.class.cpp meta.head.class.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -177,7 +287,7 @@
},
{
"c": "Rectangle",
- "t": "source.cpp meta.class-struct-block.cpp entity.name.type.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.head.class.cpp entity.name.type.class.cpp",
"r": {
"dark_plus": "entity.name.type: #4EC9B0",
"light_plus": "entity.name.type: #267F99",
@@ -188,7 +298,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.head.class.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -199,7 +309,7 @@
},
{
"c": "{",
- "t": "source.cpp meta.class-struct-block.cpp punctuation.section.block.begin.bracket.curly.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.head.class.cpp punctuation.section.block.begin.bracket.curly.class.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -210,7 +320,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -221,7 +331,7 @@
},
{
"c": "int",
- "t": "source.cpp meta.class-struct-block.cpp storage.type.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -232,7 +342,7 @@
},
{
"c": " width",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -243,7 +353,7 @@
},
{
"c": ",",
- "t": "source.cpp meta.class-struct-block.cpp punctuation.separator.delimiter.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -254,7 +364,7 @@
},
{
"c": " height",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -265,7 +375,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.class-struct-block.cpp punctuation.terminator.statement.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -276,7 +386,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -286,19 +396,30 @@
}
},
{
- "c": "public:",
- "t": "source.cpp meta.class-struct-block.cpp storage.modifier.cpp",
+ "c": "public",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp storage.type.modifier.access.control.public.cpp",
"r": {
- "dark_plus": "storage.modifier: #569CD6",
- "light_plus": "storage.modifier: #0000FF",
- "dark_vs": "storage.modifier: #569CD6",
- "light_vs": "storage.modifier: #0000FF",
- "hc_black": "storage.modifier: #569CD6"
+ "dark_plus": "storage.type: #569CD6",
+ "light_plus": "storage.type: #0000FF",
+ "dark_vs": "storage.type: #569CD6",
+ "light_vs": "storage.type: #0000FF",
+ "hc_black": "storage.type: #569CD6"
+ }
+ },
+ {
+ "c": ":",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp storage.type.modifier.access.control.public.cpp punctuation.separator.colon.access.control.cpp",
+ "r": {
+ "dark_plus": "storage.type: #569CD6",
+ "light_plus": "storage.type: #0000FF",
+ "dark_vs": "storage.type: #569CD6",
+ "light_vs": "storage.type: #0000FF",
+ "hc_black": "storage.type: #569CD6"
}
},
{
"c": " ",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -309,7 +430,7 @@
},
{
"c": "void",
- "t": "source.cpp meta.class-struct-block.cpp storage.type.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.qualified_type.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -320,7 +441,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -331,7 +452,7 @@
},
{
"c": "set_values",
- "t": "source.cpp meta.class-struct-block.cpp meta.function.c entity.name.function.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp entity.name.function.definition.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -342,7 +463,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.class-struct-block.cpp meta.function.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -353,7 +474,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.class-struct-block.cpp meta.function.c punctuation.section.parameters.begin.bracket.round.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.begin.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -364,7 +485,7 @@
},
{
"c": "int",
- "t": "source.cpp meta.class-struct-block.cpp meta.function.c storage.type.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -375,7 +496,7 @@
},
{
"c": ",",
- "t": "source.cpp meta.class-struct-block.cpp meta.function.c punctuation.separator.delimiter.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -386,7 +507,7 @@
},
{
"c": "int",
- "t": "source.cpp meta.class-struct-block.cpp meta.function.c storage.type.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -397,7 +518,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.class-struct-block.cpp meta.function.c punctuation.section.parameters.end.bracket.round.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.end.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -408,7 +529,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.class-struct-block.cpp punctuation.terminator.statement.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -419,7 +540,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -430,7 +551,7 @@
},
{
"c": "int",
- "t": "source.cpp meta.class-struct-block.cpp storage.type.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.qualified_type.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -441,7 +562,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -452,7 +573,7 @@
},
{
"c": "area",
- "t": "source.cpp meta.class-struct-block.cpp meta.function.c entity.name.function.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp entity.name.function.definition.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -463,7 +584,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.class-struct-block.cpp meta.function.c punctuation.section.parameters.begin.bracket.round.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.begin.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -474,7 +595,7 @@
},
{
"c": ")",
- "t": "source.cpp meta.class-struct-block.cpp meta.function.c punctuation.section.parameters.end.bracket.round.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.end.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -485,7 +606,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.class-struct-block.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -496,7 +617,7 @@
},
{
"c": "{",
- "t": "source.cpp meta.class-struct-block.cpp meta.block.c punctuation.section.block.begin.bracket.curly.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.block.begin.bracket.curly.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -507,7 +628,7 @@
},
{
"c": "return",
- "t": "source.cpp meta.class-struct-block.cpp meta.block.c keyword.control.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.control.return.cpp",
"r": {
"dark_plus": "keyword.control: #C586C0",
"light_plus": "keyword.control: #AF00DB",
@@ -518,7 +639,7 @@
},
{
"c": " width",
- "t": "source.cpp meta.class-struct-block.cpp meta.block.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -529,7 +650,7 @@
},
{
"c": "*",
- "t": "source.cpp meta.class-struct-block.cpp meta.block.c keyword.operator.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -540,7 +661,7 @@
},
{
"c": "height",
- "t": "source.cpp meta.class-struct-block.cpp meta.block.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -551,7 +672,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.class-struct-block.cpp meta.block.c punctuation.terminator.statement.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -562,7 +683,7 @@
},
{
"c": "}",
- "t": "source.cpp meta.class-struct-block.cpp meta.block.c punctuation.section.block.end.bracket.curly.c",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.block.end.bracket.curly.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -573,7 +694,7 @@
},
{
"c": "}",
- "t": "source.cpp meta.class-struct-block.cpp punctuation.section.block.end.bracket.curly.cpp",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp punctuation.section.block.end.bracket.curly.class.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -584,7 +705,7 @@
},
{
"c": ";",
- "t": "source.cpp punctuation.terminator.statement.c",
+ "t": "source.cpp meta.block.class.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -595,7 +716,7 @@
},
{
"c": "void",
- "t": "source.cpp storage.type.c",
+ "t": "source.cpp meta.function.definition.cpp meta.qualified_type.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -606,7 +727,7 @@
},
{
"c": " ",
- "t": "source.cpp",
+ "t": "source.cpp meta.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -616,360 +737,19 @@
}
},
{
- "c": "Rectangle::set_values",
- "t": "source.cpp meta.function.c entity.name.function.c",
+ "c": "Rectangle",
+ "t": "source.cpp meta.function.definition.cpp entity.name.scope-resolution.function.definition.cpp",
"r": {
- "dark_plus": "entity.name.function: #DCDCAA",
- "light_plus": "entity.name.function: #795E26",
+ "dark_plus": "entity.name.scope-resolution: #4EC9B0",
+ "light_plus": "entity.name.scope-resolution: #267F99",
"dark_vs": "default: #D4D4D4",
"light_vs": "default: #000000",
- "hc_black": "entity.name.function: #DCDCAA"
+ "hc_black": "entity.name.scope-resolution: #4EC9B0"
}
},
{
- "c": " ",
- "t": "source.cpp meta.function.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "(",
- "t": "source.cpp meta.function.c punctuation.section.parameters.begin.bracket.round.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "int",
- "t": "source.cpp meta.function.c storage.type.c",
- "r": {
- "dark_plus": "storage.type: #569CD6",
- "light_plus": "storage.type: #0000FF",
- "dark_vs": "storage.type: #569CD6",
- "light_vs": "storage.type: #0000FF",
- "hc_black": "storage.type: #569CD6"
- }
- },
- {
- "c": " x",
- "t": "source.cpp meta.function.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ",",
- "t": "source.cpp meta.function.c punctuation.separator.delimiter.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": " ",
- "t": "source.cpp meta.function.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "int",
- "t": "source.cpp meta.function.c storage.type.c",
- "r": {
- "dark_plus": "storage.type: #569CD6",
- "light_plus": "storage.type: #0000FF",
- "dark_vs": "storage.type: #569CD6",
- "light_vs": "storage.type: #0000FF",
- "hc_black": "storage.type: #569CD6"
- }
- },
- {
- "c": " y",
- "t": "source.cpp meta.function.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ")",
- "t": "source.cpp meta.function.c punctuation.section.parameters.end.bracket.round.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": " ",
- "t": "source.cpp",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "{",
- "t": "source.cpp meta.block.c punctuation.section.block.begin.bracket.curly.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": " width ",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "=",
- "t": "source.cpp meta.block.c keyword.operator.assignment.c",
- "r": {
- "dark_plus": "keyword.operator: #D4D4D4",
- "light_plus": "keyword.operator: #000000",
- "dark_vs": "keyword.operator: #D4D4D4",
- "light_vs": "keyword.operator: #000000",
- "hc_black": "keyword.operator: #D4D4D4"
- }
- },
- {
- "c": " x",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": " height ",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "=",
- "t": "source.cpp meta.block.c keyword.operator.assignment.c",
- "r": {
- "dark_plus": "keyword.operator: #D4D4D4",
- "light_plus": "keyword.operator: #000000",
- "dark_vs": "keyword.operator: #D4D4D4",
- "light_vs": "keyword.operator: #000000",
- "hc_black": "keyword.operator: #D4D4D4"
- }
- },
- {
- "c": " y",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "}",
- "t": "source.cpp meta.block.c punctuation.section.block.end.bracket.curly.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "int",
- "t": "source.cpp storage.type.c",
- "r": {
- "dark_plus": "storage.type: #569CD6",
- "light_plus": "storage.type: #0000FF",
- "dark_vs": "storage.type: #569CD6",
- "light_vs": "storage.type: #0000FF",
- "hc_black": "storage.type: #569CD6"
- }
- },
- {
- "c": " ",
- "t": "source.cpp",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "main",
- "t": "source.cpp meta.function.c entity.name.function.c",
- "r": {
- "dark_plus": "entity.name.function: #DCDCAA",
- "light_plus": "entity.name.function: #795E26",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "entity.name.function: #DCDCAA"
- }
- },
- {
- "c": " ",
- "t": "source.cpp meta.function.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "(",
- "t": "source.cpp meta.function.c punctuation.section.parameters.begin.bracket.round.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ")",
- "t": "source.cpp meta.function.c punctuation.section.parameters.end.bracket.round.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": " ",
- "t": "source.cpp",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "{",
- "t": "source.cpp meta.block.c punctuation.section.block.begin.bracket.curly.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": " Rectangle rect",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": " rect",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ".",
- "t": "source.cpp meta.block.c punctuation.separator.dot-access.c",
+ "c": "::",
+ "t": "source.cpp meta.function.definition.cpp punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -980,7 +760,7 @@
},
{
"c": "set_values",
- "t": "source.cpp meta.block.c meta.function-call.c entity.name.function.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp entity.name.function.definition.cpp",
"r": {
"dark_plus": "entity.name.function: #DCDCAA",
"light_plus": "entity.name.function: #795E26",
@@ -991,7 +771,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.c meta.function-call.c",
+ "t": "source.cpp meta.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1002,7 +782,7 @@
},
{
"c": "(",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.begin.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1012,19 +792,41 @@
}
},
{
- "c": "3",
- "t": "source.cpp meta.block.c meta.function-call.c constant.numeric.c",
+ "c": "int",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
- "dark_plus": "constant.numeric: #B5CEA8",
- "light_plus": "constant.numeric: #09885A",
- "dark_vs": "constant.numeric: #B5CEA8",
- "light_vs": "constant.numeric: #09885A",
- "hc_black": "constant.numeric: #B5CEA8"
+ "dark_plus": "storage.type: #569CD6",
+ "light_plus": "storage.type: #0000FF",
+ "dark_vs": "storage.type: #569CD6",
+ "light_vs": "storage.type: #0000FF",
+ "hc_black": "storage.type: #569CD6"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "x",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp variable.parameter.cpp",
+ "r": {
+ "dark_plus": "variable: #9CDCFE",
+ "light_plus": "variable: #001080",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "variable: #9CDCFE"
}
},
{
"c": ",",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.separator.delimiter.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1034,19 +836,52 @@
}
},
{
- "c": "4",
- "t": "source.cpp meta.block.c meta.function-call.c constant.numeric.c",
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp",
"r": {
- "dark_plus": "constant.numeric: #B5CEA8",
- "light_plus": "constant.numeric: #09885A",
- "dark_vs": "constant.numeric: #B5CEA8",
- "light_vs": "constant.numeric: #09885A",
- "hc_black": "constant.numeric: #B5CEA8"
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "int",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
+ "r": {
+ "dark_plus": "storage.type: #569CD6",
+ "light_plus": "storage.type: #0000FF",
+ "dark_vs": "storage.type: #569CD6",
+ "light_vs": "storage.type: #0000FF",
+ "hc_black": "storage.type: #569CD6"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "y",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp variable.parameter.cpp",
+ "r": {
+ "dark_plus": "variable: #9CDCFE",
+ "light_plus": "variable: #001080",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "variable: #9CDCFE"
}
},
{
"c": ")",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.end.bracket.round.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1056,8 +891,8 @@
}
},
{
- "c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1067,8 +902,8 @@
}
},
{
- "c": " cout ",
- "t": "source.cpp meta.block.c",
+ "c": "{",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.block.begin.bracket.curly.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1078,8 +913,19 @@
}
},
{
- "c": "<<",
- "t": "source.cpp meta.block.c keyword.operator.bitwise.shift.c",
+ "c": " width ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "=",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.assignment.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1089,8 +935,8 @@
}
},
{
- "c": " ",
- "t": "source.cpp meta.block.c",
+ "c": " x",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1100,41 +946,8 @@
}
},
{
- "c": "\"",
- "t": "source.cpp meta.block.c string.quoted.double.cpp punctuation.definition.string.begin.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": "area: ",
- "t": "source.cpp meta.block.c string.quoted.double.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": "\"",
- "t": "source.cpp meta.block.c string.quoted.double.cpp punctuation.definition.string.end.cpp",
- "r": {
- "dark_plus": "string: #CE9178",
- "light_plus": "string: #A31515",
- "dark_vs": "string: #CE9178",
- "light_vs": "string: #A31515",
- "hc_black": "string: #CE9178"
- }
- },
- {
- "c": " ",
- "t": "source.cpp meta.block.c",
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1144,8 +957,19 @@
}
},
{
- "c": "<<",
- "t": "source.cpp meta.block.c keyword.operator.bitwise.shift.c",
+ "c": " height ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "=",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.assignment.cpp",
"r": {
"dark_plus": "keyword.operator: #D4D4D4",
"light_plus": "keyword.operator: #000000",
@@ -1155,52 +979,8 @@
}
},
{
- "c": " rect",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ".",
- "t": "source.cpp meta.block.c punctuation.separator.dot-access.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "area",
- "t": "source.cpp meta.block.c meta.function-call.c entity.name.function.c",
- "r": {
- "dark_plus": "entity.name.function: #DCDCAA",
- "light_plus": "entity.name.function: #795E26",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "entity.name.function: #DCDCAA"
- }
- },
- {
- "c": "(",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.begin.bracket.round.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ")",
- "t": "source.cpp meta.block.c meta.function-call.c punctuation.section.arguments.end.bracket.round.c",
+ "c": " y",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1211,62 +991,7 @@
},
{
"c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": " ",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "return",
- "t": "source.cpp meta.block.c keyword.control.c",
- "r": {
- "dark_plus": "keyword.control: #C586C0",
- "light_plus": "keyword.control: #AF00DB",
- "dark_vs": "keyword.control: #569CD6",
- "light_vs": "keyword.control: #0000FF",
- "hc_black": "keyword.control: #C586C0"
- }
- },
- {
- "c": " ",
- "t": "source.cpp meta.block.c",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "0",
- "t": "source.cpp meta.block.c constant.numeric.c",
- "r": {
- "dark_plus": "constant.numeric: #B5CEA8",
- "light_plus": "constant.numeric: #09885A",
- "dark_vs": "constant.numeric: #B5CEA8",
- "light_vs": "constant.numeric: #09885A",
- "hc_black": "constant.numeric: #B5CEA8"
- }
- },
- {
- "c": ";",
- "t": "source.cpp meta.block.c punctuation.terminator.statement.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1277,7 +1002,865 @@
},
{
"c": "}",
- "t": "source.cpp meta.block.c punctuation.section.block.end.bracket.curly.c",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.block.end.bracket.curly.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "int",
+ "t": "source.cpp meta.function.definition.cpp meta.qualified_type.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
+ "r": {
+ "dark_plus": "storage.type: #569CD6",
+ "light_plus": "storage.type: #0000FF",
+ "dark_vs": "storage.type: #569CD6",
+ "light_vs": "storage.type: #0000FF",
+ "hc_black": "storage.type: #569CD6"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "main",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp entity.name.function.definition.cpp",
+ "r": {
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.function: #DCDCAA"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "(",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.begin.bracket.round.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ")",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.parameters.end.bracket.round.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "{",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp punctuation.section.block.begin.bracket.curly.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " Rectangle rect",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "rect",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp variable.other.object.access.cpp",
+ "r": {
+ "dark_plus": "variable: #9CDCFE",
+ "light_plus": "variable: #001080",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "variable: #9CDCFE"
+ }
+ },
+ {
+ "c": ".",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.separator.dot-access.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "set_values",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.function.member.cpp",
+ "r": {
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.function: #DCDCAA"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "(",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.begin.bracket.round.function.member.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "3",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp constant.numeric.decimal.cpp",
+ "r": {
+ "dark_plus": "constant.numeric: #B5CEA8",
+ "light_plus": "constant.numeric: #09885A",
+ "dark_vs": "constant.numeric: #B5CEA8",
+ "light_vs": "constant.numeric: #09885A",
+ "hc_black": "constant.numeric: #B5CEA8"
+ }
+ },
+ {
+ "c": ",",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.separator.delimiter.comma.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "4",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp constant.numeric.decimal.cpp",
+ "r": {
+ "dark_plus": "constant.numeric: #B5CEA8",
+ "light_plus": "constant.numeric: #09885A",
+ "dark_vs": "constant.numeric: #B5CEA8",
+ "light_vs": "constant.numeric: #09885A",
+ "hc_black": "constant.numeric: #B5CEA8"
+ }
+ },
+ {
+ "c": ")",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.end.bracket.round.function.member.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " cout ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "<<",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.bitwise.shift.cpp",
+ "r": {
+ "dark_plus": "keyword.operator: #D4D4D4",
+ "light_plus": "keyword.operator: #000000",
+ "dark_vs": "keyword.operator: #D4D4D4",
+ "light_vs": "keyword.operator: #000000",
+ "hc_black": "keyword.operator: #D4D4D4"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "\"",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": "area: ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": "\"",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "<<",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.bitwise.shift.cpp",
+ "r": {
+ "dark_plus": "keyword.operator: #D4D4D4",
+ "light_plus": "keyword.operator: #000000",
+ "dark_vs": "keyword.operator: #D4D4D4",
+ "light_vs": "keyword.operator: #000000",
+ "hc_black": "keyword.operator: #D4D4D4"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "rect",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp variable.other.object.access.cpp",
+ "r": {
+ "dark_plus": "variable: #9CDCFE",
+ "light_plus": "variable: #001080",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "variable: #9CDCFE"
+ }
+ },
+ {
+ "c": ".",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.separator.dot-access.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "area",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.function.member.cpp",
+ "r": {
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.function: #DCDCAA"
+ }
+ },
+ {
+ "c": "(",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.begin.bracket.round.function.member.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ")",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.end.bracket.round.function.member.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "Task",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.scope-resolution.cpp",
+ "r": {
+ "dark_plus": "entity.name.scope-resolution: #4EC9B0",
+ "light_plus": "entity.name.scope-resolution: #267F99",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.scope-resolution: #4EC9B0"
+ }
+ },
+ {
+ "c": "<",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.template.call.cpp meta.template.call.cpp punctuation.section.angle-brackets.begin.template.call.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "ANY_OUTPUT_TYPE",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp entity.name.type.cpp",
+ "r": {
+ "dark_plus": "entity.name.type: #4EC9B0",
+ "light_plus": "entity.name.type: #267F99",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.type: #4EC9B0"
+ }
+ },
+ {
+ "c": ",",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.template.call.cpp meta.template.call.cpp punctuation.separator.delimiter.comma.template.argument.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "ANY_INPUT_TYPE",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp entity.name.type.cpp",
+ "r": {
+ "dark_plus": "entity.name.type: #4EC9B0",
+ "light_plus": "entity.name.type: #267F99",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.type: #4EC9B0"
+ }
+ },
+ {
+ "c": ">",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.template.call.cpp meta.template.call.cpp punctuation.section.angle-brackets.end.template.call.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "::",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "links_to",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "int",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
+ "r": {
+ "dark_plus": "storage.type: #569CD6",
+ "light_plus": "storage.type: #0000FF",
+ "dark_vs": "storage.type: #569CD6",
+ "light_vs": "storage.type: #0000FF",
+ "hc_black": "storage.type: #569CD6"
+ }
+ },
+ {
+ "c": " t ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "=",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.operator.assignment.cpp",
+ "r": {
+ "dark_plus": "keyword.operator: #D4D4D4",
+ "light_plus": "keyword.operator: #000000",
+ "dark_vs": "keyword.operator: #D4D4D4",
+ "light_vs": "keyword.operator: #000000",
+ "hc_black": "keyword.operator: #D4D4D4"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "2",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp constant.numeric.decimal.cpp",
+ "r": {
+ "dark_plus": "constant.numeric: #B5CEA8",
+ "light_plus": "constant.numeric: #09885A",
+ "dark_vs": "constant.numeric: #B5CEA8",
+ "light_vs": "constant.numeric: #09885A",
+ "hc_black": "constant.numeric: #B5CEA8"
+ }
+ },
+ {
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "if",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.control.if.cpp",
+ "r": {
+ "dark_plus": "keyword.control: #C586C0",
+ "light_plus": "keyword.control: #AF00DB",
+ "dark_vs": "keyword.control: #569CD6",
+ "light_vs": "keyword.control: #0000FF",
+ "hc_black": "keyword.control: #C586C0"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "(",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.parens.cpp punctuation.section.parens.begin.bracket.round.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "t ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.parens.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ">",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.parens.cpp keyword.operator.comparison.cpp",
+ "r": {
+ "dark_plus": "keyword.operator: #D4D4D4",
+ "light_plus": "keyword.operator: #000000",
+ "dark_vs": "keyword.operator: #D4D4D4",
+ "light_vs": "keyword.operator: #000000",
+ "hc_black": "keyword.operator: #D4D4D4"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.parens.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "0",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.parens.cpp constant.numeric.decimal.cpp",
+ "r": {
+ "dark_plus": "constant.numeric: #B5CEA8",
+ "light_plus": "constant.numeric: #09885A",
+ "dark_vs": "constant.numeric: #B5CEA8",
+ "light_vs": "constant.numeric: #09885A",
+ "hc_black": "constant.numeric: #B5CEA8"
+ }
+ },
+ {
+ "c": ")",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.parens.cpp punctuation.section.parens.end.bracket.round.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "puts",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp entity.name.function.call.cpp",
+ "r": {
+ "dark_plus": "entity.name.function: #DCDCAA",
+ "light_plus": "entity.name.function: #795E26",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "entity.name.function: #DCDCAA"
+ }
+ },
+ {
+ "c": "(",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.begin.bracket.round.function.call.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "\"",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.begin.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": "\\n",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp constant.character.escape.cpp",
+ "r": {
+ "dark_plus": "constant.character.escape: #D7BA7D",
+ "light_plus": "constant.character.escape: #FF0000",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "constant.character: #569CD6"
+ }
+ },
+ {
+ "c": "*************************************************",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": "\"",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp punctuation.definition.string.end.cpp",
+ "r": {
+ "dark_plus": "string: #CE9178",
+ "light_plus": "string: #A31515",
+ "dark_vs": "string: #CE9178",
+ "light_vs": "string: #A31515",
+ "hc_black": "string: #CE9178"
+ }
+ },
+ {
+ "c": ")",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.arguments.end.bracket.round.function.call.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "return",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp keyword.control.return.cpp",
+ "r": {
+ "dark_plus": "keyword.control: #C586C0",
+ "light_plus": "keyword.control: #AF00DB",
+ "dark_vs": "keyword.control: #569CD6",
+ "light_vs": "keyword.control: #0000FF",
+ "hc_black": "keyword.control: #C586C0"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "0",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp constant.numeric.decimal.cpp",
+ "r": {
+ "dark_plus": "constant.numeric: #B5CEA8",
+ "light_plus": "constant.numeric: #09885A",
+ "dark_vs": "constant.numeric: #B5CEA8",
+ "light_vs": "constant.numeric: #09885A",
+ "hc_black": "constant.numeric: #B5CEA8"
+ }
+ },
+ {
+ "c": ";",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.terminator.statement.cpp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "}",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp punctuation.section.block.end.bracket.curly.function.definition.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
diff --git a/extensions/csharp/package.json b/extensions/csharp/package.json
index 3e2925282e2..3841eabd132 100644
--- a/extensions/csharp/package.json
+++ b/extensions/csharp/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": {
"vscode": "0.10.x"
},
diff --git a/extensions/csharp/test/colorize-results/test_cs.json b/extensions/csharp/test/colorize-results/test_cs.json
index 1fc73fb341c..dbbe61ef3c6 100644
--- a/extensions/csharp/test/colorize-results/test_cs.json
+++ b/extensions/csharp/test/colorize-results/test_cs.json
@@ -3,11 +3,11 @@
"c": "using",
"t": "source.cs keyword.other.using.cs",
"r": {
- "dark_plus": "keyword: #569CD6",
- "light_plus": "keyword: #0000FF",
+ "dark_plus": "keyword.other.using: #C586C0",
+ "light_plus": "keyword.other.using: #AF00DB",
"dark_vs": "keyword: #569CD6",
"light_vs": "keyword: #0000FF",
- "hc_black": "keyword: #569CD6"
+ "hc_black": "keyword.other.using: #C586C0"
}
},
{
diff --git a/extensions/css-language-features/.vscode/launch.json b/extensions/css-language-features/.vscode/launch.json
index d6393141c5d..4f7166e6dce 100644
--- a/extensions/css-language-features/.vscode/launch.json
+++ b/extensions/css-language-features/.vscode/launch.json
@@ -23,8 +23,7 @@
"outFiles": [
"${workspaceFolder}/client/out/**/*.js"
],
- "smartStep": true,
- "preLaunchTask": "npm: compile"
+ "smartStep": true
},
{
"name": "Launch Tests",
@@ -39,8 +38,7 @@
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/client/out/test/**/*.js"
- ],
- "preLaunchTask": "npm: compile"
+ ]
},
{
"name": "Attach Language Server",
diff --git a/extensions/css-language-features/.vscode/settings.json b/extensions/css-language-features/.vscode/settings.json
new file mode 100644
index 00000000000..5b30e2983c2
--- /dev/null
+++ b/extensions/css-language-features/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+ "prettier.semi": true,
+ "prettier.singleQuote": true,
+ "prettier.printWidth": 120,
+}
\ No newline at end of file
diff --git a/extensions/css-language-features/client/src/cssMain.ts b/extensions/css-language-features/client/src/cssMain.ts
index 6e0f2eb77c7..ee8c9973d3a 100644
--- a/extensions/css-language-features/client/src/cssMain.ts
+++ b/extensions/css-language-features/client/src/cssMain.ts
@@ -9,8 +9,9 @@ import * as fs from 'fs';
import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
-import { languages, window, commands, ExtensionContext, Range, Position, CompletionItem, CompletionItemKind, TextEdit, SnippetString } from 'vscode';
+import { languages, window, commands, ExtensionContext, Range, Position, CompletionItem, CompletionItemKind, TextEdit, SnippetString, workspace } from 'vscode';
import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, Disposable } from 'vscode-languageclient';
+import { getCustomDataPathsInAllWorkspaces, getCustomDataPathsFromAllExtensions } from './customData';
// this method is called when vs code is activated
export function activate(context: ExtensionContext) {
@@ -30,6 +31,11 @@ export function activate(context: ExtensionContext) {
let documentSelector = ['css', 'scss', 'less'];
+ let dataPaths = [
+ ...getCustomDataPathsInAllWorkspaces(workspace.workspaceFolders),
+ ...getCustomDataPathsFromAllExtensions()
+ ];
+
// Options to control the language client
let clientOptions: LanguageClientOptions = {
documentSelector,
@@ -37,6 +43,7 @@ export function activate(context: ExtensionContext) {
configurationSection: ['css', 'scss', 'less']
},
initializationOptions: {
+ dataPaths
}
};
diff --git a/extensions/css-language-features/client/src/customData.ts b/extensions/css-language-features/client/src/customData.ts
new file mode 100644
index 00000000000..b812b133ddc
--- /dev/null
+++ b/extensions/css-language-features/client/src/customData.ts
@@ -0,0 +1,60 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as path from 'path';
+import { workspace, WorkspaceFolder, extensions } from 'vscode';
+
+interface ExperimentalConfig {
+ experimental?: {
+ customData?: string[];
+ };
+}
+
+export function getCustomDataPathsInAllWorkspaces(workspaceFolders: WorkspaceFolder[] | undefined): string[] {
+ const dataPaths: string[] = [];
+
+ if (!workspaceFolders) {
+ return dataPaths;
+ }
+
+ workspaceFolders.forEach(wf => {
+ const allCssConfig = workspace.getConfiguration(undefined, wf.uri);
+ const wfCSSConfig = allCssConfig.inspect('css');
+ if (
+ wfCSSConfig &&
+ wfCSSConfig.workspaceFolderValue &&
+ wfCSSConfig.workspaceFolderValue.experimental &&
+ wfCSSConfig.workspaceFolderValue.experimental.customData
+ ) {
+ const customData = wfCSSConfig.workspaceFolderValue.experimental.customData;
+ if (Array.isArray(customData)) {
+ customData.forEach(t => {
+ if (typeof t === 'string') {
+ dataPaths.push(path.resolve(wf.uri.fsPath, t));
+ }
+ });
+ }
+ }
+ });
+
+ return dataPaths;
+}
+
+export function getCustomDataPathsFromAllExtensions(): string[] {
+ const dataPaths: string[] = [];
+
+ for (const extension of extensions.all) {
+ const contributes = extension.packageJSON && extension.packageJSON.contributes;
+
+ if (contributes && contributes.css && contributes.css.experimental.customData && Array.isArray(contributes.css.experimental.customData)) {
+ const relativePaths: string[] = contributes.css.experimental.customData;
+ relativePaths.forEach(rp => {
+ dataPaths.push(path.resolve(extension.extensionPath, rp));
+ });
+ }
+ }
+
+ return dataPaths;
+}
diff --git a/extensions/css-language-features/client/src/typings/ref.d.ts b/extensions/css-language-features/client/src/typings/ref.d.ts
index 9c1a5df18ed..de602d3f8d6 100644
--- a/extensions/css-language-features/client/src/typings/ref.d.ts
+++ b/extensions/css-language-features/client/src/typings/ref.d.ts
@@ -2,5 +2,5 @@
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-
///
+///
diff --git a/extensions/css-language-features/package.json b/extensions/css-language-features/package.json
index e6f71ff0260..be663d36b7b 100644
--- a/extensions/css-language-features/package.json
+++ b/extensions/css-language-features/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": {
"vscode": "^1.29.0"
},
@@ -15,6 +16,7 @@
"onCommand:_css.applyCodeAction"
],
"main": "./client/out/cssMain",
+ "enableProposedApi": true,
"scripts": {
"compile": "gulp compile-extension:css-language-features-client compile-extension:css-language-features-server",
"watch": "gulp watch-extension:css-language-features-client watch-extension:css-language-features-server",
@@ -32,6 +34,21 @@
"id": "css",
"title": "%css.title%",
"properties": {
+ "css.experimental.customData": {
+ "type": "array",
+ "description": "A list of JSON file paths that define custom CSS data that loads custom properties, at directives, pseudo classes / elements.",
+ "default": [],
+ "items": {
+ "type": "string"
+ },
+ "scope": "resource"
+ },
+ "css.completion.triggerPropertyValueCompletion": {
+ "type": "boolean",
+ "scope": "resource",
+ "default": true,
+ "description": "%css.completion.triggerPropertyValueCompletion.desc%"
+ },
"css.validate": {
"type": "boolean",
"scope": "resource",
@@ -713,14 +730,20 @@
}
}
}
+ ],
+ "jsonValidation": [
+ {
+ "fileMatch": "*.css-data.json",
+ "url": "https://raw.githubusercontent.com/Microsoft/vscode-css-languageservice/master/docs/customData.schema.json"
+ }
]
},
"dependencies": {
- "vscode-languageclient": "^5.1.0",
- "vscode-nls": "^4.0.0"
+ "vscode-languageclient": "^5.3.0-next.6",
+ "vscode-nls": "^4.1.1"
},
"devDependencies": {
- "@types/node": "^8.10.25",
+ "@types/node": "^10.14.8",
"mocha": "^5.2.0"
}
}
diff --git a/extensions/css-language-features/package.nls.json b/extensions/css-language-features/package.nls.json
index f136700f806..3e890bfd9bd 100644
--- a/extensions/css-language-features/package.nls.json
+++ b/extensions/css-language-features/package.nls.json
@@ -2,6 +2,7 @@
"displayName": "CSS Language Features",
"description": "Provides rich language support for CSS, LESS and SCSS files.",
"css.title": "CSS",
+ "css.completion.triggerPropertyValueCompletion.desc": "By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.",
"css.lint.argumentsInColorFunction.desc": "Invalid number of parameters.",
"css.lint.boxModel.desc": "Do not use `width` or `height` when using `padding` or `border`.",
"css.lint.compatibleVendorPrefixes.desc": "When using a vendor-specific prefix make sure to also include all other vendor-specific properties.",
@@ -72,4 +73,4 @@
"css.colorDecorators.enable.deprecationMessage": "The setting `css.colorDecorators.enable` has been deprecated in favor of `editor.colorDecorators`.",
"scss.colorDecorators.enable.deprecationMessage": "The setting `scss.colorDecorators.enable` has been deprecated in favor of `editor.colorDecorators`.",
"less.colorDecorators.enable.deprecationMessage": "The setting `less.colorDecorators.enable` has been deprecated in favor of `editor.colorDecorators`."
-}
\ No newline at end of file
+}
diff --git a/extensions/css-language-features/server/extension.webpack.config.js b/extensions/css-language-features/server/extension.webpack.config.js
index 17dc2d39e34..68b850b3773 100644
--- a/extensions/css-language-features/server/extension.webpack.config.js
+++ b/extensions/css-language-features/server/extension.webpack.config.js
@@ -9,7 +9,6 @@
const withDefaults = require('../../shared.webpack.config');
const path = require('path');
-var webpack = require('webpack');
module.exports = withDefaults({
context: path.join(__dirname),
@@ -19,12 +18,5 @@ module.exports = withDefaults({
output: {
filename: 'cssServerMain.js',
path: path.join(__dirname, 'dist')
- },
- plugins: [
- new webpack.NormalModuleReplacementPlugin(
- /[/\\]vscode-languageserver[/\\]lib[/\\]files\.js/,
- require.resolve('./build/filesFillIn')
- ),
- new webpack.IgnorePlugin(/vertx/)
- ],
+ }
});
diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json
index 28f60c966d7..c6e8600d2ae 100644
--- a/extensions/css-language-features/server/package.json
+++ b/extensions/css-language-features/server/package.json
@@ -9,15 +9,15 @@
},
"main": "./out/cssServerMain",
"dependencies": {
- "vscode-css-languageservice": "^3.0.13-next.3",
- "vscode-languageserver": "^5.1.0"
+ "vscode-css-languageservice": "^4.0.3-next.1",
+ "vscode-languageserver": "^5.3.0-next.8"
},
"devDependencies": {
"@types/mocha": "2.2.33",
- "@types/node": "^8.10.25",
- "glob": "^7.1.2",
- "mocha": "^5.2.0",
- "mocha-junit-reporter": "^1.17.0",
+ "@types/node": "^10.14.8",
+ "glob": "^7.1.4",
+ "mocha": "^6.1.4",
+ "mocha-junit-reporter": "^1.23.0",
"mocha-multi-reporters": "^1.1.7"
},
"scripts": {
diff --git a/extensions/css-language-features/server/src/cssServerMain.ts b/extensions/css-language-features/server/src/cssServerMain.ts
index 8c516fb8598..0bfd886c310 100644
--- a/extensions/css-language-features/server/src/cssServerMain.ts
+++ b/extensions/css-language-features/server/src/cssServerMain.ts
@@ -7,13 +7,15 @@ import {
createConnection, IConnection, TextDocuments, InitializeParams, InitializeResult, ServerCapabilities, ConfigurationRequest, WorkspaceFolder
} from 'vscode-languageserver';
import URI from 'vscode-uri';
-import { TextDocument, CompletionList } from 'vscode-languageserver-types';
+import { TextDocument, CompletionList, Position } from 'vscode-languageserver-types';
+import { stat as fsStat } from 'fs';
-import { getCSSLanguageService, getSCSSLanguageService, getLESSLanguageService, LanguageSettings, LanguageService, Stylesheet } from 'vscode-css-languageservice';
+import { getCSSLanguageService, getSCSSLanguageService, getLESSLanguageService, LanguageSettings, LanguageService, Stylesheet, FileSystemProvider, FileType } from 'vscode-css-languageservice';
import { getLanguageModelCache } from './languageModelCache';
import { getPathCompletionParticipant } from './pathCompletion';
-import { formatError, runSafe } from './utils/runner';
+import { formatError, runSafe, runSafeAsync } from './utils/runner';
import { getDocumentContext } from './utils/documentContext';
+import { getDataProviders } from './customData';
export interface Settings {
css: LanguageSettings;
@@ -31,8 +33,7 @@ process.on('unhandledRejection', (e: any) => {
connection.console.error(formatError(`Unhandled exception`, e));
});
-// Create a simple text document manager. The text document manager
-// supports full document sync only
+// Create a text document manager.
const documents: TextDocuments = new TextDocuments();
// Make the text document manager listen on the connection
// for open, change and close text document events
@@ -50,6 +51,47 @@ let scopedSettingsSupport = false;
let foldingRangeLimit = Number.MAX_VALUE;
let workspaceFolders: WorkspaceFolder[];
+const languageServices: { [id: string]: LanguageService } = {};
+
+const fileSystemProvider: FileSystemProvider = {
+ stat(documentUri: string) {
+ const filePath = URI.parse(documentUri).fsPath;
+
+ return new Promise((c, e) => {
+ fsStat(filePath, (err, stats) => {
+ if (err) {
+ if (err.code === 'ENOENT') {
+ return c({
+ type: FileType.Unknown,
+ ctime: -1,
+ mtime: -1,
+ size: -1
+ });
+ } else {
+ return e(err);
+ }
+ }
+
+ let type = FileType.Unknown;
+ if (stats.isFile()) {
+ type = FileType.File;
+ } else if (stats.isDirectory) {
+ type = FileType.Directory;
+ } else if (stats.isSymbolicLink) {
+ type = FileType.SymbolicLink;
+ }
+
+ c({
+ type,
+ ctime: stats.ctime.getTime(),
+ mtime: stats.mtime.getTime(),
+ size: stats.size
+ });
+ });
+ });
+ }
+};
+
// After the server has started the client sends an initialize request. The server receives
// in the passed params the rootPath of the workspace plus the client capabilities.
connection.onInitialize((params: InitializeParams): InitializeResult => {
@@ -61,6 +103,9 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
}
}
+ const dataPaths: string[] = params.initializationOptions.dataPaths;
+ const customDataProviders = getDataProviders(dataPaths);
+
function getClientCapability(name: string, def: T) {
const keys = name.split('.');
let c: any = params.capabilities;
@@ -76,6 +121,10 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
scopedSettingsSupport = !!getClientCapability('workspace.configuration', false);
foldingRangeLimit = getClientCapability('textDocument.foldingRange.rangeLimit', Number.MAX_VALUE);
+ languageServices.css = getCSSLanguageService({ customDataProviders, fileSystemProvider, clientCapabilities: params.capabilities });
+ languageServices.scss = getSCSSLanguageService({ customDataProviders, fileSystemProvider, clientCapabilities: params.capabilities });
+ languageServices.less = getLESSLanguageService({ customDataProviders, fileSystemProvider, clientCapabilities: params.capabilities });
+
const capabilities: ServerCapabilities = {
// Tell the client that the server works in FULL text document sync mode
textDocumentSync: documents.syncKind,
@@ -91,17 +140,12 @@ connection.onInitialize((params: InitializeParams): InitializeResult => {
codeActionProvider: true,
renameProvider: true,
colorProvider: {},
- foldingRangeProvider: true
+ foldingRangeProvider: true,
+ selectionRangeProvider: true
};
return { capabilities };
});
-const languageServices: { [id: string]: LanguageService } = {
- css: getCSSLanguageService(),
- scss: getSCSSLanguageService(),
- less: getLESSLanguageService()
-};
-
function getLanguageService(document: TextDocument) {
let service = languageServices[document.languageId];
if (!service) {
@@ -253,13 +297,13 @@ connection.onDocumentHighlight((documentHighlightParams, token) => {
});
-connection.onDocumentLinks((documentLinkParams, token) => {
- return runSafe(() => {
+connection.onDocumentLinks(async (documentLinkParams, token) => {
+ return runSafeAsync(async () => {
const document = documents.get(documentLinkParams.textDocument.uri);
if (document) {
const documentContext = getDocumentContext(document.uri, workspaceFolders);
const stylesheet = stylesheets.get(document);
- return getLanguageService(document).findDocumentLinks(document, stylesheet, documentContext);
+ return await getLanguageService(document).findDocumentLinks2(document, stylesheet, documentContext);
}
return [];
}, [], `Error while computing document links for ${documentLinkParams.textDocument.uri}`, token);
@@ -331,5 +375,19 @@ connection.onFoldingRanges((params, token) => {
}, null, `Error while computing folding ranges for ${params.textDocument.uri}`, token);
});
+connection.onSelectionRanges((params, token) => {
+ return runSafe(() => {
+ const document = documents.get(params.textDocument.uri);
+ const positions: Position[] = params.positions;
+
+ if (document) {
+ const stylesheet = stylesheets.get(document);
+ return getLanguageService(document).getSelectionRanges(document, positions, stylesheet);
+ }
+ return [];
+ }, [], `Error while computing selection ranges for ${params.textDocument.uri}`, token);
+});
+
+
// Listen on the connection
connection.listen();
\ No newline at end of file
diff --git a/extensions/css-language-features/server/src/customData.ts b/extensions/css-language-features/server/src/customData.ts
new file mode 100644
index 00000000000..f173d884a2b
--- /dev/null
+++ b/extensions/css-language-features/server/src/customData.ts
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import { CSSDataV1, ICSSDataProvider } from 'vscode-css-languageservice';
+import * as fs from 'fs';
+
+export function getDataProviders(dataPaths: string[]): ICSSDataProvider[] {
+ const providers = dataPaths.map(p => {
+ if (fs.existsSync(p)) {
+ const data = parseCSSData(fs.readFileSync(p, 'utf-8'));
+ return {
+ provideProperties: () => data.properties || [],
+ provideAtDirectives: () => data.atDirectives || [],
+ providePseudoClasses: () => data.pseudoClasses || [],
+ providePseudoElements: () => data.pseudoElements || []
+ };
+ } else {
+ return {
+ provideProperties: () => [],
+ provideAtDirectives: () => [],
+ providePseudoClasses: () => [],
+ providePseudoElements: () => []
+ };
+ }
+ });
+
+ return providers;
+}
+
+function parseCSSData(source: string): CSSDataV1 {
+ let rawData: any;
+
+ try {
+ rawData = JSON.parse(source);
+ } catch (err) {
+ return {
+ version: 1
+ };
+ }
+
+ return {
+ version: 1,
+ properties: rawData.properties || [],
+ atDirectives: rawData.atDirectives || [],
+ pseudoClasses: rawData.pseudoClasses || [],
+ pseudoElements: rawData.pseudoElements || []
+ };
+}
diff --git a/extensions/css-language-features/server/src/pathCompletion.ts b/extensions/css-language-features/server/src/pathCompletion.ts
index 4d988a52da9..aafed82b513 100644
--- a/extensions/css-language-features/server/src/pathCompletion.ts
+++ b/extensions/css-language-features/server/src/pathCompletion.ts
@@ -154,10 +154,10 @@ function pathToReplaceRange(valueBeforeCursor: string, fullValue: string, fullVa
const valueAfterLastSlash = fullValue.slice(lastIndexOfSlash + 1);
const startPos = shiftPosition(fullValueRange.end, -valueAfterLastSlash.length);
// If whitespace exists, replace until it
- const whiteSpaceIndex = valueAfterLastSlash.indexOf(' ');
+ const whitespaceIndex = valueAfterLastSlash.indexOf(' ');
let endPos;
- if (whiteSpaceIndex !== -1) {
- endPos = shiftPosition(startPos, whiteSpaceIndex);
+ if (whitespaceIndex !== -1) {
+ endPos = shiftPosition(startPos, whitespaceIndex);
} else {
endPos = fullValueRange.end;
}
diff --git a/extensions/css-language-features/server/src/test/links.test.ts b/extensions/css-language-features/server/src/test/links.test.ts
new file mode 100644
index 00000000000..bce7a11bc8a
--- /dev/null
+++ b/extensions/css-language-features/server/src/test/links.test.ts
@@ -0,0 +1,79 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+import 'mocha';
+import * as assert from 'assert';
+import Uri from 'vscode-uri';
+import { resolve } from 'path';
+import { TextDocument, DocumentLink } from 'vscode-languageserver-types';
+import { WorkspaceFolder } from 'vscode-languageserver-protocol';
+import { getCSSLanguageService } from 'vscode-css-languageservice';
+import { getDocumentContext } from '../utils/documentContext';
+
+export interface ItemDescription {
+ offset: number;
+ value: string;
+ target: string;
+}
+
+suite('Links', () => {
+ const cssLanguageService = getCSSLanguageService();
+
+ let assertLink = function (links: DocumentLink[], expected: ItemDescription, document: TextDocument) {
+ let matches = links.filter(link => {
+ return document.offsetAt(link.range.start) === expected.offset;
+ });
+
+ assert.equal(matches.length, 1, `${expected.offset} should only existing once: Actual: ${links.map(l => document.offsetAt(l.range.start)).join(', ')}`);
+ let match = matches[0];
+ assert.equal(document.getText(match.range), expected.value);
+ assert.equal(match.target, expected.target);
+ };
+
+ function assertLinks(value: string, expected: ItemDescription[], testUri: string, workspaceFolders?: WorkspaceFolder[], lang: string = 'css'): void {
+ const offset = value.indexOf('|');
+ value = value.substr(0, offset) + value.substr(offset + 1);
+
+ const document = TextDocument.create(testUri, lang, 0, value);
+
+ if (!workspaceFolders) {
+ workspaceFolders = [{ name: 'x', uri: testUri.substr(0, testUri.lastIndexOf('/')) }];
+ }
+
+ const context = getDocumentContext(testUri, workspaceFolders);
+
+ const stylesheet = cssLanguageService.parseStylesheet(document);
+ let links = cssLanguageService.findDocumentLinks(document, stylesheet, context)!;
+
+ assert.equal(links.length, expected.length);
+
+ for (let item of expected) {
+ assertLink(links, item, document);
+ }
+ }
+
+ function getTestResource(path: string) {
+ return Uri.file(resolve(__dirname, '../../test/linksTestFixtures', path)).toString();
+ }
+
+ test('url links', function () {
+
+ let testUri = getTestResource('about.css');
+ let folders = [{ name: 'x', uri: getTestResource('') }];
+
+ assertLinks('html { background-image: url("hello.html|")',
+ [{ offset: 29, value: '"hello.html"', target: getTestResource('hello.html') }], testUri, folders
+ );
+ });
+
+ test('node module resolving', function () {
+
+ let testUri = getTestResource('about.css');
+ let folders = [{ name: 'x', uri: getTestResource('') }];
+
+ assertLinks('html { background-image: url("~foo/hello.html|")',
+ [{ offset: 29, value: '"~foo/hello.html"', target: getTestResource('node_modules/foo/hello.html') }], testUri, folders
+ );
+ });
+});
\ No newline at end of file
diff --git a/extensions/css-language-features/server/src/utils/documentContext.ts b/extensions/css-language-features/server/src/utils/documentContext.ts
index 9858ca84367..494ff395e9d 100644
--- a/extensions/css-language-features/server/src/utils/documentContext.ts
+++ b/extensions/css-language-features/server/src/utils/documentContext.ts
@@ -7,6 +7,27 @@ import { DocumentContext } from 'vscode-css-languageservice';
import { endsWith, startsWith } from '../utils/strings';
import * as url from 'url';
import { WorkspaceFolder } from 'vscode-languageserver';
+import URI from 'vscode-uri';
+import { join, dirname } from 'path';
+import { existsSync } from 'fs';
+
+function getModuleNameFromPath(path: string) {
+ // If a scoped module (starts with @) then get up until second instance of '/', otherwise get until first isntance of '/'
+ if (path[0] === '@') {
+ return path.substring(0, path.indexOf('/', path.indexOf('/') + 1));
+ }
+ return path.substring(0, path.indexOf('/'));
+}
+
+function resolvePathToModule(_moduleName: string, _relativeTo: string): string | undefined {
+ // resolve the module relative to the document. We can't use `require` here as the code is webpacked.
+ const documentFolder = dirname(URI.parse(_relativeTo).fsPath);
+ const packPath = join(documentFolder, 'node_modules', _moduleName, 'package.json');
+ if (existsSync(packPath)) {
+ return URI.file(packPath).toString();
+ }
+ return undefined;
+}
export function getDocumentContext(documentUri: string, workspaceFolders: WorkspaceFolder[]): DocumentContext {
function getRootFolder(): string | undefined {
@@ -32,6 +53,22 @@ export function getDocumentContext(documentUri: string, workspaceFolders: Worksp
}
}
}
+ // Following [css-loader](https://github.com/webpack-contrib/css-loader#url)
+ // and [sass-loader's](https://github.com/webpack-contrib/sass-loader#imports)
+ // convention, if an import path starts with ~ then use node module resolution
+ // *unless* it starts with "~/" as this refers to the user's home directory.
+ if (ref[0] === '~' && ref[1] !== '/') {
+ ref = ref.substring(1);
+ if (startsWith(base, 'file://')) {
+ const moduleName = getModuleNameFromPath(ref);
+ const modulePath = resolvePathToModule(moduleName, base);
+ if (modulePath) {
+ const pathWithinModule = ref.substring(moduleName.length + 1);
+ return url.resolve(modulePath, pathWithinModule);
+ }
+ }
+
+ }
return url.resolve(base, ref);
},
};
diff --git a/extensions/css-language-features/server/src/utils/runner.ts b/extensions/css-language-features/server/src/utils/runner.ts
index df024167dab..98a7a96f9aa 100644
--- a/extensions/css-language-features/server/src/utils/runner.ts
+++ b/extensions/css-language-features/server/src/utils/runner.ts
@@ -17,6 +17,27 @@ export function formatError(message: string, err: any): string {
return message;
}
+export function runSafeAsync(func: () => Thenable, errorVal: T, errorMessage: string, token: CancellationToken): Thenable> {
+ return new Promise>((resolve) => {
+ setImmediate(() => {
+ if (token.isCancellationRequested) {
+ resolve(cancelValue());
+ }
+ return func().then(result => {
+ if (token.isCancellationRequested) {
+ resolve(cancelValue());
+ return;
+ } else {
+ resolve(result);
+ }
+ }, e => {
+ console.error(formatError(errorMessage, e));
+ resolve(errorVal);
+ });
+ });
+ });
+}
+
export function runSafe(func: () => T, errorVal: T, errorMessage: string, token: CancellationToken): Thenable> {
return new Promise>((resolve) => {
setImmediate(() => {
diff --git a/extensions/css-language-features/server/test/linksTestFixtures/.gitignore b/extensions/css-language-features/server/test/linksTestFixtures/.gitignore
new file mode 100644
index 00000000000..d591cdfd50a
--- /dev/null
+++ b/extensions/css-language-features/server/test/linksTestFixtures/.gitignore
@@ -0,0 +1 @@
+!/node_modules
\ No newline at end of file
diff --git a/extensions/css-language-features/server/test/linksTestFixtures/node_modules/foo/package.json b/extensions/css-language-features/server/test/linksTestFixtures/node_modules/foo/package.json
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock
index 30c2fb6c62f..d93eec392c7 100644
--- a/extensions/css-language-features/server/yarn.lock
+++ b/extensions/css-language-features/server/yarn.lock
@@ -7,16 +7,45 @@
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.33.tgz#d79a0061ec270379f4d9e225f4096fb436669def"
integrity sha1-15oAYewnA3n02eIl9AlvtDZmne8=
-"@types/node@^8.10.25":
- version "8.10.25"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.25.tgz#801fe4e39372cef18f268db880a5fbfcf71adc7e"
- integrity sha512-WXvAXaknB0c2cJ7N44e1kUrVu5K90mSfPPaT5XxfuSMxEWva86EYIwxUZM3jNZ2P1CIC9e2z4WJqpAF69PQxeA==
+"@types/node@^10.14.8":
+ version "10.14.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.8.tgz#fe444203ecef1162348cd6deb76c62477b2cc6e9"
+ integrity sha512-I4+DbJEhLEg4/vIy/2gkWDvXBOOtPKV9EnLhYjMoqxcRW+TTZtUftkHktz/a8suoD5mUL7m6ReLrkPvSsCQQmw==
+
+ansi-colors@3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813"
+ integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
@@ -35,32 +64,78 @@ browser-stdout@1.3.1:
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+chalk@^2.0.1:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
charenc@~0.0.1:
version "0.0.2"
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
-commander@2.15.1:
- version "2.15.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
- integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
+cliui@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
+ integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+ wrap-ansi "^2.0.0"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+cross-spawn@^6.0.0:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
crypt@~0.0.1:
version "0.0.2"
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=
-debug@3.1.0, debug@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
- integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+debug@3.2.6:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
dependencies:
- ms "2.0.0"
+ ms "^2.1.1"
debug@^2.2.0:
version "2.6.9"
@@ -69,25 +144,143 @@ debug@^2.2.0:
dependencies:
ms "2.0.0"
+debug@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+define-properties@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
diff@3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
-escape-string-regexp@1.0.5:
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+end-of-stream@^1.1.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+ integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
+ dependencies:
+ once "^1.4.0"
+
+es-abstract@^1.5.1:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
+ integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+ dependencies:
+ es-to-primitive "^1.2.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-keys "^1.0.12"
+
+es-to-primitive@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
+ integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+find-up@3.0.0, find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+flat@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2"
+ integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==
+ dependencies:
+ is-buffer "~2.0.3"
+
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-glob@7.1.2, glob@^7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+get-caller-file@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
+ integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
+
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-stream@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+glob@7.1.3:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
+ integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.4:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@@ -106,10 +299,22 @@ has-flag@^3.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-he@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
- integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+ integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+
+has@^1.0.1, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+he@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
inflight@^1.0.4:
version "1.0.6"
@@ -124,16 +329,114 @@ inherits@2:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+invert-kv@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
+ integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
+
is-buffer@~1.1.1:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+is-buffer@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725"
+ integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==
+
+is-callable@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+ integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+ dependencies:
+ has "^1.0.1"
+
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-symbol@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
+ integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
+ dependencies:
+ has-symbols "^1.0.0"
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+js-yaml@3.13.1:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+lcid@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
+ integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
+ dependencies:
+ invert-kv "^2.0.0"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
lodash@^4.16.4:
version "4.17.10"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==
+lodash@^4.17.11:
+ version "4.17.11"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
+ integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
+
+log-symbols@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
+map-age-cleaner@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
+ integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
+ dependencies:
+ p-defer "^1.0.0"
+
md5@^2.1.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
@@ -143,6 +446,20 @@ md5@^2.1.0:
crypt "~0.0.1"
is-buffer "~1.1.1"
+mem@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
+ integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
+ dependencies:
+ map-age-cleaner "^0.1.1"
+ mimic-fn "^2.0.0"
+ p-is-promise "^2.0.0"
+
+mimic-fn@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
minimatch@3.0.4, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
@@ -162,10 +479,10 @@ mkdirp@0.5.1, mkdirp@~0.5.1:
dependencies:
minimist "0.0.8"
-mocha-junit-reporter@^1.17.0:
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.17.0.tgz#2e5149ed40fc5d2e3ca71e42db5ab1fec9c6d85c"
- integrity sha1-LlFJ7UD8XS48px5C21qx/snG2Fw=
+mocha-junit-reporter@^1.23.0:
+ version "1.23.0"
+ resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.23.0.tgz#c5ad7f10b5aa9a7cc6e169b6bf15baf2700266ca"
+ integrity sha512-pmpnEO4iDTmLfrT2RKqPsc5relG4crnDSGmXPuGogdda27A7kLujDNJV4EbTbXlVBCZXggN9rQYPEWMkOv4AAA==
dependencies:
debug "^2.2.0"
md5 "^2.1.0"
@@ -181,40 +498,251 @@ mocha-multi-reporters@^1.1.7:
debug "^3.1.0"
lodash "^4.16.4"
-mocha@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6"
- integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==
+mocha@^6.1.4:
+ version "6.1.4"
+ resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.1.4.tgz#e35fada242d5434a7e163d555c705f6875951640"
+ integrity sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==
dependencies:
+ ansi-colors "3.2.3"
browser-stdout "1.3.1"
- commander "2.15.1"
- debug "3.1.0"
+ debug "3.2.6"
diff "3.5.0"
escape-string-regexp "1.0.5"
- glob "7.1.2"
+ find-up "3.0.0"
+ glob "7.1.3"
growl "1.10.5"
- he "1.1.1"
+ he "1.2.0"
+ js-yaml "3.13.1"
+ log-symbols "2.2.0"
minimatch "3.0.4"
mkdirp "0.5.1"
- supports-color "5.4.0"
+ ms "2.1.1"
+ node-environment-flags "1.0.5"
+ object.assign "4.1.0"
+ strip-json-comments "2.0.1"
+ supports-color "6.0.0"
+ which "1.3.1"
+ wide-align "1.1.3"
+ yargs "13.2.2"
+ yargs-parser "13.0.0"
+ yargs-unparser "1.5.0"
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-once@^1.3.0:
+ms@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+ms@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+node-environment-flags@1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a"
+ integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==
+ dependencies:
+ object.getownpropertydescriptors "^2.0.3"
+ semver "^5.7.0"
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+object-keys@^1.0.11, object-keys@^1.0.12:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object.assign@4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
+object.getownpropertydescriptors@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
+ integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.5.1"
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
+os-locale@^3.0.0, os-locale@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
+ integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
+ dependencies:
+ execa "^1.0.0"
+ lcid "^2.0.0"
+ mem "^4.0.0"
+
+p-defer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
+ integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-is-promise@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
+ integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
+
+p-limit@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
+ integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-main-filename@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+ integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+semver@^5.5.0, semver@^5.7.0:
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
+ integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+
+set-blocking@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+signal-exit@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
strip-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
@@ -222,57 +750,120 @@ strip-ansi@^4.0.0:
dependencies:
ansi-regex "^3.0.0"
-supports-color@5.4.0:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
- integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==
+strip-ansi@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-json-comments@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+supports-color@6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a"
+ integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==
dependencies:
has-flag "^3.0.0"
-vscode-css-languageservice@^3.0.13-next.3:
- version "3.0.13-next.3"
- resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-3.0.13-next.3.tgz#b9e6f253cace52fbb749d2fe194ae4b196f3543e"
- integrity sha512-7+7JddZRt8zFRLbqygxJw+GHtbQ5o2YvgEFvi4ixvbUAX6KlY3Yw6CgUUbg9dmBla7h+GbtoDjwiLFV6Oy+SBQ==
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
- vscode-languageserver-types "^3.13.0"
- vscode-nls "^4.0.0"
+ has-flag "^3.0.0"
-vscode-jsonrpc@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9"
- integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==
-
-vscode-languageserver-protocol@3.13.0:
- version "3.13.0"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.13.0.tgz#710d8e42119bb3affb1416e1e104bd6b4d503595"
- integrity sha512-2ZGKwI+P2ovQll2PGAp+2UfJH+FK9eait86VBUdkPd9HRlm8e58aYT9pV/NYanHOcp3pL6x2yTLVCFMcTer0mg==
+vscode-css-languageservice@^4.0.3-next.1:
+ version "4.0.3-next.1"
+ resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.0.3-next.1.tgz#e89d01ce0d79b3e6c2642f5e3ad73cb8160d38d9"
+ integrity sha512-Zrm5TeraVUJ8vRikWhFt259dQu+WK+Ie3K5UA8BB4kqcanoM+1mcnIt8fPkTXlZLbiEWElrkJ9yuYbDNkufeBg==
dependencies:
- vscode-jsonrpc "^4.0.0"
- vscode-languageserver-types "3.13.0"
+ vscode-languageserver-types "^3.15.0-next.2"
+ vscode-nls "^4.1.1"
+ vscode-uri "^2.0.3"
-vscode-languageserver-types@3.13.0, vscode-languageserver-types@^3.13.0:
- version "3.13.0"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz#b704b024cef059f7b326611c99b9c8753c0a18b4"
- integrity sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA==
+vscode-jsonrpc@^4.1.0-next.2:
+ version "4.1.0-next.2"
+ resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.1.0-next.2.tgz#3bd318910a48e631742b290975386e3dae685be3"
+ integrity sha512-GsBLjP9DxQ42yl1mW9GEIlnSc0+R8mfzhaebwmmTPEJjezD5SPoAo3DFrIAFZha9yvQ1nzZfZlhtVpGQmgxtXg==
-vscode-languageserver@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-5.1.0.tgz#012a28f154cc7a848c443d217894942e4c3eeb39"
- integrity sha512-CIsrgx2Y5VHS317g/HwkSTWYBIQmy0DwEyZPmB2pEpVOhYFwVsYpbiJwHIIyLQsQtmRaO4eA2xM8KPjNSdXpBw==
+vscode-languageserver-protocol@^3.15.0-next.6:
+ version "3.15.0-next.6"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.6.tgz#a8aeb7e7dd65da8216b386db59494cdfd3215d92"
+ integrity sha512-/yDpYlWyNs26mM23mT73xmOFsh1iRfgZfBdHmfAxwDKwpQKLoOSqVidtYfxlK/pD3IEKGcAVnT4WXTsguxxAMQ==
dependencies:
- vscode-languageserver-protocol "3.13.0"
+ vscode-jsonrpc "^4.1.0-next.2"
+ vscode-languageserver-types "^3.15.0-next.2"
+
+vscode-languageserver-types@^3.15.0-next.2:
+ version "3.15.0-next.2"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.2.tgz#a0601332cdaafac21931f497bb080cfb8d73f254"
+ integrity sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ==
+
+vscode-languageserver@^5.3.0-next.8:
+ version "5.3.0-next.8"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-5.3.0-next.8.tgz#12a4adf60374dbb93e153e08bdca5525f9b2029f"
+ integrity sha512-6vUb96wsRfrFqndril3gct/FBCSc24OxFZ2iz7kuEuXvLaIcEVOcSZIqQK8oFN7PdbAIaa9nnIpKSy4Yd15cIw==
+ dependencies:
+ vscode-languageserver-protocol "^3.15.0-next.6"
+ vscode-textbuffer "^1.0.0"
vscode-uri "^1.0.6"
-vscode-nls@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.0.0.tgz#4001c8a6caba5cedb23a9c5ce1090395c0e44002"
- integrity sha512-qCfdzcH+0LgQnBpZA53bA32kzp9rpq/f66Som577ObeuDlFIrtbEJ+A/+CCxjIh4G8dpJYNCKIsxpRAHIfsbNw==
+vscode-nls@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.1.tgz#f9916b64e4947b20322defb1e676a495861f133c"
+ integrity sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==
+
+vscode-textbuffer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-textbuffer/-/vscode-textbuffer-1.0.0.tgz#1faee638c8e0e4131c8d5c353993a1874acda086"
+ integrity sha512-zPaHo4urgpwsm+PrJWfNakolRpryNja18SUip/qIIsfhuEqEIPEXMxHOlFPjvDC4JgTaimkncNW7UMXRJTY6ow==
vscode-uri@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.6.tgz#6b8f141b0bbc44ad7b07e94f82f168ac7608ad4d"
integrity sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==
+vscode-uri@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.3.tgz#25e5f37f552fbee3cec7e5f80cef8469cefc6543"
+ integrity sha512-4D3DI3F4uRy09WNtDGD93H9q034OHImxiIcSq664Hq1Y1AScehlP3qqZyTkX/RWxeu0MRMHGkrxYqm2qlDF/aw==
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+which@1.3.1, which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
+wrap-ansi@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
+ integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -282,3 +873,76 @@ xml@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5"
integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=
+
+"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+ integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+
+yargs-parser@13.0.0:
+ version "13.0.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b"
+ integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^11.1.1:
+ version "11.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
+ integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^13.0.0:
+ version "13.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
+ integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-unparser@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.5.0.tgz#f2bb2a7e83cbc87bb95c8e572828a06c9add6e0d"
+ integrity sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==
+ dependencies:
+ flat "^4.1.0"
+ lodash "^4.17.11"
+ yargs "^12.0.5"
+
+yargs@13.2.2:
+ version "13.2.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993"
+ integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==
+ dependencies:
+ cliui "^4.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ os-locale "^3.1.0"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.0.0"
+
+yargs@^12.0.5:
+ version "12.0.5"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
+ integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
+ dependencies:
+ cliui "^4.0.0"
+ decamelize "^1.2.0"
+ find-up "^3.0.0"
+ get-caller-file "^1.0.1"
+ os-locale "^3.0.0"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^2.0.0"
+ which-module "^2.0.0"
+ y18n "^3.2.1 || ^4.0.0"
+ yargs-parser "^11.1.1"
diff --git a/extensions/css-language-features/yarn.lock b/extensions/css-language-features/yarn.lock
index d626f86f433..48f16a42fe5 100644
--- a/extensions/css-language-features/yarn.lock
+++ b/extensions/css-language-features/yarn.lock
@@ -2,10 +2,10 @@
# yarn lockfile v1
-"@types/node@^8.10.25":
- version "8.10.25"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.25.tgz#801fe4e39372cef18f268db880a5fbfcf71adc7e"
- integrity sha512-WXvAXaknB0c2cJ7N44e1kUrVu5K90mSfPPaT5XxfuSMxEWva86EYIwxUZM3jNZ2P1CIC9e2z4WJqpAF69PQxeA==
+"@types/node@^10.14.8":
+ version "10.14.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.8.tgz#fe444203ecef1162348cd6deb76c62477b2cc6e9"
+ integrity sha512-I4+DbJEhLEg4/vIy/2gkWDvXBOOtPKV9EnLhYjMoqxcRW+TTZtUftkHktz/a8suoD5mUL7m6ReLrkPvSsCQQmw==
balanced-match@^1.0.0:
version "1.0.0"
@@ -162,36 +162,36 @@ supports-color@5.4.0:
dependencies:
has-flag "^3.0.0"
-vscode-jsonrpc@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9"
- integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==
+vscode-jsonrpc@^4.1.0-next.2:
+ version "4.1.0-next.2"
+ resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.1.0-next.2.tgz#3bd318910a48e631742b290975386e3dae685be3"
+ integrity sha512-GsBLjP9DxQ42yl1mW9GEIlnSc0+R8mfzhaebwmmTPEJjezD5SPoAo3DFrIAFZha9yvQ1nzZfZlhtVpGQmgxtXg==
-vscode-languageclient@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-5.1.0.tgz#650ab0dc9fd0daaade058a8471aaff5bc3f9580e"
- integrity sha512-Z95Kps8UqD4o17HE3uCkZuvenOsxHVH46dKmaGVpGixEFZigPaVuVxLM/JWeIY9aRenoC0ZD9CK1O7L4jpffKg==
+vscode-languageclient@^5.3.0-next.6:
+ version "5.3.0-next.6"
+ resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-5.3.0-next.6.tgz#35e74882781158e8b111911c0953869d3df08777"
+ integrity sha512-DxT8+gkenjCjJV6ArcP75/AQfx6HP6m6kHIbacPCpffMeoE1YMLKj6ZixA9J87yr0fMtBmqumLmDeGe7MIF2bw==
dependencies:
semver "^5.5.0"
- vscode-languageserver-protocol "3.13.0"
+ vscode-languageserver-protocol "^3.15.0-next.6"
-vscode-languageserver-protocol@3.13.0:
- version "3.13.0"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.13.0.tgz#710d8e42119bb3affb1416e1e104bd6b4d503595"
- integrity sha512-2ZGKwI+P2ovQll2PGAp+2UfJH+FK9eait86VBUdkPd9HRlm8e58aYT9pV/NYanHOcp3pL6x2yTLVCFMcTer0mg==
+vscode-languageserver-protocol@^3.15.0-next.6:
+ version "3.15.0-next.6"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.15.0-next.6.tgz#a8aeb7e7dd65da8216b386db59494cdfd3215d92"
+ integrity sha512-/yDpYlWyNs26mM23mT73xmOFsh1iRfgZfBdHmfAxwDKwpQKLoOSqVidtYfxlK/pD3IEKGcAVnT4WXTsguxxAMQ==
dependencies:
- vscode-jsonrpc "^4.0.0"
- vscode-languageserver-types "3.13.0"
+ vscode-jsonrpc "^4.1.0-next.2"
+ vscode-languageserver-types "^3.15.0-next.2"
-vscode-languageserver-types@3.13.0:
- version "3.13.0"
- resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz#b704b024cef059f7b326611c99b9c8753c0a18b4"
- integrity sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA==
+vscode-languageserver-types@^3.15.0-next.2:
+ version "3.15.0-next.2"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.2.tgz#a0601332cdaafac21931f497bb080cfb8d73f254"
+ integrity sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ==
-vscode-nls@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.0.0.tgz#4001c8a6caba5cedb23a9c5ce1090395c0e44002"
- integrity sha512-qCfdzcH+0LgQnBpZA53bA32kzp9rpq/f66Som577ObeuDlFIrtbEJ+A/+CCxjIh4G8dpJYNCKIsxpRAHIfsbNw==
+vscode-nls@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.1.tgz#f9916b64e4947b20322defb1e676a495861f133c"
+ integrity sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==
wrappy@1:
version "1.0.2"
diff --git a/extensions/css/.vscodeignore b/extensions/css/.vscodeignore
index 0a622e7e300..52ebcbd68b2 100644
--- a/extensions/css/.vscodeignore
+++ b/extensions/css/.vscodeignore
@@ -1,2 +1,3 @@
test/**
cgmanifest.json
+.vscode
\ No newline at end of file
diff --git a/extensions/css/cgmanifest.json b/extensions/css/cgmanifest.json
index 182b3ec7a66..a47fef967ec 100644
--- a/extensions/css/cgmanifest.json
+++ b/extensions/css/cgmanifest.json
@@ -4,14 +4,14 @@
"component": {
"type": "git",
"git": {
- "name": "atom/language-css",
- "repositoryUrl": "https://github.com/atom/language-css",
- "commitHash": "7e06c88b89218fe6e8eba77fb674152f1cea0b10"
+ "name": "octref/language-css",
+ "repositoryUrl": "https://github.com/octref/language-css",
+ "commitHash": "377734aad976be88a425aab5667784f3f71ea7e5"
}
},
"license": "MIT",
- "description": "The file syntaxes/css.tmLanguage.json was derived from the Atom package https://github.com/atom/language-css which was originally converted from the TextMate bundle https://github.com/textmate/css.tmbundle.",
- "version": "0.0.0"
+ "description": "The file syntaxes/css.tmLanguage.json was derived from https://github.com/octref/language-css which was derived from the Atom package https://github.com/atom/language-css which was originally converted from the TextMate bundle https://github.com/textmate/css.tmbundle.",
+ "version": "0.42.11"
}
],
"version": 1
diff --git a/extensions/css/package.json b/extensions/css/package.json
index 13f737e92fc..117f759dd9d 100644
--- a/extensions/css/package.json
+++ b/extensions/css/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": {
"vscode": "0.10.x"
},
diff --git a/extensions/css/syntaxes/css.tmLanguage.json b/extensions/css/syntaxes/css.tmLanguage.json
index 488c8f12c30..8dbdf1f7413 100644
--- a/extensions/css/syntaxes/css.tmLanguage.json
+++ b/extensions/css/syntaxes/css.tmLanguage.json
@@ -4,7 +4,7 @@
"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/octref/language-css/commit/7e06c88b89218fe6e8eba77fb674152f1cea0b10",
+ "version": "https://github.com/octref/language-css/commit/377734aad976be88a425aab5667784f3f71ea7e5",
"name": "CSS",
"scopeName": "source.css",
"patterns": [
@@ -606,8 +606,32 @@
]
},
{
- "begin": "(?i)(?=@[\\w-]+(\\s|\\(|{|;|/\\*|$))",
- "end": "(?<=}|;)(?!\\G)",
+ "begin": "(?i)(?=@[\\w-]+[^;]+;s*$)",
+ "end": "(?<=;)(?!\\G)",
+ "patterns": [
+ {
+ "begin": "(?i)\\G(@)[\\w-]+",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.at-rule.css"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "name": "meta.at-rule.header.css"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?=@[\\w-]+(\\s|\\(|{|/\\*|$))",
+ "end": "(?<=})(?!\\G)",
"patterns": [
{
"begin": "(?i)\\G(@)[\\w-]+",
@@ -1397,7 +1421,7 @@
"property-names": {
"patterns": [
{
- "match": "(?xi) (?();
+
+ private hasFired = false;
+ private shellPid?: number;
+ private regexp: RegExp;
+ private disposables: vscode.Disposable[] = [];
+
+ static start(session: vscode.DebugSession): ServerReadyDetector | undefined {
+ if (session.configuration.serverReadyAction) {
+ let detector = ServerReadyDetector.detectors.get(session);
+ if (!detector) {
+ detector = new ServerReadyDetector(session);
+ ServerReadyDetector.detectors.set(session, detector);
+ }
+ return detector;
+ }
+ return undefined;
+ }
+
+ static stop(session: vscode.DebugSession): void {
+ let detector = ServerReadyDetector.detectors.get(session);
+ if (detector) {
+ ServerReadyDetector.detectors.delete(session);
+ detector.dispose();
+ }
+ }
+
+ static rememberShellPid(session: vscode.DebugSession, pid: number) {
+ let detector = ServerReadyDetector.detectors.get(session);
+ if (detector) {
+ detector.shellPid = pid;
+ }
+ }
+
+ private constructor(private session: vscode.DebugSession) {
+ super(() => this.internalDispose());
+
+ this.regexp = new RegExp(session.configuration.serverReadyAction.pattern || PATTERN, 'i');
+ }
+
+ private internalDispose() {
+ this.disposables.forEach(d => d.dispose());
+ this.disposables = [];
+ }
+
+ async trackTerminals() {
+
+ let terminals: vscode.Terminal[] = [];
+
+ // either find the terminal where the debug is started with "runInTerminal" or use all terminals
+ for (let terminal of vscode.window.terminals) {
+ if (!this.shellPid || await terminal.processId === this.shellPid) {
+ terminals.push(terminal);
+ }
+ }
+ this.shellPid = undefined;
+
+ terminals.forEach(terminal => {
+ this.disposables.push(terminal.onDidWriteData(s => {
+ this.detectPattern(s);
+ }));
+ });
+ }
+
+ detectPattern(s: string): void {
+
+ if (!this.hasFired) {
+ const matches = this.regexp.exec(s);
+ if (matches && matches.length >= 1) {
+ this.openExternalWithString(this.session, matches.length > 1 ? matches[1] : '');
+ this.hasFired = true;
+ this.internalDispose();
+ }
+ }
+ }
+
+ private openExternalWithString(session: vscode.DebugSession, captureString: string) {
+
+ const args: ServerReadyAction = session.configuration.serverReadyAction;
+ const format = args.uriFormat || URI_FORMAT;
+
+ if (captureString === '') {
+ // nothing captured by reg exp -> use the uriFormat as the target url without substitution
+ // verify that format does not contain '%s'
+ if (format.indexOf('%s') >= 0) {
+ const errMsg = localize('server.ready.nocapture.error', "Format uri ('{0}') uses a substitution placeholder but pattern did not capture anything.", format);
+ vscode.window.showErrorMessage(errMsg, { modal: true }).then(_ => undefined);
+ return;
+ }
+ captureString = format;
+ } else if (/^[0-9]+$/.test(captureString)) {
+ // looks like a port number -> use the uriFormat and substitute a single "%s" with the port
+ // verify that format only contains a single '%s'
+ const s = format.split('%s');
+ if (s.length !== 2) {
+ const errMsg = localize('server.ready.placeholder.error', "Format uri ('{0}') must contain exactly one substitution placeholder.", format);
+ vscode.window.showErrorMessage(errMsg, { modal: true }).then(_ => undefined);
+ return;
+ }
+ captureString = util.format(format, captureString);
+ } else {
+ // use the string as is
+ }
+
+ this.openExternalWithUri(session, captureString);
+ }
+
+ private openExternalWithUri(session: vscode.DebugSession, uri: string) {
+
+ const args: ServerReadyAction = session.configuration.serverReadyAction;
+ switch (args.action || 'openExternally') {
+ case 'openExternally':
+ vscode.env.openExternal(vscode.Uri.parse(uri));
+ break;
+ case 'debugWithChrome':
+
+ if (vscode.env.remoteName === 'wsl' || !!vscode.extensions.getExtension('msjsdiag.debugger-for-chrome')) {
+ vscode.debug.startDebugging(session.workspaceFolder, {
+ type: 'chrome',
+ name: 'Chrome Debug',
+ request: 'launch',
+ url: uri,
+ webRoot: args.webRoot || WEB_ROOT
+ }, session);
+ } else {
+ const errMsg = localize('server.ready.chrome.not.installed', "The action '{0}' requires the '{1}' extension.", 'debugWithChrome', 'Debugger for Chrome');
+ vscode.window.showErrorMessage(errMsg, { modal: true }).then(_ => undefined);
+ }
+ break;
+ default:
+ // not supported
+ break;
+ }
+ }
+}
+
+export function activate(context: vscode.ExtensionContext) {
+
+ context.subscriptions.push(vscode.debug.onDidChangeActiveDebugSession(session => {
+ if (session && session.configuration.serverReadyAction) {
+ const detector = ServerReadyDetector.start(session);
+ if (detector) {
+ detector.trackTerminals();
+ }
+ }
+ }));
+
+ context.subscriptions.push(vscode.debug.onDidTerminateDebugSession(session => {
+ ServerReadyDetector.stop(session);
+ }));
+
+ const trackers = new Set();
+
+ context.subscriptions.push(vscode.debug.registerDebugConfigurationProvider('*', {
+ resolveDebugConfiguration(_folder: vscode.WorkspaceFolder | undefined, debugConfiguration: vscode.DebugConfiguration) {
+ if (debugConfiguration.type && debugConfiguration.serverReadyAction) {
+ if (!trackers.has(debugConfiguration.type)) {
+ trackers.add(debugConfiguration.type);
+ startTrackerForType(context, debugConfiguration.type);
+ }
+ }
+ return debugConfiguration;
+ }
+ }));
+}
+
+function startTrackerForType(context: vscode.ExtensionContext, type: string) {
+
+ // scan debug console output for a PORT message
+ context.subscriptions.push(vscode.debug.registerDebugAdapterTrackerFactory(type, {
+ createDebugAdapterTracker(session: vscode.DebugSession) {
+ const detector = ServerReadyDetector.start(session);
+ if (detector) {
+ let runInTerminalRequestSeq: number | undefined;
+ return {
+ onDidSendMessage: m => {
+ if (m.type === 'event' && m.event === 'output' && m.body) {
+ switch (m.body.category) {
+ case 'console':
+ case 'stderr':
+ case 'stdout':
+ if (m.body.output) {
+ detector.detectPattern(m.body.output);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ if (m.type === 'request' && m.command === 'runInTerminal' && m.arguments) {
+ if (m.arguments.kind === 'integrated') {
+ runInTerminalRequestSeq = m.seq; // remember this to find matching response
+ }
+ }
+ },
+ onWillReceiveMessage: m => {
+ if (runInTerminalRequestSeq && m.type === 'response' && m.command === 'runInTerminal' && m.body && runInTerminalRequestSeq === m.request_seq) {
+ runInTerminalRequestSeq = undefined;
+ ServerReadyDetector.rememberShellPid(session, m.body.shellProcessId);
+ }
+ }
+ };
+ }
+ return undefined;
+ }
+ }));
+}
diff --git a/extensions/debug-server-ready/src/typings/ref.d.ts b/extensions/debug-server-ready/src/typings/ref.d.ts
new file mode 100644
index 00000000000..954bab971e3
--- /dev/null
+++ b/extensions/debug-server-ready/src/typings/ref.d.ts
@@ -0,0 +1,8 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+///
+///
+///
diff --git a/extensions/debug-server-ready/tsconfig.json b/extensions/debug-server-ready/tsconfig.json
new file mode 100644
index 00000000000..f9b780a0e1c
--- /dev/null
+++ b/extensions/debug-server-ready/tsconfig.json
@@ -0,0 +1,10 @@
+{
+ "extends": "../shared.tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./out",
+ "downlevelIteration": true
+ },
+ "include": [
+ "src/**/*"
+ ]
+}
\ No newline at end of file
diff --git a/extensions/debug-server-ready/yarn.lock b/extensions/debug-server-ready/yarn.lock
new file mode 100644
index 00000000000..e6247e29255
--- /dev/null
+++ b/extensions/debug-server-ready/yarn.lock
@@ -0,0 +1,13 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@types/node@^10.14.8":
+ version "10.14.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.8.tgz#fe444203ecef1162348cd6deb76c62477b2cc6e9"
+ integrity sha512-I4+DbJEhLEg4/vIy/2gkWDvXBOOtPKV9EnLhYjMoqxcRW+TTZtUftkHktz/a8suoD5mUL7m6ReLrkPvSsCQQmw==
+
+vscode-nls@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.0.0.tgz#4001c8a6caba5cedb23a9c5ce1090395c0e44002"
+ integrity sha512-qCfdzcH+0LgQnBpZA53bA32kzp9rpq/f66Som577ObeuDlFIrtbEJ+A/+CCxjIh4G8dpJYNCKIsxpRAHIfsbNw==
diff --git a/extensions/docker/cgmanifest.json b/extensions/docker/cgmanifest.json
index 844d3120d3c..dbbf43607ee 100644
--- a/extensions/docker/cgmanifest.json
+++ b/extensions/docker/cgmanifest.json
@@ -15,4 +15,4 @@
}
],
"version": 1
-}
+}
\ No newline at end of file
diff --git a/extensions/docker/package.json b/extensions/docker/package.json
index 41df24723fa..f5f2f795fc4 100644
--- a/extensions/docker/package.json
+++ b/extensions/docker/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": { "vscode": "*" },
"scripts": {
"update-grammar": "node ../../build/npm/update-grammar.js moby/moby contrib/syntax/textmate/Docker.tmbundle/Syntaxes/Dockerfile.tmLanguage ./syntaxes/docker.tmLanguage.json"
diff --git a/extensions/emmet/.vscode/launch.json b/extensions/emmet/.vscode/launch.json
index 8a89122dafb..0b693f921ee 100644
--- a/extensions/emmet/.vscode/launch.json
+++ b/extensions/emmet/.vscode/launch.json
@@ -1,21 +1,31 @@
{
- // Use IntelliSense to learn about possible Node.js debug attributes.
- // Hover to view descriptions of existing attributes.
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
- "version": "0.2.0",
- "configurations": [
- {
- "type": "extensionHost",
- "request": "launch",
- "name": "Launch Extension",
- "runtimeExecutable": "${execPath}",
- "args": [
- "--extensionDevelopmentPath=${workspaceFolder}"
- ],
- "sourceMaps": true,
- "outFiles": [
- "${workspaceFolder}/out/**/*.js"
- ]
- }
- ]
-}
\ No newline at end of file
+ // Use IntelliSense to learn about possible Node.js debug attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "extensionHost",
+ "request": "launch",
+ "name": "Launch Extension",
+ "runtimeExecutable": "${execPath}",
+ "args": ["--extensionDevelopmentPath=${workspaceFolder}"],
+ "sourceMaps": true,
+ "outFiles": ["${workspaceFolder}/out/**/*.js"]
+ },
+ {
+ "type": "extensionHost",
+ "request": "launch",
+ "name": "Launch Tests",
+ "runtimeExecutable": "${execPath}",
+ "args": [
+ "--extensionDevelopmentPath=${workspaceFolder}",
+ "--extensionTestsPath=${workspaceFolder}/out/test",
+ "--disable-extensions",
+ "--skip-getting-started",
+ ],
+ "sourceMaps": true,
+ "outFiles": ["${workspaceFolder}/out/**/*.js"]
+ }
+ ]
+}
diff --git a/extensions/emmet/.vscodeignore b/extensions/emmet/.vscodeignore
index 50d0ee883e6..573d91ebe6b 100644
--- a/extensions/emmet/.vscodeignore
+++ b/extensions/emmet/.vscodeignore
@@ -6,3 +6,4 @@ extension.webpack.config.js
CONTRIBUTING.md
cgmanifest.json
yarn.lock
+.vscode
\ No newline at end of file
diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json
index 8733fbdb5c9..d88c3717ab3 100644
--- a/extensions/emmet/package.json
+++ b/extensions/emmet/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": {
"vscode": "^1.13.0"
},
@@ -434,10 +435,12 @@
}
},
"scripts": {
- "compile": "gulp compile-extension:emmet"
+ "watch": "gulp watch-extension:emmet",
+ "compile": "gulp compile-extension:emmet",
+ "deps": "yarn add vscode-emmet-helper"
},
"devDependencies": {
- "@types/node": "8.0.33",
+ "@types/node": "^10.14.8",
"mocha-junit-reporter": "^1.17.0",
"mocha-multi-reporters": "^1.1.7",
"vscode": "1.0.1"
@@ -447,6 +450,7 @@
"@emmetio/html-matcher": "^0.3.3",
"@emmetio/math-expression": "^0.1.1",
"image-size": "^0.5.2",
- "vscode-emmet-helper": "^1.2.12"
+ "vscode-emmet-helper": "^1.2.15",
+ "vscode-html-languageservice": "^3.0.3"
}
}
diff --git a/extensions/emmet/src/abbreviationActions.ts b/extensions/emmet/src/abbreviationActions.ts
index dbde660d9e5..9508d3a6a0b 100644
--- a/extensions/emmet/src/abbreviationActions.ts
+++ b/extensions/emmet/src/abbreviationActions.ts
@@ -7,8 +7,8 @@ import * as vscode from 'vscode';
import { Node, HtmlNode, Rule, Property, Stylesheet } from 'EmmetNode';
import { getEmmetHelper, getNode, getInnerRange, getMappingForIncludedLanguages, parseDocument, validate, getEmmetConfiguration, isStyleSheet, getEmmetMode, parsePartialStylesheet, isStyleAttribute, getEmbeddedCssNodeIfAny, allowedMimeTypesInScriptTag } from './util';
-const trimRegex = /[\u00a0]*[\d|#|\-|\*|\u2022]+\.?/;
-const hexColorRegex = /^#[\d,a-f,A-F]{0,6}$/;
+const trimRegex = /[\u00a0]*[\d#\-\*\u2022]+\.?/;
+const hexColorRegex = /^#[\da-fA-F]{0,6}$/;
const inlineElements = ['a', 'abbr', 'acronym', 'applet', 'b', 'basefont', 'bdo',
'big', 'br', 'button', 'cite', 'code', 'del', 'dfn', 'em', 'font', 'i',
'iframe', 'img', 'input', 'ins', 'kbd', 'label', 'map', 'object', 'q',
@@ -54,7 +54,11 @@ function doWrapping(individualLines: boolean, args: any) {
return;
}
}
- const syntax = 'html';
+ args = args || {};
+ if (!args['language']) {
+ args['language'] = editor.document.languageId;
+ }
+ const syntax = getSyntaxFromArgs(args) || 'html';
const rootNode = parseDocument(editor.document, false);
let inPreview = false;
@@ -80,8 +84,8 @@ function doWrapping(individualLines: boolean, args: any) {
const firstLineOfSelection = editor.document.lineAt(rangeToReplace.start).text.substr(rangeToReplace.start.character);
const matches = firstLineOfSelection.match(/^(\s*)/);
- const extraWhiteSpaceSelected = matches ? matches[1].length : 0;
- rangeToReplace = new vscode.Range(rangeToReplace.start.line, rangeToReplace.start.character + extraWhiteSpaceSelected, rangeToReplace.end.line, rangeToReplace.end.character);
+ const extraWhitespaceSelected = matches ? matches[1].length : 0;
+ rangeToReplace = new vscode.Range(rangeToReplace.start.line, rangeToReplace.start.character + extraWhitespaceSelected, rangeToReplace.end.line, rangeToReplace.end.character);
let textToWrapInPreview: string[];
let textToReplace = editor.document.getText(rangeToReplace);
@@ -90,8 +94,8 @@ function doWrapping(individualLines: boolean, args: any) {
} else {
const wholeFirstLine = editor.document.lineAt(rangeToReplace.start).text;
const otherMatches = wholeFirstLine.match(/^(\s*)/);
- const preceedingWhiteSpace = otherMatches ? otherMatches[1] : '';
- textToWrapInPreview = rangeToReplace.isSingleLine ? [textToReplace] : ['\n\t' + textToReplace.split('\n' + preceedingWhiteSpace).join('\n\t') + '\n'];
+ const preceedingWhitespace = otherMatches ? otherMatches[1] : '';
+ textToWrapInPreview = rangeToReplace.isSingleLine ? [textToReplace] : ['\n\t' + textToReplace.split('\n' + preceedingWhitespace).join('\n\t') + '\n'];
}
textToWrapInPreview = textToWrapInPreview.map(e => e.replace(/(\$\d)/g, '\\$1'));
@@ -487,7 +491,7 @@ export function isValidLocationForEmmetAbbreviation(document: vscode.TextDocumen
}
let valid = true;
- let foundSpace = false; // If < is found before finding whitespace, then its valid abbreviation. Eg: | undefined {
const completionResult = this.provideCompletionItemsInternal(document, position, context);
if (!completionResult) {
@@ -76,20 +79,55 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
}
if (validateLocation) {
- rootNode = parseDocument(document, false);
- currentNode = getNode(rootNode, position, true);
- if (isStyleAttribute(currentNode, position)) {
+ const lsDoc = TextDocument.create(document.uri.toString(), 'html', 0, document.getText());
+ const parsedLsDoc = this.htmlLS.parseHTMLDocument(lsDoc);
+ const positionOffset = document.offsetAt(position);
+ const node = parsedLsDoc.findNodeAt(positionOffset);
+
+ if (node.tag === 'script') {
+ if (node.attributes && 'type' in node.attributes) {
+ const rawTypeAttrValue = node.attributes['type'];
+ if (rawTypeAttrValue) {
+ const typeAttrValue = trimQuotes(rawTypeAttrValue);
+ if (typeAttrValue === 'application/javascript' || typeAttrValue === 'text/javascript') {
+ if (!getSyntaxFromArgs({ language: 'javascript' })) {
+ return;
+ } else {
+ validateLocation = false;
+ }
+ }
+
+ else if (allowedMimeTypesInScriptTag.indexOf(trimQuotes(rawTypeAttrValue)) > -1) {
+ validateLocation = false;
+ }
+ }
+ } else {
+ return;
+ }
+ }
+ else if (node.tag === 'style') {
syntax = 'css';
validateLocation = false;
} else {
- const embeddedCssNode = getEmbeddedCssNodeIfAny(document, currentNode, position);
- if (embeddedCssNode) {
- currentNode = getNode(embeddedCssNode, position, true);
- syntax = 'css';
+ if (node.attributes && node.attributes['style']) {
+ const scanner = this.htmlLS.createScanner(document.getText(), node.start);
+ let tokenType = scanner.scan();
+ let prevAttr = undefined;
+ while (tokenType !== TokenType.EOS && (scanner.getTokenEnd() <= positionOffset)) {
+ tokenType = scanner.scan();
+ if (tokenType === TokenType.AttributeName) {
+ prevAttr = scanner.getTokenText();
+ }
+ }
+ if (prevAttr === 'style') {
+ syntax = 'css';
+ validateLocation = false;
+ }
}
}
}
+
}
const extractAbbreviationResults = helper.extractAbbreviation(document, position, !isStyleSheet(syntax));
@@ -158,4 +196,4 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
return new vscode.CompletionList(newItems, true);
});
}
-}
\ No newline at end of file
+}
diff --git a/extensions/emmet/src/test/abbreviationAction.test.ts b/extensions/emmet/src/test/abbreviationAction.test.ts
index 0a99bae1862..31f46891965 100644
--- a/extensions/emmet/src/test/abbreviationAction.test.ts
+++ b/extensions/emmet/src/test/abbreviationAction.test.ts
@@ -264,16 +264,6 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
});
});
- test('No expanding text in completion list inside style tag if position is not for property name (HTML)', () => {
- return withRandomFileEditor(htmlContents, 'html', (editor, _doc) => {
- editor.selection = new Selection(13, 14, 13, 14);
- const cancelSrc = new CancellationTokenSource();
- const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke });
- assert.equal(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`);
- return Promise.resolve();
- });
- });
-
test('Expand css when inside style attribute (HTML)', () => {
const styleAttributeContent = '
';
return withRandomFileEditor(styleAttributeContent, 'html', async (editor, _doc) => {
diff --git a/extensions/emmet/src/test/wrapWithAbbreviation.test.ts b/extensions/emmet/src/test/wrapWithAbbreviation.test.ts
index 9fc924508e2..d5a4a2bce3c 100644
--- a/extensions/emmet/src/test/wrapWithAbbreviation.test.ts
+++ b/extensions/emmet/src/test/wrapWithAbbreviation.test.ts
@@ -134,19 +134,7 @@ suite('Tests for Wrap with Abbreviations', () => {
`;
-
- return withRandomFileEditor(contents, 'html', (editor, _) => {
- editor.selections = [new Selection(2, 0, 2, 0)];
- const promise = wrapWithAbbreviation({ abbreviation: 'li.hello|c' });
- if (!promise) {
- assert.equal(1, 2, 'Wrap returned undefined instead of promise.');
- return Promise.resolve();
- }
- return promise.then(() => {
- assert.equal(editor.document.getText(), expectedContents);
- return Promise.resolve();
- });
- });
+ return testWrapWithAbbreviation([new Selection(2, 0, 2, 0)], 'li.hello|c', expectedContents, contents);
});
test('Wrap with abbreviation entire node when cursor is on opening tag', () => {
@@ -162,19 +150,7 @@ suite('Tests for Wrap with Abbreviations', () => {
`;
-
- return withRandomFileEditor(contents, 'html', (editor, _) => {
- editor.selections = [new Selection(1, 1, 1, 1)];
- const promise = wrapWithAbbreviation({ abbreviation: 'div' });
- if (!promise) {
- assert.equal(1, 2, 'Wrap returned undefined instead of promise.');
- return Promise.resolve();
- }
- return promise.then(() => {
- assert.equal(editor.document.getText(), expectedContents);
- return Promise.resolve();
- });
- });
+ return testWrapWithAbbreviation([new Selection(1, 1, 1, 1)], 'div', expectedContents, contents);
});
test('Wrap with abbreviation entire node when cursor is on closing tag', () => {
@@ -190,19 +166,7 @@ suite('Tests for Wrap with Abbreviations', () => {
`;
-
- return withRandomFileEditor(contents, 'html', (editor, _) => {
- editor.selections = [new Selection(3, 1, 3, 1)];
- const promise = wrapWithAbbreviation({ abbreviation: 'div' });
- if (!promise) {
- assert.equal(1, 2, 'Wrap returned undefined instead of promise.');
- return Promise.resolve();
- }
- return promise.then(() => {
- assert.equal(editor.document.getText(), expectedContents);
- return Promise.resolve();
- });
- });
+ return testWrapWithAbbreviation([new Selection(3, 1, 3, 1)], 'div', expectedContents, contents);
});
test('Wrap with multiline abbreviation doesnt add extra spaces', () => {
@@ -215,19 +179,7 @@ suite('Tests for Wrap with Abbreviations', () => {
hello
`;
-
- return withRandomFileEditor(contents, 'html', (editor, _) => {
- editor.selections = [new Selection(1, 2, 1, 2)];
- const promise = wrapWithAbbreviation({ abbreviation: 'ul>li>a' });
- if (!promise) {
- assert.equal(1, 2, 'Wrap returned undefined instead of promise.');
- return Promise.resolve();
- }
- return promise.then(() => {
- assert.equal(editor.document.getText(), expectedContents);
- return Promise.resolve();
- });
- });
+ return testWrapWithAbbreviation([new Selection(1, 2, 1, 2)], 'ul>li>a', expectedContents, contents);
});
test('Wrap individual lines with abbreviation', () => {
@@ -245,18 +197,7 @@ suite('Tests for Wrap with Abbreviations', () => {
`;
- return withRandomFileEditor(contents, 'html', (editor, _) => {
- editor.selections = [new Selection(2, 2, 3, 33)];
- const promise = wrapIndividualLinesWithAbbreviation({ abbreviation: 'ul>li.hello$*' });
- if (!promise) {
- assert.equal(1, 2, 'Wrap Individual Lines with Abbreviation returned undefined.');
- return Promise.resolve();
- }
- return promise.then(() => {
- assert.equal(editor.document.getText(), wrapIndividualLinesExpected);
- return Promise.resolve();
- });
- });
+ return testWrapIndividualLinesWithAbbreviation([new Selection(2, 2, 3, 33)], 'ul>li.hello$*', wrapIndividualLinesExpected, contents);
});
test('Wrap individual lines with abbreviation with extra space selected', () => {
@@ -274,18 +215,7 @@ suite('Tests for Wrap with Abbreviations', () => {
`;
- return withRandomFileEditor(contents, 'html', (editor, _) => {
- editor.selections = [new Selection(2, 1, 4, 0)];
- const promise = wrapIndividualLinesWithAbbreviation({ abbreviation: 'ul>li.hello$*' });
- if (!promise) {
- assert.equal(1, 2, 'Wrap Individual Lines with Abbreviation returned undefined.');
- return Promise.resolve();
- }
- return promise.then(() => {
- assert.equal(editor.document.getText(), wrapIndividualLinesExpected);
- return Promise.resolve();
- });
- });
+ return testWrapIndividualLinesWithAbbreviation([new Selection(2, 1, 4, 0)], 'ul>li.hello$*', wrapIndividualLinesExpected, contents);
});
test('Wrap individual lines with abbreviation with comment filter', () => {
@@ -305,18 +235,7 @@ suite('Tests for Wrap with Abbreviations', () => {
`;
- return withRandomFileEditor(contents, 'html', (editor, _) => {
- editor.selections = [new Selection(2, 2, 3, 33)];
- const promise = wrapIndividualLinesWithAbbreviation({ abbreviation: 'ul>li.hello*|c' });
- if (!promise) {
- assert.equal(1, 2, 'Wrap Individual Lines with Abbreviation returned undefined.');
- return Promise.resolve();
- }
- return promise.then(() => {
- assert.equal(editor.document.getText(), wrapIndividualLinesExpected);
- return Promise.resolve();
- });
- });
+ return testWrapIndividualLinesWithAbbreviation([new Selection(2, 2, 3, 33)], 'ul>li.hello*|c', wrapIndividualLinesExpected, contents);
});
test('Wrap individual lines with abbreviation and trim', () => {
@@ -334,19 +253,7 @@ suite('Tests for Wrap with Abbreviations', () => {
`;
- return withRandomFileEditor(contents, 'html', (editor, _) => {
- editor.selections = [new Selection(2, 3, 3, 16)];
- const promise = wrapIndividualLinesWithAbbreviation({ abbreviation: 'ul>li.hello$*|t' });
- if (!promise) {
- assert.equal(1, 2, 'Wrap Individual Lines with Abbreviation returned undefined.');
- return Promise.resolve();
- }
-
- return promise.then(() => {
- assert.equal(editor.document.getText(), wrapIndividualLinesExpected);
- return Promise.resolve();
- });
- });
+ return testWrapIndividualLinesWithAbbreviation([new Selection(2, 3, 3, 16)], 'ul>li.hello$*|t', wrapIndividualLinesExpected, contents);
});
test('Wrap with abbreviation and format set to false', () => {
@@ -384,11 +291,35 @@ suite('Tests for Wrap with Abbreviations', () => {
return testWrapWithAbbreviation([new Selection(2, 4, 3, 9), new Selection(5, 4, 6, 9)], 'div', wrapMultiLineExpected, htmlContentsForWrapMultiLineTests);
});
+
+ test('Wrap multiline with abbreviation uses className for jsx files', () => {
+ const wrapMultiLineJsxExpected = `
+
+`;
+
+ return testWrapWithAbbreviation([new Selection(2,2,3,33)], '.hello', wrapMultiLineJsxExpected, htmlContentsForWrapTests, 'jsx');
+ });
+
+ test('Wrap individual line with abbreviation uses className for jsx files', () => {
+ const wrapIndividualLinesJsxExpected = `
+
+`;
+
+ return testWrapIndividualLinesWithAbbreviation([new Selection(2,2,3,33)], '.hello$*', wrapIndividualLinesJsxExpected, htmlContentsForWrapTests, 'jsx');
+ });
});
-function testWrapWithAbbreviation(selections: Selection[], abbreviation: string, expectedContents: string, input: string = htmlContentsForWrapTests): Thenable {
- return withRandomFileEditor(input, 'html', (editor, _) => {
+function testWrapWithAbbreviation(selections: Selection[], abbreviation: string, expectedContents: string, input: string = htmlContentsForWrapTests, fileExtension: string = 'html'): Thenable {
+ return withRandomFileEditor(input, fileExtension, (editor, _) => {
editor.selections = selections;
const promise = wrapWithAbbreviation({ abbreviation });
if (!promise) {
@@ -402,3 +333,19 @@ function testWrapWithAbbreviation(selections: Selection[], abbreviation: string,
});
});
}
+
+function testWrapIndividualLinesWithAbbreviation(selections: Selection[], abbreviation: string, expectedContents: string, input: string = htmlContentsForWrapTests, fileExtension: string = 'html'): Thenable {
+ return withRandomFileEditor(input, fileExtension, (editor, _) => {
+ editor.selections = selections;
+ const promise = wrapIndividualLinesWithAbbreviation({ abbreviation });
+ if (!promise) {
+ assert.equal(1, 2, 'Wrap individual lines with Abbreviation returned undefined.');
+ return Promise.resolve();
+ }
+
+ return promise.then(() => {
+ assert.equal(editor.document.getText(), expectedContents);
+ return Promise.resolve();
+ });
+ });
+}
diff --git a/extensions/emmet/src/util.ts b/extensions/emmet/src/util.ts
index 2b6ab87c98b..b6281272851 100644
--- a/extensions/emmet/src/util.ts
+++ b/extensions/emmet/src/util.ts
@@ -95,11 +95,11 @@ export function getMappingForIncludedLanguages(): any {
/**
* Get the corresponding emmet mode for given vscode language mode
-* Eg: jsx for typescriptreact/javascriptreact or pug for jade
-* If the language is not supported by emmet or has been exlcuded via `exlcudeLanguages` setting,
+* E.g.: jsx for typescriptreact/javascriptreact or pug for jade
+* If the language is not supported by emmet or has been excluded via `excludeLanguages` setting,
* then nothing is returned
*
-* @param exlcudedLanguages Array of language ids that user has chosen to exlcude for emmet
+* @param excludedLanguages Array of language ids that user has chosen to exclude for emmet
*/
export function getEmmetMode(language: string, excludedLanguages: string[]): string | undefined {
if (!language || excludedLanguages.indexOf(language) > -1) {
@@ -608,3 +608,18 @@ export function isStyleAttribute(currentNode: Node | null, position: vscode.Posi
}
+export function trimQuotes(s: string) {
+ if (s.length <= 1) {
+ return s.replace(/['"]/, '');
+ }
+
+ if (s[0] === `'` || s[0] === `"`) {
+ s = s.slice(1);
+ }
+
+ if (s[s.length - 1] === `'` || s[s.length - 1] === `"`) {
+ s = s.slice(0, -1);
+ }
+
+ return s;
+}
\ No newline at end of file
diff --git a/extensions/emmet/yarn.lock b/extensions/emmet/yarn.lock
index 22f16e39770..7b22c533426 100644
--- a/extensions/emmet/yarn.lock
+++ b/extensions/emmet/yarn.lock
@@ -40,10 +40,10 @@
resolved "https://registry.yarnpkg.com/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz#46cffea119a0a003312a21c2d9b5628cb5fcd442"
integrity sha1-Rs/+oRmgoAMxKiHC2bVijLX81EI=
-"@types/node@8.0.33":
- version "8.0.33"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.33.tgz#1126e94374014e54478092830704f6ea89df04cd"
- integrity sha512-vmCdO8Bm1ExT+FWfC9sd9r4jwqM7o97gGy2WBshkkXbf/2nLAJQUrZfIhw27yVOtLUev6kSZc4cav/46KbDd8A==
+"@types/node@^10.14.8":
+ version "10.14.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.8.tgz#fe444203ecef1162348cd6deb76c62477b2cc6e9"
+ integrity sha512-I4+DbJEhLEg4/vIy/2gkWDvXBOOtPKV9EnLhYjMoqxcRW+TTZtUftkHktz/a8suoD5mUL7m6ReLrkPvSsCQQmw==
ajv@^5.1.0:
version "5.3.0"
@@ -2469,20 +2469,44 @@ vinyl@~2.0.1:
remove-trailing-separator "^1.0.1"
replace-ext "^1.0.0"
-vscode-emmet-helper@^1.2.12:
- version "1.2.12"
- resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.12.tgz#6a75d5a74af735db179c708a9a91feb191f3edb5"
- integrity sha512-pCo+BNgP3lGuzTIGP1IMOGILpNGVopiAu02FrDC4ctEQQ5vFIaMtI4HxDGAw2Zu7pqGEHn6Z1KFmOb2Hd/xkHA==
+vscode-emmet-helper@^1.2.15:
+ version "1.2.15"
+ resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.15.tgz#62dbfbf49bb9ebe329cb7bffdda5aaac725eea7a"
+ integrity sha512-JplvmMMWSvm/6/dZezix2ADPM49u6YahPYjs/QToohUpomW/2Eb27ecCrkCyOGBPfKLKGiOPHCssss8TSDA9ag==
dependencies:
"@emmetio/extract-abbreviation" "0.1.6"
jsonc-parser "^1.0.0"
vscode-languageserver-types "^3.6.0-next.1"
+vscode-html-languageservice@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.0.3.tgz#0aeae18a59000e317447ea34965f72680a2140ef"
+ integrity sha512-U+upM3gHp3HaF3wXAnUduA6IDKcz6frWS/dTAju3cZVIyZwOLBBFElQVlLH0ycHyMzqUFrjvdv+kEyPAEWfQ/g==
+ dependencies:
+ vscode-languageserver-types "^3.15.0-next.2"
+ vscode-nls "^4.1.1"
+ vscode-uri "^2.0.3"
+
+vscode-languageserver-types@^3.15.0-next.2:
+ version "3.15.0-next.2"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0-next.2.tgz#a0601332cdaafac21931f497bb080cfb8d73f254"
+ integrity sha512-2JkrMWWUi2rlVLSo9OFR2PIGUzdiowEM8NgNYiwLKnXTjpwpjjIrJbNNxDik7Rv4oo9KtikcFQZKXbrKilL/MQ==
+
vscode-languageserver-types@^3.6.0-next.1:
version "3.6.0-next.1"
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.6.0-next.1.tgz#98e488d3f87b666b4ee1a3d89f0023e246d358f3"
integrity sha512-n4G+hCgZwAhtcJSCkwJP153TLdcEBWwrIrb3Su/SpOkhmU7KjDgxaQBLA45hf+QbhB8uKQb+TVStPvbuYFHSMA==
+vscode-nls@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.1.tgz#f9916b64e4947b20322defb1e676a495861f133c"
+ integrity sha512-4R+2UoUUU/LdnMnFjePxfLqNhBS8lrAFyX7pjb2ud/lqDkrUavFUTcG7wR0HBZFakae0Q6KLBFjMS6W93F403A==
+
+vscode-uri@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.0.3.tgz#25e5f37f552fbee3cec7e5f80cef8469cefc6543"
+ integrity sha512-4D3DI3F4uRy09WNtDGD93H9q034OHImxiIcSq664Hq1Y1AScehlP3qqZyTkX/RWxeu0MRMHGkrxYqm2qlDF/aw==
+
vscode@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/vscode/-/vscode-1.0.1.tgz#3d161200615fe2af1d92ddc650751159411a513b"
diff --git a/extensions/extension-editing/package.json b/extensions/extension-editing/package.json
index 8ceab79d04e..9c07a2568aa 100644
--- a/extensions/extension-editing/package.json
+++ b/extensions/extension-editing/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": {
"vscode": "^1.4.0"
},
@@ -53,6 +54,6 @@
},
"devDependencies": {
"@types/markdown-it": "0.0.2",
- "@types/node": "^8.10.25"
+ "@types/node": "^10.14.8"
}
}
diff --git a/extensions/extension-editing/yarn.lock b/extensions/extension-editing/yarn.lock
index d82f7c212a0..971bf580ba7 100644
--- a/extensions/extension-editing/yarn.lock
+++ b/extensions/extension-editing/yarn.lock
@@ -7,16 +7,16 @@
resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-0.0.2.tgz#5d9ad19e6e6508cdd2f2596df86fd0aade598660"
integrity sha1-XZrRnm5lCM3S8llt+G/Qqt5ZhmA=
+"@types/node@^10.14.8":
+ version "10.14.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.8.tgz#fe444203ecef1162348cd6deb76c62477b2cc6e9"
+ integrity sha512-I4+DbJEhLEg4/vIy/2gkWDvXBOOtPKV9EnLhYjMoqxcRW+TTZtUftkHktz/a8suoD5mUL7m6ReLrkPvSsCQQmw==
+
"@types/node@^6.0.46":
version "6.0.78"
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.78.tgz#5d4a3f579c1524e01ee21bf474e6fba09198f470"
integrity sha512-+vD6E8ixntRzzZukoF3uP1iV+ZjVN3koTcaeK+BEoc/kSfGbLDIGC7RmCaUgVpUfN6cWvfczFRERCyKM9mkvXg==
-"@types/node@^8.10.25":
- version "8.10.25"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.25.tgz#801fe4e39372cef18f268db880a5fbfcf71adc7e"
- integrity sha512-WXvAXaknB0c2cJ7N44e1kUrVu5K90mSfPPaT5XxfuSMxEWva86EYIwxUZM3jNZ2P1CIC9e2z4WJqpAF69PQxeA==
-
argparse@^1.0.7:
version "1.0.9"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
diff --git a/extensions/fsharp/cgmanifest.json b/extensions/fsharp/cgmanifest.json
index df594e070bb..47351a1a0b4 100644
--- a/extensions/fsharp/cgmanifest.json
+++ b/extensions/fsharp/cgmanifest.json
@@ -6,7 +6,7 @@
"git": {
"name": "ionide/ionide-fsgrammar",
"repositoryUrl": "https://github.com/ionide/ionide-fsgrammar",
- "commitHash": "24c1588529af144d205f66fbcec6889500f9aaa9"
+ "commitHash": "687070defaf355022a5d82d091258eccfea7317c"
}
},
"license": "MIT",
@@ -15,4 +15,4 @@
}
],
"version": 1
-}
+}
\ No newline at end of file
diff --git a/extensions/fsharp/package.json b/extensions/fsharp/package.json
index 8aee9182f58..b7050e22b4e 100644
--- a/extensions/fsharp/package.json
+++ b/extensions/fsharp/package.json
@@ -4,6 +4,7 @@
"description": "%description%",
"version": "1.0.0",
"publisher": "vscode",
+ "license": "MIT",
"engines": { "vscode": "*" },
"scripts": {
"update-grammar": "node ../../build/npm/update-grammar.js ionide/ionide-fsgrammar grammar/fsharp.json ./syntaxes/fsharp.tmLanguage.json"
diff --git a/extensions/fsharp/syntaxes/fsharp.tmLanguage.json b/extensions/fsharp/syntaxes/fsharp.tmLanguage.json
index 9a9b1b1f2fd..20cfc9ecde7 100644
--- a/extensions/fsharp/syntaxes/fsharp.tmLanguage.json
+++ b/extensions/fsharp/syntaxes/fsharp.tmLanguage.json
@@ -4,7 +4,7 @@
"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/ionide/ionide-fsgrammar/commit/be0bdfd1e272b6633f5edf1429052fe9fa4df7c1",
+ "version": "https://github.com/ionide/ionide-fsgrammar/commit/687070defaf355022a5d82d091258eccfea7317c",
"name": "fsharp",
"scopeName": "source.fsharp",
"patterns": [
@@ -238,7 +238,7 @@
},
{
"name": "keyword.fsharp",
- "match": "\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|use|use\\!|struct|while|mutable)(?!')\\b"
+ "match": "\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|abstract|enum|member|try|finally|and|when|or|use|use\\!|struct|while|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\b"
},
{
"name": "keyword.fsharp",
@@ -285,6 +285,33 @@
}
]
},
+ {
+ "begin": "(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(([?[:alpha:]0-9'`^._ ]+))+",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#tuple_signature"
+ }
+ ]
+ },
{
"match": "(?!when|and|or\\b)\\b([\\w0-9'`^._]+)",
"comments": "Here we need the \\w modifier in order to check that the words isn't blacklisted",
@@ -308,6 +335,44 @@
}
]
},
+ "anonymous_record_declaration": {
+ "begin": "(\\{\\|)",
+ "end": "(\\|\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "[[:alpha:]0-9'`^_ ]+(:)",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ }
+ },
+ {
+ "match": "([[:alpha:]0-9'`^_ ]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#anonymous_record_declaration"
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
"record_signature": {
"patterns": [
{
@@ -536,7 +601,7 @@
},
{
"name": "constant.others.fsharp",
- "match": "\\b(true|false|null|unit)\\b"
+ "match": "\\b(true|false|null|unit|void)\\b"
}
]
},
@@ -571,7 +636,7 @@
"include": "#common_declaration"
},
{
- "match": "(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)(\\s*([[:alpha:]0-9'`^._ ]+)){0,1}",
+ "match": "(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)((?!with\\b)\\b([\\w0-9'`^._ ]+)){0,1}",
"captures": {
"1": {
"name": "keyword.symbol.fsharp"
@@ -761,20 +826,31 @@
]
},
{
- "match": "(\\*)(\\s*([?[:alpha:]0-9'`^._ ]+))*",
- "captures": {
+ "begin": "(\\*)(\\s*([?[:alpha:]0-9'`^._ ]+))*",
+ "beginCaptures": {
"1": {
"name": "keyword.symbol.fsharp"
},
"2": {
"name": "entity.name.type.fsharp"
}
- }
+ },
+ "end": "(?==)|(?=\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tuple_signature"
+ }
+ ]
},
{
- "begin": "(<(?![[:space:]]*\\)))",
+ "begin": "(<+(?![[:space:]]*\\)))",
"beginComment": "The group (?![[:space:]]*\\) is for protection against overload operator. static member (<)",
- "end": "((?)",
+ "end": "((?|\\))",
"endComment": "The group (? when using SRTP synthax",
"beginCaptures": {
"1": {
@@ -792,6 +868,9 @@
}
]
},
+ {
+ "include": "#anonymous_record_declaration"
+ },
{
"begin": "({)",
"end": "(})",
@@ -826,7 +905,7 @@
"patterns": [
{
"name": "binding.fsharp",
- "begin": "\\b(let mutable|static let mutable|let inline|let|member val|static member inline|static member|default|member|override|let!)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9,\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\\._`\\s]+|(?<=,)\\s)*)?",
+ "begin": "\\b(let mutable|static let mutable|let inline|let|member val|static member inline|static member|default|member|override|let!)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",
"end": "\\s*(with\\b|=|\\n+=|(?<=\\=))",
"beginCaptures": {
"1": {
@@ -856,6 +935,26 @@
}
]
},
+ {
+ "name": "binding.fsharp",
+ "begin": "\\b((get|set)\\s*(?=\\())(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",
+ "end": "\\s*(=|\\n+=|(?<=\\=))",
+ "beginCaptures": {
+ "3": {
+ "name": "variable.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#common_binding_definition"
+ }
+ ]
+ },
{
"name": "binding.fsharp",
"begin": "\\b(static val mutable|val mutable|val)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9,\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\\._`\\s]+|(?<=,)\\s)*)?",
@@ -882,6 +981,29 @@
"include": "#common_binding_definition"
}
]
+ },
+ {
+ "name": "binding.fsharp",
+ "begin": "\\b(new)\\b\\s+(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ },
+ "2": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#common_binding_definition"
+ }
+ ]
}
]
},
@@ -920,13 +1042,16 @@
}
},
{
- "match": "([[:alpha:]0-9'`^._]+)|``([[:alpha:]0-9'^._ ]+)``",
+ "match": "(``([[:alpha:]0-9'^._ ]+)``|[[:alpha:]0-9'`^._]+)",
"captures": {
"1": {
"name": "entity.name.type.fsharp"
}
}
},
+ {
+ "include": "#anonymous_record_declaration"
+ },
{
"include": "#keywords"
}
@@ -938,7 +1063,7 @@
"patterns": [
{
"name": "keyword.fsharp",
- "match": "\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|abstract|property|union|enum|member|try|finally|and|when|or|use|use\\!|struct|while|mutable)(?!')\\b"
+ "match": "\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|abstract|enum|member|try|finally|and|when|or|use|use\\!|struct|while|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\b"
},
{
"name": "keyword.symbol.fsharp",
@@ -950,7 +1075,7 @@
"patterns": [
{
"name": "entity.name.section.fsharp",
- "begin": "\\b(namespace|module)\\s*(public|internal|private)?\\s+([[:alpha:]][[:alpha:]0-9'_. ]*)",
+ "begin": "\\b(namespace global)|(namespace|module)\\s*(public|internal|private|rec)?\\s+([[:alpha:]][[:alpha:]0-9'_. ]*)",
"end": "(\\s?=|\\s|$)",
"beginCaptures": {
"1": {
@@ -960,6 +1085,9 @@
"name": "keyword.fsharp"
},
"3": {
+ "name": "keyword.fsharp"
+ },
+ "4": {
"name": "entity.name.section.fsharp"
}
},
@@ -1007,6 +1135,9 @@
"name": "entity.name.section.fsharp"
}
}
+ },
+ {
+ "include": "#comments"
}
]
},
@@ -1142,7 +1273,7 @@
"match": "\\(\\)"
},
{
- "match": "(\\?{0,1})(``[[:alpha:]0-9'`^:,._ ]+``|[[:alpha:]0-9'`<>^._ ]\\w*)",
+ "match": "(\\?{0,1})(``[[:alpha:]0-9'`^:,._ ]+``|(?!private\\b)\\b[\\w[:alpha:]0-9'`<>^._ ]+)",
"captures": {
"1": {
"name": "keyword.symbol.fsharp"
@@ -1200,6 +1331,9 @@
}
}
},
+ {
+ "include": "#anonymous_record_declaration"
+ },
{
"begin": "(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)(\\s*([?[:alpha:]0-9'`^._ ]+)(<))",
"end": "(>)",
diff --git a/extensions/fsharp/test/colorize-results/test_fs.json b/extensions/fsharp/test/colorize-results/test_fs.json
index 37c0b61c14a..e5736fc10aa 100644
--- a/extensions/fsharp/test/colorize-results/test_fs.json
+++ b/extensions/fsharp/test/colorize-results/test_fs.json
@@ -604,28 +604,6 @@
"hc_black": "keyword: #569CD6"
}
},
- {
- "c": " get",
- "t": "source.fsharp",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "()",
- "t": "source.fsharp constant.language.unit.fsharp",
- "r": {
- "dark_plus": "constant.language: #569CD6",
- "light_plus": "constant.language: #0000FF",
- "dark_vs": "constant.language: #569CD6",
- "light_vs": "constant.language: #0000FF",
- "hc_black": "constant.language: #569CD6"
- }
- },
{
"c": " ",
"t": "source.fsharp",
@@ -637,9 +615,42 @@
"hc_black": "default: #FFFFFF"
}
},
+ {
+ "c": "get",
+ "t": "source.fsharp binding.fsharp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "()",
+ "t": "source.fsharp binding.fsharp constant.language.unit.fsharp",
+ "r": {
+ "dark_plus": "constant.language: #569CD6",
+ "light_plus": "constant.language: #0000FF",
+ "dark_vs": "constant.language: #569CD6",
+ "light_vs": "constant.language: #0000FF",
+ "hc_black": "constant.language: #569CD6"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.fsharp binding.fsharp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
{
"c": "=",
- "t": "source.fsharp keyword.symbol.fsharp",
+ "t": "source.fsharp binding.fsharp keyword.fsharp",
"r": {
"dark_plus": "keyword: #569CD6",
"light_plus": "keyword: #0000FF",
@@ -681,50 +692,6 @@
"hc_black": "keyword: #569CD6"
}
},
- {
- "c": " set",
- "t": "source.fsharp",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "(",
- "t": "source.fsharp keyword.symbol.fsharp",
- "r": {
- "dark_plus": "keyword: #569CD6",
- "light_plus": "keyword: #0000FF",
- "dark_vs": "keyword: #569CD6",
- "light_vs": "keyword: #0000FF",
- "hc_black": "keyword: #569CD6"
- }
- },
- {
- "c": "value",
- "t": "source.fsharp",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": ")",
- "t": "source.fsharp keyword.symbol.fsharp",
- "r": {
- "dark_plus": "keyword: #569CD6",
- "light_plus": "keyword: #0000FF",
- "dark_vs": "keyword: #569CD6",
- "light_vs": "keyword: #0000FF",
- "hc_black": "keyword: #569CD6"
- }
- },
{
"c": " ",
"t": "source.fsharp",
@@ -736,9 +703,64 @@
"hc_black": "default: #FFFFFF"
}
},
+ {
+ "c": "set",
+ "t": "source.fsharp binding.fsharp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
+ {
+ "c": "(",
+ "t": "source.fsharp binding.fsharp keyword.symbol.fsharp",
+ "r": {
+ "dark_plus": "keyword: #569CD6",
+ "light_plus": "keyword: #0000FF",
+ "dark_vs": "keyword: #569CD6",
+ "light_vs": "keyword: #0000FF",
+ "hc_black": "keyword: #569CD6"
+ }
+ },
+ {
+ "c": "value",
+ "t": "source.fsharp binding.fsharp variable.parameter.fsharp",
+ "r": {
+ "dark_plus": "variable: #9CDCFE",
+ "light_plus": "variable: #001080",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "variable: #9CDCFE"
+ }
+ },
+ {
+ "c": ")",
+ "t": "source.fsharp binding.fsharp keyword.symbol.fsharp",
+ "r": {
+ "dark_plus": "keyword: #569CD6",
+ "light_plus": "keyword: #0000FF",
+ "dark_vs": "keyword: #569CD6",
+ "light_vs": "keyword: #0000FF",
+ "hc_black": "keyword: #569CD6"
+ }
+ },
+ {
+ "c": " ",
+ "t": "source.fsharp binding.fsharp",
+ "r": {
+ "dark_plus": "default: #D4D4D4",
+ "light_plus": "default: #000000",
+ "dark_vs": "default: #D4D4D4",
+ "light_vs": "default: #000000",
+ "hc_black": "default: #FFFFFF"
+ }
+ },
{
"c": "=",
- "t": "source.fsharp keyword.symbol.fsharp",
+ "t": "source.fsharp binding.fsharp keyword.fsharp",
"r": {
"dark_plus": "keyword: #569CD6",
"light_plus": "keyword: #0000FF",
@@ -979,7 +1001,7 @@
}
},
{
- "c": " targetAge",
+ "c": " targetAge ",
"t": "source.fsharp binding.fsharp variable.parameter.fsharp",
"r": {
"dark_plus": "variable: #9CDCFE",
@@ -989,17 +1011,6 @@
"hc_black": "variable: #9CDCFE"
}
},
- {
- "c": " ",
- "t": "source.fsharp binding.fsharp",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
{
"c": "=",
"t": "source.fsharp binding.fsharp keyword.fsharp",
diff --git a/extensions/git-ui/.vscodeignore b/extensions/git-ui/.vscodeignore
new file mode 100644
index 00000000000..7462f7448d3
--- /dev/null
+++ b/extensions/git-ui/.vscodeignore
@@ -0,0 +1,8 @@
+src/**
+test/**
+out/**
+tsconfig.json
+build/**
+extension.webpack.config.js
+cgmanifest.json
+yarn.lock
diff --git a/extensions/git-ui/README.md b/extensions/git-ui/README.md
new file mode 100644
index 00000000000..d418425acfe
--- /dev/null
+++ b/extensions/git-ui/README.md
@@ -0,0 +1,7 @@
+# Git UI integration for Visual Studio Code
+
+**Notice:** This extension is bundled with Visual Studio Code. It can be disabled but not uninstalled.
+
+## Features
+
+See [Git support in VS Code](https://code.visualstudio.com/docs/editor/versioncontrol#_git-support) to learn about the features of this extension.
diff --git a/extensions/git-ui/cgmanifest.json b/extensions/git-ui/cgmanifest.json
new file mode 100644
index 00000000000..f3071eb691a
--- /dev/null
+++ b/extensions/git-ui/cgmanifest.json
@@ -0,0 +1,4 @@
+{
+ "registrations": [],
+ "version": 1
+}
\ No newline at end of file
diff --git a/extensions/git-ui/extension.webpack.config.js b/extensions/git-ui/extension.webpack.config.js
new file mode 100644
index 00000000000..19c0ea3042d
--- /dev/null
+++ b/extensions/git-ui/extension.webpack.config.js
@@ -0,0 +1,17 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+//@ts-check
+
+'use strict';
+
+const withDefaults = require('../shared.webpack.config');
+
+module.exports = withDefaults({
+ context: __dirname,
+ entry: {
+ main: './src/main.ts'
+ }
+});
diff --git a/extensions/git-ui/package.json b/extensions/git-ui/package.json
new file mode 100644
index 00000000000..2f1ab43f892
--- /dev/null
+++ b/extensions/git-ui/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "git-ui",
+ "displayName": "%displayName%",
+ "description": "%description%",
+ "publisher": "vscode",
+ "version": "1.0.0",
+ "engines": {
+ "vscode": "^1.5.0"
+ },
+ "extensionKind": "ui",
+ "aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217",
+ "enableProposedApi": true,
+ "categories": [
+ "Other"
+ ],
+ "activationEvents": [
+ "onCommand:git.credential"
+ ],
+ "main": "./out/main",
+ "icon": "resources/icons/git.png",
+ "scripts": {
+ "compile": "gulp compile-extension:git-ui",
+ "watch": "gulp watch-extension:git-ui"
+ },
+ "devDependencies": {
+ "@types/node": "^10.14.8"
+ }
+}
\ No newline at end of file
diff --git a/extensions/git-ui/package.nls.json b/extensions/git-ui/package.nls.json
new file mode 100644
index 00000000000..5303e91f4cd
--- /dev/null
+++ b/extensions/git-ui/package.nls.json
@@ -0,0 +1,4 @@
+{
+ "displayName": "Git UI",
+ "description": "Git SCM UI Integration"
+}
\ No newline at end of file
diff --git a/extensions/git-ui/resources/icons/git.png b/extensions/git-ui/resources/icons/git.png
new file mode 100644
index 00000000000..51f4ae5404f
Binary files /dev/null and b/extensions/git-ui/resources/icons/git.png differ
diff --git a/extensions/git-ui/src/main.ts b/extensions/git-ui/src/main.ts
new file mode 100644
index 00000000000..d233b753be2
--- /dev/null
+++ b/extensions/git-ui/src/main.ts
@@ -0,0 +1,57 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import { ExtensionContext, commands } from 'vscode';
+
+import * as cp from 'child_process';
+
+export async function deactivate(): Promise {
+}
+
+export async function activate(context: ExtensionContext): Promise {
+ context.subscriptions.push(commands.registerCommand('git.credential', async (data: any) => {
+ try {
+ const { stdout, stderr } = await exec(`git credential ${data.command}`, {
+ stdin: data.stdin,
+ env: Object.assign(process.env, { GIT_TERMINAL_PROMPT: '0' })
+ });
+ return { stdout, stderr, code: 0 };
+ } catch ({ stdout, stderr, error }) {
+ const code = error.code || 0;
+ if (stderr.indexOf('terminal prompts disabled') !== -1) {
+ stderr = '';
+ }
+ return { stdout, stderr, code };
+ }
+ }));
+}
+
+export interface ExecResult {
+ error: Error | null;
+ stdout: string;
+ stderr: string;
+}
+
+
+export function exec(command: string, options: cp.ExecOptions & { stdin?: string } = {}) {
+ return new Promise((resolve, reject) => {
+ const child = cp.exec(command, options, (error, stdout, stderr) => {
+ (error ? reject : resolve)({ error, stdout, stderr });
+ });
+ if (options.stdin) {
+ child.stdin.write(options.stdin, (err: any) => {
+ if (err) {
+ reject(err);
+ return;
+ }
+ child.stdin.end((err: any) => {
+ if (err) {
+ reject(err);
+ }
+ });
+ });
+ }
+ });
+}
diff --git a/src/vs/workbench/parts/terminal/browser/terminalFindWidget.css b/extensions/git-ui/src/typings/refs.d.ts
similarity index 69%
rename from src/vs/workbench/parts/terminal/browser/terminalFindWidget.css
rename to extensions/git-ui/src/typings/refs.d.ts
index 93422f893ea..a933431220b 100644
--- a/src/vs/workbench/parts/terminal/browser/terminalFindWidget.css
+++ b/extensions/git-ui/src/typings/refs.d.ts
@@ -3,7 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-.monaco-workbench .simple-find-part .monaco-inputbox > .wrapper > .input {
- width: 100% !important;
- padding-right: 66px;
-}
\ No newline at end of file
+///
+///
+///
\ No newline at end of file
diff --git a/extensions/git-ui/tsconfig.json b/extensions/git-ui/tsconfig.json
new file mode 100644
index 00000000000..27e9268b39b
--- /dev/null
+++ b/extensions/git-ui/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "../shared.tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./out",
+ "experimentalDecorators": true,
+ "typeRoots": [
+ "./node_modules/@types"
+ ]
+ },
+ "include": [
+ "src/**/*"
+ ]
+}
\ No newline at end of file
diff --git a/extensions/git-ui/yarn.lock b/extensions/git-ui/yarn.lock
new file mode 100644
index 00000000000..b23b0ac0392
--- /dev/null
+++ b/extensions/git-ui/yarn.lock
@@ -0,0 +1,8 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@types/node@^10.14.8":
+ version "10.14.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.8.tgz#fe444203ecef1162348cd6deb76c62477b2cc6e9"
+ integrity sha512-I4+DbJEhLEg4/vIy/2gkWDvXBOOtPKV9EnLhYjMoqxcRW+TTZtUftkHktz/a8suoD5mUL7m6ReLrkPvSsCQQmw==
diff --git a/extensions/git/cgmanifest.json b/extensions/git/cgmanifest.json
index a7e0b63aac3..e8081d6472e 100644
--- a/extensions/git/cgmanifest.json
+++ b/extensions/git/cgmanifest.json
@@ -6,7 +6,7 @@
"git": {
"name": "textmate/git.tmbundle",
"repositoryUrl": "https://github.com/textmate/git.tmbundle",
- "commitHash": "93897a78c6e52bef13dadc0d4091d203c5facb40"
+ "commitHash": "5870cf3f8abad3a6637bdf69250b5d2ded427dc4"
}
},
"licenseDetail": [
@@ -63,4 +63,4 @@
}
],
"version": 1
-}
+}
\ No newline at end of file
diff --git a/extensions/git/package.json b/extensions/git/package.json
index 805783706c1..90064509397 100644
--- a/extensions/git/package.json
+++ b/extensions/git/package.json
@@ -3,6 +3,7 @@
"displayName": "%displayName%",
"description": "%description%",
"publisher": "vscode",
+ "license": "MIT",
"version": "1.0.0",
"engines": {
"vscode": "^1.5.0"
@@ -20,7 +21,8 @@
"scripts": {
"compile": "gulp compile-extension:git",
"watch": "gulp watch-extension:git",
- "update-grammar": "node ./build/update-grammars.js"
+ "update-grammar": "node ./build/update-grammars.js",
+ "test": "mocha"
},
"contributes": {
"commands": [
@@ -80,8 +82,8 @@
"title": "%command.openFile%",
"category": "Git",
"icon": {
- "light": "resources/icons/light/open-file-mono.svg",
- "dark": "resources/icons/dark/open-file-mono.svg"
+ "light": "resources/icons/light/open-file.svg",
+ "dark": "resources/icons/dark/open-file.svg"
}
},
{
@@ -240,6 +242,11 @@
"title": "%command.branch%",
"category": "Git"
},
+ {
+ "command": "git.branchFrom",
+ "title": "%command.branchFrom%",
+ "category": "Git"
+ },
{
"command": "git.deleteBranch",
"title": "%command.deleteBranch%",
@@ -312,12 +319,22 @@
},
{
"command": "git.pushWithTags",
- "title": "%command.pushWithTags%",
+ "title": "%command.pushFollowTags%",
"category": "Git"
},
{
"command": "git.pushWithTagsForce",
- "title": "%command.pushWithTagsForce%",
+ "title": "%command.pushFollowTagsForce%",
+ "category": "Git"
+ },
+ {
+ "command": "git.addRemote",
+ "title": "%command.addRemote%",
+ "category": "Git"
+ },
+ {
+ "command": "git.removeRemote",
+ "title": "%command.removeRemote%",
"category": "Git"
},
{
@@ -502,6 +519,10 @@
"command": "git.branch",
"when": "config.git.enabled && gitOpenRepositoryCount != 0"
},
+ {
+ "command": "git.branchFrom",
+ "when": "config.git.enabled && gitOpenRepositoryCount != 0"
+ },
{
"command": "git.deleteBranch",
"when": "config.git.enabled && gitOpenRepositoryCount != 0"
@@ -570,6 +591,14 @@
"command": "git.pushWithTagsForce",
"when": "config.git.enabled && config.git.allowForcePush && gitOpenRepositoryCount != 0"
},
+ {
+ "command": "git.addRemote",
+ "when": "config.git.enabled && gitOpenRepositoryCount != 0"
+ },
+ {
+ "command": "git.removeRemote",
+ "when": "config.git.enabled && gitOpenRepositoryCount != 0"
+ },
{
"command": "git.sync",
"when": "config.git.enabled && gitOpenRepositoryCount != 0"
@@ -676,89 +705,94 @@
"group": "1_sync",
"when": "scmProvider == git && config.git.allowForcePush"
},
+ {
+ "command": "git.checkout",
+ "group": "2_branch",
+ "when": "scmProvider == git"
+ },
{
"command": "git.publish",
- "group": "2_publish",
+ "group": "2_branch",
"when": "scmProvider == git"
},
{
"command": "git.commitStaged",
- "group": "3_commit",
+ "group": "4_commit",
"when": "scmProvider == git"
},
{
"command": "git.commitStagedSigned",
- "group": "3_commit",
+ "group": "4_commit",
"when": "scmProvider == git"
},
{
"command": "git.commitStagedAmend",
- "group": "3_commit",
+ "group": "4_commit",
"when": "scmProvider == git"
},
{
"command": "git.commitAll",
- "group": "3_commit",
+ "group": "4_commit",
"when": "scmProvider == git"
},
{
"command": "git.commitAllSigned",
- "group": "3_commit",
+ "group": "4_commit",
"when": "scmProvider == git"
},
{
"command": "git.commitAllAmend",
- "group": "3_commit",
+ "group": "4_commit",
"when": "scmProvider == git"
},
{
"command": "git.undoCommit",
- "group": "3_commit",
+ "group": "4_commit",
"when": "scmProvider == git"
},
{
"command": "git.stageAll",
- "group": "4_stage",
+ "group": "5_stage",
"when": "scmProvider == git"
},
{
"command": "git.unstageAll",
- "group": "4_stage",
+ "group": "5_stage",
"when": "scmProvider == git"
},
{
"command": "git.cleanAll",
- "group": "4_stage",
+ "group": "5_stage",
"when": "scmProvider == git && !gitFreshRepository"
},
{
"command": "git.stashIncludeUntracked",
- "group": "5_stash",
+ "group": "6_stash",
"when": "scmProvider == git"
},
{
"command": "git.stash",
- "group": "5_stash",
+ "group": "6_stash",
"when": "scmProvider == git"
},
{
"command": "git.stashPop",
- "group": "5_stash",
+ "group": "6_stash",
"when": "scmProvider == git"
},
{
"command": "git.stashPopLatest",
- "group": "5_stash",
+ "group": "6_stash",
"when": "scmProvider == git"
},
{
"command": "git.stashApply",
- "group": "5_stash",
+ "group": "6_stash",
"when": "scmProvider == git"
},
{
"command": "git.stashApplyLatest",
- "group": "5_stash",
+ "group": "6_stash",
"when": "scmProvider == git"
},
{
@@ -999,7 +1033,7 @@
],
"markdownDescription": "%config.path%",
"default": null,
- "scope": "application"
+ "scope": "machine"
},
"git.autoRepositoryDetection": {
"type": [
@@ -1028,6 +1062,7 @@
},
"git.autofetch": {
"type": "boolean",
+ "scope": "resource",
"description": "%config.autofetch%",
"default": false,
"tags": [
@@ -1113,6 +1148,12 @@
"description": "%config.enableSmartCommit%",
"default": false
},
+ "git.suggestSmartCommit": {
+ "type": "boolean",
+ "scope": "resource",
+ "description": "%config.suggestSmartCommit%",
+ "default": true
+ },
"git.enableCommitSigning": {
"type": "boolean",
"scope": "resource",
@@ -1149,6 +1190,7 @@
"%config.postCommitCommand.sync%"
],
"markdownDescription": "%config.postCommitCommand%",
+ "scope": "resource",
"default": "none"
},
"git.showInlineOpenFileAction": {
@@ -1181,7 +1223,7 @@
"number",
"null"
],
- "default": null,
+ "default": 50,
"description": "%config.inputValidationSubjectLength%"
},
"git.detectSubmodules": {
@@ -1210,12 +1252,18 @@
},
"git.ignoredRepositories": {
"type": "array",
+ "items": {
+ "type": "string"
+ },
"default": [],
"scope": "window",
"description": "%config.ignoredRepositories%"
},
"git.scanRepositories": {
"type": "array",
+ "items": {
+ "type": "string"
+ },
"default": [],
"scope": "resource",
"description": "%config.scanRepositories%"
@@ -1238,6 +1286,12 @@
"default": false,
"description": "%config.fetchOnPull%"
},
+ "git.pullTags": {
+ "type": "boolean",
+ "scope": "resource",
+ "default": true,
+ "description": "%config.pullTags%"
+ },
"git.autoStash": {
"type": "boolean",
"scope": "resource",
@@ -1264,6 +1318,12 @@
"scope": "resource",
"default": true,
"description": "%config.openDiffOnClick%"
+ },
+ "git.supportCancellation": {
+ "type": "boolean",
+ "scope": "resource",
+ "default": false,
+ "description": "%config.supportCancellation%"
}
}
},
@@ -1416,16 +1476,17 @@
"file-type": "^7.2.0",
"iconv-lite": "^0.4.24",
"jschardet": "^1.6.0",
- "vscode-extension-telemetry": "0.1.0",
+ "vscode-extension-telemetry": "0.1.1",
"vscode-nls": "^4.0.0",
+ "vscode-uri": "^2.0.0",
"which": "^1.3.0"
},
"devDependencies": {
"@types/byline": "4.2.31",
"@types/file-type": "^5.2.1",
"@types/mocha": "2.2.43",
- "@types/node": "^8.10.25",
+ "@types/node": "^10.14.8",
"@types/which": "^1.0.28",
"mocha": "^3.2.0"
}
-}
\ No newline at end of file
+}
diff --git a/extensions/git/package.nls.json b/extensions/git/package.nls.json
index 4f749189fc7..4d8bccf4e0b 100644
--- a/extensions/git/package.nls.json
+++ b/extensions/git/package.nls.json
@@ -32,6 +32,7 @@
"command.undoCommit": "Undo Last Commit",
"command.checkout": "Checkout to...",
"command.branch": "Create Branch...",
+ "command.branchFrom": "Create Branch From...",
"command.deleteBranch": "Delete Branch...",
"command.renameBranch": "Rename Branch...",
"command.merge": "Merge Branch...",
@@ -46,8 +47,10 @@
"command.pushForce": "Push (Force)",
"command.pushTo": "Push to...",
"command.pushToForce": "Push to... (Force)",
- "command.pushWithTags": "Push With Tags",
- "command.pushWithTagsForce": "Push With Tags (Force)",
+ "command.pushFollowTags": "Push (Follow Tags)",
+ "command.pushFollowTagsForce": "Push (Follow Tags, Force)",
+ "command.addRemote": "Add Remote",
+ "command.removeRemote": "Remove Remote",
"command.sync": "Sync",
"command.syncRebase": "Sync (Rebase)",
"command.publish": "Publish Branch",
@@ -86,6 +89,7 @@
"config.ignoreLimitWarning": "Ignores the warning when there are too many changes in a repository.",
"config.defaultCloneDirectory": "The default location to clone a git repository.",
"config.enableSmartCommit": "Commit all changes when there are no staged changes.",
+ "config.suggestSmartCommit": "Suggests to enable smart commit (commit all changes when there are no staged changes).",
"config.enableCommitSigning": "Enables commit signing with GPG.",
"config.discardAllScope": "Controls what changes are discarded by the `Discard all changes` command. `all` discards all changes. `tracked` discards only tracked files. `prompt` shows a prompt dialog every time the action is run.",
"config.decorations.enabled": "Controls whether Git contributes colors and badges to the explorer and the open editors view.",
@@ -109,11 +113,13 @@
"config.rebaseWhenSync": "Force git to use rebase when running the sync command.",
"config.confirmEmptyCommits": "Always confirm the creation of empty commits.",
"config.fetchOnPull": "Fetch all branches when pulling or just the current one.",
+ "config.pullTags": "Fetch all tags when pulling.",
"config.autoStash": "Stash any changes before pulling and restore them after successful pull.",
"config.allowForcePush": "Controls whether force push (with or without lease) is enabled.",
"config.useForcePushWithLease": "Controls whether force pushing uses the safer force-with-lease variant.",
"config.confirmForcePush": "Controls whether to ask for confirmation before force-pushing.",
"config.openDiffOnClick": "Controls whether the diff editor should be opened when clicking a change. Otherwise the regular editor will be opened.",
+ "config.supportCancellation": "Controls whether a notification comes up when running the Sync action, which allows the user to cancel the operation.",
"colors.added": "Color for added resources.",
"colors.modified": "Color for modified resources.",
"colors.deleted": "Color for deleted resources.",
@@ -121,4 +127,4 @@
"colors.ignored": "Color for ignored resources.",
"colors.conflict": "Color for resources with conflicts.",
"colors.submodule": "Color for submodule resources."
-}
\ No newline at end of file
+}
diff --git a/extensions/git/resources/icons/dark/check.svg b/extensions/git/resources/icons/dark/check.svg
index c225b2f597f..865cc83c347 100644
--- a/extensions/git/resources/icons/dark/check.svg
+++ b/extensions/git/resources/icons/dark/check.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/dark/clean.svg b/extensions/git/resources/icons/dark/clean.svg
index 3770d63d5f9..de85d6ba679 100644
--- a/extensions/git/resources/icons/dark/clean.svg
+++ b/extensions/git/resources/icons/dark/clean.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/dark/git.svg b/extensions/git/resources/icons/dark/git.svg
index c08b1c2e403..4d9389336b9 100644
--- a/extensions/git/resources/icons/dark/git.svg
+++ b/extensions/git/resources/icons/dark/git.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/dark/open-change.svg b/extensions/git/resources/icons/dark/open-change.svg
index 6f785c26a5e..41ebc85a8c8 100644
--- a/extensions/git/resources/icons/dark/open-change.svg
+++ b/extensions/git/resources/icons/dark/open-change.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/dark/open-file-mono.svg b/extensions/git/resources/icons/dark/open-file-mono.svg
deleted file mode 100644
index 830727e70b3..00000000000
--- a/extensions/git/resources/icons/dark/open-file-mono.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/extensions/git/resources/icons/dark/open-file.svg b/extensions/git/resources/icons/dark/open-file.svg
index f6302185aa4..ed302ae1398 100644
--- a/extensions/git/resources/icons/dark/open-file.svg
+++ b/extensions/git/resources/icons/dark/open-file.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/dark/refresh.svg b/extensions/git/resources/icons/dark/refresh.svg
index d79fdaa4e8e..e1f05aadeeb 100644
--- a/extensions/git/resources/icons/dark/refresh.svg
+++ b/extensions/git/resources/icons/dark/refresh.svg
@@ -1 +1,4 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/dark/stage.svg b/extensions/git/resources/icons/dark/stage.svg
index 3475c1e1963..4d9389336b9 100644
--- a/extensions/git/resources/icons/dark/stage.svg
+++ b/extensions/git/resources/icons/dark/stage.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/dark/unstage.svg b/extensions/git/resources/icons/dark/unstage.svg
index 2de46fcf5b5..4c5a9c1e3a5 100644
--- a/extensions/git/resources/icons/dark/unstage.svg
+++ b/extensions/git/resources/icons/dark/unstage.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/light/check.svg b/extensions/git/resources/icons/light/check.svg
index 3f365c4800e..e1a546660ed 100644
--- a/extensions/git/resources/icons/light/check.svg
+++ b/extensions/git/resources/icons/light/check.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/light/clean.svg b/extensions/git/resources/icons/light/clean.svg
index f86ec7d627d..b70626957d0 100644
--- a/extensions/git/resources/icons/light/clean.svg
+++ b/extensions/git/resources/icons/light/clean.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/light/git.svg b/extensions/git/resources/icons/light/git.svg
index d1049a44d0d..01a9de7d5ab 100644
--- a/extensions/git/resources/icons/light/git.svg
+++ b/extensions/git/resources/icons/light/git.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/light/open-change.svg b/extensions/git/resources/icons/light/open-change.svg
index 873b93d8106..772c3c198fc 100644
--- a/extensions/git/resources/icons/light/open-change.svg
+++ b/extensions/git/resources/icons/light/open-change.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/light/open-file-mono.svg b/extensions/git/resources/icons/light/open-file-mono.svg
deleted file mode 100644
index fa3f245b755..00000000000
--- a/extensions/git/resources/icons/light/open-file-mono.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/extensions/git/resources/icons/light/open-file.svg b/extensions/git/resources/icons/light/open-file.svg
index d23a23c6b5f..392a840c5ef 100644
--- a/extensions/git/resources/icons/light/open-file.svg
+++ b/extensions/git/resources/icons/light/open-file.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/light/refresh.svg b/extensions/git/resources/icons/light/refresh.svg
index e0345748192..9b1d9108409 100644
--- a/extensions/git/resources/icons/light/refresh.svg
+++ b/extensions/git/resources/icons/light/refresh.svg
@@ -1 +1,4 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/light/stage.svg b/extensions/git/resources/icons/light/stage.svg
index bdecdb0e45b..01a9de7d5ab 100644
--- a/extensions/git/resources/icons/light/stage.svg
+++ b/extensions/git/resources/icons/light/stage.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/resources/icons/light/unstage.svg b/extensions/git/resources/icons/light/unstage.svg
index f5d128b2df8..d12a8ee3135 100644
--- a/extensions/git/resources/icons/light/unstage.svg
+++ b/extensions/git/resources/icons/light/unstage.svg
@@ -1 +1,3 @@
-
\ No newline at end of file
+
diff --git a/extensions/git/src/api/api1.ts b/extensions/git/src/api/api1.ts
index 9469580d97b..a4fd677db27 100644
--- a/extensions/git/src/api/api1.ts
+++ b/extensions/git/src/api/api1.ts
@@ -5,7 +5,7 @@
import { Model } from '../model';
import { Repository as BaseRepository, Resource } from '../repository';
-import { InputBox, Git, API, Repository, Remote, RepositoryState, Branch, Ref, Submodule, Commit, Change, RepositoryUIState, Status } from './git';
+import { InputBox, Git, API, Repository, Remote, RepositoryState, Branch, Ref, Submodule, Commit, Change, RepositoryUIState, Status, LogOptions, APIState } from './git';
import { Event, SourceControlInputBox, Uri, SourceControl } from 'vscode';
import { mapEvent } from '../util';
@@ -76,6 +76,10 @@ export class ApiRepository implements Repository {
return this._repository.setConfig(key, value);
}
+ getGlobalConfig(key: string): Promise {
+ return this._repository.getGlobalConfig(key);
+ }
+
getObjectDetails(treeish: string, path: string): Promise<{ mode: string; object: string; size: number; }> {
return this._repository.getObjectDetails(treeish, path);
}
@@ -104,19 +108,27 @@ export class ApiRepository implements Repository {
return this._repository.diff(cached);
}
- diffWithHEAD(path: string): Promise {
+ diffWithHEAD(): Promise;
+ diffWithHEAD(path: string): Promise;
+ diffWithHEAD(path?: string): Promise {
return this._repository.diffWithHEAD(path);
}
- diffWith(ref: string, path: string): Promise {
+ diffWith(ref: string): Promise;
+ diffWith(ref: string, path: string): Promise;
+ diffWith(ref: string, path?: string): Promise {
return this._repository.diffWith(ref, path);
}
- diffIndexWithHEAD(path: string): Promise {
+ diffIndexWithHEAD(): Promise;
+ diffIndexWithHEAD(path: string): Promise;
+ diffIndexWithHEAD(path?: string): Promise {
return this._repository.diffIndexWithHEAD(path);
}
- diffIndexWith(ref: string, path: string): Promise {
+ diffIndexWith(ref: string): Promise;
+ diffIndexWith(ref: string, path: string): Promise;
+ diffIndexWith(ref: string, path?: string): Promise {
return this._repository.diffIndexWith(ref, path);
}
@@ -124,7 +136,9 @@ export class ApiRepository implements Repository {
return this._repository.diffBlobs(object1, object2);
}
- diffBetween(ref1: string, ref2: string, path: string): Promise {
+ diffBetween(ref1: string, ref2: string): Promise;
+ diffBetween(ref1: string, ref2: string, path: string): Promise;
+ diffBetween(ref1: string, ref2: string, path?: string): Promise {
return this._repository.diffBetween(ref1, ref2, path);
}
@@ -168,17 +182,25 @@ export class ApiRepository implements Repository {
return this._repository.removeRemote(name);
}
- fetch(remote?: string | undefined, ref?: string | undefined): Promise {
- return this._repository.fetch(remote, ref);
+ fetch(remote?: string | undefined, ref?: string | undefined, depth?: number | undefined): Promise {
+ return this._repository.fetch(remote, ref, depth);
}
- pull(): Promise {
- return this._repository.pull();
+ pull(unshallow?: boolean): Promise {
+ return this._repository.pull(undefined, unshallow);
}
push(remoteName?: string, branchName?: string, setUpstream: boolean = false): Promise {
return this._repository.pushTo(remoteName, branchName, setUpstream);
}
+
+ blame(path: string): Promise {
+ return this._repository.blame(path);
+ }
+
+ log(options?: LogOptions): Promise {
+ return this._repository.log(options);
+ }
}
export class ApiGit implements Git {
@@ -192,6 +214,14 @@ export class ApiImpl implements API {
readonly git = new ApiGit(this._model);
+ get state(): APIState {
+ return this._model.state;
+ }
+
+ get onDidChangeState(): Event {
+ return this._model.onDidChangeState;
+ }
+
get onDidOpenRepository(): Event {
return mapEvent(this._model.onDidOpenRepository, r => new ApiRepository(r));
}
diff --git a/extensions/git/src/api/git.d.ts b/extensions/git/src/api/git.d.ts
index eb128be6609..21195974fc1 100644
--- a/extensions/git/src/api/git.d.ts
+++ b/extensions/git/src/api/git.d.ts
@@ -41,6 +41,7 @@ export interface Commit {
readonly hash: string;
readonly message: string;
readonly parents: string[];
+ readonly authorEmail?: string | undefined;
}
export interface Submodule {
@@ -110,6 +111,14 @@ export interface RepositoryUIState {
readonly onDidChange: Event;
}
+/**
+ * Log options.
+ */
+export interface LogOptions {
+ /** Max number of log entries to retrieve. If not specified, the default is 32. */
+ readonly maxEntries?: number;
+}
+
export interface Repository {
readonly rootUri: Uri;
@@ -120,6 +129,7 @@ export interface Repository {
getConfigs(): Promise<{ key: string; value: string; }[]>;
getConfig(key: string): Promise;
setConfig(key: string, value: string): Promise;
+ getGlobalConfig(key: string): Promise;
getObjectDetails(treeish: string, path: string): Promise<{ mode: string, object: string, size: number }>;
detectObjectType(object: string): Promise<{ mimetype: string, encoding?: string }>;
@@ -131,11 +141,16 @@ export interface Repository {
apply(patch: string, reverse?: boolean): Promise;
diff(cached?: boolean): Promise;
+ diffWithHEAD(): Promise;
diffWithHEAD(path: string): Promise;
+ diffWith(ref: string): Promise;
diffWith(ref: string, path: string): Promise;
+ diffIndexWithHEAD(): Promise;
diffIndexWithHEAD(path: string): Promise;
+ diffIndexWith(ref: string): Promise;
diffIndexWith(ref: string, path: string): Promise;
diffBlobs(object1: string, object2: string): Promise;
+ diffBetween(ref1: string, ref2: string): Promise;
diffBetween(ref1: string, ref2: string, path: string): Promise;
hashObject(data: string): Promise;
@@ -153,12 +168,19 @@ export interface Repository {
addRemote(name: string, url: string): Promise;
removeRemote(name: string): Promise;
- fetch(remote?: string, ref?: string): Promise;
- pull(): Promise;
+ fetch(remote?: string, ref?: string, depth?: number): Promise;
+ pull(unshallow?: boolean): Promise;
push(remoteName?: string, branchName?: string, setUpstream?: boolean): Promise;
+
+ blame(path: string): Promise;
+ log(options?: LogOptions): Promise;
}
+export type APIState = 'uninitialized' | 'initialized';
+
export interface API {
+ readonly state: APIState;
+ readonly onDidChangeState: Event;
readonly git: Git;
readonly repositories: Repository[];
readonly onDidOpenRepository: Event;
@@ -215,5 +237,6 @@ export const enum GitErrorCodes {
WrongCase = 'WrongCase',
CantLockRef = 'CantLockRef',
CantRebaseMultipleBranches = 'CantRebaseMultipleBranches',
- PatchDoesNotApply = 'PatchDoesNotApply'
-}
\ No newline at end of file
+ PatchDoesNotApply = 'PatchDoesNotApply',
+ NoPathFound = 'NoPathFound'
+}
diff --git a/extensions/git/src/askpass.ts b/extensions/git/src/askpass.ts
index b0dc28f8dd6..03000c7290d 100644
--- a/extensions/git/src/askpass.ts
+++ b/extensions/git/src/askpass.ts
@@ -65,7 +65,7 @@ export class Askpass implements Disposable {
return ipcHandlePath;
}
- private onRequest(req: http.ServerRequest, res: http.ServerResponse): void {
+ private onRequest(req: http.IncomingMessage, res: http.ServerResponse): void {
const chunks: string[] = [];
req.setEncoding('utf8');
req.on('data', (d: string) => chunks.push(d));
diff --git a/extensions/git/src/autofetch.ts b/extensions/git/src/autofetch.ts
index f6c28946620..9fd81bfabfe 100644
--- a/extensions/git/src/autofetch.ts
+++ b/extensions/git/src/autofetch.ts
@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-import { workspace, Disposable, EventEmitter, Memento, window, MessageItem, ConfigurationTarget } from 'vscode';
+import { workspace, Disposable, EventEmitter, Memento, window, MessageItem, ConfigurationTarget, Uri } from 'vscode';
import { Repository, Operation } from './repository';
import { eventToPromise, filterEvent, onceEvent } from './util';
import * as nls from 'vscode-nls';
@@ -60,7 +60,7 @@ export class AutoFetcher {
}
if (result === yes) {
- const gitConfig = workspace.getConfiguration('git');
+ const gitConfig = workspace.getConfiguration('git', Uri.file(this.repository.root));
gitConfig.update('autofetch', true, ConfigurationTarget.Global);
}
@@ -68,7 +68,7 @@ export class AutoFetcher {
}
private onConfiguration(): void {
- const gitConfig = workspace.getConfiguration('git');
+ const gitConfig = workspace.getConfiguration('git', Uri.file(this.repository.root));
if (gitConfig.get('autofetch') === false) {
this.disable();
@@ -110,7 +110,7 @@ export class AutoFetcher {
return;
}
- const period = workspace.getConfiguration('git').get('autofetchPeriod', 180) * 1000;
+ const period = workspace.getConfiguration('git', Uri.file(this.repository.root)).get('autofetchPeriod', 180) * 1000;
const timeout = new Promise(c => setTimeout(c, period));
const whenDisabled = eventToPromise(filterEvent(this.onDidChange, enabled => !enabled));
diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts
index eb45f107f4b..fef9d4a1f85 100755
--- a/extensions/git/src/commands.ts
+++ b/extensions/git/src/commands.ts
@@ -56,7 +56,13 @@ class CheckoutRemoteHeadItem extends CheckoutItem {
return;
}
- await repository.checkoutTracking(this.ref.name);
+ const branches = await repository.findTrackingBranches(this.ref.name);
+
+ if (branches.length > 0) {
+ await repository.checkout(branches[0].name!);
+ } else {
+ await repository.checkoutTracking(this.ref.name);
+ }
}
}
@@ -93,7 +99,21 @@ class CreateBranchItem implements QuickPickItem {
constructor(private cc: CommandCenter) { }
- get label(): string { return localize('create branch', '$(plus) Create new branch'); }
+ get label(): string { return localize('create branch', '$(plus) Create new branch...'); }
+ get description(): string { return ''; }
+
+ get alwaysShow(): boolean { return true; }
+
+ async run(repository: Repository): Promise {
+ await this.cc.branch(repository);
+ }
+}
+
+class CreateBranchFromItem implements QuickPickItem {
+
+ constructor(private cc: CommandCenter) { }
+
+ get label(): string { return localize('create branch from', '$(plus) Create new branch from...'); }
get description(): string { return ''; }
get alwaysShow(): boolean { return true; }
@@ -182,7 +202,7 @@ function createCheckoutItems(repository: Repository): CheckoutItem[] {
enum PushType {
Push,
PushTo,
- PushTags,
+ PushFollowTags,
}
interface PushOptions {
@@ -430,6 +450,8 @@ export class CommandCenter {
return;
}
+ url = url.trim().replace(/^git\s+clone\s+/, '');
+
const config = workspace.getConfiguration('git');
let defaultCloneDirectory = config.get('defaultCloneDirectory') || os.homedir();
defaultCloneDirectory = defaultCloneDirectory.replace(/^~/, os.homedir());
@@ -467,10 +489,10 @@ export class CommandCenter {
(_, token) => this.git.clone(url!, parentPath, token)
);
- const choices = [];
let message = localize('proposeopen', "Would you like to open the cloned repository?");
- const open = localize('openrepo', "Open Repository");
- choices.push(open);
+ const open = localize('openrepo', "Open");
+ const openNewWindow = localize('openreponew', "Open in New Window");
+ const choices = [open, openNewWindow];
const addToWorkspace = localize('add', "Add to Workspace");
if (workspace.workspaceFolders) {
@@ -495,6 +517,8 @@ export class CommandCenter {
commands.executeCommand('vscode.openFolder', uri);
} else if (result === addToWorkspace) {
workspace.updateWorkspaceFolders(workspace.workspaceFolders!.length, 0, { uri });
+ } else if (result === openNewWindow) {
+ commands.executeCommand('vscode.openFolder', uri, true);
}
} catch (err) {
if (/already exists and is not an empty directory/.test(err && err.stderr || '')) {
@@ -579,10 +603,10 @@ export class CommandCenter {
await this.git.init(repositoryPath);
- const choices = [];
let message = localize('proposeopen init', "Would you like to open the initialized repository?");
- const open = localize('openrepo', "Open Repository");
- choices.push(open);
+ const open = localize('openrepo', "Open");
+ const openNewWindow = localize('openreponew', "Open in New Window");
+ const choices = [open, openNewWindow];
if (!askToOpen) {
return;
@@ -601,6 +625,8 @@ export class CommandCenter {
commands.executeCommand('vscode.openFolder', uri);
} else if (result === addToWorkspace) {
workspace.updateWorkspaceFolders(workspace.workspaceFolders!.length, 0, { uri });
+ } else if (result === openNewWindow) {
+ commands.executeCommand('vscode.openFolder', uri, true);
} else {
await this.model.openRepository(repositoryPath);
}
@@ -653,10 +679,11 @@ export class CommandCenter {
}
if (resource) {
- const resources = ([resource, ...resourceStates] as Resource[])
- .filter(r => r.type !== Status.DELETED && r.type !== Status.INDEX_DELETED);
-
- uris = resources.map(r => r.resourceUri);
+ uris = ([resource, ...resourceStates] as Resource[])
+ .filter(r => r.type !== Status.DELETED && r.type !== Status.INDEX_DELETED)
+ .map(r => r.resourceUri);
+ } else if (window.activeTextEditor) {
+ uris = [window.activeTextEditor.document.uri];
}
}
@@ -665,6 +692,7 @@ export class CommandCenter {
}
const activeTextEditor = window.activeTextEditor;
+
for (const uri of uris) {
const opts: TextDocumentShowOptions = {
preserveFocus,
@@ -711,6 +739,8 @@ export class CommandCenter {
}
const HEAD = await this.getLeftResource(resource);
+ const basename = path.basename(resource.resourceUri.fsPath);
+ const title = `${basename} (HEAD)`;
if (!HEAD) {
window.showWarningMessage(localize('HEAD not available', "HEAD version of '{0}' is not available.", path.basename(resource.resourceUri.fsPath)));
@@ -721,7 +751,7 @@ export class CommandCenter {
preview
};
- return await commands.executeCommand('vscode.open', HEAD, opts);
+ return await commands.executeCommand('vscode.open', HEAD, opts, title);
}
@command('git.openChange')
@@ -1087,7 +1117,7 @@ export class CommandCenter {
if (scmResources.length === 1) {
if (untrackedCount > 0) {
- message = localize('confirm delete', "Are you sure you want to DELETE {0}?", path.basename(scmResources[0].resourceUri.fsPath));
+ message = localize('confirm delete', "Are you sure you want to DELETE {0}?\nThis is IRREVERSIBLE!\nThis file will be FOREVER LOST.", path.basename(scmResources[0].resourceUri.fsPath));
yes = localize('delete file', "Delete file");
} else {
if (scmResources[0].type === Status.DELETED) {
@@ -1106,7 +1136,7 @@ export class CommandCenter {
}
if (untrackedCount > 0) {
- message = `${message}\n\n${localize('warn untracked', "This will DELETE {0} untracked files!", untrackedCount)}`;
+ message = `${message}\n\n${localize('warn untracked', "This will DELETE {0} untracked files!\nThis is IRREVERSIBLE!\nThese files will be FOREVER LOST.", untrackedCount)}`;
}
}
@@ -1147,7 +1177,7 @@ export class CommandCenter {
await repository.clean(resources.map(r => r.resourceUri));
return;
} else if (resources.length === 1) {
- const message = localize('confirm delete', "Are you sure you want to DELETE {0}?", path.basename(resources[0].resourceUri.fsPath));
+ const message = localize('confirm delete', "Are you sure you want to DELETE {0}?\nThis is IRREVERSIBLE!\nThis file will be FOREVER LOST.", path.basename(resources[0].resourceUri.fsPath));
const yes = localize('delete file', "Delete file");
const pick = await window.showWarningMessage(message, { modal: true }, yes);
@@ -1228,14 +1258,23 @@ export class CommandCenter {
// no changes, and the user has not configured to commit all in this case
if (!noUnstagedChanges && noStagedChanges && !enableSmartCommit) {
+ const suggestSmartCommit = config.get('suggestSmartCommit') === true;
+ if (!suggestSmartCommit) {
+ return false;
+ }
+
// prompt the user if we want to commit all or not
const message = localize('no staged changes', "There are no staged changes to commit.\n\nWould you like to automatically stage all your changes and commit them directly?");
const yes = localize('yes', "Yes");
const always = localize('always', "Always");
- const pick = await window.showWarningMessage(message, { modal: true }, yes, always);
+ const never = localize('never', "Never");
+ const pick = await window.showWarningMessage(message, { modal: true }, yes, always, never);
if (pick === always) {
config.update('enableSmartCommit', true, true);
+ } else if (pick === never) {
+ config.update('suggestSmartCommit', false, true);
+ return false;
} else if (pick !== yes) {
return false; // do not commit on cancel
}
@@ -1419,14 +1458,16 @@ export class CommandCenter {
await repository.checkout(treeish);
return true;
}
- const createBranch = new CreateBranchItem(this);
- const picks = [createBranch, ...createCheckoutItems(repository)];
+ const createBranch = new CreateBranchItem(this);
+ const createBranchFrom = new CreateBranchFromItem(this);
+ const picks = [createBranch, createBranchFrom, ...createCheckoutItems(repository)];
const placeHolder = localize('select a ref to checkout', 'Select a ref to checkout');
const quickpick = window.createQuickPick();
quickpick.items = picks;
quickpick.placeholder = placeHolder;
+ quickpick.ignoreFocusOut = true;
quickpick.show();
const choice = await new Promise(c => quickpick.onDidAccept(() => c(quickpick.activeItems[0])));
@@ -1438,6 +1479,8 @@ export class CommandCenter {
if (choice === createBranch) {
await this._branch(repository, quickpick.value);
+ } else if (choice === createBranchFrom) {
+ await this._branch(repository, quickpick.value, true);
} else {
await (choice as CheckoutItem).run(repository);
}
@@ -1450,16 +1493,20 @@ export class CommandCenter {
await this._branch(repository);
}
- private async _branch(repository: Repository, defaultName?: string): Promise {
+ @command('git.branchFrom', { repository: true })
+ async branchFrom(repository: Repository): Promise {
+ await this._branch(repository, undefined, true);
+ }
+
+ private async promptForBranchName(defaultName?: string): Promise {
const config = workspace.getConfiguration('git');
const branchWhitespaceChar = config.get('branchWhitespaceChar')!;
const branchValidationRegex = config.get('branchValidationRegex')!;
const sanitize = (name: string) => name ?
- name.trim().replace(/^\.|\/\.|\.\.|~|\^|:|\/$|\.lock$|\.lock\/|\\|\*|\s|^\s*$|\.$|\[|\]$/g, branchWhitespaceChar)
+ name.trim().replace(/^-+/, '').replace(/^\.|\/\.|\.\.|~|\^|:|\/$|\.lock$|\.lock\/|\\|\*|\s|^\s*$|\.$|\[|\]$/g, branchWhitespaceChar)
: name;
- const rawBranchName = await window.showInputBox({
- value: defaultName,
+ const rawBranchName = defaultName || await window.showInputBox({
placeHolder: localize('branch name', "Branch name"),
prompt: localize('provide branch name', "Please provide a branch name"),
ignoreFocusOut: true,
@@ -1473,21 +1520,31 @@ export class CommandCenter {
}
});
- const branchName = sanitize(rawBranchName || '');
+ return sanitize(rawBranchName || '');
+ }
+
+ private async _branch(repository: Repository, defaultName?: string, from = false): Promise {
+ const branchName = await this.promptForBranchName(defaultName);
if (!branchName) {
return;
}
- const picks = [new HEADItem(repository), ...createCheckoutItems(repository)];
- const placeHolder = localize('select a ref to create a new branch from', 'Select a ref to create a new branch from');
- const target = await window.showQuickPick(picks, { placeHolder });
+ let target = 'HEAD';
- if (!target) {
- return;
+ if (from) {
+ const picks = [new HEADItem(repository), ...createCheckoutItems(repository)];
+ const placeHolder = localize('select a ref to create a new branch from', 'Select a ref to create the \'{0}\' branch from', branchName);
+ const choice = await window.showQuickPick(picks, { placeHolder });
+
+ if (!choice) {
+ return;
+ }
+
+ target = choice.label;
}
- await repository.branch(branchName, true, target.label);
+ await repository.branch(branchName, true, target);
}
@command('git.deleteBranch', { repository: true })
@@ -1529,22 +1586,21 @@ export class CommandCenter {
@command('git.renameBranch', { repository: true })
async renameBranch(repository: Repository): Promise {
- const placeHolder = localize('provide branch name', "Please provide a branch name");
- const name = await window.showInputBox({ placeHolder });
+ const branchName = await this.promptForBranchName();
- if (!name || name.trim().length === 0) {
+ if (!branchName) {
return;
}
try {
- await repository.renameBranch(name);
+ await repository.renameBranch(branchName);
} catch (err) {
switch (err.gitErrorCode) {
case GitErrorCodes.InvalidBranchName:
window.showErrorMessage(localize('invalid branch name', 'Invalid branch name'));
return;
case GitErrorCodes.BranchAlreadyExists:
- window.showErrorMessage(localize('branch already exists', "A branch named '{0}' already exists", name));
+ window.showErrorMessage(localize('branch already exists', "A branch named '{0}' already exists", branchName));
return;
default:
throw err;
@@ -1722,10 +1778,8 @@ export class CommandCenter {
}
}
- if (pushOptions.pushType === PushType.PushTags) {
- await repository.pushTags(undefined, forcePushMode);
-
- window.showInformationMessage(localize('push with tags success', "Successfully pushed with tags."));
+ if (pushOptions.pushType === PushType.PushFollowTags) {
+ await repository.pushFollowTags(undefined, forcePushMode);
return;
}
@@ -1782,13 +1836,13 @@ export class CommandCenter {
}
@command('git.pushWithTags', { repository: true })
- async pushWithTags(repository: Repository): Promise {
- await this._push(repository, { pushType: PushType.PushTags });
+ async pushFollowTags(repository: Repository): Promise {
+ await this._push(repository, { pushType: PushType.PushFollowTags });
}
@command('git.pushWithTagsForce', { repository: true })
- async pushWithTagsForce(repository: Repository): Promise {
- await this._push(repository, { pushType: PushType.PushTags, forcePush: true });
+ async pushFollowTagsForce(repository: Repository): Promise {
+ await this._push(repository, { pushType: PushType.PushFollowTags, forcePush: true });
}
@command('git.pushTo', { repository: true })
@@ -1801,10 +1855,86 @@ export class CommandCenter {
await this._push(repository, { pushType: PushType.PushTo, forcePush: true });
}
+ @command('git.addRemote', { repository: true })
+ async addRemote(repository: Repository): Promise {
+ const remotes = repository.remotes;
+
+ const sanitize = (name: string) => {
+ name = name.trim();
+ return name && name.replace(/^\.|\/\.|\.\.|~|\^|:|\/$|\.lock$|\.lock\/|\\|\*|\s|^\s*$|\.$|\[|\]$/g, '-');
+ };
+
+ const resultName = await window.showInputBox({
+ placeHolder: localize('remote name', "Remote name"),
+ prompt: localize('provide remote name', "Please provide a remote name"),
+ ignoreFocusOut: true,
+ validateInput: (name: string) => {
+ if (sanitize(name)) {
+ return null;
+ }
+ return localize('remote name format invalid', "Remote name format invalid");
+ }
+ });
+
+ const name = sanitize(resultName || '');
+
+ if (!name) {
+ return;
+ }
+
+ if (remotes.find(r => r.name === name)) {
+ window.showErrorMessage(localize('remote already exists', "Remote '{0}' already exists.", name));
+ return;
+ }
+
+ const url = await window.showInputBox({
+ placeHolder: localize('remote url', "Remote URL"),
+ prompt: localize('provide remote URL', "Enter URL for remote \"{0}\"", name),
+ ignoreFocusOut: true
+ });
+
+ if (!url) {
+ return;
+ }
+
+ await repository.addRemote(name, url);
+ }
+
+ @command('git.removeRemote', { repository: true })
+ async removeRemote(repository: Repository): Promise {
+ const remotes = repository.remotes;
+
+ if (remotes.length === 0) {
+ window.showErrorMessage(localize('no remotes added', "Your repository has no remotes."));
+ return;
+ }
+
+ const picks = remotes.map(r => r.name);
+ const placeHolder = localize('remove remote', "Pick a remote to remove");
+
+ const remoteName = await window.showQuickPick(picks, { placeHolder });
+
+ if (!remoteName) {
+ return;
+ }
+
+ await repository.removeRemote(remoteName);
+ }
+
private async _sync(repository: Repository, rebase: boolean): Promise {
const HEAD = repository.HEAD;
- if (!HEAD || !HEAD.upstream) {
+ if (!HEAD) {
+ return;
+ } else if (!HEAD.upstream) {
+ const branchName = HEAD.name;
+ const message = localize('confirm publish branch', "The branch '{0}' has no upstream branch. Would you like to publish this branch?", branchName);
+ const yes = localize('ok', "OK");
+ const pick = await window.showWarningMessage(message, { modal: true }, yes);
+
+ if (pick === yes) {
+ await this.publish(repository);
+ }
return;
}
@@ -1836,8 +1966,16 @@ export class CommandCenter {
}
@command('git.sync', { repository: true })
- sync(repository: Repository): Promise {
- return this._sync(repository, false);
+ async sync(repository: Repository): Promise {
+ try {
+ await this._sync(repository, false);
+ } catch (err) {
+ if (/Cancelled/i.test(err && (err.message || err.stderr || ''))) {
+ return;
+ }
+
+ throw err;
+ }
}
@command('git._syncAll')
@@ -1854,8 +1992,16 @@ export class CommandCenter {
}
@command('git.syncRebase', { repository: true })
- syncRebase(repository: Repository): Promise {
- return this._sync(repository, true);
+ async syncRebase(repository: Repository): Promise {
+ try {
+ await this._sync(repository, true);
+ } catch (err) {
+ if (/Cancelled/i.test(err && (err.message || err.stderr || ''))) {
+ return;
+ }
+
+ throw err;
+ }
}
@command('git.publish', { repository: true })
@@ -2118,6 +2264,7 @@ export class CommandCenter {
uri = uri ? uri : (window.activeTextEditor && window.activeTextEditor.document.uri);
this.outputChannel.appendLine(`git.getSCMResource.uri ${uri && uri.toString()}`);
+
for (const r of this.model.repositories.map(r => r.root)) {
this.outputChannel.appendLine(`repo root ${r}`);
}
diff --git a/extensions/git/src/decorationProvider.ts b/extensions/git/src/decorationProvider.ts
index 0c27365bc51..9f17b20ee8e 100644
--- a/extensions/git/src/decorationProvider.ts
+++ b/extensions/git/src/decorationProvider.ts
@@ -20,7 +20,6 @@ class GitIgnoreDecorationProvider implements DecorationProvider {
private disposables: Disposable[] = [];
constructor(private model: Model) {
- //todo@joh -> events when the ignore status actually changes, not only when the file changes
this.onDidChangeDecorations = fireEvent(anyEvent(
filterEvent(workspace.onDidSaveTextDocument, e => e.fileName.endsWith('.gitignore')),
model.onDidOpenRepository,
@@ -119,7 +118,7 @@ class GitDecorationProvider implements DecorationProvider {
const uris = new Set([...this.decorations.keys()].concat([...newDecorations.keys()]));
this.decorations = newDecorations;
- this._onDidChangeDecorations.fire([...uris.values()].map(Uri.parse));
+ this._onDidChangeDecorations.fire([...uris.values()].map(value => Uri.parse(value, true)));
}
private collectDecorationData(group: GitResourceGroup, bucket: Map): void {
diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts
index 2ed2c487376..b306cab1255 100644
--- a/extensions/git/src/git.ts
+++ b/extensions/git/src/git.ts
@@ -11,10 +11,14 @@ import * as which from 'which';
import { EventEmitter } from 'events';
import iconv = require('iconv-lite');
import * as filetype from 'file-type';
-import { assign, groupBy, denodeify, IDisposable, toDisposable, dispose, mkdirp, readBytes, detectUnicodeEncoding, Encoding, onceEvent } from './util';
+import { assign, groupBy, denodeify, IDisposable, toDisposable, dispose, mkdirp, readBytes, detectUnicodeEncoding, Encoding, onceEvent, splitInChunks, Limiter } from './util';
import { CancellationToken } from 'vscode';
+import { URI } from 'vscode-uri';
import { detectEncoding } from './encoding';
-import { Ref, RefType, Branch, Remote, GitErrorCodes } from './api/git';
+import { Ref, RefType, Branch, Remote, GitErrorCodes, LogOptions, Change, Status } from './api/git';
+
+// https://github.com/microsoft/vscode/issues/65693
+const MAX_CLI_LENGTH = 30000;
const readfile = denodeify(fs.readFile);
@@ -306,11 +310,15 @@ function getGitErrorCode(stderr: string): string | undefined {
return GitErrorCodes.BranchAlreadyExists;
} else if (/'.+' is not a valid branch name/.test(stderr)) {
return GitErrorCodes.InvalidBranchName;
+ } else if (/Please,? commit your changes or stash them/.test(stderr)) {
+ return GitErrorCodes.DirtyWorkTree;
}
return undefined;
}
+const COMMIT_FORMAT = '%H\n%ae\n%P\n%B';
+
export class Git {
readonly path: string;
@@ -324,8 +332,8 @@ export class Git {
this.env = options.env || {};
}
- open(repository: string): Repository {
- return new Repository(this, repository);
+ open(repository: string, dotGit: string): Repository {
+ return new Repository(this, repository, dotGit);
}
async init(repository: string): Promise {
@@ -334,7 +342,7 @@ export class Git {
}
async clone(url: string, parentPath: string, cancellationToken?: CancellationToken): Promise {
- let baseFolderName = decodeURI(url).replace(/^.*\//, '').replace(/\.git$/, '') || 'repository';
+ let baseFolderName = decodeURI(url).replace(/[\/]+$/, '').replace(/^.*[\/\\]/, '').replace(/\.git$/, '') || 'repository';
let folderName = baseFolderName;
let folderPath = path.join(parentPath, folderName);
let count = 1;
@@ -347,7 +355,7 @@ export class Git {
await mkdirp(parentPath);
try {
- await this.exec(parentPath, ['clone', url, folderPath], { cancellationToken });
+ await this.exec(parentPath, ['clone', url.includes(' ') ? encodeURI(url) : url, folderPath], { cancellationToken });
} catch (err) {
if (err.stderr) {
err.stderr = err.stderr.replace(/^Cloning.+$/m, '').trim();
@@ -365,6 +373,17 @@ export class Git {
return path.normalize(result.stdout.trim());
}
+ async getRepositoryDotGit(repositoryPath: string): Promise {
+ const result = await this.exec(repositoryPath, ['rev-parse', '--git-dir']);
+ let dotGitPath = result.stdout.trim();
+
+ if (!path.isAbsolute(dotGitPath)) {
+ dotGitPath = path.join(repositoryPath, dotGitPath);
+ }
+
+ return path.normalize(dotGitPath);
+ }
+
async exec(cwd: string, args: string[], options: SpawnOptions = {}): Promise> {
options = assign({ cwd }, options || {});
return await this._exec(args, options);
@@ -450,6 +469,7 @@ export interface Commit {
hash: string;
message: string;
parents: string[];
+ authorEmail?: string | undefined;
}
export class GitStatusParser {
@@ -552,7 +572,7 @@ export function parseGitmodules(raw: string): Submodule[] {
return;
}
- const propertyMatch = /^\s*(\w+) = (.*)$/.exec(line);
+ const propertyMatch = /^\s*(\w+)\s+=\s+(.*)$/.exec(line);
if (!propertyMatch) {
return;
@@ -581,13 +601,13 @@ export function parseGitmodules(raw: string): Submodule[] {
}
export function parseGitCommit(raw: string): Commit | null {
- const match = /^([0-9a-f]{40})\n(.*)\n([^]*)$/m.exec(raw.trim());
+ const match = /^([0-9a-f]{40})\n(.*)\n(.*)\n([^]*)$/m.exec(raw.trim());
if (!match) {
return null;
}
- const parents = match[2] ? match[2].split(' ') : [];
- return { hash: match[1], message: match[3], parents };
+ const parents = match[3] ? match[3].split(' ') : [];
+ return { hash: match[1], message: match[4], parents, authorEmail: match[2] };
}
interface LsTreeElement {
@@ -629,6 +649,12 @@ export interface CommitOptions {
empty?: boolean;
}
+export interface PullOptions {
+ unshallow?: boolean;
+ tags?: boolean;
+ readonly cancellationToken?: CancellationToken;
+}
+
export enum ForcePushMode {
Force,
ForceWithLease
@@ -638,7 +664,8 @@ export class Repository {
constructor(
private _git: Git,
- private repositoryRoot: string
+ private repositoryRoot: string,
+ readonly dotGit: string
) { }
get git(): Git {
@@ -697,6 +724,41 @@ export class Repository {
});
}
+ async log(options?: LogOptions): Promise {
+ const maxEntries = options && typeof options.maxEntries === 'number' && options.maxEntries > 0 ? options.maxEntries : 32;
+ const args = ['log', '-' + maxEntries, `--pretty=format:${COMMIT_FORMAT}%x00%x00`];
+ const gitResult = await this.run(args);
+ if (gitResult.exitCode) {
+ // An empty repo.
+ return [];
+ }
+
+ const s = gitResult.stdout;
+ const result: Commit[] = [];
+ let index = 0;
+ while (index < s.length) {
+ let nextIndex = s.indexOf('\x00\x00', index);
+ if (nextIndex === -1) {
+ nextIndex = s.length;
+ }
+
+ let entry = s.substr(index, nextIndex - index);
+ if (entry.startsWith('\n')) {
+ entry = entry.substring(1);
+ }
+
+ const commit = parseGitCommit(entry);
+ if (!commit) {
+ break;
+ }
+
+ result.push(commit);
+ index = nextIndex + 2;
+ }
+
+ return result;
+ }
+
async bufferString(object: string, encoding: string = 'utf8', autoGuessEncoding = false): Promise {
const stdout = await this.buffer(object);
@@ -851,25 +913,53 @@ export class Repository {
return result.stdout;
}
- async diffWithHEAD(path: string): Promise {
+ diffWithHEAD(): Promise;
+ diffWithHEAD(path: string): Promise;
+ diffWithHEAD(path?: string | undefined): Promise;
+ async diffWithHEAD(path?: string | undefined): Promise {
+ if (!path) {
+ return await this.diffFiles(false);
+ }
+
const args = ['diff', '--', path];
const result = await this.run(args);
return result.stdout;
}
- async diffWith(ref: string, path: string): Promise {
+ diffWith(ref: string): Promise;
+ diffWith(ref: string, path: string): Promise;
+ diffWith(ref: string, path?: string | undefined): Promise;
+ async diffWith(ref: string, path?: string): Promise {
+ if (!path) {
+ return await this.diffFiles(false, ref);
+ }
+
const args = ['diff', ref, '--', path];
const result = await this.run(args);
return result.stdout;
}
- async diffIndexWithHEAD(path: string): Promise {
+ diffIndexWithHEAD(): Promise;
+ diffIndexWithHEAD(path: string): Promise;
+ diffIndexWithHEAD(path?: string | undefined): Promise;
+ async diffIndexWithHEAD(path?: string): Promise {
+ if (!path) {
+ return await this.diffFiles(true);
+ }
+
const args = ['diff', '--cached', '--', path];
const result = await this.run(args);
return result.stdout;
}
- async diffIndexWith(ref: string, path: string): Promise {
+ diffIndexWith(ref: string): Promise;
+ diffIndexWith(ref: string, path: string): Promise;
+ diffIndexWith(ref: string, path?: string | undefined): Promise;
+ async diffIndexWith(ref: string, path?: string): Promise {
+ if (!path) {
+ return await this.diffFiles(true, ref);
+ }
+
const args = ['diff', '--cached', ref, '--', path];
const result = await this.run(args);
return result.stdout;
@@ -881,13 +971,102 @@ export class Repository {
return result.stdout;
}
- async diffBetween(ref1: string, ref2: string, path: string): Promise {
- const args = ['diff', `${ref1}...${ref2}`, '--', path];
+ diffBetween(ref1: string, ref2: string): Promise;
+ diffBetween(ref1: string, ref2: string, path: string): Promise;
+ diffBetween(ref1: string, ref2: string, path?: string | undefined): Promise;
+ async diffBetween(ref1: string, ref2: string, path?: string): Promise {
+ const range = `${ref1}...${ref2}`;
+ if (!path) {
+ return await this.diffFiles(false, range);
+ }
+
+ const args = ['diff', range, '--', path];
const result = await this.run(args);
return result.stdout.trim();
}
+ private async diffFiles(cached: boolean, ref?: string): Promise {
+ const args = ['diff', '--name-status', '-z', '--diff-filter=ADMR'];
+ if (cached) {
+ args.push('--cached');
+ }
+
+ if (ref) {
+ args.push(ref);
+ }
+
+ const gitResult = await this.run(args);
+ if (gitResult.exitCode) {
+ return [];
+ }
+
+ const entries = gitResult.stdout.split('\x00');
+ let index = 0;
+ const result: Change[] = [];
+
+ entriesLoop:
+ while (index < entries.length - 1) {
+ const change = entries[index++];
+ const resourcePath = entries[index++];
+ if (!change || !resourcePath) {
+ break;
+ }
+
+ const originalUri = URI.file(path.isAbsolute(resourcePath) ? resourcePath : path.join(this.repositoryRoot, resourcePath));
+ let status: Status = Status.UNTRACKED;
+
+ // Copy or Rename status comes with a number, e.g. 'R100'. We don't need the number, so we use only first character of the status.
+ switch (change[0]) {
+ case 'M':
+ status = Status.MODIFIED;
+ break;
+
+ case 'A':
+ status = Status.INDEX_ADDED;
+ break;
+
+ case 'D':
+ status = Status.DELETED;
+ break;
+
+ // Rename contains two paths, the second one is what the file is renamed/copied to.
+ case 'R':
+ if (index >= entries.length) {
+ break;
+ }
+
+ const newPath = entries[index++];
+ if (!newPath) {
+ break;
+ }
+
+ const uri = URI.file(path.isAbsolute(newPath) ? newPath : path.join(this.repositoryRoot, newPath));
+ result.push({
+ uri,
+ renameUri: uri,
+ originalUri,
+ status: Status.INDEX_RENAMED
+ });
+
+ continue;
+
+ default:
+ // Unknown status
+ break entriesLoop;
+ }
+
+ result.push({
+ status,
+ originalUri,
+ uri: originalUri,
+ renameUri: originalUri,
+ });
+ }
+
+ return result;
+ }
+
async getMergeBase(ref1: string, ref2: string): Promise {
const args = ['merge-base', ref1, ref2];
const result = await this.run(args);
@@ -963,13 +1142,14 @@ export class Repository {
args.push(treeish);
}
- if (paths && paths.length) {
- args.push('--');
- args.push.apply(args, paths);
- }
-
try {
- await this.run(args);
+ if (paths && paths.length > 0) {
+ for (const chunk of splitInChunks(paths, MAX_CLI_LENGTH)) {
+ await this.run([...args, '--', ...chunk]);
+ }
+ } else {
+ await this.run(args);
+ }
} catch (err) {
if (/Please,? commit your changes or stash them/.test(err.stderr || '')) {
err.gitErrorCode = GitErrorCodes.DirtyWorkTree;
@@ -1042,7 +1222,7 @@ export class Repository {
}
async branch(name: string, checkout: boolean, ref?: string): Promise {
- const args = checkout ? ['checkout', '-q', '-b', name] : ['branch', '-q', name];
+ const args = checkout ? ['checkout', '-q', '-b', name, '--no-track'] : ['branch', '-q', name];
if (ref) {
args.push(ref);
@@ -1100,11 +1280,17 @@ export class Repository {
async clean(paths: string[]): Promise {
const pathsByGroup = groupBy(paths, p => path.dirname(p));
const groups = Object.keys(pathsByGroup).map(k => pathsByGroup[k]);
- const tasks = groups.map(paths => () => this.run(['clean', '-f', '-q', '--'].concat(paths)));
- for (let task of tasks) {
- await task();
+ const limiter = new Limiter(5);
+ const promises: Promise[] = [];
+
+ for (const paths of groups) {
+ for (const chunk of splitInChunks(paths, MAX_CLI_LENGTH)) {
+ promises.push(limiter.queue(() => this.run(['clean', '-f', '-q', '--', ...chunk])));
+ }
}
+
+ await Promise.all(promises);
}
async undo(): Promise {
@@ -1166,7 +1352,7 @@ export class Repository {
await this.run(args);
}
- async fetch(options: { remote?: string, ref?: string, all?: boolean, prune?: boolean } = {}): Promise {
+ async fetch(options: { remote?: string, ref?: string, all?: boolean, prune?: boolean, depth?: number } = {}): Promise {
const args = ['fetch'];
if (options.remote) {
@@ -1183,6 +1369,9 @@ export class Repository {
args.push('--prune');
}
+ if (typeof options.depth === 'number') {
+ args.push(`--depth=${options.depth}`);
+ }
try {
await this.run(args);
@@ -1197,8 +1386,16 @@ export class Repository {
}
}
- async pull(rebase?: boolean, remote?: string, branch?: string): Promise {
- const args = ['pull', '--tags'];
+ async pull(rebase?: boolean, remote?: string, branch?: string, options: PullOptions = {}): Promise {
+ const args = ['pull'];
+
+ if (options.tags) {
+ args.push('--tags');
+ }
+
+ if (options.unshallow) {
+ args.push('--unshallow');
+ }
if (rebase) {
args.push('-r');
@@ -1210,7 +1407,7 @@ export class Repository {
}
try {
- await this.run(args);
+ await this.run(args, options);
} catch (err) {
if (/^CONFLICT \([^)]+\): \b/m.test(err.stdout || '')) {
err.gitErrorCode = GitErrorCodes.Conflict;
@@ -1245,7 +1442,7 @@ export class Repository {
}
if (tags) {
- args.push('--tags');
+ args.push('--follow-tags');
}
if (remote) {
@@ -1271,16 +1468,33 @@ export class Repository {
}
}
+ async blame(path: string): Promise {
+ try {
+ const args = ['blame'];
+ args.push(path);
+
+ let result = await this.run(args);
+
+ return result.stdout.trim();
+ } catch (err) {
+ if (/^fatal: no such path/.test(err.stderr || '')) {
+ err.gitErrorCode = GitErrorCodes.NoPathFound;
+ }
+
+ throw err;
+ }
+ }
+
async createStash(message?: string, includeUntracked?: boolean): Promise {
try {
- const args = ['stash', 'save'];
+ const args = ['stash', 'push'];
if (includeUntracked) {
args.push('-u');
}
if (message) {
- args.push('--', message);
+ args.push('-m', message);
}
await this.run(args);
@@ -1388,6 +1602,14 @@ export class Repository {
}
}
+ async findTrackingBranches(upstreamBranch: string): Promise {
+ const result = await this.run(['for-each-ref', '--format', '%(refname:short)%00%(upstream:short)', 'refs/heads']);
+ return result.stdout.trim().split('\n')
+ .map(line => line.trim().split('\0'))
+ .filter(([_, upstream]) => upstream === upstreamBranch)
+ .map(([ref]) => ({ name: ref, type: RefType.Head } as Branch));
+ }
+
async getRefs(): Promise[ {
const result = await this.run(['for-each-ref', '--format', '%(refname) %(objectname)', '--sort', '-committerdate']);
@@ -1532,13 +1754,16 @@ export class Repository {
}
async getCommit(ref: string): Promise {
- const result = await this.run(['show', '-s', '--format=%H\n%P\n%B', ref]);
+ const result = await this.run(['show', '-s', `--format=${COMMIT_FORMAT}`, ref]);
return parseGitCommit(result.stdout) || Promise.reject('bad commit format');
}
async updateSubmodules(paths: string[]): Promise {
- const args = ['submodule', 'update', '--', ...paths];
- await this.run(args);
+ const args = ['submodule', 'update', '--'];
+
+ for (const chunk of splitInChunks(paths, MAX_CLI_LENGTH)) {
+ await this.run([...args, ...chunk]);
+ }
}
async getSubmodules(): Promise {
diff --git a/extensions/git/src/model.ts b/extensions/git/src/model.ts
index 22c690a5dfd..da6a940428e 100644
--- a/extensions/git/src/model.ts
+++ b/extensions/git/src/model.ts
@@ -12,7 +12,7 @@ import * as path from 'path';
import * as fs from 'fs';
import * as nls from 'vscode-nls';
import { fromGitUri } from './uri';
-import { GitErrorCodes } from './api/git';
+import { GitErrorCodes, APIState as State } from './api/git';
const localize = nls.loadMessageBundle();
@@ -63,26 +63,41 @@ export class Model {
private possibleGitRepositoryPaths = new Set();
+ private _onDidChangeState = new EventEmitter();
+ readonly onDidChangeState = this._onDidChangeState.event;
+
+ private _state: State = 'uninitialized';
+ get state(): State { return this._state; }
+
+ setState(state: State): void {
+ this._state = state;
+ this._onDidChangeState.fire(state);
+ }
+
private disposables: Disposable[] = [];
constructor(readonly git: Git, private globalState: Memento, private outputChannel: OutputChannel) {
workspace.onDidChangeWorkspaceFolders(this.onDidChangeWorkspaceFolders, this, this.disposables);
- this.onDidChangeWorkspaceFolders({ added: workspace.workspaceFolders || [], removed: [] });
-
window.onDidChangeVisibleTextEditors(this.onDidChangeVisibleTextEditors, this, this.disposables);
- this.onDidChangeVisibleTextEditors(window.visibleTextEditors);
-
workspace.onDidChangeConfiguration(this.onDidChangeConfiguration, this, this.disposables);
const fsWatcher = workspace.createFileSystemWatcher('**');
this.disposables.push(fsWatcher);
const onWorkspaceChange = anyEvent(fsWatcher.onDidChange, fsWatcher.onDidCreate, fsWatcher.onDidDelete);
- const onGitRepositoryChange = filterEvent(onWorkspaceChange, uri => /\/\.git\//.test(uri.path));
+ const onGitRepositoryChange = filterEvent(onWorkspaceChange, uri => /\/\.git/.test(uri.path));
const onPossibleGitRepositoryChange = filterEvent(onGitRepositoryChange, uri => !this.getRepository(uri));
onPossibleGitRepositoryChange(this.onPossibleGitRepositoryChange, this, this.disposables);
- this.scanWorkspaceFolders();
+ this.doInitialScan().finally(() => this.setState('initialized'));
+ }
+
+ private async doInitialScan(): Promise {
+ await Promise.all([
+ this.onDidChangeWorkspaceFolders({ added: workspace.workspaceFolders || [], removed: [] }),
+ this.onDidChangeVisibleTextEditors(window.visibleTextEditors),
+ this.scanWorkspaceFolders()
+ ]);
}
/**
@@ -157,8 +172,8 @@ export class Model {
.filter(r => !activeRepositories.has(r!.repository))
.filter(r => !(workspace.workspaceFolders || []).some(f => isDescendant(f.uri.fsPath, r!.repository.root))) as OpenRepository[];
- possibleRepositoryFolders.forEach(p => this.openRepository(p.uri.fsPath));
openRepositoriesToDispose.forEach(r => r.dispose());
+ await Promise.all(possibleRepositoryFolders.map(p => this.openRepository(p.uri.fsPath)));
}
private onDidChangeConfiguration(): void {
@@ -175,7 +190,7 @@ export class Model {
openRepositoriesToDispose.forEach(r => r.dispose());
}
- private onDidChangeVisibleTextEditors(editors: TextEditor[]): void {
+ private async onDidChangeVisibleTextEditors(editors: TextEditor[]): Promise {
const config = workspace.getConfiguration('git');
const autoRepositoryDetection = config.get('autoRepositoryDetection');
@@ -183,7 +198,7 @@ export class Model {
return;
}
- editors.forEach(editor => {
+ await Promise.all(editors.map(async editor => {
const uri = editor.document.uri;
if (uri.scheme !== 'file') {
@@ -196,8 +211,8 @@ export class Model {
return;
}
- this.openRepository(path.dirname(uri.fsPath));
- });
+ await this.openRepository(path.dirname(uri.fsPath));
+ }));
}
@sequentialize
@@ -232,9 +247,11 @@ export class Model {
return;
}
- const repository = new Repository(this.git.open(repositoryRoot), this.globalState);
+ const dotGit = await this.git.getRepositoryDotGit(repositoryRoot);
+ const repository = new Repository(this.git.open(repositoryRoot, dotGit), this.globalState, this.outputChannel);
this.open(repository);
+ await repository.status();
} catch (err) {
if (err.gitErrorCode === GitErrorCodes.NotAGitRepository) {
return;
@@ -420,4 +437,4 @@ export class Model {
this.possibleGitRepositoryPaths.clear();
this.disposables = dispose(this.disposables);
}
-}
\ No newline at end of file
+}
diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts
index 6a57806ac12..07dc1c231e8 100644
--- a/extensions/git/src/repository.ts
+++ b/extensions/git/src/repository.ts
@@ -3,9 +3,9 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-import { commands, Uri, Command, EventEmitter, Event, scm, SourceControl, SourceControlInputBox, SourceControlResourceGroup, SourceControlResourceState, SourceControlResourceDecorations, SourceControlInputBoxValidation, Disposable, ProgressLocation, window, workspace, WorkspaceEdit, ThemeColor, DecorationData, Memento, SourceControlInputBoxValidationType } from 'vscode';
+import { commands, Uri, Command, EventEmitter, Event, scm, SourceControl, SourceControlInputBox, SourceControlResourceGroup, SourceControlResourceState, SourceControlResourceDecorations, SourceControlInputBoxValidation, Disposable, ProgressLocation, window, workspace, WorkspaceEdit, ThemeColor, DecorationData, Memento, SourceControlInputBoxValidationType, OutputChannel, LogLevel, env, ProgressOptions, CancellationToken } from 'vscode';
import { Repository as BaseRepository, Commit, Stash, GitError, Submodule, CommitOptions, ForcePushMode } from './git';
-import { anyEvent, filterEvent, eventToPromise, dispose, find, isDescendant, IDisposable, onceEvent, EmptyDisposable, debounceEvent } from './util';
+import { anyEvent, filterEvent, eventToPromise, dispose, find, isDescendant, IDisposable, onceEvent, EmptyDisposable, debounceEvent, combinedDisposable } from './util';
import { memoize, throttle, debounce } from './decorators';
import { toGitUri } from './uri';
import { AutoFetcher } from './autofetch';
@@ -13,7 +13,8 @@ import * as path from 'path';
import * as nls from 'vscode-nls';
import * as fs from 'fs';
import { StatusBarCommands } from './statusbar';
-import { Branch, Ref, Remote, RefType, GitErrorCodes, Status } from './api/git';
+import { Branch, Ref, Remote, RefType, GitErrorCodes, Status, LogOptions, Change } from './api/git';
+import { IFileWatcher, watch } from './watch';
const timeout = (millis: number) => new Promise(c => setTimeout(c, millis));
@@ -206,7 +207,7 @@ export class Resource implements SourceControlResourceState {
case Status.INDEX_ADDED:
case Status.INTENT_TO_ADD:
return new ThemeColor('gitDecoration.addedResourceForeground');
- case Status.INDEX_RENAMED: // todo@joh - special color?
+ case Status.INDEX_RENAMED:
case Status.UNTRACKED:
return new ThemeColor('gitDecoration.untrackedResourceForeground');
case Status.IGNORED:
@@ -299,7 +300,10 @@ export const enum Operation {
GetObjectDetails = 'GetObjectDetails',
SubmoduleUpdate = 'SubmoduleUpdate',
RebaseContinue = 'RebaseContinue',
- Apply = 'Apply'
+ FindTrackingBranches = 'GetTracking',
+ Apply = 'Apply',
+ Blame = 'Blame',
+ Log = 'Log',
}
function isReadOnly(operation: Operation): boolean {
@@ -444,6 +448,91 @@ class ProgressManager {
}
}
+class FileEventLogger {
+
+ private eventDisposable: IDisposable = EmptyDisposable;
+ private logLevelDisposable: IDisposable = EmptyDisposable;
+
+ constructor(
+ private onWorkspaceWorkingTreeFileChange: Event,
+ private onDotGitFileChange: Event,
+ private outputChannel: OutputChannel
+ ) {
+ this.logLevelDisposable = env.onDidChangeLogLevel(this.onDidChangeLogLevel, this);
+ this.onDidChangeLogLevel(env.logLevel);
+ }
+
+ private onDidChangeLogLevel(level: LogLevel): void {
+ this.eventDisposable.dispose();
+
+ if (level > LogLevel.Debug) {
+ return;
+ }
+
+ this.eventDisposable = combinedDisposable([
+ this.onWorkspaceWorkingTreeFileChange(uri => this.outputChannel.appendLine(`[debug] [wt] Change: ${uri.fsPath}`)),
+ this.onDotGitFileChange(uri => this.outputChannel.appendLine(`[debug] [.git] Change: ${uri.fsPath}`))
+ ]);
+ }
+
+ dispose(): void {
+ this.eventDisposable.dispose();
+ this.logLevelDisposable.dispose();
+ }
+}
+
+class DotGitWatcher implements IFileWatcher {
+
+ readonly event: Event;
+
+ private emitter = new EventEmitter();
+ private transientDisposables: IDisposable[] = [];
+ private disposables: IDisposable[] = [];
+
+ constructor(
+ private repository: Repository,
+ private outputChannel: OutputChannel
+ ) {
+ const rootWatcher = watch(repository.dotGit);
+ this.disposables.push(rootWatcher);
+
+ const filteredRootWatcher = filterEvent(rootWatcher.event, uri => !/\/\.git(\/index\.lock)?$/.test(uri.path));
+ this.event = anyEvent(filteredRootWatcher, this.emitter.event);
+
+ repository.onDidRunGitStatus(this.updateTransientWatchers, this, this.disposables);
+ this.updateTransientWatchers();
+ }
+
+ private updateTransientWatchers() {
+ this.transientDisposables = dispose(this.transientDisposables);
+
+ if (!this.repository.HEAD || !this.repository.HEAD.upstream) {
+ return;
+ }
+
+ this.transientDisposables = dispose(this.transientDisposables);
+
+ const { name, remote } = this.repository.HEAD.upstream;
+ const upstreamPath = path.join(this.repository.dotGit, 'refs', 'remotes', remote, name);
+
+ try {
+ const upstreamWatcher = watch(upstreamPath);
+ this.transientDisposables.push(upstreamWatcher);
+ upstreamWatcher.event(this.emitter.fire, this.emitter, this.transientDisposables);
+ } catch (err) {
+ if (env.logLevel <= LogLevel.Error) {
+ this.outputChannel.appendLine(`Failed to watch ref '${upstreamPath}', is most likely packed.\n${err.stack || err}`);
+ }
+ }
+ }
+
+ dispose() {
+ this.emitter.dispose();
+ this.transientDisposables = dispose(this.transientDisposables);
+ this.disposables = dispose(this.disposables);
+ }
+}
+
export class Repository implements Disposable {
private _onDidChangeRepository = new EventEmitter();
@@ -541,36 +630,52 @@ export class Repository implements Disposable {
return this.repository.root;
}
+ get dotGit(): string {
+ return this.repository.dotGit;
+ }
+
private isRepositoryHuge = false;
private didWarnAboutLimit = false;
private isFreshRepository: boolean | undefined = undefined;
+
private disposables: Disposable[] = [];
constructor(
private readonly repository: BaseRepository,
- globalState: Memento
+ globalState: Memento,
+ outputChannel: OutputChannel
) {
- const fsWatcher = workspace.createFileSystemWatcher('**');
- this.disposables.push(fsWatcher);
+ const workspaceWatcher = workspace.createFileSystemWatcher('**');
+ this.disposables.push(workspaceWatcher);
- const workspaceFilter = (uri: Uri) => isDescendant(repository.root, uri.fsPath);
- const onWorkspaceDelete = filterEvent(fsWatcher.onDidDelete, workspaceFilter);
- const onWorkspaceChange = filterEvent(anyEvent(fsWatcher.onDidChange, fsWatcher.onDidCreate), workspaceFilter);
- const onRepositoryDotGitDelete = filterEvent(onWorkspaceDelete, uri => /\/\.git$/.test(uri.path));
- const onRepositoryChange = anyEvent(onWorkspaceDelete, onWorkspaceChange);
+ const onWorkspaceFileChange = anyEvent(workspaceWatcher.onDidChange, workspaceWatcher.onDidCreate, workspaceWatcher.onDidDelete);
+ const onWorkspaceRepositoryFileChange = filterEvent(onWorkspaceFileChange, uri => isDescendant(repository.root, uri.fsPath));
+ const onWorkspaceWorkingTreeFileChange = filterEvent(onWorkspaceRepositoryFileChange, uri => !/\/\.git($|\/)/.test(uri.path));
- // relevant repository changes are:
- // - DELETE .git folder
- // - ANY CHANGE within .git folder except .git itself and .git/index.lock
- const onRelevantRepositoryChange = anyEvent(
- onRepositoryDotGitDelete,
- filterEvent(onRepositoryChange, uri => !/\/\.git(\/index\.lock)?$/.test(uri.path))
- );
+ let onDotGitFileChange: Event;
- onRelevantRepositoryChange(this.onFSChange, this, this.disposables);
+ try {
+ const dotGitFileWatcher = new DotGitWatcher(this, outputChannel);
+ onDotGitFileChange = dotGitFileWatcher.event;
+ this.disposables.push(dotGitFileWatcher);
+ } catch (err) {
+ if (env.logLevel <= LogLevel.Error) {
+ outputChannel.appendLine(`Failed to watch '${this.dotGit}', reverting to legacy API file watched. Some events might be lost.\n${err.stack || err}`);
+ }
- const onRelevantGitChange = filterEvent(onRelevantRepositoryChange, uri => /\/\.git\//.test(uri.path));
- onRelevantGitChange(this._onDidChangeRepository.fire, this._onDidChangeRepository, this.disposables);
+ onDotGitFileChange = filterEvent(onWorkspaceRepositoryFileChange, uri => /\/\.git($|\/)/.test(uri.path));
+ }
+
+ // FS changes should trigger `git status`:
+ // - any change inside the repository working tree
+ // - any change whithin the first level of the `.git` folder, except the folder itself and `index.lock`
+ const onFileChange = anyEvent(onWorkspaceWorkingTreeFileChange, onDotGitFileChange);
+ onFileChange(this.onFileChange, this, this.disposables);
+
+ // Relevate repository changes should trigger virtual document change events
+ onDotGitFileChange(this._onDidChangeRepository.fire, this._onDidChangeRepository, this.disposables);
+
+ this.disposables.push(new FileEventLogger(onWorkspaceWorkingTreeFileChange, onDotGitFileChange, outputChannel));
const root = Uri.file(repository.root);
this._sourceControl = scm.createSourceControl('git', 'Git', root);
@@ -580,9 +685,9 @@ export class Repository implements Disposable {
this._sourceControl.inputBox.validateInput = this.validateInput.bind(this);
this.disposables.push(this._sourceControl);
- this._mergeGroup = this._sourceControl.createResourceGroup('merge', localize('merge changes', "Merge Changes"));
- this._indexGroup = this._sourceControl.createResourceGroup('index', localize('staged changes', "Staged Changes"));
- this._workingTreeGroup = this._sourceControl.createResourceGroup('workingTree', localize('changes', "Changes"));
+ this._mergeGroup = this._sourceControl.createResourceGroup('merge', localize('merge changes', "MERGE CHANGES"));
+ this._indexGroup = this._sourceControl.createResourceGroup('index', localize('staged changes', "STAGED CHANGES"));
+ this._workingTreeGroup = this._sourceControl.createResourceGroup('workingTree', localize('changes', "CHANGES"));
const updateIndexGroupVisibility = () => {
const config = workspace.getConfiguration('git', root);
@@ -620,7 +725,6 @@ export class Repository implements Disposable {
this.disposables.push(progressManager);
this.updateCommitTemplate();
- this.status();
}
validateInput(text: string, position: number): SourceControlInputBoxValidation | undefined {
@@ -671,20 +775,6 @@ export class Repository implements Disposable {
}
}
-
-
-
-
-
-
-
-
-
- // const subjectThreshold =
-
-
- // Math.max(config.get('inputValidationLength') || 50, config.get('subjectValidationLength') || 50, 0) || 50;
-
if (line.length <= threshold) {
if (setting !== 'always') {
return;
@@ -726,10 +816,18 @@ export class Repository implements Disposable {
return this.run(Operation.Config, () => this.repository.config('local', key));
}
+ getGlobalConfig(key: string): Promise {
+ return this.run(Operation.Config, () => this.repository.config('global', key));
+ }
+
setConfig(key: string, value: string): Promise {
return this.run(Operation.Config, () => this.repository.config('local', key, value));
}
+ log(options?: LogOptions): Promise {
+ return this.run(Operation.Log, () => this.repository.log(options));
+ }
+
@throttle
async status(): Promise {
await this.run(Operation.Status);
@@ -739,19 +837,31 @@ export class Repository implements Disposable {
return this.run(Operation.Diff, () => this.repository.diff(cached));
}
- diffWithHEAD(path: string): Promise {
+ diffWithHEAD(): Promise;
+ diffWithHEAD(path: string): Promise;
+ diffWithHEAD(path?: string | undefined): Promise;
+ diffWithHEAD(path?: string | undefined): Promise {
return this.run(Operation.Diff, () => this.repository.diffWithHEAD(path));
}
- diffWith(ref: string, path: string): Promise {
+ diffWith(ref: string): Promise;
+ diffWith(ref: string, path: string): Promise;
+ diffWith(ref: string, path?: string | undefined): Promise;
+ diffWith(ref: string, path?: string): Promise {
return this.run(Operation.Diff, () => this.repository.diffWith(ref, path));
}
- diffIndexWithHEAD(path: string): Promise {
+ diffIndexWithHEAD(): Promise;
+ diffIndexWithHEAD(path: string): Promise;
+ diffIndexWithHEAD(path?: string | undefined): Promise;
+ diffIndexWithHEAD(path?: string): Promise]