diff --git a/.devcontainer/README.md b/.devcontainer/README.md
new file mode 100644
index 00000000000..37ebbafb104
--- /dev/null
+++ b/.devcontainer/README.md
@@ -0,0 +1,100 @@
+# Code - OSS Development Container
+
+This repository includes configuration for a development container for working with Code - OSS in an isolated local container or using [GitHub Codespaces](https://github.com/features/codespaces).
+
+> **Tip:** The default VNC password is `vscode`. The VNC server runs on port `5901` with a web client at `6080`. For better performance, we recommend using a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/). Applications like the macOS Screen Sharing app will not perform as well.
+
+## Quick start - local
+
+1. Install Docker Desktop or Docker for Linux on your local machine. (See [docs](https://aka.ms/vscode-remote/containers/getting-started) for additional details.)
+
+2. **Important**: Docker needs at least **4 Cores and 6 GB of RAM (8 GB recommended)** to run full build. If you on macOS, or using the old Hyper-V engine for Windows, update these values for Docker Desktop by right-clicking on the Docker status bar item, going to **Preferences/Settings > Resources > Advanced**.
+
+ > **Note:** The [Resource Monitor](https://marketplace.visualstudio.com/items?itemName=mutantdino.resourcemonitor) extension is included in the container so you can keep an eye on CPU/Memory in the status bar.
+
+3. Install [Visual Studio Code Stable](https://code.visualstudio.com/) or [Insiders](https://code.visualstudio.com/insiders/) and the [Remote - Containers](https://aka.ms/vscode-remote/download/containers) extension.
+
+ 
+
+ > Note that the Remote - Containers extension requires the Visual Studio Code distribution of Code - OSS. See the [FAQ](https://aka.ms/vscode-remote/faq/license) for details.
+
+4. Press Ctrl/Cmd + Shift + P and select **Remote-Containers: Clone Repository in Container Volume...**.
+
+ > **Tip:** While you can use your local source tree instead, operations like `yarn install` can be slow on macOS or using the Hyper-V engine on Windows. We recommend the "clone repository in container" approach instead since it uses "named volume" rather than the local filesystem.
+
+5. Type `https://github.com/microsoft/vscode` (or a branch or PR URL) in the input box and press Enter.
+
+6. After the container is running, open a web browser and go to [http://localhost:6080](http://localhost:6080) or use a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to connect to `localhost:5901` and enter `vscode` as the password.
+
+Anything you start in VS Code or the integrated terminal will appear here.
+
+Next: **[Try it out!](#try-it)**
+
+## Quick start - GitHub Codespaces
+
+> **IMPORTANT:** The current free user beta for GitHub Codespaces uses a "Basic" sized codespace which does not have enough RAM to run a full build of VS Code and will be considerably slower during codespace start and running VS Code. You'll soon be able to use a "Standard" sized codespace (4-core, 8GB) that will be better suited for this purpose (along with even larger sizes should you need it).
+
+1. From the [microsoft/vscode GitHub repository](https://github.com/microsoft/vscode), click on the **Code** dropdown, select **Open with Codespaces**, and the **New codespace**
+
+ > Note that you will not see these options if you are not in the beta yet.
+
+2. After the codespace is up and running in your browser, press Ctrl/Cmd + Shift + P and select **View: Show Remote Explorer**.
+
+3. You should see port `6080` under **Forwarded Ports**. Select the line and click on the globe icon to open it in a browser tab.
+
+ > If you do not see port `6080`, press Ctrl/Cmd + Shift + P, select **Forward a Port** and enter port `6080`.
+
+4. In the new tab, you should see noVNC. Click **Connect** and enter `vscode` as the password.
+
+Anything you start in VS Code or the integrated terminal will appear here.
+
+Next: **[Try it out!](#try-it)**
+
+### Using VS Code with GitHub Codespaces
+
+You will likely see better performance when accessing the codespace you created from VS Code since you can use a[VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/). Here's how to do it.
+
+1. [Create a codespace](#quick-start---github-codespaces) if you have not already.
+
+2. Set up [VS Code for use with GitHub Codespaces](https://docs.github.com/github/developing-online-with-codespaces/using-codespaces-in-visual-studio-code)
+
+3. After the VS Code is up and running, press Ctrl/Cmd + Shift + P, choose **Codespaces: Connect to Codespace**, and select the codespace you created.
+
+4. After you've connected to the codespace, use a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to connect to `localhost:5901` and enter `vscode` as the password.
+
+5. Anything you start in VS Code or the integrated terminal will appear here.
+
+Next: **[Try it out!](#try-it)**
+
+## Try it!
+
+This container uses the [Fluxbox](http://fluxbox.org/) window manager to keep things lean. **Right-click on the desktop** to see menu options. It works with GNOME and GTK applications, so other tools can be installed if needed.
+
+Note you can also set the resolution from the command line by typing `set-resolution`.
+
+To start working with Code - OSS, follow these steps:
+
+1. In your local VS Code, open a terminal (Ctrl/Cmd + Shift + \`) and type the following commands:
+
+ ```bash
+ yarn install
+ bash scripts/code.sh
+ ```
+
+ Note that a previous run of `yarn install` will already be cached, so this step should simply pick up any recent differences.
+
+2. After the build is complete, open a web browser or a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to the desktop environnement as described in the quick start and enter `vscode` as the password.
+
+3. You should now see Code - OSS!
+
+Next, let's try debugging.
+
+1. Shut down Code - OSS by clicking the box in the upper right corner of the Code - OSS window through your browser or VNC viewer.
+
+2. Go to your local VS Code client, and use Run / Debug view to launch the **VS Code** configuration. (Typically the default, so you can likely just press F5).
+
+ > **Note:** If launching times out, you can increase the value of `timeout` in the "VS Code", "Attach Main Process", "Attach Extension Host", and "Attach to Shared Process" configurations in [launch.json](../.vscode/launch.json). However, running `scripts/code.sh` first will set up Electron which will usually solve timeout issues.
+
+3. After a bit, Code - OSS will appear with the debugger attached!
+
+Enjoy!
diff --git a/.devcontainer/cache/.gitignore b/.devcontainer/cache/.gitignore
new file mode 100644
index 00000000000..4f96ddff402
--- /dev/null
+++ b/.devcontainer/cache/.gitignore
@@ -0,0 +1 @@
+*.manifest
diff --git a/.devcontainer/cache/before-cache.sh b/.devcontainer/cache/before-cache.sh
new file mode 100755
index 00000000000..cfa7acc9d95
--- /dev/null
+++ b/.devcontainer/cache/before-cache.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+# This file establishes a basline for the reposuitory before any steps in the "prepare.sh"
+# are run. Its just a find command that filters out a few things we don't need to watch.
+
+set -e
+
+SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
+SOURCE_FOLDER="${1:-"."}"
+
+cd "${SOURCE_FOLDER}"
+echo "[$(date)] Generating ""before"" manifest..."
+find -L . -not -path "*/.git/*" -and -not -path "${SCRIPT_PATH}/*.manifest" -type f > "${SCRIPT_PATH}/before.manifest"
+echo "[$(date)] Done!"
+
diff --git a/.devcontainer/cache/build-cache-image.sh b/.devcontainer/cache/build-cache-image.sh
new file mode 100755
index 00000000000..78d0fbfdf0c
--- /dev/null
+++ b/.devcontainer/cache/build-cache-image.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+# This file simply wraps the dockeer build command used to build the image with the
+# cached result of the commands from "prepare.sh" and pushes it to the specified
+# container image registry.
+
+set -e
+
+SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
+CONTAINER_IMAGE_REPOSITORY="$1"
+BRANCH="${2:-"master"}"
+
+if [ "${CONTAINER_IMAGE_REPOSITORY}" = "" ]; then
+ echo "Container repository not specified!"
+ exit 1
+fi
+
+TAG="branch-${BRANCH//\//-}"
+echo "[$(date)] ${BRANCH} => ${TAG}"
+cd "${SCRIPT_PATH}/../.."
+
+echo "[$(date)] Starting image build..."
+docker build -t ${CONTAINER_IMAGE_REPOSITORY}:"${TAG}" -f "${SCRIPT_PATH}/cache.Dockerfile" .
+echo "[$(date)] Image build complete."
+
+echo "[$(date)] Pushing image..."
+docker push ${CONTAINER_IMAGE_REPOSITORY}:"${TAG}"
+echo "[$(date)] Done!"
diff --git a/.devcontainer/cache/cache-diff.sh b/.devcontainer/cache/cache-diff.sh
new file mode 100755
index 00000000000..362337ce6eb
--- /dev/null
+++ b/.devcontainer/cache/cache-diff.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# This file is used to archive off a copy of any differences in the source tree into another location
+# in the image. Once the codespace is up, this will be restored into its proper location (which is
+# quick and happens parallel to other startup activities)
+
+set -e
+
+SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
+SOURCE_FOLDER="${1:-"."}"
+CACHE_FOLDER="${2:-"/usr/local/etc/devcontainer-cache"}"
+
+echo "[$(date)] Starting cache operation..."
+cd "${SOURCE_FOLDER}"
+echo "[$(date)] Determining diffs..."
+find -L . -not -path "*/.git/*" -and -not -path "${SCRIPT_PATH}/*.manifest" -type f > "${SCRIPT_PATH}/after.manifest"
+grep -Fxvf "${SCRIPT_PATH}/before.manifest" "${SCRIPT_PATH}/after.manifest" > "${SCRIPT_PATH}/cache.manifest"
+echo "[$(date)] Archiving diffs..."
+mkdir -p "${CACHE_FOLDER}"
+tar -cf "${CACHE_FOLDER}/cache.tar" --totals --files-from "${SCRIPT_PATH}/cache.manifest"
+echo "[$(date)] Done! $(du -h "${CACHE_FOLDER}/cache.tar")"
diff --git a/.devcontainer/cache/cache.Dockerfile b/.devcontainer/cache/cache.Dockerfile
new file mode 100644
index 00000000000..79af3ee8a35
--- /dev/null
+++ b/.devcontainer/cache/cache.Dockerfile
@@ -0,0 +1,14 @@
+# This dockerfile is used to build up from a base image to create an image with cached results of running "prepare.sh".
+# Other image contents: https://github.com/microsoft/vscode-dev-containers/blob/master/repository-containers/images/github.com/microsoft/vscode/.devcontainer/base.Dockerfile
+FROM mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:dev
+
+ARG USERNAME=node
+COPY --chown=${USERNAME}:${USERNAME} . /repo-source-tmp/
+RUN mkdir /usr/local/etc/devcontainer-cache \
+ && chown ${USERNAME} /usr/local/etc/devcontainer-cache /repo-source-tmp \
+ && su ${USERNAME} -c "\
+ cd /repo-source-tmp \
+ && .devcontainer/cache/before-cache.sh \
+ && .devcontainer/prepare.sh \
+ && .devcontainer/cache/cache-diff.sh" \
+ && rm -rf /repo-source-tmp
diff --git a/.devcontainer/cache/restore-diff.sh b/.devcontainer/cache/restore-diff.sh
new file mode 100755
index 00000000000..2f418d87480
--- /dev/null
+++ b/.devcontainer/cache/restore-diff.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# This file restores the results of the "prepare.sh" into their proper locations
+# once the container has been created. It runs as a postCreateCommand which
+# in GitHub Codespaces occurs parallel to other startup activities and does not
+# really add to the overal startup time given how quick the operation ends up being.
+
+set -e
+
+SOURCE_FOLDER="$(cd "${1:-"."}" && pwd)"
+CACHE_FOLDER="${2:-"/usr/local/etc/devcontainer-cache"}"
+
+if [ ! -d "${CACHE_FOLDER}" ]; then
+ echo "No cache folder found."
+ exit 0
+fi
+
+echo "[$(date)] Expanding $(du -h "${CACHE_FOLDER}/cache.tar") file to ${SOURCE_FOLDER}..."
+cd "${SOURCE_FOLDER}"
+tar -xf "${CACHE_FOLDER}/cache.tar"
+rm -f "${CACHE_FOLDER}/cache.tar"
+echo "[$(date)] Done!"
+
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 00000000000..cd632e134ef
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,30 @@
+{
+ "name": "Code - OSS",
+
+ // Image contents: https://github.com/microsoft/vscode-dev-containers/blob/master/repository-containers/images/github.com/microsoft/vscode/.devcontainer/base.Dockerfile
+ "image": "mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:branch-master",
+
+ "workspaceMount": "source=${localWorkspaceFolder},target=/home/node/workspace/vscode,type=bind,consistency=cached",
+ "workspaceFolder": "/home/node/workspace/vscode",
+ "overrideCommand": false,
+ "runArgs": [ "--init", "--security-opt", "seccomp=unconfined"],
+
+ "settings": {
+ "terminal.integrated.shell.linux": "/bin/bash",
+ "resmon.show.battery": false,
+ "resmon.show.cpufreq": false
+ },
+
+ // noVNC, VNC, debug ports
+ "forwardPorts": [6080, 5901, 9222],
+
+ "extensions": [
+ "dbaeumer.vscode-eslint",
+ "mutantdino.resourcemonitor"
+ ],
+
+ // Optionally loads a cached yarn install for the repo
+ "postCreateCommand": ".devcontainer/cache/restore-diff.sh",
+
+ "remoteUser": "node"
+}
diff --git a/.devcontainer/prepare.sh b/.devcontainer/prepare.sh
new file mode 100755
index 00000000000..47a77a533ae
--- /dev/null
+++ b/.devcontainer/prepare.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+# This file contains the steps that should be run when creating the intermediary image that contains
+# contents for that should be in the image by default. It will be used to build up from the base image
+# to create an image that speeds up first time use of the dev container by "caching" the results
+# of these commands. Developers can still run these commands without an issue once the container is
+# up, but only differences will be processed which also speeds up the first time these operations occur.
+
+yarn install
+yarn electron
diff --git a/.eslintignore b/.eslintignore
index f186c7ecd78..b2c4a5b6efa 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -5,6 +5,7 @@
**/vs/loader.js
**/insane/**
**/marked/**
+**/semver/**
**/test/**/*.js
**/node_modules/**
**/vscode-api-tests/testWorkspace/**
diff --git a/.eslintrc.json b/.eslintrc.json
index 65054e9b4a4..055bc22f8e4 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -7,7 +7,8 @@
},
"plugins": [
"@typescript-eslint",
- "jsdoc"
+ "jsdoc",
+ "mocha"
],
"rules": {
"constructor-super": "warn",
@@ -41,8 +42,17 @@
"no-var": "warn",
"jsdoc/no-types": "warn",
"semi": "off",
+ "mocha/no-exclusive-tests": "warn",
"@typescript-eslint/semi": "warn",
- "@typescript-eslint/class-name-casing": "warn",
+ "@typescript-eslint/naming-convention": [
+ "warn",
+ {
+ "selector": "class",
+ "format": [
+ "PascalCase"
+ ]
+ }
+ ],
"code-no-unused-expressions": [
"warn",
{
@@ -511,7 +521,10 @@
"**/vs/workbench/services/**/common/**",
"**/vs/workbench/api/**/common/**",
"vscode-textmate",
- "vscode-oniguruma"
+ "vscode-oniguruma",
+ "iconv-lite-umd",
+ "tas-client-umd",
+ "jschardet"
]
},
{
@@ -540,7 +553,9 @@
"**/vs/workbench/api/{common,browser}/**",
"**/vs/workbench/services/**/{common,browser}/**",
"vscode-textmate",
- "vscode-oniguruma"
+ "vscode-oniguruma",
+ "iconv-lite-umd",
+ "jschardet"
]
},
{
@@ -566,7 +581,11 @@
"**/vs/editor/**",
"**/vs/workbench/{common,browser,electron-sandbox}/**",
"**/vs/workbench/api/{common,browser,electron-sandbox}/**",
- "**/vs/workbench/services/**/{common,browser,electron-sandbox}/**"
+ "**/vs/workbench/services/**/{common,browser,electron-sandbox}/**",
+ "vscode-textmate",
+ "vscode-oniguruma",
+ "iconv-lite-umd",
+ "jschardet"
]
},
{
@@ -618,7 +637,6 @@
{
"target": "**/vs/workbench/contrib/extensions/browser/**",
"restrictions": [
- "semver-umd",
"vs/nls",
"vs/css!./**/*",
"**/vs/base/**/{common,browser}/**",
@@ -632,7 +650,6 @@
{
"target": "**/vs/workbench/contrib/update/browser/update.ts",
"restrictions": [
- "semver-umd",
"vs/nls",
"vs/css!./**/*",
"**/vs/base/**/{common,browser}/**",
@@ -643,6 +660,20 @@
"**/vs/workbench/services/**/{common,browser}/**"
]
},
+ {
+ "target": "**/vs/workbench/contrib/notebook/common/**",
+ "restrictions": [
+ "vs/nls",
+ "vs/css!./**/*",
+ "**/vs/base/**/{common,worker}/**",
+ "**/vs/platform/**/common/**",
+ "**/vs/editor/**",
+ "**/vs/workbench/common/**",
+ "**/vs/workbench/api/common/**",
+ "**/vs/workbench/services/**/common/**",
+ "**/vs/workbench/contrib/**/common/**"
+ ]
+ },
{
"target": "**/vs/workbench/contrib/**/common/**",
"restrictions": [
@@ -668,7 +699,11 @@
"**/vs/workbench/{common,browser}/**",
"**/vs/workbench/api/{common,browser}/**",
"**/vs/workbench/services/**/{common,browser}/**",
- "**/vs/workbench/contrib/**/{common,browser}/**"
+ "**/vs/workbench/contrib/**/{common,browser}/**",
+ "vscode-textmate",
+ "vscode-oniguruma",
+ "iconv-lite-umd",
+ "jschardet"
]
},
{
@@ -697,7 +732,11 @@
"**/vs/workbench/{common,browser,electron-sandbox}/**",
"**/vs/workbench/api/{common,browser,electron-sandbox}/**",
"**/vs/workbench/services/**/{common,browser,electron-sandbox}/**",
- "**/vs/workbench/contrib/**/{common,browser,electron-sandbox}/**"
+ "**/vs/workbench/contrib/**/{common,browser,electron-sandbox}/**",
+ "vscode-textmate",
+ "vscode-oniguruma",
+ "iconv-lite-umd",
+ "jschardet"
]
},
{
@@ -715,6 +754,18 @@
"*" // node modules
]
},
+ {
+ "target": "**/vs/code/browser/**",
+ "restrictions": [
+ "vs/nls",
+ "vs/css!./**/*",
+ "**/vs/base/**/{common,browser}/**",
+ "**/vs/base/parts/**/{common,browser}/**",
+ "**/vs/platform/**/{common,browser}/**",
+ "**/vs/code/**/{common,browser}/**",
+ "**/vs/workbench/workbench.web.api"
+ ]
+ },
{
"target": "**/vs/code/node/**",
"restrictions": [
@@ -785,6 +836,18 @@
"**/vs/workbench/workbench.common.main"
]
},
+ {
+ "target": "**/src/vs/workbench/workbench.web.api.ts",
+ "restrictions": [
+ "vs/nls",
+ "**/vs/base/**/{common,browser}/**",
+ "**/vs/base/parts/**/{common,browser}/**",
+ "**/vs/platform/**/{common,browser}/**",
+ "**/vs/editor/**",
+ "**/vs/workbench/**/{common,browser}/**",
+ "**/vs/workbench/workbench.web.main"
+ ]
+ },
{
"target": "**/src/vs/workbench/workbench.sandbox.main.ts",
"restrictions": [
diff --git a/.github/classifier.json b/.github/classifier.json
index 8dd33213239..b4588153b7b 100644
--- a/.github/classifier.json
+++ b/.github/classifier.json
@@ -1,82 +1,182 @@
{
- "$schema": "https://raw.githubusercontent.com/microsoft/vscode-github-triage-actions/master/classifier/apply/apply-labels/classifier-config.schema.json",
+ "$schema": "https://raw.githubusercontent.com/microsoft/vscode-github-triage-actions/master/classifier-deep/apply/apply-labels/deep-classifier-config.schema.json",
+ "vacation": [],
"assignees": {
- "JacksonKearl": {
- "assign": true
- },
- "bpasero": {
- "assign": true
- },
- "Tyriar": {
- "assign": true
- },
- "misolori": {
- "assign": true
- },
- "joaomoreno": {
- "assign": true
- }
+ "JacksonKearl": {"accuracy": 0.5}
},
"labels": {
- "search-editor": {
- "applyLabel": true,
- "assign": [
- "JacksonKearl"
- ]
- },
- "snippets": {
- "applyLabel": false,
- "assign": [
- "jrieken"
- ]
- },
- "integrated-terminal": {
- "applyLabel": true,
- "assign": [
- "Tyriar"
- ]
- },
- "workbench-editors": {
- "applyLabel": false,
- "assign": [
- "bpasero"
- ]
- },
- "workbench-history": {
- "applyLabel": false,
- "assign": [
- "bpasero"
- ]
- },
- "workbench-notifications": {
- "applyLabel": false,
- "assign": [
- "bpasero"
- ]
- },
- "workbench-tabs": {
- "applyLabel": false,
- "assign": [
- "bpasero"
- ]
- },
- "icons-product": {
- "applyLabel": true,
- "assign": [
- "misolori"
- ]
- },
- "ux": {
- "applyLabel": true,
- "assign": [
- "misolori"
- ]
- },
- "git": {
- "applyLabel": false,
- "assign": [
- "joaomoreno"
- ]
+ "L10N": {"assign": []},
+ "VIM": {"assign": []},
+ "api": {"assign": ["jrieken"]},
+ "api-finalization": {"assign": []},
+ "api-proposal": {"assign": ["jrieken"]},
+ "authentication": {"assign": ["RMacfarlane"]},
+ "breadcrumbs": {"assign": ["jrieken"]},
+ "callhierarchy": {"assign": ["jrieken"]},
+ "code-lens": {"assign": ["jrieken"]},
+ "color-palette": {"assign": []},
+ "comments": {"assign": ["rebornix"]},
+ "config": {"assign": ["sandy081"]},
+ "context-keys": {"assign": []},
+ "css-less-scss": {"assign": ["aeschli"]},
+ "custom-editors": {"assign": ["mjbvz"]},
+ "debug": {"assign": ["weinand"]},
+ "debug-console": {"assign": ["weinand"]},
+ "dialogs": {"assign": ["sbatten"]},
+ "diff-editor": {"assign": []},
+ "dropdown": {"assign": []},
+ "editor": {"assign": ["rebornix"]},
+ "editor-autoclosing": {"assign": []},
+ "editor-autoindent": {"assign": ["rebornix"]},
+ "editor-bracket-matching": {"assign": []},
+ "editor-clipboard": {"assign": ["jrieken"]},
+ "editor-code-actions": {"assign": []},
+ "editor-color-picker": {"assign": ["rebornix"]},
+ "editor-columnselect": {"assign": ["alexdima"]},
+ "editor-commands": {"assign": ["jrieken"]},
+ "editor-comments": {"assign": []},
+ "editor-contrib": {"assign": []},
+ "editor-core": {"assign": []},
+ "editor-drag-and-drop": {"assign": ["rebornix"]},
+ "editor-error-widget": {"assign": ["sandy081"]},
+ "editor-find": {"assign": ["rebornix"]},
+ "editor-folding": {"assign": ["aeschli"]},
+ "editor-hover": {"assign": []},
+ "editor-indent-guides": {"assign": []},
+ "editor-input": {"assign": ["alexdima"]},
+ "editor-input-IME": {"assign": ["rebornix"]},
+ "editor-minimap": {"assign": []},
+ "editor-multicursor": {"assign": ["alexdima"]},
+ "editor-parameter-hints": {"assign": []},
+ "editor-render-whitespace": {"assign": []},
+ "editor-rendering": {"assign": ["alexdima"]},
+ "editor-scrollbar": {"assign": []},
+ "editor-symbols": {"assign": ["jrieken"]},
+ "editor-synced-region": {"assign": ["aeschli"]},
+ "editor-textbuffer": {"assign": ["rebornix"]},
+ "editor-theming": {"assign": []},
+ "editor-wordnav": {"assign": ["alexdima"]},
+ "editor-wrapping": {"assign": ["alexdima"]},
+ "emmet": {"assign": []},
+ "error-list": {"assign": ["sandy081"]},
+ "explorer-custom": {"assign": ["sandy081"]},
+ "extension-host": {"assign": []},
+ "extensions": {"assign": ["sandy081"]},
+ "extensions-development": {"assign": []},
+ "file-decorations": {"assign": ["jrieken"]},
+ "file-encoding": {"assign": ["bpasero"]},
+ "file-explorer": {"assign": ["isidorn"]},
+ "file-glob": {"assign": []},
+ "file-guess-encoding": {"assign": ["bpasero"]},
+ "file-io": {"assign": ["bpasero"]},
+ "file-watcher": {"assign": ["bpasero"]},
+ "font-rendering": {"assign": []},
+ "formatting": {"assign": []},
+ "git": {"assign": ["joaomoreno"]},
+ "gpu": {"assign": ["deepak1556"]},
+ "grammar": {"assign": ["mjbvz"]},
+ "grid-view": {"assign": ["joaomoreno"]},
+ "html": {"assign": ["aeschli"]},
+ "i18n": {"assign": []},
+ "icon-brand": {"assign": []},
+ "icons-product": {"assign": ["misolori"]},
+ "install-update": {"assign": []},
+ "integrated-terminal": {"assign": ["meganrogge"]},
+ "integrated-terminal-conpty": {"assign": ["meganrogge"]},
+ "integrated-terminal-links": {"assign": ["meganrogge"]},
+ "integration-test": {"assign": []},
+ "intellisense-config": {"assign": []},
+ "ipc": {"assign": ["joaomoreno"]},
+ "issue-bot": {"assign": ["chrmarti"]},
+ "issue-reporter": {"assign": ["RMacfarlane"]},
+ "javascript": {"assign": ["mjbvz"]},
+ "json": {"assign": ["aeschli"]},
+ "keybindings": {"assign": []},
+ "keybindings-editor": {"assign": ["sandy081"]},
+ "keyboard-layout": {"assign": ["alexdima"]},
+ "languages-basic": {"assign": ["aeschli"]},
+ "languages-diagnostics": {"assign": ["jrieken"]},
+ "layout": {"assign": ["sbatten"]},
+ "lcd-text-rendering": {"assign": []},
+ "list": {"assign": ["joaomoreno"]},
+ "log": {"assign": []},
+ "markdown": {"assign": ["mjbvz"]},
+ "marketplace": {"assign": []},
+ "menus": {"assign": ["sbatten"]},
+ "merge-conflict": {"assign": ["chrmarti"]},
+ "notebook": {"assign": ["rebornix"]},
+ "outline": {"assign": ["jrieken"]},
+ "output": {"assign": []},
+ "perf": {"assign": []},
+ "perf-bloat": {"assign": []},
+ "perf-startup": {"assign": []},
+ "php": {"assign": ["roblourens"]},
+ "portable-mode": {"assign": ["joaomoreno"]},
+ "proxy": {"assign": []},
+ "quick-pick": {"assign": ["chrmarti"]},
+ "references-viewlet": {"assign": ["jrieken"]},
+ "release-notes": {"assign": []},
+ "remote": {"assign": []},
+ "remote-explorer": {"assign": ["alexr00"]},
+ "rename": {"assign": ["jrieken"]},
+ "scm": {"assign": ["joaomoreno"]},
+ "screencast-mode": {"assign": ["lszomoru"]},
+ "search": {"assign": ["roblourens"]},
+ "search-editor": {"assign": ["JacksonKearl"]},
+ "search-replace": {"assign": ["sandy081"]},
+ "semantic-tokens": {"assign": ["aeschli"]},
+ "settings-editor": {"assign": ["roblourens"]},
+ "settings-sync": {"assign": ["sandy081"]},
+ "simple-file-dialog": {"assign": ["alexr00"]},
+ "smart-select": {"assign": ["jrieken"]},
+ "smoke-test": {"assign": []},
+ "snap": {"assign": ["joaomoreno"]},
+ "snippets": {"assign": ["jrieken"]},
+ "splitview": {"assign": ["joaomoreno"]},
+ "suggest": {"assign": ["jrieken"]},
+ "tasks": {"assign": ["alexr00"], "accuracy": 0.85},
+ "telemetry": {"assign": []},
+ "themes": {"assign": ["aeschli"]},
+ "timeline": {"assign": ["eamodio"]},
+ "timeline-git": {"assign": ["eamodio"]},
+ "titlebar": {"assign": ["sbatten"]},
+ "tokenization": {"assign": []},
+ "tree": {"assign": ["joaomoreno"]},
+ "typescript": {"assign": ["mjbvz"]},
+ "undo-redo": {"assign": []},
+ "unit-test": {"assign": []},
+ "uri": {"assign": ["jrieken"]},
+ "ux": {"assign": ["misolori"]},
+ "variable-resolving": {"assign": []},
+ "vscode-build": {"assign": []},
+ "web": {"assign": ["bpasero"]},
+ "webview": {"assign": ["mjbvz"]},
+ "workbench-cli": {"assign": []},
+ "workbench-diagnostics": {"assign": ["RMacfarlane"]},
+ "workbench-dnd": {"assign": ["bpasero"]},
+ "workbench-editor-grid": {"assign": ["sbatten"]},
+ "workbench-editors": {"assign": ["bpasero"]},
+ "workbench-electron": {"assign": ["deepak1556"]},
+ "workbench-feedback": {"assign": ["bpasero"]},
+ "workbench-history": {"assign": ["bpasero"]},
+ "workbench-hot-exit": {"assign": []},
+ "workbench-launch": {"assign": []},
+ "workbench-link": {"assign": []},
+ "workbench-multiroot": {"assign": ["bpasero"]},
+ "workbench-notifications": {"assign": ["bpasero"]},
+ "workbench-os-integration": {"assign": []},
+ "workbench-rapid-render": {"assign": ["jrieken"]},
+ "workbench-run-as-admin": {"assign": []},
+ "workbench-state": {"assign": ["bpasero"]},
+ "workbench-status": {"assign": ["bpasero"]},
+ "workbench-tabs": {"assign": ["bpasero"]},
+ "workbench-touchbar": {"assign": ["bpasero"]},
+ "workbench-views": {"assign": ["sbatten"]},
+ "workbench-welcome": {"assign": ["chrmarti"]},
+ "workbench-window": {"assign": ["bpasero"]},
+ "workbench-zen": {"assign": ["isidorn"]},
+ "workspace-edit": {"assign": ["jrieken"]},
+ "workspace-symbols": {"assign": []},
+ "zoom": {"assign": ["alexdima"] }
}
- }
}
diff --git a/.github/commands.json b/.github/commands.json
index 6793e0036b4..7a1220f7d43 100644
--- a/.github/commands.json
+++ b/.github/commands.json
@@ -133,6 +133,25 @@
"action": "updateLabels",
"addLabel": "~needs more info"
},
+ {
+ "type": "comment",
+ "name": "jsDebugLogs",
+ "action": "updateLabels",
+ "addLabel": "needs more info",
+ "comment": "Please collect trace logs using the following instructions:\n\n> If you're able to, add `\"trace\": true` to your `launch.json` and reproduce the issue. The location of the log file on your disk will be written to the Debug Console. Share that with us.\n>\n> âš ï¸ This log file will not contain source code, but will contain file paths. You can drop it into https://microsoft.github.io/vscode-pwa-analyzer/index.html to see what it contains. If you'd rather not share the log publicly, you can email it to connor@xbox.com"
+ },
+ {
+ "type": "comment",
+ "name": "closedWith",
+ "allowUsers": [
+ "cleidigh",
+ "usernamehw",
+ "gjsjohnmurray",
+ "IllusionMH"
+ ],
+ "action": "close",
+ "addLabel": "unreleased"
+ },
{
"type": "label",
"name": "~needs more info",
@@ -181,7 +200,7 @@
],
"action": "close",
"addLabel": "*caused-by-extension",
- "comment": "It looks like this is caused by the Python extension. Please file it with the repository [here](https://github.com/Microsoft/vscode-python). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
+ "comment": "It looks like this is caused by the Python extension. Please file it with the repository [here](https://github.com/microsoft/vscode-python). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
},
{
"type": "comment",
@@ -194,7 +213,7 @@
],
"action": "close",
"addLabel": "*caused-by-extension",
- "comment": "It looks like this is caused by the C extension. Please file it with the repository [here](https://github.com/Microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
+ "comment": "It looks like this is caused by the C extension. Please file it with the repository [here](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
},
{
"type": "comment",
@@ -207,7 +226,20 @@
],
"action": "close",
"addLabel": "*caused-by-extension",
- "comment": "It looks like this is caused by the C++ extension. Please file it with the repository [here](https://github.com/Microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
+ "comment": "It looks like this is caused by the C++ extension. Please file it with the repository [here](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
+ },
+ {
+ "type": "comment",
+ "name": "extCpp",
+ "allowUsers": [
+ "cleidigh",
+ "usernamehw",
+ "gjsjohnmurray",
+ "IllusionMH"
+ ],
+ "action": "close",
+ "addLabel": "*caused-by-extension",
+ "comment": "It looks like this is caused by the C++ extension. Please file it with the repository [here](https://github.com/microsoft/vscode-cpptools). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
},
{
"type": "comment",
@@ -259,7 +291,7 @@
],
"action": "close",
"addLabel": "*caused-by-extension",
- "comment": "It looks like this is caused by the Go extension. Please file it with the repository [here](https://github.com/microsoft/vscode-go). Make sure to check their [contributing guidelines](https://github.com/microsoft/vscode-go/blob/master/CONTRIBUTING.md) and provide relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
+ "comment": "It looks like this is caused by the Go extension. Please file it with the repository [here](https://github.com/golang/vscode-go). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
},
{
"type": "comment",
@@ -272,7 +304,7 @@
],
"action": "close",
"addLabel": "*caused-by-extension",
- "comment": "It looks like this is caused by the Powershell extension. Please file it with the repository [here](https://github.com/PowerShell/vscode-powershell). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
+ "comment": "It looks like this is caused by the PowerShell extension. Please file it with the repository [here](https://github.com/PowerShell/vscode-powershell). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
},
{
"type": "comment",
@@ -324,7 +356,19 @@
],
"action": "close",
"addLabel": "*caused-by-extension",
- "comment": "It looks like this is caused by the Java Debugger extension. Please file it with the repository [here](https://github.com/Microsoft/vscode-java-debug). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
+ "comment": "It looks like this is caused by the Java Debugger extension. Please file it with the repository [here](https://github.com/microsoft/vscode-java-debug). Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines for more information.\n\nHappy Coding!"
+ },
+ {
+ "type": "comment",
+ "name": "gifPlease",
+ "allowUsers": [
+ "cleidigh",
+ "usernamehw",
+ "gjsjohnmurray",
+ "IllusionMH"
+ ],
+ "action": "comment",
+ "comment": "Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, `.gif` files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.\n\nIf the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (`Developer: Toggle Screencast Mode` in the command palette).\n\nHappy coding!"
},
{
"type": "comment",
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 276121a227b..a2523237c79 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -1,9 +1,9 @@
-
This PR fixes #
diff --git a/.github/subscribers.json b/.github/subscribers.json
new file mode 100644
index 00000000000..7ee6e5cdadd
--- /dev/null
+++ b/.github/subscribers.json
@@ -0,0 +1,9 @@
+{
+ "notebook": [
+ "claudiaregio",
+ "rchiodo",
+ "greazer",
+ "donjayamanne",
+ "jilljac"
+ ]
+}
diff --git a/.github/workflows/author-verified.yml b/.github/workflows/author-verified.yml
index c4293b05d9d..c326fee3da5 100644
--- a/.github/workflows/author-verified.yml
+++ b/.github/workflows/author-verified.yml
@@ -1,6 +1,7 @@
name: Author Verified
on:
repository_dispatch:
+ types: [trigger-author-verified]
schedule:
- cron: 20 14 * * * # 4:20pm Zurich
issues:
@@ -16,7 +17,7 @@ jobs:
uses: actions/checkout@v2
with:
repository: 'microsoft/vscode-github-triage-actions'
- ref: v17
+ ref: v40
path: ./actions
- name: Install Actions
if: github.event_name != 'issues' || contains(github.event.issue.labels.*.name, 'author-verification-requested')
@@ -31,6 +32,9 @@ jobs:
if: github.event_name != 'issues' || contains(github.event.issue.labels.*.name, 'author-verification-requested')
uses: ./actions/author-verified
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
+ token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
requestVerificationComment: "This bug has been fixed in to the latest release of [VS Code Insiders](https://code.visualstudio.com/insiders/)!\n\n@${author}, you can help us out by commenting `/verified` if things are now working as expected.\n\nIf things still don't seem right, please ensure you're on version ${commit} of Insiders (today's or later - you can use `Help: About` in the command pallette to check), and leave a comment letting us know what isn't working as expected.\n\nHappy Coding!"
pendingReleaseLabel: awaiting-insiders-release
+ verifiedLabel: verified
authorVerificationRequestedLabel: author-verification-requested
diff --git a/.github/workflows/classifier-train.yml b/.github/workflows/classifier-train.yml
deleted file mode 100644
index c728e374a78..00000000000
--- a/.github/workflows/classifier-train.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-name: "Classifier: Trainer"
-on:
- schedule:
- - cron: 0 0 12 * *
-
-jobs:
- main:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout Actions
- uses: actions/checkout@v2
- with:
- repository: 'microsoft/vscode-github-triage-actions'
- ref: master
- lfs: true
- path: ./actions
- - name: Install Actions
- run: npm install --production --prefix ./actions
- - name: Install Additional Dependencies
- # Pulls in a bunch of other packages that arent needed for the rest of the actions
- run: npm install @azure/storage-blob@12
- - name: "Run Classifier: Scraper"
- uses: ./actions/classifier/train/fetch-issues
- with:
- token: ${{secrets.ISSUE_SCRAPER_TOKEN}} # My personal token, so as to not risk going over quota on main token
- - name: Set up Python 3.7
- uses: actions/setup-python@v1
- with:
- python-version: 3.7
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install --upgrade numpy scipy scikit-learn joblib nltk
- - name: "Run Classifier: Generator"
- run: python ./actions/classifier/train/generate-models/generate.py category
- - name: "Run Classifier: Upload"
- uses: ./actions/classifier/train/upload-models
- with:
- blobContainerName: classifier-models
- blobStorageKey: ${{secrets.AZURE_BLOB_STORAGE_CONNECTION_STRING}}
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
new file mode 100644
index 00000000000..017708844a4
--- /dev/null
+++ b/.github/workflows/codeql.yml
@@ -0,0 +1,49 @@
+name: "Code Scanning"
+
+on:
+ schedule:
+ - cron: '0 0 * * 2'
+
+jobs:
+ CodeQL-Build:
+
+ # CodeQL runs on ubuntu-latest and windows-latest
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ with:
+ # We must fetch at least the immediate parents so that if this is
+ # a pull request then we can checkout the head.
+ fetch-depth: 2
+
+ # If this run was triggered by a pull request event, then checkout
+ # the head of the pull request instead of the merge commit.
+ - run: git checkout HEAD^2
+ if: ${{ github.event_name == 'pull_request' }}
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: javascript
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v1
+
+ # â„¹ï¸ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
+
+ # âœï¸ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ #- run: |
+ # make bootstrap
+ # make release
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff --git a/.github/workflows/commands.yml b/.github/workflows/commands.yml
index 6e216904893..37b6f626fe2 100644
--- a/.github/workflows/commands.yml
+++ b/.github/workflows/commands.yml
@@ -13,11 +13,12 @@ jobs:
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
- ref: v17
+ ref: v40
- name: Install Actions
run: npm install --production --prefix ./actions
- name: Run Commands
uses: ./actions/commands
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
config-path: commands
diff --git a/.github/workflows/deep-classifier-monitor.yml b/.github/workflows/deep-classifier-monitor.yml
new file mode 100644
index 00000000000..eff700780cc
--- /dev/null
+++ b/.github/workflows/deep-classifier-monitor.yml
@@ -0,0 +1,23 @@
+name: "Deep Classifier: Monitor"
+on:
+ issues:
+ types: [unassigned]
+
+jobs:
+ main:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Actions
+ uses: actions/checkout@v2
+ with:
+ repository: 'microsoft/vscode-github-triage-actions'
+ ref: v40
+ path: ./actions
+ - name: Install Actions
+ run: npm install --production --prefix ./actions
+ - name: "Run Classifier: Monitor"
+ uses: ./actions/classifier-deep/monitor
+ with:
+ botName: vscode-triage-bot
+ token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
diff --git a/.github/workflows/classifier-apply.yml b/.github/workflows/deep-classifier-runner.yml
similarity index 58%
rename from .github/workflows/classifier-apply.yml
rename to .github/workflows/deep-classifier-runner.yml
index ff40df8247b..541e756f068 100644
--- a/.github/workflows/classifier-apply.yml
+++ b/.github/workflows/deep-classifier-runner.yml
@@ -1,7 +1,9 @@
-name: "Classifier: Apply"
+name: "Deep Classifier: Runner"
on:
schedule:
- - cron: 0,30 * * * *
+ - cron: 0 * * * *
+ repository_dispatch:
+ types: [trigger-deep-classifier-runner]
jobs:
main:
@@ -11,21 +13,24 @@ jobs:
uses: actions/checkout@v2
with:
repository: 'microsoft/vscode-github-triage-actions'
- ref: v17
+ ref: v40
path: ./actions
- name: Install Actions
run: npm install --production --prefix ./actions
- name: Install Additional Dependencies
# Pulls in a bunch of other packages that arent needed for the rest of the actions
- run: npm install @azure/storage-blob@12
+ run: npm install @azure/storage-blob@12.1.1
- name: "Run Classifier: Scraper"
- uses: ./actions/classifier/apply/fetch-issues
+ uses: ./actions/classifier-deep/apply/fetch-sources
with:
# slightly overlapping to protect against issues slipping through the cracks if a run is delayed
- from: 45
+ from: 80
until: 5
- blobContainerName: classifier-models
+ configPath: classifier
+ blobContainerName: vscode-issue-classifier
blobStorageKey: ${{secrets.AZURE_BLOB_STORAGE_CONNECTION_STRING}}
+ token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
- name: Set up Python 3.7
uses: actions/setup-python@v1
with:
@@ -33,11 +38,13 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- pip install --upgrade numpy scipy scikit-learn joblib nltk
+ pip install --upgrade numpy scipy scikit-learn joblib nltk simpletransformers torch torchvision
- name: "Run Classifier: Generator"
- run: python ./actions/classifier/apply/generate-labels/main.py
+ run: python ./actions/classifier-deep/apply/generate-labels/main.py
- name: "Run Classifier: Labeler"
- uses: ./actions/classifier/apply/apply-labels
+ uses: ./actions/classifier-deep/apply/apply-labels
with:
- config-path: classifier
+ configPath: classifier
+ allowLabels: "needs more info|new release"
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
diff --git a/.github/workflows/deep-classifier-scraper.yml b/.github/workflows/deep-classifier-scraper.yml
new file mode 100644
index 00000000000..9e8e58b274e
--- /dev/null
+++ b/.github/workflows/deep-classifier-scraper.yml
@@ -0,0 +1,27 @@
+name: "Deep Classifier: Scraper"
+on:
+ repository_dispatch:
+ types: [trigger-deep-classifier-scraper]
+
+jobs:
+ main:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Actions
+ uses: actions/checkout@v2
+ with:
+ repository: 'microsoft/vscode-github-triage-actions'
+ ref: v40
+ path: ./actions
+ - name: Install Actions
+ run: npm install --production --prefix ./actions
+ - name: Install Additional Dependencies
+ # Pulls in a bunch of other packages that arent needed for the rest of the actions
+ run: npm install @azure/storage-blob@12.1.1
+ - name: "Run Classifier: Scraper"
+ uses: ./actions/classifier-deep/train/fetch-issues
+ with:
+ blobContainerName: vscode-issue-classifier
+ blobStorageKey: ${{secrets.AZURE_BLOB_STORAGE_CONNECTION_STRING}}
+ token: ${{secrets.ISSUE_SCRAPER_TOKEN}}
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
diff --git a/.github/workflows/devcontainer-cache.yml b/.github/workflows/devcontainer-cache.yml
new file mode 100644
index 00000000000..82290a475ee
--- /dev/null
+++ b/.github/workflows/devcontainer-cache.yml
@@ -0,0 +1,41 @@
+name: VS Code Repo Dev Container Cache Image Generation
+
+on:
+ push:
+ # Currently doing this for master, but could be done for PRs as well
+ branches:
+ - 'master'
+
+ # Only updates to these files result in changes to installed packages, so skip otherwise
+ paths:
+ - '**/package-lock.json'
+ - '**/yarn.lock'
+
+jobs:
+ devcontainer:
+ name: Generate cache image
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ id: checkout
+ uses: actions/checkout@v2
+
+ - name: Azure CLI login
+ id: az_login
+ uses: azure/login@v1
+ with:
+ creds: ${{ secrets.AZ_ACR_CREDS }}
+
+ - name: Build and push
+ id: build_and_push
+ run: |
+ set -e
+
+ ACR_REGISTRY_NAME=$(echo ${{ secrets.CONTAINER_IMAGE_REGISTRY }} | grep -oP '(.+)(?=\.azurecr\.io)')
+ az acr login --name $ACR_REGISTRY_NAME
+
+ GIT_BRANCH=$(echo "${{ github.ref }}" | grep -oP 'refs/(heads|tags)/\K(.+)')
+ if [ "$GIT_BRANCH" == "" ]; then GIT_BRANCH=master; fi
+
+ .devcontainer/cache/build-cache-image.sh "${{ secrets.CONTAINER_IMAGE_REGISTRY }}/public/vscode/devcontainers/repos/microsoft/vscode" "${GIT_BRANCH}"
+
diff --git a/.github/workflows/english-please.yml b/.github/workflows/english-please.yml
index 7b7b373be4e..22ea39a221c 100644
--- a/.github/workflows/english-please.yml
+++ b/.github/workflows/english-please.yml
@@ -13,7 +13,7 @@ jobs:
uses: actions/checkout@v2
with:
repository: 'microsoft/vscode-github-triage-actions'
- ref: v17
+ ref: v40
path: ./actions
- name: Install Actions
if: contains(github.event.issue.labels.*.name, '*english-please')
@@ -22,6 +22,7 @@ jobs:
if: contains(github.event.issue.labels.*.name, '*english-please')
uses: ./actions/english-please
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}}
nonEnglishLabel: "*english-please"
diff --git a/.github/workflows/feature-request.yml b/.github/workflows/feature-request.yml
index e97a6525a3c..29e2b734123 100644
--- a/.github/workflows/feature-request.yml
+++ b/.github/workflows/feature-request.yml
@@ -1,6 +1,7 @@
name: Feature Request Manager
on:
repository_dispatch:
+ types: [trigger-feature-request-manager]
issues:
types: [milestoned]
schedule:
@@ -17,7 +18,7 @@ jobs:
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
- ref: v17
+ ref: v40
- name: Install Actions
if: github.event_name != 'issues' || contains(github.event.issue.labels.*.name, 'feature-request')
run: npm install --production --prefix ./actions
@@ -25,6 +26,7 @@ jobs:
if: github.event_name != 'issues' || contains(github.event.issue.labels.*.name, 'feature-request')
uses: ./actions/feature-request
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
candidateMilestoneID: 107
candidateMilestoneName: Backlog Candidates
@@ -32,8 +34,8 @@ jobs:
featureRequestLabel: feature-request
upvotesRequired: 20
numCommentsOverride: 20
- initComment: "This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
- warnComment: "This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding"
+ initComment: "This feature request is now a candidate for our backlog. The community has 60 days to [upvote](https://github.com/microsoft/vscode/wiki/Issues-Triaging#up-voting-a-feature-request) the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
+ warnComment: "This feature request has not yet received the 20 community [upvotes](https://github.com/microsoft/vscode/wiki/Issues-Triaging#up-voting-a-feature-request) it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
acceptComment: ":slightly_smiling_face: This feature request received a sufficient number of community upvotes and we moved it to our backlog. To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
rejectComment: ":slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our [documentation](https://aka.ms/vscode-issue-lifecycle).\n\nHappy Coding!"
warnDays: 10
diff --git a/.github/workflows/latest-release-monitor.yml b/.github/workflows/latest-release-monitor.yml
new file mode 100644
index 00000000000..8b246ec01d2
--- /dev/null
+++ b/.github/workflows/latest-release-monitor.yml
@@ -0,0 +1,27 @@
+name: Latest Release Monitor
+on:
+ schedule:
+ - cron: 0/5 * * * *
+ repository_dispatch:
+ types: [trigger-latest-release-monitor]
+
+jobs:
+ main:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Actions
+ uses: actions/checkout@v2
+ with:
+ repository: 'microsoft/vscode-github-triage-actions'
+ path: ./actions
+ ref: v40
+ - name: Install Actions
+ run: npm install --production --prefix ./actions
+ - name: Install Storage Module
+ run: npm install @azure/storage-blob@12.1.1
+ - name: Run Latest Release Monitor
+ uses: ./actions/latest-release-monitor
+ with:
+ storageKey: ${{secrets.AZURE_BLOB_STORAGE_CONNECTION_STRING}}
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
+ token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
diff --git a/.github/workflows/locker.yml b/.github/workflows/locker.yml
index 2b6f86882c0..9f3a32b7be3 100644
--- a/.github/workflows/locker.yml
+++ b/.github/workflows/locker.yml
@@ -3,6 +3,7 @@ on:
schedule:
- cron: 20 23 * * * # 4:20pm Redmond
repository_dispatch:
+ types: [trigger-locker]
jobs:
main:
@@ -13,12 +14,15 @@ jobs:
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
- ref: v17
+ ref: v40
- name: Install Actions
run: npm install --production --prefix ./actions
- name: Run Locker
uses: ./actions/locker
with:
daysSinceClose: 45
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
daysSinceUpdate: 3
ignoredLabel: "*out-of-scope"
+ ignoreLabelUntil: "author-verification-requested"
+ labelUntil: "verified"
diff --git a/.github/workflows/needs-more-info-closer.yml b/.github/workflows/needs-more-info-closer.yml
index 630038cd865..6f3d68cd0b8 100644
--- a/.github/workflows/needs-more-info-closer.yml
+++ b/.github/workflows/needs-more-info-closer.yml
@@ -3,6 +3,7 @@ on:
schedule:
- cron: 20 11 * * * # 4:20am Redmond
repository_dispatch:
+ types: [trigger-needs-more-info]
jobs:
main:
@@ -13,15 +14,17 @@ jobs:
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
- ref: v17
+ ref: v40
- name: Install Actions
run: npm install --production --prefix ./actions
- name: Run Needs More Info Closer
uses: ./actions/needs-more-info-closer
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
+ token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
label: needs more info
closeDays: 7
additionalTeam: "cleidigh|usernamehw|gjsjohnmurray|IllusionMH"
closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity. See also our [issue reporting](https://aka.ms/vscodeissuereporting) guidelines.\n\nHappy Coding!"
- pingDays: 120
+ pingDays: 80
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
diff --git a/.github/workflows/on-label.yml b/.github/workflows/on-label.yml
index 9febd795f33..83722318cbe 100644
--- a/.github/workflows/on-label.yml
+++ b/.github/workflows/on-label.yml
@@ -11,7 +11,7 @@ jobs:
uses: actions/checkout@v2
with:
repository: 'microsoft/vscode-github-triage-actions'
- ref: v17
+ ref: v40
path: ./actions
- name: Install Actions
run: npm install --production --prefix ./actions
@@ -27,23 +27,34 @@ jobs:
if: contains(github.event.issue.labels.*.name, 'author-verification-requested')
uses: ./actions/author-verified
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
requestVerificationComment: "This bug has been fixed in to the latest release of [VS Code Insiders](https://code.visualstudio.com/insiders/)!\n\n@${author}, you can help us out by confirming things are working as expected in the latest Insiders release. If things look good, please leave a comment with the text `/verified` to let us know. If not, please ensure you're on version ${commit} of Insiders (today's or later - you can use `Help: About` in the command pallete to check), and leave a comment letting us know what isn't working as expected.\n\nHappy Coding!"
pendingReleaseLabel: awaiting-insiders-release
+ verifiedLabel: verified
authorVerificationRequestedLabel: author-verification-requested
# source of truth in ./commands.yml
- name: Run Commands
uses: ./actions/commands
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
config-path: commands
+ # only here.
+ - name: Run Subscribers
+ uses: ./actions/topic-subscribe
+ with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
+ token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
+ config-path: subscribers
# source of truth in ./feature-request.yml
- name: Run Feature Request Manager
if: contains(github.event.issue.labels.*.name, 'feature-request')
uses: ./actions/feature-request
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
candidateMilestoneID: 107
candidateMilestoneName: Backlog Candidates
@@ -64,6 +75,7 @@ jobs:
if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
uses: ./actions/test-plan-item-validator
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
label: testplan-item
invalidLabel: invalid-testplan-item
comment: Invalid test plan item. See errors below and the [test plan item spec](https://github.com/microsoft/vscode/wiki/Writing-Test-Plan-Items) for more information. This comment will go away when the issues are resolved.
@@ -73,6 +85,7 @@ jobs:
if: contains(github.event.issue.labels.*.name, '*english-please')
uses: ./actions/english-please
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}}
nonEnglishLabel: "*english-please"
diff --git a/.github/workflows/on-open.yml b/.github/workflows/on-open.yml
index 233a334b471..dfdee7c7f86 100644
--- a/.github/workflows/on-open.yml
+++ b/.github/workflows/on-open.yml
@@ -11,7 +11,7 @@ jobs:
uses: actions/checkout@v2
with:
repository: 'microsoft/vscode-github-triage-actions'
- ref: v17
+ ref: v40
path: ./actions
- name: Install Actions
run: npm install --production --prefix ./actions
@@ -19,12 +19,14 @@ jobs:
- name: Run CopyCat (JacksonKearl/testissues)
uses: ./actions/copycat
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
owner: JacksonKearl
repo: testissues
- name: Run CopyCat (chrmarti/testissues)
uses: ./actions/copycat
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
owner: chrmarti
repo: testissues
@@ -33,6 +35,7 @@ jobs:
uses: ./actions/new-release
with:
label: new release
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
labelColor: "006b75"
labelDescription: Issues found in a recent release of VS Code
days: 5
@@ -40,15 +43,25 @@ jobs:
- name: Run Clipboard Labeler
uses: ./actions/regex-labeler
with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
label: "invalid"
mustNotMatch: "^We have written the needed data into your clipboard because it was too large to send\\. Please paste\\.$"
comment: "It looks like you're using the VS Code Issue Reporter but did not paste the text generated into the created issue. We've closed this issue, please open a new one containing the text we placed in your clipboard.\n\nHappy Coding!"
+ - name: Run Clipboard Labeler (Chinese)
+ uses: ./actions/regex-labeler
+ with:
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
+ label: "invalid"
+ mustNotMatch: "^所需的数æ®å¤ªå¤§ï¼Œæ— 法直接å‘é€ã€‚我们已ç»å°†å…¶å†™å…¥å‰ªè´´æ¿ï¼Œè¯·ç²˜è´´ã€‚$"
+ comment: "çœ‹èµ·æ¥æ‚¨æ£åœ¨ä½¿ç”¨ VS Code 问题报告程åºï¼Œä½†æ˜¯æ²¡æœ‰å°†ç”Ÿæˆçš„æ–‡æœ¬ç²˜è´´åˆ°åˆ›å»ºçš„问题ä¸ã€‚我们将关é—这个问题,请使用剪贴æ¿ä¸çš„内容创建一个新的问题。\n\nç¥æ‚¨ä½¿ç”¨æ„‰å¿«ï¼"
+
# source of truth in ./english-please.yml
- name: Run English Please
uses: ./actions/english-please
with:
token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
cognitiveServicesAPIKey: ${{secrets.AZURE_TEXT_TRANSLATOR_KEY}}
nonEnglishLabel: "*english-please"
needsMoreInfoLabel: "needs more info"
diff --git a/.github/workflows/release-pipeline-labeler.yml b/.github/workflows/release-pipeline-labeler.yml
new file mode 100644
index 00000000000..a9c0bb26e5c
--- /dev/null
+++ b/.github/workflows/release-pipeline-labeler.yml
@@ -0,0 +1,32 @@
+name: "Release Pipeline Labeler"
+on:
+ issues:
+ types: [closed, reopened]
+ repository_dispatch:
+ types: [released-insider]
+
+jobs:
+ main:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Actions
+ uses: actions/checkout@v2
+ with:
+ repository: 'microsoft/vscode-github-triage-actions'
+ ref: v40
+ path: ./actions
+ - name: Checkout Repo
+ if: github.event_name != 'issues'
+ uses: actions/checkout@v2
+ with:
+ path: ./repo
+ fetch-depth: 0
+ - name: Install Actions
+ run: npm install --production --prefix ./actions
+ - name: "Run Release Pipeline Labeler"
+ uses: ./actions/release-pipeline
+ with:
+ token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}}
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
+ notYetReleasedLabel: unreleased
+ insidersReleasedLabel: insiders-released
diff --git a/.github/workflows/rich-navigation.yml b/.github/workflows/rich-navigation.yml
new file mode 100644
index 00000000000..bd2444b608b
--- /dev/null
+++ b/.github/workflows/rich-navigation.yml
@@ -0,0 +1,32 @@
+name: "Rich Navigation Indexing"
+on:
+ pull_request:
+ push:
+ branches:
+ - master
+
+jobs:
+ richnav:
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: actions/cache@v2
+ id: caching-stage
+ name: Cache VS Code dependencies
+ with:
+ path: node_modules
+ key: ${{ runner.os }}-dependencies-${{ hashfiles('yarn.lock') }}
+ restore-keys: ${{ runner.os }}-dependencies-
+
+ - name: Install dependencies
+ if: steps.caching-stage.outputs.cache-hit != 'true'
+ run: yarn --frozen-lockfile
+ env:
+ CHILD_CONCURRENCY: 1
+
+ - uses: microsoft/RichCodeNavIndexer@v0.1
+ with:
+ languages: typescript
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ continue-on-error: true
diff --git a/.github/workflows/test-plan-item-validator.yml b/.github/workflows/test-plan-item-validator.yml
index 67b8519b2af..0c26549d1d8 100644
--- a/.github/workflows/test-plan-item-validator.yml
+++ b/.github/workflows/test-plan-item-validator.yml
@@ -14,7 +14,7 @@ jobs:
with:
repository: 'microsoft/vscode-github-triage-actions'
path: ./actions
- ref: v17
+ ref: v40
- name: Install Actions
if: contains(github.event.issue.labels.*.name, 'testplan-item') || contains(github.event.issue.labels.*.name, 'invalid-testplan-item')
run: npm install --production --prefix ./actions
@@ -23,5 +23,6 @@ jobs:
uses: ./actions/test-plan-item-validator
with:
label: testplan-item
+ appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}}
invalidLabel: invalid-testplan-item
comment: Invalid test plan item. See errors below and the [test plan item spec](https://github.com/microsoft/vscode/wiki/Writing-Test-Plan-Items) for more information. This comment will go away when the issues are resolved.
diff --git a/.gitignore b/.gitignore
index e73dd4d9e8c..b7f5b58c8ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,6 +24,7 @@ out-vscode-reh-web-min/
out-vscode-reh-web-pkg/
out-vscode-web/
out-vscode-web-min/
+out-vscode-web-pkg/
src/vs/server
resources/server
build/node_modules
@@ -31,3 +32,5 @@ coverage/
test_data/
test-results/
yarn-error.log
+vscode.lsif
+vscode.db
diff --git a/.nvmrc b/.nvmrc
deleted file mode 100644
index f599e28b8ab..00000000000
--- a/.nvmrc
+++ /dev/null
@@ -1 +0,0 @@
-10
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 72fd892dc3c..646b99c7943 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -19,13 +19,15 @@
"timeout": 30000,
"port": 5870,
"outFiles": [
- "${workspaceFolder}/out/**/*.js"
+ "${workspaceFolder}/out/**/*.js",
+ "${workspaceFolder}/extensions/*/out/**/*.js"
]
},
{
"type": "pwa-chrome",
"request": "attach",
"name": "Attach to Shared Process",
+ "timeout": 30000,
"port": 9222,
"urlFilter": "*sharedProcess.html*",
"presentation": {
@@ -57,6 +59,7 @@
"type": "node",
"request": "attach",
"name": "Attach to Main Process",
+ "timeout": 30000,
"port": 5875,
"outFiles": [
"${workspaceFolder}/out/**/*.js"
@@ -170,15 +173,35 @@
"${workspaceFolder}/out/**/*.js"
],
"presentation": {
- "group": "6_tests",
+ "group": "5_tests",
"order": 6
}
},
{
- "type": "chrome",
+ "type": "extensionHost",
+ "request": "launch",
+ "name": "VS Code Custom Editor Tests",
+ "runtimeExecutable": "${execPath}",
+ "args": [
+ "${workspaceFolder}/extensions/vscode-custom-editor-tests/test-workspace",
+ "--extensionDevelopmentPath=${workspaceFolder}/extensions/vscode-custom-editor-tests",
+ "--extensionTestsPath=${workspaceFolder}/extensions/vscode-custom-editor-tests/out/test"
+ ],
+ "outFiles": [
+ "${workspaceFolder}/out/**/*.js"
+ ],
+ "presentation": {
+ "group": "5_tests",
+ "order": 6
+ }
+ },
+ {
+ "type": "pwa-chrome",
"request": "attach",
"name": "Attach to VS Code",
- "port": 9222
+ "browserAttachLocation": "workspace",
+ "port": 9222,
+ "perScriptSourcemaps": "yes"
},
{
"type": "pwa-chrome",
@@ -196,28 +219,32 @@
"port": 9222,
"timeout": 20000,
"env": {
- "VSCODE_EXTHOST_WILL_SEND_SOCKET": null
+ "VSCODE_EXTHOST_WILL_SEND_SOCKET": null,
+ "VSCODE_SKIP_PRELAUNCH": "1"
},
- "breakOnLoad": false,
+ "cleanUp": "wholeBrowser",
"urlFilter": "*workbench.html*",
"runtimeArgs": [
"--inspect=5875",
"--no-cached-data",
],
"webRoot": "${workspaceFolder}",
- // Settings for js-debug:
+ "cascadeTerminateToConfigurations": [
+ "Attach to Extension Host"
+ ],
"userDataDir": false,
"pauseForSourceMap": false,
"outFiles": [
"${workspaceFolder}/out/**/*.js"
],
- "browserLaunchLocation": "workspace"
+ "browserLaunchLocation": "workspace",
+ "preLaunchTask": "Ensure Prelaunch Dependencies",
},
{
"type": "node",
"request": "launch",
"name": "VS Code (Web)",
- "program": "${workspaceFolder}/scripts/code-web.js",
+ "program": "${workspaceFolder}/resources/web/code-web.js",
"presentation": {
"group": "0_vscode",
"order": 2
@@ -243,8 +270,10 @@
}
},
{
- "type": "chrome",
+ "type": "pwa-chrome",
"request": "launch",
+ "outFiles": [],
+ "perScriptSourcemaps": "yes",
"name": "VS Code (Web, Chrome)",
"url": "http://localhost:8080",
"preLaunchTask": "Run web",
@@ -253,6 +282,20 @@
"order": 3
}
},
+ {
+ "type": "pwa-msedge",
+ "request": "launch",
+ "outFiles": [],
+ "perScriptSourcemaps": "yes",
+ "name": "VS Code (Web, Edge)",
+ "url": "http://localhost:8080",
+ "pauseForSourceMap": false,
+ "preLaunchTask": "Run web",
+ "presentation": {
+ "group": "0_vscode",
+ "order": 3
+ }
+ },
{
"type": "node",
"request": "launch",
@@ -304,7 +347,7 @@
"name": "Markdown Extension Tests",
"runtimeExecutable": "${execPath}",
"args": [
- "${workspaceFolder}/extensions/markdown-language-features/test-fixtures",
+ "${workspaceFolder}/extensions/markdown-language-features/test-workspace",
"--extensionDevelopmentPath=${workspaceFolder}/extensions/markdown-language-features",
"--extensionTestsPath=${workspaceFolder}/extensions/markdown-language-features/out/test"
],
@@ -335,7 +378,7 @@
}
},
{
- "type": "node",
+ "type": "pwa-node",
"request": "launch",
"name": "Run Unit Tests",
"program": "${workspaceFolder}/test/unit/electron/index.js",
@@ -354,6 +397,41 @@
"outFiles": [
"${workspaceFolder}/out/**/*.js"
],
+ "cascadeTerminateToConfigurations": [
+ "Attach to VS Code"
+ ],
+ "env": {
+ "MOCHA_COLORS": "true"
+ },
+ "presentation": {
+ "hidden": true
+ }
+ },
+ {
+ "type": "pwa-node",
+ "request": "launch",
+ "name": "Run Unit Tests For Current File",
+ "program": "${workspaceFolder}/test/unit/electron/index.js",
+ "runtimeExecutable": "${workspaceFolder}/.build/electron/Code - OSS.app/Contents/MacOS/Electron",
+ "windows": {
+ "runtimeExecutable": "${workspaceFolder}/.build/electron/Code - OSS.exe"
+ },
+ "linux": {
+ "runtimeExecutable": "${workspaceFolder}/.build/electron/code-oss"
+ },
+ "cascadeTerminateToConfigurations": [
+ "Attach to VS Code"
+ ],
+ "outputCapture": "std",
+ "args": [
+ "--remote-debugging-port=9222",
+ "--run",
+ "${relativeFile}"
+ ],
+ "cwd": "${workspaceFolder}",
+ "outFiles": [
+ "${workspaceFolder}/out/**/*.js"
+ ],
"env": {
"MOCHA_COLORS": "true"
},
@@ -395,12 +473,14 @@
"compounds": [
{
"name": "VS Code",
+ "stopAll": true,
"configurations": [
"Launch VS Code",
"Attach to Main Process",
"Attach to Extension Host",
"Attach to Shared Process",
],
+ "preLaunchTask": "Ensure Prelaunch Dependencies",
"presentation": {
"group": "0_vscode",
"order": 1
@@ -438,6 +518,17 @@
"group": "1_vscode",
"order": 2
}
+ },
+ {
+ "name": "Debug Unit Tests (Current File)",
+ "configurations": [
+ "Attach to VS Code",
+ "Run Unit Tests For Current File"
+ ],
+ "presentation": {
+ "group": "1_vscode",
+ "order": 2
+ }
}
]
}
diff --git a/.vscode/notebooks/api.github-issues b/.vscode/notebooks/api.github-issues
new file mode 100644
index 00000000000..8ff55e2c6ee
--- /dev/null
+++ b/.vscode/notebooks/api.github-issues
@@ -0,0 +1,38 @@
+[
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "#### Config",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"November 2020\"",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Finalization",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repo $milestone label:api-finalization",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Proposals",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repo $milestone is:open label:api-proposal ",
+ "editable": true
+ }
+]
\ No newline at end of file
diff --git a/.vscode/notebooks/endgame.github-issues b/.vscode/notebooks/endgame.github-issues
new file mode 100644
index 00000000000..0d6e4533429
--- /dev/null
+++ b/.vscode/notebooks/endgame.github-issues
@@ -0,0 +1,182 @@
+[
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# Endgame",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "## Macros",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github\n\n$MILESTONE=milestone:\"October 2020\"\n\n$MINE=assignee:@me",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "## Endgame Champion",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Test Plan Items",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS $MILESTONE label:testplan-item is:open",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Feature Requests Missing Labels",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS $MILESTONE is:issue is:closed label:feature-request -label:verification-needed -label:on-testplan -label:verified -label:*duplicate",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Open Issues on the Milestone",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS $MILESTONE -label:testplan-item -label:iteration-plan -label:endgame-plan is:open",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "## Testing",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### My Assigned Test Plan Items",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS $MILESTONE $MINE label:testplan-item is:open",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### My Created Test Plan Items",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS $MILESTONE author:@me label:testplan-item",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "## Verification",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Issues to Verify",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "#### Issues filed by me",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS $MILESTONE -$MINE author:@me sort:updated-asc is:closed is:issue label:bug -label:verified -label:on-testplan -label:duplicate -label:*duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "#### Issues filed by others",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS $MILESTONE -$MINE -author:@me sort:updated-asc is:closed is:issue label:bug -label:verified -label:on-testplan -label:duplicate -label:*duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Verification Needed",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS $MILESTONE is:issue is:closed label:feature-request -label:verification-needed -label:on-testplan -label:verified -label:*duplicate ",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### My Issues Needing Verification",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS $MILESTONE $MINE sort:updated-desc is:closed is:issue -label:verified -label:on-testplan -label:duplicate -label:*duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found\n",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### My Open Issues",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$REPOS $MILESTONE $MINE is:open is:issue",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "## Documentation",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Needing Release Notes",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode $MILESTONE $MINE is:closed label:feature-request -label:on-release-notes",
+ "editable": true
+ }
+]
\ No newline at end of file
diff --git a/.vscode/notebooks/grooming-delta.github-issues b/.vscode/notebooks/grooming-delta.github-issues
new file mode 100644
index 00000000000..97f86b4f386
--- /dev/null
+++ b/.vscode/notebooks/grooming-delta.github-issues
@@ -0,0 +1,749 @@
+[
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "## Config",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$since=2020-10-01",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode\n\nQuery exceeds the maximum result. Run the query manually: `is:issue is:open closed:>2020-10-01`",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "//repo:microsoft/vscode is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "//repo:microsoft/vscode is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-remote-release",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-remote-release is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-remote-release is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# monaco-editor",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-editor is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-editor is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-docs",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-docs is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-docs is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-js-debug",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-js-debug is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-js-debug is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# language-server-protocol",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/language-server-protocol is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/language-server-protocol is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-eslint",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-eslint is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-eslint is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-css-languageservice",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-css-languageservice is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-css-languageservice is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-test"
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-test is:issue closed:>$since"
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-test is:issue created:>$since"
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-chrome-debug (deprecated)",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-chrome-debug is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-chrome-debug is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-chrome-debug-core",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-chrome-debug-core is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-chrome-debug-core is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-debugadapter-node",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-debugadapter-node is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-debugadapter-node is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-emmet-helper",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-emmet-helper is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-emmet-helper is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-extension-vscode\n\nDeprecated",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-extension-vscode is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-extension-vscode is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-extension-samples",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-extension-samples is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-extension-samples is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-filewatcher-windows",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-filewatcher-windows is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-filewatcher-windows is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-generator-code",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-generator-code is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-generator-code is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-html-languageservice",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-html-languageservice is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-html-languageservice is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-jshint",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-jshint is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-jshint is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-json-languageservice",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-json-languageservice is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-json-languageservice is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-languageserver-node",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-languageserver-node is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-languageserver-node is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-loader",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-loader is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-loader is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-mono-debug",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-mono-debug is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-mono-debug is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-node-debug",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-node-debug is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-node-debug is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-node-debug2",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-node-debug2 is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-node-debug2 is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-recipes",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-recipes is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-recipes is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-textmate",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-textmate is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-textmate is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-themes",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-themes is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-themes is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-vsce",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-vsce is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-vsce is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-website",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-website is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-website is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# vscode-windows-process-tree",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-windows-process-tree is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode-windows-process-tree is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# debug-adapter-protocol",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/debug-adapter-protocol is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/debug-adapter-protocol is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# inno-updater",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/inno-updater is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/inno-updater is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# language-server-protocol-inspector",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/language-server-protocol-inspector is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/language-server-protocol-inspector is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# monaco-languages",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-languages is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-languages is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# monaco-typescript",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-typescript is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-typescript is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# monaco-css",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-css is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-css is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# monaco-json",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-json is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-json is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# monaco-html",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-html is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-html is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# monaco-editor-webpack-plugin",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-editor-webpack-plugin is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/monaco-editor-webpack-plugin is:issue created:>$since",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "# node-jsonc-parser",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/node-jsonc-parser is:issue closed:>$since",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/node-jsonc-parser is:issue created:>$since",
+ "editable": true
+ }
+]
\ No newline at end of file
diff --git a/.vscode/notebooks/grooming.github-issues b/.vscode/notebooks/grooming.github-issues
new file mode 100644
index 00000000000..f44b2c71eed
--- /dev/null
+++ b/.vscode/notebooks/grooming.github-issues
@@ -0,0 +1,26 @@
+[
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Categorizing Issues\n\nEach issue must have a type label. Most type labels are grey, some are yellow. Bugs are grey with a touch of red.",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode is:open is:issue assignee:@me -label:\"needs more info\" -label:bug -label:feature-request -label:under-discussion -label:debt -label:*question -label:upstream -label:electron -label:engineering -label:plan-item ",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Feature Areas\n\nEach issue should be assigned to a feature area",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "repo:microsoft/vscode is:open is:issue assignee:@me -label:L10N -label:VIM -label:api -label:api-finalization -label:api-proposal -label:authentication -label:breadcrumbs -label:callhierarchy -label:code-lens -label:color-palette -label:comments -label:config -label:context-keys -label:css-less-scss -label:custom-editors -label:debug -label:debug-console -label:dialogs -label:diff-editor -label:dropdown -label:editor -label:editor-RTL -label:editor-autoclosing -label:editor-autoindent -label:editor-bracket-matching -label:editor-clipboard -label:editor-code-actions -label:editor-color-picker -label:editor-columnselect -label:editor-commands -label:editor-comments -label:editor-contrib -label:editor-core -label:editor-drag-and-drop -label:editor-error-widget -label:editor-find -label:editor-folding -label:editor-highlight -label:editor-hover -label:editor-indent-detection -label:editor-indent-guides -label:editor-input -label:editor-input-IME -label:editor-insets -label:editor-minimap -label:editor-multicursor -label:editor-parameter-hints -label:editor-render-whitespace -label:editor-rendering -label:editor-scrollbar -label:editor-symbols -label:editor-synced-region -label:editor-textbuffer -label:editor-theming -label:editor-wordnav -label:editor-wrapping -label:emmet -label:error-list -label:explorer-custom -label:extension-host -label:extension-recommendations -label:extensions -label:extensions-development -label:file-decorations -label:file-encoding -label:file-explorer -label:file-glob -label:file-guess-encoding -label:file-io -label:file-watcher -label:font-rendering -label:formatting -label:git -label:github -label:gpu -label:grammar -label:grid-view -label:html -label:i18n -label:icon-brand -label:icons-product -label:install-update -label:integrated-terminal -label:integrated-terminal-conpty -label:integrated-terminal-links -label:integrated-terminal-rendering -label:integrated-terminal-winpty -label:intellisense-config -label:ipc -label:issue-bot -label:issue-reporter -label:javascript -label:json -label:keybindings -label:keybindings-editor -label:keyboard-layout -label:label-provider -label:languages-basic -label:languages-diagnostics -label:languages-guessing -label:layout -label:lcd-text-rendering -label:list -label:log -label:markdown -label:marketplace -label:menus -label:merge-conflict -label:notebook -label:outline -label:output -label:perf -label:perf-bloat -label:perf-startup -label:php -label:portable-mode -label:proxy -label:quick-pick -label:references-viewlet -label:release-notes -label:remote -label:remote-explorer -label:rename -label:sandbox -label:scm -label:screencast-mode -label:search -label:search-api -label:search-editor -label:search-replace -label:semantic-tokens -label:settings-editor -label:settings-sync -label:settings-sync-server -label:shared-process -label:simple-file-dialog -label:smart-select -label:snap -label:snippets -label:splitview -label:suggest -label:sync-error-handling -label:tasks -label:telemetry -label:themes -label:timeline -label:timeline-git -label:titlebar -label:tokenization -label:touch/pointer -label:trackpad/scroll -label:tree -label:typescript -label:undo-redo -label:uri -label:ux -label:variable-resolving -label:vscode-build -label:vscode-website -label:web -label:webview -label:workbench-actions -label:workbench-cli -label:workbench-diagnostics -label:workbench-dnd -label:workbench-editor-grid -label:workbench-editors -label:workbench-electron -label:workbench-feedback -label:workbench-history -label:workbench-hot-exit -label:workbench-hover -label:workbench-launch -label:workbench-link -label:workbench-multiroot -label:workbench-notifications -label:workbench-os-integration -label:workbench-rapid-render -label:workbench-run-as-admin -label:workbench-state -label:workbench-status -label:workbench-tabs -label:workbench-touchbar -label:workbench-views -label:workbench-welcome -label:workbench-window -label:workbench-zen -label:workspace-edit -label:workspace-symbols -label:zoom",
+ "editable": true
+ }
+]
\ No newline at end of file
diff --git a/.vscode/notebooks/inbox.github-issues b/.vscode/notebooks/inbox.github-issues
new file mode 100644
index 00000000000..c7134b3a289
--- /dev/null
+++ b/.vscode/notebooks/inbox.github-issues
@@ -0,0 +1,50 @@
+[
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "## tl;dr: Triage Inbox\n\nAll inbox issues but not those that need more information. These issues need to be triaged, e.g assigned to a user or ask for more information",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$inbox -label:\"needs more info\"",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "##### `Config`: defines the inbox query",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$inbox=repo:microsoft/vscode is:open no:assignee -label:feature-request -label:testplan-item -label:plan-item ",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "## Inbox tracking and Issue triage",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "New issues or pull requests submitted by the community are initially triaged by an [automatic classification bot](https://github.com/microsoft/vscode-github-triage-actions/tree/master/classifier-deep). Issues that the bot does not correctly triage are then triaged by a team member. The team rotates the inbox tracker on a weekly basis.\n\nA [mirror](https://github.com/JacksonKearl/testissues/issues) of the VS Code issue stream is available with details about how the bot classifies issues, including feature-area classifications and confidence ratings. Per-category confidence thresholds and feature-area ownership data is maintained in [.github/classifier.json](https://github.com/microsoft/vscode/blob/master/.github/classifier.json). \n\n💡 The bot is being run through a GitHub action that runs every 30 minutes. Give the bot the opportunity to classify an issue before doing it manually.\n\n### Inbox Tracking\n\nThe inbox tracker is responsible for the [global inbox](https://github.com/microsoft/vscode/issues?utf8=%E2%9C%93&q=is%3Aopen+no%3Aassignee+-label%3Afeature-request+-label%3Atestplan-item+-label%3Aplan-item) containing all **open issues and pull requests** that\n- are neither **feature requests** nor **test plan items** nor **plan items** and\n- have **no owner assignment**.\n\nThe **inbox tracker** may perform any step described in our [issue triaging documentation](https://github.com/microsoft/vscode/wiki/Issues-Triaging) but its main responsibility is to route issues to the actual feature area owner.\n\nFeature area owners track the **feature area inbox** containing all **open issues and pull requests** that\n- are personally assigned to them and are not assigned to any milestone\n- are labeled with their feature area label and are not assigned to any milestone.\nThis secondary triage may involve any of the steps described in our [issue triaging documentation](https://github.com/microsoft/vscode/wiki/Issues-Triaging) and results in a fully triaged or closed issue.\n\nThe [github triage extension](https://github.com/microsoft/vscode-github-triage-extension) can be used to assist with triaging — it provides a \"Command Palette\"-style list of triaging actions like assignment, labeling, and triggers for various bot actions.",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "## All Inbox Items\n\nAll issues that have no assignee and that have neither **feature requests** nor **test plan items** nor **plan items**.",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$inbox",
+ "editable": true
+ }
+]
\ No newline at end of file
diff --git a/.vscode/notebooks/my-work.github-issues b/.vscode/notebooks/my-work.github-issues
new file mode 100644
index 00000000000..a74bfd329f1
--- /dev/null
+++ b/.vscode/notebooks/my-work.github-issues
@@ -0,0 +1,98 @@
+[
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "##### `Config`: This should be changed every month/milestone",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "// list of repos we work in\n$repos=repo:microsoft/vscode repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks\n\n// current milestone name\n$milestone=milestone:\"November 2020\"",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "github-issues",
+ "value": "## Milestone Work",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos $milestone assignee:@me is:open",
+ "editable": false
+ },
+ {
+ "kind": 1,
+ "language": "github-issues",
+ "value": "## Bugs, Debt, Features...",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "#### My Bugs",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos assignee:@me is:open label:bug",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "#### Debt & Engineering",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos assignee:@me is:open label:debt OR $repos assignee:@me is:open label:engineering",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "#### Performance 🌠🔜 ðŸŽ",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos assignee:@me is:open label:perf OR $repos assignee:@me is:open label:perf-startup OR $repos assignee:@me is:open label:perf-bloat OR $repos assignee:@me is:open label:freeze-slow-crash-leak",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "#### Feature Requests",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos assignee:@me is:open label:feature-request milestone:Backlog sort:reactions-+1-desc",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos assignee:@me is:open milestone:\"Backlog Candidates\"",
+ "editable": false
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "#### Not Actionable",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos assignee:@me is:open label:\"needs more info\"",
+ "editable": false
+ }
+]
\ No newline at end of file
diff --git a/.vscode/notebooks/verification.github-issues b/.vscode/notebooks/verification.github-issues
new file mode 100644
index 00000000000..67db0cb97d4
--- /dev/null
+++ b/.vscode/notebooks/verification.github-issues
@@ -0,0 +1,56 @@
+[
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Bug Verification Queries\n\nBefore shipping we want to verify _all_ bugs. That means when a bug is fixed we check that the fix actually works. It's always best to start with bugs that you have filed and the proceed with bugs that have been filed from users outside the development team. ",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "#### Config: update list of `repos` and the `milestone`",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks \n$milestone=milestone:\"October 2020\"",
+ "editable": true
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Bugs You Filed",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos $milestone is:closed -assignee:@me label:bug -label:verified -label:*duplicate author:@me",
+ "editable": false
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### Bugs From Outside",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos $milestone is:closed -assignee:@me label:bug -label:verified -label:*duplicate -author:@me -assignee:@me label:bug -label:verified -author:@me -author:aeschli -author:alexdima -author:alexr00 -author:bpasero -author:chrisdias -author:chrmarti -author:connor4312 -author:dbaeumer -author:deepak1556 -author:eamodio -author:egamma -author:gregvanl -author:isidorn -author:JacksonKearl -author:joaomoreno -author:jrieken -author:lramos15 -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:rebornix -author:RMacfarlane -author:roblourens -author:sana-ajani -author:sandy081 -author:sbatten -author:Tyriar -author:weinand",
+ "editable": false
+ },
+ {
+ "kind": 1,
+ "language": "markdown",
+ "value": "### All",
+ "editable": true
+ },
+ {
+ "kind": 2,
+ "language": "github-issues",
+ "value": "$repos $milestone is:closed -assignee:@me label:bug -label:verified -label:*duplicate",
+ "editable": false
+ }
+]
\ No newline at end of file
diff --git a/.vscode/searches/TrustedTypes.code-search b/.vscode/searches/TrustedTypes.code-search
new file mode 100644
index 00000000000..85707534c1e
--- /dev/null
+++ b/.vscode/searches/TrustedTypes.code-search
@@ -0,0 +1,101 @@
+# Query: .innerHTML =
+# Flags: CaseSensitive WordMatch
+# Including: src/vs/**/*.{t,j}s
+# Excluding: *.test.ts, **/test/**
+# ContextLines: 3
+
+12 results - 9 files
+
+src/vs/base/browser/dom.ts:
+ 1359 );
+ 1360
+ 1361 const html = _ttpSafeInnerHtml?.createHTML(value, options) ?? insane(value, options);
+ 1362: node.innerHTML = html as unknown as string;
+ 1363 }
+
+src/vs/base/browser/markdownRenderer.ts:
+ 272 };
+ 273
+ 274 if (_ttpInsane) {
+ 275: element.innerHTML = _ttpInsane.createHTML(renderedMarkdown, insaneOptions) as unknown as string;
+ 276 } else {
+ 277: element.innerHTML = insane(renderedMarkdown, insaneOptions);
+ 278 }
+ 279
+ 280 // signal that async code blocks can be now be inserted
+
+src/vs/editor/browser/core/markdownRenderer.ts:
+ 88
+ 89 const element = document.createElement('span');
+ 90
+ 91: element.innerHTML = MarkdownRenderer._ttpTokenizer
+ 92 ? MarkdownRenderer._ttpTokenizer.createHTML(value, tokenization) as unknown as string
+ 93 : tokenizeToString(value, tokenization);
+ 94
+
+src/vs/editor/browser/view/domLineBreaksComputer.ts:
+ 107 allCharOffsets[i] = tmp[0];
+ 108 allVisibleColumns[i] = tmp[1];
+ 109 }
+ 110: containerDomNode.innerHTML = sb.build();
+ 111
+ 112 containerDomNode.style.position = 'absolute';
+ 113 containerDomNode.style.top = '10000';
+
+src/vs/editor/browser/view/viewLayer.ts:
+ 512 }
+ 513 const lastChild = this.domNode.lastChild;
+ 514 if (domNodeIsEmpty || !lastChild) {
+ 515: this.domNode.innerHTML = newLinesHTML;
+ 516 } else {
+ 517 lastChild.insertAdjacentHTML('afterend', newLinesHTML);
+ 518 }
+
+ 533 if (ViewLayerRenderer._ttPolicy) {
+ 534 invalidLinesHTML = ViewLayerRenderer._ttPolicy.createHTML(invalidLinesHTML) as unknown as string;
+ 535 }
+ 536: hugeDomNode.innerHTML = invalidLinesHTML;
+ 537
+ 538 for (let i = 0; i < ctx.linesLength; i++) {
+ 539 const line = ctx.lines[i];
+
+src/vs/editor/browser/widget/diffEditorWidget.ts:
+ 2157
+ 2158 let domNode = document.createElement('div');
+ 2159 domNode.className = `view-lines line-delete ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`;
+ 2160: domNode.innerHTML = sb.build();
+ 2161 Configuration.applyFontInfoSlow(domNode, fontInfo);
+ 2162
+ 2163 let marginDomNode = document.createElement('div');
+ 2164 marginDomNode.className = 'inline-deleted-margin-view-zone';
+ 2165: marginDomNode.innerHTML = marginHTML.join('');
+ 2166 Configuration.applyFontInfoSlow(marginDomNode, fontInfo);
+ 2167
+ 2168 return {
+
+src/vs/editor/standalone/browser/colorizer.ts:
+ 40 let text = domNode.firstChild ? domNode.firstChild.nodeValue : '';
+ 41 domNode.className += ' ' + theme;
+ 42 let render = (str: string) => {
+ 43: domNode.innerHTML = str;
+ 44 };
+ 45 return this.colorize(modeService, text || '', mimeType, options).then(render, (err) => console.error(err));
+ 46 }
+
+src/vs/workbench/contrib/notebook/browser/view/renderers/cellRenderer.ts:
+ 580 const element = DOM.$('div', { style });
+ 581
+ 582 const linesHtml = this.getRichTextLinesAsHtml(model, modelRange, colorMap);
+ 583: element.innerHTML = linesHtml as unknown as string;
+ 584 return element;
+ 585 }
+ 586
+
+src/vs/workbench/contrib/notebook/browser/view/renderers/webviewPreloads.ts:
+ 375 addMouseoverListeners(outputNode, outputId);
+ 376 const content = data.content;
+ 377 if (content.type === RenderOutputType.Html) {
+ 378: outputNode.innerHTML = content.htmlContent;
+ 379 cellOutputContainer.appendChild(outputNode);
+ 380 domEval(outputNode);
+ 381 } else if (preloadErrs.some(e => !!e)) {
diff --git a/.vscode/searches/es6.code-search b/.vscode/searches/es6.code-search
deleted file mode 100644
index 3a708a48798..00000000000
--- a/.vscode/searches/es6.code-search
+++ /dev/null
@@ -1,86 +0,0 @@
-# Query: @deprecated ES6
-# Flags: CaseSensitive WordMatch
-# ContextLines: 2
-
-16 results - 5 files
-
-src/vs/base/browser/dom.ts:
- 81 };
- 82
- 83: /** @deprecated ES6 - use classList*/
- 84 export const hasClass: (node: HTMLElement | SVGElement, className: string) => boolean = _classList.hasClass.bind(_classList);
- 85: /** @deprecated ES6 - use classList*/
- 86 export const addClass: (node: HTMLElement | SVGElement, className: string) => void = _classList.addClass.bind(_classList);
- 87: /** @deprecated ES6 - use classList*/
- 88 export const addClasses: (node: HTMLElement | SVGElement, ...classNames: string[]) => void = _classList.addClasses.bind(_classList);
- 89: /** @deprecated ES6 - use classList*/
- 90 export const removeClass: (node: HTMLElement | SVGElement, className: string) => void = _classList.removeClass.bind(_classList);
- 91: /** @deprecated ES6 - use classList*/
- 92 export const removeClasses: (node: HTMLElement | SVGElement, ...classNames: string[]) => void = _classList.removeClasses.bind(_classList);
- 93: /** @deprecated ES6 - use classList*/
- 94 export const toggleClass: (node: HTMLElement | SVGElement, className: string, shouldHaveIt?: boolean) => void = _classList.toggleClass.bind(_classList);
- 95
-
-src/vs/base/common/arrays.ts:
- 401
- 402 /**
- 403: * @deprecated ES6: use `Array.findIndex`
- 404 */
- 405 export function firstIndex(array: ReadonlyArray, fn: (item: T) => boolean): number {
-
- 417
- 418 /**
- 419: * @deprecated ES6: use `Array.find`
- 420 */
- 421 export function first(array: ReadonlyArray, fn: (item: T) => boolean, notFoundValue: T): T;
-
- 560
- 561 /**
- 562: * @deprecated ES6: use `Array.find`
- 563 */
- 564 export function find(arr: ArrayLike, predicate: (value: T, index: number, arr: ArrayLike) => any): T | undefined {
-
-src/vs/base/common/map.ts:
- 11
- 12 /**
- 13: * @deprecated ES6: use `[...SetOrMap.values()]`
- 14 */
- 15 export function values(set: Set): V[];
-
- 22
- 23 /**
- 24: * @deprecated ES6: use `[...map.keys()]`
- 25 */
- 26 export function keys(map: Map): K[] {
-
-src/vs/base/common/objects.ts:
- 115
- 116 /**
- 117: * @deprecated ES6
- 118 */
- 119 export function assign(destination: T): T;
-
-src/vs/base/common/strings.ts:
- 15
- 16 /**
- 17: * @deprecated ES6: use `String.padStart`
- 18 */
- 19 export function pad(n: number, l: number, char: string = '0'): string {
-
- 146
- 147 /**
- 148: * @deprecated ES6: use `String.startsWith`
- 149 */
- 150 export function startsWith(haystack: string, needle: string): boolean {
-
- 167
- 168 /**
- 169: * @deprecated ES6: use `String.endsWith`
- 170 */
- 171 export function endsWith(haystack: string, needle: string): boolean {
-
- 853
- 854 /**
- 855: * @deprecated ES6
- 856 */
- 857 export function repeat(s: string, count: number): string {
diff --git a/.vscode/searches/ts36031.code-search b/.vscode/searches/ts36031.code-search
index 8a74db2a9ae..51071b8840a 100644
--- a/.vscode/searches/ts36031.code-search
+++ b/.vscode/searches/ts36031.code-search
@@ -2,18 +2,52 @@
# Flags: RegExp
# ContextLines: 2
-2 results - 2 files
+8 results - 4 files
src/vs/base/browser/ui/tree/asyncDataTree.ts:
- 243 } : () => 'treeitem',
- 244 isChecked: options.accessibilityProvider!.isChecked ? (e) => {
- 245: return !!(options.accessibilityProvider?.isChecked!(e.element as T));
- 246 } : undefined,
- 247 getAriaLabel(e) {
+ 241 } : () => 'treeitem',
+ 242 isChecked: options.accessibilityProvider!.isChecked ? (e) => {
+ 243: return !!(options.accessibilityProvider?.isChecked!(e.element as T));
+ 244 } : undefined,
+ 245 getAriaLabel(e) {
-src/vs/workbench/contrib/debug/browser/debugConfigurationManager.ts:
- 254
- 255 return debugDynamicExtensions.map(e => {
- 256: const type = e.contributes?.debuggers![0].type!;
- 257 return {
- 258 label: this.getDebuggerLabel(type)!,
+src/vs/platform/list/browser/listService.ts:
+ 463
+ 464 if (typeof options?.openOnSingleClick !== 'boolean' && options?.configurationService) {
+ 465: this.openOnSingleClick = options?.configurationService!.getValue(openModeSettingKey) !== 'doubleClick';
+ 466 this._register(options?.configurationService.onDidChangeConfiguration(() => {
+ 467: this.openOnSingleClick = options?.configurationService!.getValue(openModeSettingKey) !== 'doubleClick';
+ 468 }));
+ 469 } else {
+
+src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts:
+ 1526
+ 1527 await this._ensureActiveKernel();
+ 1528: await this._activeKernel?.cancelNotebookCell!(this._notebookViewModel!.uri, undefined);
+ 1529 }
+ 1530
+
+ 1535
+ 1536 await this._ensureActiveKernel();
+ 1537: await this._activeKernel?.executeNotebookCell!(this._notebookViewModel!.uri, undefined);
+ 1538 }
+ 1539
+
+ 1553
+ 1554 await this._ensureActiveKernel();
+ 1555: await this._activeKernel?.cancelNotebookCell!(this._notebookViewModel!.uri, cell.handle);
+ 1556 }
+ 1557
+
+ 1567
+ 1568 await this._ensureActiveKernel();
+ 1569: await this._activeKernel?.executeNotebookCell!(this._notebookViewModel!.uri, cell.handle);
+ 1570 }
+ 1571
+
+src/vs/workbench/contrib/webview/electron-browser/iframeWebviewElement.ts:
+ 89 .then(() => this._resourceRequestManager.ensureReady())
+ 90 .then(() => {
+ 91: this.element?.contentWindow!.postMessage({ channel, args: data }, '*');
+ 92 });
+ 93 }
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 1ffd534543d..4b2a9059553 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -26,6 +26,7 @@
"test/automation/out/**": true,
"test/integration/browser/out/**": true,
"src/vs/base/test/node/uri.test.data.txt": true,
+ "src/vs/workbench/test/browser/api/extHostDocumentData.test.perf-data.ts": true,
"src/vs/server": false
},
"lcov.path": [
@@ -42,9 +43,7 @@
}
],
"eslint.options": {
- "rulePaths": [
- "./build/lib/eslint"
- ]
+ "rulePaths": ["./build/lib/eslint"]
},
"typescript.tsdk": "node_modules/typescript/lib",
"npm.exclude": "**/extensions/**",
@@ -54,15 +53,11 @@
"typescript.preferences.quoteStyle": "single",
"json.schemas": [
{
- "fileMatch": [
- "cgmanifest.json"
- ],
+ "fileMatch": ["cgmanifest.json"],
"url": "./.vscode/cgmanifest.schema.json"
},
{
- "fileMatch": [
- "cglicenses.json"
- ],
+ "fileMatch": ["cglicenses.json"],
"url": "./.vscode/cglicenses.schema.json"
}
],
@@ -72,7 +67,13 @@
},
"gulp.autoDetect": "off",
"files.insertFinalNewline": true,
- "[typescript]": {
+ "[plaintext]": {
+ "files.insertFinalNewline": false,
+ },
+ "[typescript]": {
+ "editor.defaultFormatter": "vscode.typescript-language-features"
+ },
+ "[javascript]": {
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"typescript.tsc.autoDetect": "off"
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index f68880d6f68..943ae5bd536 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -3,12 +3,8 @@
"tasks": [
{
"type": "npm",
- "script": "watchd",
- "label": "Build VS Code",
- "group": {
- "kind": "build",
- "isDefault": true
- },
+ "script": "watch-clientd",
+ "label": "Build VS Code Core",
"isBackground": true,
"presentation": {
"reveal": "never"
@@ -33,8 +29,100 @@
},
{
"type": "npm",
- "script": "kill-watchd",
+ "script": "watch-extensionsd",
+ "label": "Build VS Code Extensions",
+ "isBackground": true,
+ "presentation": {
+ "reveal": "never"
+ },
+ "problemMatcher": {
+ "owner": "typescript",
+ "applyTo": "closedDocuments",
+ "fileLocation": [
+ "absolute"
+ ],
+ "pattern": {
+ "regexp": "Error: ([^(]+)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\): (.*)$",
+ "file": 1,
+ "location": 2,
+ "message": 3
+ },
+ "background": {
+ "beginsPattern": "Starting compilation",
+ "endsPattern": "Finished compilation"
+ }
+ }
+ },
+ {
+ "label": "Build VS Code",
+ "dependsOn": [
+ "Build VS Code Core",
+ "Build VS Code Extensions"
+ ],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ }
+ },
+ {
+ "type": "npm",
+ "script": "kill-watch-clientd",
+ "label": "Kill Build VS Code Core",
+ "group": "build",
+ "presentation": {
+ "reveal": "never"
+ },
+ "problemMatcher": "$tsc"
+ },
+ {
+ "type": "npm",
+ "script": "kill-watch-extensionsd",
+ "label": "Kill Build VS Code Extensions",
+ "group": "build",
+ "presentation": {
+ "reveal": "never"
+ },
+ "problemMatcher": "$tsc"
+ },
+ {
"label": "Kill Build VS Code",
+ "dependsOn": [
+ "Kill Build VS Code Core",
+ "Kill Build VS Code Extensions"
+ ],
+ "group": "build"
+ },
+ {
+ "type": "npm",
+ "script": "watch-webd",
+ "label": "Build Web Extensions",
+ "group": "build",
+ "isBackground": true,
+ "presentation": {
+ "reveal": "never"
+ },
+ "problemMatcher": {
+ "owner": "typescript",
+ "applyTo": "closedDocuments",
+ "fileLocation": [
+ "absolute"
+ ],
+ "pattern": {
+ "regexp": "Error: ([^(]+)\\((\\d+|\\d+,\\d+|\\d+,\\d+,\\d+,\\d+)\\): (.*)$",
+ "file": 1,
+ "location": 2,
+ "message": 3
+ },
+ "background": {
+ "beginsPattern": "Starting compilation",
+ "endsPattern": "Finished compilation"
+ }
+ }
+ },
+ {
+ "type": "npm",
+ "script": "kill-watch-webd",
+ "label": "Kill Build Web Extensions",
"group": "build",
"presentation": {
"reveal": "never"
@@ -75,7 +163,7 @@
},
{
"type": "shell",
- "command": "yarn web -- --no-launch",
+ "command": "yarn web --no-launch",
"label": "Run web",
"isBackground": true,
"problemMatcher": {
@@ -98,6 +186,28 @@
"source": "eslint",
"base": "$eslint-stylish"
}
+ },
+ {
+ "type": "shell",
+ "command": "node build/lib/preLaunch.js",
+ "label": "Ensure Prelaunch Dependencies",
+ "presentation": {
+ "reveal": "silent"
+ }
+ },
+ {
+ "type": "npm",
+ "script": "tsec-compile-check",
+ "problemMatcher": [
+ {
+ "base": "$tsc",
+ "applyTo": "allDocuments",
+ "owner": "tsec"
+ },
+ ],
+ "group": "build",
+ "label": "npm: tsec-compile-check",
+ "detail": "node_modules/tsec/bin/tsec -p src/tsconfig.json --noEmit"
}
]
}
diff --git a/.yarnrc b/.yarnrc
index 00b2ebda693..d97527dab46 100644
--- a/.yarnrc
+++ b/.yarnrc
@@ -1,3 +1,3 @@
-disturl "https://atom.io/download/electron"
-target "7.3.0"
+disturl "https://electronjs.org/headers"
+target "9.3.3"
runtime "electron"
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b3eb18c2bc0..5d547535187 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -14,7 +14,7 @@ The active community will be eager to assist you. Your well-worded question will
Your comments and feedback are welcome, and the development team is available via a handful of different channels.
-See the [Feedback Channels](https://github.com/Microsoft/vscode/wiki/Feedback-Channels) wiki page for details on how to share your thoughts.
+See the [Feedback Channels](https://github.com/microsoft/vscode/wiki/Feedback-Channels) wiki page for details on how to share your thoughts.
## Reporting Issues
@@ -22,15 +22,15 @@ Have you identified a reproducible problem in VS Code? Have a feature request? W
### Identify Where to Report
-The VS Code project is distributed across multiple repositories. Try to file the issue against the correct repository. Check the list of [Related Projects](https://github.com/Microsoft/vscode/wiki/Related-Projects) if you aren't sure which repo is correct.
+The VS Code project is distributed across multiple repositories. Try to file the issue against the correct repository. Check the list of [Related Projects](https://github.com/microsoft/vscode/wiki/Related-Projects) if you aren't sure which repo is correct.
Can you recreate the issue even after [disabling all extensions](https://code.visualstudio.com/docs/editor/extension-gallery#_disable-an-extension)? If you find the issue is caused by an extension you have installed, please file an issue on the extension's repo directly.
### Look For an Existing Issue
-Before you create a new issue, please do a search in [open issues](https://github.com/Microsoft/vscode/issues) to see if the issue or feature request has already been filed.
+Before you create a new issue, please do a search in [open issues](https://github.com/microsoft/vscode/issues) to see if the issue or feature request has already been filed.
-Be sure to scan through the [most popular](https://github.com/Microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc) feature requests.
+Be sure to scan through the [most popular](https://github.com/microsoft/vscode/issues?q=is%3Aopen+is%3Aissue+label%3Afeature-request+sort%3Areactions-%2B1-desc) feature requests.
If you find your issue already exists, make relevant comments and add your [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). Use a reaction in place of a "+1" comment:
@@ -83,7 +83,7 @@ Don't feel bad if the developers can't reproduce the issue right away. They will
### Follow Your Issue
-Once submitted, your report will go into the [issue tracking](https://github.com/Microsoft/vscode/wiki/Issue-Tracking) workflow. Be sure to understand what will happen next, so you know what to expect, and how to continue to assist throughout the process.
+Once submitted, your report will go into the [issue tracking](https://github.com/microsoft/vscode/wiki/Issue-Tracking) workflow. Be sure to understand what will happen next, so you know what to expect, and how to continue to assist throughout the process.
## Automated Issue Management
@@ -98,7 +98,7 @@ If you believe the bot got something wrong, please open a new issue and let us k
## Contributing Fixes
If you are interested in writing code to fix issues,
-please see [How to Contribute](https://github.com/Microsoft/vscode/wiki/How-to-Contribute) in the wiki.
+please see [How to Contribute](https://github.com/microsoft/vscode/wiki/How-to-Contribute) in the wiki.
# Thank You!
diff --git a/README.md b/README.md
index 1d3bc28f9bb..ce1a7132ef8 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,7 @@
# Visual Studio Code - Open Source ("Code - OSS")
-
-
-[](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://aka.ms/vscode-builds)
+[](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)
## The Repository
@@ -31,12 +29,12 @@ There are many ways in which you can participate in the project, for example:
* 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:
+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)
-* [Submitting pull requests](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#pull-requests)
+* [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)
+* [Submitting pull requests](https://github.com/microsoft/vscode/wiki/How-to-Contribute#pull-requests)
* [Finding an issue to work on](https://github.com/microsoft/vscode/wiki/How-to-Contribute#where-to-contribute)
* [Contributing to translations](https://aka.ms/vscodeloc)
@@ -44,18 +42,29 @@ please see the document [How to Contribute](https://github.com/Microsoft/vscode/
* Ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/vscode)
* [Request a new feature](CONTRIBUTING.md)
-* Upvote [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)
+* Upvote [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!
+See our [wiki](https://github.com/microsoft/vscode/wiki/Feedback-Channels) for a description of each of these channels and information on some other available community-driven channels.
+
## Related Projects
-Many of the core components and extensions to VS 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 VS 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
VS 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`.
+## Development Container
+
+This repository includes a Visual Studio Code Remote - Containers / Codespaces development container.
+
+- For [Remote - Containers](https://aka.ms/vscode-remote/download/containers), use the **Remote-Containers: Open Repository in Container...** command which creates a Docker volume for better disk I/O on macOS and Windows.
+- For Codespaces, install the [Visual Studio Codespaces](https://aka.ms/vscs-ext-vscode) extension in VS Code, and use the **Codespaces: Create New Codespace** command.
+
+Docker / the Codespace should have at least **4 Cores and 6 GB of RAM (8 GB recommended)** to run full build. See the [development container README](.devcontainer/README.md) for more information.
+
## 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.
diff --git a/ThirdPartyNotices.txt b/ThirdPartyNotices.txt
index 93abc78486d..074844d813e 100644
--- a/ThirdPartyNotices.txt
+++ b/ThirdPartyNotices.txt
@@ -7,7 +7,7 @@ This project incorporates components from the projects listed below. The origina
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.4 (https://github.com/atom/language-java)
+3. atom/language-java version 0.32.0 (https://github.com/atom/language-java)
4. atom/language-sass version 0.62.1 (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)
@@ -23,7 +23,7 @@ This project incorporates components from the projects listed below. The origina
16. fadeevab/make.tmbundle (https://github.com/fadeevab/make.tmbundle)
17. freebroccolo/atom-language-swift (https://github.com/freebroccolo/atom-language-swift)
18. HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/)
-19. Ikuyadeu/vscode-R version 1.1.8 (https://github.com/Ikuyadeu/vscode-R)
+19. Ikuyadeu/vscode-R version 1.3.0 (https://github.com/Ikuyadeu/vscode-R)
20. insane version 2.6.2 (https://github.com/bevacqua/insane)
21. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site)
22. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar)
@@ -33,14 +33,14 @@ This project incorporates components from the projects listed below. The origina
26. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert)
27. language-docker (https://github.com/moby/moby)
28. language-less version 0.34.2 (https://github.com/atom/language-less)
-29. language-php version 0.44.4 (https://github.com/atom/language-php)
+29. language-php version 0.44.5 (https://github.com/atom/language-php)
30. language-rust version 0.4.12 (https://github.com/zargony/atom-language-rust)
31. MagicStack/MagicPython version 1.1.1 (https://github.com/MagicStack/MagicPython)
32. marked version 0.6.2 (https://github.com/markedjs/marked)
33. mdn-data version 1.1.12 (https://github.com/mdn/data)
-34. Microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/Microsoft/TypeScript-TmLanguage)
-35. Microsoft/vscode-JSON.tmLanguage (https://github.com/Microsoft/vscode-JSON.tmLanguage)
-36. Microsoft/vscode-mssql version 1.9.0 (https://github.com/Microsoft/vscode-mssql)
+34. microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/microsoft/TypeScript-TmLanguage)
+35. microsoft/vscode-JSON.tmLanguage (https://github.com/microsoft/vscode-JSON.tmLanguage)
+36. microsoft/vscode-mssql version 1.9.0 (https://github.com/microsoft/vscode-mssql)
37. mmims/language-batchfile version 0.7.5 (https://github.com/mmims/language-batchfile)
38. octref/language-css version 0.42.11 (https://github.com/octref/language-css)
39. PowerShell/EditorSyntax version 1.0.0 (https://github.com/PowerShell/EditorSyntax)
@@ -59,13 +59,13 @@ This project incorporates components from the projects listed below. The origina
52. textmate/perl.tmbundle (https://github.com/textmate/perl.tmbundle)
53. textmate/ruby.tmbundle (https://github.com/textmate/ruby.tmbundle)
54. textmate/yaml.tmbundle (https://github.com/textmate/yaml.tmbundle)
-55. TypeScript-TmLanguage version 0.1.8 (https://github.com/Microsoft/TypeScript-TmLanguage)
-56. TypeScript-TmLanguage version 1.0.0 (https://github.com/Microsoft/TypeScript-TmLanguage)
-57. Unicode version 12.0.0 (http://www.unicode.org/)
+55. TypeScript-TmLanguage version 0.1.8 (https://github.com/microsoft/TypeScript-TmLanguage)
+56. TypeScript-TmLanguage version 1.0.0 (https://github.com/microsoft/TypeScript-TmLanguage)
+57. Unicode version 12.0.0 (https://home.unicode.org/)
58. vscode-codicons version 0.0.1 (https://github.com/microsoft/vscode-codicons)
-59. vscode-logfile-highlighter version 2.6.0 (https://github.com/emilast/vscode-logfile-highlighter)
+59. vscode-logfile-highlighter version 2.8.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)
+61. Web Background Synchronization (https://github.com/WICG/background-sync)
%% atom/language-clojure NOTICES AND INFORMATION BEGIN HERE
@@ -1581,7 +1581,7 @@ Exhibit B - "Incompatible With Secondary Licenses" Notice
=========================================
END OF mdn-data NOTICES AND INFORMATION
-%% Microsoft/TypeScript-TmLanguage NOTICES AND INFORMATION BEGIN HERE
+%% microsoft/TypeScript-TmLanguage NOTICES AND INFORMATION BEGIN HERE
=========================================
Copyright (c) Microsoft Corporation
All rights reserved.
@@ -1606,9 +1606,9 @@ 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 Microsoft/TypeScript-TmLanguage NOTICES AND INFORMATION
+END OF microsoft/TypeScript-TmLanguage NOTICES AND INFORMATION
-%% Microsoft/vscode-JSON.tmLanguage NOTICES AND INFORMATION BEGIN HERE
+%% microsoft/vscode-JSON.tmLanguage NOTICES AND INFORMATION BEGIN HERE
=========================================
vscode-JSON.tmLanguage
@@ -1630,9 +1630,9 @@ TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONIN
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 Microsoft/vscode-JSON.tmLanguage NOTICES AND INFORMATION
+END OF microsoft/vscode-JSON.tmLanguage NOTICES AND INFORMATION
-%% Microsoft/vscode-mssql NOTICES AND INFORMATION BEGIN HERE
+%% microsoft/vscode-mssql NOTICES AND INFORMATION BEGIN HERE
=========================================
------------------------------------------ START OF LICENSE -----------------------------------------
vscode-mssql
@@ -1645,7 +1645,7 @@ The above copyright notice and this permission notice shall be included in all c
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 LICENSE -----------------------------------------
=========================================
-END OF Microsoft/vscode-mssql NOTICES AND INFORMATION
+END OF microsoft/vscode-mssql NOTICES AND INFORMATION
%% mmims/language-batchfile NOTICES AND INFORMATION BEGIN HERE
=========================================
diff --git a/build/.gitattributes b/build/.gitattributes
new file mode 100644
index 00000000000..d2690a8f26f
--- /dev/null
+++ b/build/.gitattributes
@@ -0,0 +1,3 @@
+* text eol=lf
+*.exe binary
+*.dll binary
diff --git a/build/.gitignore b/build/.gitignore
new file mode 100644
index 00000000000..01e8737ef58
--- /dev/null
+++ b/build/.gitignore
@@ -0,0 +1,3 @@
+azure-pipelines/**/*.js
+darwin/**/*.js
+lib/**/*.js
diff --git a/build/.moduleignore b/build/.moduleignore
new file mode 100644
index 00000000000..489d4709f0a
--- /dev/null
+++ b/build/.moduleignore
@@ -0,0 +1,38 @@
+
+# additional cleanup rules for node modules, .gitignore style
+
+**/docs/**
+**/example/**
+**/examples/**
+**/test/**
+**/tests/**
+
+**/History.md
+**/CHANGELOG.md
+**/README.md
+**/readme.md
+**/readme.markdown
+
+**/*.ts
+!typescript/**/*.d.ts
+
+jschardet/dist/**
+
+es6-promise/lib/**
+
+vscode-textmate/webpack.config.js
+
+zone.js/dist/**
+!zone.js/dist/zone-node.js
+
+# https://github.com/xtermjs/xterm.js/issues/3137
+xterm/src/**
+xterm/tsconfig.all.json
+
+# https://github.com/xtermjs/xterm.js/issues/3138
+xterm-addon-*/src/**
+xterm-addon-*/fixtures/**
+xterm-addon-*/out/**
+xterm-addon-*/out-test/**
+
+
diff --git a/build/.nativeignore b/build/.nativeignore
index 0e0eb08b283..8a40a72f311 100644
--- a/build/.nativeignore
+++ b/build/.nativeignore
@@ -46,6 +46,7 @@ spdlog/build/**
spdlog/deps/**
spdlog/src/**
spdlog/test/**
+spdlog/*.yml
!spdlog/build/Release/*.node
jschardet/dist/**
@@ -72,6 +73,7 @@ node-pty/build/**
node-pty/src/**
node-pty/tools/**
node-pty/deps/**
+node-pty/scripts/**
!node-pty/build/Release/*.exe
!node-pty/build/Release/*.dll
!node-pty/build/Release/*.node
@@ -93,6 +95,14 @@ vsda/README.md
vsda/targets
!vsda/build/Release/vsda.node
+vscode-encrypt/build/**
+vscode-encrypt/src/**
+vscode-encrypt/vendor/**
+vscode-encrypt/.gitignore
+vscode-encrypt/binding.gyp
+vscode-encrypt/README.md
+!vscode-encrypt/build/Release/vscode-encrypt-native.node
+
vscode-windows-ca-certs/**/*
!vscode-windows-ca-certs/package.json
!vscode-windows-ca-certs/**/*.node
diff --git a/build/.webignore b/build/.webignore
new file mode 100644
index 00000000000..553d445f3f6
--- /dev/null
+++ b/build/.webignore
@@ -0,0 +1,31 @@
+# cleanup rules for web node modules, .gitignore style
+
+**/*.txt
+**/*.json
+**/*.md
+**/*.d.ts
+**/*.js.map
+**/LICENSE
+**/CONTRIBUTORS
+
+**/docs/**
+**/example/**
+**/examples/**
+
+jschardet/index.js
+jschardet/src/**
+jschardet/dist/jschardet.js
+
+vscode-textmate/webpack.config.js
+
+xterm/src/**
+
+xterm-addon-search/src/**
+xterm-addon-search/out/**
+xterm-addon-search/fixtures/**
+
+xterm-addon-unicode11/src/**
+xterm-addon-unicode11/out/**
+
+xterm-addon-webgl/src/**
+xterm-addon-webgl/out/**
diff --git a/build/azure-pipelines/common/createAsset.ts b/build/azure-pipelines/common/createAsset.ts
index 53c15a28fcf..d7e62629cb8 100644
--- a/build/azure-pipelines/common/createAsset.ts
+++ b/build/azure-pipelines/common/createAsset.ts
@@ -53,7 +53,7 @@ async function uploadBlob(blobService: azure.BlobService, quality: string, blobN
}
};
- await new Promise((c, e) => blobService.createBlockBlobFromLocalFile(quality, blobName, filePath, blobOptions, err => err ? e(err) : c()));
+ await new Promise((c, e) => blobService.createBlockBlobFromLocalFile(quality, blobName, filePath, blobOptions, err => err ? e(err) : c()));
}
function getEnv(name: string): string {
diff --git a/build/azure-pipelines/common/extract-telemetry.sh b/build/azure-pipelines/common/extract-telemetry.sh
index 84bbd9c537c..03d80c1bbbd 100755
--- a/build/azure-pipelines/common/extract-telemetry.sh
+++ b/build/azure-pipelines/common/extract-telemetry.sh
@@ -4,16 +4,16 @@ 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 .
+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
+node $BUILD_SOURCESDIRECTORY/build/node_modules/.bin/vscode-telemetry-extractor --sourceDir $BUILD_SOURCESDIRECTORY --excludedDir $BUILD_SOURCESDIRECTORY/extensions --outputDir . --applyEndpoints
+node $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
+rm -rf extraction
diff --git a/build/azure-pipelines/common/publish-webview.ts b/build/azure-pipelines/common/publish-webview.ts
index 143b61bb61a..b1947ebc024 100644
--- a/build/azure-pipelines/common/publish-webview.ts
+++ b/build/azure-pipelines/common/publish-webview.ts
@@ -17,7 +17,7 @@ const fileNames = [
];
async function assertContainer(blobService: azure.BlobService, container: string): Promise {
- await new Promise((c, e) => blobService.createContainerIfNotExists(container, { publicAccessLevel: 'blob' }, err => err ? e(err) : c()));
+ await new Promise((c, e) => blobService.createContainerIfNotExists(container, { publicAccessLevel: 'blob' }, err => err ? e(err) : c()));
}
async function doesBlobExist(blobService: azure.BlobService, container: string, blobName: string): Promise {
@@ -33,7 +33,7 @@ async function uploadBlob(blobService: azure.BlobService, container: string, blo
}
};
- await new Promise((c, e) => blobService.createBlockBlobFromLocalFile(container, blobName, file, blobOptions, err => err ? e(err) : c()));
+ await new Promise((c, e) => blobService.createBlockBlobFromLocalFile(container, blobName, file, blobOptions, err => err ? e(err) : c()));
}
async function publish(commit: string, files: readonly string[]): Promise {
diff --git a/build/azure-pipelines/darwin/continuous-build-darwin.yml b/build/azure-pipelines/darwin/continuous-build-darwin.yml
index 9f66907f0a1..954e5bca636 100644
--- a/build/azure-pipelines/darwin/continuous-build-darwin.yml
+++ b/build/azure-pipelines/darwin/continuous-build-darwin.yml
@@ -1,7 +1,7 @@
steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
@@ -26,12 +26,14 @@ steps:
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
- script: |
- yarn electron x64
- displayName: Download Electron
+ set -e
+ yarn postinstall
+ displayName: Run postinstall scripts
+ condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
- script: |
- yarn gulp hygiene
- displayName: Run Hygiene Checks
+ yarn electron x64
+ displayName: Download Electron
- script: |
yarn monaco-compile-check
@@ -54,7 +56,7 @@ steps:
displayName: Run Unit Tests (Electron)
- script: |
- yarn test-browser --browser chromium --browser webkit --browser firefox
+ yarn test-browser --browser chromium --browser webkit --browser firefox --tfs "Browser Unit Tests"
displayName: Run Unit Tests (Browser)
- script: |
diff --git a/build/azure-pipelines/darwin/product-build-darwin.yml b/build/azure-pipelines/darwin/product-build-darwin.yml
index ea286ef1418..0500f84accc 100644
--- a/build/azure-pipelines/darwin/product-build-darwin.yml
+++ b/build/azure-pipelines/darwin/product-build-darwin.yml
@@ -21,7 +21,7 @@ steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
@@ -101,7 +101,7 @@ steps:
- script: |
set -e
- yarn test-browser --build --browser chromium --browser webkit --browser firefox
+ yarn test-browser --build --browser chromium --browser webkit --browser firefox --tfs "Browser Unit Tests"
displayName: Run unit tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
@@ -118,6 +118,13 @@ steps:
displayName: Run integration tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+- script: |
+ set -e
+ VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin" \
+ ./resources/server/test/test-web-integration.sh --browser webkit
+ displayName: Run integration tests (Browser)
+ condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin
@@ -128,13 +135,6 @@ steps:
displayName: Run remote integration tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-- script: |
- set -e
- VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-darwin" \
- ./resources/server/test/test-web-integration.sh --browser webkit
- displayName: Run integration tests (Browser)
- condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
- script: |
set -e
APP_ROOT=$(agent.builddirectory)/VSCode-darwin
@@ -160,6 +160,13 @@ steps:
continueOnError: true
condition: failed()
+- task: PublishTestResults@2
+ displayName: Publish Tests Results
+ inputs:
+ testResultsFiles: '*-results.xml'
+ searchFolder: '$(Build.ArtifactStagingDirectory)/test-results'
+ condition: succeededOrFailed()
+
- script: |
set -e
security create-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain
@@ -248,6 +255,7 @@ steps:
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \
AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
+ VSCODE_ARCH="$(VSCODE_ARCH)" \
./build/azure-pipelines/darwin/publish.sh
displayName: Publish
diff --git a/build/azure-pipelines/darwin/publish.sh b/build/azure-pipelines/darwin/publish.sh
index 07734e194f8..51ac2e6355d 100755
--- a/build/azure-pipelines/darwin/publish.sh
+++ b/build/azure-pipelines/darwin/publish.sh
@@ -8,12 +8,14 @@ node build/azure-pipelines/common/createAsset.js \
"VSCode-darwin-$VSCODE_QUALITY.zip" \
../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
+if [ "$VSCODE_ARCH" == "x64" ]; then
+ # 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/createAsset.js \
- server-darwin \
- archive-unsigned \
- "vscode-server-darwin.zip" \
- ../vscode-server-darwin.zip
+ # publish Remote Extension Host
+ node build/azure-pipelines/common/createAsset.js \
+ server-darwin \
+ archive-unsigned \
+ "vscode-server-darwin.zip" \
+ ../vscode-server-darwin.zip
+fi
diff --git a/build/azure-pipelines/distro-build.yml b/build/azure-pipelines/distro-build.yml
index 4689451b54e..f9bdf7fef8e 100644
--- a/build/azure-pipelines/distro-build.yml
+++ b/build/azure-pipelines/distro-build.yml
@@ -8,7 +8,7 @@ pr:
steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: AzureKeyVault@1
displayName: 'Azure Key Vault: Get Secrets'
diff --git a/build/azure-pipelines/exploration-build.yml b/build/azure-pipelines/exploration-build.yml
index e0b1ef7d613..cf1ced09dc8 100644
--- a/build/azure-pipelines/exploration-build.yml
+++ b/build/azure-pipelines/exploration-build.yml
@@ -11,7 +11,7 @@ pr:
steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: AzureKeyVault@1
displayName: 'Azure Key Vault: Get Secrets'
@@ -31,10 +31,10 @@ steps:
git config user.email "vscode@microsoft.com"
git config user.name "VSCode"
- git checkout origin/electron-8.0.x
+ git checkout origin/electron-11.x.y
git merge origin/master
# Push master branch into exploration branch
- git push origin HEAD:electron-8.0.x
+ git push origin HEAD:electron-11.x.y
displayName: Sync & Merge Exploration
diff --git a/build/azure-pipelines/linux/continuous-build-linux.yml b/build/azure-pipelines/linux/continuous-build-linux.yml
index fdd4c305cda..58e14ab0dcd 100644
--- a/build/azure-pipelines/linux/continuous-build-linux.yml
+++ b/build/azure-pipelines/linux/continuous-build-linux.yml
@@ -10,7 +10,7 @@ steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
@@ -34,6 +34,12 @@ steps:
vstsFeed: 'vscode-build-cache'
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+- script: |
+ set -e
+ yarn postinstall
+ displayName: Run postinstall scripts
+ condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
+
- script: |
yarn electron x64
displayName: Download Electron
@@ -63,7 +69,7 @@ steps:
displayName: Run Unit Tests (Electron)
- script: |
- DISPLAY=:10 yarn test-browser --browser chromium
+ DISPLAY=:10 yarn test-browser --browser chromium --tfs "Browser Unit Tests"
displayName: Run Unit Tests (Browser)
- script: |
diff --git a/build/azure-pipelines/linux/product-build-linux-multiarch.yml b/build/azure-pipelines/linux/product-build-linux-multiarch.yml
index 485f8dcfba7..258f87ea3d2 100644
--- a/build/azure-pipelines/linux/product-build-linux-multiarch.yml
+++ b/build/azure-pipelines/linux/product-build-linux-multiarch.yml
@@ -21,7 +21,7 @@ steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
diff --git a/build/azure-pipelines/linux/product-build-linux.yml b/build/azure-pipelines/linux/product-build-linux.yml
index 5d7bccf467f..031a491648a 100644
--- a/build/azure-pipelines/linux/product-build-linux.yml
+++ b/build/azure-pipelines/linux/product-build-linux.yml
@@ -21,7 +21,7 @@ steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
@@ -52,21 +52,25 @@ steps:
git merge $(node -p "require('./package.json').distro")
displayName: Merge distro
+- script: |
+ echo -n $VSCODE_ARCH > .build/arch
+ displayName: Prepare arch cache flag
+
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
- keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ keyfile: '.build/arch, 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
+ CHILD_CONCURRENCY=1 npm_config_arch=$(NPM_ARCH) 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'
+ keyfile: '.build/arch, 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'))
@@ -85,80 +89,98 @@ steps:
- script: |
set -e
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
- yarn gulp vscode-linux-x64-min-ci
+ yarn gulp vscode-linux-$(VSCODE_ARCH)-min-ci
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
- yarn gulp vscode-reh-linux-x64-min-ci
+ yarn gulp vscode-reh-linux-$(VSCODE_ARCH)-min-ci
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
- yarn gulp vscode-reh-web-linux-x64-min-ci
+ yarn gulp vscode-reh-web-linux-$(VSCODE_ARCH)-min-ci
displayName: Build
- script: |
set -e
service xvfb start
displayName: Start xvfb
- condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+ condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
DISPLAY=:10 ./scripts/test.sh --build --tfs "Unit Tests"
displayName: Run unit tests (Electron)
- condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+ condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
- DISPLAY=:10 yarn test-browser --build --browser chromium
+ DISPLAY=:10 yarn test-browser --build --browser chromium --tfs "Browser Unit Tests"
displayName: Run unit tests (Browser)
- condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+ condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
# Figure out the full absolute path of the product we just built
# including the remote server and configure the integration tests
# to run with these builds instead of running out of sources.
set -e
- APP_ROOT=$(agent.builddirectory)/VSCode-linux-x64
+ APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
- VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-x64" \
+ VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
DISPLAY=:10 ./scripts/test-integration.sh --build --tfs "Integration Tests"
displayName: Run integration tests (Electron)
- condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+ condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- script: |
set -e
- APP_ROOT=$(agent.builddirectory)/VSCode-linux-x64
- APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
- INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
- VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-x64" \
- DISPLAY=:10 ./resources/server/test/test-remote-integration.sh
- displayName: Run remote integration tests (Electron)
- condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
-
-- script: |
- set -e
- VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-x64" \
+ VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-web-linux-$(VSCODE_ARCH)" \
DISPLAY=:10 ./resources/server/test/test-web-integration.sh --browser chromium
displayName: Run integration tests (Browser)
- condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+ condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+
+- script: |
+ set -e
+ APP_ROOT=$(agent.builddirectory)/VSCode-linux-$(VSCODE_ARCH)
+ APP_NAME=$(node -p "require(\"$APP_ROOT/resources/app/product.json\").applicationName")
+ INTEGRATION_TEST_ELECTRON_PATH="$APP_ROOT/$APP_NAME" \
+ VSCODE_REMOTE_SERVER_PATH="$(agent.builddirectory)/vscode-reh-linux-$(VSCODE_ARCH)" \
+ DISPLAY=:10 ./resources/server/test/test-remote-integration.sh
+ displayName: Run remote integration tests (Electron)
+ condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: PublishPipelineArtifact@0
inputs:
- artifactName: crash-dump-linux
+ artifactName: 'crash-dump-linux-$(VSCODE_ARCH)'
targetPath: .build/crashes
displayName: 'Publish Crash Reports'
continueOnError: true
condition: failed()
+- task: PublishTestResults@2
+ displayName: Publish Tests Results
+ inputs:
+ testResultsFiles: '*-results.xml'
+ searchFolder: '$(Build.ArtifactStagingDirectory)/test-results'
+ condition: and(succeededOrFailed(), eq(variables['VSCODE_ARCH'], 'x64'), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
+
- script: |
set -e
- yarn gulp "vscode-linux-x64-build-deb"
- yarn gulp "vscode-linux-x64-build-rpm"
- yarn gulp "vscode-linux-x64-prepare-snap"
- displayName: Build packages
+ yarn gulp "vscode-linux-$(VSCODE_ARCH)-build-deb"
+ yarn gulp "vscode-linux-$(VSCODE_ARCH)-build-rpm"
+ displayName: Build deb, rpm packages
+
+- script: |
+ set -e
+ yarn gulp "vscode-linux-$(VSCODE_ARCH)-prepare-snap"
+ displayName: Prepare snap package
+ condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
+
+# needed for code signing
+- task: UseDotNet@2
+ displayName: 'Install .NET Core SDK 2.x'
+ inputs:
+ version: 2.x
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
inputs:
ConnectedServiceName: 'ESRP CodeSign'
- FolderPath: '.build/linux/rpm/x86_64'
+ FolderPath: '.build/linux/rpm'
Pattern: '*.rpm'
signConfigType: inlineSignParams
inlineOperation: |
@@ -179,14 +201,16 @@ steps:
AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \
AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \
VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \
+ VSCODE_ARCH="$(VSCODE_ARCH)" \
./build/azure-pipelines/linux/publish.sh
displayName: Publish
- task: PublishPipelineArtifact@0
displayName: 'Publish Pipeline Artifact'
inputs:
- artifactName: snap-x64
+ artifactName: 'snap-$(VSCODE_ARCH)'
targetPath: .build/linux/snap-tarball
+ condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'))
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: 'Component Detection'
diff --git a/build/azure-pipelines/linux/publish.sh b/build/azure-pipelines/linux/publish.sh
index 7e360be6cb4..72fe2ad7b30 100755
--- a/build/azure-pipelines/linux/publish.sh
+++ b/build/azure-pipelines/linux/publish.sh
@@ -4,11 +4,10 @@ REPO="$(pwd)"
ROOT="$REPO/.."
# Publish tarball
-PLATFORM_LINUX="linux-x64"
+PLATFORM_LINUX="linux-$VSCODE_ARCH"
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"
+[ -z "$VSCODE_QUALITY" ] && TARBALL_FILENAME="code-$VSCODE_ARCH-$BUILD_VERSION.tar.gz" || TARBALL_FILENAME="code-$VSCODE_QUALITY-$VSCODE_ARCH-$BUILD_VERSION.tar.gz"
TARBALL_PATH="$ROOT/$TARBALL_FILENAME"
rm -rf $ROOT/code-*.tar.*
@@ -28,24 +27,36 @@ rm -rf $ROOT/vscode-server-*.tar.*
node build/azure-pipelines/common/createAsset.js "server-$PLATFORM_LINUX" archive-unsigned "$SERVER_TARBALL_FILENAME" "$SERVER_TARBALL_PATH"
# Publish DEB
-PLATFORM_DEB="linux-deb-x64"
-DEB_ARCH="amd64"
+case $VSCODE_ARCH in
+ x64) DEB_ARCH="amd64" ;;
+ *) DEB_ARCH="$VSCODE_ARCH" ;;
+esac
+
+PLATFORM_DEB="linux-deb-$VSCODE_ARCH"
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/createAsset.js "$PLATFORM_DEB" package "$DEB_FILENAME" "$DEB_PATH"
# Publish RPM
-PLATFORM_RPM="linux-rpm-x64"
-RPM_ARCH="x86_64"
+case $VSCODE_ARCH in
+ x64) RPM_ARCH="x86_64" ;;
+ armhf) RPM_ARCH="armv7hl" ;;
+ arm64) RPM_ARCH="aarch64" ;;
+ *) RPM_ARCH="$VSCODE_ARCH" ;;
+esac
+
+PLATFORM_RPM="linux-rpm-$VSCODE_ARCH"
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/createAsset.js "$PLATFORM_RPM" package "$RPM_FILENAME" "$RPM_PATH"
-# Publish 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)
+if [ "$VSCODE_ARCH" == "x64" ]; then
+ # Publish 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)
+fi
diff --git a/build/azure-pipelines/linux/snap-build-linux.yml b/build/azure-pipelines/linux/snap-build-linux.yml
index a530499b313..39c39e86c9e 100644
--- a/build/azure-pipelines/linux/snap-build-linux.yml
+++ b/build/azure-pipelines/linux/snap-build-linux.yml
@@ -1,7 +1,7 @@
steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
diff --git a/build/azure-pipelines/mixin.js b/build/azure-pipelines/mixin.ts
similarity index 69%
rename from build/azure-pipelines/mixin.js
rename to build/azure-pipelines/mixin.ts
index 8d441e783a9..b6818d6957d 100644
--- a/build/azure-pipelines/mixin.js
+++ b/build/azure-pipelines/mixin.ts
@@ -5,15 +5,33 @@
'use strict';
-const json = require('gulp-json-editor');
+import * as json from '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');
-const fs = require('fs');
-const path = require('path');
+import * as filter from 'gulp-filter';
+import * as es from 'event-stream';
+import * as Vinyl from 'vinyl';
+import * as vfs from 'vinyl-fs';
+import * as fancyLog from 'fancy-log';
+import * as ansiColors from 'ansi-colors';
+import * as fs from 'fs';
+import * as path from 'path';
+
+interface IBuiltInExtension {
+ readonly name: string;
+ readonly version: string;
+ readonly repo: string;
+ readonly metadata: any;
+}
+
+interface OSSProduct {
+ readonly builtInExtensions: IBuiltInExtension[];
+ readonly webBuiltInExtensions?: IBuiltInExtension[];
+}
+
+interface Product {
+ readonly builtInExtensions?: IBuiltInExtension[] | { 'include'?: IBuiltInExtension[], 'exclude'?: string[] };
+ readonly webBuiltInExtensions?: IBuiltInExtension[];
+}
function main() {
const quality = process.env['VSCODE_QUALITY'];
@@ -31,8 +49,8 @@ function main() {
.pipe(filter(f => !f.isDirectory()))
.pipe(productJsonFilter)
.pipe(buffer())
- .pipe(json(o => {
- const ossProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8'));
+ .pipe(json((o: Product) => {
+ const ossProduct = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'product.json'), 'utf8')) as OSSProduct;
let builtInExtensions = ossProduct.builtInExtensions;
if (Array.isArray(o.builtInExtensions)) {
@@ -55,10 +73,10 @@ function main() {
fancyLog(ansiColors.blue('[mixin]'), 'Inheriting OSS built-in extensions', builtInExtensions.map(e => e.name));
}
- return { ...o, builtInExtensions };
+ return { webBuiltInExtensions: ossProduct.webBuiltInExtensions, ...o, builtInExtensions };
}))
.pipe(productJsonFilter.restore)
- .pipe(es.mapSync(function (f) {
+ .pipe(es.mapSync(function (f: Vinyl) {
fancyLog(ansiColors.blue('[mixin]'), f.relative, ansiColors.green('✔︎'));
return f;
}))
diff --git a/build/azure-pipelines/product-build.yml b/build/azure-pipelines/product-build.yml
index 7b6d2bcbbde..f4ff9400178 100644
--- a/build/azure-pipelines/product-build.yml
+++ b/build/azure-pipelines/product-build.yml
@@ -1,157 +1,3 @@
-resources:
- containers:
- - container: vscode-x64
- image: vscodehub.azurecr.io/vscode-linux-build-agent:x64
- endpoint: VSCodeHub
- - container: snapcraft
- image: snapcore/snapcraft:stable
-
-jobs:
-- job: Compile
- pool:
- vmImage: 'Ubuntu-16.04'
- container: vscode-x64
- steps:
- - template: product-compile.yml
-
-- job: Windows
- 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: 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: WindowsARM64
- condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_WIN32_ARM64'], 'true'))
- pool:
- vmImage: VS2017-Win2016
- variables:
- VSCODE_ARCH: arm64
- dependsOn:
- - Compile
- steps:
- - template: win32/product-build-win32-arm64.yml
-
-- job: Linux
- condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
- pool:
- vmImage: 'Ubuntu-16.04'
- container: vscode-x64
- dependsOn:
- - Compile
- steps:
- - template: linux/product-build-linux.yml
-
-- job: LinuxSnap
- condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
- pool:
- vmImage: 'Ubuntu-16.04'
- container: snapcraft
- dependsOn: Linux
- steps:
- - template: linux/snap-build-linux.yml
-
-- job: LinuxArmhf
- condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_LINUX_ARMHF'], 'true'))
- pool:
- vmImage: 'Ubuntu-16.04'
- variables:
- VSCODE_ARCH: armhf
- dependsOn:
- - Compile
- steps:
- - 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'))
- 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'))
- 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: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'), eq(variables['VSCODE_BUILD_MACOS'], 'true'))
- pool:
- vmImage: macOS-latest
- dependsOn:
- - Compile
- steps:
- - 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
- - LinuxArm64
- - 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
- - LinuxArm64
- - LinuxAlpine
- - LinuxWeb
- - macOS
- steps:
- - template: sync-mooncake.yml
-
trigger: none
pr: none
@@ -161,3 +7,159 @@ schedules:
branches:
include:
- master
+
+resources:
+ containers:
+ - container: vscode-x64
+ image: vscodehub.azurecr.io/vscode-linux-build-agent:x64
+ endpoint: VSCodeHub
+ - container: vscode-arm64
+ image: vscodehub.azurecr.io/vscode-linux-build-agent:stretch-arm64
+ endpoint: VSCodeHub
+ - container: vscode-armhf
+ image: vscodehub.azurecr.io/vscode-linux-build-agent:stretch-armhf
+ endpoint: VSCodeHub
+ - container: snapcraft
+ image: snapcore/snapcraft:stable
+
+stages:
+- stage: Compile
+ jobs:
+ - job: Compile
+ pool:
+ vmImage: 'Ubuntu-16.04'
+ container: vscode-x64
+ steps:
+ - template: product-compile.yml
+
+- stage: Windows
+ dependsOn:
+ - Compile
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'))
+ pool:
+ vmImage: VS2017-Win2016
+ jobs:
+ - job: Windows
+ condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32'], 'true'))
+ timeoutInMinutes: 90
+ variables:
+ VSCODE_ARCH: x64
+ steps:
+ - template: win32/product-build-win32.yml
+
+ - job: Windows32
+ condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32_32BIT'], 'true'))
+ timeoutInMinutes: 90
+ variables:
+ VSCODE_ARCH: ia32
+ steps:
+ - template: win32/product-build-win32.yml
+
+ - job: WindowsARM64
+ condition: and(succeeded(), eq(variables['VSCODE_BUILD_WIN32_ARM64'], 'true'))
+ timeoutInMinutes: 90
+ variables:
+ VSCODE_ARCH: arm64
+ steps:
+ - template: win32/product-build-win32-arm64.yml
+
+- stage: Linux
+ dependsOn:
+ - Compile
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'))
+ pool:
+ vmImage: 'Ubuntu-16.04'
+ jobs:
+ - job: Linux
+ condition: and(succeeded(), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
+ container: vscode-x64
+ variables:
+ VSCODE_ARCH: x64
+ NPM_ARCH: x64
+ steps:
+ - template: linux/product-build-linux.yml
+
+ - job: LinuxSnap
+ dependsOn:
+ - Linux
+ condition: and(succeeded(), eq(variables['VSCODE_BUILD_LINUX'], 'true'))
+ container: snapcraft
+ variables:
+ VSCODE_ARCH: x64
+ steps:
+ - template: linux/snap-build-linux.yml
+
+ - job: LinuxArmhf
+ condition: and(succeeded(), eq(variables['VSCODE_BUILD_LINUX_ARMHF'], 'true'))
+ container: vscode-armhf
+ variables:
+ VSCODE_ARCH: armhf
+ NPM_ARCH: armv7l
+ steps:
+ - template: linux/product-build-linux.yml
+
+ - job: LinuxArm64
+ condition: and(succeeded(), eq(variables['VSCODE_BUILD_LINUX_ARM64'], 'true'))
+ container: vscode-arm64
+ variables:
+ VSCODE_ARCH: arm64
+ NPM_ARCH: arm64
+ steps:
+ - template: linux/product-build-linux.yml
+
+ - job: LinuxAlpine
+ condition: and(succeeded(), eq(variables['VSCODE_BUILD_LINUX_ALPINE'], 'true'))
+ variables:
+ VSCODE_ARCH: alpine
+ steps:
+ - template: linux/product-build-linux-multiarch.yml
+
+ - job: LinuxWeb
+ condition: and(succeeded(), eq(variables['VSCODE_BUILD_WEB'], 'true'))
+ variables:
+ VSCODE_ARCH: x64
+ steps:
+ - template: web/product-build-web.yml
+
+- stage: macOS
+ dependsOn:
+ - Compile
+ condition: and(succeeded(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'))
+ pool:
+ vmImage: macOS-latest
+ jobs:
+ - job: macOS
+ condition: and(succeeded(), eq(variables['VSCODE_BUILD_MACOS'], 'true'))
+ timeoutInMinutes: 90
+ variables:
+ VSCODE_ARCH: x64
+ steps:
+ - template: darwin/product-build-darwin.yml
+
+- stage: Mooncake
+ dependsOn:
+ - Windows
+ - Linux
+ - macOS
+ condition: and(succeededOrFailed(), eq(variables['VSCODE_COMPILE_ONLY'], 'false'))
+ pool:
+ vmImage: 'Ubuntu-16.04'
+ jobs:
+ - job: SyncMooncake
+ displayName: Sync Mooncake
+ steps:
+ - template: sync-mooncake.yml
+
+- stage: Publish
+ dependsOn:
+ - Windows
+ - Linux
+ - macOS
+ 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'
+ jobs:
+ - job: BuildService
+ displayName: Build Service
+ steps:
+ - template: release.yml
diff --git a/build/azure-pipelines/product-compile.yml b/build/azure-pipelines/product-compile.yml
index db6524be03b..2eff40b53d1 100644
--- a/build/azure-pipelines/product-compile.yml
+++ b/build/azure-pipelines/product-compile.yml
@@ -16,7 +16,7 @@ steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
condition: and(succeeded(), ne(variables['CacheExists-Compilation'], 'true'))
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
@@ -52,9 +52,13 @@ steps:
displayName: Merge distro
condition: and(succeeded(), ne(variables['CacheExists-Compilation'], 'true'))
+- script: |
+ echo -n $VSCODE_ARCH > .build/arch
+ displayName: Prepare arch cache flag
+
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
inputs:
- keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ keyfile: '.build/arch, 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['CacheExists-Compilation'], 'true'))
@@ -67,7 +71,7 @@ steps:
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
inputs:
- keyfile: 'build/.cachesalt, .yarnrc, remote/.yarnrc, **/yarn.lock, !**/node_modules/**/yarn.lock, !**/.*/**/yarn.lock'
+ keyfile: '.build/arch, 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['CacheExists-Compilation'], 'true'), ne(variables['CacheRestored'], 'true'))
diff --git a/build/azure-pipelines/publish-types/publish-types.yml b/build/azure-pipelines/publish-types/publish-types.yml
index b73cd04a966..10b6aa4e16a 100644
--- a/build/azure-pipelines/publish-types/publish-types.yml
+++ b/build/azure-pipelines/publish-types/publish-types.yml
@@ -9,7 +9,7 @@ pr: none
steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
diff --git a/build/azure-pipelines/publish-types/update-types.ts b/build/azure-pipelines/publish-types/update-types.ts
index a5ef449b77b..bbce67221da 100644
--- a/build/azure-pipelines/publish-types/update-types.ts
+++ b/build/azure-pipelines/publish-types/update-types.ts
@@ -36,6 +36,18 @@ function updateDTSFile(outPath: string, tag: string) {
fs.writeFileSync(outPath, newContent);
}
+function repeat(str: string, times: number): string {
+ const result = new Array(times);
+ for (let i = 0; i < times; i++) {
+ result[i] = str;
+ }
+ return result.join('');
+}
+
+function convertTabsToSpaces(str: string): string {
+ return str.replace(/\t/gm, value => repeat(' ', value.length));
+}
+
function getNewFileContent(content: string, tag: string) {
const oldheader = [
`/*---------------------------------------------------------------------------------------------`,
@@ -44,7 +56,7 @@ function getNewFileContent(content: string, tag: string) {
` *--------------------------------------------------------------------------------------------*/`
].join('\n');
- return getNewFileHeader(tag) + content.slice(oldheader.length);
+ return convertTabsToSpaces(getNewFileHeader(tag) + content.slice(oldheader.length));
}
function getNewFileHeader(tag: string) {
@@ -54,13 +66,13 @@ function getNewFileHeader(tag: string) {
const header = [
`// Type definitions for Visual Studio Code ${shorttag}`,
`// Project: https://github.com/microsoft/vscode`,
- `// Definitions by: Visual Studio Code Team, Microsoft `,
+ `// 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.`,
+ ` * See https://github.com/microsoft/vscode/blob/master/LICENSE.txt for license information.`,
` *--------------------------------------------------------------------------------------------*/`,
``,
`/**`,
diff --git a/build/azure-pipelines/sync-mooncake.yml b/build/azure-pipelines/sync-mooncake.yml
index 2641830a413..49dfc9ced80 100644
--- a/build/azure-pipelines/sync-mooncake.yml
+++ b/build/azure-pipelines/sync-mooncake.yml
@@ -1,7 +1,7 @@
steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
diff --git a/build/azure-pipelines/upload-cdn.ts b/build/azure-pipelines/upload-cdn.ts
new file mode 100644
index 00000000000..71589033867
--- /dev/null
+++ b/build/azure-pipelines/upload-cdn.ts
@@ -0,0 +1,40 @@
+/*---------------------------------------------------------------------------------------------
+ * 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 path from 'path';
+import * as es from 'event-stream';
+import * as Vinyl from 'vinyl';
+import * as vfs from 'vinyl-fs';
+import * as util from '../lib/util';
+import * as filter from 'gulp-filter';
+import * as gzip from 'gulp-gzip';
+const azure = require('gulp-azure-storage');
+
+const root = path.dirname(path.dirname(__dirname));
+const commit = util.getVersion(root);
+
+function main() {
+ return vfs.src('**', { cwd: '../vscode-web', base: '../vscode-web', dot: true })
+ .pipe(filter(f => !f.isDirectory()))
+ .pipe(gzip({ append: false }))
+ .pipe(es.through(function (data: Vinyl) {
+ console.log('Uploading CDN file:', data.relative); // debug
+ this.emit('data', data);
+ }))
+ .pipe(azure.upload({
+ account: process.env.AZURE_STORAGE_ACCOUNT,
+ key: process.env.AZURE_STORAGE_ACCESS_KEY,
+ container: process.env.VSCODE_QUALITY,
+ prefix: commit + '/',
+ contentSettings: {
+ contentEncoding: 'gzip',
+ cacheControl: 'max-age=31536000, public'
+ }
+ }));
+}
+
+main();
diff --git a/build/azure-pipelines/upload-sourcemaps.js b/build/azure-pipelines/upload-sourcemaps.ts
similarity index 59%
rename from build/azure-pipelines/upload-sourcemaps.js
rename to build/azure-pipelines/upload-sourcemaps.ts
index b70335efe5b..6a13aaf172d 100644
--- a/build/azure-pipelines/upload-sourcemaps.js
+++ b/build/azure-pipelines/upload-sourcemaps.ts
@@ -5,44 +5,54 @@
'use strict';
-const path = require('path');
-const es = require('event-stream');
+import * as path from 'path';
+import * as es from 'event-stream';
+import * as Vinyl from 'vinyl';
+import * as vfs from 'vinyl-fs';
+import * as util from '../lib/util';
+// @ts-ignore
+import * as deps from '../dependencies';
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);
// optionally allow to pass in explicit base/maps to upload
const [, , base, maps] = process.argv;
-const fetch = function (base, maps = `${base}/**/*.map`) {
+function src(base: string, maps = `${base}/**/*.map`) {
return vfs.src(maps, { base })
- .pipe(es.mapSync(f => {
+ .pipe(es.mapSync((f: Vinyl) => {
f.path = `${f.base}/core/${f.relative}`;
return f;
}));
-};
+}
function main() {
const sources = [];
// vscode client maps (default)
if (!base) {
- const vs = fetch('out-vscode-min'); // client source-maps only
+ const vs = src('out-vscode-min'); // client source-maps only
sources.push(vs);
+ const productionDependencies: { name: string, path: string, version: string }[] = deps.getProductionDependencies(root);
+ const productionDependenciesSrc = productionDependencies.map(d => path.relative(root, d.path)).map(d => `./${d}/**/*.map`);
+ const nodeModules = vfs.src(productionDependenciesSrc, { base: '.' })
+ .pipe(util.cleanNodeModules(path.join(root, 'build', '.moduleignore')));
+ sources.push(nodeModules);
+
const extensionsOut = vfs.src(['.build/extensions/**/*.js.map', '!**/node_modules/**'], { base: '.build' });
sources.push(extensionsOut);
}
// specific client base/maps
else {
- sources.push(fetch(base, maps));
+ sources.push(src(base, maps));
}
return es.merge(...sources)
- .pipe(es.through(function (data) {
+ .pipe(es.through(function (data: Vinyl) {
console.log('Uploading Sourcemap', data.relative); // debug
this.emit('data', data);
}))
diff --git a/build/azure-pipelines/web/product-build-web.yml b/build/azure-pipelines/web/product-build-web.yml
index 0c338203b4d..aded67174f4 100644
--- a/build/azure-pipelines/web/product-build-web.yml
+++ b/build/azure-pipelines/web/product-build-web.yml
@@ -21,7 +21,7 @@ steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
@@ -88,6 +88,13 @@ steps:
yarn gulp vscode-web-min-ci
displayName: Build
+- script: |
+ set -e
+ AZURE_STORAGE_ACCOUNT="$(web-storage-account)" \
+ AZURE_STORAGE_ACCESS_KEY="$(web-storage-key)" \
+ node build/azure-pipelines/upload-cdn.js
+ displayName: Upload to CDN
+
# upload only the workbench.web.api.js source maps because
# we just compiled these bits in the previous step and the
# general task to upload source maps has already been run
diff --git a/build/azure-pipelines/win32/ESRPClient/packages.config b/build/azure-pipelines/win32/ESRPClient/packages.config
index c10bed14121..ef586de9762 100644
--- a/build/azure-pipelines/win32/ESRPClient/packages.config
+++ b/build/azure-pipelines/win32/ESRPClient/packages.config
@@ -1,4 +1,4 @@
-
+
diff --git a/build/azure-pipelines/win32/continuous-build-win32.yml b/build/azure-pipelines/win32/continuous-build-win32.yml
index b0a81aeb8c8..6107eacc66c 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: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
@@ -32,14 +32,17 @@ steps:
vstsFeed: 'vscode-build-cache'
condition: and(succeeded(), ne(variables['CacheRestored'], 'true'))
+- powershell: |
+ . build/azure-pipelines/win32/exec.ps1
+ $ErrorActionPreference = "Stop"
+ exec { yarn postinstall }
+ displayName: Run postinstall scripts
+ condition: and(succeeded(), eq(variables['CacheRestored'], 'true'))
+
- powershell: |
yarn electron
displayName: Download Electron
-- script: |
- yarn gulp hygiene
- displayName: Run Hygiene Checks
-
- powershell: |
yarn monaco-compile-check
displayName: Run Monaco Editor Checks
@@ -61,7 +64,7 @@ steps:
displayName: Run Unit Tests (Electron)
- powershell: |
- yarn test-browser --browser chromium --browser firefox
+ yarn test-browser --browser chromium --browser firefox --tfs "Browser Unit Tests"
displayName: Run Unit Tests (Browser)
- powershell: |
diff --git a/build/azure-pipelines/win32/import-esrp-auth-cert.ps1 b/build/azure-pipelines/win32/import-esrp-auth-cert.ps1
index c345c780231..f11f878c83f 100644
--- a/build/azure-pipelines/win32/import-esrp-auth-cert.ps1
+++ b/build/azure-pipelines/win32/import-esrp-auth-cert.ps1
@@ -1,14 +1,14 @@
-Param(
- [string]$AuthCertificateBase64,
- [string]$AuthCertificateKey
-)
+param ($CertBase64)
+$ErrorActionPreference = "Stop"
-# Import auth certificate
-$AuthCertificateFileName = [System.IO.Path]::GetTempFileName()
-$AuthCertificateBytes = [Convert]::FromBase64String($AuthCertificateBase64)
-[IO.File]::WriteAllBytes($AuthCertificateFileName, $AuthCertificateBytes)
-$AuthCertificate = Import-PfxCertificate -FilePath $AuthCertificateFileName -CertStoreLocation Cert:\LocalMachine\My -Password (ConvertTo-SecureString $AuthCertificateKey -AsPlainText -Force)
-rm $AuthCertificateFileName
-$ESRPAuthCertificateSubjectName = $AuthCertificate.Subject
+$CertBytes = [System.Convert]::FromBase64String($CertBase64)
+$CertCollection = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2Collection
+$CertCollection.Import($CertBytes, $null, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
-Write-Output ("##vso[task.setvariable variable=ESRPAuthCertificateSubjectName;]$ESRPAuthCertificateSubjectName")
\ No newline at end of file
+$CertStore = New-Object System.Security.Cryptography.X509Certificates.X509Store("My","LocalMachine")
+$CertStore.Open("ReadWrite")
+$CertStore.AddRange($CertCollection)
+$CertStore.Close()
+
+$ESRPAuthCertificateSubjectName = $CertCollection[0].Subject
+Write-Output ("##vso[task.setvariable variable=ESRPAuthCertificateSubjectName;]$ESRPAuthCertificateSubjectName")
diff --git a/build/azure-pipelines/win32/product-build-win32-arm64.yml b/build/azure-pipelines/win32/product-build-win32-arm64.yml
index 01be34aa9a8..2e53167e613 100644
--- a/build/azure-pipelines/win32/product-build-win32-arm64.yml
+++ b/build/azure-pipelines/win32/product-build-win32-arm64.yml
@@ -21,7 +21,7 @@ steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
@@ -171,9 +171,11 @@ steps:
inputs:
ESRP: 'ESRP CodeSign'
-- powershell: |
- $ErrorActionPreference = "Stop"
- .\build\azure-pipelines\win32\import-esrp-auth-cert.ps1 -AuthCertificateBase64 $(esrp-auth-certificate) -AuthCertificateKey $(esrp-auth-certificate-key)
+- task: PowerShell@2
+ inputs:
+ targetType: filePath
+ filePath: .\build\azure-pipelines\win32\import-esrp-auth-cert.ps1
+ arguments: "$(ESRP-SSL-AADAuth)"
displayName: Import ESRP Auth Certificate
- powershell: |
diff --git a/build/azure-pipelines/win32/product-build-win32.yml b/build/azure-pipelines/win32/product-build-win32.yml
index 466d3dd3328..43bd2479a4e 100644
--- a/build/azure-pipelines/win32/product-build-win32.yml
+++ b/build/azure-pipelines/win32/product-build-win32.yml
@@ -21,7 +21,7 @@ steps:
- task: NodeTool@0
inputs:
- versionSpec: "12.13.0"
+ versionSpec: "12.14.1"
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
inputs:
@@ -115,7 +115,7 @@ steps:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { yarn test-browser --build --browser chromium --browser firefox }
+ exec { yarn test-browser --build --browser chromium --browser firefox --tfs "Browser Unit Tests" }
displayName: Run unit tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
@@ -135,18 +135,18 @@ steps:
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
- $AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
- $AppNameShort = $AppProductJson.nameShort
- exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-remote-integration.bat }
- displayName: Run remote integration tests (Electron)
+ exec { $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-web-integration.bat --browser firefox }
+ displayName: Run integration tests (Browser)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- powershell: |
. build/azure-pipelines/win32/exec.ps1
$ErrorActionPreference = "Stop"
- exec { $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-web-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-web-integration.bat --browser firefox }
- displayName: Run integration tests (Browser)
+ $AppRoot = "$(agent.builddirectory)\VSCode-win32-$(VSCODE_ARCH)"
+ $AppProductJson = Get-Content -Raw -Path "$AppRoot\resources\app\product.json" | ConvertFrom-Json
+ $AppNameShort = $AppProductJson.nameShort
+ exec { $env:INTEGRATION_TEST_ELECTRON_PATH = "$AppRoot\$AppNameShort.exe"; $env:VSCODE_REMOTE_SERVER_PATH = "$(agent.builddirectory)\vscode-reh-win32-$(VSCODE_ARCH)"; .\resources\server\test\test-remote-integration.bat }
+ displayName: Run remote integration tests (Electron)
condition: and(succeeded(), eq(variables['VSCODE_STEP_ON_IT'], 'false'))
- task: PublishPipelineArtifact@0
@@ -157,6 +157,13 @@ steps:
continueOnError: true
condition: failed()
+- task: PublishTestResults@2
+ displayName: Publish Tests Results
+ inputs:
+ testResultsFiles: '*-results.xml'
+ searchFolder: '$(Build.ArtifactStagingDirectory)/test-results'
+ condition: succeededOrFailed()
+
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
inputs:
ConnectedServiceName: 'ESRP CodeSign'
@@ -218,7 +225,7 @@ steps:
restoreSolution: 'build\azure-pipelines\win32\ESRPClient\packages.config'
feedsToUse: config
nugetConfigPath: 'build\azure-pipelines\win32\ESRPClient\NuGet.config'
- externalFeedCredentials: 3fc0b7f7-da09-4ae7-a9c8-d69824b1819b
+ externalFeedCredentials: 'ESRP Nuget'
restoreDirectory: packages
- task: ESRPImportCertTask@1
@@ -226,9 +233,11 @@ steps:
inputs:
ESRP: 'ESRP CodeSign'
-- powershell: |
- $ErrorActionPreference = "Stop"
- .\build\azure-pipelines\win32\import-esrp-auth-cert.ps1 -AuthCertificateBase64 $(esrp-auth-certificate) -AuthCertificateKey $(esrp-auth-certificate-key)
+- task: PowerShell@2
+ inputs:
+ targetType: filePath
+ filePath: .\build\azure-pipelines\win32\import-esrp-auth-cert.ps1
+ arguments: "$(ESRP-SSL-AADAuth)"
displayName: Import ESRP Auth Certificate
- powershell: |
diff --git a/build/azure-pipelines/win32/sign.ps1 b/build/azure-pipelines/win32/sign.ps1
index 840cbe4071f..b73db31207f 100644
--- a/build/azure-pipelines/win32/sign.ps1
+++ b/build/azure-pipelines/win32/sign.ps1
@@ -12,6 +12,7 @@ $Auth = Create-TmpJson @{
SubjectName = $env:ESRPAuthCertificateSubjectName
StoreLocation = "LocalMachine"
StoreName = "My"
+ SendX5c = "true"
}
RequestSigningCert = @{
SubjectName = $env:ESRPCertificateSubjectName
@@ -67,4 +68,4 @@ $Input = Create-TmpJson @{
$Output = [System.IO.Path]::GetTempFileName()
$ScriptPath = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
-& "$ScriptPath\ESRPClient\packages\Microsoft.ESRPClient.1.2.25\tools\ESRPClient.exe" Sign -a $Auth -p $Policy -i $Input -o $Output
+& "$ScriptPath\ESRPClient\packages\Microsoft.ESRPClient.*\tools\ESRPClient.exe" Sign -a $Auth -p $Policy -i $Input -o $Output
diff --git a/build/builtin/main.js b/build/builtin/main.js
index 93cef8cbdad..7379de7a93d 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, webPreferences: { nodeIntegration: true, webviewTag: true, enableWebSQL: false } });
+ window = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, webviewTag: true, enableWebSQL: false, nativeWindowOpen: 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/darwin/sign.js b/build/darwin/sign.js
deleted file mode 100644
index b8eb9fc7525..00000000000
--- a/build/darwin/sign.js
+++ /dev/null
@@ -1,61 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-const codesign = require("electron-osx-sign");
-const path = require("path");
-const util = require("../lib/util");
-const product = require("../../product.json");
-async function main() {
- const buildDir = process.env['AGENT_BUILDDIRECTORY'];
- const tempDir = process.env['AGENT_TEMPDIRECTORY'];
- if (!buildDir) {
- throw new Error('$AGENT_BUILDDIRECTORY not set');
- }
- if (!tempDir) {
- throw new Error('$AGENT_TEMPDIRECTORY not set');
- }
- const baseDir = path.dirname(__dirname);
- const appRoot = path.join(buildDir, 'VSCode-darwin');
- const appName = product.nameLong + '.app';
- const appFrameworkPath = path.join(appRoot, appName, 'Contents', 'Frameworks');
- const helperAppBaseName = product.nameShort;
- const gpuHelperAppName = helperAppBaseName + ' Helper (GPU).app';
- const pluginHelperAppName = helperAppBaseName + ' Helper (Plugin).app';
- const rendererHelperAppName = helperAppBaseName + ' Helper (Renderer).app';
- const defaultOpts = {
- app: path.join(appRoot, appName),
- platform: 'darwin',
- entitlements: path.join(baseDir, 'azure-pipelines', 'darwin', 'app-entitlements.plist'),
- 'entitlements-inherit': path.join(baseDir, 'azure-pipelines', 'darwin', 'app-entitlements.plist'),
- hardenedRuntime: true,
- 'pre-auto-entitlements': false,
- 'pre-embed-provisioning-profile': false,
- keychain: path.join(tempDir, 'buildagent.keychain'),
- version: util.getElectronVersion(),
- identity: '99FM488X57',
- 'gatekeeper-assess': false
- };
- const appOpts = Object.assign(Object.assign({}, defaultOpts), {
- // TODO(deepak1556): Incorrectly declared type in electron-osx-sign
- ignore: (filePath) => {
- return filePath.includes(gpuHelperAppName) ||
- filePath.includes(pluginHelperAppName) ||
- filePath.includes(rendererHelperAppName);
- } });
- const gpuHelperOpts = Object.assign(Object.assign({}, defaultOpts), { app: path.join(appFrameworkPath, gpuHelperAppName), entitlements: path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-gpu-entitlements.plist'), 'entitlements-inherit': path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-gpu-entitlements.plist') });
- const pluginHelperOpts = Object.assign(Object.assign({}, defaultOpts), { app: path.join(appFrameworkPath, pluginHelperAppName), entitlements: path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-plugin-entitlements.plist'), 'entitlements-inherit': path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-plugin-entitlements.plist') });
- const rendererHelperOpts = Object.assign(Object.assign({}, defaultOpts), { app: path.join(appFrameworkPath, rendererHelperAppName), entitlements: path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-renderer-entitlements.plist'), 'entitlements-inherit': path.join(baseDir, 'azure-pipelines', 'darwin', 'helper-renderer-entitlements.plist') });
- await codesign.signAsync(gpuHelperOpts);
- await codesign.signAsync(pluginHelperOpts);
- await codesign.signAsync(rendererHelperOpts);
- await codesign.signAsync(appOpts);
-}
-if (require.main === module) {
- main().catch(err => {
- console.error(err);
- process.exit(1);
- });
-}
diff --git a/build/gulpfile.editor.js b/build/gulpfile.editor.js
index 6cb65c5a166..aa0282bff57 100644
--- a/build/gulpfile.editor.js
+++ b/build/gulpfile.editor.js
@@ -14,7 +14,7 @@ const i18n = require('./lib/i18n');
const standalone = require('./lib/standalone');
const cp = require('child_process');
const compilation = require('./lib/compilation');
-const monacoapi = require('./monaco/api');
+const monacoapi = require('./lib/monaco-api');
const fs = require('fs');
const webpack = require('webpack');
const webpackGulp = require('webpack-stream');
@@ -51,7 +51,7 @@ let BUNDLED_FILE_HEADER = [
' * Copyright (c) Microsoft Corporation. All rights reserved.',
' * Version: ' + headerVersion,
' * Released under the MIT license',
- ' * https://github.com/Microsoft/vscode/blob/master/LICENSE.txt',
+ ' * https://github.com/microsoft/vscode/blob/master/LICENSE.txt',
' *-----------------------------------------------------------*/',
''
].join('\n');
@@ -281,7 +281,7 @@ const finalEditorResourcesTask = task.define('final-editor-resources', () => {
// 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}`);
+ 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')),
diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js
index 25cccf6d8e5..6ae72e4cf06 100644
--- a/build/gulpfile.extensions.js
+++ b/build/gulpfile.extensions.js
@@ -8,9 +8,11 @@ require('events').EventEmitter.defaultMaxListeners = 100;
const gulp = require('gulp');
const path = require('path');
+const nodeUtil = require('util');
const tsb = require('gulp-tsb');
const es = require('event-stream');
const filter = require('gulp-filter');
+const webpack = require('webpack');
const util = require('./lib/util');
const task = require('./lib/task');
const watcher = require('./lib/watch');
@@ -21,6 +23,8 @@ const nlsDev = require('vscode-nls-dev');
const root = path.dirname(__dirname);
const commit = util.getVersion(root);
const plumber = require('gulp-plumber');
+const fancyLog = require('fancy-log');
+const ansiColors = require('ansi-colors');
const ext = require('./lib/extensions');
const extensionsPath = path.join(path.dirname(__dirname), 'extensions');
@@ -161,9 +165,84 @@ gulp.task(compileExtensionsBuildLegacyTask);
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'))),
+ task.define('bundle-extensions-build', () => ext.packageLocalExtensionsStream(false).pipe(gulp.dest('.build'))),
+ task.define('bundle-marketplace-extensions-build', () => ext.packageMarketplaceExtensionsStream(false).pipe(gulp.dest('.build'))),
));
gulp.task(compileExtensionsBuildTask);
exports.compileExtensionsBuildTask = compileExtensionsBuildTask;
+
+const compileWebExtensionsTask = task.define('compile-web', () => buildWebExtensions(false));
+gulp.task(compileWebExtensionsTask);
+exports.compileWebExtensionsTask = compileWebExtensionsTask;
+
+const watchWebExtensionsTask = task.define('watch-web', () => buildWebExtensions(true));
+gulp.task(watchWebExtensionsTask);
+exports.watchWebExtensionsTask = watchWebExtensionsTask;
+
+async function buildWebExtensions(isWatch) {
+
+ const webpackConfigLocations = await nodeUtil.promisify(glob)(
+ path.join(extensionsPath, '**', 'extension-browser.webpack.config.js'),
+ { ignore: ['**/node_modules'] }
+ );
+
+ const webpackConfigs = [];
+
+ for (const webpackConfigPath of webpackConfigLocations) {
+ const configOrFnOrArray = require(webpackConfigPath);
+ function addConfig(configOrFn) {
+ if (typeof configOrFn === 'function') {
+ webpackConfigs.push(configOrFn({}, {}));
+ } else {
+ webpackConfigs.push(configOrFn);
+ }
+ }
+ addConfig(configOrFnOrArray);
+ }
+ function reporter(fullStats) {
+ if (Array.isArray(fullStats.children)) {
+ for (const stats of fullStats.children) {
+ const outputPath = stats.outputPath;
+ if (outputPath) {
+ const relativePath = path.relative(extensionsPath, outputPath).replace(/\\/g, '/');
+ const match = relativePath.match(/[^\/]+(\/server|\/client)?/);
+ fancyLog(`Finished ${ansiColors.green('packaging web extension')} ${ansiColors.cyan(match[0])} with ${stats.errors.length} errors.`);
+ }
+ if (Array.isArray(stats.errors)) {
+ stats.errors.forEach(error => {
+ fancyLog.error(error);
+ });
+ }
+ if (Array.isArray(stats.warnings)) {
+ stats.warnings.forEach(warning => {
+ fancyLog.warn(warning);
+ });
+ }
+ }
+ }
+ }
+ return new Promise((resolve, reject) => {
+ if (isWatch) {
+ webpack(webpackConfigs).watch({}, (err, stats) => {
+ if (err) {
+ reject();
+ } else {
+ reporter(stats.toJson());
+ }
+ });
+ } else {
+ webpack(webpackConfigs).run((err, stats) => {
+ if (err) {
+ fancyLog.error(err);
+ reject();
+ } else {
+ reporter(stats.toJson());
+ resolve();
+ }
+ });
+ }
+ });
+}
+
+
diff --git a/build/gulpfile.hygiene.js b/build/gulpfile.hygiene.js
index 0e2285bad00..7f890e86098 100644
--- a/build/gulpfile.hygiene.js
+++ b/build/gulpfile.hygiene.js
@@ -3,177 +3,33 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-'use strict';
-
const gulp = require('gulp');
const filter = require('gulp-filter');
const es = require('event-stream');
const gulpeslint = require('gulp-eslint');
-const tsfmt = require('typescript-formatter');
-const VinylFile = require('vinyl');
const vfs = require('vinyl-fs');
const path = require('path');
-const fs = require('fs');
-const pall = require('p-all');
const task = require('./lib/task');
-
-/**
- * Hygiene works by creating cascading subsets of all our files and
- * passing them through a sequence of checks. Here are the current subsets,
- * named according to the checks performed on them. Each subset contains
- * the following one, as described in mathematical notation:
- *
- * all ⊃ eol ⊇ indentation ⊃ copyright ⊃ typescript
- */
-
-const all = [
- '*',
- 'build/**/*',
- 'extensions/**/*',
- 'scripts/**/*',
- 'src/**/*',
- 'test/**/*',
- '!test/**/out/**',
- '!**/node_modules/**'
-];
-
-const indentationFilter = [
- '**',
-
- // except specific files
- '!ThirdPartyNotices.txt',
- '!LICENSE.{txt,rtf}',
- '!LICENSES.chromium.html',
- '!**/LICENSE',
- '!src/vs/nls.js',
- '!src/vs/nls.build.js',
- '!src/vs/css.js',
- '!src/vs/css.build.js',
- '!src/vs/loader.js',
- '!src/vs/base/common/insane/insane.js',
- '!src/vs/base/common/marked/marked.js',
- '!src/vs/base/node/terminateProcess.sh',
- '!src/vs/base/node/cpuUsage.sh',
- '!test/unit/assert.js',
-
- // except specific folders
- '!test/automation/out/**',
- '!test/smoke/out/**',
- '!extensions/typescript-language-features/test-workspace/**',
- '!extensions/vscode-api-tests/testWorkspace/**',
- '!extensions/vscode-api-tests/testWorkspace2/**',
- '!build/monaco/**',
- '!build/win32/**',
-
- // except multiple specific files
- '!**/package.json',
- '!**/yarn.lock',
- '!**/yarn-error.log',
-
- // except multiple specific folders
- '!**/codicon/**',
- '!**/fixtures/**',
- '!**/lib/**',
- '!extensions/**/out/**',
- '!extensions/**/snippets/**',
- '!extensions/**/syntaxes/**',
- '!extensions/**/themes/**',
- '!extensions/**/colorize-fixtures/**',
-
- // except specific file types
- '!src/vs/*/**/*.d.ts',
- '!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,plist}',
- '!build/{lib,download,darwin}/**/*.js',
- '!build/**/*.sh',
- '!build/azure-pipelines/**/*.js',
- '!build/azure-pipelines/**/*.config',
- '!**/Dockerfile',
- '!**/Dockerfile.*',
- '!**/*.Dockerfile',
- '!**/*.dockerfile',
- '!extensions/markdown-language-features/media/*.js'
-];
-
-const copyrightFilter = [
- '**',
- '!**/*.desktop',
- '!**/*.json',
- '!**/*.html',
- '!**/*.template',
- '!**/*.md',
- '!**/*.bat',
- '!**/*.cmd',
- '!**/*.ico',
- '!**/*.icns',
- '!**/*.xml',
- '!**/*.sh',
- '!**/*.txt',
- '!**/*.xpm',
- '!**/*.opts',
- '!**/*.disabled',
- '!**/*.code-workspace',
- '!**/*.js.map',
- '!build/**/*.init',
- '!resources/linux/snap/snapcraft.yaml',
- '!resources/linux/snap/electron-launch',
- '!resources/win32/bin/code.js',
- '!resources/completions/**',
- '!extensions/markdown-language-features/media/highlight.css',
- '!extensions/html-language-features/server/src/modes/typescript/*',
- '!extensions/*/server/bin/*',
- '!src/vs/editor/test/node/classification/typescript-test.ts',
- '!scripts/code-web.js'
-];
-
-const jsHygieneFilter = [
- 'src/**/*.js',
- 'build/gulpfile.*.js',
- '!src/vs/loader.js',
- '!src/vs/css.js',
- '!src/vs/nls.js',
- '!src/vs/css.build.js',
- '!src/vs/nls.build.js',
- '!src/**/insane.js',
- '!src/**/marked.js',
- '!**/test/**'
-];
-
-const tsHygieneFilter = [
- 'src/**/*.ts',
- 'test/**/*.ts',
- 'extensions/**/*.ts',
- '!**/fixtures/**',
- '!**/typings/**',
- '!**/node_modules/**',
- '!extensions/typescript-basics/test/colorize-fixtures/**',
- '!extensions/vscode-api-tests/testWorkspace/**',
- '!extensions/vscode-api-tests/testWorkspace2/**',
- '!extensions/**/*.test.ts',
- '!extensions/html-language-features/server/lib/jquery.d.ts'
-];
-
-const copyrightHeaderLines = [
- '/*---------------------------------------------------------------------------------------------',
- ' * Copyright (c) Microsoft Corporation. All rights reserved.',
- ' * Licensed under the MIT License. See License.txt in the project root for license information.',
- ' *--------------------------------------------------------------------------------------------*/'
-];
+const { all, jsHygieneFilter, tsHygieneFilter, hygiene } = require('./hygiene');
gulp.task('eslint', () => {
- return vfs.src(all, { base: '.', follow: true, allowEmpty: true })
+ return vfs
+ .src(all, { base: '.', follow: true, allowEmpty: true })
.pipe(filter(jsHygieneFilter.concat(tsHygieneFilter)))
- .pipe(gulpeslint({
- configFile: '.eslintrc.json',
- rulePaths: ['./build/lib/eslint']
- }))
+ .pipe(
+ gulpeslint({
+ configFile: '.eslintrc.json',
+ rulePaths: ['./build/lib/eslint'],
+ })
+ )
.pipe(gulpeslint.formatEach('compact'))
- .pipe(gulpeslint.results(results => {
- if (results.warningCount > 0 || results.errorCount > 0) {
- throw new Error('eslint failed with warnings and/or errors');
- }
- }));
+ .pipe(
+ gulpeslint.results((results) => {
+ if (results.warningCount > 0 || results.errorCount > 0) {
+ throw new Error('eslint failed with warnings and/or errors');
+ }
+ })
+ );
});
function checkPackageJSON(actualPath) {
@@ -188,233 +44,25 @@ function checkPackageJSON(actualPath) {
continue;
}
if (depVersion !== rootDepVersion) {
- this.emit('error', `The dependency ${depName} in '${actualPath}' (${depVersion}) is different than in the root package.json (${rootDepVersion})`);
+ this.emit(
+ 'error',
+ `The dependency ${depName} in '${actualPath}' (${depVersion}) is different than in the root package.json (${rootDepVersion})`
+ );
}
}
}
const checkPackageJSONTask = task.define('check-package-json', () => {
- return gulp.src('package.json')
- .pipe(es.through(function () {
+ return gulp.src('package.json').pipe(
+ es.through(function () {
checkPackageJSON.call(this, 'remote/package.json');
checkPackageJSON.call(this, 'remote/web/package.json');
- }));
+ })
+ );
});
gulp.task(checkPackageJSONTask);
-
-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;
-
- lines
- .forEach((line, i) => {
- if (/^\s*$/.test(line)) {
- // empty or whitespace lines are OK
- } else if (/^[\t]*[^\s]/.test(line)) {
- // good indent
- } else if (/^[\t]* \*/.test(line)) {
- // block comment using an extra space
- } else {
- console.error(file.relative + '(' + (i + 1) + ',1): Bad whitespace indentation');
- errorCount++;
- }
- });
-
- this.emit('data', file);
- });
-
- const copyrights = es.through(function (file) {
- const lines = file.__lines;
-
- for (let i = 0; i < copyrightHeaderLines.length; i++) {
- if (lines[i] !== copyrightHeaderLines[i]) {
- console.error(file.relative + ': Missing or bad copyright statement');
- errorCount++;
- break;
- }
- }
-
- this.emit('data', file);
- });
-
- const formatting = es.map(function (file, cb) {
- tsfmt.processString(file.path, file.contents.toString('utf8'), {
- verify: false,
- tsfmt: true,
- // verbose: true,
- // keep checkJS happy
- editorconfig: undefined,
- replace: undefined,
- tsconfig: undefined,
- tsconfigFile: undefined,
- tsfmtFile: undefined,
- vscode: undefined,
- vscodeFile: undefined
- }).then(result => {
- let original = result.src.replace(/\r\n/gm, '\n');
- let formatted = result.dest.replace(/\r\n/gm, '\n');
-
- if (original !== formatted) {
- console.error('File not formatted. Run the \'Format Document\' command to fix it:', file.relative);
- errorCount++;
- }
- cb(null, file);
-
- }, err => {
- cb(err);
- });
- });
-
- let input;
-
- if (Array.isArray(some) || typeof some === 'string' || !some) {
- const options = { base: '.', follow: true, allowEmpty: true };
- if (some) {
- input = vfs.src(some, options).pipe(filter(all)); // split this up to not unnecessarily filter all a second time
- } else {
- input = vfs.src(all, options);
- }
- } else {
- 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))
- .pipe(copyrights);
-
- const typescript = result
- .pipe(filter(tsHygieneFilter))
- .pipe(formatting);
-
- const javascript = result
- .pipe(filter(jsHygieneFilter.concat(tsHygieneFilter)))
- .pipe(gulpeslint({
- configFile: '.eslintrc.json',
- rulePaths: ['./build/lib/eslint']
- }))
- .pipe(gulpeslint.formatEach('compact'))
- .pipe(gulpeslint.results(results => {
- errorCount += results.warningCount;
- errorCount += results.errorCount;
- }));
-
- let count = 0;
- return es.merge(typescript, javascript)
- .pipe(es.through(function (data) {
- count++;
- if (process.env['TRAVIS'] && count % 10 === 0) {
- process.stdout.write('.');
- }
- this.emit('data', data);
- }, function () {
- process.stdout.write('\n');
- if (errorCount > 0) {
- this.emit('error', 'Hygiene failed with ' + errorCount + ' errors. Check \'build/gulpfile.hygiene.js\'.');
- } else {
- this.emit('end');
- }
- }));
-}
-
-function createGitIndexVinyls(paths) {
- const cp = require('child_process');
- const repositoryPath = process.cwd();
-
- const fns = paths.map(relativePath => () => new Promise((c, e) => {
- const fullPath = path.join(repositoryPath, relativePath);
-
- fs.stat(fullPath, (err, stat) => {
- if (err && err.code === 'ENOENT') { // ignore deletions
- return c(null);
- } else if (err) {
- return e(err);
- }
-
- cp.exec(`git show :${relativePath}`, { maxBuffer: 2000 * 1024, encoding: 'buffer' }, (err, out) => {
- if (err) {
- return e(err);
- }
-
- c(new VinylFile({
- path: fullPath,
- base: repositoryPath,
- contents: out,
- stat
- }));
- });
- });
- }));
-
- return pall(fns, { concurrency: 4 })
- .then(r => r.filter(p => !!p));
-}
-
-gulp.task('hygiene', task.series(checkPackageJSONTask, () => hygiene()));
-
-// this allows us to run hygiene as a git pre-commit hook
-if (require.main === module) {
- const cp = require('child_process');
-
- process.on('unhandledRejection', (reason, p) => {
- console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
- process.exit(1);
- });
-
- if (process.argv.length > 2) {
- hygiene(process.argv.slice(2)).on('error', err => {
- console.error();
- console.error(err);
- process.exit(1);
- });
- } else {
- cp.exec('git diff --cached --name-only', { maxBuffer: 2000 * 1024 }, (err, out) => {
- if (err) {
- console.error();
- console.error(err);
- process.exit(1);
- return;
- }
-
- const some = out
- .split(/\r?\n/)
- .filter(l => !!l);
-
- if (some.length > 0) {
- console.log('Reading git index versions...');
-
- createGitIndexVinyls(some)
- .then(vinyls => new Promise((c, e) => hygiene(es.readArray(vinyls))
- .on('end', () => c())
- .on('error', e)))
- .catch(err => {
- console.error();
- console.error(err);
- process.exit(1);
- });
- }
- });
- }
-}
+gulp.task(
+ 'hygiene',
+ task.series(checkPackageJSONTask, () => hygiene())
+);
diff --git a/build/gulpfile.reh.js b/build/gulpfile.reh.js
index f2ea1bd3701..5f367d1f077 100644
--- a/build/gulpfile.reh.js
+++ b/build/gulpfile.reh.js
@@ -37,19 +37,11 @@ const BUILD_TARGETS = [
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);
+BUILD_TARGETS.forEach(({ platform, arch }) => {
+ for (const target of ['reh', 'reh-web']) {
+ gulp.task(`vscode-${target}-${platform}${ arch ? `-${arch}` : '' }-min`, noop);
+ }
+});
function getNodeVersion() {
const yarnrc = fs.readFileSync(path.join(REPO_ROOT, 'remote', '.yarnrc'), 'utf8');
diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js
index 5881bc66e91..3c8bbe5b87f 100644
--- a/build/gulpfile.vscode.js
+++ b/build/gulpfile.vscode.js
@@ -37,16 +37,13 @@ const { compileBuildTask } = require('./gulpfile.compile');
const { compileExtensionsBuildTask } = require('./gulpfile.extensions');
const productionDependencies = deps.getProductionDependencies(path.dirname(__dirname));
-const baseModules = Object.keys(process.binding('natives')).filter(n => !/^_|\//.test(n));
-const nodeModules = ['electron', 'original-fs']
- .concat(Object.keys(product.dependencies || {}))
- .concat(_.uniq(productionDependencies.map(d => d.name)))
- .concat(baseModules);
// Build
const vscodeEntryPoints = _.flatten([
buildfile.entrypoint('vs/workbench/workbench.desktop.main'),
buildfile.base,
+ buildfile.workerExtensionHost,
+ buildfile.workerNotebook,
buildfile.workbenchDesktop,
buildfile.code
]);
@@ -58,10 +55,12 @@ const vscodeResources = [
'out-build/bootstrap.js',
'out-build/bootstrap-fork.js',
'out-build/bootstrap-amd.js',
+ 'out-build/bootstrap-node.js',
'out-build/bootstrap-window.js',
'out-build/paths.js',
'out-build/vs/**/*.{svg,png,html}',
'!out-build/vs/code/browser/**/*.html',
+ '!out-build/vs/editor/standalone/**/*.svg',
'out-build/vs/base/common/performance.js',
'out-build/vs/base/node/languagePacks.js',
'out-build/vs/base/node/{stdForkStart.js,terminateProcess.sh,cpuUsage.sh,ps.sh}',
@@ -72,15 +71,16 @@ const vscodeResources = [
'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/workbench/services/extensions/worker/extensionHostWorkerMain.js',
'out-build/vs/**/markdown.css',
'out-build/vs/workbench/contrib/tasks/**/*.json',
'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',
- 'out-build/vs/code/electron-browser/processExplorer/processExplorer.js',
- 'out-build/vs/platform/auth/common/auth.css',
+ 'out-build/vs/code/electron-sandbox/issue/issueReporter.js',
+ 'out-build/vs/code/electron-sandbox/processExplorer/processExplorer.js',
+ 'out-build/vs/code/electron-sandbox/proxy/auth.js',
'!**/test/**'
];
@@ -90,7 +90,7 @@ const optimizeVSCodeTask = task.define('optimize-vscode', task.series(
src: 'out-build',
entryPoints: vscodeEntryPoints,
resources: vscodeResources,
- loaderConfig: common.loaderConfig(nodeModules),
+ loaderConfig: common.loaderConfig(),
out: 'out-vscode',
bundleInfo: undefined
})
@@ -101,12 +101,6 @@ const sourceMappingURLBase = `https://ticino.blob.core.windows.net/sourcemaps/${
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);
@@ -207,13 +201,18 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
const telemetry = gulp.src('.build/telemetry/**', { base: '.build/telemetry', dot: true });
+ const jsFilter = util.filter(data => !data.isDirectory() &&/\.js$/.test(data.path));
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(filter(['**', '!**/package-lock.json', '!**/yarn.lock', '!**/*.js.map']))
.pipe(util.cleanNodeModules(path.join(__dirname, '.nativeignore')))
- .pipe(createAsar(path.join(process.cwd(), 'node_modules'), ['**/*.node', '**/vscode-ripgrep/bin/*', '**/node-pty/build/Release/*', '**/*.wasm'], 'app/node_modules.asar'));
+ .pipe(util.cleanNodeModules(path.join(__dirname, '.moduleignore')))
+ .pipe(jsFilter)
+ .pipe(util.rewriteSourceMappingURL(sourceMappingURLBase))
+ .pipe(jsFilter.restore)
+ .pipe(createAsar(path.join(process.cwd(), 'node_modules'), ['**/*.node', '**/vscode-ripgrep/bin/*', '**/node-pty/build/Release/*', '**/*.wasm'], 'node_modules.asar'));
let all = es.merge(
packageJsonStream,
@@ -269,7 +268,7 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
let result = all
.pipe(util.skipDirectories())
.pipe(util.fixWin32DirectoryPermissions())
- .pipe(electron(_.extend({}, config, { platform, arch, ffmpegChromium: true })))
+ .pipe(electron(_.extend({}, config, { platform, arch: arch === 'armhf' ? 'arm' : arch, ffmpegChromium: true })))
.pipe(filter(['**', '!LICENSE', '!LICENSES.chromium.html', '!version'], { dot: true }));
if (platform === 'linux') {
@@ -330,7 +329,7 @@ const BUILD_TARGETS = [
{ platform: 'darwin', arch: null, opts: { stats: true } },
{ platform: 'linux', arch: 'ia32' },
{ platform: 'linux', arch: 'x64' },
- { platform: 'linux', arch: 'arm' },
+ { platform: 'linux', arch: 'armhf' },
{ platform: 'linux', arch: 'arm64' },
];
BUILD_TARGETS.forEach(buildTarget => {
diff --git a/build/gulpfile.vscode.linux.js b/build/gulpfile.vscode.linux.js
index e8e0c1541d0..1d8a09e4fe6 100644
--- a/build/gulpfile.vscode.linux.js
+++ b/build/gulpfile.vscode.linux.js
@@ -23,7 +23,7 @@ const commit = util.getVersion(root);
const linuxPackageRevision = Math.floor(new Date().getTime() / 1000);
function getDebPackageArch(arch) {
- return { x64: 'amd64', arm: 'armhf', arm64: 'arm64' }[arch];
+ return { x64: 'amd64', armhf: 'armhf', arm64: 'arm64' }[arch];
}
function prepareDebPackage(arch) {
@@ -52,6 +52,11 @@ function prepareDebPackage(arch) {
.pipe(replace('@@LICENSE@@', product.licenseName))
.pipe(rename('usr/share/appdata/' + product.applicationName + '.appdata.xml'));
+ const workspaceMime = gulp.src('resources/linux/code-workspace.xml', { base: '.' })
+ .pipe(replace('@@NAME_LONG@@', product.nameLong))
+ .pipe(replace('@@NAME@@', product.applicationName))
+ .pipe(rename('usr/share/mime/packages/' + product.applicationName + '-workspace.xml'));
+
const icon = gulp.src('resources/linux/code.png', { base: '.' })
.pipe(rename('usr/share/pixmaps/' + product.linuxIconName + '.png'));
@@ -95,7 +100,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, workspaceMime, icon, bash_completion, zsh_completion, code);
return all.pipe(vfs.dest(destination));
};
@@ -115,7 +120,7 @@ function getRpmBuildPath(rpmArch) {
}
function getRpmPackageArch(arch) {
- return { x64: 'x86_64', arm: 'armhf', arm64: 'arm64' }[arch];
+ return { x64: 'x86_64', armhf: 'armv7hl', arm64: 'aarch64' }[arch];
}
function prepareRpmPackage(arch) {
@@ -143,6 +148,11 @@ function prepareRpmPackage(arch) {
.pipe(replace('@@LICENSE@@', product.licenseName))
.pipe(rename('usr/share/appdata/' + product.applicationName + '.appdata.xml'));
+ const workspaceMime = gulp.src('resources/linux/code-workspace.xml', { base: '.' })
+ .pipe(replace('@@NAME_LONG@@', product.nameLong))
+ .pipe(replace('@@NAME@@', product.applicationName))
+ .pipe(rename('BUILD/usr/share/mime/packages/' + product.applicationName + '-workspace.xml'));
+
const icon = gulp.src('resources/linux/code.png', { base: '.' })
.pipe(rename('BUILD/usr/share/pixmaps/' + product.linuxIconName + '.png'));
@@ -173,7 +183,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, workspaceMime, icon, bash_completion, zsh_completion, spec, specIcon);
return all.pipe(vfs.dest(getRpmBuildPath(rpmArch)));
};
@@ -246,33 +256,23 @@ function buildSnapPackage(arch) {
const BUILD_TARGETS = [
{ arch: 'x64' },
- { arch: 'arm' },
+ { arch: 'armhf' },
{ arch: 'arm64' },
];
-BUILD_TARGETS.forEach((buildTarget) => {
- const arch = buildTarget.arch;
+BUILD_TARGETS.forEach(({ arch }) => {
+ const debArch = getDebPackageArch(arch);
+ const prepareDebTask = task.define(`vscode-linux-${arch}-prepare-deb`, task.series(util.rimraf(`.build/linux/deb/${debArch}`), prepareDebPackage(arch)));
+ const buildDebTask = task.define(`vscode-linux-${arch}-build-deb`, task.series(prepareDebTask, buildDebPackage(arch)));
+ gulp.task(buildDebTask);
- {
- 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);
- }
+ const rpmArch = getRpmPackageArch(arch);
+ const prepareRpmTask = task.define(`vscode-linux-${arch}-prepare-rpm`, task.series(util.rimraf(`.build/linux/rpm/${rpmArch}`), prepareRpmPackage(arch)));
+ const buildRpmTask = task.define(`vscode-linux-${arch}-build-rpm`, task.series(prepareRpmTask, buildRpmPackage(arch)));
+ gulp.task(buildRpmTask);
- {
- 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);
- }
+ 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.win32.js b/build/gulpfile.vscode.win32.js
index d659b15d94b..2027dc350cf 100644
--- a/build/gulpfile.vscode.win32.js
+++ b/build/gulpfile.vscode.win32.js
@@ -54,7 +54,13 @@ function packageInnoSetup(iss, options, cb) {
cp.spawn(innoSetupPath, args, { stdio: ['ignore', 'inherit', 'inherit'] })
.on('error', cb)
- .on('exit', () => cb(null));
+ .on('exit', code => {
+ if (code === 0) {
+ cb(null);
+ } else {
+ cb(new Error(`InnoSetup returned exit code: ${code}`));
+ }
+ });
}
function buildWin32Setup(arch, target) {
@@ -93,8 +99,8 @@ function buildWin32Setup(arch, target) {
IncompatibleTargetAppId: { 'ia32': product.win32AppId, 'x64': product.win32x64AppId, 'arm64': product.win32arm64AppId }[arch],
IncompatibleArchAppId: { 'ia32': x64AppId, 'x64': ia32AppId, 'arm64': ia32AppId }[arch],
AppUserId: product.win32AppUserModelId,
- ArchitecturesAllowed: { 'ia32': '', 'x64': 'x64', 'arm64': '' }[arch],
- ArchitecturesInstallIn64BitMode: { 'ia32': '', 'x64': 'x64', 'arm64': '' }[arch],
+ ArchitecturesAllowed: { 'ia32': '', 'x64': 'x64', 'arm64': 'arm64' }[arch],
+ ArchitecturesInstallIn64BitMode: { 'ia32': '', 'x64': 'x64', 'arm64': 'arm64' }[arch],
SourceDir: sourcePath,
RepoDir: repoPath,
OutputDir: outputPath,
diff --git a/build/hygiene.js b/build/hygiene.js
new file mode 100644
index 00000000000..b95b4ee9824
--- /dev/null
+++ b/build/hygiene.js
@@ -0,0 +1,412 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+const filter = require('gulp-filter');
+const es = require('event-stream');
+const gulpeslint = require('gulp-eslint');
+const tsfmt = require('typescript-formatter');
+const VinylFile = require('vinyl');
+const vfs = require('vinyl-fs');
+const path = require('path');
+const fs = require('fs');
+const pall = require('p-all');
+
+/**
+ * Hygiene works by creating cascading subsets of all our files and
+ * passing them through a sequence of checks. Here are the current subsets,
+ * named according to the checks performed on them. Each subset contains
+ * the following one, as described in mathematical notation:
+ *
+ * all ⊃ eol ⊇ indentation ⊃ copyright ⊃ typescript
+ */
+
+const all = [
+ '*',
+ 'build/**/*',
+ 'extensions/**/*',
+ 'scripts/**/*',
+ 'src/**/*',
+ 'test/**/*',
+ '!test/**/out/**',
+ '!**/node_modules/**',
+];
+module.exports.all = all;
+
+const indentationFilter = [
+ '**',
+
+ // except specific files
+ '!**/ThirdPartyNotices.txt',
+ '!**/LICENSE.{txt,rtf}',
+ '!LICENSES.chromium.html',
+ '!**/LICENSE',
+ '!src/vs/nls.js',
+ '!src/vs/nls.build.js',
+ '!src/vs/css.js',
+ '!src/vs/css.build.js',
+ '!src/vs/loader.js',
+ '!src/vs/base/common/insane/insane.js',
+ '!src/vs/base/common/marked/marked.js',
+ '!src/vs/base/common/semver/semver.js',
+ '!src/vs/base/node/terminateProcess.sh',
+ '!src/vs/base/node/cpuUsage.sh',
+ '!test/unit/assert.js',
+ '!resources/linux/snap/electron-launch',
+
+ // except specific folders
+ '!test/automation/out/**',
+ '!test/smoke/out/**',
+ '!extensions/typescript-language-features/test-workspace/**',
+ '!extensions/vscode-api-tests/testWorkspace/**',
+ '!extensions/vscode-api-tests/testWorkspace2/**',
+ '!build/monaco/**',
+ '!build/win32/**',
+
+ // except multiple specific files
+ '!**/package.json',
+ '!**/yarn.lock',
+ '!**/yarn-error.log',
+
+ // except multiple specific folders
+ '!**/codicon/**',
+ '!**/fixtures/**',
+ '!**/lib/**',
+ '!extensions/**/out/**',
+ '!extensions/**/snippets/**',
+ '!extensions/**/syntaxes/**',
+ '!extensions/**/themes/**',
+ '!extensions/**/colorize-fixtures/**',
+
+ // except specific file types
+ '!src/vs/*/**/*.d.ts',
+ '!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,plist}',
+ '!build/{lib,download,darwin}/**/*.js',
+ '!build/**/*.sh',
+ '!build/azure-pipelines/**/*.js',
+ '!build/azure-pipelines/**/*.config',
+ '!**/Dockerfile',
+ '!**/Dockerfile.*',
+ '!**/*.Dockerfile',
+ '!**/*.dockerfile',
+ '!extensions/markdown-language-features/media/*.js',
+];
+
+const copyrightFilter = [
+ '**',
+ '!**/*.desktop',
+ '!**/*.json',
+ '!**/*.html',
+ '!**/*.template',
+ '!**/*.md',
+ '!**/*.bat',
+ '!**/*.cmd',
+ '!**/*.ico',
+ '!**/*.icns',
+ '!**/*.xml',
+ '!**/*.sh',
+ '!**/*.txt',
+ '!**/*.xpm',
+ '!**/*.opts',
+ '!**/*.disabled',
+ '!**/*.code-workspace',
+ '!**/*.js.map',
+ '!build/**/*.init',
+ '!resources/linux/snap/snapcraft.yaml',
+ '!resources/win32/bin/code.js',
+ '!resources/web/code-web.js',
+ '!resources/completions/**',
+ '!extensions/markdown-language-features/media/highlight.css',
+ '!extensions/html-language-features/server/src/modes/typescript/*',
+ '!extensions/*/server/bin/*',
+ '!src/vs/editor/test/node/classification/typescript-test.ts',
+];
+
+const jsHygieneFilter = [
+ 'src/**/*.js',
+ 'build/gulpfile.*.js',
+ '!src/vs/loader.js',
+ '!src/vs/css.js',
+ '!src/vs/nls.js',
+ '!src/vs/css.build.js',
+ '!src/vs/nls.build.js',
+ '!src/**/insane.js',
+ '!src/**/marked.js',
+ '!src/**/semver.js',
+ '!**/test/**',
+];
+module.exports.jsHygieneFilter = jsHygieneFilter;
+
+const tsHygieneFilter = [
+ 'src/**/*.ts',
+ 'test/**/*.ts',
+ 'extensions/**/*.ts',
+ '!**/fixtures/**',
+ '!**/typings/**',
+ '!**/node_modules/**',
+ '!extensions/typescript-basics/test/colorize-fixtures/**',
+ '!extensions/vscode-api-tests/testWorkspace/**',
+ '!extensions/vscode-api-tests/testWorkspace2/**',
+ '!extensions/**/*.test.ts',
+ '!extensions/html-language-features/server/lib/jquery.d.ts',
+];
+module.exports.tsHygieneFilter = tsHygieneFilter;
+
+const copyrightHeaderLines = [
+ '/*---------------------------------------------------------------------------------------------',
+ ' * Copyright (c) Microsoft Corporation. All rights reserved.',
+ ' * Licensed under the MIT License. See License.txt in the project root for license information.',
+ ' *--------------------------------------------------------------------------------------------*/',
+];
+
+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;
+
+ lines.forEach((line, i) => {
+ if (/^\s*$/.test(line)) {
+ // empty or whitespace lines are OK
+ } else if (/^[\t]*[^\s]/.test(line)) {
+ // good indent
+ } else if (/^[\t]* \*/.test(line)) {
+ // block comment using an extra space
+ } else {
+ console.error(
+ file.relative + '(' + (i + 1) + ',1): Bad whitespace indentation'
+ );
+ errorCount++;
+ }
+ });
+
+ this.emit('data', file);
+ });
+
+ const copyrights = es.through(function (file) {
+ const lines = file.__lines;
+
+ for (let i = 0; i < copyrightHeaderLines.length; i++) {
+ if (lines[i] !== copyrightHeaderLines[i]) {
+ console.error(file.relative + ': Missing or bad copyright statement');
+ errorCount++;
+ break;
+ }
+ }
+
+ this.emit('data', file);
+ });
+
+ const formatting = es.map(function (file, cb) {
+ tsfmt
+ .processString(file.path, file.contents.toString('utf8'), {
+ verify: false,
+ tsfmt: true,
+ // verbose: true,
+ // keep checkJS happy
+ editorconfig: undefined,
+ replace: undefined,
+ tsconfig: undefined,
+ tsconfigFile: undefined,
+ tsfmtFile: undefined,
+ vscode: undefined,
+ vscodeFile: undefined,
+ })
+ .then(
+ (result) => {
+ let original = result.src.replace(/\r\n/gm, '\n');
+ let formatted = result.dest.replace(/\r\n/gm, '\n');
+
+ if (original !== formatted) {
+ console.error(
+ `File not formatted. Run the 'Format Document' command to fix it:`,
+ file.relative
+ );
+ errorCount++;
+ }
+ cb(null, file);
+ },
+ (err) => {
+ cb(err);
+ }
+ );
+ });
+
+ let input;
+
+ if (Array.isArray(some) || typeof some === 'string' || !some) {
+ const options = { base: '.', follow: true, allowEmpty: true };
+ if (some) {
+ input = vfs.src(some, options).pipe(filter(all)); // split this up to not unnecessarily filter all a second time
+ } else {
+ input = vfs.src(all, options);
+ }
+ } else {
+ 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))
+ .pipe(copyrights);
+
+ const typescript = result.pipe(filter(tsHygieneFilter)).pipe(formatting);
+
+ const javascript = result
+ .pipe(filter(jsHygieneFilter.concat(tsHygieneFilter)))
+ .pipe(
+ gulpeslint({
+ configFile: '.eslintrc.json',
+ rulePaths: ['./build/lib/eslint'],
+ })
+ )
+ .pipe(gulpeslint.formatEach('compact'))
+ .pipe(
+ gulpeslint.results((results) => {
+ errorCount += results.warningCount;
+ errorCount += results.errorCount;
+ })
+ );
+
+ let count = 0;
+ return es.merge(typescript, javascript).pipe(
+ es.through(
+ function (data) {
+ count++;
+ if (process.env['TRAVIS'] && count % 10 === 0) {
+ process.stdout.write('.');
+ }
+ this.emit('data', data);
+ },
+ function () {
+ process.stdout.write('\n');
+ if (errorCount > 0) {
+ this.emit(
+ 'error',
+ 'Hygiene failed with ' +
+ errorCount +
+ ` errors. Check 'build / gulpfile.hygiene.js'.`
+ );
+ } else {
+ this.emit('end');
+ }
+ }
+ )
+ );
+}
+
+module.exports.hygiene = hygiene;
+
+function createGitIndexVinyls(paths) {
+ const cp = require('child_process');
+ const repositoryPath = process.cwd();
+
+ const fns = paths.map((relativePath) => () =>
+ new Promise((c, e) => {
+ const fullPath = path.join(repositoryPath, relativePath);
+
+ fs.stat(fullPath, (err, stat) => {
+ if (err && err.code === 'ENOENT') {
+ // ignore deletions
+ return c(null);
+ } else if (err) {
+ return e(err);
+ }
+
+ cp.exec(
+ `git show :${relativePath}`,
+ { maxBuffer: 2000 * 1024, encoding: 'buffer' },
+ (err, out) => {
+ if (err) {
+ return e(err);
+ }
+
+ c(
+ new VinylFile({
+ path: fullPath,
+ base: repositoryPath,
+ contents: out,
+ stat,
+ })
+ );
+ }
+ );
+ });
+ })
+ );
+
+ return pall(fns, { concurrency: 4 }).then((r) => r.filter((p) => !!p));
+}
+
+// this allows us to run hygiene as a git pre-commit hook
+if (require.main === module) {
+ const cp = require('child_process');
+
+ process.on('unhandledRejection', (reason, p) => {
+ console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
+ process.exit(1);
+ });
+
+ if (process.argv.length > 2) {
+ hygiene(process.argv.slice(2)).on('error', (err) => {
+ console.error();
+ console.error(err);
+ process.exit(1);
+ });
+ } else {
+ cp.exec(
+ 'git diff --cached --name-only',
+ { maxBuffer: 2000 * 1024 },
+ (err, out) => {
+ if (err) {
+ console.error();
+ console.error(err);
+ process.exit(1);
+ }
+
+ const some = out.split(/\r?\n/).filter((l) => !!l);
+
+ if (some.length > 0) {
+ console.log('Reading git index versions...');
+
+ createGitIndexVinyls(some)
+ .then(
+ (vinyls) =>
+ new Promise((c, e) =>
+ hygiene(es.readArray(vinyls))
+ .on('end', () => c())
+ .on('error', e)
+ )
+ )
+ .catch((err) => {
+ console.error();
+ console.error(err);
+ process.exit(1);
+ });
+ }
+ }
+ );
+ }
+}
diff --git a/build/lib/asar.js b/build/lib/asar.js
deleted file mode 100644
index 4a15a200be5..00000000000
--- a/build/lib/asar.js
+++ /dev/null
@@ -1,118 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.createAsar = void 0;
-const path = require("path");
-const es = require("event-stream");
-const pickle = require('chromium-pickle-js');
-const Filesystem = require('asar/lib/filesystem');
-const VinylFile = require("vinyl");
-const minimatch = require("minimatch");
-function createAsar(folderPath, unpackGlobs, destFilename) {
- const shouldUnpackFile = (file) => {
- for (let i = 0; i < unpackGlobs.length; i++) {
- if (minimatch(file.relative, unpackGlobs[i])) {
- return true;
- }
- }
- return false;
- };
- const filesystem = new Filesystem(folderPath);
- const out = [];
- // Keep track of pending inserts
- let pendingInserts = 0;
- let onFileInserted = () => { pendingInserts--; };
- // Do not insert twice the same directory
- const seenDir = {};
- const insertDirectoryRecursive = (dir) => {
- if (seenDir[dir]) {
- return;
- }
- let lastSlash = dir.lastIndexOf('/');
- if (lastSlash === -1) {
- lastSlash = dir.lastIndexOf('\\');
- }
- if (lastSlash !== -1) {
- insertDirectoryRecursive(dir.substring(0, lastSlash));
- }
- seenDir[dir] = true;
- filesystem.insertDirectory(dir);
- };
- const insertDirectoryForFile = (file) => {
- let lastSlash = file.lastIndexOf('/');
- if (lastSlash === -1) {
- lastSlash = file.lastIndexOf('\\');
- }
- if (lastSlash !== -1) {
- insertDirectoryRecursive(file.substring(0, lastSlash));
- }
- };
- const insertFile = (relativePath, stat, shouldUnpack) => {
- insertDirectoryForFile(relativePath);
- pendingInserts++;
- filesystem.insertFile(relativePath, shouldUnpack, { stat: stat }, {}, onFileInserted);
- };
- return es.through(function (file) {
- if (file.stat.isDirectory()) {
- return;
- }
- if (!file.stat.isFile()) {
- throw new Error(`unknown item in stream!`);
- }
- const shouldUnpack = shouldUnpackFile(file);
- insertFile(file.relative, { size: file.contents.length, mode: file.stat.mode }, shouldUnpack);
- if (shouldUnpack) {
- // The file goes outside of xx.asar, in a folder xx.asar.unpacked
- const relative = path.relative(folderPath, file.path);
- this.queue(new VinylFile({
- cwd: folderPath,
- base: folderPath,
- path: path.join(destFilename + '.unpacked', relative),
- stat: file.stat,
- contents: file.contents
- }));
- }
- else {
- // The file goes inside of xx.asar
- out.push(file.contents);
- }
- }, function () {
- let finish = () => {
- {
- const headerPickle = pickle.createEmpty();
- headerPickle.writeString(JSON.stringify(filesystem.header));
- const headerBuf = headerPickle.toBuffer();
- const sizePickle = pickle.createEmpty();
- sizePickle.writeUInt32(headerBuf.length);
- const sizeBuf = sizePickle.toBuffer();
- out.unshift(headerBuf);
- out.unshift(sizeBuf);
- }
- const contents = Buffer.concat(out);
- out.length = 0;
- this.queue(new VinylFile({
- cwd: folderPath,
- base: folderPath,
- path: destFilename,
- contents: contents
- }));
- this.queue(null);
- };
- // Call finish() only when all file inserts have finished...
- if (pendingInserts === 0) {
- finish();
- }
- else {
- onFileInserted = () => {
- pendingInserts--;
- if (pendingInserts === 0) {
- finish();
- }
- };
- }
- });
-}
-exports.createAsar = createAsar;
diff --git a/build/lib/asar.ts b/build/lib/asar.ts
index d2823043aab..07b321fd41d 100644
--- a/build/lib/asar.ts
+++ b/build/lib/asar.ts
@@ -8,10 +8,17 @@
import * as path from 'path';
import * as es from 'event-stream';
const pickle = require('chromium-pickle-js');
-const Filesystem = require('asar/lib/filesystem');
+const Filesystem = require('asar/lib/filesystem');
import * as VinylFile from 'vinyl';
import * as minimatch from 'minimatch';
+declare class AsarFilesystem {
+ readonly header: unknown;
+ constructor(src: string);
+ insertDirectory(path: string, shouldUnpack?: boolean): unknown;
+ insertFile(path: string, shouldUnpack: boolean, file: { stat: { size: number; mode: number; }; }, options: {}): Promise;
+}
+
export function createAsar(folderPath: string, unpackGlobs: string[], destFilename: string): NodeJS.ReadWriteStream {
const shouldUnpackFile = (file: VinylFile): boolean => {
@@ -61,7 +68,9 @@ export function createAsar(folderPath: string, unpackGlobs: string[], destFilena
const insertFile = (relativePath: string, stat: { size: number; mode: number; }, shouldUnpack: boolean) => {
insertDirectoryForFile(relativePath);
pendingInserts++;
- filesystem.insertFile(relativePath, shouldUnpack, { stat: stat }, {}, onFileInserted);
+ // Do not pass `onFileInserted` directly because it gets overwritten below.
+ // Create a closure capturing `onFileInserted`.
+ filesystem.insertFile(relativePath, shouldUnpack, { stat: stat }, {}).then(() => onFileInserted(), () => onFileInserted());
};
return es.through(function (file) {
@@ -78,8 +87,7 @@ export function createAsar(folderPath: string, unpackGlobs: string[], destFilena
// The file goes outside of xx.asar, in a folder xx.asar.unpacked
const relative = path.relative(folderPath, file.path);
this.queue(new VinylFile({
- cwd: folderPath,
- base: folderPath,
+ base: '.',
path: path.join(destFilename + '.unpacked', relative),
stat: file.stat,
contents: file.contents
@@ -108,8 +116,7 @@ export function createAsar(folderPath: string, unpackGlobs: string[], destFilena
out.length = 0;
this.queue(new VinylFile({
- cwd: folderPath,
- base: folderPath,
+ base: '.',
path: destFilename,
contents: contents
}));
diff --git a/build/lib/builtInExtensions.js b/build/lib/builtInExtensions.ts
similarity index 62%
rename from build/lib/builtInExtensions.js
rename to build/lib/builtInExtensions.ts
index ebcf8bc8ddb..b20913f49d1 100644
--- a/build/lib/builtInExtensions.js
+++ b/build/lib/builtInExtensions.ts
@@ -3,36 +3,54 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-'use strict';
+import * as fs from 'fs';
+import * as path from 'path';
+import * as os from 'os';
+import * as rimraf from 'rimraf';
+import * as es from 'event-stream';
+import * as rename from 'gulp-rename';
+import * as vfs from 'vinyl-fs';
+import * as ext from './extensions';
+import * as fancyLog from 'fancy-log';
+import * as ansiColors from 'ansi-colors';
+import { Stream } from 'stream';
-const fs = require('fs');
-const path = require('path');
-const os = require('os');
const mkdirp = require('mkdirp');
-const rimraf = require('rimraf');
-const es = require('event-stream');
-const rename = require('gulp-rename');
-const vfs = require('vinyl-fs');
-const ext = require('./extensions');
-const fancyLog = require('fancy-log');
-const ansiColors = require('ansi-colors');
-const root = path.dirname(path.dirname(__dirname));
-const builtInExtensions = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8')).builtInExtensions;
-const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');
-const ENABLE_LOGGING = !process.env['VSCODE_BUILD_BUILTIN_EXTENSIONS_SILENCE_PLEASE'];
-
-function log() {
- if (ENABLE_LOGGING) {
- fancyLog.apply(this, arguments);
+interface IExtensionDefinition {
+ name: string;
+ version: string;
+ repo: string;
+ metadata: {
+ id: string;
+ publisherId: {
+ publisherId: string;
+ publisherName: string;
+ displayName: string;
+ flags: string;
+ };
+ publisherDisplayName: string;
}
}
-function getExtensionPath(extension) {
+const root = path.dirname(path.dirname(__dirname));
+const productjson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8'));
+const builtInExtensions = productjson.builtInExtensions;
+const webBuiltInExtensions = productjson.webBuiltInExtensions;
+const controlFilePath = path.join(os.homedir(), '.vscode-oss-dev', 'extensions', 'control.json');
+const ENABLE_LOGGING = !process.env['VSCODE_BUILD_BUILTIN_EXTENSIONS_SILENCE_PLEASE'];
+
+function log(...messages: string[]): void {
+ if (ENABLE_LOGGING) {
+ fancyLog(...messages);
+ }
+}
+
+function getExtensionPath(extension: IExtensionDefinition): string {
return path.join(root, '.build', 'builtInExtensions', extension.name);
}
-function isUpToDate(extension) {
+function isUpToDate(extension: IExtensionDefinition): boolean {
const packagePath = path.join(getExtensionPath(extension), 'package.json');
if (!fs.existsSync(packagePath)) {
@@ -49,7 +67,7 @@ function isUpToDate(extension) {
}
}
-function syncMarketplaceExtension(extension) {
+function syncMarketplaceExtension(extension: IExtensionDefinition): Stream {
if (isUpToDate(extension)) {
log(ansiColors.blue('[marketplace]'), `${extension.name}@${extension.version}`, ansiColors.green('✔︎'));
return es.readArray([]);
@@ -63,7 +81,7 @@ function syncMarketplaceExtension(extension) {
.on('end', () => log(ansiColors.blue('[marketplace]'), extension.name, ansiColors.green('✔︎')));
}
-function syncExtension(extension, controlState) {
+function syncExtension(extension: IExtensionDefinition, controlState: 'disabled' | 'marketplace'): Stream {
switch (controlState) {
case 'disabled':
log(ansiColors.blue('[disabled]'), ansiColors.gray(extension.name));
@@ -87,7 +105,11 @@ function syncExtension(extension, controlState) {
}
}
-function readControlFile() {
+interface IControlFile {
+ [name: string]: 'disabled' | 'marketplace';
+}
+
+function readControlFile(): IControlFile {
try {
return JSON.parse(fs.readFileSync(controlFilePath, 'utf8'));
} catch (err) {
@@ -95,19 +117,19 @@ function readControlFile() {
}
}
-function writeControlFile(control) {
+function writeControlFile(control: IControlFile): void {
mkdirp.sync(path.dirname(controlFilePath));
fs.writeFileSync(controlFilePath, JSON.stringify(control, null, 2));
}
-function main() {
+export function getBuiltInExtensions(): Promise {
log('Syncronizing built-in extensions...');
log(`You can manage built-in extensions with the ${ansiColors.cyan('--builtin')} flag`);
const control = readControlFile();
- const streams = [];
+ const streams: Stream[] = [];
- for (const extension of builtInExtensions) {
+ for (const extension of [...builtInExtensions, ...webBuiltInExtensions]) {
let controlState = control[extension.name] || 'marketplace';
control[extension.name] = controlState;
@@ -116,14 +138,16 @@ function main() {
writeControlFile(control);
- es.merge(streams)
- .on('error', err => {
- console.error(err);
- process.exit(1);
- })
- .on('end', () => {
- process.exit(0);
- });
+ return new Promise((resolve, reject) => {
+ es.merge(streams)
+ .on('error', reject)
+ .on('end', resolve);
+ });
}
-main();
+if (require.main === module) {
+ getBuiltInExtensions().then(() => process.exit(0)).catch(err => {
+ console.error(err);
+ process.exit(1);
+ });
+}
diff --git a/build/lib/bundle.js b/build/lib/bundle.js
deleted file mode 100644
index 7d0c8d9b55e..00000000000
--- a/build/lib/bundle.js
+++ /dev/null
@@ -1,464 +0,0 @@
-"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 });
-exports.bundle = void 0;
-const fs = require("fs");
-const path = require("path");
-const vm = require("vm");
-/**
- * Bundle `entryPoints` given config `config`.
- */
-function bundle(entryPoints, config, callback) {
- const entryPointsMap = {};
- entryPoints.forEach((module) => {
- entryPointsMap[module.name] = module;
- });
- const allMentionedModulesMap = {};
- entryPoints.forEach((module) => {
- allMentionedModulesMap[module.name] = true;
- (module.include || []).forEach(function (includedModule) {
- allMentionedModulesMap[includedModule] = true;
- });
- (module.exclude || []).forEach(function (excludedModule) {
- allMentionedModulesMap[excludedModule] = true;
- });
- });
- const code = require('fs').readFileSync(path.join(__dirname, '../../src/vs/loader.js'));
- const r = vm.runInThisContext('(function(require, module, exports) { ' + code + '\n});');
- const loaderModule = { exports: {} };
- r.call({}, require, loaderModule, loaderModule.exports);
- const loader = loaderModule.exports;
- config.isBuild = true;
- config.paths = config.paths || {};
- if (!config.paths['vs/nls']) {
- config.paths['vs/nls'] = 'out-build/vs/nls.build';
- }
- if (!config.paths['vs/css']) {
- config.paths['vs/css'] = 'out-build/vs/css.build';
- }
- loader.config(config);
- loader(['require'], (localRequire) => {
- const resolvePath = (path) => {
- const r = localRequire.toUrl(path);
- if (!/\.js/.test(r)) {
- return r + '.js';
- }
- return r;
- };
- for (const moduleId in entryPointsMap) {
- const entryPoint = entryPointsMap[moduleId];
- if (entryPoint.append) {
- entryPoint.append = entryPoint.append.map(resolvePath);
- }
- if (entryPoint.prepend) {
- entryPoint.prepend = entryPoint.prepend.map(resolvePath);
- }
- }
- });
- loader(Object.keys(allMentionedModulesMap), () => {
- const modules = loader.getBuildInfo();
- const partialResult = emitEntryPoints(modules, entryPointsMap);
- const cssInlinedResources = loader('vs/css').getInlinedResources();
- callback(null, {
- files: partialResult.files,
- cssInlinedResources: cssInlinedResources,
- bundleData: partialResult.bundleData
- });
- }, (err) => callback(err, null));
-}
-exports.bundle = bundle;
-function emitEntryPoints(modules, entryPoints) {
- const modulesMap = {};
- modules.forEach((m) => {
- modulesMap[m.id] = m;
- });
- const modulesGraph = {};
- modules.forEach((m) => {
- modulesGraph[m.id] = m.dependencies;
- });
- const sortedModules = topologicalSort(modulesGraph);
- let result = [];
- const usedPlugins = {};
- const bundleData = {
- graph: modulesGraph,
- bundles: {}
- };
- Object.keys(entryPoints).forEach((moduleToBundle) => {
- const info = entryPoints[moduleToBundle];
- const rootNodes = [moduleToBundle].concat(info.include || []);
- const allDependencies = visit(rootNodes, modulesGraph);
- const excludes = ['require', 'exports', 'module'].concat(info.exclude || []);
- excludes.forEach((excludeRoot) => {
- const allExcludes = visit([excludeRoot], modulesGraph);
- Object.keys(allExcludes).forEach((exclude) => {
- delete allDependencies[exclude];
- });
- });
- const includedModules = sortedModules.filter((module) => {
- return allDependencies[module];
- });
- bundleData.bundles[moduleToBundle] = includedModules;
- const res = emitEntryPoint(modulesMap, modulesGraph, moduleToBundle, includedModules, info.prepend || [], info.append || [], info.dest);
- result = result.concat(res.files);
- for (const pluginName in res.usedPlugins) {
- usedPlugins[pluginName] = usedPlugins[pluginName] || res.usedPlugins[pluginName];
- }
- });
- Object.keys(usedPlugins).forEach((pluginName) => {
- const plugin = usedPlugins[pluginName];
- if (typeof plugin.finishBuild === 'function') {
- const write = (filename, contents) => {
- result.push({
- dest: filename,
- sources: [{
- path: null,
- contents: contents
- }]
- });
- };
- plugin.finishBuild(write);
- }
- });
- return {
- // TODO@TS 2.1.2
- files: extractStrings(removeDuplicateTSBoilerplate(result)),
- bundleData: bundleData
- };
-}
-function extractStrings(destFiles) {
- const parseDefineCall = (moduleMatch, depsMatch) => {
- const module = moduleMatch.replace(/^"|"$/g, '');
- let deps = depsMatch.split(',');
- deps = deps.map((dep) => {
- dep = dep.trim();
- dep = dep.replace(/^"|"$/g, '');
- dep = dep.replace(/^'|'$/g, '');
- let prefix = null;
- let _path = null;
- const pieces = dep.split('!');
- if (pieces.length > 1) {
- prefix = pieces[0] + '!';
- _path = pieces[1];
- }
- else {
- prefix = '';
- _path = pieces[0];
- }
- if (/^\.\//.test(_path) || /^\.\.\//.test(_path)) {
- const res = path.join(path.dirname(module), _path).replace(/\\/g, '/');
- return prefix + res;
- }
- return prefix + _path;
- });
- return {
- module: module,
- deps: deps
- };
- };
- destFiles.forEach((destFile) => {
- if (!/\.js$/.test(destFile.dest)) {
- return;
- }
- if (/\.nls\.js$/.test(destFile.dest)) {
- return;
- }
- // Do one pass to record the usage counts for each module id
- const useCounts = {};
- destFile.sources.forEach((source) => {
- const matches = source.contents.match(/define\(("[^"]+"),\s*\[(((, )?("|')[^"']+("|'))+)\]/);
- if (!matches) {
- return;
- }
- const defineCall = parseDefineCall(matches[1], matches[2]);
- useCounts[defineCall.module] = (useCounts[defineCall.module] || 0) + 1;
- defineCall.deps.forEach((dep) => {
- useCounts[dep] = (useCounts[dep] || 0) + 1;
- });
- });
- const sortedByUseModules = Object.keys(useCounts);
- sortedByUseModules.sort((a, b) => {
- return useCounts[b] - useCounts[a];
- });
- const replacementMap = {};
- sortedByUseModules.forEach((module, index) => {
- replacementMap[module] = index;
- });
- destFile.sources.forEach((source) => {
- source.contents = source.contents.replace(/define\(("[^"]+"),\s*\[(((, )?("|')[^"']+("|'))+)\]/, (_, moduleMatch, depsMatch) => {
- const defineCall = parseDefineCall(moduleMatch, depsMatch);
- return `define(__m[${replacementMap[defineCall.module]}/*${defineCall.module}*/], __M([${defineCall.deps.map(dep => replacementMap[dep] + '/*' + dep + '*/').join(',')}])`;
- });
- });
- destFile.sources.unshift({
- path: null,
- contents: [
- '(function() {',
- `var __m = ${JSON.stringify(sortedByUseModules)};`,
- `var __M = function(deps) {`,
- ` var result = [];`,
- ` for (var i = 0, len = deps.length; i < len; i++) {`,
- ` result[i] = __m[deps[i]];`,
- ` }`,
- ` return result;`,
- `};`
- ].join('\n')
- });
- destFile.sources.push({
- path: null,
- contents: '}).call(this);'
- });
- });
- return destFiles;
-}
-function removeDuplicateTSBoilerplate(destFiles) {
- // Taken from typescript compiler => emitFiles
- const BOILERPLATE = [
- { start: /^var __extends/, end: /^}\)\(\);$/ },
- { start: /^var __assign/, end: /^};$/ },
- { start: /^var __decorate/, end: /^};$/ },
- { start: /^var __metadata/, end: /^};$/ },
- { start: /^var __param/, end: /^};$/ },
- { start: /^var __awaiter/, end: /^};$/ },
- { start: /^var __generator/, end: /^};$/ },
- ];
- destFiles.forEach((destFile) => {
- const SEEN_BOILERPLATE = [];
- destFile.sources.forEach((source) => {
- const lines = source.contents.split(/\r\n|\n|\r/);
- const newLines = [];
- let IS_REMOVING_BOILERPLATE = false, END_BOILERPLATE;
- for (let i = 0; i < lines.length; i++) {
- const line = lines[i];
- if (IS_REMOVING_BOILERPLATE) {
- newLines.push('');
- if (END_BOILERPLATE.test(line)) {
- IS_REMOVING_BOILERPLATE = false;
- }
- }
- else {
- for (let j = 0; j < BOILERPLATE.length; j++) {
- const boilerplate = BOILERPLATE[j];
- if (boilerplate.start.test(line)) {
- if (SEEN_BOILERPLATE[j]) {
- IS_REMOVING_BOILERPLATE = true;
- END_BOILERPLATE = boilerplate.end;
- }
- else {
- SEEN_BOILERPLATE[j] = true;
- }
- }
- }
- if (IS_REMOVING_BOILERPLATE) {
- newLines.push('');
- }
- else {
- newLines.push(line);
- }
- }
- }
- source.contents = newLines.join('\n');
- });
- });
- return destFiles;
-}
-function emitEntryPoint(modulesMap, deps, entryPoint, includedModules, prepend, append, dest) {
- if (!dest) {
- dest = entryPoint + '.js';
- }
- const mainResult = {
- sources: [],
- dest: dest
- }, results = [mainResult];
- const usedPlugins = {};
- const getLoaderPlugin = (pluginName) => {
- if (!usedPlugins[pluginName]) {
- usedPlugins[pluginName] = modulesMap[pluginName].exports;
- }
- return usedPlugins[pluginName];
- };
- includedModules.forEach((c) => {
- const bangIndex = c.indexOf('!');
- if (bangIndex >= 0) {
- const pluginName = c.substr(0, bangIndex);
- const plugin = getLoaderPlugin(pluginName);
- mainResult.sources.push(emitPlugin(entryPoint, plugin, pluginName, c.substr(bangIndex + 1)));
- return;
- }
- const module = modulesMap[c];
- if (module.path === 'empty:') {
- return;
- }
- const contents = readFileAndRemoveBOM(module.path);
- if (module.shim) {
- mainResult.sources.push(emitShimmedModule(c, deps[c], module.shim, module.path, contents));
- }
- else {
- mainResult.sources.push(emitNamedModule(c, module.defineLocation, module.path, contents));
- }
- });
- Object.keys(usedPlugins).forEach((pluginName) => {
- const plugin = usedPlugins[pluginName];
- if (typeof plugin.writeFile === 'function') {
- const req = (() => {
- throw new Error('no-no!');
- });
- req.toUrl = something => something;
- const write = (filename, contents) => {
- results.push({
- dest: filename,
- sources: [{
- path: null,
- contents: contents
- }]
- });
- };
- plugin.writeFile(pluginName, entryPoint, req, write, {});
- }
- });
- const toIFile = (path) => {
- const contents = readFileAndRemoveBOM(path);
- return {
- path: path,
- contents: contents
- };
- };
- const toPrepend = (prepend || []).map(toIFile);
- const toAppend = (append || []).map(toIFile);
- mainResult.sources = toPrepend.concat(mainResult.sources).concat(toAppend);
- return {
- files: results,
- usedPlugins: usedPlugins
- };
-}
-function readFileAndRemoveBOM(path) {
- const BOM_CHAR_CODE = 65279;
- let contents = fs.readFileSync(path, 'utf8');
- // Remove BOM
- if (contents.charCodeAt(0) === BOM_CHAR_CODE) {
- contents = contents.substring(1);
- }
- return contents;
-}
-function emitPlugin(entryPoint, plugin, pluginName, moduleName) {
- let result = '';
- if (typeof plugin.write === 'function') {
- const write = ((what) => {
- result += what;
- });
- write.getEntryPoint = () => {
- return entryPoint;
- };
- write.asModule = (moduleId, code) => {
- code = code.replace(/^define\(/, 'define("' + moduleId + '",');
- result += code;
- };
- plugin.write(pluginName, moduleName, write);
- }
- return {
- path: null,
- contents: result
- };
-}
-function emitNamedModule(moduleId, defineCallPosition, path, contents) {
- // `defineCallPosition` is the position in code: |define()
- const defineCallOffset = positionToOffset(contents, defineCallPosition.line, defineCallPosition.col);
- // `parensOffset` is the position in code: define|()
- const parensOffset = contents.indexOf('(', defineCallOffset);
- const insertStr = '"' + moduleId + '", ';
- return {
- path: path,
- contents: contents.substr(0, parensOffset + 1) + insertStr + contents.substr(parensOffset + 1)
- };
-}
-function emitShimmedModule(moduleId, myDeps, factory, path, contents) {
- const strDeps = (myDeps.length > 0 ? '"' + myDeps.join('", "') + '"' : '');
- const strDefine = 'define("' + moduleId + '", [' + strDeps + '], ' + factory + ');';
- return {
- path: path,
- contents: contents + '\n;\n' + strDefine
- };
-}
-/**
- * Convert a position (line:col) to (offset) in string `str`
- */
-function positionToOffset(str, desiredLine, desiredCol) {
- if (desiredLine === 1) {
- return desiredCol - 1;
- }
- let line = 1;
- let lastNewLineOffset = -1;
- do {
- if (desiredLine === line) {
- return lastNewLineOffset + 1 + desiredCol - 1;
- }
- lastNewLineOffset = str.indexOf('\n', lastNewLineOffset + 1);
- line++;
- } while (lastNewLineOffset >= 0);
- return -1;
-}
-/**
- * Return a set of reachable nodes in `graph` starting from `rootNodes`
- */
-function visit(rootNodes, graph) {
- const result = {};
- const queue = rootNodes;
- rootNodes.forEach((node) => {
- result[node] = true;
- });
- while (queue.length > 0) {
- const el = queue.shift();
- const myEdges = graph[el] || [];
- myEdges.forEach((toNode) => {
- if (!result[toNode]) {
- result[toNode] = true;
- queue.push(toNode);
- }
- });
- }
- return result;
-}
-/**
- * Perform a topological sort on `graph`
- */
-function topologicalSort(graph) {
- const allNodes = {}, outgoingEdgeCount = {}, inverseEdges = {};
- Object.keys(graph).forEach((fromNode) => {
- allNodes[fromNode] = true;
- outgoingEdgeCount[fromNode] = graph[fromNode].length;
- graph[fromNode].forEach((toNode) => {
- allNodes[toNode] = true;
- outgoingEdgeCount[toNode] = outgoingEdgeCount[toNode] || 0;
- inverseEdges[toNode] = inverseEdges[toNode] || [];
- inverseEdges[toNode].push(fromNode);
- });
- });
- // https://en.wikipedia.org/wiki/Topological_sorting
- const S = [], L = [];
- Object.keys(allNodes).forEach((node) => {
- if (outgoingEdgeCount[node] === 0) {
- delete outgoingEdgeCount[node];
- S.push(node);
- }
- });
- while (S.length > 0) {
- // Ensure the exact same order all the time with the same inputs
- S.sort();
- const n = S.shift();
- L.push(n);
- const myInverseEdges = inverseEdges[n] || [];
- myInverseEdges.forEach((m) => {
- outgoingEdgeCount[m]--;
- if (outgoingEdgeCount[m] === 0) {
- delete outgoingEdgeCount[m];
- S.push(m);
- }
- });
- }
- if (Object.keys(outgoingEdgeCount).length > 0) {
- throw new Error('Cannot do topological sort on cyclic graph, remaining nodes: ' + Object.keys(outgoingEdgeCount));
- }
- return L;
-}
diff --git a/build/lib/compilation.js b/build/lib/compilation.js
deleted file mode 100644
index c4a3230424b..00000000000
--- a/build/lib/compilation.js
+++ /dev/null
@@ -1,170 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.watchTask = exports.compileTask = void 0;
-const es = require("event-stream");
-const fs = require("fs");
-const gulp = require("gulp");
-const bom = require("gulp-bom");
-const sourcemaps = require("gulp-sourcemaps");
-const tsb = require("gulp-tsb");
-const path = require("path");
-const monacodts = require("../monaco/api");
-const nls = require("./nls");
-const reporter_1 = require("./reporter");
-const util = require("./util");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const watch = require('./watch');
-const reporter = reporter_1.createReporter();
-function getTypeScriptCompilerOptions(src) {
- const rootDir = path.join(__dirname, `../../${src}`);
- let options = {};
- options.verbose = false;
- options.sourceMap = true;
- if (process.env['VSCODE_NO_SOURCEMAP']) { // To be used by developers in a hurry
- options.sourceMap = false;
- }
- options.rootDir = rootDir;
- options.baseUrl = rootDir;
- options.sourceRoot = util.toFileUri(rootDir);
- options.newLine = /\r\n/.test(fs.readFileSync(__filename, 'utf8')) ? 0 : 1;
- return options;
-}
-function createCompile(src, build, emitError) {
- const projectPath = path.join(__dirname, '../../', src, 'tsconfig.json');
- const overrideOptions = Object.assign(Object.assign({}, getTypeScriptCompilerOptions(src)), { inlineSources: Boolean(build) });
- const compilation = tsb.create(projectPath, overrideOptions, false, err => reporter(err));
- function pipeline(token) {
- const utf8Filter = util.filter(data => /(\/|\\)test(\/|\\).*utf8/.test(data.path));
- const tsFilter = util.filter(data => /\.ts$/.test(data.path));
- const noDeclarationsFilter = util.filter(data => !(/\.d\.ts$/.test(data.path)));
- const input = es.through();
- const output = input
- .pipe(utf8Filter)
- .pipe(bom()) // this is required to preserve BOM in test files that loose it otherwise
- .pipe(utf8Filter.restore)
- .pipe(tsFilter)
- .pipe(util.loadSourcemaps())
- .pipe(compilation(token))
- .pipe(noDeclarationsFilter)
- .pipe(build ? nls() : es.through())
- .pipe(noDeclarationsFilter.restore)
- .pipe(sourcemaps.write('.', {
- addComment: false,
- includeContent: !!build,
- sourceRoot: overrideOptions.sourceRoot
- }))
- .pipe(tsFilter.restore)
- .pipe(reporter.end(!!emitError));
- return es.duplex(input, output);
- }
- pipeline.tsProjectSrc = () => {
- return compilation.src({ base: src });
- };
- return pipeline;
-}
-function compileTask(src, out, build) {
- return function () {
- const compile = createCompile(src, build, true);
- const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
- let generator = new MonacoGenerator(false);
- if (src === 'src') {
- generator.execute();
- }
- return srcPipe
- .pipe(generator.stream)
- .pipe(compile())
- .pipe(gulp.dest(out));
- };
-}
-exports.compileTask = compileTask;
-function watchTask(out, build) {
- return function () {
- const compile = createCompile('src', build);
- const src = gulp.src('src/**', { base: 'src' });
- const watchSrc = watch('src/**', { base: 'src', readDelay: 200 });
- let generator = new MonacoGenerator(true);
- generator.execute();
- return watchSrc
- .pipe(generator.stream)
- .pipe(util.incremental(compile, src, true))
- .pipe(gulp.dest(out));
- };
-}
-exports.watchTask = watchTask;
-const REPO_SRC_FOLDER = path.join(__dirname, '../../src');
-class MonacoGenerator {
- constructor(isWatch) {
- this._executeSoonTimer = null;
- this._isWatch = isWatch;
- this.stream = es.through();
- this._watchedFiles = {};
- let onWillReadFile = (moduleId, filePath) => {
- if (!this._isWatch) {
- return;
- }
- if (this._watchedFiles[filePath]) {
- return;
- }
- this._watchedFiles[filePath] = true;
- fs.watchFile(filePath, () => {
- this._declarationResolver.invalidateCache(moduleId);
- this._executeSoon();
- });
- };
- this._fsProvider = new class extends monacodts.FSProvider {
- readFileSync(moduleId, filePath) {
- onWillReadFile(moduleId, filePath);
- return super.readFileSync(moduleId, filePath);
- }
- };
- this._declarationResolver = new monacodts.DeclarationResolver(this._fsProvider);
- if (this._isWatch) {
- fs.watchFile(monacodts.RECIPE_PATH, () => {
- this._executeSoon();
- });
- }
- }
- _executeSoon() {
- if (this._executeSoonTimer !== null) {
- clearTimeout(this._executeSoonTimer);
- this._executeSoonTimer = null;
- }
- this._executeSoonTimer = setTimeout(() => {
- this._executeSoonTimer = null;
- this.execute();
- }, 20);
- }
- _run() {
- let r = monacodts.run3(this._declarationResolver);
- if (!r && !this._isWatch) {
- // The build must always be able to generate the monaco.d.ts
- throw new Error(`monaco.d.ts generation error - Cannot continue`);
- }
- return r;
- }
- _log(message, ...rest) {
- fancyLog(ansiColors.cyan('[monaco.d.ts]'), message, ...rest);
- }
- execute() {
- const startTime = Date.now();
- const result = this._run();
- if (!result) {
- // nothing really changed
- return;
- }
- if (result.isTheSame) {
- return;
- }
- fs.writeFileSync(result.filePath, result.content);
- fs.writeFileSync(path.join(REPO_SRC_FOLDER, 'vs/editor/common/standalone/standaloneEnums.ts'), result.enums);
- this._log(`monaco.d.ts is changed - total time took ${Date.now() - startTime} ms`);
- if (!this._isWatch) {
- this.stream.emit('error', 'monaco.d.ts is no longer up to date. Please run gulp watch and commit the new file.');
- }
- }
-}
diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts
index 578fae31a19..96e7d59ea16 100644
--- a/build/lib/compilation.ts
+++ b/build/lib/compilation.ts
@@ -12,12 +12,13 @@ import * as bom from 'gulp-bom';
import * as sourcemaps from 'gulp-sourcemaps';
import * as tsb from 'gulp-tsb';
import * as path from 'path';
-import * as monacodts from '../monaco/api';
+import * as monacodts from './monaco-api';
import * as nls from './nls';
import { createReporter } from './reporter';
import * as util from './util';
import * as fancyLog from 'fancy-log';
import * as ansiColors from 'ansi-colors';
+import * as os from 'os';
import ts = require('typescript');
const watch = require('./watch');
@@ -81,6 +82,11 @@ function createCompile(src: string, build: boolean, emitError?: boolean) {
export function compileTask(src: string, out: string, build: boolean): () => NodeJS.ReadWriteStream {
return function () {
+
+ if (os.totalmem() < 4_000_000_000) {
+ throw new Error('compilation requires 4GB of RAM');
+ }
+
const compile = createCompile(src, build, true);
const srcPipe = gulp.src(`${src}/**`, { base: `${src}` });
let generator = new MonacoGenerator(false);
diff --git a/build/lib/electron.js b/build/lib/electron.js
deleted file mode 100644
index bb71f14c12d..00000000000
--- a/build/lib/electron.js
+++ /dev/null
@@ -1,111 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.config = void 0;
-const fs = require("fs");
-const path = require("path");
-const vfs = require("vinyl-fs");
-const filter = require("gulp-filter");
-const json = require("gulp-json-editor");
-const _ = require("underscore");
-const util = require("./util");
-const electron = require('gulp-atom-electron');
-const root = path.dirname(path.dirname(__dirname));
-const product = JSON.parse(fs.readFileSync(path.join(root, 'product.json'), 'utf8'));
-const commit = util.getVersion(root);
-const darwinCreditsTemplate = product.darwinCredits && _.template(fs.readFileSync(path.join(root, product.darwinCredits), 'utf8'));
-function darwinBundleDocumentType(extensions, icon) {
- return {
- name: product.nameLong + ' document',
- role: 'Editor',
- ostypes: ["TEXT", "utxt", "TUTX", "****"],
- extensions: extensions,
- iconFile: icon
- };
-}
-exports.config = {
- version: util.getElectronVersion(),
- productAppName: product.nameLong,
- companyName: 'Microsoft Corporation',
- copyright: 'Copyright (C) 2019 Microsoft. All rights reserved',
- darwinIcon: 'resources/darwin/code.icns',
- darwinBundleIdentifier: product.darwinBundleIdentifier,
- darwinApplicationCategoryType: 'public.app-category.developer-tools',
- darwinHelpBookFolder: 'VS Code HelpBook',
- darwinHelpBookName: 'VS Code HelpBook',
- darwinBundleDocumentTypes: [
- darwinBundleDocumentType(["bat", "cmd"], 'resources/darwin/bat.icns'),
- darwinBundleDocumentType(["bowerrc"], 'resources/darwin/bower.icns'),
- darwinBundleDocumentType(["c", "h"], 'resources/darwin/c.icns'),
- darwinBundleDocumentType(["config", "editorconfig", "gitattributes", "gitconfig", "gitignore", "ini"], 'resources/darwin/config.icns'),
- darwinBundleDocumentType(["cc", "cpp", "cxx", "hh", "hpp", "hxx"], 'resources/darwin/cpp.icns'),
- darwinBundleDocumentType(["cs", "csx"], 'resources/darwin/csharp.icns'),
- darwinBundleDocumentType(["css"], 'resources/darwin/css.icns'),
- darwinBundleDocumentType(["go"], 'resources/darwin/go.icns'),
- darwinBundleDocumentType(["asp", "aspx", "cshtml", "htm", "html", "jshtm", "jsp", "phtml", "shtml"], 'resources/darwin/html.icns'),
- darwinBundleDocumentType(["jade"], 'resources/darwin/jade.icns'),
- darwinBundleDocumentType(["jav", "java"], 'resources/darwin/java.icns'),
- darwinBundleDocumentType(["js", "jscsrc", "jshintrc", "mjs", "cjs"], 'resources/darwin/javascript.icns'),
- darwinBundleDocumentType(["json"], 'resources/darwin/json.icns'),
- darwinBundleDocumentType(["less"], 'resources/darwin/less.icns'),
- darwinBundleDocumentType(["markdown", "md", "mdoc", "mdown", "mdtext", "mdtxt", "mdwn", "mkd", "mkdn"], 'resources/darwin/markdown.icns'),
- darwinBundleDocumentType(["php"], 'resources/darwin/php.icns'),
- darwinBundleDocumentType(["ps1", "psd1", "psm1"], 'resources/darwin/powershell.icns'),
- darwinBundleDocumentType(["py"], 'resources/darwin/python.icns'),
- darwinBundleDocumentType(["gemspec", "rb"], 'resources/darwin/ruby.icns'),
- darwinBundleDocumentType(["scss"], 'resources/darwin/sass.icns'),
- darwinBundleDocumentType(["bash", "bash_login", "bash_logout", "bash_profile", "bashrc", "profile", "rhistory", "rprofile", "sh", "zlogin", "zlogout", "zprofile", "zsh", "zshenv", "zshrc"], 'resources/darwin/shell.icns'),
- darwinBundleDocumentType(["sql"], 'resources/darwin/sql.icns'),
- darwinBundleDocumentType(["ts"], 'resources/darwin/typescript.icns'),
- darwinBundleDocumentType(["tsx", "jsx"], 'resources/darwin/react.icns'),
- darwinBundleDocumentType(["vue"], 'resources/darwin/vue.icns'),
- darwinBundleDocumentType(["ascx", "csproj", "dtd", "wxi", "wxl", "wxs", "xml", "xaml"], 'resources/darwin/xml.icns'),
- darwinBundleDocumentType(["eyaml", "eyml", "yaml", "yml"], 'resources/darwin/yaml.icns'),
- darwinBundleDocumentType(["clj", "cljs", "cljx", "clojure", "code-workspace", "coffee", "containerfile", "ctp", "dockerfile", "dot", "edn", "fs", "fsi", "fsscript", "fsx", "handlebars", "hbs", "lua", "m", "makefile", "ml", "mli", "pl", "pl6", "pm", "pm6", "pod", "pp", "properties", "psgi", "pug", "r", "rs", "rt", "svg", "svgz", "t", "txt", "vb", "xcodeproj", "xcworkspace"], 'resources/darwin/default.icns')
- ],
- darwinBundleURLTypes: [{
- role: 'Viewer',
- name: product.nameLong,
- urlSchemes: [product.urlProtocol]
- }],
- darwinForceDarkModeSupport: true,
- darwinCredits: darwinCreditsTemplate ? Buffer.from(darwinCreditsTemplate({ commit: commit, date: new Date().toISOString() })) : undefined,
- linuxExecutableName: product.applicationName,
- winIcon: 'resources/win32/code.ico',
- token: process.env['VSCODE_MIXIN_PASSWORD'] || process.env['GITHUB_TOKEN'] || undefined,
- repo: product.electronRepository || undefined
-};
-function getElectron(arch) {
- return () => {
- const electronOpts = _.extend({}, exports.config, {
- platform: process.platform,
- arch,
- ffmpegChromium: true,
- keepDefaultApp: true
- });
- return vfs.src('package.json')
- .pipe(json({ name: product.nameShort }))
- .pipe(electron(electronOpts))
- .pipe(filter(['**', '!**/app/package.json']))
- .pipe(vfs.dest('.build/electron'));
- };
-}
-async function main(arch = process.arch) {
- const version = util.getElectronVersion();
- const electronPath = path.join(root, '.build', 'electron');
- const versionFile = path.join(electronPath, 'version');
- const isUpToDate = fs.existsSync(versionFile) && fs.readFileSync(versionFile, 'utf8') === `${version}`;
- if (!isUpToDate) {
- await util.rimraf(electronPath)();
- await util.streamToPromise(getElectron(arch)());
- }
-}
-if (require.main === module) {
- main(process.argv[2]).catch(err => {
- console.error(err);
- process.exit(1);
- });
-}
diff --git a/build/lib/electron.ts b/build/lib/electron.ts
index e0beca78079..c76fcf3f55b 100644
--- a/build/lib/electron.ts
+++ b/build/lib/electron.ts
@@ -25,7 +25,7 @@ function darwinBundleDocumentType(extensions: string[], icon: string) {
return {
name: product.nameLong + ' document',
role: 'Editor',
- ostypes: ["TEXT", "utxt", "TUTX", "****"],
+ ostypes: ['TEXT', 'utxt', 'TUTX', '****'],
extensions: extensions,
iconFile: icon
};
@@ -42,34 +42,34 @@ export const config = {
darwinHelpBookFolder: 'VS Code HelpBook',
darwinHelpBookName: 'VS Code HelpBook',
darwinBundleDocumentTypes: [
- darwinBundleDocumentType(["bat", "cmd"], 'resources/darwin/bat.icns'),
- darwinBundleDocumentType(["bowerrc"], 'resources/darwin/bower.icns'),
- darwinBundleDocumentType(["c", "h"], 'resources/darwin/c.icns'),
- darwinBundleDocumentType(["config", "editorconfig", "gitattributes", "gitconfig", "gitignore", "ini"], 'resources/darwin/config.icns'),
- darwinBundleDocumentType(["cc", "cpp", "cxx", "hh", "hpp", "hxx"], 'resources/darwin/cpp.icns'),
- darwinBundleDocumentType(["cs", "csx"], 'resources/darwin/csharp.icns'),
- darwinBundleDocumentType(["css"], 'resources/darwin/css.icns'),
- darwinBundleDocumentType(["go"], 'resources/darwin/go.icns'),
- darwinBundleDocumentType(["asp", "aspx", "cshtml", "htm", "html", "jshtm", "jsp", "phtml", "shtml"], 'resources/darwin/html.icns'),
- darwinBundleDocumentType(["jade"], 'resources/darwin/jade.icns'),
- darwinBundleDocumentType(["jav", "java"], 'resources/darwin/java.icns'),
- darwinBundleDocumentType(["js", "jscsrc", "jshintrc", "mjs", "cjs"], 'resources/darwin/javascript.icns'),
- darwinBundleDocumentType(["json"], 'resources/darwin/json.icns'),
- darwinBundleDocumentType(["less"], 'resources/darwin/less.icns'),
- darwinBundleDocumentType(["markdown", "md", "mdoc", "mdown", "mdtext", "mdtxt", "mdwn", "mkd", "mkdn"], 'resources/darwin/markdown.icns'),
- darwinBundleDocumentType(["php"], 'resources/darwin/php.icns'),
- darwinBundleDocumentType(["ps1", "psd1", "psm1"], 'resources/darwin/powershell.icns'),
- darwinBundleDocumentType(["py"], 'resources/darwin/python.icns'),
- darwinBundleDocumentType(["gemspec", "rb"], 'resources/darwin/ruby.icns'),
- darwinBundleDocumentType(["scss"], 'resources/darwin/sass.icns'),
- darwinBundleDocumentType(["bash", "bash_login", "bash_logout", "bash_profile", "bashrc", "profile", "rhistory", "rprofile", "sh", "zlogin", "zlogout", "zprofile", "zsh", "zshenv", "zshrc"], 'resources/darwin/shell.icns'),
- darwinBundleDocumentType(["sql"], 'resources/darwin/sql.icns'),
- darwinBundleDocumentType(["ts"], 'resources/darwin/typescript.icns'),
- darwinBundleDocumentType(["tsx", "jsx"], 'resources/darwin/react.icns'),
- darwinBundleDocumentType(["vue"], 'resources/darwin/vue.icns'),
- darwinBundleDocumentType(["ascx", "csproj", "dtd", "wxi", "wxl", "wxs", "xml", "xaml"], 'resources/darwin/xml.icns'),
- darwinBundleDocumentType(["eyaml", "eyml", "yaml", "yml"], 'resources/darwin/yaml.icns'),
- darwinBundleDocumentType(["clj", "cljs", "cljx", "clojure", "code-workspace", "coffee", "containerfile", "ctp", "dockerfile", "dot", "edn", "fs", "fsi", "fsscript", "fsx", "handlebars", "hbs", "lua", "m", "makefile", "ml", "mli", "pl", "pl6", "pm", "pm6", "pod", "pp", "properties", "psgi", "pug", "r", "rs", "rt", "svg", "svgz", "t", "txt", "vb", "xcodeproj", "xcworkspace"], 'resources/darwin/default.icns')
+ darwinBundleDocumentType(['bat', 'cmd'], 'resources/darwin/bat.icns'),
+ darwinBundleDocumentType(['bowerrc'], 'resources/darwin/bower.icns'),
+ darwinBundleDocumentType(['c', 'h'], 'resources/darwin/c.icns'),
+ darwinBundleDocumentType(['config', 'editorconfig', 'gitattributes', 'gitconfig', 'gitignore', 'ini'], 'resources/darwin/config.icns'),
+ darwinBundleDocumentType(['cc', 'cpp', 'cxx', 'c++', 'hh', 'hpp', 'hxx', 'h++'], 'resources/darwin/cpp.icns'),
+ darwinBundleDocumentType(['cs', 'csx'], 'resources/darwin/csharp.icns'),
+ darwinBundleDocumentType(['css'], 'resources/darwin/css.icns'),
+ darwinBundleDocumentType(['go'], 'resources/darwin/go.icns'),
+ darwinBundleDocumentType(['asp', 'aspx', 'cshtml', 'htm', 'html', 'jshtm', 'jsp', 'phtml', 'shtml'], 'resources/darwin/html.icns'),
+ darwinBundleDocumentType(['jade'], 'resources/darwin/jade.icns'),
+ darwinBundleDocumentType(['jav', 'java'], 'resources/darwin/java.icns'),
+ darwinBundleDocumentType(['js', 'jscsrc', 'jshintrc', 'mjs', 'cjs'], 'resources/darwin/javascript.icns'),
+ darwinBundleDocumentType(['json'], 'resources/darwin/json.icns'),
+ darwinBundleDocumentType(['less'], 'resources/darwin/less.icns'),
+ darwinBundleDocumentType(['markdown', 'md', 'mdoc', 'mdown', 'mdtext', 'mdtxt', 'mdwn', 'mkd', 'mkdn'], 'resources/darwin/markdown.icns'),
+ darwinBundleDocumentType(['php'], 'resources/darwin/php.icns'),
+ darwinBundleDocumentType(['ps1', 'psd1', 'psm1'], 'resources/darwin/powershell.icns'),
+ darwinBundleDocumentType(['py'], 'resources/darwin/python.icns'),
+ darwinBundleDocumentType(['gemspec', 'rb'], 'resources/darwin/ruby.icns'),
+ darwinBundleDocumentType(['scss'], 'resources/darwin/sass.icns'),
+ darwinBundleDocumentType(['bash', 'bash_login', 'bash_logout', 'bash_profile', 'bashrc', 'profile', 'rhistory', 'rprofile', 'sh', 'zlogin', 'zlogout', 'zprofile', 'zsh', 'zshenv', 'zshrc'], 'resources/darwin/shell.icns'),
+ darwinBundleDocumentType(['sql'], 'resources/darwin/sql.icns'),
+ darwinBundleDocumentType(['ts'], 'resources/darwin/typescript.icns'),
+ darwinBundleDocumentType(['tsx', 'jsx'], 'resources/darwin/react.icns'),
+ darwinBundleDocumentType(['vue'], 'resources/darwin/vue.icns'),
+ darwinBundleDocumentType(['ascx', 'csproj', 'dtd', 'wxi', 'wxl', 'wxs', 'xml', 'xaml'], 'resources/darwin/xml.icns'),
+ darwinBundleDocumentType(['eyaml', 'eyml', 'yaml', 'yml'], 'resources/darwin/yaml.icns'),
+ darwinBundleDocumentType(['clj', 'cljs', 'cljx', 'clojure', 'code-workspace', 'coffee', 'containerfile', 'ctp', 'dockerfile', 'dot', 'edn', 'fs', 'fsi', 'fsscript', 'fsx', 'handlebars', 'hbs', 'lua', 'm', 'makefile', 'ml', 'mli', 'pl', 'pl6', 'pm', 'pm6', 'pod', 'pp', 'properties', 'psgi', 'pug', 'r', 'rs', 'rt', 'svg', 'svgz', 't', 'txt', 'vb', 'xcodeproj', 'xcworkspace'], 'resources/darwin/default.icns')
],
darwinBundleURLTypes: [{
role: 'Viewer',
@@ -88,7 +88,7 @@ function getElectron(arch: string): () => NodeJS.ReadWriteStream {
return () => {
const electronOpts = _.extend({}, config, {
platform: process.platform,
- arch,
+ arch: arch === 'armhf' ? 'arm' : arch,
ffmpegChromium: true,
keepDefaultApp: true
});
diff --git a/build/lib/eslint/code-import-patterns.js b/build/lib/eslint/code-import-patterns.js
deleted file mode 100644
index 0d508d1d00e..00000000000
--- a/build/lib/eslint/code-import-patterns.js
+++ /dev/null
@@ -1,59 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const path_1 = require("path");
-const minimatch = require("minimatch");
-const utils_1 = require("./utils");
-module.exports = new class {
- constructor() {
- this.meta = {
- messages: {
- badImport: 'Imports violates \'{{restrictions}}\' restrictions. See https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
- },
- docs: {
- url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
- }
- };
- }
- create(context) {
- const configs = context.options;
- for (const config of configs) {
- if (minimatch(context.getFilename(), config.target)) {
- return utils_1.createImportRuleListener((node, value) => this._checkImport(context, config, node, value));
- }
- }
- return {};
- }
- _checkImport(context, config, node, path) {
- // resolve relative paths
- if (path[0] === '.') {
- path = path_1.join(context.getFilename(), path);
- }
- let restrictions;
- if (typeof config.restrictions === 'string') {
- restrictions = [config.restrictions];
- }
- else {
- restrictions = config.restrictions;
- }
- let matched = false;
- for (const pattern of restrictions) {
- if (minimatch(path, pattern)) {
- matched = true;
- break;
- }
- }
- if (!matched) {
- // None of the restrictions matched
- context.report({
- loc: node.loc,
- messageId: 'badImport',
- data: {
- restrictions: restrictions.join(' or ')
- }
- });
- }
- }
-};
diff --git a/build/lib/eslint/code-layering.js b/build/lib/eslint/code-layering.js
deleted file mode 100644
index db591f789c7..00000000000
--- a/build/lib/eslint/code-layering.js
+++ /dev/null
@@ -1,68 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const path_1 = require("path");
-const utils_1 = require("./utils");
-module.exports = new class {
- constructor() {
- this.meta = {
- messages: {
- layerbreaker: 'Bad layering. You are not allowed to access {{from}} from here, allowed layers are: [{{allowed}}]'
- },
- docs: {
- url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
- }
- };
- }
- create(context) {
- const fileDirname = path_1.dirname(context.getFilename());
- const parts = fileDirname.split(/\\|\//);
- const ruleArgs = context.options[0];
- let config;
- for (let i = parts.length - 1; i >= 0; i--) {
- if (ruleArgs[parts[i]]) {
- config = {
- allowed: new Set(ruleArgs[parts[i]]).add(parts[i]),
- disallowed: new Set()
- };
- Object.keys(ruleArgs).forEach(key => {
- if (!config.allowed.has(key)) {
- config.disallowed.add(key);
- }
- });
- break;
- }
- }
- if (!config) {
- // nothing
- return {};
- }
- return utils_1.createImportRuleListener((node, path) => {
- if (path[0] === '.') {
- path = path_1.join(path_1.dirname(context.getFilename()), path);
- }
- const parts = path_1.dirname(path).split(/\\|\//);
- for (let i = parts.length - 1; i >= 0; i--) {
- const part = parts[i];
- if (config.allowed.has(part)) {
- // GOOD - same layer
- break;
- }
- if (config.disallowed.has(part)) {
- // BAD - wrong layer
- context.report({
- loc: node.loc,
- messageId: 'layerbreaker',
- data: {
- from: part,
- allowed: [...config.allowed.keys()].join(', ')
- }
- });
- break;
- }
- }
- });
- }
-};
diff --git a/build/lib/eslint/code-no-nls-in-standalone-editor.js b/build/lib/eslint/code-no-nls-in-standalone-editor.js
deleted file mode 100644
index d8955507bed..00000000000
--- a/build/lib/eslint/code-no-nls-in-standalone-editor.js
+++ /dev/null
@@ -1,38 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const path_1 = require("path");
-const utils_1 = require("./utils");
-module.exports = new class NoNlsInStandaloneEditorRule {
- constructor() {
- this.meta = {
- messages: {
- noNls: 'Not allowed to import vs/nls in standalone editor modules. Use standaloneStrings.ts'
- }
- };
- }
- create(context) {
- const fileName = context.getFilename();
- if (/vs(\/|\\)editor(\/|\\)standalone(\/|\\)/.test(fileName)
- || /vs(\/|\\)editor(\/|\\)common(\/|\\)standalone(\/|\\)/.test(fileName)
- || /vs(\/|\\)editor(\/|\\)editor.api/.test(fileName)
- || /vs(\/|\\)editor(\/|\\)editor.main/.test(fileName)
- || /vs(\/|\\)editor(\/|\\)editor.worker/.test(fileName)) {
- return utils_1.createImportRuleListener((node, path) => {
- // resolve relative paths
- if (path[0] === '.') {
- path = path_1.join(context.getFilename(), path);
- }
- if (/vs(\/|\\)nls/.test(path)) {
- context.report({
- loc: node.loc,
- messageId: 'noNls'
- });
- }
- });
- }
- return {};
- }
-};
diff --git a/build/lib/eslint/code-no-standalone-editor.js b/build/lib/eslint/code-no-standalone-editor.js
deleted file mode 100644
index d9d6bb55b87..00000000000
--- a/build/lib/eslint/code-no-standalone-editor.js
+++ /dev/null
@@ -1,41 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const path_1 = require("path");
-const utils_1 = require("./utils");
-module.exports = new class NoNlsInStandaloneEditorRule {
- constructor() {
- this.meta = {
- messages: {
- badImport: 'Not allowed to import standalone editor modules.'
- },
- docs: {
- url: 'https://github.com/microsoft/vscode/wiki/Source-Code-Organization'
- }
- };
- }
- create(context) {
- if (/vs(\/|\\)editor/.test(context.getFilename())) {
- // the vs/editor folder is allowed to use the standalone editor
- return {};
- }
- return utils_1.createImportRuleListener((node, path) => {
- // resolve relative paths
- if (path[0] === '.') {
- path = path_1.join(context.getFilename(), 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)) {
- context.report({
- loc: node.loc,
- messageId: 'badImport'
- });
- }
- });
- }
-};
diff --git a/build/lib/eslint/code-no-unexternalized-strings.js b/build/lib/eslint/code-no-unexternalized-strings.js
deleted file mode 100644
index 28fce5b9a18..00000000000
--- a/build/lib/eslint/code-no-unexternalized-strings.js
+++ /dev/null
@@ -1,111 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-var _a;
-const experimental_utils_1 = require("@typescript-eslint/experimental-utils");
-function isStringLiteral(node) {
- return !!node && node.type === experimental_utils_1.AST_NODE_TYPES.Literal && typeof node.value === 'string';
-}
-function isDoubleQuoted(node) {
- return node.raw[0] === '"' && node.raw[node.raw.length - 1] === '"';
-}
-module.exports = new (_a = class NoUnexternalizedStrings {
- constructor() {
- this.meta = {
- messages: {
- doubleQuoted: 'Only use double-quoted strings for externalized strings.',
- badKey: 'The key \'{{key}}\' doesn\'t conform to a valid localize identifier.',
- duplicateKey: 'Duplicate key \'{{key}}\' with different message value.',
- badMessage: 'Message argument to \'{{message}}\' must be a string literal.'
- }
- };
- }
- create(context) {
- const externalizedStringLiterals = new Map();
- const doubleQuotedStringLiterals = new Set();
- function collectDoubleQuotedStrings(node) {
- if (isStringLiteral(node) && isDoubleQuoted(node)) {
- doubleQuotedStringLiterals.add(node);
- }
- }
- function visitLocalizeCall(node) {
- // localize(key, message)
- const [keyNode, messageNode] = node.arguments;
- // (1)
- // extract key so that it can be checked later
- let key;
- if (isStringLiteral(keyNode)) {
- doubleQuotedStringLiterals.delete(keyNode); //todo@joh reconsider
- key = keyNode.value;
- }
- else if (keyNode.type === experimental_utils_1.AST_NODE_TYPES.ObjectExpression) {
- for (let property of keyNode.properties) {
- if (property.type === experimental_utils_1.AST_NODE_TYPES.Property && !property.computed) {
- if (property.key.type === experimental_utils_1.AST_NODE_TYPES.Identifier && property.key.name === 'key') {
- if (isStringLiteral(property.value)) {
- doubleQuotedStringLiterals.delete(property.value); //todo@joh reconsider
- key = property.value.value;
- break;
- }
- }
- }
- }
- }
- if (typeof key === 'string') {
- let array = externalizedStringLiterals.get(key);
- if (!array) {
- array = [];
- externalizedStringLiterals.set(key, array);
- }
- array.push({ call: node, message: messageNode });
- }
- // (2)
- // remove message-argument from doubleQuoted list and make
- // sure it is a string-literal
- doubleQuotedStringLiterals.delete(messageNode);
- if (!isStringLiteral(messageNode)) {
- context.report({
- loc: messageNode.loc,
- messageId: 'badMessage',
- data: { message: context.getSourceCode().getText(node) }
- });
- }
- }
- function reportBadStringsAndBadKeys() {
- // (1)
- // report all strings that are in double quotes
- for (const node of doubleQuotedStringLiterals) {
- context.report({ loc: node.loc, messageId: 'doubleQuoted' });
- }
- for (const [key, values] of externalizedStringLiterals) {
- // (2)
- // report all invalid NLS keys
- if (!key.match(NoUnexternalizedStrings._rNlsKeys)) {
- for (let value of values) {
- context.report({ loc: value.call.loc, messageId: 'badKey', data: { key } });
- }
- }
- // (2)
- // report all invalid duplicates (same key, different message)
- if (values.length > 1) {
- for (let i = 1; i < values.length; i++) {
- if (context.getSourceCode().getText(values[i - 1].message) !== context.getSourceCode().getText(values[i].message)) {
- context.report({ loc: values[i].call.loc, messageId: 'duplicateKey', data: { key } });
- }
- }
- }
- }
- }
- return {
- ['Literal']: (node) => collectDoubleQuotedStrings(node),
- ['ExpressionStatement[directive] Literal:exit']: (node) => doubleQuotedStringLiterals.delete(node),
- ['CallExpression[callee.type="MemberExpression"][callee.object.name="nls"][callee.property.name="localize"]:exit']: (node) => visitLocalizeCall(node),
- ['CallExpression[callee.name="localize"][arguments.length>=2]:exit']: (node) => visitLocalizeCall(node),
- ['Program:exit']: reportBadStringsAndBadKeys,
- };
- }
- },
- _a._rNlsKeys = /^[_a-zA-Z0-9][ .\-_a-zA-Z0-9]*$/,
- _a);
diff --git a/build/lib/eslint/code-no-unexternalized-strings.ts b/build/lib/eslint/code-no-unexternalized-strings.ts
index 29db884cd9f..8d9e142bb7f 100644
--- a/build/lib/eslint/code-no-unexternalized-strings.ts
+++ b/build/lib/eslint/code-no-unexternalized-strings.ts
@@ -47,7 +47,7 @@ export = new class NoUnexternalizedStrings implements eslint.Rule.RuleModule {
// extract key so that it can be checked later
let key: string | undefined;
if (isStringLiteral(keyNode)) {
- doubleQuotedStringLiterals.delete(keyNode); //todo@joh reconsider
+ doubleQuotedStringLiterals.delete(keyNode);
key = keyNode.value;
} else if (keyNode.type === AST_NODE_TYPES.ObjectExpression) {
@@ -55,7 +55,7 @@ export = new class NoUnexternalizedStrings implements eslint.Rule.RuleModule {
if (property.type === AST_NODE_TYPES.Property && !property.computed) {
if (property.key.type === AST_NODE_TYPES.Identifier && property.key.name === 'key') {
if (isStringLiteral(property.value)) {
- doubleQuotedStringLiterals.delete(property.value); //todo@joh reconsider
+ doubleQuotedStringLiterals.delete(property.value);
key = property.value.value;
break;
}
@@ -123,4 +123,3 @@ export = new class NoUnexternalizedStrings implements eslint.Rule.RuleModule {
};
}
};
-
diff --git a/build/lib/eslint/code-no-unused-expressions.js b/build/lib/eslint/code-no-unused-expressions.ts
similarity index 66%
rename from build/lib/eslint/code-no-unused-expressions.js
rename to build/lib/eslint/code-no-unused-expressions.ts
index c7b17551311..d130d670da5 100644
--- a/build/lib/eslint/code-no-unused-expressions.js
+++ b/build/lib/eslint/code-no-unused-expressions.ts
@@ -13,6 +13,10 @@
'use strict';
+import * as eslint from 'eslint';
+import { TSESTree } from '@typescript-eslint/experimental-utils';
+import * as ESTree from 'estree';
+
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
@@ -50,29 +54,29 @@ module.exports = {
]
},
- create(context) {
+ create(context: eslint.Rule.RuleContext) {
const config = context.options[0] || {},
allowShortCircuit = config.allowShortCircuit || false,
allowTernary = config.allowTernary || false,
allowTaggedTemplates = config.allowTaggedTemplates || false;
// eslint-disable-next-line jsdoc/require-description
- /**
- * @param {ASTNode} node any node
- * @returns {boolean} whether the given node structurally represents a directive
- */
- function looksLikeDirective(node) {
+ /**
+ * @param node any node
+ * @returns whether the given node structurally represents a directive
+ */
+ function looksLikeDirective(node: TSESTree.Node): boolean {
return node.type === 'ExpressionStatement' &&
node.expression.type === 'Literal' && typeof node.expression.value === 'string';
}
// eslint-disable-next-line jsdoc/require-description
- /**
- * @param {Function} predicate ([a] -> Boolean) the function used to make the determination
- * @param {a[]} list the input list
- * @returns {a[]} the leading sequence of members in the given list that pass the given predicate
- */
- function takeWhile(predicate, list) {
+ /**
+ * @param predicate ([a] -> Boolean) the function used to make the determination
+ * @param list the input list
+ * @returns the leading sequence of members in the given list that pass the given predicate
+ */
+ function takeWhile(predicate: (item: T) => boolean, list: T[]): T[] {
for (let i = 0; i < list.length; ++i) {
if (!predicate(list[i])) {
return list.slice(0, i);
@@ -82,21 +86,21 @@ module.exports = {
}
// eslint-disable-next-line jsdoc/require-description
- /**
- * @param {ASTNode} node a Program or BlockStatement node
- * @returns {ASTNode[]} the leading sequence of directive nodes in the given node's body
- */
- function directives(node) {
+ /**
+ * @param node a Program or BlockStatement node
+ * @returns the leading sequence of directive nodes in the given node's body
+ */
+ function directives(node: TSESTree.Program | TSESTree.BlockStatement): TSESTree.Node[] {
return takeWhile(looksLikeDirective, node.body);
}
// eslint-disable-next-line jsdoc/require-description
- /**
- * @param {ASTNode} node any node
- * @param {ASTNode[]} ancestors the given node's ancestors
- * @returns {boolean} whether the given node is considered a directive in its current position
- */
- function isDirective(node, ancestors) {
+ /**
+ * @param node any node
+ * @param ancestors the given node's ancestors
+ * @returns whether the given node is considered a directive in its current position
+ */
+ function isDirective(node: TSESTree.Node, ancestors: TSESTree.Node[]): boolean {
const parent = ancestors[ancestors.length - 1],
grandparent = ancestors[ancestors.length - 2];
@@ -105,12 +109,12 @@ module.exports = {
directives(parent).indexOf(node) >= 0;
}
- /**
- * Determines whether or not a given node is a valid expression. Recurses on short circuit eval and ternary nodes if enabled by flags.
- * @param {ASTNode} node any node
- * @returns {boolean} whether the given node is a valid expression
- */
- function isValidExpression(node) {
+ /**
+ * Determines whether or not a given node is a valid expression. Recurses on short circuit eval and ternary nodes if enabled by flags.
+ * @param node any node
+ * @returns whether the given node is a valid expression
+ */
+ function isValidExpression(node: TSESTree.Node): boolean {
if (allowTernary) {
// Recursive check for ternary and logical expressions
@@ -134,9 +138,9 @@ module.exports = {
}
return {
- ExpressionStatement(node) {
- if (!isValidExpression(node.expression) && !isDirective(node, context.getAncestors())) {
- context.report({ node, message: 'Expected an assignment or function call and instead saw an expression.' });
+ ExpressionStatement(node: TSESTree.ExpressionStatement) {
+ if (!isValidExpression(node.expression) && !isDirective(node, context.getAncestors())) {
+ context.report({ node: node, message: 'Expected an assignment or function call and instead saw an expression.' });
}
}
};
diff --git a/build/lib/eslint/code-translation-remind.js b/build/lib/eslint/code-translation-remind.js
deleted file mode 100644
index a276e7c0028..00000000000
--- a/build/lib/eslint/code-translation-remind.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-var _a;
-const fs_1 = require("fs");
-const utils_1 = require("./utils");
-module.exports = new (_a = class TranslationRemind {
- constructor() {
- this.meta = {
- messages: {
- missing: 'Please add \'{{resource}}\' to ./build/lib/i18n.resources.json file to use translations here.'
- }
- };
- }
- create(context) {
- return utils_1.createImportRuleListener((node, path) => this._checkImport(context, node, path));
- }
- _checkImport(context, node, path) {
- if (path !== TranslationRemind.NLS_MODULE) {
- return;
- }
- const currentFile = context.getFilename();
- const matchService = currentFile.match(/vs\/workbench\/services\/\w+/);
- const matchPart = currentFile.match(/vs\/workbench\/contrib\/\w+/);
- if (!matchService && !matchPart) {
- return;
- }
- const resource = matchService ? matchService[0] : matchPart[0];
- let resourceDefined = false;
- let json;
- try {
- json = fs_1.readFileSync('./build/lib/i18n.resources.json', 'utf8');
- }
- catch (e) {
- console.error('[translation-remind rule]: File with resources to pull from Transifex was not found. Aborting translation resource check for newly defined workbench part/service.');
- return;
- }
- const workbenchResources = JSON.parse(json).workbench;
- workbenchResources.forEach((existingResource) => {
- if (existingResource.name === resource) {
- resourceDefined = true;
- return;
- }
- });
- if (!resourceDefined) {
- context.report({
- loc: node.loc,
- messageId: 'missing',
- data: { resource }
- });
- }
- }
- },
- _a.NLS_MODULE = 'vs/nls',
- _a);
diff --git a/build/lib/eslint/utils.js b/build/lib/eslint/utils.js
deleted file mode 100644
index c58e4e24be1..00000000000
--- a/build/lib/eslint/utils.js
+++ /dev/null
@@ -1,37 +0,0 @@
-"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 });
-exports.createImportRuleListener = void 0;
-function createImportRuleListener(validateImport) {
- function _checkImport(node) {
- if (node && node.type === 'Literal' && typeof node.value === 'string') {
- validateImport(node, node.value);
- }
- }
- return {
- // import ??? from 'module'
- ImportDeclaration: (node) => {
- _checkImport(node.source);
- },
- // import('module').then(...) OR await import('module')
- ['CallExpression[callee.type="Import"][arguments.length=1] > Literal']: (node) => {
- _checkImport(node);
- },
- // import foo = ...
- ['TSImportEqualsDeclaration > TSExternalModuleReference > Literal']: (node) => {
- _checkImport(node);
- },
- // export ?? from 'module'
- ExportAllDeclaration: (node) => {
- _checkImport(node.source);
- },
- // export {foo} from 'module'
- ExportNamedDeclaration: (node) => {
- _checkImport(node.source);
- },
- };
-}
-exports.createImportRuleListener = createImportRuleListener;
diff --git a/build/lib/eslint/vscode-dts-create-func.js b/build/lib/eslint/vscode-dts-create-func.js
deleted file mode 100644
index 5a27bf51c80..00000000000
--- a/build/lib/eslint/vscode-dts-create-func.js
+++ /dev/null
@@ -1,35 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const experimental_utils_1 = require("@typescript-eslint/experimental-utils");
-module.exports = new class ApiLiteralOrTypes {
- constructor() {
- this.meta = {
- docs: { url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#creating-objects' },
- messages: { sync: '`createXYZ`-functions are constructor-replacements and therefore must return sync', }
- };
- }
- create(context) {
- return {
- ['TSDeclareFunction Identifier[name=/create.*/]']: (node) => {
- var _a;
- const decl = node.parent;
- if (((_a = decl.returnType) === null || _a === void 0 ? void 0 : _a.typeAnnotation.type) !== experimental_utils_1.AST_NODE_TYPES.TSTypeReference) {
- return;
- }
- if (decl.returnType.typeAnnotation.typeName.type !== experimental_utils_1.AST_NODE_TYPES.Identifier) {
- return;
- }
- const ident = decl.returnType.typeAnnotation.typeName.name;
- if (ident === 'Promise' || ident === 'Thenable') {
- context.report({
- node,
- messageId: 'sync'
- });
- }
- }
- };
- }
-};
diff --git a/build/lib/eslint/vscode-dts-event-naming.js b/build/lib/eslint/vscode-dts-event-naming.js
deleted file mode 100644
index 388ccf2f804..00000000000
--- a/build/lib/eslint/vscode-dts-event-naming.js
+++ /dev/null
@@ -1,87 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-var _a;
-const experimental_utils_1 = require("@typescript-eslint/experimental-utils");
-module.exports = new (_a = class ApiEventNaming {
- constructor() {
- this.meta = {
- docs: {
- url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#event-naming'
- },
- messages: {
- naming: 'Event names must follow this patten: `on[Did|Will]`',
- verb: 'Unknown verb \'{{verb}}\' - is this really a verb? Iff so, then add this verb to the configuration',
- subject: 'Unknown subject \'{{subject}}\' - This subject has not been used before but it should refer to something in the API',
- unknown: 'UNKNOWN event declaration, lint-rule needs tweaking'
- }
- };
- }
- create(context) {
- const config = context.options[0];
- const allowed = new Set(config.allowed);
- const verbs = new Set(config.verbs);
- return {
- ['TSTypeAnnotation TSTypeReference Identifier[name="Event"]']: (node) => {
- var _a, _b;
- const def = (_b = (_a = node.parent) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.parent;
- const ident = this.getIdent(def);
- if (!ident) {
- // event on unknown structure...
- return context.report({
- node,
- message: 'unknown'
- });
- }
- if (allowed.has(ident.name)) {
- // configured exception
- return;
- }
- const match = ApiEventNaming._nameRegExp.exec(ident.name);
- if (!match) {
- context.report({
- node: ident,
- messageId: 'naming'
- });
- return;
- }
- // check that is spelled out (configured) as verb
- if (!verbs.has(match[2].toLowerCase())) {
- context.report({
- node: ident,
- messageId: 'verb',
- data: { verb: match[2] }
- });
- }
- // check that a subject (if present) has occurred
- if (match[3]) {
- const regex = new RegExp(match[3], 'ig');
- const parts = context.getSourceCode().getText().split(regex);
- if (parts.length < 3) {
- context.report({
- node: ident,
- messageId: 'subject',
- data: { subject: match[3] }
- });
- }
- }
- }
- };
- }
- getIdent(def) {
- if (!def) {
- return;
- }
- if (def.type === experimental_utils_1.AST_NODE_TYPES.Identifier) {
- return def;
- }
- else if ((def.type === experimental_utils_1.AST_NODE_TYPES.TSPropertySignature || def.type === experimental_utils_1.AST_NODE_TYPES.ClassProperty) && def.key.type === experimental_utils_1.AST_NODE_TYPES.Identifier) {
- return def.key;
- }
- return this.getIdent(def.parent);
- }
- },
- _a._nameRegExp = /on(Did|Will)([A-Z][a-z]+)([A-Z][a-z]+)?/,
- _a);
diff --git a/build/lib/eslint/vscode-dts-interface-naming.js b/build/lib/eslint/vscode-dts-interface-naming.js
deleted file mode 100644
index 70ca810825b..00000000000
--- a/build/lib/eslint/vscode-dts-interface-naming.js
+++ /dev/null
@@ -1,30 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-var _a;
-module.exports = new (_a = class ApiInterfaceNaming {
- constructor() {
- this.meta = {
- messages: {
- naming: 'Interfaces must not be prefixed with uppercase `I`',
- }
- };
- }
- create(context) {
- return {
- ['TSInterfaceDeclaration Identifier']: (node) => {
- const name = node.name;
- if (ApiInterfaceNaming._nameRegExp.test(name)) {
- context.report({
- node,
- messageId: 'naming'
- });
- }
- }
- };
- }
- },
- _a._nameRegExp = /I[A-Z]/,
- _a);
diff --git a/build/lib/eslint/vscode-dts-literal-or-types.js b/build/lib/eslint/vscode-dts-literal-or-types.js
deleted file mode 100644
index 02e6de876ba..00000000000
--- a/build/lib/eslint/vscode-dts-literal-or-types.js
+++ /dev/null
@@ -1,23 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-module.exports = new class ApiLiteralOrTypes {
- constructor() {
- this.meta = {
- docs: { url: 'https://github.com/microsoft/vscode/wiki/Extension-API-guidelines#enums' },
- messages: { useEnum: 'Use enums, not literal-or-types', }
- };
- }
- create(context) {
- return {
- ['TSTypeAnnotation TSUnionType TSLiteralType']: (node) => {
- context.report({
- node: node,
- messageId: 'useEnum'
- });
- }
- };
- }
-};
diff --git a/build/lib/eslint/vscode-dts-literal-or-types.ts b/build/lib/eslint/vscode-dts-literal-or-types.ts
index 01a3eb21523..fe4befd84e7 100644
--- a/build/lib/eslint/vscode-dts-literal-or-types.ts
+++ b/build/lib/eslint/vscode-dts-literal-or-types.ts
@@ -15,6 +15,9 @@ export = new class ApiLiteralOrTypes implements eslint.Rule.RuleModule {
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['TSTypeAnnotation TSUnionType TSLiteralType']: (node: any) => {
+ if (node.literal?.type === 'TSNullKeyword') {
+ return;
+ }
context.report({
node: node,
messageId: 'useEnum'
diff --git a/build/lib/extensions.js b/build/lib/extensions.js
deleted file mode 100644
index 32c2f56b47c..00000000000
--- a/build/lib/extensions.js
+++ /dev/null
@@ -1,218 +0,0 @@
-"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 });
-exports.packageMarketplaceExtensionsStream = exports.packageLocalExtensionsStream = exports.fromMarketplace = void 0;
-const es = require("event-stream");
-const fs = require("fs");
-const glob = require("glob");
-const gulp = require("gulp");
-const path = require("path");
-const File = require("vinyl");
-const vsce = require("vsce");
-const stats_1 = require("./stats");
-const util2 = require("./util");
-const remote = require("gulp-remote-retry-src");
-const vzip = require('gulp-vinyl-zip');
-const filter = require("gulp-filter");
-const rename = require("gulp-rename");
-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 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');
- const input = fs.existsSync(webpackFilename)
- ? fromLocalWebpack(extensionPath)
- : fromLocalNormal(extensionPath);
- const tmLanguageJsonFilter = filter('**/*.tmLanguage.json', { restore: true });
- return input
- .pipe(tmLanguageJsonFilter)
- .pipe(buffer())
- .pipe(es.mapSync((f) => {
- f.contents = Buffer.from(JSON.stringify(JSON.parse(f.contents.toString('utf8'))));
- return f;
- }))
- .pipe(tmLanguageJsonFilter.restore);
-}
-function fromLocalWebpack(extensionPath) {
- const result = es.through();
- const packagedDependencies = [];
- const packageJsonConfig = require(path.join(extensionPath, 'package.json'));
- if (packageJsonConfig.dependencies) {
- const webpackRootConfig = require(path.join(extensionPath, 'extension.webpack.config.js'));
- for (const key in webpackRootConfig.externals) {
- if (key in packageJsonConfig.dependencies) {
- packagedDependencies.push(key);
- }
- }
- }
- vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn, packagedDependencies }).then(fileNames => {
- const files = fileNames
- .map(fileName => path.join(extensionPath, fileName))
- .map(filePath => new File({
- path: filePath,
- stat: fs.statSync(filePath),
- base: extensionPath,
- contents: fs.createReadStream(filePath)
- }));
- const filesStream = es.readArray(files);
- // check for a webpack configuration files, then invoke webpack
- // and merge its output with the files stream. also rewrite the package.json
- // file to a new entry point
- const webpackConfigLocations = glob.sync(path.join(extensionPath, '/**/extension.webpack.config.js'), { ignore: ['**/node_modules'] });
- const packageJsonFilter = filter(f => {
- if (path.basename(f.path) === 'package.json') {
- // only modify package.json's next to the webpack file.
- // to be safe, use existsSync instead of path comparison.
- return fs.existsSync(path.join(path.dirname(f.path), 'extension.webpack.config.js'));
- }
- return false;
- }, { restore: true });
- const patchFilesStream = filesStream
- .pipe(packageJsonFilter)
- .pipe(buffer())
- .pipe(json((data) => {
- if (data.main) {
- // hardcoded entry point directory!
- data.main = data.main.replace('/out/', /dist/);
- }
- return data;
- }))
- .pipe(packageJsonFilter.restore);
- const webpackStreams = webpackConfigLocations.map(webpackConfigPath => {
- const webpackDone = (err, stats) => {
- fancyLog(`Bundled extension: ${ansiColors.yellow(path.join(path.basename(extensionPath), path.relative(extensionPath, webpackConfigPath)))}...`);
- if (err) {
- result.emit('error', err);
- }
- const { compilation } = stats;
- if (compilation.errors.length > 0) {
- result.emit('error', compilation.errors.join('\n'));
- }
- if (compilation.warnings.length > 0) {
- result.emit('error', compilation.warnings.join('\n'));
- }
- };
- const webpackConfig = Object.assign(Object.assign({}, require(webpackConfigPath)), { mode: 'production' });
- const relativeOutputPath = path.relative(extensionPath, webpackConfig.output.path);
- return webpackGulp(webpackConfig, webpack, webpackDone)
- .pipe(es.through(function (data) {
- data.stat = data.stat || {};
- data.base = extensionPath;
- this.emit('data', data);
- }))
- .pipe(es.through(function (data) {
- // source map handling:
- // * rewrite sourceMappingURL
- // * save to disk so that upload-task picks this up
- 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(...webpackStreams, patchFilesStream)
- // .pipe(es.through(function (data) {
- // // debug
- // console.log('out', data.path, data.contents.length);
- // this.emit('data', data);
- // }))
- .pipe(result);
- }).catch(err => {
- console.error(extensionPath);
- console.error(packagedDependencies);
- result.emit('error', err);
- });
- return result.pipe(stats_1.createStatsStream(path.basename(extensionPath)));
-}
-function fromLocalNormal(extensionPath) {
- const result = es.through();
- vsce.listFiles({ cwd: extensionPath, packageManager: vsce.PackageManager.Yarn })
- .then(fileNames => {
- const files = fileNames
- .map(fileName => path.join(extensionPath, fileName))
- .map(filePath => new File({
- path: filePath,
- stat: fs.statSync(filePath),
- base: extensionPath,
- contents: fs.createReadStream(filePath)
- }));
- es.readArray(files).pipe(result);
- })
- .catch(err => result.emit('error', err));
- return result.pipe(stats_1.createStatsStream(path.basename(extensionPath)));
-}
-const baseHeaders = {
- 'X-Market-Client-Id': 'VSCode Build',
- 'User-Agent': 'VSCode Build',
- 'X-Market-User-Id': '291C1CD0-051A-4123-9B4B-30D60EF52EE2',
-};
-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`;
- fancyLog('Downloading extension:', ansiColors.yellow(`${extensionName}@${version}`), '...');
- const options = {
- base: url,
- requestOptions: {
- gzip: true,
- headers: baseHeaders
- }
- };
- const packageJsonFilter = filter('package.json', { restore: true });
- return remote('', options)
- .pipe(vzip.src())
- .pipe(filter('extension/**'))
- .pipe(rename(p => p.dirname = p.dirname.replace(/^extension\/?/, '')))
- .pipe(packageJsonFilter)
- .pipe(buffer())
- .pipe(json({ __metadata: metadata }))
- .pipe(packageJsonFilter.restore);
-}
-exports.fromMarketplace = fromMarketplace;
-const excludedExtensions = [
- 'vscode-api-tests',
- 'vscode-web-playground',
- 'vscode-colorize-tests',
- 'vscode-test-resolver',
- 'ms-vscode.node-debug',
- 'ms-vscode.node-debug2',
- 'vscode-notebook-tests'
-];
-const builtInExtensions = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8')).builtInExtensions;
-function packageLocalExtensionsStream() {
- const localExtensionDescriptions = glob.sync('extensions/*/package.json')
- .map(manifestPath => {
- const extensionPath = path.dirname(path.join(root, manifestPath));
- const extensionName = path.basename(extensionPath);
- return { name: extensionName, path: extensionPath };
- })
- .filter(({ name }) => excludedExtensions.indexOf(name) === -1)
- .filter(({ name }) => builtInExtensions.every(b => b.name !== name));
- 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 es.merge(extensions)
- .pipe(util2.setExecutableBit(['**/*.sh']));
-}
-exports.packageMarketplaceExtensionsStream = packageMarketplaceExtensionsStream;
diff --git a/build/lib/extensions.ts b/build/lib/extensions.ts
index c6f54bfb354..dac71c81479 100644
--- a/build/lib/extensions.ts
+++ b/build/lib/extensions.ts
@@ -21,6 +21,7 @@ import * as fancyLog from 'fancy-log';
import * as ansiColors from 'ansi-colors';
const buffer = require('gulp-buffer');
import json = require('gulp-json-editor');
+import * as jsoncParser from 'jsonc-parser';
const webpack = require('webpack');
const webpackGulp = require('webpack-stream');
const util = require('./util');
@@ -28,31 +29,67 @@ 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: string): Stream {
- const webpackFilename = path.join(extensionPath, 'extension.webpack.config.js');
- const input = fs.existsSync(webpackFilename)
- ? fromLocalWebpack(extensionPath)
- : fromLocalNormal(extensionPath);
-
- const tmLanguageJsonFilter = filter('**/*.tmLanguage.json', { restore: true });
-
+function minifyExtensionResources(input: Stream): Stream {
+ const jsonFilter = filter(['**/*.json', '**/*.code-snippets'], { restore: true });
return input
- .pipe(tmLanguageJsonFilter)
+ .pipe(jsonFilter)
.pipe(buffer())
.pipe(es.mapSync((f: File) => {
- f.contents = Buffer.from(JSON.stringify(JSON.parse(f.contents.toString('utf8'))));
+ const errors: jsoncParser.ParseError[] = [];
+ const value = jsoncParser.parse(f.contents.toString('utf8'), errors);
+ if (errors.length === 0) {
+ // file parsed OK => just stringify to drop whitespace and comments
+ f.contents = Buffer.from(JSON.stringify(value));
+ }
return f;
}))
- .pipe(tmLanguageJsonFilter.restore);
+ .pipe(jsonFilter.restore);
}
-function fromLocalWebpack(extensionPath: string): Stream {
+function updateExtensionPackageJSON(input: Stream, update: (data: any) => any): Stream {
+ const packageJsonFilter = filter('extensions/*/package.json', { restore: true });
+ return input
+ .pipe(packageJsonFilter)
+ .pipe(buffer())
+ .pipe(es.mapSync((f: File) => {
+ const data = JSON.parse(f.contents.toString('utf8'));
+ f.contents = Buffer.from(JSON.stringify(update(data)));
+ return f;
+ }))
+ .pipe(packageJsonFilter.restore);
+}
+
+function fromLocal(extensionPath: string, forWeb: boolean): Stream {
+ const webpackConfigFileName = forWeb ? 'extension-browser.webpack.config.js' : 'extension.webpack.config.js';
+
+ const isWebPacked = fs.existsSync(path.join(extensionPath, webpackConfigFileName));
+ let input = isWebPacked
+ ? fromLocalWebpack(extensionPath, webpackConfigFileName)
+ : fromLocalNormal(extensionPath);
+
+ if (isWebPacked) {
+ input = updateExtensionPackageJSON(input, (data: any) => {
+ delete data.scripts;
+ delete data.dependencies;
+ delete data.devDependencies;
+ if (data.main) {
+ data.main = data.main.replace('/out/', /dist/);
+ }
+ return data;
+ });
+ }
+
+ return input;
+}
+
+
+function fromLocalWebpack(extensionPath: string, webpackConfigFileName: string): Stream {
const result = es.through();
const packagedDependencies: string[] = [];
const packageJsonConfig = require(path.join(extensionPath, 'package.json'));
if (packageJsonConfig.dependencies) {
- const webpackRootConfig = require(path.join(extensionPath, 'extension.webpack.config.js'));
+ const webpackRootConfig = require(path.join(extensionPath, webpackConfigFileName));
for (const key in webpackRootConfig.externals) {
if (key in packageJsonConfig.dependencies) {
packagedDependencies.push(key);
@@ -70,38 +107,13 @@ function fromLocalWebpack(extensionPath: string): Stream {
contents: fs.createReadStream(filePath) as any
}));
- const filesStream = es.readArray(files);
-
// check for a webpack configuration files, then invoke webpack
- // and merge its output with the files stream. also rewrite the package.json
- // file to a new entry point
+ // and merge its output with the files stream.
const webpackConfigLocations = (glob.sync(
- path.join(extensionPath, '/**/extension.webpack.config.js'),
+ path.join(extensionPath, '**', webpackConfigFileName),
{ ignore: ['**/node_modules'] }
));
- const packageJsonFilter = filter(f => {
- if (path.basename(f.path) === 'package.json') {
- // only modify package.json's next to the webpack file.
- // to be safe, use existsSync instead of path comparison.
- return fs.existsSync(path.join(path.dirname(f.path), 'extension.webpack.config.js'));
- }
- return false;
- }, { restore: true });
-
- const patchFilesStream = filesStream
- .pipe(packageJsonFilter)
- .pipe(buffer())
- .pipe(json((data: any) => {
- if (data.main) {
- // hardcoded entry point directory!
- data.main = data.main.replace('/out/', /dist/);
- }
- return data;
- }))
- .pipe(packageJsonFilter.restore);
-
-
const webpackStreams = webpackConfigLocations.map(webpackConfigPath => {
const webpackDone = (err: any, stats: any) => {
@@ -143,7 +155,7 @@ function fromLocalWebpack(extensionPath: string): Stream {
}));
});
- es.merge(...webpackStreams, patchFilesStream)
+ es.merge(...webpackStreams, es.readArray(files))
// .pipe(es.through(function (data) {
// // debug
// console.log('out', data.path, data.contents.length);
@@ -212,15 +224,18 @@ export function fromMarketplace(extensionName: string, version: string, metadata
.pipe(json({ __metadata: metadata }))
.pipe(packageJsonFilter.restore);
}
-
const excludedExtensions = [
'vscode-api-tests',
- 'vscode-web-playground',
'vscode-colorize-tests',
'vscode-test-resolver',
'ms-vscode.node-debug',
'ms-vscode.node-debug2',
- 'vscode-notebook-tests'
+ 'vscode-notebook-tests',
+ 'vscode-custom-editor-tests',
+];
+
+const marketplaceWebExtensions = [
+ 'ms-vscode.references-view'
];
interface IBuiltInExtension {
@@ -230,34 +245,153 @@ interface IBuiltInExtension {
metadata: any;
}
-const builtInExtensions: IBuiltInExtension[] = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8')).builtInExtensions;
+const productJson = JSON.parse(fs.readFileSync(path.join(__dirname, '../../product.json'), 'utf8'));
+const builtInExtensions: IBuiltInExtension[] = productJson.builtInExtensions || [];
+const webBuiltInExtensions: IBuiltInExtension[] = productJson.webBuiltInExtensions || [];
-export function packageLocalExtensionsStream(): NodeJS.ReadWriteStream {
- const localExtensionDescriptions = (glob.sync('extensions/*/package.json'))
- .map(manifestPath => {
- const extensionPath = path.dirname(path.join(root, manifestPath));
- const extensionName = path.basename(extensionPath);
- return { name: extensionName, path: extensionPath };
- })
- .filter(({ name }) => excludedExtensions.indexOf(name) === -1)
- .filter(({ name }) => builtInExtensions.every(b => b.name !== name));
-
- 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']));
+type ExtensionKind = 'ui' | 'workspace' | 'web';
+interface IExtensionManifest {
+ main: string;
+ browser: string;
+ extensionKind?: ExtensionKind | ExtensionKind[];
+}
+/**
+ * Loosely based on `getExtensionKind` from `src/vs/workbench/services/extensions/common/extensionsUtil.ts`
+ */
+function isWebExtension(manifest: IExtensionManifest): boolean {
+ if (typeof manifest.extensionKind !== 'undefined') {
+ const extensionKind = Array.isArray(manifest.extensionKind) ? manifest.extensionKind : [manifest.extensionKind];
+ return (extensionKind.indexOf('web') >= 0);
+ }
+ return (!Boolean(manifest.main) || Boolean(manifest.browser));
}
-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}`));
- });
+export function packageLocalExtensionsStream(forWeb: boolean): Stream {
+ const localExtensionsDescriptions = (
+ (glob.sync('extensions/*/package.json'))
+ .map(manifestPath => {
+ const absoluteManifestPath = path.join(root, manifestPath);
+ const extensionPath = path.dirname(path.join(root, manifestPath));
+ const extensionName = path.basename(extensionPath);
+ return { name: extensionName, path: extensionPath, manifestPath: absoluteManifestPath };
+ })
+ .filter(({ name }) => excludedExtensions.indexOf(name) === -1)
+ .filter(({ name }) => builtInExtensions.every(b => b.name !== name))
+ .filter(({ manifestPath }) => (forWeb ? isWebExtension(require(manifestPath)) : true))
+ );
+ const localExtensionsStream = minifyExtensionResources(
+ es.merge(
+ ...localExtensionsDescriptions.map(extension => {
+ return fromLocal(extension.path, forWeb)
+ .pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
+ })
+ )
+ );
- return es.merge(extensions)
- .pipe(util2.setExecutableBit(['**/*.sh']));
+ let result: Stream;
+ if (forWeb) {
+ result = localExtensionsStream;
+ } else {
+ // also include shared node modules
+ result = es.merge(localExtensionsStream, gulp.src('extensions/node_modules/**', { base: '.' }));
+ }
+
+ return (
+ result
+ .pipe(util2.setExecutableBit(['**/*.sh']))
+ );
+}
+
+export function packageMarketplaceExtensionsStream(forWeb: boolean): Stream {
+ const marketplaceExtensionsDescriptions = [
+ ...builtInExtensions.filter(({ name }) => (forWeb ? marketplaceWebExtensions.indexOf(name) >= 0 : true)),
+ ...(forWeb ? webBuiltInExtensions : [])
+ ];
+ const marketplaceExtensionsStream = minifyExtensionResources(
+ es.merge(
+ ...marketplaceExtensionsDescriptions
+ .map(extension => {
+ const input = fromMarketplace(extension.name, extension.version, extension.metadata)
+ .pipe(rename(p => p.dirname = `extensions/${extension.name}/${p.dirname}`));
+ return updateExtensionPackageJSON(input, (data: any) => {
+ delete data.scripts;
+ delete data.dependencies;
+ delete data.devDependencies;
+ return data;
+ });
+ })
+ )
+ );
+
+ return (
+ marketplaceExtensionsStream
+ .pipe(util2.setExecutableBit(['**/*.sh']))
+ );
+}
+
+export interface IScannedBuiltinExtension {
+ extensionPath: string;
+ packageJSON: any;
+ packageNLS?: any;
+ readmePath?: string;
+ changelogPath?: string;
+}
+
+export function scanBuiltinExtensions(extensionsRoot: string, exclude: string[] = []): IScannedBuiltinExtension[] {
+ const scannedExtensions: IScannedBuiltinExtension[] = [];
+
+ try {
+ const extensionsFolders = fs.readdirSync(extensionsRoot);
+ for (const extensionFolder of extensionsFolders) {
+ if (exclude.indexOf(extensionFolder) >= 0) {
+ continue;
+ }
+ const packageJSONPath = path.join(extensionsRoot, extensionFolder, 'package.json');
+ if (!fs.existsSync(packageJSONPath)) {
+ continue;
+ }
+ let packageJSON = JSON.parse(fs.readFileSync(packageJSONPath).toString('utf8'));
+ if (!isWebExtension(packageJSON)) {
+ continue;
+ }
+ const children = fs.readdirSync(path.join(extensionsRoot, extensionFolder));
+ const packageNLSPath = children.filter(child => child === 'package.nls.json')[0];
+ const packageNLS = packageNLSPath ? JSON.parse(fs.readFileSync(path.join(extensionsRoot, extensionFolder, packageNLSPath)).toString()) : undefined;
+ const readme = children.filter(child => /^readme(\.txt|\.md|)$/i.test(child))[0];
+ const changelog = children.filter(child => /^changelog(\.txt|\.md|)$/i.test(child))[0];
+
+ scannedExtensions.push({
+ extensionPath: extensionFolder,
+ packageJSON,
+ packageNLS,
+ readmePath: readme ? path.join(extensionFolder, readme) : undefined,
+ changelogPath: changelog ? path.join(extensionFolder, changelog) : undefined,
+ });
+ }
+ return scannedExtensions;
+ } catch (ex) {
+ return scannedExtensions;
+ }
+}
+
+export function translatePackageJSON(packageJSON: string, packageNLSPath: string) {
+ const CharCode_PC = '%'.charCodeAt(0);
+ const packageNls = JSON.parse(fs.readFileSync(packageNLSPath).toString());
+ const translate = (obj: any) => {
+ for (let key in obj) {
+ const val = obj[key];
+ if (Array.isArray(val)) {
+ val.forEach(translate);
+ } else if (val && typeof val === 'object') {
+ translate(val);
+ } else if (typeof val === 'string' && val.charCodeAt(0) === CharCode_PC && val.charCodeAt(val.length - 1) === CharCode_PC) {
+ const translated = packageNls[val.substr(1, val.length - 2)];
+ if (translated) {
+ obj[key] = translated;
+ }
+ }
+ }
+ };
+ translate(packageJSON);
+ return packageJSON;
}
diff --git a/build/lib/git.js b/build/lib/git.js
deleted file mode 100644
index 1726f76fcc7..00000000000
--- a/build/lib/git.js
+++ /dev/null
@@ -1,54 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getVersion = void 0;
-const path = require("path");
-const fs = require("fs");
-/**
- * Returns the sha1 commit version of a repository or undefined in case of failure.
- */
-function getVersion(repo) {
- const git = path.join(repo, '.git');
- const headPath = path.join(git, 'HEAD');
- let head;
- try {
- head = fs.readFileSync(headPath, 'utf8').trim();
- }
- catch (e) {
- return undefined;
- }
- if (/^[0-9a-f]{40}$/i.test(head)) {
- return head;
- }
- const refMatch = /^ref: (.*)$/.exec(head);
- if (!refMatch) {
- return undefined;
- }
- const ref = refMatch[1];
- const refPath = path.join(git, ref);
- try {
- return fs.readFileSync(refPath, 'utf8').trim();
- }
- catch (e) {
- // noop
- }
- const packedRefsPath = path.join(git, 'packed-refs');
- let refsRaw;
- try {
- refsRaw = fs.readFileSync(packedRefsPath, 'utf8').trim();
- }
- catch (e) {
- return undefined;
- }
- const refsRegex = /^([0-9a-f]{40})\s+(.+)$/gm;
- let refsMatch;
- let refs = {};
- while (refsMatch = refsRegex.exec(refsRaw)) {
- refs[refsMatch[2]] = refsMatch[1];
- }
- return refs[ref];
-}
-exports.getVersion = getVersion;
diff --git a/build/lib/i18n.js b/build/lib/i18n.js
deleted file mode 100644
index 2e7415cd721..00000000000
--- a/build/lib/i18n.js
+++ /dev/null
@@ -1,1211 +0,0 @@
-"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 });
-exports.prepareIslFiles = exports.prepareI18nPackFiles = exports.pullI18nPackFiles = exports.prepareI18nFiles = exports.pullSetupXlfFiles = exports.pullCoreAndExtensionsXlfFiles = exports.findObsoleteResources = exports.pushXlfFiles = exports.createXlfFilesForIsl = exports.createXlfFilesForExtensions = exports.createXlfFilesForCoreBundle = exports.getResource = exports.processNlsFiles = exports.Limiter = exports.XLF = exports.Line = exports.externalExtensionsWithTranslations = exports.extraLanguages = exports.defaultLanguages = void 0;
-const path = require("path");
-const fs = require("fs");
-const event_stream_1 = require("event-stream");
-const File = require("vinyl");
-const Is = require("is");
-const xml2js = require("xml2js");
-const glob = require("glob");
-const https = require("https");
-const gulp = require("gulp");
-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) {
- fancyLog(ansiColors.green('[i18n]'), message, ...rest);
-}
-exports.defaultLanguages = [
- { 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' },
- { id: 'fr', folderName: 'fra' },
- { id: 'es', folderName: 'esn' },
- { id: 'ru', folderName: 'rus' },
- { id: 'it', folderName: 'ita' }
-];
-// languages requested by the community to non-stable builds
-exports.extraLanguages = [
- { id: 'pt-br', folderName: 'ptb' },
- { id: 'hu', folderName: 'hun' },
- { id: 'tr', folderName: 'trk' }
-];
-// non built-in extensions also that are transifex and need to be part of the language packs
-exports.externalExtensionsWithTranslations = {
- 'vscode-chrome-debug': 'msjsdiag.debugger-for-chrome',
- 'vscode-node-debug': 'ms-vscode.node-debug',
- 'vscode-node-debug2': 'ms-vscode.node-debug2'
-};
-var LocalizeInfo;
-(function (LocalizeInfo) {
- function is(value) {
- let candidate = value;
- return Is.defined(candidate) && Is.string(candidate.key) && (Is.undef(candidate.comment) || (Is.array(candidate.comment) && candidate.comment.every(element => Is.string(element))));
- }
- LocalizeInfo.is = is;
-})(LocalizeInfo || (LocalizeInfo = {}));
-var BundledFormat;
-(function (BundledFormat) {
- function is(value) {
- if (Is.undef(value)) {
- return false;
- }
- let candidate = value;
- let length = Object.keys(value).length;
- return length === 3 && Is.defined(candidate.keys) && Is.defined(candidate.messages) && Is.defined(candidate.bundles);
- }
- BundledFormat.is = is;
-})(BundledFormat || (BundledFormat = {}));
-var PackageJsonFormat;
-(function (PackageJsonFormat) {
- function is(value) {
- if (Is.undef(value) || !Is.object(value)) {
- return false;
- }
- return Object.keys(value).every(key => {
- let element = value[key];
- return Is.string(element) || (Is.object(element) && Is.defined(element.message) && Is.defined(element.comment));
- });
- }
- PackageJsonFormat.is = is;
-})(PackageJsonFormat || (PackageJsonFormat = {}));
-class Line {
- constructor(indent = 0) {
- this.buffer = [];
- if (indent > 0) {
- this.buffer.push(new Array(indent + 1).join(' '));
- }
- }
- append(value) {
- this.buffer.push(value);
- return this;
- }
- toString() {
- return this.buffer.join('');
- }
-}
-exports.Line = Line;
-class TextModel {
- constructor(contents) {
- this._lines = contents.split(/\r\n|\r|\n/);
- }
- get lines() {
- return this._lines;
- }
-}
-let XLF = /** @class */ (() => {
- class XLF {
- constructor(project) {
- this.project = project;
- this.buffer = [];
- this.files = Object.create(null);
- this.numberOfMessages = 0;
- }
- toString() {
- this.appendHeader();
- for (let file in this.files) {
- this.appendNewLine(``, 2);
- for (let item of this.files[file]) {
- this.addStringItem(file, item);
- }
- this.appendNewLine('', 2);
- }
- this.appendFooter();
- return this.buffer.join('\r\n');
- }
- addFile(original, keys, messages) {
- if (keys.length === 0) {
- console.log('No keys in ' + original);
- return;
- }
- if (keys.length !== messages.length) {
- throw new Error(`Unmatching keys(${keys.length}) and messages(${messages.length}).`);
- }
- this.numberOfMessages += keys.length;
- this.files[original] = [];
- let existingKeys = new Set();
- for (let i = 0; i < keys.length; i++) {
- let key = keys[i];
- let realKey;
- let comment;
- if (Is.string(key)) {
- realKey = key;
- comment = undefined;
- }
- else if (LocalizeInfo.is(key)) {
- realKey = key.key;
- if (key.comment && key.comment.length > 0) {
- comment = key.comment.map(comment => encodeEntities(comment)).join('\r\n');
- }
- }
- if (!realKey || existingKeys.has(realKey)) {
- continue;
- }
- existingKeys.add(realKey);
- let message = encodeEntities(messages[i]);
- this.files[original].push({ id: realKey, message: message, comment: comment });
- }
- }
- addStringItem(file, item) {
- if (!item.id || item.message === undefined || item.message === null) {
- throw new Error(`No item ID or value specified: ${JSON.stringify(item)}. File: ${file}`);
- }
- if (item.message.length === 0) {
- log(`Item with id ${item.id} in file ${file} has an empty message.`);
- }
- this.appendNewLine(``, 4);
- this.appendNewLine(`${item.message}`, 6);
- if (item.comment) {
- this.appendNewLine(`${item.comment}`, 6);
- }
- this.appendNewLine('', 4);
- }
- appendHeader() {
- this.appendNewLine('', 0);
- this.appendNewLine('', 0);
- }
- appendFooter() {
- this.appendNewLine('', 0);
- }
- appendNewLine(content, indent) {
- let line = new Line(indent);
- line.append(content);
- this.buffer.push(line.toString());
- }
- }
- XLF.parsePseudo = function (xlfString) {
- return new Promise((resolve) => {
- let parser = new xml2js.Parser();
- let files = [];
- parser.parseString(xlfString, function (_err, result) {
- const fileNodes = result['xliff']['file'];
- fileNodes.forEach(file => {
- const originalFilePath = file.$.original;
- const messages = {};
- const transUnits = file.body[0]['trans-unit'];
- if (transUnits) {
- transUnits.forEach((unit) => {
- const key = unit.$.id;
- const val = pseudify(unit.source[0]['_'].toString());
- if (key && val) {
- messages[key] = decodeEntities(val);
- }
- });
- files.push({ messages: messages, originalFilePath: originalFilePath, language: 'ps' });
- }
- });
- resolve(files);
- });
- });
- };
- XLF.parse = function (xlfString) {
- return new Promise((resolve, reject) => {
- let parser = new xml2js.Parser();
- let files = [];
- parser.parseString(xlfString, function (err, result) {
- if (err) {
- reject(new Error(`XLF parsing error: Failed to parse XLIFF string. ${err}`));
- }
- const fileNodes = result['xliff']['file'];
- if (!fileNodes) {
- reject(new Error(`XLF parsing error: XLIFF file does not contain "xliff" or "file" node(s) required for parsing.`));
- }
- fileNodes.forEach((file) => {
- const originalFilePath = file.$.original;
- if (!originalFilePath) {
- reject(new Error(`XLF parsing error: XLIFF file node does not contain original attribute to determine the original location of the resource file.`));
- }
- let language = file.$['target-language'];
- if (!language) {
- reject(new Error(`XLF parsing error: XLIFF file node does not contain target-language attribute to determine translated language.`));
- }
- const messages = {};
- const transUnits = file.body[0]['trans-unit'];
- if (transUnits) {
- transUnits.forEach((unit) => {
- const key = unit.$.id;
- if (!unit.target) {
- return; // No translation available
- }
- let val = unit.target[0];
- if (typeof val !== 'string') {
- val = val._;
- }
- if (key && val) {
- messages[key] = decodeEntities(val);
- }
- else {
- reject(new Error(`XLF parsing error: XLIFF file ${originalFilePath} does not contain full localization data. ID or target translation for one of the trans-unit nodes is not present.`));
- }
- });
- files.push({ messages: messages, originalFilePath: originalFilePath, language: language.toLowerCase() });
- }
- });
- resolve(files);
- });
- });
- };
- return XLF;
-})();
-exports.XLF = XLF;
-class Limiter {
- constructor(maxDegreeOfParalellism) {
- this.maxDegreeOfParalellism = maxDegreeOfParalellism;
- this.outstandingPromises = [];
- this.runningPromises = 0;
- }
- queue(factory) {
- return new Promise((c, e) => {
- this.outstandingPromises.push({ factory, c, e });
- this.consume();
- });
- }
- consume() {
- while (this.outstandingPromises.length && this.runningPromises < this.maxDegreeOfParalellism) {
- const iLimitedTask = this.outstandingPromises.shift();
- this.runningPromises++;
- const promise = iLimitedTask.factory();
- promise.then(iLimitedTask.c).catch(iLimitedTask.e);
- promise.then(() => this.consumed()).catch(() => this.consumed());
- }
- }
- consumed() {
- this.runningPromises--;
- this.consume();
- }
-}
-exports.Limiter = Limiter;
-function sortLanguages(languages) {
- return languages.sort((a, b) => {
- return a.id < b.id ? -1 : (a.id > b.id ? 1 : 0);
- });
-}
-function stripComments(content) {
- /**
- * First capturing group matches double quoted string
- * Second matches single quotes string
- * Third matches block comments
- * Fourth matches line comments
- */
- const regexp = /("(?:[^\\\"]*(?:\\.)?)*")|('(?:[^\\\']*(?:\\.)?)*')|(\/\*(?:\r?\n|.)*?\*\/)|(\/{2,}.*?(?:(?:\r?\n)|$))/g;
- let result = content.replace(regexp, (match, _m1, _m2, m3, m4) => {
- // Only one of m1, m2, m3, m4 matches
- if (m3) {
- // A block comment. Replace with nothing
- return '';
- }
- else if (m4) {
- // A line comment. If it ends in \r?\n then keep it.
- let length = m4.length;
- if (length > 2 && m4[length - 1] === '\n') {
- return m4[length - 2] === '\r' ? '\r\n' : '\n';
- }
- else {
- return '';
- }
- }
- else {
- // We match a string
- return match;
- }
- });
- return result;
-}
-function escapeCharacters(value) {
- const result = [];
- for (let i = 0; i < value.length; i++) {
- const ch = value.charAt(i);
- switch (ch) {
- case '\'':
- result.push('\\\'');
- break;
- case '"':
- result.push('\\"');
- break;
- case '\\':
- result.push('\\\\');
- break;
- case '\n':
- result.push('\\n');
- break;
- case '\r':
- result.push('\\r');
- break;
- case '\t':
- result.push('\\t');
- break;
- case '\b':
- result.push('\\b');
- break;
- case '\f':
- result.push('\\f');
- break;
- default:
- result.push(ch);
- }
- }
- return result.join('');
-}
-function processCoreBundleFormat(fileHeader, languages, json, emitter) {
- let keysSection = json.keys;
- let messageSection = json.messages;
- let bundleSection = json.bundles;
- let statistics = Object.create(null);
- let defaultMessages = Object.create(null);
- let modules = Object.keys(keysSection);
- modules.forEach((module) => {
- let keys = keysSection[module];
- let messages = messageSection[module];
- if (!messages || keys.length !== messages.length) {
- emitter.emit('error', `Message for module ${module} corrupted. Mismatch in number of keys and messages.`);
- return;
- }
- let messageMap = Object.create(null);
- defaultMessages[module] = messageMap;
- keys.map((key, i) => {
- if (typeof key === 'string') {
- messageMap[key] = messages[i];
- }
- else {
- messageMap[key.key] = messages[i];
- }
- });
- });
- 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']) {
- log(`Generating nls bundles for: ${language.id}`);
- }
- statistics[language.id] = 0;
- let localizedModules = Object.create(null);
- 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 moduleMessage;
- 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.`);
- }
- moduleMessage = defaultMessages[module];
- statistics[language.id] = statistics[language.id] + Object.keys(moduleMessage).length;
- }
- let localizedMessages = [];
- order.forEach((keyInfo) => {
- let key = null;
- if (typeof keyInfo === 'string') {
- key = keyInfo;
- }
- else {
- key = keyInfo.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.`);
- }
- message = defaultMessages[module][key];
- statistics[language.id] = statistics[language.id] + 1;
- }
- localizedMessages.push(message);
- });
- localizedModules[module] = localizedMessages;
- });
- Object.keys(bundleSection).forEach((bundle) => {
- let modules = bundleSection[bundle];
- let contents = [
- fileHeader,
- `define("${bundle}.nls.${language.id}", {`
- ];
- modules.forEach((module, index) => {
- contents.push(`\t"${module}": [`);
- let messages = localizedModules[module];
- if (!messages) {
- emitter.emit('error', `Didn't find messages for module ${module}.`);
- return;
- }
- messages.forEach((message, index) => {
- contents.push(`\t\t"${escapeCharacters(message)}${index < messages.length ? '",' : '"'}`);
- });
- contents.push(index < modules.length - 1 ? '\t],' : '\t]');
- });
- contents.push('});');
- emitter.queue(new File({ path: bundle + '.nls.' + language.id + '.js', contents: Buffer.from(contents.join('\n'), 'utf-8') }));
- });
- });
- Object.keys(statistics).forEach(key => {
- let value = statistics[key];
- log(`${key} has ${value} untranslated strings.`);
- });
- sortedLanguages.forEach(language => {
- let stats = statistics[language.id];
- if (Is.undef(stats)) {
- log(`\tNo translations found for language ${language.id}. Using default language instead.`);
- }
- });
-}
-function processNlsFiles(opts) {
- return event_stream_1.through(function (file) {
- let fileName = path.basename(file.path);
- if (fileName === 'nls.metadata.json') {
- let json = null;
- if (file.isBuffer()) {
- json = JSON.parse(file.contents.toString('utf8'));
- }
- else {
- this.emit('error', `Failed to read component file: ${file.relative}`);
- return;
- }
- if (BundledFormat.is(json)) {
- processCoreBundleFormat(opts.fileHeader, opts.languages, json, this);
- }
- }
- this.queue(file);
- });
-}
-exports.processNlsFiles = processNlsFiles;
-const editorProject = 'vscode-editor', workbenchProject = 'vscode-workbench', extensionsProject = 'vscode-extensions', setupProject = 'vscode-setup';
-function getResource(sourceFile) {
- let resource;
- if (/^vs\/platform/.test(sourceFile)) {
- return { name: 'vs/platform', project: editorProject };
- }
- else if (/^vs\/editor\/contrib/.test(sourceFile)) {
- return { name: 'vs/editor/contrib', project: editorProject };
- }
- else if (/^vs\/editor/.test(sourceFile)) {
- return { name: 'vs/editor', project: editorProject };
- }
- else if (/^vs\/base/.test(sourceFile)) {
- return { name: 'vs/base', project: editorProject };
- }
- else if (/^vs\/code/.test(sourceFile)) {
- return { name: 'vs/code', project: workbenchProject };
- }
- else if (/^vs\/workbench\/contrib/.test(sourceFile)) {
- resource = sourceFile.split('/', 4).join('/');
- return { name: resource, project: workbenchProject };
- }
- else if (/^vs\/workbench\/services/.test(sourceFile)) {
- resource = sourceFile.split('/', 4).join('/');
- return { name: resource, project: workbenchProject };
- }
- else if (/^vs\/workbench/.test(sourceFile)) {
- return { name: 'vs/workbench', project: workbenchProject };
- }
- throw new Error(`Could not identify the XLF bundle for ${sourceFile}`);
-}
-exports.getResource = getResource;
-function createXlfFilesForCoreBundle() {
- return event_stream_1.through(function (file) {
- const basename = path.basename(file.path);
- if (basename === 'nls.metadata.json') {
- if (file.isBuffer()) {
- const xlfs = Object.create(null);
- const json = JSON.parse(file.contents.toString('utf8'));
- for (let coreModule in json.keys) {
- const projectResource = getResource(coreModule);
- const resource = projectResource.name;
- const project = projectResource.project;
- const keys = json.keys[coreModule];
- const messages = json.messages[coreModule];
- if (keys.length !== messages.length) {
- this.emit('error', `There is a mismatch between keys and messages in ${file.relative} for module ${coreModule}`);
- return;
- }
- else {
- let xlf = xlfs[resource];
- if (!xlf) {
- xlf = new XLF(project);
- xlfs[resource] = xlf;
- }
- xlf.addFile(`src/${coreModule}`, keys, messages);
- }
- }
- for (let resource in xlfs) {
- const xlf = xlfs[resource];
- const filePath = `${xlf.project}/${resource.replace(/\//g, '_')}.xlf`;
- const xlfFile = new File({
- path: filePath,
- contents: Buffer.from(xlf.toString(), 'utf8')
- });
- this.queue(xlfFile);
- }
- }
- else {
- this.emit('error', new Error(`File ${file.relative} is not using a buffer content`));
- return;
- }
- }
- else {
- this.emit('error', new Error(`File ${file.relative} is not a core meta data file.`));
- return;
- }
- });
-}
-exports.createXlfFilesForCoreBundle = createXlfFilesForCoreBundle;
-function createXlfFilesForExtensions() {
- let counter = 0;
- let folderStreamEnded = false;
- let folderStreamEndEmitted = false;
- return event_stream_1.through(function (extensionFolder) {
- const folderStream = this;
- const stat = fs.statSync(extensionFolder.path);
- if (!stat.isDirectory()) {
- return;
- }
- let extensionName = path.basename(extensionFolder.path);
- if (extensionName === 'node_modules') {
- return;
- }
- counter++;
- let _xlf;
- function getXlf() {
- if (!_xlf) {
- _xlf = new XLF(extensionsProject);
- }
- return _xlf;
- }
- gulp.src([`.build/extensions/${extensionName}/package.nls.json`, `.build/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);
- if (basename === 'package.nls.json') {
- const json = JSON.parse(buffer.toString('utf8'));
- const keys = Object.keys(json);
- const messages = keys.map((key) => {
- const value = json[key];
- if (Is.string(value)) {
- return value;
- }
- else if (value) {
- return value.message;
- }
- else {
- return `Unknown message for key: ${key}`;
- }
- });
- getXlf().addFile(`extensions/${extensionName}/package`, keys, messages);
- }
- else if (basename === 'nls.metadata.json') {
- const json = JSON.parse(buffer.toString('utf8'));
- const relPath = path.relative(`.build/extensions/${extensionName}`, path.dirname(file.path));
- for (let file in json) {
- const fileContent = json[file];
- getXlf().addFile(`extensions/${extensionName}/${relPath}/${file}`, fileContent.keys, fileContent.messages);
- }
- }
- else {
- this.emit('error', new Error(`${file.path} is not a valid extension nls file`));
- return;
- }
- }
- }, function () {
- if (_xlf) {
- let xlfFile = new File({
- path: path.join(extensionsProject, extensionName + '.xlf'),
- contents: Buffer.from(_xlf.toString(), 'utf8')
- });
- folderStream.queue(xlfFile);
- }
- this.queue(null);
- counter--;
- if (counter === 0 && folderStreamEnded && !folderStreamEndEmitted) {
- folderStreamEndEmitted = true;
- folderStream.queue(null);
- }
- }));
- }, function () {
- folderStreamEnded = true;
- if (counter === 0) {
- folderStreamEndEmitted = true;
- this.queue(null);
- }
- });
-}
-exports.createXlfFilesForExtensions = createXlfFilesForExtensions;
-function createXlfFilesForIsl() {
- return event_stream_1.through(function (file) {
- let projectName, resourceFile;
- if (path.basename(file.path) === 'Default.isl') {
- projectName = setupProject;
- resourceFile = 'setup_default.xlf';
- }
- else {
- projectName = workbenchProject;
- resourceFile = 'setup_messages.xlf';
- }
- let xlf = new XLF(projectName), keys = [], messages = [];
- let model = new TextModel(file.contents.toString());
- let inMessageSection = false;
- model.lines.forEach(line => {
- if (line.length === 0) {
- return;
- }
- let firstChar = line.charAt(0);
- switch (firstChar) {
- case ';':
- // Comment line;
- return;
- case '[':
- inMessageSection = '[Messages]' === line || '[CustomMessages]' === line;
- return;
- }
- if (!inMessageSection) {
- return;
- }
- let sections = line.split('=');
- if (sections.length !== 2) {
- throw new Error(`Badly formatted message found: ${line}`);
- }
- else {
- let key = sections[0];
- let value = sections[1];
- if (key.length > 0 && value.length > 0) {
- keys.push(key);
- messages.push(value);
- }
- }
- });
- const originalPath = file.path.substring(file.cwd.length + 1, file.path.split('.')[0].length).replace(/\\/g, '/');
- xlf.addFile(originalPath, keys, messages);
- // Emit only upon all ISL files combined into single XLF instance
- const newFilePath = path.join(projectName, resourceFile);
- const xlfFile = new File({ path: newFilePath, contents: Buffer.from(xlf.toString(), 'utf-8') });
- this.queue(xlfFile);
- });
-}
-exports.createXlfFilesForIsl = createXlfFilesForIsl;
-function pushXlfFiles(apiHostname, username, password) {
- let tryGetPromises = [];
- let updateCreatePromises = [];
- return event_stream_1.through(function (file) {
- const project = path.dirname(file.relative);
- const fileName = path.basename(file.path);
- const slug = fileName.substr(0, fileName.length - '.xlf'.length);
- const credentials = `${username}:${password}`;
- // Check if resource already exists, if not, then create it.
- let promise = tryGetResource(project, slug, apiHostname, credentials);
- tryGetPromises.push(promise);
- promise.then(exists => {
- if (exists) {
- promise = updateResource(project, slug, file, apiHostname, credentials);
- }
- else {
- promise = createResource(project, slug, file, apiHostname, credentials);
- }
- updateCreatePromises.push(promise);
- });
- }, function () {
- // End the pipe only after all the communication with Transifex API happened
- Promise.all(tryGetPromises).then(() => {
- Promise.all(updateCreatePromises).then(() => {
- this.queue(null);
- }).catch((reason) => { throw new Error(reason); });
- }).catch((reason) => { throw new Error(reason); });
- });
-}
-exports.pushXlfFiles = pushXlfFiles;
-function getAllResources(project, apiHostname, username, password) {
- return new Promise((resolve, reject) => {
- const credentials = `${username}:${password}`;
- const options = {
- hostname: apiHostname,
- path: `/api/2/project/${project}/resources`,
- auth: credentials,
- method: 'GET'
- };
- const request = https.request(options, (res) => {
- let buffer = [];
- res.on('data', (chunk) => buffer.push(chunk));
- res.on('end', () => {
- if (res.statusCode === 200) {
- let json = JSON.parse(Buffer.concat(buffer).toString());
- if (Array.isArray(json)) {
- resolve(json.map(o => o.slug));
- return;
- }
- reject(`Unexpected data format. Response code: ${res.statusCode}.`);
- }
- else {
- reject(`No resources in ${project} returned no data. Response code: ${res.statusCode}.`);
- }
- });
- });
- request.on('error', (err) => {
- reject(`Failed to query resources in ${project} with the following error: ${err}. ${options.path}`);
- });
- request.end();
- });
-}
-function findObsoleteResources(apiHostname, username, password) {
- let resourcesByProject = Object.create(null);
- resourcesByProject[extensionsProject] = [].concat(exports.externalExtensionsWithTranslations); // clone
- return event_stream_1.through(function (file) {
- const project = path.dirname(file.relative);
- const fileName = path.basename(file.path);
- const slug = fileName.substr(0, fileName.length - '.xlf'.length);
- let slugs = resourcesByProject[project];
- if (!slugs) {
- resourcesByProject[project] = slugs = [];
- }
- slugs.push(slug);
- this.push(file);
- }, function () {
- const json = JSON.parse(fs.readFileSync('./build/lib/i18n.resources.json', 'utf8'));
- let i18Resources = [...json.editor, ...json.workbench].map((r) => r.project + '/' + r.name.replace(/\//g, '_'));
- let extractedResources = [];
- for (let project of [workbenchProject, editorProject]) {
- for (let resource of resourcesByProject[project]) {
- if (resource !== 'setup_messages') {
- extractedResources.push(project + '/' + resource);
- }
- }
- }
- if (i18Resources.length !== extractedResources.length) {
- console.log(`[i18n] Obsolete resources in file 'build/lib/i18n.resources.json': JSON.stringify(${i18Resources.filter(p => extractedResources.indexOf(p) === -1)})`);
- console.log(`[i18n] Missing resources in file 'build/lib/i18n.resources.json': JSON.stringify(${extractedResources.filter(p => i18Resources.indexOf(p) === -1)})`);
- }
- let promises = [];
- for (let project in resourcesByProject) {
- promises.push(getAllResources(project, apiHostname, username, password).then(resources => {
- let expectedResources = resourcesByProject[project];
- let unusedResources = resources.filter(resource => resource && expectedResources.indexOf(resource) === -1);
- if (unusedResources.length) {
- console.log(`[transifex] Obsolete resources in project '${project}': ${unusedResources.join(', ')}`);
- }
- }));
- }
- return Promise.all(promises).then(_ => {
- this.push(null);
- }).catch((reason) => { throw new Error(reason); });
- });
-}
-exports.findObsoleteResources = findObsoleteResources;
-function tryGetResource(project, slug, apiHostname, credentials) {
- return new Promise((resolve, reject) => {
- const options = {
- hostname: apiHostname,
- path: `/api/2/project/${project}/resource/${slug}/?details`,
- auth: credentials,
- method: 'GET'
- };
- const request = https.request(options, (response) => {
- if (response.statusCode === 404) {
- resolve(false);
- }
- else if (response.statusCode === 200) {
- resolve(true);
- }
- else {
- reject(`Failed to query resource ${project}/${slug}. Response: ${response.statusCode} ${response.statusMessage}`);
- }
- });
- request.on('error', (err) => {
- reject(`Failed to get ${project}/${slug} on Transifex: ${err}`);
- });
- request.end();
- });
-}
-function createResource(project, slug, xlfFile, apiHostname, credentials) {
- return new Promise((_resolve, reject) => {
- const data = JSON.stringify({
- 'content': xlfFile.contents.toString(),
- 'name': slug,
- 'slug': slug,
- 'i18n_type': 'XLIFF'
- });
- const options = {
- hostname: apiHostname,
- path: `/api/2/project/${project}/resources`,
- headers: {
- 'Content-Type': 'application/json',
- 'Content-Length': Buffer.byteLength(data)
- },
- auth: credentials,
- method: 'POST'
- };
- let request = https.request(options, (res) => {
- if (res.statusCode === 201) {
- log(`Resource ${project}/${slug} successfully created on Transifex.`);
- }
- else {
- reject(`Something went wrong in the request creating ${slug} in ${project}. ${res.statusCode}`);
- }
- });
- request.on('error', (err) => {
- reject(`Failed to create ${project}/${slug} on Transifex: ${err}`);
- });
- request.write(data);
- request.end();
- });
-}
-/**
- * The following link provides information about how Transifex handles updates of a resource file:
- * https://dev.befoolish.co/tx-docs/public/projects/updating-content#what-happens-when-you-update-files
- */
-function updateResource(project, slug, xlfFile, apiHostname, credentials) {
- return new Promise((resolve, reject) => {
- const data = JSON.stringify({ content: xlfFile.contents.toString() });
- const options = {
- hostname: apiHostname,
- path: `/api/2/project/${project}/resource/${slug}/content`,
- headers: {
- 'Content-Type': 'application/json',
- 'Content-Length': Buffer.byteLength(data)
- },
- auth: credentials,
- method: 'PUT'
- };
- let request = https.request(options, (res) => {
- if (res.statusCode === 200) {
- res.setEncoding('utf8');
- let responseBuffer = '';
- res.on('data', function (chunk) {
- responseBuffer += chunk;
- });
- res.on('end', () => {
- const response = JSON.parse(responseBuffer);
- log(`Resource ${project}/${slug} successfully updated on Transifex. Strings added: ${response.strings_added}, updated: ${response.strings_added}, deleted: ${response.strings_added}`);
- resolve();
- });
- }
- else {
- reject(`Something went wrong in the request updating ${slug} in ${project}. ${res.statusCode}`);
- }
- });
- request.on('error', (err) => {
- reject(`Failed to update ${project}/${slug} on Transifex: ${err}`);
- });
- request.write(data);
- request.end();
- });
-}
-// cache resources
-let _coreAndExtensionResources;
-function pullCoreAndExtensionsXlfFiles(apiHostname, username, password, language, externalExtensions) {
- if (!_coreAndExtensionResources) {
- _coreAndExtensionResources = [];
- // editor and workbench
- const json = JSON.parse(fs.readFileSync('./build/lib/i18n.resources.json', 'utf8'));
- _coreAndExtensionResources.push(...json.editor);
- _coreAndExtensionResources.push(...json.workbench);
- // extensions
- let extensionsToLocalize = Object.create(null);
- glob.sync('.build/extensions/**/*.nls.json').forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
- glob.sync('.build/extensions/*/node_modules/vscode-nls').forEach(extension => extensionsToLocalize[extension.split('/')[2]] = true);
- Object.keys(extensionsToLocalize).forEach(extension => {
- _coreAndExtensionResources.push({ name: extension, project: extensionsProject });
- });
- if (externalExtensions) {
- for (let resourceName in externalExtensions) {
- _coreAndExtensionResources.push({ name: resourceName, project: extensionsProject });
- }
- }
- }
- return pullXlfFiles(apiHostname, username, password, language, _coreAndExtensionResources);
-}
-exports.pullCoreAndExtensionsXlfFiles = pullCoreAndExtensionsXlfFiles;
-function pullSetupXlfFiles(apiHostname, username, password, language, includeDefault) {
- let setupResources = [{ name: 'setup_messages', project: workbenchProject }];
- if (includeDefault) {
- setupResources.push({ name: 'setup_default', project: setupProject });
- }
- return pullXlfFiles(apiHostname, username, password, language, setupResources);
-}
-exports.pullSetupXlfFiles = pullSetupXlfFiles;
-function pullXlfFiles(apiHostname, username, password, language, resources) {
- const credentials = `${username}:${password}`;
- let expectedTranslationsCount = resources.length;
- let translationsRetrieved = 0, called = false;
- return event_stream_1.readable(function (_count, callback) {
- // Mark end of stream when all resources were retrieved
- if (translationsRetrieved === expectedTranslationsCount) {
- return this.emit('end');
- }
- if (!called) {
- called = true;
- const stream = this;
- resources.map(function (resource) {
- retrieveResource(language, resource, apiHostname, credentials).then((file) => {
- if (file) {
- stream.emit('data', file);
- }
- translationsRetrieved++;
- }).catch(error => { throw new Error(error); });
- });
- }
- callback();
- });
-}
-const limiter = new Limiter(NUMBER_OF_CONCURRENT_DOWNLOADS);
-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.translationId || language.id;
- const options = {
- hostname: apiHostname,
- path: `/api/2/project/${project}/resource/${slug}/translation/${transifexLanguageId}?file&mode=onlyreviewed`,
- auth: credentials,
- port: 443,
- method: 'GET'
- };
- console.log('[transifex] Fetching ' + options.path);
- let request = https.request(options, (res) => {
- let xlfBuffer = [];
- res.on('data', (chunk) => xlfBuffer.push(chunk));
- res.on('end', () => {
- if (res.statusCode === 200) {
- resolve(new File({ contents: Buffer.concat(xlfBuffer), path: `${project}/${slug}.xlf` }));
- }
- else if (res.statusCode === 404) {
- console.log(`[transifex] ${slug} in ${project} returned no data.`);
- resolve(null);
- }
- else {
- reject(`${slug} in ${project} returned no data. Response code: ${res.statusCode}.`);
- }
- });
- });
- request.on('error', (err) => {
- reject(`Failed to query resource ${slug} with the following error: ${err}. ${options.path}`);
- });
- request.end();
- }));
-}
-function prepareI18nFiles() {
- let parsePromises = [];
- return event_stream_1.through(function (xlf) {
- let stream = this;
- let parsePromise = XLF.parse(xlf.contents.toString());
- parsePromises.push(parsePromise);
- parsePromise.then(resolvedFiles => {
- resolvedFiles.forEach(file => {
- let translatedFile = createI18nFile(file.originalFilePath, file.messages);
- stream.queue(translatedFile);
- });
- });
- }, function () {
- Promise.all(parsePromises)
- .then(() => { this.queue(null); })
- .catch(reason => { throw new Error(reason); });
- });
-}
-exports.prepareI18nFiles = prepareI18nFiles;
-function createI18nFile(originalFilePath, messages) {
- let result = Object.create(null);
- result[''] = [
- '--------------------------------------------------------------------------------------------',
- 'Copyright (c) Microsoft Corporation. All rights reserved.',
- 'Licensed under the MIT License. See License.txt in the project root for license information.',
- '--------------------------------------------------------------------------------------------',
- 'Do not edit this file. It is machine generated.'
- ];
- for (let key of Object.keys(messages)) {
- result[key] = messages[key];
- }
- let content = JSON.stringify(result, null, '\t');
- if (process.platform === 'win32') {
- content = content.replace(/\n/g, '\r\n');
- }
- return new File({
- path: path.join(originalFilePath + '.i18n.json'),
- contents: Buffer.from(content, 'utf8')
- });
-}
-const i18nPackVersion = "1.0.0";
-function pullI18nPackFiles(apiHostname, username, password, language, resultingTranslationPaths) {
- return pullCoreAndExtensionsXlfFiles(apiHostname, username, password, language, exports.externalExtensionsWithTranslations)
- .pipe(prepareI18nPackFiles(exports.externalExtensionsWithTranslations, resultingTranslationPaths, language.id === 'ps'));
-}
-exports.pullI18nPackFiles = pullI18nPackFiles;
-function prepareI18nPackFiles(externalExtensions, resultingTranslationPaths, pseudo = false) {
- let parsePromises = [];
- let mainPack = { version: i18nPackVersion, contents: {} };
- let extensionsPacks = {};
- let errors = [];
- return event_stream_1.through(function (xlf) {
- 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);
- parsePromises.push(parsePromise);
- parsePromise.then(resolvedFiles => {
- resolvedFiles.forEach(file => {
- const path = file.originalFilePath;
- const firstSlash = path.indexOf('/');
- if (project === extensionsProject) {
- let extPack = extensionsPacks[resource];
- if (!extPack) {
- extPack = extensionsPacks[resource] = { version: i18nPackVersion, contents: {} };
- }
- const externalId = externalExtensions[resource];
- if (!externalId) { // internal extension: remove 'extensions/extensionId/' segnent
- const secondSlash = path.indexOf('/', firstSlash + 1);
- extPack.contents[path.substr(secondSlash + 1)] = file.messages;
- }
- else {
- extPack.contents[path] = file.messages;
- }
- }
- else {
- mainPack.contents[path.substr(firstSlash + 1)] = file.messages;
- }
- });
- }).catch(reason => {
- errors.push(reason);
- });
- }, function () {
- Promise.all(parsePromises)
- .then(() => {
- if (errors.length > 0) {
- throw errors;
- }
- const translatedMainFile = createI18nFile('./main', mainPack);
- resultingTranslationPaths.push({ id: 'vscode', resourceName: 'main.i18n.json' });
- this.queue(translatedMainFile);
- for (let extension in extensionsPacks) {
- const translatedExtFile = createI18nFile(`extensions/${extension}`, extensionsPacks[extension]);
- this.queue(translatedExtFile);
- const externalExtensionId = externalExtensions[extension];
- if (externalExtensionId) {
- resultingTranslationPaths.push({ id: externalExtensionId, resourceName: `extensions/${extension}.i18n.json` });
- }
- else {
- resultingTranslationPaths.push({ id: `vscode.${extension}`, resourceName: `extensions/${extension}.i18n.json` });
- }
- }
- this.queue(null);
- })
- .catch((reason) => {
- this.emit('error', reason);
- });
- });
-}
-exports.prepareI18nPackFiles = prepareI18nPackFiles;
-function prepareIslFiles(language, innoSetupConfig) {
- let parsePromises = [];
- return event_stream_1.through(function (xlf) {
- let stream = this;
- let parsePromise = XLF.parse(xlf.contents.toString());
- parsePromises.push(parsePromise);
- parsePromise.then(resolvedFiles => {
- resolvedFiles.forEach(file => {
- if (path.basename(file.originalFilePath) === 'Default' && !innoSetupConfig.defaultInfo) {
- return;
- }
- let translatedFile = createIslFile(file.originalFilePath, file.messages, language, innoSetupConfig);
- stream.queue(translatedFile);
- });
- }).catch(reason => {
- this.emit('error', reason);
- });
- }, function () {
- Promise.all(parsePromises)
- .then(() => { this.queue(null); })
- .catch(reason => {
- this.emit('error', reason);
- });
- });
-}
-exports.prepareIslFiles = prepareIslFiles;
-function createIslFile(originalFilePath, messages, language, innoSetup) {
- let content = [];
- let originalContent;
- if (path.basename(originalFilePath) === 'Default') {
- originalContent = new TextModel(fs.readFileSync(originalFilePath + '.isl', 'utf8'));
- }
- else {
- originalContent = new TextModel(fs.readFileSync(originalFilePath + '.en.isl', 'utf8'));
- }
- originalContent.lines.forEach(line => {
- if (line.length > 0) {
- let firstChar = line.charAt(0);
- if (firstChar === '[' || firstChar === ';') {
- if (line === '; *** Inno Setup version 5.5.3+ English messages ***') {
- content.push(`; *** Inno Setup version 5.5.3+ ${innoSetup.defaultInfo.name} messages ***`);
- }
- else {
- content.push(line);
- }
- }
- else {
- let sections = line.split('=');
- let key = sections[0];
- let translated = line;
- if (key) {
- if (key === 'LanguageName') {
- translated = `${key}=${innoSetup.defaultInfo.name}`;
- }
- else if (key === 'LanguageID') {
- translated = `${key}=${innoSetup.defaultInfo.id}`;
- }
- else if (key === 'LanguageCodePage') {
- translated = `${key}=${innoSetup.codePage.substr(2)}`;
- }
- else {
- let translatedMessage = messages[key];
- if (translatedMessage) {
- translated = `${key}=${translatedMessage}`;
- }
- }
- }
- content.push(translated);
- }
- }
- });
- const basename = path.basename(originalFilePath);
- const filePath = `${basename}.${language.id}.isl`;
- return new File({
- path: filePath,
- contents: iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage)
- });
-}
-function encodeEntities(value) {
- let result = [];
- for (let i = 0; i < value.length; i++) {
- let ch = value[i];
- switch (ch) {
- case '<':
- result.push('<');
- break;
- case '>':
- result.push('>');
- break;
- case '&':
- result.push('&');
- break;
- default:
- result.push(ch);
- }
- }
- return result.join('');
-}
-function decodeEntities(value) {
- return value.replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&');
-}
-function pseudify(message) {
- return '\uFF3B' + message.replace(/[aouei]/g, '$&$&') + '\uFF3D';
-}
diff --git a/build/lib/i18n.resources.json b/build/lib/i18n.resources.json
index 93a6992e411..6921e6c6525 100644
--- a/build/lib/i18n.resources.json
+++ b/build/lib/i18n.resources.json
@@ -94,6 +94,10 @@
"name": "vs/workbench/contrib/issue",
"project": "vscode-workbench"
},
+ {
+ "name": "vs/workbench/contrib/keybindings",
+ "project": "vscode-workbench"
+ },
{
"name": "vs/workbench/contrib/markers",
"project": "vscode-workbench"
@@ -202,6 +206,14 @@
"name": "vs/workbench/contrib/webview",
"project": "vscode-workbench"
},
+ {
+ "name": "vs/workbench/contrib/webviewPanel",
+ "project": "vscode-workbench"
+ },
+ {
+ "name": "vs/workbench/contrib/workspaces",
+ "project": "vscode-workbench"
+ },
{
"name": "vs/workbench/contrib/customEditor",
"project": "vscode-workbench"
@@ -218,6 +230,10 @@
"name": "vs/workbench/contrib/userDataSync",
"project": "vscode-workbench"
},
+ {
+ "name": "vs/workbench/contrib/views",
+ "project": "vscode-workbench"
+ },
{
"name": "vs/workbench/services/actions",
"project": "vscode-workbench"
@@ -242,10 +258,6 @@
"name": "vs/workbench/services/configurationResolver",
"project": "vscode-workbench"
},
- {
- "name": "vs/workbench/services/crashReporter",
- "project": "vscode-workbench"
- },
{
"name": "vs/workbench/services/dialogs",
"project": "vscode-workbench"
@@ -353,6 +365,10 @@
{
"name": "vs/workbench/services/authentication",
"project": "vscode-workbench"
+ },
+ {
+ "name": "vs/workbench/services/extensionRecommendations",
+ "project": "vscode-workbench"
}
]
}
diff --git a/build/lib/i18n.ts b/build/lib/i18n.ts
index b9fb3879872..a23b58ccd3d 100644
--- a/build/lib/i18n.ts
+++ b/build/lib/i18n.ts
@@ -15,7 +15,7 @@ import * as https from 'https';
import * as gulp from 'gulp';
import * as fancyLog from 'fancy-log';
import * as ansiColors from 'ansi-colors';
-import * as iconv from 'iconv-lite';
+import * as iconv from 'iconv-lite-umd';
const NUMBER_OF_CONCURRENT_DOWNLOADS = 4;
@@ -996,7 +996,7 @@ function createResource(project: string, slug: string, xlfFile: File, apiHostnam
* https://dev.befoolish.co/tx-docs/public/projects/updating-content#what-happens-when-you-update-files
*/
function updateResource(project: string, slug: string, xlfFile: File, apiHostname: string, credentials: string): Promise {
- return new Promise((resolve, reject) => {
+ return new Promise((resolve, reject) => {
const data = JSON.stringify({ content: xlfFile.contents.toString() });
const options = {
hostname: apiHostname,
@@ -1188,7 +1188,7 @@ interface I18nPack {
};
}
-const i18nPackVersion = "1.0.0";
+const i18nPackVersion = '1.0.0';
export interface TranslationPath {
id: string;
@@ -1308,11 +1308,7 @@ function createIslFile(originalFilePath: string, messages: Map, language
if (line.length > 0) {
let firstChar = line.charAt(0);
if (firstChar === '[' || firstChar === ';') {
- if (line === '; *** Inno Setup version 5.5.3+ English messages ***') {
- content.push(`; *** Inno Setup version 5.5.3+ ${innoSetup.defaultInfo!.name} messages ***`);
- } else {
- content.push(line);
- }
+ content.push(line);
} else {
let sections: string[] = line.split('=');
let key = sections[0];
@@ -1339,10 +1335,11 @@ function createIslFile(originalFilePath: string, messages: Map, language
const basename = path.basename(originalFilePath);
const filePath = `${basename}.${language.id}.isl`;
+ const encoded = iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage);
return new File({
path: filePath,
- contents: iconv.encode(Buffer.from(content.join('\r\n'), 'utf8').toString(), innoSetup.codePage)
+ contents: Buffer.from(encoded),
});
}
diff --git a/build/lib/layersChecker.js b/build/lib/layersChecker.js
deleted file mode 100644
index f3cc2252b5e..00000000000
--- a/build/lib/layersChecker.js
+++ /dev/null
@@ -1,226 +0,0 @@
-"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 fs_1 = require("fs");
-const path_1 = require("path");
-const minimatch_1 = require("minimatch");
-//
-// #############################################################################################
-//
-// A custom typescript checker for the specific task of detecting the use of certain types in a
-// layer that does not allow such use. For example:
-// - using DOM globals in common/node/electron-main layer (e.g. HTMLElement)
-// - using node.js globals in common/browser layer (e.g. process)
-//
-// Make changes to below RULES to lift certain files from these checks only if absolutely needed
-//
-// #############################################################################################
-//
-// Types we assume are present in all implementations of JS VMs (node.js, browsers)
-// Feel free to add more core types as you see needed if present in node.js and browsers
-const CORE_TYPES = [
- 'require',
- 'atob',
- 'btoa',
- 'setTimeout',
- 'clearTimeout',
- 'setInterval',
- 'clearInterval',
- 'console',
- 'log',
- 'info',
- 'warn',
- 'error',
- 'group',
- 'groupEnd',
- 'table',
- 'assert',
- 'Error',
- 'String',
- 'throws',
- 'stack',
- 'captureStackTrace',
- 'stackTraceLimit',
- 'TextDecoder',
- 'TextEncoder',
- 'encode',
- 'decode',
- 'self',
- 'trimLeft',
- 'trimRight'
-];
-const RULES = [
- // Tests: skip
- {
- target: '**/vs/**/test/**',
- skip: true // -> skip all test files
- },
- // Common: vs/base/common/platform.ts
- {
- target: '**/vs/base/common/platform.ts',
- allowedTypes: [
- ...CORE_TYPES,
- // Safe access to postMessage() and friends
- 'MessageEvent',
- 'data'
- ],
- disallowedDefinitions: [
- 'lib.dom.d.ts',
- '@types/node' // no node.js
- ]
- },
- // Common: vs/workbench/api/common/extHostExtensionService.ts
- {
- target: '**/vs/workbench/api/common/extHostExtensionService.ts',
- allowedTypes: [
- ...CORE_TYPES,
- // Safe access to global
- 'global'
- ],
- disallowedDefinitions: [
- 'lib.dom.d.ts',
- '@types/node' // no node.js
- ]
- },
- // Common
- {
- target: '**/vs/**/common/**',
- allowedTypes: CORE_TYPES,
- disallowedDefinitions: [
- 'lib.dom.d.ts',
- '@types/node' // no node.js
- ]
- },
- // Browser
- {
- target: '**/vs/**/browser/**',
- allowedTypes: CORE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
- // Browser (editor contrib)
- {
- target: '**/src/vs/editor/contrib/**',
- allowedTypes: CORE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
- // node.js
- {
- target: '**/vs/**/node/**',
- allowedTypes: [
- ...CORE_TYPES,
- // --> types from node.d.ts that duplicate from lib.dom.d.ts
- 'URL',
- 'protocol',
- 'hostname',
- 'port',
- 'pathname',
- 'search',
- 'username',
- 'password'
- ],
- disallowedDefinitions: [
- 'lib.dom.d.ts' // no DOM
- ]
- },
- // Electron (sandbox)
- {
- target: '**/vs/**/electron-sandbox/**',
- allowedTypes: CORE_TYPES,
- disallowedDefinitions: [
- '@types/node' // no node.js
- ]
- },
- // Electron (renderer): skip
- {
- target: '**/vs/**/electron-browser/**',
- skip: true // -> supports all types
- },
- // Electron (main)
- {
- target: '**/vs/**/electron-main/**',
- allowedTypes: [
- ...CORE_TYPES,
- // --> types from electron.d.ts that duplicate from lib.dom.d.ts
- 'Event',
- 'Request'
- ],
- disallowedDefinitions: [
- 'lib.dom.d.ts' // no DOM
- ]
- }
-];
-const TS_CONFIG_PATH = path_1.join(__dirname, '../../', 'src', 'tsconfig.json');
-let hasErrors = false;
-function checkFile(program, sourceFile, rule) {
- checkNode(sourceFile);
- function checkNode(node) {
- var _a;
- if (node.kind !== ts.SyntaxKind.Identifier) {
- return ts.forEachChild(node, checkNode); // recurse down
- }
- const text = node.getText(sourceFile);
- if ((_a = rule.allowedTypes) === null || _a === void 0 ? void 0 : _a.some(allowed => allowed === text)) {
- return; // override
- }
- const checker = program.getTypeChecker();
- const symbol = checker.getSymbolAtLocation(node);
- if (symbol) {
- const declarations = symbol.declarations;
- if (Array.isArray(declarations)) {
- for (const declaration of declarations) {
- if (declaration) {
- const parent = declaration.parent;
- if (parent) {
- const parentSourceFile = parent.getSourceFile();
- if (parentSourceFile) {
- const definitionFileName = parentSourceFile.fileName;
- if (rule.disallowedDefinitions) {
- for (const disallowedDefinition of rule.disallowedDefinitions) {
- if (definitionFileName.indexOf(disallowedDefinition) >= 0) {
- const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
- console.log(`[build/lib/layersChecker.ts]: Reference to '${text}' from '${disallowedDefinition}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1})`);
- hasErrors = true;
- return;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-}
-function createProgram(tsconfigPath) {
- const tsConfig = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
- const configHostParser = { fileExists: fs_1.existsSync, readDirectory: ts.sys.readDirectory, readFile: file => fs_1.readFileSync(file, 'utf8'), useCaseSensitiveFileNames: process.platform === 'linux' };
- const tsConfigParsed = ts.parseJsonConfigFileContent(tsConfig.config, configHostParser, path_1.resolve(path_1.dirname(tsconfigPath)), { noEmit: true });
- const compilerHost = ts.createCompilerHost(tsConfigParsed.options, true);
- return ts.createProgram(tsConfigParsed.fileNames, tsConfigParsed.options, compilerHost);
-}
-//
-// Create program and start checking
-//
-const program = createProgram(TS_CONFIG_PATH);
-for (const sourceFile of program.getSourceFiles()) {
- for (const rule of RULES) {
- if (minimatch_1.match([sourceFile.fileName], rule.target).length > 0) {
- if (!rule.skip) {
- checkFile(program, sourceFile, rule);
- }
- break;
- }
- }
-}
-if (hasErrors) {
- process.exit(1);
-}
diff --git a/build/lib/layersChecker.ts b/build/lib/layersChecker.ts
index 508d2b986e9..1c7579206af 100644
--- a/build/lib/layersChecker.ts
+++ b/build/lib/layersChecker.ts
@@ -25,8 +25,8 @@ import { match } from 'minimatch';
// Feel free to add more core types as you see needed if present in node.js and browsers
const CORE_TYPES = [
'require', // from our AMD loader
- 'atob',
- 'btoa',
+ // 'atob',
+ // 'btoa',
'setTimeout',
'clearTimeout',
'setInterval',
@@ -55,6 +55,15 @@ const CORE_TYPES = [
'trimRight'
];
+// Types that are defined in a common layer but are known to be only
+// available in native environments should not be allowed in browser
+const NATIVE_TYPES = [
+ 'NativeParsedArgs',
+ 'INativeEnvironmentService',
+ 'INativeWindowConfiguration',
+ 'ICommonNativeHostService'
+];
+
const RULES = [
// Tests: skip
@@ -73,6 +82,51 @@ const RULES = [
'MessageEvent',
'data'
],
+ disallowedTypes: NATIVE_TYPES,
+ disallowedDefinitions: [
+ 'lib.dom.d.ts', // no DOM
+ '@types/node' // no node.js
+ ]
+ },
+
+ // Common: vs/platform/environment/common/argv.ts
+ {
+ target: '**/vs/platform/environment/common/argv.ts',
+ disallowedTypes: [/* Ignore native types that are defined from here */],
+ allowedTypes: CORE_TYPES,
+ disallowedDefinitions: [
+ 'lib.dom.d.ts', // no DOM
+ '@types/node' // no node.js
+ ]
+ },
+
+ // Common: vs/platform/environment/common/environment.ts
+ {
+ target: '**/vs/platform/environment/common/environment.ts',
+ disallowedTypes: [/* Ignore native types that are defined from here */],
+ allowedTypes: CORE_TYPES,
+ disallowedDefinitions: [
+ 'lib.dom.d.ts', // no DOM
+ '@types/node' // no node.js
+ ]
+ },
+
+ // Common: vs/platform/windows/common/windows.ts
+ {
+ target: '**/vs/platform/windows/common/windows.ts',
+ disallowedTypes: [/* Ignore native types that are defined from here */],
+ allowedTypes: CORE_TYPES,
+ disallowedDefinitions: [
+ 'lib.dom.d.ts', // no DOM
+ '@types/node' // no node.js
+ ]
+ },
+
+ // Common: vs/platform/native/common/native.ts
+ {
+ target: '**/vs/platform/native/common/native.ts',
+ disallowedTypes: [/* Ignore native types that are defined from here */],
+ allowedTypes: CORE_TYPES,
disallowedDefinitions: [
'lib.dom.d.ts', // no DOM
'@types/node' // no node.js
@@ -88,6 +142,7 @@ const RULES = [
// Safe access to global
'global'
],
+ disallowedTypes: NATIVE_TYPES,
disallowedDefinitions: [
'lib.dom.d.ts', // no DOM
'@types/node' // no node.js
@@ -98,6 +153,7 @@ const RULES = [
{
target: '**/vs/**/common/**',
allowedTypes: CORE_TYPES,
+ disallowedTypes: NATIVE_TYPES,
disallowedDefinitions: [
'lib.dom.d.ts', // no DOM
'@types/node' // no node.js
@@ -108,6 +164,7 @@ const RULES = [
{
target: '**/vs/**/browser/**',
allowedTypes: CORE_TYPES,
+ disallowedTypes: NATIVE_TYPES,
disallowedDefinitions: [
'@types/node' // no node.js
]
@@ -117,6 +174,7 @@ const RULES = [
{
target: '**/src/vs/editor/contrib/**',
allowedTypes: CORE_TYPES,
+ disallowedTypes: NATIVE_TYPES,
disallowedDefinitions: [
'@types/node' // no node.js
]
@@ -181,6 +239,7 @@ interface IRule {
skip?: boolean;
allowedTypes?: string[];
disallowedDefinitions?: string[];
+ disallowedTypes?: string[];
}
let hasErrors = false;
@@ -199,6 +258,14 @@ function checkFile(program: ts.Program, sourceFile: ts.SourceFile, rule: IRule)
return; // override
}
+ if (rule.disallowedTypes?.some(disallowed => disallowed === text)) {
+ const { line, character } = sourceFile.getLineAndCharacterOfPosition(node.getStart());
+ console.log(`[build/lib/layersChecker.ts]: Reference to '${text}' violates layer '${rule.target}' (${sourceFile.fileName} (${line + 1},${character + 1})`);
+
+ hasErrors = true;
+ return;
+ }
+
const checker = program.getTypeChecker();
const symbol = checker.getSymbolAtLocation(node);
if (symbol) {
diff --git a/build/monaco/api.ts b/build/lib/monaco-api.ts
similarity index 99%
rename from build/monaco/api.ts
rename to build/lib/monaco-api.ts
index f3542988a4b..6604b14d91e 100644
--- a/build/monaco/api.ts
+++ b/build/lib/monaco-api.ts
@@ -14,7 +14,7 @@ const dtsv = '3';
const tsfmt = require('../../tsfmt.json');
const SRC = path.join(__dirname, '../../src');
-export const RECIPE_PATH = path.join(__dirname, './monaco.d.ts.recipe');
+export const RECIPE_PATH = path.join(__dirname, '../monaco/monaco.d.ts.recipe');
const DECLARATION_PATH = path.join(__dirname, '../../src/vs/monaco.d.ts');
function logErr(message: any, ...rest: any[]): void {
diff --git a/build/lib/nls.js b/build/lib/nls.js
deleted file mode 100644
index 3807e90a612..00000000000
--- a/build/lib/nls.js
+++ /dev/null
@@ -1,354 +0,0 @@
-"use strict";
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-const ts = require("typescript");
-const lazy = require("lazy.js");
-const event_stream_1 = require("event-stream");
-const File = require("vinyl");
-const sm = require("source-map");
-const path = require("path");
-var CollectStepResult;
-(function (CollectStepResult) {
- CollectStepResult[CollectStepResult["Yes"] = 0] = "Yes";
- CollectStepResult[CollectStepResult["YesAndRecurse"] = 1] = "YesAndRecurse";
- CollectStepResult[CollectStepResult["No"] = 2] = "No";
- CollectStepResult[CollectStepResult["NoAndRecurse"] = 3] = "NoAndRecurse";
-})(CollectStepResult || (CollectStepResult = {}));
-function collect(node, fn) {
- const result = [];
- function loop(node) {
- const stepResult = fn(node);
- if (stepResult === CollectStepResult.Yes || stepResult === CollectStepResult.YesAndRecurse) {
- result.push(node);
- }
- if (stepResult === CollectStepResult.YesAndRecurse || stepResult === CollectStepResult.NoAndRecurse) {
- ts.forEachChild(node, loop);
- }
- }
- loop(node);
- return result;
-}
-function clone(object) {
- const result = {};
- for (const id in object) {
- result[id] = object[id];
- }
- return result;
-}
-function template(lines) {
- let indent = '', wrap = '';
- if (lines.length > 1) {
- indent = '\t';
- wrap = '\n';
- }
- return `/*---------------------------------------------------------
- * Copyright (C) Microsoft Corporation. All rights reserved.
- *--------------------------------------------------------*/
-define([], [${wrap + lines.map(l => indent + l).join(',\n') + wrap}]);`;
-}
-/**
- * Returns a stream containing the patched JavaScript and source maps.
- */
-function nls() {
- const input = event_stream_1.through();
- const output = input.pipe(event_stream_1.through(function (f) {
- if (!f.sourceMap) {
- return this.emit('error', new Error(`File ${f.relative} does not have sourcemaps.`));
- }
- let source = f.sourceMap.sources[0];
- if (!source) {
- return this.emit('error', new Error(`File ${f.relative} does not have a source in the source map.`));
- }
- const root = f.sourceMap.sourceRoot;
- if (root) {
- source = path.join(root, source);
- }
- const typescript = f.sourceMap.sourcesContent[0];
- if (!typescript) {
- return this.emit('error', new Error(`File ${f.relative} does not have the original content in the source map.`));
- }
- nls.patchFiles(f, typescript).forEach(f => this.emit('data', f));
- }));
- return event_stream_1.duplex(input, output);
-}
-function isImportNode(node) {
- return node.kind === ts.SyntaxKind.ImportDeclaration || node.kind === ts.SyntaxKind.ImportEqualsDeclaration;
-}
-(function (nls_1) {
- function fileFrom(file, contents, path = file.path) {
- return new File({
- contents: Buffer.from(contents),
- base: file.base,
- cwd: file.cwd,
- path: path
- });
- }
- nls_1.fileFrom = fileFrom;
- function mappedPositionFrom(source, lc) {
- return { source, line: lc.line + 1, column: lc.character };
- }
- nls_1.mappedPositionFrom = mappedPositionFrom;
- function lcFrom(position) {
- return { line: position.line - 1, character: position.column };
- }
- nls_1.lcFrom = lcFrom;
- class SingleFileServiceHost {
- constructor(options, filename, contents) {
- this.options = options;
- this.filename = filename;
- this.getCompilationSettings = () => this.options;
- this.getScriptFileNames = () => [this.filename];
- this.getScriptVersion = () => '1';
- this.getScriptSnapshot = (name) => name === this.filename ? this.file : this.lib;
- this.getCurrentDirectory = () => '';
- this.getDefaultLibFileName = () => 'lib.d.ts';
- this.file = ts.ScriptSnapshot.fromString(contents);
- this.lib = ts.ScriptSnapshot.fromString('');
- }
- }
- nls_1.SingleFileServiceHost = SingleFileServiceHost;
- function isCallExpressionWithinTextSpanCollectStep(textSpan, node) {
- if (!ts.textSpanContainsTextSpan({ start: node.pos, length: node.end - node.pos }, textSpan)) {
- return CollectStepResult.No;
- }
- return node.kind === ts.SyntaxKind.CallExpression ? CollectStepResult.YesAndRecurse : CollectStepResult.NoAndRecurse;
- }
- function analyze(contents, options = {}) {
- const filename = 'file.ts';
- const serviceHost = new SingleFileServiceHost(Object.assign(clone(options), { noResolve: true }), filename, contents);
- const service = ts.createLanguageService(serviceHost);
- const sourceFile = ts.createSourceFile(filename, contents, ts.ScriptTarget.ES5, true);
- // all imports
- const imports = lazy(collect(sourceFile, n => isImportNode(n) ? CollectStepResult.YesAndRecurse : CollectStepResult.NoAndRecurse));
- // import nls = require('vs/nls');
- const importEqualsDeclarations = imports
- .filter(n => n.kind === ts.SyntaxKind.ImportEqualsDeclaration)
- .map(n => n)
- .filter(d => d.moduleReference.kind === ts.SyntaxKind.ExternalModuleReference)
- .filter(d => d.moduleReference.expression.getText() === '\'vs/nls\'');
- // import ... from 'vs/nls';
- const importDeclarations = imports
- .filter(n => n.kind === ts.SyntaxKind.ImportDeclaration)
- .map(n => n)
- .filter(d => d.moduleSpecifier.kind === ts.SyntaxKind.StringLiteral)
- .filter(d => d.moduleSpecifier.getText() === '\'vs/nls\'')
- .filter(d => !!d.importClause && !!d.importClause.namedBindings);
- const nlsExpressions = importEqualsDeclarations
- .map(d => d.moduleReference.expression)
- .concat(importDeclarations.map(d => d.moduleSpecifier))
- .map(d => ({
- start: ts.getLineAndCharacterOfPosition(sourceFile, d.getStart()),
- end: ts.getLineAndCharacterOfPosition(sourceFile, d.getEnd())
- }));
- // `nls.localize(...)` calls
- const nlsLocalizeCallExpressions = importDeclarations
- .filter(d => !!(d.importClause && d.importClause.namedBindings && d.importClause.namedBindings.kind === ts.SyntaxKind.NamespaceImport))
- .map(d => d.importClause.namedBindings.name)
- .concat(importEqualsDeclarations.map(d => d.name))
- // find read-only references to `nls`
- .map(n => service.getReferencesAtPosition(filename, n.pos + 1))
- .flatten()
- .filter(r => !r.isWriteAccess)
- // find the deepest call expressions AST nodes that contain those references
- .map(r => collect(sourceFile, n => isCallExpressionWithinTextSpanCollectStep(r.textSpan, n)))
- .map(a => lazy(a).last())
- .filter(n => !!n)
- .map(n => n)
- // only `localize` calls
- .filter(n => n.expression.kind === ts.SyntaxKind.PropertyAccessExpression && n.expression.name.getText() === 'localize');
- // `localize` named imports
- const allLocalizeImportDeclarations = importDeclarations
- .filter(d => !!(d.importClause && d.importClause.namedBindings && d.importClause.namedBindings.kind === ts.SyntaxKind.NamedImports))
- .map(d => [].concat(d.importClause.namedBindings.elements))
- .flatten();
- // `localize` read-only references
- const localizeReferences = allLocalizeImportDeclarations
- .filter(d => d.name.getText() === 'localize')
- .map(n => service.getReferencesAtPosition(filename, n.pos + 1))
- .flatten()
- .filter(r => !r.isWriteAccess);
- // custom named `localize` read-only references
- const namedLocalizeReferences = allLocalizeImportDeclarations
- .filter(d => d.propertyName && d.propertyName.getText() === 'localize')
- .map(n => service.getReferencesAtPosition(filename, n.name.pos + 1))
- .flatten()
- .filter(r => !r.isWriteAccess);
- // find the deepest call expressions AST nodes that contain those references
- const localizeCallExpressions = localizeReferences
- .concat(namedLocalizeReferences)
- .map(r => collect(sourceFile, n => isCallExpressionWithinTextSpanCollectStep(r.textSpan, n)))
- .map(a => lazy(a).last())
- .filter(n => !!n)
- .map(n => n);
- // collect everything
- const localizeCalls = nlsLocalizeCallExpressions
- .concat(localizeCallExpressions)
- .map(e => e.arguments)
- .filter(a => a.length > 1)
- .sort((a, b) => a[0].getStart() - b[0].getStart())
- .map(a => ({
- keySpan: { start: ts.getLineAndCharacterOfPosition(sourceFile, a[0].getStart()), end: ts.getLineAndCharacterOfPosition(sourceFile, a[0].getEnd()) },
- key: a[0].getText(),
- valueSpan: { start: ts.getLineAndCharacterOfPosition(sourceFile, a[1].getStart()), end: ts.getLineAndCharacterOfPosition(sourceFile, a[1].getEnd()) },
- value: a[1].getText()
- }));
- return {
- localizeCalls: localizeCalls.toArray(),
- nlsExpressions: nlsExpressions.toArray()
- };
- }
- nls_1.analyze = analyze;
- class TextModel {
- constructor(contents) {
- const regex = /\r\n|\r|\n/g;
- let index = 0;
- let match;
- this.lines = [];
- this.lineEndings = [];
- while (match = regex.exec(contents)) {
- this.lines.push(contents.substring(index, match.index));
- this.lineEndings.push(match[0]);
- index = regex.lastIndex;
- }
- if (contents.length > 0) {
- this.lines.push(contents.substring(index, contents.length));
- this.lineEndings.push('');
- }
- }
- get(index) {
- return this.lines[index];
- }
- set(index, line) {
- this.lines[index] = line;
- }
- get lineCount() {
- return this.lines.length;
- }
- /**
- * Applies patch(es) to the model.
- * Multiple patches must be ordered.
- * Does not support patches spanning multiple lines.
- */
- apply(patch) {
- const startLineNumber = patch.span.start.line;
- const endLineNumber = patch.span.end.line;
- const startLine = this.lines[startLineNumber] || '';
- const endLine = this.lines[endLineNumber] || '';
- this.lines[startLineNumber] = [
- startLine.substring(0, patch.span.start.character),
- patch.content,
- endLine.substring(patch.span.end.character)
- ].join('');
- for (let i = startLineNumber + 1; i <= endLineNumber; i++) {
- this.lines[i] = '';
- }
- }
- toString() {
- return lazy(this.lines).zip(this.lineEndings)
- .flatten().toArray().join('');
- }
- }
- nls_1.TextModel = TextModel;
- function patchJavascript(patches, contents, moduleId) {
- const model = new nls.TextModel(contents);
- // patch the localize calls
- lazy(patches).reverse().each(p => model.apply(p));
- // patch the 'vs/nls' imports
- const firstLine = model.get(0);
- const patchedFirstLine = firstLine.replace(/(['"])vs\/nls\1/g, `$1vs/nls!${moduleId}$1`);
- model.set(0, patchedFirstLine);
- return model.toString();
- }
- nls_1.patchJavascript = patchJavascript;
- function patchSourcemap(patches, rsm, smc) {
- const smg = new sm.SourceMapGenerator({
- file: rsm.file,
- sourceRoot: rsm.sourceRoot
- });
- patches = patches.reverse();
- let currentLine = -1;
- let currentLineDiff = 0;
- let source = null;
- smc.eachMapping(m => {
- const patch = patches[patches.length - 1];
- const original = { line: m.originalLine, column: m.originalColumn };
- const generated = { line: m.generatedLine, column: m.generatedColumn };
- if (currentLine !== generated.line) {
- currentLineDiff = 0;
- }
- currentLine = generated.line;
- generated.column += currentLineDiff;
- if (patch && m.generatedLine - 1 === patch.span.end.line && m.generatedColumn === patch.span.end.character) {
- const originalLength = patch.span.end.character - patch.span.start.character;
- const modifiedLength = patch.content.length;
- const lengthDiff = modifiedLength - originalLength;
- currentLineDiff += lengthDiff;
- generated.column += lengthDiff;
- patches.pop();
- }
- source = rsm.sourceRoot ? path.relative(rsm.sourceRoot, m.source) : m.source;
- source = source.replace(/\\/g, '/');
- smg.addMapping({ source, name: m.name, original, generated });
- }, null, sm.SourceMapConsumer.GENERATED_ORDER);
- if (source) {
- smg.setSourceContent(source, smc.sourceContentFor(source));
- }
- return JSON.parse(smg.toString());
- }
- nls_1.patchSourcemap = patchSourcemap;
- function patch(moduleId, typescript, javascript, sourcemap) {
- const { localizeCalls, nlsExpressions } = analyze(typescript);
- if (localizeCalls.length === 0) {
- return { javascript, sourcemap };
- }
- const nlsKeys = template(localizeCalls.map(lc => lc.key));
- const nls = template(localizeCalls.map(lc => lc.value));
- const smc = new sm.SourceMapConsumer(sourcemap);
- const positionFrom = mappedPositionFrom.bind(null, sourcemap.sources[0]);
- let i = 0;
- // build patches
- const patches = lazy(localizeCalls)
- .map(lc => ([
- { range: lc.keySpan, content: '' + (i++) },
- { range: lc.valueSpan, content: 'null' }
- ]))
- .flatten()
- .map(c => {
- const start = lcFrom(smc.generatedPositionFor(positionFrom(c.range.start)));
- const end = lcFrom(smc.generatedPositionFor(positionFrom(c.range.end)));
- return { span: { start, end }, content: c.content };
- })
- .toArray();
- javascript = patchJavascript(patches, javascript, moduleId);
- // since imports are not within the sourcemap information,
- // we must do this MacGyver style
- if (nlsExpressions.length) {
- javascript = javascript.replace(/^define\(.*$/m, line => {
- return line.replace(/(['"])vs\/nls\1/g, `$1vs/nls!${moduleId}$1`);
- });
- }
- sourcemap = patchSourcemap(patches, sourcemap, smc);
- return { javascript, sourcemap, nlsKeys, nls };
- }
- nls_1.patch = patch;
- function patchFiles(javascriptFile, typescript) {
- // hack?
- const moduleId = javascriptFile.relative
- .replace(/\.js$/, '')
- .replace(/\\/g, '/');
- const { javascript, sourcemap, nlsKeys, nls } = patch(moduleId, typescript, javascriptFile.contents.toString(), javascriptFile.sourceMap);
- const result = [fileFrom(javascriptFile, javascript)];
- result[0].sourceMap = sourcemap;
- if (nlsKeys) {
- result.push(fileFrom(javascriptFile, nlsKeys, javascriptFile.path.replace(/\.js$/, '.nls.keys.js')));
- }
- if (nls) {
- result.push(fileFrom(javascriptFile, nls, javascriptFile.path.replace(/\.js$/, '.nls.js')));
- }
- return result;
- }
- nls_1.patchFiles = patchFiles;
-})(nls || (nls = {}));
-module.exports = nls;
diff --git a/build/lib/node.js b/build/lib/node.js
deleted file mode 100644
index 403ae3d9657..00000000000
--- a/build/lib/node.js
+++ /dev/null
@@ -1,15 +0,0 @@
-"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/optimize.js b/build/lib/optimize.js
deleted file mode 100644
index 5098a093f9e..00000000000
--- a/build/lib/optimize.js
+++ /dev/null
@@ -1,232 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.minifyTask = exports.optimizeTask = exports.loaderConfig = void 0;
-const es = require("event-stream");
-const gulp = require("gulp");
-const concat = require("gulp-concat");
-const minifyCSS = require("gulp-cssnano");
-const filter = require("gulp-filter");
-const flatmap = require("gulp-flatmap");
-const sourcemaps = require("gulp-sourcemaps");
-const uglify = require("gulp-uglify");
-const composer = require("gulp-uglify/composer");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const path = require("path");
-const pump = require("pump");
-const terser = require("terser");
-const VinylFile = require("vinyl");
-const bundle = require("./bundle");
-const i18n_1 = require("./i18n");
-const stats_1 = require("./stats");
-const util = require("./util");
-const REPO_ROOT_PATH = path.join(__dirname, '../..');
-function log(prefix, message) {
- fancyLog(ansiColors.cyan('[' + prefix + ']'), message);
-}
-function loaderConfig(emptyPaths) {
- const result = {
- paths: {
- 'vs': 'out-build/vs',
- 'vscode': 'empty:'
- },
- nodeModules: emptyPaths || []
- };
- result['vs/css'] = { inlineResources: true };
- return result;
-}
-exports.loaderConfig = loaderConfig;
-const IS_OUR_COPYRIGHT_REGEXP = /Copyright \(C\) Microsoft Corporation/i;
-function loader(src, bundledFileHeader, bundleLoader) {
- let sources = [
- `${src}/vs/loader.js`
- ];
- if (bundleLoader) {
- sources = sources.concat([
- `${src}/vs/css.js`,
- `${src}/vs/nls.js`
- ]);
- }
- let isFirst = true;
- return (gulp
- .src(sources, { base: `${src}` })
- .pipe(es.through(function (data) {
- if (isFirst) {
- isFirst = false;
- this.emit('data', new VinylFile({
- path: 'fake',
- base: '',
- contents: Buffer.from(bundledFileHeader)
- }));
- this.emit('data', data);
- }
- else {
- this.emit('data', data);
- }
- }))
- .pipe(concat('vs/loader.js')));
-}
-function toConcatStream(src, bundledFileHeader, sources, dest) {
- const useSourcemaps = /\.js$/.test(dest) && !/\.nls\.js$/.test(dest);
- // If a bundle ends up including in any of the sources our copyright, then
- // insert a fake source at the beginning of each bundle with our copyright
- let containsOurCopyright = false;
- for (let i = 0, len = sources.length; i < len; i++) {
- const fileContents = sources[i].contents;
- if (IS_OUR_COPYRIGHT_REGEXP.test(fileContents)) {
- containsOurCopyright = true;
- break;
- }
- }
- if (containsOurCopyright) {
- sources.unshift({
- path: null,
- contents: bundledFileHeader
- });
- }
- const treatedSources = sources.map(function (source) {
- const root = source.path ? REPO_ROOT_PATH.replace(/\\/g, '/') : '';
- const base = source.path ? root + `/${src}` : '';
- return new VinylFile({
- path: source.path ? root + '/' + source.path.replace(/\\/g, '/') : 'fake',
- base: base,
- contents: Buffer.from(source.contents)
- });
- });
- return es.readArray(treatedSources)
- .pipe(useSourcemaps ? util.loadSourcemaps() : es.through())
- .pipe(concat(dest))
- .pipe(stats_1.createStatsStream(dest));
-}
-function toBundleStream(src, bundledFileHeader, bundles) {
- return es.merge(bundles.map(function (bundle) {
- 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 resources = opts.resources;
- const loaderConfig = opts.loaderConfig;
- const bundledFileHeader = opts.header || DEFAULT_FILE_HEADER;
- const bundleLoader = (typeof opts.bundleLoader === 'undefined' ? true : opts.bundleLoader);
- const out = opts.out;
- return function () {
- const bundlesStream = es.through(); // this stream will contain the bundled files
- const resourcesStream = es.through(); // this stream will contain the resources
- const bundleInfoStream = es.through(); // this stream will contain bundleInfo.json
- bundle.bundle(entryPoints, loaderConfig, function (err, result) {
- if (err || !result) {
- return bundlesStream.emit('error', JSON.stringify(err));
- }
- toBundleStream(src, bundledFileHeader, result.files).pipe(bundlesStream);
- // Remove css inlined resources
- const filteredResources = resources.slice();
- result.cssInlinedResources.forEach(function (resource) {
- if (process.env['VSCODE_BUILD_VERBOSE']) {
- log('optimizer', 'excluding inlined: ' + resource);
- }
- filteredResources.push('!' + resource);
- });
- gulp.src(filteredResources, { base: `${src}`, allowEmpty: true }).pipe(resourcesStream);
- const bundleInfoArray = [];
- if (opts.bundleInfo) {
- bundleInfoArray.push(new VinylFile({
- path: 'bundleInfo.json',
- base: '.',
- contents: Buffer.from(JSON.stringify(result.bundleData, null, '\t'))
- }));
- }
- es.readArray(bundleInfoArray).pipe(bundleInfoStream);
- });
- const result = es.merge(loader(src, bundledFileHeader, bundleLoader), bundlesStream, resourcesStream, bundleInfoStream);
- return result
- .pipe(sourcemaps.write('./', {
- sourceRoot: undefined,
- addComment: true,
- includeContent: true
- }))
- .pipe(opts.languages && opts.languages.length ? i18n_1.processNlsFiles({
- fileHeader: bundledFileHeader,
- languages: opts.languages
- }) : es.through())
- .pipe(gulp.dest(out));
- };
-}
-exports.optimizeTask = optimizeTask;
-/**
- * Wrap around uglify and allow the preserveComments function
- * to have a file "context" to include our copyright only once per file.
- */
-function uglifyWithCopyrights() {
- const preserveComments = (f) => {
- return (_node, comment) => {
- const text = comment.value;
- const type = comment.type;
- if (/@minifier_do_not_preserve/.test(text)) {
- return false;
- }
- const isOurCopyright = IS_OUR_COPYRIGHT_REGEXP.test(text);
- if (isOurCopyright) {
- if (f.__hasOurCopyright) {
- return false;
- }
- f.__hasOurCopyright = true;
- return true;
- }
- if ('comment2' === type) {
- // check for /*!. Note that text doesn't contain leading /*
- return (text.length > 0 && text[0] === '!') || /@preserve|license|@cc_on|copyright/i.test(text);
- }
- else if ('comment1' === type) {
- return /license|copyright/i.test(text);
- }
- return false;
- };
- };
- const minify = composer(terser);
- const input = es.through();
- const output = input
- .pipe(flatmap((stream, f) => {
- return stream.pipe(minify({
- output: {
- comments: preserveComments(f),
- max_line_len: 1024
- }
- }));
- }));
- return es.duplex(input, output);
-}
-function minifyTask(src, sourceMapBaseUrl) {
- const sourceMappingURL = sourceMapBaseUrl ? ((f) => `${sourceMapBaseUrl}/${f.relative}.map`) : undefined;
- 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.mapSources((sourcePath) => {
- if (sourcePath === 'bootstrap-fork.js') {
- return 'bootstrap-fork.orig.js';
- }
- return sourcePath;
- }), sourcemaps.write('./', {
- sourceMappingURL,
- sourceRoot: undefined,
- includeContent: true,
- addComment: true
- }), gulp.dest(src + '-min'), (err) => {
- if (err instanceof uglify.GulpUglifyError) {
- console.error(`Uglify error in '${err.cause && err.cause.filename}'`);
- }
- cb(err);
- });
- };
-}
-exports.minifyTask = minifyTask;
diff --git a/build/lib/optimize.ts b/build/lib/optimize.ts
index 973b843aa59..86400889de8 100644
--- a/build/lib/optimize.ts
+++ b/build/lib/optimize.ts
@@ -18,7 +18,6 @@ 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';
import * as terser from 'terser';
import * as VinylFile from 'vinyl';
import * as bundle from './bundle';
@@ -32,13 +31,13 @@ function log(prefix: string, message: string): void {
fancyLog(ansiColors.cyan('[' + prefix + ']'), message);
}
-export function loaderConfig(emptyPaths?: string[]) {
+export function loaderConfig() {
const result: any = {
paths: {
'vs': 'out-build/vs',
'vscode': 'empty:'
},
- nodeModules: emptyPaths || []
+ amdModulesPattern: /^vs\//
};
result['vs/css'] = { inlineResources: true };
@@ -48,10 +47,6 @@ export function loaderConfig(emptyPaths?: string[]) {
const IS_OUR_COPYRIGHT_REGEXP = /Copyright \(C\) Microsoft Corporation/i;
-declare class FileSourceMap extends VinylFile {
- public sourceMap: sm.RawSourceMap;
-}
-
function loader(src: string, bundledFileHeader: string, bundleLoader: boolean): NodeJS.ReadWriteStream {
let sources = [
`${src}/vs/loader.js`
@@ -72,7 +67,7 @@ function loader(src: string, bundledFileHeader: string, bundleLoader: boolean):
isFirst = false;
this.emit('data', new VinylFile({
path: 'fake',
- base: '',
+ base: '.',
contents: Buffer.from(bundledFileHeader)
}));
this.emit('data', data);
@@ -84,7 +79,7 @@ function loader(src: string, bundledFileHeader: string, bundleLoader: boolean):
);
}
-function toConcatStream(src: string, bundledFileHeader: string, sources: bundle.IFile[], dest: string): NodeJS.ReadWriteStream {
+function toConcatStream(src: string, bundledFileHeader: string, sources: bundle.IFile[], dest: string, fileContentMapper: (contents: string, path: string) => string): NodeJS.ReadWriteStream {
const useSourcemaps = /\.js$/.test(dest) && !/\.nls\.js$/.test(dest);
// If a bundle ends up including in any of the sources our copyright, then
@@ -107,12 +102,14 @@ function toConcatStream(src: string, bundledFileHeader: string, sources: bundle.
const treatedSources = sources.map(function (source) {
const root = source.path ? REPO_ROOT_PATH.replace(/\\/g, '/') : '';
- const base = source.path ? root + `/${src}` : '';
+ const base = source.path ? root + `/${src}` : '.';
+ const path = source.path ? root + '/' + source.path.replace(/\\/g, '/') : 'fake';
+ const contents = source.path ? fileContentMapper(source.contents, path) : source.contents;
return new VinylFile({
- path: source.path ? root + '/' + source.path.replace(/\\/g, '/') : 'fake',
+ path: path,
base: base,
- contents: Buffer.from(source.contents)
+ contents: Buffer.from(contents)
});
});
@@ -122,9 +119,9 @@ function toConcatStream(src: string, bundledFileHeader: string, sources: bundle.
.pipe(createStatsStream(dest));
}
-function toBundleStream(src: string, bundledFileHeader: string, bundles: bundle.IConcatFile[]): NodeJS.ReadWriteStream {
+function toBundleStream(src: string, bundledFileHeader: string, bundles: bundle.IConcatFile[], fileContentMapper: (contents: string, path: string) => string): NodeJS.ReadWriteStream {
return es.merge(bundles.map(function (bundle) {
- return toConcatStream(src, bundledFileHeader, bundle.sources, bundle.dest);
+ return toConcatStream(src, bundledFileHeader, bundle.sources, bundle.dest, fileContentMapper);
}));
}
@@ -162,6 +159,12 @@ export interface IOptimizeTaskOpts {
* (out folder name)
*/
languages?: Language[];
+ /**
+ * File contents interceptor
+ * @param contents The contens of the file
+ * @param path The absolute file path, always using `/`, even on Windows
+ */
+ fileContentMapper?: (contents: string, path: string) => string;
}
const DEFAULT_FILE_HEADER = [
@@ -178,6 +181,7 @@ export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStr
const bundledFileHeader = opts.header || DEFAULT_FILE_HEADER;
const bundleLoader = (typeof opts.bundleLoader === 'undefined' ? true : opts.bundleLoader);
const out = opts.out;
+ const fileContentMapper = opts.fileContentMapper || ((contents: string, _path: string) => contents);
return function () {
const bundlesStream = es.through(); // this stream will contain the bundled files
@@ -187,7 +191,7 @@ export function optimizeTask(opts: IOptimizeTaskOpts): () => NodeJS.ReadWriteStr
bundle.bundle(entryPoints, loaderConfig, function (err, result) {
if (err || !result) { return bundlesStream.emit('error', JSON.stringify(err)); }
- toBundleStream(src, bundledFileHeader, result.files).pipe(bundlesStream);
+ toBundleStream(src, bundledFileHeader, result.files, fileContentMapper).pipe(bundlesStream);
// Remove css inlined resources
const filteredResources = resources.slice();
diff --git a/build/lib/preLaunch.ts b/build/lib/preLaunch.ts
new file mode 100644
index 00000000000..57441870cc4
--- /dev/null
+++ b/build/lib/preLaunch.ts
@@ -0,0 +1,65 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+
+// @ts-check
+
+import * as path from 'path';
+import { spawn } from 'child_process';
+import { promises as fs } from 'fs';
+
+const yarn = process.platform === 'win32' ? 'yarn.cmd' : 'yarn';
+const rootDir = path.resolve(__dirname, '..', '..');
+
+function runProcess(command: string, args: ReadonlyArray = []) {
+ return new Promise((resolve, reject) => {
+ const child = spawn(command, args, { cwd: rootDir, stdio: 'inherit', env: process.env });
+ child.on('exit', err => !err ? resolve() : process.exit(err ?? 1));
+ child.on('error', reject);
+ });
+}
+
+async function exists(subdir: string) {
+ try {
+ await fs.stat(path.join(rootDir, subdir));
+ return true;
+ } catch {
+ return false;
+ }
+}
+
+async function ensureNodeModules() {
+ if (!(await exists('node_modules'))) {
+ await runProcess(yarn);
+ }
+}
+
+async function getElectron() {
+ await runProcess(yarn, ['electron']);
+}
+
+async function ensureCompiled() {
+ if (!(await exists('out'))) {
+ await runProcess(yarn, ['compile']);
+ }
+}
+
+async function main() {
+ await ensureNodeModules();
+ await getElectron();
+ await ensureCompiled();
+
+ // Can't require this until after dependencies are installed
+ const { getBuiltInExtensions } = require('./builtInExtensions');
+ await getBuiltInExtensions();
+}
+
+if (require.main === module) {
+ main().catch(err => {
+ console.error(err);
+ process.exit(1);
+ });
+}
diff --git a/build/lib/reporter.js b/build/lib/reporter.js
deleted file mode 100644
index 67615bf48dc..00000000000
--- a/build/lib/reporter.js
+++ /dev/null
@@ -1,86 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.createReporter = void 0;
-const es = require("event-stream");
-const _ = require("underscore");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const fs = require("fs");
-const path = require("path");
-const allErrors = [];
-let startTime = null;
-let count = 0;
-function onStart() {
- if (count++ > 0) {
- return;
- }
- startTime = new Date().getTime();
- fancyLog(`Starting ${ansiColors.green('compilation')}...`);
-}
-function onEnd() {
- if (--count > 0) {
- return;
- }
- log();
-}
-const buildLogPath = path.join(path.dirname(path.dirname(__dirname)), '.build', 'log');
-try {
- fs.mkdirSync(path.dirname(buildLogPath));
-}
-catch (err) {
- // ignore
-}
-function log() {
- const errors = _.flatten(allErrors);
- const seen = new Set();
- errors.map(err => {
- if (!seen.has(err)) {
- seen.add(err);
- fancyLog(`${ansiColors.red('Error')}: ${err}`);
- }
- });
- const regex = /^([^(]+)\((\d+),(\d+)\): (.*)$/;
- const messages = errors
- .map(err => regex.exec(err))
- .filter(match => !!match)
- .map(x => x)
- .map(([, path, line, column, message]) => ({ path, line: parseInt(line), column: parseInt(column), message }));
- try {
- fs.writeFileSync(buildLogPath, JSON.stringify(messages));
- }
- catch (err) {
- //noop
- }
- fancyLog(`Finished ${ansiColors.green('compilation')} with ${errors.length} errors after ${ansiColors.magenta((new Date().getTime() - startTime) + ' ms')}`);
-}
-function createReporter() {
- const errors = [];
- allErrors.push(errors);
- const result = (err) => errors.push(err);
- result.hasErrors = () => errors.length > 0;
- result.end = (emitError) => {
- errors.length = 0;
- onStart();
- return es.through(undefined, function () {
- onEnd();
- if (emitError && errors.length > 0) {
- if (!errors.__logged__) {
- log();
- }
- errors.__logged__ = true;
- const err = new Error(`Found ${errors.length} errors`);
- err.__reporter__ = true;
- this.emit('error', err);
- }
- else {
- this.emit('end');
- }
- });
- };
- return result;
-}
-exports.createReporter = createReporter;
diff --git a/build/lib/snapshotLoader.js b/build/lib/snapshotLoader.js
deleted file mode 100644
index ee626a0f7f1..00000000000
--- a/build/lib/snapshotLoader.js
+++ /dev/null
@@ -1,55 +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';
-var snaps;
-(function (snaps) {
- const fs = require('fs');
- const path = require('path');
- const os = require('os');
- const cp = require('child_process');
- const mksnapshot = path.join(__dirname, `../../node_modules/.bin/${process.platform === 'win32' ? 'mksnapshot.cmd' : 'mksnapshot'}`);
- const product = require('../../product.json');
- const arch = (process.argv.join('').match(/--arch=(.*)/) || [])[1];
- //
- let loaderFilepath;
- let startupBlobFilepath;
- switch (process.platform) {
- case 'darwin':
- loaderFilepath = `VSCode-darwin/${product.nameLong}.app/Contents/Resources/app/out/vs/loader.js`;
- startupBlobFilepath = `VSCode-darwin/${product.nameLong}.app/Contents/Frameworks/Electron Framework.framework/Resources/snapshot_blob.bin`;
- break;
- case 'win32':
- case 'linux':
- loaderFilepath = `VSCode-${process.platform}-${arch}/resources/app/out/vs/loader.js`;
- startupBlobFilepath = `VSCode-${process.platform}-${arch}/snapshot_blob.bin`;
- break;
- default:
- throw new Error('Unknown platform');
- }
- loaderFilepath = path.join(__dirname, '../../../', loaderFilepath);
- startupBlobFilepath = path.join(__dirname, '../../../', startupBlobFilepath);
- snapshotLoader(loaderFilepath, startupBlobFilepath);
- function snapshotLoader(loaderFilepath, startupBlobFilepath) {
- const inputFile = fs.readFileSync(loaderFilepath);
- const wrappedInputFile = `
- var Monaco_Loader_Init;
- (function() {
- var doNotInitLoader = true;
- ${inputFile.toString()};
- Monaco_Loader_Init = function() {
- AMDLoader.init();
- CSSLoaderPlugin.init();
- NLSLoaderPlugin.init();
-
- return { define, require };
- }
- })();
- `;
- const wrappedInputFilepath = path.join(os.tmpdir(), 'wrapped-loader.js');
- console.log(wrappedInputFilepath);
- fs.writeFileSync(wrappedInputFilepath, wrappedInputFile);
- cp.execFileSync(mksnapshot, [wrappedInputFilepath, `--startup_blob`, startupBlobFilepath]);
- }
-})(snaps || (snaps = {}));
diff --git a/build/lib/standalone.js b/build/lib/standalone.js
deleted file mode 100644
index 531194c35fd..00000000000
--- a/build/lib/standalone.js
+++ /dev/null
@@ -1,314 +0,0 @@
-"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 });
-exports.createESMSourcesAndResources2 = exports.extractEditor = void 0;
-const ts = require("typescript");
-const fs = require("fs");
-const path = require("path");
-const tss = require("./treeshaking");
-const REPO_ROOT = path.join(__dirname, '../../');
-const SRC_DIR = path.join(REPO_ROOT, 'src');
-let dirCache = {};
-function writeFile(filePath, contents) {
- function ensureDirs(dirPath) {
- if (dirCache[dirPath]) {
- return;
- }
- dirCache[dirPath] = true;
- ensureDirs(path.dirname(dirPath));
- if (fs.existsSync(dirPath)) {
- return;
- }
- fs.mkdirSync(dirPath);
- }
- ensureDirs(path.dirname(filePath));
- fs.writeFileSync(filePath, contents);
-}
-function extractEditor(options) {
- 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;
- options.compilerOptions = compilerOptions;
- console.log(`Running tree shaker with shakeLevel ${tss.toStringShakeLevel(options.shakeLevel)}`);
- // Take the extra included .d.ts files from `tsconfig.monaco.json`
- options.typings = tsConfig.include.filter(includedFile => /\.d\.ts$/.test(includedFile));
- let result = tss.shake(options);
- for (let fileName in result) {
- if (result.hasOwnProperty(fileName)) {
- writeFile(path.join(options.destRoot, fileName), result[fileName]);
- }
- }
- let copied = {};
- const copyFile = (fileName) => {
- if (copied[fileName]) {
- return;
- }
- copied[fileName] = true;
- const srcPath = path.join(options.sourcesRoot, fileName);
- const dstPath = path.join(options.destRoot, fileName);
- writeFile(dstPath, fs.readFileSync(srcPath));
- };
- const writeOutputFile = (fileName, contents) => {
- writeFile(path.join(options.destRoot, fileName), contents);
- };
- for (let fileName in result) {
- if (result.hasOwnProperty(fileName)) {
- const fileContents = result[fileName];
- const info = ts.preProcessFile(fileContents);
- for (let i = info.importedFiles.length - 1; i >= 0; i--) {
- const importedFileName = info.importedFiles[i].fileName;
- let importedFilePath;
- if (/^vs\/css!/.test(importedFileName)) {
- importedFilePath = importedFileName.substr('vs/css!'.length) + '.css';
- }
- else {
- importedFilePath = importedFileName;
- }
- if (/(^\.\/)|(^\.\.\/)/.test(importedFilePath)) {
- importedFilePath = path.join(path.dirname(fileName), importedFilePath);
- }
- if (/\.css$/.test(importedFilePath)) {
- transportCSS(importedFilePath, copyFile, writeOutputFile);
- }
- else {
- if (fs.existsSync(path.join(options.sourcesRoot, importedFilePath + '.js'))) {
- copyFile(importedFilePath + '.js');
- }
- }
- }
- }
- }
- delete tsConfig.compilerOptions.moduleResolution;
- writeOutputFile('tsconfig.json', JSON.stringify(tsConfig, null, '\t'));
- [
- 'vs/css.build.js',
- 'vs/css.d.ts',
- 'vs/css.js',
- 'vs/loader.js',
- 'vs/nls.build.js',
- 'vs/nls.d.ts',
- 'vs/nls.js',
- 'vs/nls.mock.ts',
- ].forEach(copyFile);
-}
-exports.extractEditor = extractEditor;
-function createESMSourcesAndResources2(options) {
- const SRC_FOLDER = path.join(REPO_ROOT, options.srcFolder);
- const OUT_FOLDER = path.join(REPO_ROOT, options.outFolder);
- const OUT_RESOURCES_FOLDER = path.join(REPO_ROOT, options.outResourcesFolder);
- const getDestAbsoluteFilePath = (file) => {
- let dest = options.renames[file.replace(/\\/g, '/')] || file;
- if (dest === 'tsconfig.json') {
- return path.join(OUT_FOLDER, `tsconfig.json`);
- }
- if (/\.ts$/.test(dest)) {
- return path.join(OUT_FOLDER, dest);
- }
- return path.join(OUT_RESOURCES_FOLDER, dest);
- };
- const allFiles = walkDirRecursive(SRC_FOLDER);
- for (const file of allFiles) {
- if (options.ignores.indexOf(file.replace(/\\/g, '/')) >= 0) {
- continue;
- }
- if (file === 'tsconfig.json') {
- const tsConfig = JSON.parse(fs.readFileSync(path.join(SRC_FOLDER, file)).toString());
- tsConfig.compilerOptions.module = 'es6';
- tsConfig.compilerOptions.outDir = path.join(path.relative(OUT_FOLDER, OUT_RESOURCES_FOLDER), 'vs').replace(/\\/g, '/');
- write(getDestAbsoluteFilePath(file), JSON.stringify(tsConfig, null, '\t'));
- continue;
- }
- if (/\.d\.ts$/.test(file) || /\.css$/.test(file) || /\.js$/.test(file) || /\.ttf$/.test(file)) {
- // Transport the files directly
- write(getDestAbsoluteFilePath(file), fs.readFileSync(path.join(SRC_FOLDER, file)));
- continue;
- }
- if (/\.ts$/.test(file)) {
- // Transform the .ts file
- let fileContents = fs.readFileSync(path.join(SRC_FOLDER, file)).toString();
- const info = ts.preProcessFile(fileContents);
- for (let i = info.importedFiles.length - 1; i >= 0; i--) {
- const importedFilename = info.importedFiles[i].fileName;
- const pos = info.importedFiles[i].pos;
- const end = info.importedFiles[i].end;
- let importedFilepath;
- if (/^vs\/css!/.test(importedFilename)) {
- importedFilepath = importedFilename.substr('vs/css!'.length) + '.css';
- }
- else {
- importedFilepath = importedFilename;
- }
- if (/(^\.\/)|(^\.\.\/)/.test(importedFilepath)) {
- importedFilepath = path.join(path.dirname(file), importedFilepath);
- }
- let relativePath;
- if (importedFilepath === path.dirname(file).replace(/\\/g, '/')) {
- relativePath = '../' + path.basename(path.dirname(file));
- }
- else if (importedFilepath === path.dirname(path.dirname(file)).replace(/\\/g, '/')) {
- relativePath = '../../' + path.basename(path.dirname(path.dirname(file)));
- }
- else {
- relativePath = path.relative(path.dirname(file), importedFilepath);
- }
- relativePath = relativePath.replace(/\\/g, '/');
- if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) {
- relativePath = './' + relativePath;
- }
- fileContents = (fileContents.substring(0, pos + 1)
- + relativePath
- + fileContents.substring(end + 1));
- }
- fileContents = fileContents.replace(/import ([a-zA-z0-9]+) = require\(('[^']+')\);/g, function (_, m1, m2) {
- return `import * as ${m1} from ${m2};`;
- });
- write(getDestAbsoluteFilePath(file), fileContents);
- continue;
- }
- console.log(`UNKNOWN FILE: ${file}`);
- }
- function walkDirRecursive(dir) {
- if (dir.charAt(dir.length - 1) !== '/' || dir.charAt(dir.length - 1) !== '\\') {
- dir += '/';
- }
- let result = [];
- _walkDirRecursive(dir, result, dir.length);
- return result;
- }
- function _walkDirRecursive(dir, result, trimPos) {
- const files = fs.readdirSync(dir);
- for (let i = 0; i < files.length; i++) {
- const file = path.join(dir, files[i]);
- if (fs.statSync(file).isDirectory()) {
- _walkDirRecursive(file, result, trimPos);
- }
- else {
- result.push(file.substr(trimPos));
- }
- }
- }
- function write(absoluteFilePath, contents) {
- if (/(\.ts$)|(\.js$)/.test(absoluteFilePath)) {
- contents = toggleComments(contents.toString());
- }
- writeFile(absoluteFilePath, contents);
- function toggleComments(fileContents) {
- let lines = fileContents.split(/\r\n|\r|\n/);
- let mode = 0;
- for (let i = 0; i < lines.length; i++) {
- const line = lines[i];
- if (mode === 0) {
- if (/\/\/ ESM-comment-begin/.test(line)) {
- mode = 1;
- continue;
- }
- if (/\/\/ ESM-uncomment-begin/.test(line)) {
- mode = 2;
- continue;
- }
- continue;
- }
- if (mode === 1) {
- if (/\/\/ ESM-comment-end/.test(line)) {
- mode = 0;
- continue;
- }
- lines[i] = '// ' + line;
- continue;
- }
- if (mode === 2) {
- if (/\/\/ ESM-uncomment-end/.test(line)) {
- mode = 0;
- continue;
- }
- lines[i] = line.replace(/^(\s*)\/\/ ?/, function (_, indent) {
- return indent;
- });
- }
- }
- return lines.join('\n');
- }
- }
-}
-exports.createESMSourcesAndResources2 = createESMSourcesAndResources2;
-function transportCSS(module, enqueue, write) {
- if (!/\.css/.test(module)) {
- return false;
- }
- const filename = path.join(SRC_DIR, module);
- const fileContents = fs.readFileSync(filename).toString();
- const inlineResources = 'base64'; // see https://github.com/Microsoft/monaco-editor/issues/148
- const newContents = _rewriteOrInlineUrls(fileContents, inlineResources === 'base64');
- write(module, newContents);
- return true;
- function _rewriteOrInlineUrls(contents, forceBase64) {
- return _replaceURL(contents, (url) => {
- const fontMatch = url.match(/^(.*).ttf\?(.*)$/);
- if (fontMatch) {
- const relativeFontPath = `${fontMatch[1]}.ttf`; // trim the query parameter
- const fontPath = path.join(path.dirname(module), relativeFontPath);
- enqueue(fontPath);
- return relativeFontPath;
- }
- const imagePath = path.join(path.dirname(module), url);
- const fileContents = fs.readFileSync(path.join(SRC_DIR, imagePath));
- const MIME = /\.svg$/.test(url) ? 'image/svg+xml' : 'image/png';
- let DATA = ';base64,' + fileContents.toString('base64');
- if (!forceBase64 && /\.svg$/.test(url)) {
- // .svg => url encode as explained at https://codepen.io/tigt/post/optimizing-svgs-in-data-uris
- let newText = fileContents.toString()
- .replace(/"/g, '\'')
- .replace(//g, '%3E')
- .replace(/&/g, '%26')
- .replace(/#/g, '%23')
- .replace(/\s+/g, ' ');
- let encodedData = ',' + newText;
- if (encodedData.length < DATA.length) {
- DATA = encodedData;
- }
- }
- return '"data:' + MIME + DATA + '"';
- });
- }
- function _replaceURL(contents, replacer) {
- // Use ")" as the terminator as quotes are oftentimes not used at all
- return contents.replace(/url\(\s*([^\)]+)\s*\)?/g, (_, ...matches) => {
- let url = matches[0];
- // Eliminate starting quotes (the initial whitespace is not captured)
- if (url.charAt(0) === '"' || url.charAt(0) === '\'') {
- url = url.substring(1);
- }
- // The ending whitespace is captured
- while (url.length > 0 && (url.charAt(url.length - 1) === ' ' || url.charAt(url.length - 1) === '\t')) {
- url = url.substring(0, url.length - 1);
- }
- // Eliminate ending quotes
- if (url.charAt(url.length - 1) === '"' || url.charAt(url.length - 1) === '\'') {
- url = url.substring(0, url.length - 1);
- }
- if (!_startsWith(url, 'data:') && !_startsWith(url, 'http://') && !_startsWith(url, 'https://')) {
- url = replacer(url);
- }
- return 'url(' + url + ')';
- });
- }
- function _startsWith(haystack, needle) {
- return haystack.length >= needle.length && haystack.substr(0, needle.length) === needle;
- }
-}
diff --git a/build/lib/standalone.ts b/build/lib/standalone.ts
index f80c611e6fc..51868c22fc5 100644
--- a/build/lib/standalone.ts
+++ b/build/lib/standalone.ts
@@ -55,6 +55,13 @@ export function extractEditor(options: tss.ITreeShakingOptions & { destRoot: str
// Take the extra included .d.ts files from `tsconfig.monaco.json`
options.typings = (tsConfig.include).filter(includedFile => /\.d\.ts$/.test(includedFile));
+ // Add extra .d.ts files from `node_modules/@types/`
+ if (Array.isArray(options.compilerOptions?.types)) {
+ options.compilerOptions.types.forEach((type: string) => {
+ options.typings.push(`../node_modules/@types/${type}/index.d.ts`);
+ });
+ }
+
let result = tss.shake(options);
for (let fileName in result) {
if (result.hasOwnProperty(fileName)) {
@@ -292,7 +299,7 @@ function transportCSS(module: string, enqueue: (module: string) => void, write:
const filename = path.join(SRC_DIR, module);
const fileContents = fs.readFileSync(filename).toString();
- const inlineResources = 'base64'; // see https://github.com/Microsoft/monaco-editor/issues/148
+ const inlineResources = 'base64'; // see https://github.com/microsoft/monaco-editor/issues/148
const newContents = _rewriteOrInlineUrls(fileContents, inlineResources === 'base64');
write(module, newContents);
diff --git a/build/lib/stats.js b/build/lib/stats.js
deleted file mode 100644
index 2ff02e405a6..00000000000
--- a/build/lib/stats.js
+++ /dev/null
@@ -1,137 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.submitAllStats = exports.createStatsStream = void 0;
-const es = require("event-stream");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const appInsights = require("applicationinsights");
-class Entry {
- constructor(name, totalCount, totalSize) {
- this.name = name;
- this.totalCount = totalCount;
- this.totalSize = totalSize;
- }
- toString(pretty) {
- if (!pretty) {
- if (this.totalCount === 1) {
- return `${this.name}: ${this.totalSize} bytes`;
- }
- else {
- return `${this.name}: ${this.totalCount} files with ${this.totalSize} bytes`;
- }
- }
- else {
- if (this.totalCount === 1) {
- return `Stats for '${ansiColors.grey(this.name)}': ${Math.round(this.totalSize / 1204)}KB`;
- }
- else {
- const count = this.totalCount < 100
- ? 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`;
- }
- }
- }
-}
-const _entries = new Map();
-function createStatsStream(group, log) {
- const entry = new Entry(group, 0, 0);
- _entries.set(entry.name, entry);
- return es.through(function (data) {
- const file = data;
- if (typeof file.path === 'string') {
- entry.totalCount += 1;
- if (Buffer.isBuffer(file.contents)) {
- entry.totalSize += file.contents.length;
- }
- else if (file.stat && typeof file.stat.size === 'number') {
- entry.totalSize += file.stat.size;
- }
- else {
- // funky file...
- }
- }
- this.emit('data', data);
- }, function () {
- if (log) {
- if (entry.totalCount === 1) {
- fancyLog(`Stats for '${ansiColors.grey(entry.name)}': ${Math.round(entry.totalSize / 1204)}KB`);
- }
- else {
- const count = entry.totalCount < 100
- ? 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');
- });
-}
-exports.createStatsStream = createStatsStream;
-function submitAllStats(productJson, commit) {
- const sorted = [];
- // move entries for single files to the front
- _entries.forEach(value => {
- if (value.totalCount === 1) {
- sorted.unshift(value);
- }
- else {
- sorted.push(value);
- }
- });
- // print to console
- for (const entry of sorted) {
- console.log(entry.toString(true));
- }
- // send data as telementry event when the
- // product is configured to send telemetry
- if (!productJson || !productJson.aiConfig || typeof productJson.aiConfig.asimovKey !== 'string') {
- return Promise.resolve(false);
- }
- return new Promise(resolve => {
- try {
- const sizes = {};
- const counts = {};
- for (const entry of sorted) {
- sizes[entry.name] = entry.totalSize;
- counts[entry.name] = entry.totalCount;
- }
- appInsights.setup(productJson.aiConfig.asimovKey)
- .setAutoCollectConsole(false)
- .setAutoCollectExceptions(false)
- .setAutoCollectPerformance(false)
- .setAutoCollectRequests(false)
- .setAutoCollectDependencies(false)
- .setAutoDependencyCorrelation(false)
- .start();
- appInsights.defaultClient.config.endpointUrl = 'https://vortex.data.microsoft.com/collect/v1';
- /* __GDPR__
- "monacoworkbench/packagemetrics" : {
- "commit" : {"classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },
- "size" : {"classification": "SystemMetaData", "purpose": "PerformanceAndHealth" },
- "count" : {"classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }
- }
- */
- appInsights.defaultClient.trackEvent({
- name: 'monacoworkbench/packagemetrics',
- properties: { commit, size: JSON.stringify(sizes), count: JSON.stringify(counts) }
- });
- appInsights.defaultClient.flush({
- callback: () => {
- appInsights.dispose();
- resolve(true);
- }
- });
- }
- catch (err) {
- console.error('ERROR sending build stats as telemetry event!');
- console.error(err);
- resolve(false);
- }
- });
-}
-exports.submitAllStats = submitAllStats;
diff --git a/build/lib/task.js b/build/lib/task.js
deleted file mode 100644
index d08ab8acde8..00000000000
--- a/build/lib/task.js
+++ /dev/null
@@ -1,97 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.define = exports.parallel = exports.series = void 0;
-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/test/i18n.test.js b/build/lib/test/i18n.test.js
deleted file mode 100644
index 3dd104259fa..00000000000
--- a/build/lib/test/i18n.test.js
+++ /dev/null
@@ -1,40 +0,0 @@
-"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 assert = require("assert");
-const i18n = require("../i18n");
-suite('XLF Parser Tests', () => {
- const sampleXlf = 'Key #1Key #2 &';
- const sampleTranslatedXlf = 'Key #1Кнопка #1Key #2 &Кнопка #2 &';
- const originalFilePath = 'vs/base/common/keybinding';
- const keys = ['key1', 'key2'];
- const messages = ['Key #1', 'Key #2 &'];
- const translatedMessages = { key1: 'Кнопка #1', key2: 'Кнопка #2 &' };
- test('Keys & messages to XLF conversion', () => {
- const xlf = new i18n.XLF('vscode-workbench');
- xlf.addFile(originalFilePath, keys, messages);
- const xlfString = xlf.toString();
- assert.strictEqual(xlfString.replace(/\s{2,}/g, ''), sampleXlf);
- });
- test('XLF to keys & messages conversion', () => {
- i18n.XLF.parse(sampleTranslatedXlf).then(function (resolvedFiles) {
- assert.deepEqual(resolvedFiles[0].messages, translatedMessages);
- assert.strictEqual(resolvedFiles[0].originalFilePath, originalFilePath);
- });
- });
- 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/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/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/treeshaking.js b/build/lib/treeshaking.js
deleted file mode 100644
index 5b1cf0591ec..00000000000
--- a/build/lib/treeshaking.js
+++ /dev/null
@@ -1,779 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.shake = exports.toStringShakeLevel = exports.ShakeLevel = void 0;
-const fs = require("fs");
-const path = require("path");
-const ts = require("typescript");
-const TYPESCRIPT_LIB_FOLDER = path.dirname(require.resolve('typescript/lib/lib.d.ts'));
-var ShakeLevel;
-(function (ShakeLevel) {
- ShakeLevel[ShakeLevel["Files"] = 0] = "Files";
- 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(options, diagnostics) {
- for (const diag of diagnostics) {
- let result = '';
- if (diag.file) {
- result += `${path.join(options.sourcesRoot, diag.file.fileName)}`;
- }
- if (diag.file && diag.start) {
- let location = diag.file.getLineAndCharacterOfPosition(diag.start);
- result += `:${location.line + 1}:${location.character}`;
- }
- result += ` - ` + JSON.stringify(diag.messageText);
- console.log(result);
- }
-}
-function shake(options) {
- const languageService = createTypeScriptLanguageService(options);
- const program = languageService.getProgram();
- const globalDiagnostics = program.getGlobalDiagnostics();
- if (globalDiagnostics.length > 0) {
- printDiagnostics(options, globalDiagnostics);
- throw new Error(`Compilation Errors encountered.`);
- }
- const syntacticDiagnostics = program.getSyntacticDiagnostics();
- if (syntacticDiagnostics.length > 0) {
- printDiagnostics(options, syntacticDiagnostics);
- throw new Error(`Compilation Errors encountered.`);
- }
- const semanticDiagnostics = program.getSemanticDiagnostics();
- if (semanticDiagnostics.length > 0) {
- printDiagnostics(options, semanticDiagnostics);
- throw new Error(`Compilation Errors encountered.`);
- }
- markNodes(languageService, options);
- return generateResult(languageService, options.shakeLevel);
-}
-exports.shake = shake;
-//#region Discovery, LanguageService & Setup
-function createTypeScriptLanguageService(options) {
- // Discover referenced files
- const FILES = discoverAndReadFiles(options);
- // Add fake usage files
- options.inlineEntryPoints.forEach((inlineEntryPoint, index) => {
- FILES[`inlineEntryPoint.${index}.ts`] = inlineEntryPoint;
- });
- // Add additional typings
- options.typings.forEach((typing) => {
- const filePath = path.join(options.sourcesRoot, typing);
- FILES[typing] = fs.readFileSync(filePath).toString();
- });
- // Resolve libs
- const RESOLVED_LIBS = processLibFiles(options);
- const compilerOptions = ts.convertCompilerOptionsFromJson(options.compilerOptions, options.sourcesRoot).options;
- const host = new TypeScriptLanguageServiceHost(RESOLVED_LIBS, FILES, compilerOptions);
- return ts.createLanguageService(host);
-}
-/**
- * Read imports and follow them until all files have been handled
- */
-function discoverAndReadFiles(options) {
- const FILES = {};
- const in_queue = Object.create(null);
- const queue = [];
- const enqueue = (moduleId) => {
- if (in_queue[moduleId]) {
- return;
- }
- in_queue[moduleId] = true;
- queue.push(moduleId);
- };
- options.entryPoints.forEach((entryPoint) => enqueue(entryPoint));
- while (queue.length > 0) {
- const moduleId = queue.shift();
- const dts_filename = path.join(options.sourcesRoot, moduleId + '.d.ts');
- if (fs.existsSync(dts_filename)) {
- const dts_filecontents = fs.readFileSync(dts_filename).toString();
- FILES[`${moduleId}.d.ts`] = dts_filecontents;
- continue;
- }
- const js_filename = path.join(options.sourcesRoot, moduleId + '.js');
- if (fs.existsSync(js_filename)) {
- // This is an import for a .js file, so ignore it...
- continue;
- }
- let ts_filename;
- if (options.redirects[moduleId]) {
- ts_filename = path.join(options.sourcesRoot, options.redirects[moduleId] + '.ts');
- }
- else {
- ts_filename = path.join(options.sourcesRoot, moduleId + '.ts');
- }
- const ts_filecontents = fs.readFileSync(ts_filename).toString();
- const info = ts.preProcessFile(ts_filecontents);
- for (let i = info.importedFiles.length - 1; i >= 0; i--) {
- const importedFileName = info.importedFiles[i].fileName;
- if (options.importIgnorePattern.test(importedFileName)) {
- // Ignore vs/css! imports
- continue;
- }
- let importedModuleId = importedFileName;
- if (/(^\.\/)|(^\.\.\/)/.test(importedModuleId)) {
- importedModuleId = path.join(path.dirname(moduleId), importedModuleId);
- }
- enqueue(importedModuleId);
- }
- FILES[`${moduleId}.ts`] = ts_filecontents;
- }
- return FILES;
-}
-/**
- * Read lib files and follow lib references
- */
-function processLibFiles(options) {
- const stack = [...options.compilerOptions.lib];
- const result = {};
- while (stack.length > 0) {
- const filename = `lib.${stack.shift().toLowerCase()}.d.ts`;
- const key = `defaultLib:${filename}`;
- if (!result[key]) {
- // add this file
- const filepath = path.join(TYPESCRIPT_LIB_FOLDER, filename);
- const sourceText = fs.readFileSync(filepath).toString();
- result[key] = sourceText;
- // precess dependencies and "recurse"
- const info = ts.preProcessFile(sourceText);
- for (let ref of info.libReferenceDirectives) {
- stack.push(ref.fileName);
- }
- }
- }
- return result;
-}
-/**
- * A TypeScript language service host
- */
-class TypeScriptLanguageServiceHost {
- constructor(libs, files, compilerOptions) {
- this._libs = libs;
- this._files = files;
- this._compilerOptions = compilerOptions;
- }
- // --- language service host ---------------
- getCompilationSettings() {
- return this._compilerOptions;
- }
- getScriptFileNames() {
- return ([]
- .concat(Object.keys(this._libs))
- .concat(Object.keys(this._files)));
- }
- getScriptVersion(_fileName) {
- return '1';
- }
- getProjectVersion() {
- return '1';
- }
- getScriptSnapshot(fileName) {
- if (this._files.hasOwnProperty(fileName)) {
- return ts.ScriptSnapshot.fromString(this._files[fileName]);
- }
- else if (this._libs.hasOwnProperty(fileName)) {
- return ts.ScriptSnapshot.fromString(this._libs[fileName]);
- }
- else {
- return ts.ScriptSnapshot.fromString('');
- }
- }
- getScriptKind(_fileName) {
- return ts.ScriptKind.TS;
- }
- getCurrentDirectory() {
- return '';
- }
- getDefaultLibFileName(_options) {
- return 'defaultLib:lib.d.ts';
- }
- isDefaultLibFileName(fileName) {
- return fileName === this.getDefaultLibFileName(this._compilerOptions);
- }
-}
-//#endregion
-//#region Tree Shaking
-var NodeColor;
-(function (NodeColor) {
- NodeColor[NodeColor["White"] = 0] = "White";
- NodeColor[NodeColor["Gray"] = 1] = "Gray";
- NodeColor[NodeColor["Black"] = 2] = "Black";
-})(NodeColor || (NodeColor = {}));
-function getColor(node) {
- return node.$$$color || 0 /* White */;
-}
-function setColor(node, color) {
- node.$$$color = color;
-}
-function nodeOrParentIsBlack(node) {
- while (node) {
- const color = getColor(node);
- if (color === 2 /* Black */) {
- return true;
- }
- node = node.parent;
- }
- return false;
-}
-function nodeOrChildIsBlack(node) {
- if (getColor(node) === 2 /* Black */) {
- return true;
- }
- for (const child of node.getChildren()) {
- if (nodeOrChildIsBlack(child)) {
- return true;
- }
- }
- return false;
-}
-function markNodes(languageService, options) {
- const program = languageService.getProgram();
- if (!program) {
- throw new Error('Could not get program from language service');
- }
- if (options.shakeLevel === 0 /* Files */) {
- // Mark all source files Black
- program.getSourceFiles().forEach((sourceFile) => {
- setColor(sourceFile, 2 /* Black */);
- });
- return;
- }
- const black_queue = [];
- const gray_queue = [];
- const export_import_queue = [];
- const sourceFilesLoaded = {};
- function enqueueTopLevelModuleStatements(sourceFile) {
- sourceFile.forEachChild((node) => {
- if (ts.isImportDeclaration(node)) {
- if (!node.importClause && ts.isStringLiteral(node.moduleSpecifier)) {
- setColor(node, 2 /* Black */);
- enqueueImport(node, node.moduleSpecifier.text);
- }
- return;
- }
- if (ts.isExportDeclaration(node)) {
- if (!node.exportClause && node.moduleSpecifier && ts.isStringLiteral(node.moduleSpecifier)) {
- // export * from "foo";
- setColor(node, 2 /* Black */);
- enqueueImport(node, node.moduleSpecifier.text);
- }
- if (node.exportClause && ts.isNamedExports(node.exportClause)) {
- for (const exportSpecifier of node.exportClause.elements) {
- export_import_queue.push(exportSpecifier);
- }
- }
- return;
- }
- if (ts.isExpressionStatement(node)
- || ts.isIfStatement(node)
- || ts.isIterationStatement(node, true)
- || ts.isExportAssignment(node)) {
- enqueue_black(node);
- }
- if (ts.isImportEqualsDeclaration(node)) {
- if (/export/.test(node.getFullText(sourceFile))) {
- // e.g. "export import Severity = BaseSeverity;"
- enqueue_black(node);
- }
- }
- });
- }
- function enqueue_gray(node) {
- if (nodeOrParentIsBlack(node) || getColor(node) === 1 /* Gray */) {
- return;
- }
- setColor(node, 1 /* Gray */);
- gray_queue.push(node);
- }
- function enqueue_black(node) {
- const previousColor = getColor(node);
- if (previousColor === 2 /* Black */) {
- return;
- }
- if (previousColor === 1 /* Gray */) {
- // remove from gray queue
- gray_queue.splice(gray_queue.indexOf(node), 1);
- setColor(node, 0 /* White */);
- // add to black queue
- enqueue_black(node);
- // // move from one queue to the other
- // black_queue.push(node);
- // setColor(node, NodeColor.Black);
- return;
- }
- if (nodeOrParentIsBlack(node)) {
- return;
- }
- const fileName = node.getSourceFile().fileName;
- if (/^defaultLib:/.test(fileName) || /\.d\.ts$/.test(fileName)) {
- setColor(node, 2 /* Black */);
- return;
- }
- const sourceFile = node.getSourceFile();
- if (!sourceFilesLoaded[sourceFile.fileName]) {
- sourceFilesLoaded[sourceFile.fileName] = true;
- enqueueTopLevelModuleStatements(sourceFile);
- }
- if (ts.isSourceFile(node)) {
- return;
- }
- setColor(node, 2 /* Black */);
- black_queue.push(node);
- if (options.shakeLevel === 2 /* ClassMembers */ && (ts.isMethodDeclaration(node) || ts.isMethodSignature(node) || ts.isPropertySignature(node) || ts.isPropertyDeclaration(node) || ts.isGetAccessor(node) || ts.isSetAccessor(node))) {
- const references = languageService.getReferencesAtPosition(node.getSourceFile().fileName, node.name.pos + node.name.getLeadingTriviaWidth());
- if (references) {
- for (let i = 0, len = references.length; i < len; i++) {
- const reference = references[i];
- const referenceSourceFile = program.getSourceFile(reference.fileName);
- if (!referenceSourceFile) {
- continue;
- }
- const referenceNode = getTokenAtPosition(referenceSourceFile, reference.textSpan.start, false, false);
- if (ts.isMethodDeclaration(referenceNode.parent)
- || ts.isPropertyDeclaration(referenceNode.parent)
- || ts.isGetAccessor(referenceNode.parent)
- || ts.isSetAccessor(referenceNode.parent)) {
- enqueue_gray(referenceNode.parent);
- }
- }
- }
- }
- }
- function enqueueFile(filename) {
- const sourceFile = program.getSourceFile(filename);
- if (!sourceFile) {
- console.warn(`Cannot find source file ${filename}`);
- return;
- }
- enqueue_black(sourceFile);
- }
- function enqueueImport(node, importText) {
- if (options.importIgnorePattern.test(importText)) {
- // this import should be ignored
- return;
- }
- const nodeSourceFile = node.getSourceFile();
- let fullPath;
- if (/(^\.\/)|(^\.\.\/)/.test(importText)) {
- fullPath = path.join(path.dirname(nodeSourceFile.fileName), importText) + '.ts';
- }
- else {
- fullPath = importText + '.ts';
- }
- enqueueFile(fullPath);
- }
- options.entryPoints.forEach(moduleId => enqueueFile(moduleId + '.ts'));
- // Add fake usage files
- options.inlineEntryPoints.forEach((_, index) => enqueueFile(`inlineEntryPoint.${index}.ts`));
- let step = 0;
- const checker = program.getTypeChecker();
- while (black_queue.length > 0 || gray_queue.length > 0) {
- ++step;
- let node;
- if (step % 100 === 0) {
- console.log(`Treeshaking - ${Math.floor(100 * step / (step + black_queue.length + gray_queue.length))}% - ${step}/${step + black_queue.length + gray_queue.length} (${black_queue.length}, ${gray_queue.length})`);
- }
- if (black_queue.length === 0) {
- for (let i = 0; i < gray_queue.length; i++) {
- const node = gray_queue[i];
- const nodeParent = node.parent;
- if ((ts.isClassDeclaration(nodeParent) || ts.isInterfaceDeclaration(nodeParent)) && nodeOrChildIsBlack(nodeParent)) {
- gray_queue.splice(i, 1);
- black_queue.push(node);
- setColor(node, 2 /* Black */);
- i--;
- }
- }
- }
- if (black_queue.length > 0) {
- node = black_queue.shift();
- }
- else {
- // only gray nodes remaining...
- break;
- }
- const nodeSourceFile = node.getSourceFile();
- const loop = (node) => {
- const [symbol, symbolImportNode] = getRealNodeSymbol(checker, node);
- if (symbolImportNode) {
- setColor(symbolImportNode, 2 /* Black */);
- }
- if (symbol && !nodeIsInItsOwnDeclaration(nodeSourceFile, node, symbol)) {
- for (let i = 0, len = symbol.declarations.length; i < len; i++) {
- const declaration = symbol.declarations[i];
- if (ts.isSourceFile(declaration)) {
- // Do not enqueue full source files
- // (they can be the declaration of a module import)
- continue;
- }
- if (options.shakeLevel === 2 /* ClassMembers */ && (ts.isClassDeclaration(declaration) || ts.isInterfaceDeclaration(declaration)) && !isLocalCodeExtendingOrInheritingFromDefaultLibSymbol(program, checker, declaration)) {
- enqueue_black(declaration.name);
- for (let j = 0; j < declaration.members.length; j++) {
- const member = declaration.members[j];
- const memberName = member.name ? member.name.getText() : null;
- if (ts.isConstructorDeclaration(member)
- || ts.isConstructSignatureDeclaration(member)
- || ts.isIndexSignatureDeclaration(member)
- || ts.isCallSignatureDeclaration(member)
- || memberName === '[Symbol.iterator]'
- || memberName === '[Symbol.toStringTag]'
- || memberName === 'toJSON'
- || memberName === 'toString'
- || memberName === 'dispose' // TODO: keeping all `dispose` methods
- || /^_(.*)Brand$/.test(memberName || '') // TODO: keeping all members ending with `Brand`...
- ) {
- enqueue_black(member);
- }
- }
- // queue the heritage clauses
- if (declaration.heritageClauses) {
- for (let heritageClause of declaration.heritageClauses) {
- enqueue_black(heritageClause);
- }
- }
- }
- else {
- enqueue_black(declaration);
- }
- }
- }
- node.forEachChild(loop);
- };
- node.forEachChild(loop);
- }
- while (export_import_queue.length > 0) {
- const node = export_import_queue.shift();
- if (nodeOrParentIsBlack(node)) {
- continue;
- }
- const symbol = node.symbol;
- if (!symbol) {
- continue;
- }
- const aliased = checker.getAliasedSymbol(symbol);
- if (aliased.declarations && aliased.declarations.length > 0) {
- if (nodeOrParentIsBlack(aliased.declarations[0]) || nodeOrChildIsBlack(aliased.declarations[0])) {
- setColor(node, 2 /* Black */);
- }
- }
- }
-}
-function nodeIsInItsOwnDeclaration(nodeSourceFile, node, symbol) {
- for (let i = 0, len = symbol.declarations.length; i < len; i++) {
- const declaration = symbol.declarations[i];
- const declarationSourceFile = declaration.getSourceFile();
- if (nodeSourceFile === declarationSourceFile) {
- if (declaration.pos <= node.pos && node.end <= declaration.end) {
- return true;
- }
- }
- }
- return false;
-}
-function generateResult(languageService, shakeLevel) {
- const program = languageService.getProgram();
- if (!program) {
- throw new Error('Could not get program from language service');
- }
- let result = {};
- const writeFile = (filePath, contents) => {
- result[filePath] = contents;
- };
- program.getSourceFiles().forEach((sourceFile) => {
- const fileName = sourceFile.fileName;
- if (/^defaultLib:/.test(fileName)) {
- return;
- }
- const destination = fileName;
- if (/\.d\.ts$/.test(fileName)) {
- if (nodeOrChildIsBlack(sourceFile)) {
- writeFile(destination, sourceFile.text);
- }
- return;
- }
- let text = sourceFile.text;
- let result = '';
- function keep(node) {
- result += text.substring(node.pos, node.end);
- }
- function write(data) {
- result += data;
- }
- function writeMarkedNodes(node) {
- if (getColor(node) === 2 /* Black */) {
- return keep(node);
- }
- // Always keep certain top-level statements
- if (ts.isSourceFile(node.parent)) {
- if (ts.isExpressionStatement(node) && ts.isStringLiteral(node.expression) && node.expression.text === 'use strict') {
- return keep(node);
- }
- if (ts.isVariableStatement(node) && nodeOrChildIsBlack(node)) {
- return keep(node);
- }
- }
- // Keep the entire import in import * as X cases
- if (ts.isImportDeclaration(node)) {
- if (node.importClause && node.importClause.namedBindings) {
- if (ts.isNamespaceImport(node.importClause.namedBindings)) {
- if (getColor(node.importClause.namedBindings) === 2 /* Black */) {
- return keep(node);
- }
- }
- else {
- let survivingImports = [];
- for (const importNode of node.importClause.namedBindings.elements) {
- if (getColor(importNode) === 2 /* Black */) {
- survivingImports.push(importNode.getFullText(sourceFile));
- }
- }
- const leadingTriviaWidth = node.getLeadingTriviaWidth();
- const leadingTrivia = sourceFile.text.substr(node.pos, leadingTriviaWidth);
- if (survivingImports.length > 0) {
- if (node.importClause && node.importClause.name && getColor(node.importClause) === 2 /* Black */) {
- return write(`${leadingTrivia}import ${node.importClause.name.text}, {${survivingImports.join(',')} } from${node.moduleSpecifier.getFullText(sourceFile)};`);
- }
- return write(`${leadingTrivia}import {${survivingImports.join(',')} } from${node.moduleSpecifier.getFullText(sourceFile)};`);
- }
- else {
- if (node.importClause && node.importClause.name && getColor(node.importClause) === 2 /* Black */) {
- return write(`${leadingTrivia}import ${node.importClause.name.text} from${node.moduleSpecifier.getFullText(sourceFile)};`);
- }
- }
- }
- }
- else {
- if (node.importClause && getColor(node.importClause) === 2 /* Black */) {
- return keep(node);
- }
- }
- }
- if (ts.isExportDeclaration(node)) {
- if (node.exportClause && node.moduleSpecifier && ts.isNamedExports(node.exportClause)) {
- let survivingExports = [];
- for (const exportSpecifier of node.exportClause.elements) {
- if (getColor(exportSpecifier) === 2 /* Black */) {
- survivingExports.push(exportSpecifier.getFullText(sourceFile));
- }
- }
- const leadingTriviaWidth = node.getLeadingTriviaWidth();
- const leadingTrivia = sourceFile.text.substr(node.pos, leadingTriviaWidth);
- if (survivingExports.length > 0) {
- return write(`${leadingTrivia}export {${survivingExports.join(',')} } from${node.moduleSpecifier.getFullText(sourceFile)};`);
- }
- }
- }
- if (shakeLevel === 2 /* ClassMembers */ && (ts.isClassDeclaration(node) || ts.isInterfaceDeclaration(node)) && nodeOrChildIsBlack(node)) {
- let toWrite = node.getFullText();
- for (let i = node.members.length - 1; i >= 0; i--) {
- const member = node.members[i];
- if (getColor(member) === 2 /* Black */ || !member.name) {
- // keep method
- continue;
- }
- let pos = member.pos - node.pos;
- let end = member.end - node.pos;
- toWrite = toWrite.substring(0, pos) + toWrite.substring(end);
- }
- return write(toWrite);
- }
- if (ts.isFunctionDeclaration(node)) {
- // Do not go inside functions if they haven't been marked
- return;
- }
- node.forEachChild(writeMarkedNodes);
- }
- if (getColor(sourceFile) !== 2 /* Black */) {
- if (!nodeOrChildIsBlack(sourceFile)) {
- // none of the elements are reachable => don't write this file at all!
- return;
- }
- sourceFile.forEachChild(writeMarkedNodes);
- result += sourceFile.endOfFileToken.getFullText(sourceFile);
- }
- else {
- result = text;
- }
- writeFile(destination, result);
- });
- return result;
-}
-//#endregion
-//#region Utils
-function isLocalCodeExtendingOrInheritingFromDefaultLibSymbol(program, checker, declaration) {
- if (!program.isSourceFileDefaultLibrary(declaration.getSourceFile()) && declaration.heritageClauses) {
- for (const heritageClause of declaration.heritageClauses) {
- for (const type of heritageClause.types) {
- const symbol = findSymbolFromHeritageType(checker, type);
- if (symbol) {
- const decl = symbol.valueDeclaration || (symbol.declarations && symbol.declarations[0]);
- if (decl && program.isSourceFileDefaultLibrary(decl.getSourceFile())) {
- return true;
- }
- }
- }
- }
- }
- return false;
-}
-function findSymbolFromHeritageType(checker, type) {
- if (ts.isExpressionWithTypeArguments(type)) {
- return findSymbolFromHeritageType(checker, type.expression);
- }
- if (ts.isIdentifier(type)) {
- return getRealNodeSymbol(checker, type)[0];
- }
- if (ts.isPropertyAccessExpression(type)) {
- return findSymbolFromHeritageType(checker, type.name);
- }
- return null;
-}
-/**
- * Returns the node's symbol and the `import` node (if the symbol resolved from a different module)
- */
-function getRealNodeSymbol(checker, node) {
- const getPropertySymbolsFromContextualType = ts.getPropertySymbolsFromContextualType;
- const getContainingObjectLiteralElement = ts.getContainingObjectLiteralElement;
- const getNameFromPropertyName = ts.getNameFromPropertyName;
- // Go to the original declaration for cases:
- //
- // (1) when the aliased symbol was declared in the location(parent).
- // (2) when the aliased symbol is originating from an import.
- //
- function shouldSkipAlias(node, declaration) {
- if (!ts.isShorthandPropertyAssignment(node) && node.kind !== ts.SyntaxKind.Identifier) {
- return false;
- }
- if (node.parent === declaration) {
- return true;
- }
- switch (declaration.kind) {
- case ts.SyntaxKind.ImportClause:
- case ts.SyntaxKind.ImportEqualsDeclaration:
- return true;
- case ts.SyntaxKind.ImportSpecifier:
- return declaration.parent.kind === ts.SyntaxKind.NamedImports;
- default:
- return false;
- }
- }
- if (!ts.isShorthandPropertyAssignment(node)) {
- if (node.getChildCount() !== 0) {
- return [null, null];
- }
- }
- const { parent } = node;
- let symbol = (ts.isShorthandPropertyAssignment(node)
- ? checker.getShorthandAssignmentValueSymbol(node)
- : checker.getSymbolAtLocation(node));
- let importNode = null;
- // If this is an alias, and the request came at the declaration location
- // get the aliased symbol instead. This allows for goto def on an import e.g.
- // import {A, B} from "mod";
- // to jump to the implementation directly.
- if (symbol && symbol.flags & ts.SymbolFlags.Alias && shouldSkipAlias(node, symbol.declarations[0])) {
- const aliased = checker.getAliasedSymbol(symbol);
- if (aliased.declarations) {
- // We should mark the import as visited
- importNode = symbol.declarations[0];
- symbol = aliased;
- }
- }
- if (symbol) {
- // Because name in short-hand property assignment has two different meanings: property name and property value,
- // using go-to-definition at such position should go to the variable declaration of the property value rather than
- // go to the declaration of the property name (in this case stay at the same position). However, if go-to-definition
- // is performed at the location of property access, we would like to go to definition of the property in the short-hand
- // assignment. This case and others are handled by the following code.
- if (node.parent.kind === ts.SyntaxKind.ShorthandPropertyAssignment) {
- symbol = checker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration);
- }
- // If the node is the name of a BindingElement within an ObjectBindingPattern instead of just returning the
- // declaration the symbol (which is itself), we should try to get to the original type of the ObjectBindingPattern
- // and return the property declaration for the referenced property.
- // For example:
- // import('./foo').then(({ b/*goto*/ar }) => undefined); => should get use to the declaration in file "./foo"
- //
- // function bar(onfulfilled: (value: T) => void) { //....}
- // interface Test {
- // pr/*destination*/op1: number
- // }
- // bar(({pr/*goto*/op1})=>{});
- if (ts.isPropertyName(node) && ts.isBindingElement(parent) && ts.isObjectBindingPattern(parent.parent) &&
- (node === (parent.propertyName || parent.name))) {
- const name = getNameFromPropertyName(node);
- const type = checker.getTypeAtLocation(parent.parent);
- if (name && type) {
- if (type.isUnion()) {
- const prop = type.types[0].getProperty(name);
- if (prop) {
- symbol = prop;
- }
- }
- else {
- const prop = type.getProperty(name);
- if (prop) {
- symbol = prop;
- }
- }
- }
- }
- // If the current location we want to find its definition is in an object literal, try to get the contextual type for the
- // object literal, lookup the property symbol in the contextual type, and use this for goto-definition.
- // For example
- // interface Props{
- // /*first*/prop1: number
- // prop2: boolean
- // }
- // function Foo(arg: Props) {}
- // Foo( { pr/*1*/op1: 10, prop2: false })
- const element = getContainingObjectLiteralElement(node);
- if (element) {
- const contextualType = element && checker.getContextualType(element.parent);
- if (contextualType) {
- const propertySymbols = getPropertySymbolsFromContextualType(element, checker, contextualType, /*unionSymbolOk*/ false);
- if (propertySymbols) {
- symbol = propertySymbols[0];
- }
- }
- }
- }
- if (symbol && symbol.declarations) {
- return [symbol, importNode];
- }
- return [null, null];
-}
-/** Get the token whose text contains the position */
-function getTokenAtPosition(sourceFile, position, allowPositionInLeadingTrivia, includeEndPosition) {
- let current = sourceFile;
- outer: while (true) {
- // find the child that contains 'position'
- for (const child of current.getChildren()) {
- const start = allowPositionInLeadingTrivia ? child.getFullStart() : child.getStart(sourceFile, /*includeJsDoc*/ true);
- if (start > position) {
- // If this child begins after position, then all subsequent children will as well.
- break;
- }
- const end = child.getEnd();
- if (position < end || (position === end && (child.kind === ts.SyntaxKind.EndOfFileToken || includeEndPosition))) {
- current = child;
- continue outer;
- }
- }
- return current;
- }
-}
diff --git a/build/lib/typings/gulp-bom.d.ts b/build/lib/typings/gulp-bom.d.ts
index 94dc5fd6d21..88525a7e9db 100644
--- a/build/lib/typings/gulp-bom.d.ts
+++ b/build/lib/typings/gulp-bom.d.ts
@@ -4,7 +4,7 @@ declare module "gulp-bom" {
/**
* This is required as per:
- * https://github.com/Microsoft/TypeScript/issues/5073
+ * https://github.com/microsoft/TypeScript/issues/5073
*/
namespace f {}
diff --git a/build/lib/typings/gulp-cssnano.d.ts b/build/lib/typings/gulp-cssnano.d.ts
index 48f8cbf7165..97d3827641a 100644
--- a/build/lib/typings/gulp-cssnano.d.ts
+++ b/build/lib/typings/gulp-cssnano.d.ts
@@ -4,9 +4,9 @@ declare module "gulp-cssnano" {
/**
* This is required as per:
- * https://github.com/Microsoft/TypeScript/issues/5073
+ * https://github.com/microsoft/TypeScript/issues/5073
*/
namespace f {}
export = f;
-}
\ No newline at end of file
+}
diff --git a/build/lib/typings/gulp-flatmap.d.ts b/build/lib/typings/gulp-flatmap.d.ts
index 82dd84e15b0..c99232c61cc 100644
--- a/build/lib/typings/gulp-flatmap.d.ts
+++ b/build/lib/typings/gulp-flatmap.d.ts
@@ -4,9 +4,9 @@ declare module 'gulp-flatmap' {
/**
* This is required as per:
- * https://github.com/Microsoft/TypeScript/issues/5073
+ * https://github.com/microsoft/TypeScript/issues/5073
*/
namespace f {}
export = f;
-}
\ No newline at end of file
+}
diff --git a/build/lib/typings/vinyl.d.ts b/build/lib/typings/vinyl.d.ts
index a85632e172b..6be30a1eebf 100644
--- a/build/lib/typings/vinyl.d.ts
+++ b/build/lib/typings/vinyl.d.ts
@@ -103,10 +103,10 @@ declare module "vinyl" {
/**
* This is required as per:
- * https://github.com/Microsoft/TypeScript/issues/5073
+ * https://github.com/microsoft/TypeScript/issues/5073
*/
namespace File {}
export = File;
-}
\ No newline at end of file
+}
diff --git a/build/lib/util.js b/build/lib/util.js
deleted file mode 100644
index 8b70b534b20..00000000000
--- a/build/lib/util.js
+++ /dev/null
@@ -1,264 +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';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.getElectronVersion = exports.streamToPromise = exports.versionStringToNumber = exports.filter = exports.rebase = exports.getVersion = exports.ensureDir = exports.rreddir = exports.rimraf = exports.stripSourceMappingURL = exports.loadSourcemaps = exports.cleanNodeModules = exports.skipDirectories = exports.toFileUri = exports.setExecutableBit = exports.fixWin32DirectoryPermissions = exports.incremental = void 0;
-const es = require("event-stream");
-const debounce = require("debounce");
-const _filter = require("gulp-filter");
-const rename = require("gulp-rename");
-const path = require("path");
-const fs = require("fs");
-const _rimraf = require("rimraf");
-const git = require("./git");
-const VinylFile = require("vinyl");
-const root = path.dirname(path.dirname(__dirname));
-const NoCancellationToken = { isCancellationRequested: () => false };
-function incremental(streamProvider, initial, supportsCancellation) {
- const input = es.through();
- const output = es.through();
- let state = 'idle';
- let buffer = Object.create(null);
- const token = !supportsCancellation ? undefined : { isCancellationRequested: () => Object.keys(buffer).length > 0 };
- const run = (input, isCancellable) => {
- state = 'running';
- const stream = !supportsCancellation ? streamProvider() : streamProvider(isCancellable ? token : NoCancellationToken);
- input
- .pipe(stream)
- .pipe(es.through(undefined, () => {
- state = 'idle';
- eventuallyRun();
- }))
- .pipe(output);
- };
- if (initial) {
- run(initial, false);
- }
- const eventuallyRun = debounce(() => {
- const paths = Object.keys(buffer);
- if (paths.length === 0) {
- return;
- }
- const data = paths.map(path => buffer[path]);
- buffer = Object.create(null);
- run(es.readArray(data), true);
- }, 500);
- input.on('data', (f) => {
- buffer[f.path] = f;
- if (state === 'idle') {
- eventuallyRun();
- }
- });
- return es.duplex(input, output);
-}
-exports.incremental = incremental;
-function fixWin32DirectoryPermissions() {
- if (!/win32/.test(process.platform)) {
- return es.through();
- }
- return es.mapSync(f => {
- if (f.stat && f.stat.isDirectory && f.stat.isDirectory()) {
- f.stat.mode = 16877;
- }
- return f;
- });
-}
-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;
- });
- if (!pattern) {
- return setBit;
- }
- const input = es.through();
- const filter = _filter(pattern, { restore: true });
- const output = input
- .pipe(filter)
- .pipe(setBit)
- .pipe(filter.restore);
- return es.duplex(input, output);
-}
-exports.setExecutableBit = setExecutableBit;
-function toFileUri(filePath) {
- const match = filePath.match(/^([a-z])\:(.*)$/i);
- if (match) {
- filePath = '/' + match[1].toUpperCase() + ':' + match[2];
- }
- return 'file://' + filePath.replace(/\\/g, '/');
-}
-exports.toFileUri = toFileUri;
-function skipDirectories() {
- return es.mapSync(f => {
- if (!f.isDirectory()) {
- return f;
- }
- });
-}
-exports.skipDirectories = skipDirectories;
-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 output = es.merge(input.pipe(_filter(['**', ...excludes])), input.pipe(_filter(includes)));
- return es.duplex(input, output);
-}
-exports.cleanNodeModules = cleanNodeModules;
-function loadSourcemaps() {
- const input = es.through();
- const output = input
- .pipe(es.map((f, cb) => {
- if (f.sourceMap) {
- cb(undefined, f);
- return;
- }
- if (!f.contents) {
- cb(undefined, f);
- return;
- }
- const contents = f.contents.toString('utf8');
- const reg = /\/\/# sourceMappingURL=(.*)$/g;
- let lastMatch = null;
- let match = null;
- while (match = reg.exec(contents)) {
- lastMatch = match;
- }
- if (!lastMatch) {
- f.sourceMap = {
- version: '3',
- names: [],
- mappings: '',
- sources: [f.relative.replace(/\//g, '/')],
- sourcesContent: [contents]
- };
- cb(undefined, f);
- return;
- }
- f.contents = Buffer.from(contents.replace(/\/\/# sourceMappingURL=(.*)$/g, ''), 'utf8');
- fs.readFile(path.join(path.dirname(f.path), lastMatch[1]), 'utf8', (err, contents) => {
- if (err) {
- return cb(err);
- }
- f.sourceMap = JSON.parse(contents);
- cb(undefined, f);
- });
- }));
- return es.duplex(input, output);
-}
-exports.loadSourcemaps = loadSourcemaps;
-function stripSourceMappingURL() {
- const input = es.through();
- const output = input
- .pipe(es.mapSync(f => {
- const contents = f.contents.toString('utf8');
- f.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, ''), 'utf8');
- return f;
- }));
- return es.duplex(input, output);
-}
-exports.stripSourceMappingURL = stripSourceMappingURL;
-function rimraf(dir) {
- const result = () => new Promise((c, e) => {
- let retries = 0;
- const retry = () => {
- _rimraf(dir, { maxBusyTries: 1 }, (err) => {
- if (!err) {
- return c();
- }
- if (err.code === 'ENOTEMPTY' && ++retries < 5) {
- return setTimeout(() => retry(), 10);
- }
- return e(err);
- });
- };
- retry();
- });
- result.taskName = `clean-${path.basename(dir).toLowerCase()}`;
- return result;
-}
-exports.rimraf = rimraf;
-function _rreaddir(dirPath, prepend, result) {
- const entries = fs.readdirSync(dirPath, { withFileTypes: true });
- for (const entry of entries) {
- if (entry.isDirectory()) {
- _rreaddir(path.join(dirPath, entry.name), `${prepend}/${entry.name}`, result);
- }
- else {
- result.push(`${prepend}/${entry.name}`);
- }
- }
-}
-function rreddir(dirPath) {
- let result = [];
- _rreaddir(dirPath, '', result);
- return result;
-}
-exports.rreddir = rreddir;
-function ensureDir(dirPath) {
- if (fs.existsSync(dirPath)) {
- return;
- }
- ensureDir(path.dirname(dirPath));
- fs.mkdirSync(dirPath);
-}
-exports.ensureDir = ensureDir;
-function getVersion(root) {
- let version = process.env['BUILD_SOURCEVERSION'];
- if (!version || !/^[0-9a-f]{40}$/i.test(version)) {
- version = git.getVersion(root);
- }
- return version;
-}
-exports.getVersion = getVersion;
-function rebase(count) {
- return rename(f => {
- const parts = f.dirname ? f.dirname.split(/[\/\\]/) : [];
- f.dirname = parts.slice(count).join(path.sep);
- });
-}
-exports.rebase = rebase;
-function filter(fn) {
- const result = es.through(function (data) {
- if (fn(data)) {
- this.emit('data', data);
- }
- else {
- result.restore.push(data);
- }
- });
- result.restore = es.through();
- return result;
-}
-exports.filter = filter;
-function versionStringToNumber(versionStr) {
- const semverRegex = /(\d+)\.(\d+)\.(\d+)/;
- const match = versionStr.match(semverRegex);
- if (!match) {
- throw new Error('Version string is not properly formatted: ' + versionStr);
- }
- return parseInt(match[1], 10) * 1e4 + parseInt(match[2], 10) * 1e2 + parseInt(match[3], 10);
-}
-exports.versionStringToNumber = versionStringToNumber;
-function streamToPromise(stream) {
- return new Promise((c, e) => {
- stream.on('error', err => e(err));
- stream.on('end', () => c());
- });
-}
-exports.streamToPromise = streamToPromise;
-function getElectronVersion() {
- const yarnrc = fs.readFileSync(path.join(root, '.yarnrc'), 'utf8');
- const target = /^target "(.*)"$/m.exec(yarnrc)[1];
- return target;
-}
-exports.getElectronVersion = getElectronVersion;
diff --git a/build/lib/util.ts b/build/lib/util.ts
index e379b47d8ed..c0a0d9619d7 100644
--- a/build/lib/util.ts
+++ b/build/lib/util.ts
@@ -186,7 +186,7 @@ export function loadSourcemaps(): NodeJS.ReadWriteStream {
version: '3',
names: [],
mappings: '',
- sources: [f.relative.replace(/\//g, '/')],
+ sources: [f.relative],
sourcesContent: [contents]
};
@@ -220,6 +220,20 @@ export function stripSourceMappingURL(): NodeJS.ReadWriteStream {
return es.duplex(input, output);
}
+export function rewriteSourceMappingURL(sourceMappingURLBase: string): NodeJS.ReadWriteStream {
+ const input = es.through();
+
+ const output = input
+ .pipe(es.mapSync(f => {
+ const contents = (f.contents).toString('utf8');
+ const str = `//# sourceMappingURL=${sourceMappingURLBase}/${path.dirname(f.relative).replace(/\\/g, '/')}/$1`;
+ f.contents = Buffer.from(contents.replace(/\n\/\/# sourceMappingURL=(.*)$/gm, str));
+ return f;
+ }));
+
+ return es.duplex(input, output);
+}
+
export function rimraf(dir: string): () => Promise {
const result = () => new Promise((c, e) => {
let retries = 0;
diff --git a/build/lib/watch/index.js b/build/lib/watch/index.ts
similarity index 100%
rename from build/lib/watch/index.js
rename to build/lib/watch/index.ts
diff --git a/build/lib/watch/watch-win32.js b/build/lib/watch/watch-win32.ts
similarity index 51%
rename from build/lib/watch/watch-win32.js
rename to build/lib/watch/watch-win32.ts
index 91c0eae7565..4ed37277123 100644
--- a/build/lib/watch/watch-win32.js
+++ b/build/lib/watch/watch-win32.ts
@@ -3,16 +3,17 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-var path = require('path');
-var cp = require('child_process');
-var fs = require('fs');
-var File = require('vinyl');
-var es = require('event-stream');
-var filter = require('gulp-filter');
+import * as path from 'path';
+import * as cp from 'child_process';
+import * as fs from 'fs';
+import * as File from 'vinyl';
+import * as es from 'event-stream';
+import * as filter from 'gulp-filter';
+import { Stream } from 'stream';
-var watcherPath = path.join(__dirname, 'watcher.exe');
+const watcherPath = path.join(__dirname, 'watcher.exe');
-function toChangeType(type) {
+function toChangeType(type: '0' | '1' | '2'): 'change' | 'add' | 'unlink' {
switch (type) {
case '0': return 'change';
case '1': return 'add';
@@ -20,33 +21,33 @@ function toChangeType(type) {
}
}
-function watch(root) {
- var result = es.through();
- var child = cp.spawn(watcherPath, [root]);
+function watch(root: string): Stream {
+ const result = es.through();
+ let child: cp.ChildProcess | null = cp.spawn(watcherPath, [root]);
child.stdout.on('data', function (data) {
- var lines = data.toString('utf8').split('\n');
- for (var i = 0; i < lines.length; i++) {
- var line = lines[i].trim();
+ const lines: string[] = data.toString('utf8').split('\n');
+ for (let i = 0; i < lines.length; i++) {
+ const line = lines[i].trim();
if (line.length === 0) {
continue;
}
- var changeType = line[0];
- var changePath = line.substr(2);
+ const changeType = <'0' | '1' | '2'>line[0];
+ const changePath = line.substr(2);
// filter as early as possible
if (/^\.git/.test(changePath) || /(^|\\)out($|\\)/.test(changePath)) {
continue;
}
- var changePathFull = path.join(root, changePath);
+ const changePathFull = path.join(root, changePath);
- var file = new File({
+ const file = new File({
path: changePathFull,
base: root
});
- file.event = toChangeType(changeType);
+ (file).event = toChangeType(changeType);
result.emit('data', file);
}
});
@@ -62,44 +63,44 @@ function watch(root) {
process.once('SIGTERM', function () { process.exit(0); });
process.once('SIGTERM', function () { process.exit(0); });
- process.once('exit', function () { child && child.kill(); });
+ process.once('exit', function () { if (child) { child.kill(); } });
return result;
}
-var cache = Object.create(null);
+const cache: { [cwd: string]: Stream; } = Object.create(null);
-module.exports = function (pattern, options) {
+module.exports = function (pattern: string | string[] | filter.FileFunction, options?: { cwd?: string; base?: string; }) {
options = options || {};
- var cwd = path.normalize(options.cwd || process.cwd());
- var watcher = cache[cwd];
+ const cwd = path.normalize(options.cwd || process.cwd());
+ let watcher = cache[cwd];
if (!watcher) {
watcher = cache[cwd] = watch(cwd);
}
- var rebase = !options.base ? es.through() : es.mapSync(function (f) {
- f.base = options.base;
+ const rebase = !options.base ? es.through() : es.mapSync(function (f: File) {
+ f.base = options!.base!;
return f;
});
return watcher
.pipe(filter(['**', '!.git{,/**}'])) // ignore all things git
.pipe(filter(pattern))
- .pipe(es.map(function (file, cb) {
+ .pipe(es.map(function (file: File, cb) {
fs.stat(file.path, function (err, stat) {
- if (err && err.code === 'ENOENT') { return cb(null, file); }
+ if (err && err.code === 'ENOENT') { return cb(undefined, file); }
if (err) { return cb(); }
if (!stat.isFile()) { return cb(); }
fs.readFile(file.path, function (err, contents) {
- if (err && err.code === 'ENOENT') { return cb(null, file); }
+ if (err && err.code === 'ENOENT') { return cb(undefined, file); }
if (err) { return cb(); }
file.contents = contents;
file.stat = stat;
- cb(null, file);
+ cb(undefined, file);
});
});
}))
diff --git a/build/monaco/README-npm.md b/build/monaco/README-npm.md
index 3174903eb53..ee0ffc6e95c 100644
--- a/build/monaco/README-npm.md
+++ b/build/monaco/README-npm.md
@@ -5,10 +5,10 @@ npm module and unless you are doing something special (e.g. authoring a monaco e
and consumed independently), it is best to consume the [monaco-editor](https://www.npmjs.com/package/monaco-editor) module
that contains this module and adds languages supports.
-The Monaco Editor is the code editor that powers [VS Code](https://github.com/Microsoft/vscode),
+The Monaco Editor is the code editor that powers [VS Code](https://github.com/microsoft/vscode),
a good page describing the code editor's features is [here](https://code.visualstudio.com/docs/editor/editingevolved).
-This npm module contains the core editor functionality, as it comes from the [vscode repository](https://github.com/Microsoft/vscode).
+This npm module contains the core editor functionality, as it comes from the [vscode repository](https://github.com/microsoft/vscode).
## License
-[MIT](https://github.com/Microsoft/vscode/blob/master/LICENSE.txt)
+[MIT](https://github.com/microsoft/vscode/blob/master/LICENSE.txt)
diff --git a/build/monaco/api.js b/build/monaco/api.js
deleted file mode 100644
index 1de24d4065c..00000000000
--- a/build/monaco/api.js
+++ /dev/null
@@ -1,627 +0,0 @@
-"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 });
-exports.execute = exports.run3 = exports.DeclarationResolver = exports.FSProvider = exports.RECIPE_PATH = void 0;
-const fs = require("fs");
-const ts = require("typescript");
-const path = require("path");
-const fancyLog = require("fancy-log");
-const ansiColors = require("ansi-colors");
-const dtsv = '3';
-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) {
- fancyLog(ansiColors.yellow(`[monaco.d.ts]`), message, ...rest);
-}
-function isDeclaration(a) {
- return (a.kind === ts.SyntaxKind.InterfaceDeclaration
- || a.kind === ts.SyntaxKind.EnumDeclaration
- || a.kind === ts.SyntaxKind.ClassDeclaration
- || a.kind === ts.SyntaxKind.TypeAliasDeclaration
- || a.kind === ts.SyntaxKind.FunctionDeclaration
- || a.kind === ts.SyntaxKind.ModuleDeclaration);
-}
-function visitTopLevelDeclarations(sourceFile, visitor) {
- let stop = false;
- let visit = (node) => {
- if (stop) {
- return;
- }
- switch (node.kind) {
- case ts.SyntaxKind.InterfaceDeclaration:
- case ts.SyntaxKind.EnumDeclaration:
- case ts.SyntaxKind.ClassDeclaration:
- case ts.SyntaxKind.VariableStatement:
- case ts.SyntaxKind.TypeAliasDeclaration:
- case ts.SyntaxKind.FunctionDeclaration:
- case ts.SyntaxKind.ModuleDeclaration:
- stop = visitor(node);
- }
- if (stop) {
- return;
- }
- ts.forEachChild(node, visit);
- };
- visit(sourceFile);
-}
-function getAllTopLevelDeclarations(sourceFile) {
- let all = [];
- visitTopLevelDeclarations(sourceFile, (node) => {
- if (node.kind === ts.SyntaxKind.InterfaceDeclaration || node.kind === ts.SyntaxKind.ClassDeclaration || node.kind === ts.SyntaxKind.ModuleDeclaration) {
- let interfaceDeclaration = node;
- let triviaStart = interfaceDeclaration.pos;
- let triviaEnd = interfaceDeclaration.name.pos;
- let triviaText = getNodeText(sourceFile, { pos: triviaStart, end: triviaEnd });
- if (triviaText.indexOf('@internal') === -1) {
- all.push(node);
- }
- }
- else {
- let nodeText = getNodeText(sourceFile, node);
- if (nodeText.indexOf('@internal') === -1) {
- all.push(node);
- }
- }
- return false /*continue*/;
- });
- return all;
-}
-function getTopLevelDeclaration(sourceFile, typeName) {
- let result = null;
- visitTopLevelDeclarations(sourceFile, (node) => {
- if (isDeclaration(node) && node.name) {
- if (node.name.text === typeName) {
- result = node;
- return true /*stop*/;
- }
- return false /*continue*/;
- }
- // node is ts.VariableStatement
- if (getNodeText(sourceFile, node).indexOf(typeName) >= 0) {
- result = node;
- return true /*stop*/;
- }
- return false /*continue*/;
- });
- return result;
-}
-function getNodeText(sourceFile, node) {
- return sourceFile.getFullText().substring(node.pos, node.end);
-}
-function hasModifier(modifiers, kind) {
- if (modifiers) {
- for (let i = 0; i < modifiers.length; i++) {
- let mod = modifiers[i];
- if (mod.kind === kind) {
- return true;
- }
- }
- }
- return false;
-}
-function isStatic(member) {
- return hasModifier(member.modifiers, ts.SyntaxKind.StaticKeyword);
-}
-function isDefaultExport(declaration) {
- return (hasModifier(declaration.modifiers, ts.SyntaxKind.DefaultKeyword)
- && hasModifier(declaration.modifiers, ts.SyntaxKind.ExportKeyword));
-}
-function getMassagedTopLevelDeclarationText(sourceFile, declaration, importName, usage, enums) {
- let result = getNodeText(sourceFile, declaration);
- if (declaration.kind === ts.SyntaxKind.InterfaceDeclaration || declaration.kind === ts.SyntaxKind.ClassDeclaration) {
- let interfaceDeclaration = declaration;
- const staticTypeName = (isDefaultExport(interfaceDeclaration)
- ? `${importName}.default`
- : `${importName}.${declaration.name.text}`);
- let instanceTypeName = staticTypeName;
- const typeParametersCnt = (interfaceDeclaration.typeParameters ? interfaceDeclaration.typeParameters.length : 0);
- if (typeParametersCnt > 0) {
- let arr = [];
- for (let i = 0; i < typeParametersCnt; i++) {
- arr.push('any');
- }
- instanceTypeName = `${instanceTypeName}<${arr.join(',')}>`;
- }
- const members = interfaceDeclaration.members;
- members.forEach((member) => {
- try {
- let memberText = getNodeText(sourceFile, member);
- if (memberText.indexOf('@internal') >= 0 || memberText.indexOf('private') >= 0) {
- result = result.replace(memberText, '');
- }
- else {
- const memberName = member.name.text;
- const memberAccess = (memberName.indexOf('.') >= 0 ? `['${memberName}']` : `.${memberName}`);
- if (isStatic(member)) {
- usage.push(`a = ${staticTypeName}${memberAccess};`);
- }
- else {
- usage.push(`a = (<${instanceTypeName}>b)${memberAccess};`);
- }
- }
- }
- catch (err) {
- // life..
- }
- });
- }
- else if (declaration.kind === ts.SyntaxKind.VariableStatement) {
- const jsDoc = result.substr(0, declaration.getLeadingTriviaWidth(sourceFile));
- if (jsDoc.indexOf('@monacodtsreplace') >= 0) {
- const jsDocLines = jsDoc.split(/\r\n|\r|\n/);
- let directives = [];
- for (const jsDocLine of jsDocLines) {
- const m = jsDocLine.match(/^\s*\* \/([^/]+)\/([^/]+)\/$/);
- if (m) {
- directives.push([new RegExp(m[1], 'g'), m[2]]);
- }
- }
- // remove the jsdoc
- result = result.substr(jsDoc.length);
- if (directives.length > 0) {
- // apply replace directives
- const replacer = createReplacerFromDirectives(directives);
- result = replacer(result);
- }
- }
- }
- result = result.replace(/export default /g, 'export ');
- result = result.replace(/export declare /g, 'export ');
- result = result.replace(/declare /g, '');
- let lines = result.split(/\r\n|\r|\n/);
- for (let i = 0; i < lines.length; i++) {
- if (/\s*\*/.test(lines[i])) {
- // very likely a comment
- continue;
- }
- lines[i] = lines[i].replace(/"/g, '\'');
- }
- result = lines.join('\n');
- if (declaration.kind === ts.SyntaxKind.EnumDeclaration) {
- result = result.replace(/const enum/, 'enum');
- enums.push({
- enumName: declaration.name.getText(sourceFile),
- text: result
- });
- }
- return result;
-}
-function format(text, endl) {
- const REALLY_FORMAT = false;
- text = preformat(text, endl);
- if (!REALLY_FORMAT) {
- return text;
- }
- // Parse the source text
- let sourceFile = ts.createSourceFile('file.ts', text, ts.ScriptTarget.Latest, /*setParentPointers*/ true);
- // Get the formatting edits on the input sources
- let edits = ts.formatting.formatDocument(sourceFile, getRuleProvider(tsfmt), tsfmt);
- // Apply the edits on the input code
- return applyEdits(text, edits);
- function countParensCurly(text) {
- let cnt = 0;
- for (let i = 0; i < text.length; i++) {
- if (text.charAt(i) === '(' || text.charAt(i) === '{') {
- cnt++;
- }
- if (text.charAt(i) === ')' || text.charAt(i) === '}') {
- cnt--;
- }
- }
- return cnt;
- }
- function repeatStr(s, cnt) {
- let r = '';
- for (let i = 0; i < cnt; i++) {
- r += s;
- }
- return r;
- }
- function preformat(text, endl) {
- let lines = text.split(endl);
- let inComment = false;
- let inCommentDeltaIndent = 0;
- let indent = 0;
- for (let i = 0; i < lines.length; i++) {
- let line = lines[i].replace(/\s$/, '');
- let repeat = false;
- let lineIndent = 0;
- do {
- repeat = false;
- if (line.substring(0, 4) === ' ') {
- line = line.substring(4);
- lineIndent++;
- repeat = true;
- }
- if (line.charAt(0) === '\t') {
- line = line.substring(1);
- lineIndent++;
- repeat = true;
- }
- } while (repeat);
- if (line.length === 0) {
- continue;
- }
- if (inComment) {
- if (/\*\//.test(line)) {
- inComment = false;
- }
- lines[i] = repeatStr('\t', lineIndent + inCommentDeltaIndent) + line;
- continue;
- }
- if (/\/\*/.test(line)) {
- inComment = true;
- inCommentDeltaIndent = indent - lineIndent;
- lines[i] = repeatStr('\t', indent) + line;
- continue;
- }
- const cnt = countParensCurly(line);
- let shouldUnindentAfter = false;
- let shouldUnindentBefore = false;
- if (cnt < 0) {
- if (/[({]/.test(line)) {
- shouldUnindentAfter = true;
- }
- else {
- shouldUnindentBefore = true;
- }
- }
- else if (cnt === 0) {
- shouldUnindentBefore = /^\}/.test(line);
- }
- let shouldIndentAfter = false;
- if (cnt > 0) {
- shouldIndentAfter = true;
- }
- else if (cnt === 0) {
- shouldIndentAfter = /{$/.test(line);
- }
- if (shouldUnindentBefore) {
- indent--;
- }
- lines[i] = repeatStr('\t', indent) + line;
- if (shouldUnindentAfter) {
- indent--;
- }
- if (shouldIndentAfter) {
- indent++;
- }
- }
- return lines.join(endl);
- }
- function getRuleProvider(options) {
- // Share this between multiple formatters using the same options.
- // This represents the bulk of the space the formatter uses.
- return ts.formatting.getFormatContext(options);
- }
- function applyEdits(text, edits) {
- // Apply edits in reverse on the existing text
- let result = text;
- for (let i = edits.length - 1; i >= 0; i--) {
- let change = edits[i];
- let head = result.slice(0, change.span.start);
- let tail = result.slice(change.span.start + change.span.length);
- result = head + change.newText + tail;
- }
- return result;
- }
-}
-function createReplacerFromDirectives(directives) {
- return (str) => {
- for (let i = 0; i < directives.length; i++) {
- str = str.replace(directives[i][0], directives[i][1]);
- }
- return str;
- };
-}
-function createReplacer(data) {
- data = data || '';
- let rawDirectives = data.split(';');
- let directives = [];
- rawDirectives.forEach((rawDirective) => {
- if (rawDirective.length === 0) {
- return;
- }
- let pieces = rawDirective.split('=>');
- let findStr = pieces[0];
- let replaceStr = pieces[1];
- findStr = findStr.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g, '\\$&');
- findStr = '\\b' + findStr + '\\b';
- directives.push([new RegExp(findStr, 'g'), replaceStr]);
- });
- return createReplacerFromDirectives(directives);
-}
-function generateDeclarationFile(recipe, sourceFileGetter) {
- const endl = /\r\n/.test(recipe) ? '\r\n' : '\n';
- let lines = recipe.split(endl);
- let result = [];
- let usageCounter = 0;
- let usageImports = [];
- let usage = [];
- let failed = false;
- 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$/, '')}';`);
- return importName;
- };
- let enums = [];
- let version = null;
- lines.forEach(line => {
- if (failed) {
- return;
- }
- let m0 = line.match(/^\/\/dtsv=(\d+)$/);
- if (m0) {
- version = m0[1];
- }
- let m1 = line.match(/^\s*#include\(([^;)]*)(;[^)]*)?\)\:(.*)$/);
- if (m1) {
- let moduleId = m1[1];
- const sourceFile = sourceFileGetter(moduleId);
- if (!sourceFile) {
- logErr(`While handling ${line}`);
- logErr(`Cannot find ${moduleId}`);
- failed = true;
- return;
- }
- const importName = generateUsageImport(moduleId);
- let replacer = createReplacer(m1[2]);
- let typeNames = m1[3].split(/,/);
- typeNames.forEach((typeName) => {
- typeName = typeName.trim();
- if (typeName.length === 0) {
- return;
- }
- let declaration = getTopLevelDeclaration(sourceFile, typeName);
- if (!declaration) {
- logErr(`While handling ${line}`);
- logErr(`Cannot find ${typeName}`);
- failed = true;
- return;
- }
- result.push(replacer(getMassagedTopLevelDeclarationText(sourceFile, declaration, importName, usage, enums)));
- });
- return;
- }
- let m2 = line.match(/^\s*#includeAll\(([^;)]*)(;[^)]*)?\)\:(.*)$/);
- if (m2) {
- let moduleId = m2[1];
- const sourceFile = sourceFileGetter(moduleId);
- if (!sourceFile) {
- logErr(`While handling ${line}`);
- logErr(`Cannot find ${moduleId}`);
- failed = true;
- return;
- }
- const importName = generateUsageImport(moduleId);
- let replacer = createReplacer(m2[2]);
- let typeNames = m2[3].split(/,/);
- let typesToExcludeMap = {};
- let typesToExcludeArr = [];
- typeNames.forEach((typeName) => {
- typeName = typeName.trim();
- if (typeName.length === 0) {
- return;
- }
- typesToExcludeMap[typeName] = true;
- typesToExcludeArr.push(typeName);
- });
- getAllTopLevelDeclarations(sourceFile).forEach((declaration) => {
- if (isDeclaration(declaration) && declaration.name) {
- if (typesToExcludeMap[declaration.name.text]) {
- return;
- }
- }
- else {
- // node is ts.VariableStatement
- let nodeText = getNodeText(sourceFile, declaration);
- for (let i = 0; i < typesToExcludeArr.length; i++) {
- if (nodeText.indexOf(typesToExcludeArr[i]) >= 0) {
- return;
- }
- }
- }
- result.push(replacer(getMassagedTopLevelDeclarationText(sourceFile, declaration, importName, usage, enums)));
- });
- return;
- }
- result.push(line);
- });
- if (failed) {
- return null;
- }
- if (version !== dtsv) {
- if (!version) {
- logErr(`gulp watch restart required. 'monaco.d.ts.recipe' is written before versioning was introduced.`);
- }
- else {
- logErr(`gulp watch restart required. 'monaco.d.ts.recipe' v${version} does not match runtime v${dtsv}.`);
- }
- return null;
- }
- let resultTxt = result.join(endl);
- resultTxt = resultTxt.replace(/\bURI\b/g, 'Uri');
- resultTxt = resultTxt.replace(/\bEvent {
- if (e1.enumName < e2.enumName) {
- return -1;
- }
- if (e1.enumName > e2.enumName) {
- return 1;
- }
- return 0;
- });
- let resultEnums = [
- '/*---------------------------------------------------------------------------------------------',
- ' * Copyright (c) Microsoft Corporation. All rights reserved.',
- ' * Licensed under the MIT License. See License.txt in the project root for license information.',
- ' *--------------------------------------------------------------------------------------------*/',
- '',
- '// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.',
- ''
- ].concat(enums.map(e => e.text)).join(endl);
- resultEnums = resultEnums.split(/\r\n|\n|\r/).join(endl);
- resultEnums = format(resultEnums, endl);
- resultEnums = resultEnums.split(/\r\n|\n|\r/).join(endl);
- return {
- result: resultTxt,
- usageContent: `${usageImports.join('\n')}\n\n${usage.join('\n')}`,
- enums: resultEnums
- };
-}
-function _run(sourceFileGetter) {
- const recipe = fs.readFileSync(exports.RECIPE_PATH).toString();
- const t = generateDeclarationFile(recipe, sourceFileGetter);
- if (!t) {
- return null;
- }
- const result = t.result;
- const usageContent = t.usageContent;
- const enums = t.enums;
- const currentContent = fs.readFileSync(DECLARATION_PATH).toString();
- const one = currentContent.replace(/\r\n/gm, '\n');
- const other = result.replace(/\r\n/gm, '\n');
- const isTheSame = (one === other);
- return {
- content: result,
- usageContent: usageContent,
- enums: enums,
- filePath: DECLARATION_PATH,
- isTheSame
- };
-}
-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;
- this._sourceFileCache = Object.create(null);
- }
- invalidateCache(moduleId) {
- 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] ? 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) {
- 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, true).outputFiles[0].text;
- return new CacheEntry(ts.createSourceFile(fileName, text, ts.ScriptTarget.ES5), mtime);
- }
-}
-exports.DeclarationResolver = DeclarationResolver;
-function run3(resolver) {
- const sourceFileGetter = (moduleId) => resolver.getDeclarationSourceFile(moduleId);
- return _run(sourceFileGetter);
-}
-exports.run3 = run3;
-class TypeScriptLanguageServiceHost {
- constructor(libs, files, compilerOptions) {
- this._libs = libs;
- this._files = files;
- this._compilerOptions = compilerOptions;
- }
- // --- language service host ---------------
- getCompilationSettings() {
- return this._compilerOptions;
- }
- getScriptFileNames() {
- return ([]
- .concat(Object.keys(this._libs))
- .concat(Object.keys(this._files)));
- }
- getScriptVersion(_fileName) {
- return '1';
- }
- getProjectVersion() {
- return '1';
- }
- getScriptSnapshot(fileName) {
- if (this._files.hasOwnProperty(fileName)) {
- return ts.ScriptSnapshot.fromString(this._files[fileName]);
- }
- else if (this._libs.hasOwnProperty(fileName)) {
- return ts.ScriptSnapshot.fromString(this._libs[fileName]);
- }
- else {
- return ts.ScriptSnapshot.fromString('');
- }
- }
- getScriptKind(_fileName) {
- return ts.ScriptKind.TS;
- }
- getCurrentDirectory() {
- return '';
- }
- getDefaultLibFileName(_options) {
- return 'defaultLib:es5';
- }
- isDefaultLibFileName(fileName) {
- return fileName === this.getDefaultLibFileName(this._compilerOptions);
- }
-}
-function execute() {
- let r = run3(new DeclarationResolver(new FSProvider()));
- if (!r) {
- throw new Error(`monaco.d.ts generation error - Cannot continue`);
- }
- return r;
-}
-exports.execute = execute;
diff --git a/build/monaco/package.json b/build/monaco/package.json
index 70021689eb4..b42c6aa7344 100644
--- a/build/monaco/package.json
+++ b/build/monaco/package.json
@@ -1,7 +1,7 @@
{
"name": "monaco-editor-core",
"private": true,
- "version": "0.19.2",
+ "version": "0.21.1",
"description": "A browser based code editor",
"author": "Microsoft Corporation",
"license": "MIT",
@@ -9,9 +9,9 @@
"module": "./esm/vs/editor/editor.main.js",
"repository": {
"type": "git",
- "url": "https://github.com/Microsoft/vscode"
+ "url": "https://github.com/microsoft/vscode"
},
"bugs": {
- "url": "https://github.com/Microsoft/vscode/issues"
+ "url": "https://github.com/microsoft/vscode/issues"
}
}
diff --git a/build/npm/postinstall.js b/build/npm/postinstall.js
index 7b8b710636a..8f8b0019a77 100644
--- a/build/npm/postinstall.js
+++ b/build/npm/postinstall.js
@@ -33,7 +33,7 @@ function yarnInstall(location, opts) {
yarnInstall('extensions'); // node modules shared by all extensions
-if (!(process.platform === 'win32' && process.env['npm_config_arch'] === 'arm64')) {
+if (!(process.platform === 'win32' && (process.arch === 'arm64' || process.env['npm_config_arch'] === 'arm64'))) {
yarnInstall('remote'); // node modules used by vscode server
yarnInstall('remote/web'); // node modules used by vscode web
}
@@ -73,3 +73,5 @@ yarnInstall('test/automation'); // node modules required for smoketest
yarnInstall('test/smoke'); // node modules required for smoketest
yarnInstall('test/integration/browser'); // node modules required for integration
yarnInstallBuildDependencies(); // node modules for watching, specific to host node version, not electron
+
+cp.execSync('git config pull.rebase true');
diff --git a/build/package.json b/build/package.json
index ecff6c7a182..5de4f23887b 100644
--- a/build/package.json
+++ b/build/package.json
@@ -12,6 +12,7 @@
"@types/gulp": "^4.0.5",
"@types/gulp-concat": "^0.0.32",
"@types/gulp-filter": "^3.0.32",
+ "@types/gulp-gzip": "^0.0.31",
"@types/gulp-json-editor": "^2.2.31",
"@types/gulp-rename": "^0.0.33",
"@types/gulp-sourcemaps": "^0.0.32",
@@ -35,18 +36,21 @@
"azure-storage": "^2.1.0",
"electron-osx-sign": "^0.4.16",
"github-releases": "^0.4.1",
+ "gulp-azure-storage": "^0.11.1",
"gulp-bom": "^1.0.0",
+ "gulp-gzip": "^1.4.2",
"gulp-sourcemaps": "^1.11.0",
"gulp-uglify": "^3.0.0",
- "iconv-lite": "0.4.23",
+ "iconv-lite-umd": "0.6.8",
+ "jsonc-parser": "^2.3.0",
"mime": "^1.3.4",
"minimatch": "3.0.4",
"minimist": "^1.2.3",
"request": "^2.85.0",
"terser": "4.3.8",
- "typescript": "^3.9.3",
+ "typescript": "^4.2.0-dev.20201104",
"vsce": "1.48.0",
- "vscode-telemetry-extractor": "^1.5.4",
+ "vscode-telemetry-extractor": "^1.6.0",
"xml2js": "^0.4.17"
},
"scripts": {
diff --git a/build/polyfills/vscode-extension-telemetry.js b/build/polyfills/vscode-extension-telemetry.js
new file mode 100644
index 00000000000..d038776c59c
--- /dev/null
+++ b/build/polyfills/vscode-extension-telemetry.js
@@ -0,0 +1,26 @@
+/*---------------------------------------------------------------------------------------------
+ * 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 });
+
+let TelemetryReporter = (function () {
+ function TelemetryReporter(extensionId, extensionVersion, key) {
+ }
+ TelemetryReporter.prototype.updateUserOptIn = function (key) {
+ };
+ TelemetryReporter.prototype.createAppInsightsClient = function (key) {
+ };
+ TelemetryReporter.prototype.getCommonProperties = function () {
+ };
+ TelemetryReporter.prototype.sendTelemetryEvent = function (eventName, properties, measurements) {
+ };
+ TelemetryReporter.prototype.dispose = function () {
+ };
+ TelemetryReporter.TELEMETRY_CONFIG_ID = 'telemetry';
+ TelemetryReporter.TELEMETRY_CONFIG_ENABLED_ID = 'enableTelemetry';
+ return TelemetryReporter;
+}());
+exports.default = TelemetryReporter;
diff --git a/build/polyfills/vscode-nls.js b/build/polyfills/vscode-nls.js
new file mode 100644
index 00000000000..b89250102af
--- /dev/null
+++ b/build/polyfills/vscode-nls.js
@@ -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.
+ *--------------------------------------------------------------------------------------------*/
+
+'use strict';
+Object.defineProperty(exports, "__esModule", { value: true });
+
+function format(message, args) {
+ let result;
+ // if (isPseudo) {
+ // // FF3B and FF3D is the Unicode zenkaku representation for [ and ]
+ // message = '\uFF3B' + message.replace(/[aouei]/g, '$&$&') + '\uFF3D';
+ // }
+ if (args.length === 0) {
+ result = message;
+ }
+ else {
+ result = message.replace(/\{(\d+)\}/g, function (match, rest) {
+ let index = rest[0];
+ let arg = args[index];
+ let replacement = match;
+ if (typeof arg === 'string') {
+ replacement = arg;
+ }
+ else if (typeof arg === 'number' || typeof arg === 'boolean' || arg === void 0 || arg === null) {
+ replacement = String(arg);
+ }
+ return replacement;
+ });
+ }
+ return result;
+}
+
+function localize(key, message) {
+ let args = [];
+ for (let _i = 2; _i < arguments.length; _i++) {
+ args[_i - 2] = arguments[_i];
+ }
+ return format(message, args);
+}
+
+function loadMessageBundle(file) {
+ return localize;
+}
+
+let MessageFormat;
+(function (MessageFormat) {
+ MessageFormat["file"] = "file";
+ MessageFormat["bundle"] = "bundle";
+ MessageFormat["both"] = "both";
+})(MessageFormat = exports.MessageFormat || (exports.MessageFormat = {}));
+let BundleFormat;
+(function (BundleFormat) {
+ // the nls.bundle format
+ BundleFormat["standalone"] = "standalone";
+ BundleFormat["languagePack"] = "languagePack";
+})(BundleFormat = exports.BundleFormat || (exports.BundleFormat = {}));
+
+exports.loadMessageBundle = loadMessageBundle;
+function config(opts) {
+ if (opts) {
+ if (isString(opts.locale)) {
+ options.locale = opts.locale.toLowerCase();
+ options.language = options.locale;
+ resolvedLanguage = undefined;
+ resolvedBundles = Object.create(null);
+ }
+ if (opts.messageFormat !== undefined) {
+ options.messageFormat = opts.messageFormat;
+ }
+ if (opts.bundleFormat === BundleFormat.standalone && options.languagePackSupport === true) {
+ options.languagePackSupport = false;
+ }
+ }
+ isPseudo = options.locale === 'pseudo';
+ return loadMessageBundle;
+}
+exports.config = config;
diff --git a/build/tsconfig.json b/build/tsconfig.json
index df15ccdd1be..f075fe3d4f5 100644
--- a/build/tsconfig.json
+++ b/build/tsconfig.json
@@ -14,7 +14,8 @@
"checkJs": true,
"strict": true,
"noUnusedLocals": true,
- "noUnusedParameters": true
+ "noUnusedParameters": true,
+ "newLine": "lf"
},
"include": [
"**/*.ts"
diff --git a/build/win32/code.iss b/build/win32/code.iss
index 49b2f255ce3..50dcf76b882 100644
--- a/build/win32/code.iss
+++ b/build/win32/code.iss
@@ -1,7 +1,8 @@
+#define RootLicenseFileName FileExists(RepoDir + '\LICENSE.rtf') ? 'LICENSE.rtf' : 'LICENSE.txt'
#define LocalizedLanguageFile(Language = "") \
DirExists(RepoDir + "\licenses") && Language != "" \
? ('; LicenseFile: "' + RepoDir + '\licenses\LICENSE-' + Language + '.rtf"') \
- : '; LicenseFile: "' + RepoDir + '\LICENSE.rtf"'
+ : '; LicenseFile: "' + RepoDir + '\' + RootLicenseFileName + '"'
[Setup]
AppId={#AppId}
@@ -32,6 +33,7 @@ VersionInfoVersion={#RawVersion}
ShowLanguageDialog=auto
ArchitecturesAllowed={#ArchitecturesAllowed}
ArchitecturesInstallIn64BitMode={#ArchitecturesInstallIn64BitMode}
+WizardStyle=modern
#ifdef Sign
SignTool=esrp
@@ -45,7 +47,7 @@ DefaultDirName={pf}\{#DirName}
#endif
[Languages]
-Name: "english"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.isl,{#RepoDir}\build\win32\i18n\messages.en.isl" {#LocalizedLanguageFile}
+Name: "english"; MessagesFile: "compiler:Default.isl,{#RepoDir}\build\win32\i18n\messages.en.isl" {#LocalizedLanguageFile}
Name: "german"; MessagesFile: "compiler:Languages\German.isl,{#RepoDir}\build\win32\i18n\messages.de.isl" {#LocalizedLanguageFile("deu")}
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl,{#RepoDir}\build\win32\i18n\messages.es.isl" {#LocalizedLanguageFile("esp")}
Name: "french"; MessagesFile: "compiler:Languages\French.isl,{#RepoDir}\build\win32\i18n\messages.fr.isl" {#LocalizedLanguageFile("fra")}
@@ -55,6 +57,9 @@ Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl,{#RepoDir}\build\
Name: "korean"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.ko.isl,{#RepoDir}\build\win32\i18n\messages.ko.isl" {#LocalizedLanguageFile("kor")}
Name: "simplifiedChinese"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.zh-cn.isl,{#RepoDir}\build\win32\i18n\messages.zh-cn.isl" {#LocalizedLanguageFile("chs")}
Name: "traditionalChinese"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.zh-tw.isl,{#RepoDir}\build\win32\i18n\messages.zh-tw.isl" {#LocalizedLanguageFile("cht")}
+Name: "brazilianPortuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl,{#RepoDir}\build\win32\i18n\messages.pt-br.isl" {#LocalizedLanguageFile("ptb")}
+Name: "hungarian"; MessagesFile: "{#RepoDir}\build\win32\i18n\Default.hu.isl,{#RepoDir}\build\win32\i18n\messages.hu.isl" {#LocalizedLanguageFile("hun")}
+Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl,{#RepoDir}\build\win32\i18n\messages.tr.isl" {#LocalizedLanguageFile("trk")}
[InstallDelete]
Type: filesandordirs; Name: "{app}\resources\app\out"; Check: IsNotUpdate
@@ -84,7 +89,7 @@ Source: "{#ProductJsonPath}"; DestDir: "{code:GetDestDir}\resources\app"; Flags:
[Icons]
Name: "{group}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; AppUserModelID: "{#AppUserId}"
-Name: "{commondesktop}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: desktopicon; AppUserModelID: "{#AppUserId}"
+Name: "{autodesktop}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: desktopicon; AppUserModelID: "{#AppUserId}"
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: quicklaunchicon; AppUserModelID: "{#AppUserId}"
[Run]
@@ -103,6 +108,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ascx\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ascx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASCX}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ascx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ascx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\xml.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ascx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ascx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.asp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -110,6 +116,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.asp\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.asp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASP}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.asp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.asp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.asp\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.asp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.aspx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -117,6 +124,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.aspx\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.aspx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ASPX}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.aspx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.aspx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.aspx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.aspx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -124,6 +132,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_login\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -131,6 +140,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_login\OpenWithP
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_login"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Login}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_login"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_login\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_login\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_login\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_logout\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -138,6 +148,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_logout\OpenWith
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_logout"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Logout}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_logout"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_logout\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_logout\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_logout\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_profile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -145,6 +156,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bash_profile\OpenWit
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_profile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash Profile}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_profile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_profile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_profile\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bash_profile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bashrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -152,6 +164,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bashrc\OpenWithProgi
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bashrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bash RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bashrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bashrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bashrc\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bashrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bib\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -159,6 +172,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bib\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bib"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,BibTeX}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bib"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bib\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bib\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bib\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bowerrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -166,13 +180,22 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.bowerrc\OpenWithProg
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bowerrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Bower RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bowerrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bowerrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\bower.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bowerrc\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.bowerrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.c++\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.c++\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.c++"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c++"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c++"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c++\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c++\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
+
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.c\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.c\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.c"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\c.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.c\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -180,6 +203,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cc\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cc\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cjs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -187,6 +211,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cjs\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cjs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JavaScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cjs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cjs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\javascript.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cjs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cjs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.clj\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -194,6 +219,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.clj\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clj"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Clojure}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clj"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clj\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clj\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clj\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cljs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -201,6 +227,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cljs\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ClojureScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cljx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -208,6 +235,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cljx\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CLJX}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cljx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.clojure\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -215,6 +243,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.clojure\OpenWithProg
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clojure"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Clojure}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clojure"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clojure\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clojure\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.clojure\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.code-workspace\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -222,6 +251,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.code-workspace\OpenW
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.code-workspace"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Code Workspace}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.code"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.code-workspace\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.code-workspace\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.code-workspace\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.coffee\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -229,6 +259,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.coffee\OpenWithProgi
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.coffee"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CoffeeScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.coffee"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.coffee\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.coffee\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.coffee\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.config\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -236,6 +267,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.config\OpenWithProgi
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.config"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Configuration}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.config"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.config\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\config.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.config\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.config\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.containerfile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -250,6 +282,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cpp\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cpp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cpp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cpp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cpp\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cpp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -257,6 +290,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cs\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C#}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\csharp.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cshtml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -264,6 +298,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cshtml\OpenWithProgi
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cshtml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CSHTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cshtml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cshtml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cshtml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cshtml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.csproj\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -271,6 +306,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.csproj\OpenWithProgi
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csproj"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C# Project}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csproj"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csproj\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\xml.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csproj\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csproj\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.css\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -278,6 +314,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.css\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.css"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CSS}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.css"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.css\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\css.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.css\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.css\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.csx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -285,6 +322,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.csx\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C# Script}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\csharp.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.csx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ctp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -292,6 +330,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ctp\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ctp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,CakePHP Template}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ctp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ctp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ctp\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ctp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cxx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -299,6 +338,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.cxx\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cxx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cxx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cxx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cxx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.cxx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.dockerfile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -306,6 +346,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.dockerfile\OpenWithP
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dockerfile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Dockerfile}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dockerfile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dockerfile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dockerfile\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dockerfile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.dot\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -313,6 +354,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.dot\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dot"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Dot}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dot"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dot\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dot\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dot\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.dtd\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -320,6 +362,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.dtd\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dtd"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Document Type Definition}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dtd"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dtd\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\xml.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dtd\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.dtd\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.editorconfig\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -327,6 +370,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.editorconfig\OpenWit
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.editorconfig"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Editor Config}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.editorconfig"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.editorconfig\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\config.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.editorconfig\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.editorconfig\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.edn\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -334,6 +378,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.edn\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.edn"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Extensible Data Notation}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.edn"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.edn\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.edn\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.edn\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.eyaml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -341,6 +386,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.eyaml\OpenWithProgid
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.eyaml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Hiera Eyaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.eyaml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.eyaml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\yaml.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.eyaml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.eyaml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.eyml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -348,6 +394,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.eyml\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.eyml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Hiera Eyaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.eyml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.eyml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\yaml.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.eyml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.eyml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.fs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -355,6 +402,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.fs\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F#}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.fsi\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -362,6 +410,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.fsi\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsi"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F# Signature}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsi"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsi\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.fsscript\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -369,6 +418,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.fsscript\OpenWithPro
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsscript"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F# Script}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsscript"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsscript\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsscript\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsscript\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.fsx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -376,6 +426,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.fsx\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,F# Script}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.fsx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.gemspec\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -383,6 +434,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.gemspec\OpenWithProg
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gemspec"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Gemspec}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gemspec"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gemspec\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\ruby.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gemspec\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gemspec\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.gitattributes\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -391,6 +443,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitat
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitattributes"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitattributes"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitattributes\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\config.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitattributes\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitattributes\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.gitconfig\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -399,6 +452,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitco
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitconfig"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitconfig"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitconfig\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\config.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitconfig\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitconfig\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.gitignore\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -407,6 +461,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitig
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitignore"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitignore"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitignore\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\config.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitignore\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.gitignore\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.go\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -414,6 +469,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.go\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.go"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Go}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.go"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.go\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\go.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.go\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.go\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.h\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -421,6 +477,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.h\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.h"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.h"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.h\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\c.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.h\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.h\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.handlebars\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -428,6 +485,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.handlebars\OpenWithP
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.handlebars"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Handlebars}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.handlebars"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.handlebars\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.handlebars\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.handlebars\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.hbs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -435,13 +493,22 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.hbs\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hbs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Handlebars}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hbs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hbs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hbs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hbs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.h++\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.h++\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.h++"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.h++"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++ Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.h++"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.h++\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.h++\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
+
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.hh\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.hh\OpenWithProgids"; ValueType: string; ValueName: "{#RegValueName}.hh"; ValueData: ""; Flags: uninsdeletevalue; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hh"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++ Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hh"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hh\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hh\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hh\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.hpp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -449,6 +516,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.hpp\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hpp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++ Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hpp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hpp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hpp\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hpp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.htm\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -456,6 +524,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.htm\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.htm"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,HTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.htm"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.htm\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.htm\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.htm\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.html\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -463,6 +532,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.html\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.html"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,HTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.html"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.html\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.html\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.html\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.hxx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -470,6 +540,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.hxx\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hxx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,C++ Header}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hxx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hxx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\cpp.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hxx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.hxx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ini\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -477,6 +548,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ini\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ini"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,INI}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ini"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ini\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\config.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ini\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ini\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jade\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -484,6 +556,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jade\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jade"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Jade}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jade"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jade\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\jade.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jade\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jade\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jav\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -491,6 +564,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jav\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jav"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Java}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jav"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jav\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\java.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jav\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jav\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.java\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -498,6 +572,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.java\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.java"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Java}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.java"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.java\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\java.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.java\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.java\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.js\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -505,6 +580,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.js\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.js"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JavaScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.js"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.js\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\javascript.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.js\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.js\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jsx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -512,6 +588,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jsx\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jsx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JavaScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jsx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jsx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\react.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jsx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jsx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jscsrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -519,6 +596,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jscsrc\OpenWithProgi
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jscsrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JSCS RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jscsrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jscsrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\javascript.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jscsrc\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jscsrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jshintrc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -526,6 +604,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jshintrc\OpenWithPro
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jshintrc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JSHint RC}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jshintrc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jshintrc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\javascript.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jshintrc\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jshintrc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jshtm\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -533,6 +612,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jshtm\OpenWithProgid
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jshtm"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JavaScript HTML Template}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jshtm"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jshtm\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jshtm\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jshtm\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.json\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -540,6 +620,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.json\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.json"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JSON}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.json"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.json\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\json.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.json\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.json\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jsp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -547,6 +628,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.jsp\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jsp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Java Server Pages}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jsp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jsp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jsp\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.jsp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.less\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -554,6 +636,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.less\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.less"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,LESS}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.less"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.less\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\less.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.less\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.less\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.lua\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -561,6 +644,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.lua\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.lua"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Lua}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.lua"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.lua\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.lua\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.lua\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.m\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -568,6 +652,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.m\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.m"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Objective C}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.m"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.m\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.m\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.m\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.makefile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -575,6 +660,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.makefile\OpenWithPro
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.makefile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Makefile}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.makefile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.makefile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.makefile\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.makefile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.markdown\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -582,6 +668,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.markdown\OpenWithPro
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.markdown"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.markdown"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.markdown\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\markdown.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.markdown\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.markdown\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.md\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -589,6 +676,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.md\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.md"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.md"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.md\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\markdown.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.md\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.md\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mdoc\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -596,6 +684,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mdoc\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdoc"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,MDoc}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdoc"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdoc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\markdown.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdoc\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdoc\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mdown\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -603,6 +692,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mdown\OpenWithProgid
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdown"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdown"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdown\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\markdown.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdown\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdown\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mdtext\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -610,6 +700,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mdtext\OpenWithProgi
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdtext"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdtext"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdtext\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\markdown.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdtext\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdtext\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mdtxt\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -617,6 +708,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mdtxt\OpenWithProgid
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdtxt"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdtxt"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdtxt\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\markdown.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdtxt\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdtxt\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mdwn\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -624,6 +716,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mdwn\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdwn"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdwn"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdwn\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\markdown.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdwn\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mdwn\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mkd\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -631,6 +724,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mkd\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mkd"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mkd"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mkd\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\markdown.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mkd\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mkd\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mkdn\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -638,6 +732,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mkdn\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mkdn"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Markdown}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mkdn"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mkdn\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\markdown.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mkdn\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mkdn\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -645,6 +740,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ml\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,OCaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mli\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -652,6 +748,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mli\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mli"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,OCaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mli"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mli\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mli\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mli\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mjs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -659,6 +756,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.mjs\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mjs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,JavaScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mjs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mjs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\javascript.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mjs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.mjs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.npmignore\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -667,6 +765,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.npmig
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.npmignore"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.npmignore"; ValueType: string; ValueName: "AlwaysShowExt"; ValueData: ""; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.npmignore\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.npmignore\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.npmignore\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.php\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -674,6 +773,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.php\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.php"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PHP}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.php"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.php\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\php.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.php\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.php\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.phtml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -681,6 +781,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.phtml\OpenWithProgid
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.phtml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PHP HTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.phtml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.phtml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.phtml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.phtml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pl\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -688,6 +789,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pl\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pl"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pl"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pl\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pl\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pl\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pl6\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -695,6 +797,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pl6\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pl6"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl 6}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pl6"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pl6\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pl6\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pl6\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pm\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -702,6 +805,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pm\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pm"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl Module}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pm"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pm\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pm\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pm\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pm6\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -709,6 +813,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pm6\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pm6"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl 6 Module}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pm6"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pm6\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pm6\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pm6\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pod\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -716,6 +821,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pod\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pod"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl POD}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pod"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pod\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pod\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pod\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pp\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -723,6 +829,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.pp\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pp"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pp"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pp\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pp\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.pp\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.profile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -730,6 +837,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.profile\OpenWithProg
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.profile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Profile}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.profile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.profile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.profile\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.profile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.properties\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -737,6 +845,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.properties\OpenWithP
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.properties"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Properties}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.properties"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.properties\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.properties\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.properties\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ps1\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -744,6 +853,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ps1\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ps1"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PowerShell}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ps1"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ps1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\powershell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ps1\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ps1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.psd1\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -751,6 +861,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.psd1\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psd1"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PowerShell Module Manifest}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psd1"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psd1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\powershell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psd1\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psd1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.psgi\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -758,6 +869,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.psgi\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psgi"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl CGI}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psgi"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psgi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psgi\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psgi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.psm1\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -765,6 +877,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.psm1\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psm1"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,PowerShell Module}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psm1"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psm1\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\powershell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psm1\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.psm1\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.py\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -772,6 +885,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.py\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.py"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Python}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.py"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.py\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\python.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.py\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.py\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.r\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -779,6 +893,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.r\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.r"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,R}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.r"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.r\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.r\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.r\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.rb\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -786,6 +901,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.rb\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rb"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Ruby}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rb"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rb\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\ruby.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rb\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rb\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.rhistory\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -793,6 +909,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.rhistory\OpenWithPro
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rhistory"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,R History}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rhistory"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rhistory\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rhistory\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rhistory\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.rprofile\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -800,6 +917,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.rprofile\OpenWithPro
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rprofile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,R Profile}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rprofile"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rprofile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rprofile\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rprofile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.rs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -807,6 +925,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.rs\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Rust}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.rt\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -814,6 +933,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.rt\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rt"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Rich Text}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rt"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rt\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rt\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.rt\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.scss\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -821,6 +941,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.scss\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.scss"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Sass}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.scss"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.scss\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\sass.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.scss\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.scss\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.sh\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -828,6 +949,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.sh\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sh"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SH}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sh"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sh\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sh\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sh\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.shtml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -835,6 +957,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.shtml\OpenWithProgid
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.shtml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SHTML}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.shtml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.shtml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\html.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.shtml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.shtml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.sql\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -842,6 +965,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.sql\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sql"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SQL}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sql"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sql\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\sql.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sql\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.sql\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.svg\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -849,6 +973,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.svg\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.svg"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SVG}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.svg"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.svg\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.svg\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.svg\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.svgz\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -856,6 +981,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.svgz\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.svgz"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,SVGZ}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.svgz"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.svgz\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.svgz\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.svgz\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.t\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -863,6 +989,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.t\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.t"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Perl}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.t"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.t\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.t\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.t\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.tex\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -870,6 +997,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.tex\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.tex"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,LaTeX}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.tex"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.tex\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.tex\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.tex\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ts\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -877,6 +1005,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.ts\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ts"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,TypeScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ts"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ts\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\typescript.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ts\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.ts\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.tsx\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -884,6 +1013,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.tsx\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.tsx"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,TypeScript}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.tsx"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.tsx\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\react.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.tsx\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.tsx\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.txt\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -891,6 +1021,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.txt\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.txt"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Text}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.txt"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.txt\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.txt\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.txt\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.vb\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -898,6 +1029,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.vb\OpenWithProgids";
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.vb"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Visual Basic}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.vb"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.vb\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.vb\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.vb\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.vue\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -905,6 +1037,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.vue\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.vue"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,VUE}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.vue"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.vue\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\vue.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.vue\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.vue\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.wxi\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -912,6 +1045,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.wxi\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxi"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,WiX Include}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxi"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxi\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxi\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxi\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.wxl\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -919,6 +1053,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.wxl\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxl"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,WiX Localization}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxl"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxl\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxl\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxl\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.wxs\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -926,6 +1061,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.wxs\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxs"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,WiX}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxs"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxs\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxs\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.wxs\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.xaml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -933,6 +1069,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.xaml\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.xaml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,XAML}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.xaml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.xaml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\xml.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.xaml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.xaml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.xml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -940,6 +1077,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.xml\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.xml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,XML}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.xml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.xml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\xml.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.xml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.xml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.yaml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -947,6 +1085,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.yaml\OpenWithProgids
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.yaml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Yaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.yaml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.yaml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\yaml.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.yaml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.yaml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.yml\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -954,6 +1093,7 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.yml\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.yml"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,Yaml}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.yml"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.yml\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\yaml.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.yml\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.yml\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.zsh\OpenWithProgids"; ValueType: none; ValueName: "{#RegValueName}"; Flags: deletevalue uninsdeletevalue; Tasks: associatewithfiles
@@ -961,14 +1101,17 @@ Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\.zsh\OpenWithProgids"
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.zsh"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,ZSH}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.zsh"; ValueType: string; ValueName: "AppUserModelID"; ValueData: "{#AppUserId}"; Flags: uninsdeletekey; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.zsh\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\shell.ico"; Tasks: associatewithfiles
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.zsh\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}.zsh\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""; Tasks: associatewithfiles
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}SourceFile"; ValueType: string; ValueName: ""; ValueData: "{cm:SourceFile,{#NameLong}}"; Flags: uninsdeletekey
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}SourceFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}SourceFile\shell\open"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"""
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\{#RegValueName}SourceFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\Applications\{#ExeBasename}.exe"; ValueType: none; ValueName: ""; Flags: uninsdeletekey
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\Applications\{#ExeBasename}.exe\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\resources\app\resources\win32\default.ico"
+Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\Applications\{#ExeBasename}.exe\shell\open"; ValueType: string; ValueName: "Icon"; ValueData: """{app}\{#ExeBasename}.exe"""
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\Applications\{#ExeBasename}.exe\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#ExeBasename}.exe"" ""%1"""
Root: {#SoftwareClassesRootKey}; Subkey: "Software\Classes\*\shell\{#RegValueName}"; ValueType: expandsz; ValueName: ""; ValueData: "{cm:OpenWithCodeContextMenu,{#ShellNameShort}}"; Tasks: addcontextmenufiles; Flags: uninsdeletekey
@@ -1010,7 +1153,7 @@ begin
Result := True;
#if "user" == InstallTarget
- if not WizardSilent() and IsAdminLoggedOn() then begin
+ if not WizardSilent() and IsAdmin() then begin
if MsgBox('This User Installer is not meant to be run as an Administrator. If you would like to install VS Code for all users in this system, download the System Installer instead from https://code.visualstudio.com. Are you sure you want to continue?', mbError, MB_OKCANCEL) = IDCANCEL then begin
Result := False;
end;
@@ -1128,7 +1271,7 @@ begin
end;
end;
-// http://stackoverflow.com/a/23838239/261019
+// https://stackoverflow.com/a/23838239/261019
procedure Explode(var Dest: TArrayOfString; Text: String; Separator: String);
var
i, p: Integer;
diff --git a/build/win32/i18n/Default.hu.isl b/build/win32/i18n/Default.hu.isl
new file mode 100644
index 00000000000..8c57d20a59a
--- /dev/null
+++ b/build/win32/i18n/Default.hu.isl
@@ -0,0 +1,366 @@
+;Inno Setup version 6.0.3+ Hungarian messages
+;Based on the translation of Kornél Pál, kornelpal@gmail.com
+;István Szabó, E-mail: istvanszabo890629@gmail.com
+;
+; To download user-contributed translations of this file, go to:
+; http://www.jrsoftware.org/files/istrans/
+;
+; Note: When translating this text, do not add periods (.) to the end of
+; messages that didn't have them already, because on those messages Inno
+; Setup adds the periods automatically (appending a period would result in
+; two periods being displayed).
+
+[LangOptions]
+; The following three entries are very important. Be sure to read and
+; understand the '[LangOptions] section' topic in the help file.
+LanguageName=Magyar
+LanguageID=$040E
+LanguageCodePage=1250
+; If the language you are translating to requires special font faces or
+; sizes, uncomment any of the following entries and change them accordingly.
+;DialogFontName=
+;DialogFontSize=8
+;WelcomeFontName=Verdana
+;WelcomeFontSize=12
+;TitleFontName=Arial CE
+;TitleFontSize=29
+;CopyrightFontName=Arial CE
+;CopyrightFontSize=8
+
+[Messages]
+
+; *** Application titles
+SetupAppTitle=Telepítõ
+SetupWindowTitle=%1 - Telepítõ
+UninstallAppTitle=Eltávolító
+UninstallAppFullTitle=%1 Eltávolító
+
+; *** Misc. common
+InformationTitle=Információk
+ConfirmTitle=Megerõsít
+ErrorTitle=Hiba
+
+; *** SetupLdr messages
+SetupLdrStartupMessage=%1 telepítve lesz. Szeretné folytatni?
+LdrCannotCreateTemp=Átmeneti fájl létrehozása nem lehetséges. A telepítés megszakítva
+LdrCannotExecTemp=Fájl futtatása nem lehetséges az átmeneti könyvtárban. A telepítés megszakítva
+HelpTextNote=
+
+; *** Startup error messages
+LastErrorMessage=%1.%n%nHiba %2: %3
+SetupFileMissing=A(z) %1 fájl hiányzik a telepítõ könyvtárából. Kérem hárítsa el a problémát, vagy szerezzen be egy másik példányt a programból!
+SetupFileCorrupt=A telepítési fájlok sérültek. Kérem, szerezzen be új másolatot a programból!
+SetupFileCorruptOrWrongVer=A telepítési fájlok sérültek, vagy inkompatibilisek a telepítõ ezen verziójával. Hárítsa el a problémát, vagy szerezzen be egy másik példányt a programból!
+InvalidParameter=A parancssorba átadott paraméter érvénytelen:%n%n%1
+SetupAlreadyRunning=A Telepítõ már fut.
+WindowsVersionNotSupported=A program nem támogatja a Windows ezen verzióját.
+WindowsServicePackRequired=A program futtatásához %1 Service Pack %2 vagy újabb szükséges.
+NotOnThisPlatform=Ez a program nem futtatható %1 alatt.
+OnlyOnThisPlatform=Ezt a programot %1 alatt kell futtatni.
+OnlyOnTheseArchitectures=A program kizárólag a következõ processzor architektúrákhoz tervezett Windows-on telepíthetõ:%n%n%1
+WinVersionTooLowError=A program futtatásához %1 %2 verziója vagy késõbbi szükséges.
+WinVersionTooHighError=Ez a program nem telepíthetõ %1 %2 vagy késõbbire.
+AdminPrivilegesRequired=Csak rendszergazdai módban telepíthetõ ez a program.
+PowerUserPrivilegesRequired=Csak rendszergazdaként vagy kiemelt felhasználóként telepíthetõ ez a program.
+SetupAppRunningError=A telepítõ úgy észlelte %1 jelenleg fut.%n%nZárja be az összes példányt, majd kattintson az 'OK'-ra a folytatáshoz, vagy a 'Mégse'-re a kilépéshez.
+UninstallAppRunningError=Az eltávolító úgy észlelte %1 jelenleg fut.%n%nZárja be az összes példányt, majd kattintson az 'OK'-ra a folytatáshoz, vagy a 'Mégse'-re a kilépéshez.
+
+; *** Startup questions
+PrivilegesRequiredOverrideTitle=Telepítési mód kiválasztása
+PrivilegesRequiredOverrideInstruction=Válasszon telepítési módot
+PrivilegesRequiredOverrideText1=%1 telepíthetõ az összes felhasználónak (rendszergazdai jogok szükségesek), vagy csak magának.
+PrivilegesRequiredOverrideText2=%1 csak magának telepíthetõ, vagy az összes felhasználónak (rendszergazdai jogok szükségesek).
+PrivilegesRequiredOverrideAllUsers=Telepítés &mindenkinek
+PrivilegesRequiredOverrideAllUsersRecommended=Telepítés &mindenkinek (ajánlott)
+PrivilegesRequiredOverrideCurrentUser=Telepítés csak &nekem
+PrivilegesRequiredOverrideCurrentUserRecommended=Telepítés csak &nekem (ajánlott)
+
+; *** Misc. errors
+ErrorCreatingDir=A Telepítõ nem tudta létrehozni a(z) "%1" könyvtárat
+ErrorTooManyFilesInDir=Nem hozható létre fájl a(z) "%1" könyvtárban, mert az már túl sok fájlt tartalmaz
+
+; *** Setup common messages
+ExitSetupTitle=Kilépés a telepítõbõl
+ExitSetupMessage=A telepítés még folyamatban van. Ha most kilép, a program nem kerül telepítésre.%n%nMásik alkalommal is futtatható a telepítés befejezéséhez%n%nKilép a telepítõbõl?
+AboutSetupMenuItem=&Névjegy...
+AboutSetupTitle=Telepítõ névjegye
+AboutSetupMessage=%1 %2 verzió%n%3%n%nAz %1 honlapja:%n%4
+AboutSetupNote=
+TranslatorNote=
+
+; *** Buttons
+ButtonBack=< &Vissza
+ButtonNext=&Tovább >
+ButtonInstall=&Telepít
+ButtonOK=OK
+ButtonCancel=Mégse
+ButtonYes=&Igen
+ButtonYesToAll=&Mindet
+ButtonNo=&Nem
+ButtonNoToAll=&Egyiket se
+ButtonFinish=&Befejezés
+ButtonBrowse=&Tallózás...
+ButtonWizardBrowse=T&allózás...
+ButtonNewFolder=Új &könyvtár
+
+; *** "Select Language" dialog messages
+SelectLanguageTitle=Telepítõ nyelvi beállítás
+SelectLanguageLabel=Válassza ki a telepítés alatt használt nyelvet.
+
+; *** Common wizard text
+ClickNext=A folytatáshoz kattintson a 'Tovább'-ra, a kilépéshez a 'Mégse'-re.
+BeveledLabel=
+BrowseDialogTitle=Válasszon könyvtárt
+BrowseDialogLabel=Válasszon egy könyvtárat az alábbi listából, majd kattintson az 'OK'-ra.
+NewFolderName=Új könyvtár
+
+; *** "Welcome" wizard page
+WelcomeLabel1=Üdvözli a(z) [name] Telepítõvarázslója.
+WelcomeLabel2=A(z) [name/ver] telepítésre kerül a számítógépén.%n%nAjánlott minden, egyéb futó alkalmazás bezárása a folytatás elõtt.
+
+; *** "Password" wizard page
+WizardPassword=Jelszó
+PasswordLabel1=Ez a telepítés jelszóval védett.
+PasswordLabel3=Kérem adja meg a jelszót, majd kattintson a 'Tovább'-ra. A jelszavak kis- és nagy betû érzékenyek lehetnek.
+PasswordEditLabel=&Jelszó:
+IncorrectPassword=Az ön által megadott jelszó helytelen. Próbálja újra.
+
+; *** "License Agreement" wizard page
+WizardLicense=Licencszerzõdés
+LicenseLabel=Olvassa el figyelmesen az információkat folytatás elõtt.
+LicenseLabel3=Kérem, olvassa el az alábbi licencszerzõdést. A telepítés folytatásához, el kell fogadnia a szerzõdést.
+LicenseAccepted=&Elfogadom a szerzõdést
+LicenseNotAccepted=&Nem fogadom el a szerzõdést
+
+; *** "Information" wizard pages
+WizardInfoBefore=Információk
+InfoBeforeLabel=Olvassa el a következõ fontos információkat a folytatás elõtt.
+InfoBeforeClickLabel=Ha készen áll, kattintson a 'Tovább'-ra.
+WizardInfoAfter=Információk
+InfoAfterLabel=Olvassa el a következõ fontos információkat a folytatás elõtt.
+InfoAfterClickLabel=Ha készen áll, kattintson a 'Tovább'-ra.
+
+; *** "User Information" wizard page
+WizardUserInfo=Felhasználó adatai
+UserInfoDesc=Kérem, adja meg az adatait
+UserInfoName=&Felhasználónév:
+UserInfoOrg=&Szervezet:
+UserInfoSerial=&Sorozatszám:
+UserInfoNameRequired=Meg kell adnia egy nevet.
+
+; *** "Select Destination Location" wizard page
+WizardSelectDir=Válasszon célkönyvtárat
+SelectDirDesc=Hova települjön a(z) [name]?
+SelectDirLabel3=A(z) [name] az alábbi könyvtárba lesz telepítve.
+SelectDirBrowseLabel=A folytatáshoz, kattintson a 'Tovább'-ra. Ha másik könyvtárat választana, kattintson a 'Tallózás'-ra.
+DiskSpaceGBLabel=At least [gb] GB szabad területre van szükség.
+DiskSpaceMBLabel=Legalább [mb] MB szabad területre van szükség.
+CannotInstallToNetworkDrive=A Telepítõ nem tud hálózati meghajtóra telepíteni.
+CannotInstallToUNCPath=A Telepítõ nem tud hálózati UNC elérési útra telepíteni.
+InvalidPath=Teljes útvonalat adjon meg, a meghajtó betûjelével; például:%n%nC:\Alkalmazás%n%nvagy egy hálózati útvonalat a következõ alakban:%n%n\\kiszolgáló\megosztás
+InvalidDrive=A kiválasztott meghajtó vagy hálózati megosztás nem létezik vagy nem elérhetõ. Válasszon egy másikat.
+DiskSpaceWarningTitle=Nincs elég szabad terület
+DiskSpaceWarning=A Telepítõnek legalább %1 KB szabad lemezterületre van szüksége, viszont a kiválasztott meghajtón csupán %2 KB áll rendelkezésre.%n%nMindenképpen folytatja?
+DirNameTooLong=A könyvtár neve vagy az útvonal túl hosszú.
+InvalidDirName=A könyvtár neve érvénytelen.
+BadDirName32=A könyvtárak nevei ezen karakterek egyikét sem tartalmazhatják:%n%n%1
+DirExistsTitle=A könyvtár már létezik
+DirExists=A könyvtár:%n%n%1%n%nmár létezik. Mindenképp ide akar telepíteni?
+DirDoesntExistTitle=A könyvtár nem létezik
+DirDoesntExist=A könyvtár:%n%n%1%n%nnem létezik. Szeretné létrehozni?
+
+; *** "Select Components" wizard page
+WizardSelectComponents=Összetevõk kiválasztása
+SelectComponentsDesc=Mely összetevõk kerüljenek telepítésre?
+SelectComponentsLabel2=Jelölje ki a telepítendõ összetevõket; törölje a telepíteni nem kívánt összetevõket. Kattintson a 'Tovább'-ra, ha készen áll a folytatásra.
+FullInstallation=Teljes telepítés
+; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
+CompactInstallation=Szokásos telepítés
+CustomInstallation=Egyéni telepítés
+NoUninstallWarningTitle=Létezõ összetevõ
+NoUninstallWarning=A telepítõ úgy találta, hogy a következõ összetevõk már telepítve vannak a számítógépre:%n%n%1%n%nEzen összetevõk kijelölésének törlése, nem távolítja el azokat a számítógéprõl.%n%nMindenképpen folytatja?
+ComponentSize1=%1 KB
+ComponentSize2=%1 MB
+ComponentsDiskSpaceMBLabel=A jelenlegi kijelölés legalább [gb] GB lemezterületet igényel.
+ComponentsDiskSpaceMBLabel=A jelenlegi kijelölés legalább [mb] MB lemezterületet igényel.
+
+; *** "Select Additional Tasks" wizard page
+WizardSelectTasks=További feladatok
+SelectTasksDesc=Mely kiegészítõ feladatok kerüljenek végrehajtásra?
+SelectTasksLabel2=Jelölje ki, mely kiegészítõ feladatokat hajtsa végre a Telepítõ a(z) [name] telepítése során, majd kattintson a 'Tovább'-ra.
+
+; *** "Select Start Menu Folder" wizard page
+WizardSelectProgramGroup=Start Menü könyvtára
+SelectStartMenuFolderDesc=Hova helyezze a Telepítõ a program parancsikonjait?
+SelectStartMenuFolderLabel3=A Telepítõ a program parancsikonjait a Start menü következõ mappájában fogja létrehozni.
+SelectStartMenuFolderBrowseLabel=A folytatáshoz kattintson a 'Tovább'-ra. Ha másik mappát választana, kattintson a 'Tallózás'-ra.
+MustEnterGroupName=Meg kell adnia egy mappanevet.
+GroupNameTooLong=A könyvtár neve vagy az útvonal túl hosszú.
+InvalidGroupName=A könyvtár neve érvénytelen.
+BadGroupName=A könyvtárak nevei ezen karakterek egyikét sem tartalmazhatják:%n%n%1
+NoProgramGroupCheck2=&Ne hozzon létre mappát a Start menüben
+
+; *** "Ready to Install" wizard page
+WizardReady=Készen állunk a telepítésre
+ReadyLabel1=A Telepítõ készen áll, a(z) [name] számítógépre telepítéshez.
+ReadyLabel2a=Kattintson a 'Telepítés'-re a folytatáshoz, vagy a "Vissza"-ra a beállítások áttekintéséhez vagy megváltoztatásához.
+ReadyLabel2b=Kattintson a 'Telepítés'-re a folytatáshoz.
+ReadyMemoUserInfo=Felhasználó adatai:
+ReadyMemoDir=Telepítés célkönyvtára:
+ReadyMemoType=Telepítés típusa:
+ReadyMemoComponents=Választott összetevõk:
+ReadyMemoGroup=Start menü mappája:
+ReadyMemoTasks=Kiegészítõ feladatok:
+
+; *** "Preparing to Install" wizard page
+WizardPreparing=Felkészülés a telepítésre
+PreparingDesc=A Telepítõ felkészül a(z) [name] számítógépre történõ telepítéshez.
+PreviousInstallNotCompleted=gy korábbi program telepítése/eltávolítása nem fejezõdött be. Újra kell indítania a számítógépét a másik telepítés befejezéséhez.%n%nA számítógépe újraindítása után ismét futtassa a Telepítõt a(z) [name] telepítésének befejezéséhez.
+CannotContinue=A telepítés nem folytatható. A kilépéshez kattintson a 'Mégse'-re
+ApplicationsFound=A következõ alkalmazások olyan fájlokat használnak, amelyeket a Telepítõnek frissíteni kell. Ajánlott, hogy engedélyezze a Telepítõnek ezen alkalmazások automatikus bezárását.
+ApplicationsFound2=A következõ alkalmazások olyan fájlokat használnak, amelyeket a Telepítõnek frissíteni kell. Ajánlott, hogy engedélyezze a Telepítõnek ezen alkalmazások automatikus bezárását. A telepítés befejezése után a Telepítõ megkísérli az alkalmazások újraindítását.
+CloseApplications=&Alkalmazások automatikus bezárása
+DontCloseApplications=&Ne zárja be az alkalmazásokat
+ErrorCloseApplications=A Telepítõ nem tudott minden alkalmazást automatikusan bezárni. A folytatás elõtt ajánlott minden, a Telepítõ által frissítendõ fájlokat használó alkalmazást bezárni.
+PrepareToInstallNeedsRestart=A telepítõnek újra kell indítania a számítógépet. Újraindítást követõen, futtassa újból a telepítõt, a [name] telepítésének befejezéséhez .%n%nÚjra szeretné indítani most a számítógépet?
+
+; *** "Installing" wizard page
+WizardInstalling=Telepítés
+InstallingLabel=Kérem várjon, amíg a(z) [name] telepítése zajlik.
+
+; *** "Setup Completed" wizard page
+FinishedHeadingLabel=A(z) [name] telepítésének befejezése
+FinishedLabelNoIcons=A Telepítõ végzett a(z) [name] telepítésével.
+FinishedLabel=A Telepítõ végzett a(z) [name] telepítésével. Az alkalmazást a létrehozott ikonok kiválasztásával indíthatja.
+ClickFinish=Kattintson a 'Befejezés'-re a kilépéshez.
+FinishedRestartLabel=A(z) [name] telepítésének befejezéséhez újra kell indítani a számítógépet. Újraindítja most?
+FinishedRestartMessage=A(z) [name] telepítésének befejezéséhez, a Telepítõnek újra kell indítani a számítógépet.%n%nÚjraindítja most?
+ShowReadmeCheck=Igen, szeretném elolvasni a FONTOS fájlt
+YesRadio=&Igen, újraindítás most
+NoRadio=&Nem, késõbb indítom újra
+; used for example as 'Run MyProg.exe'
+RunEntryExec=%1 futtatása
+; used for example as 'View Readme.txt'
+RunEntryShellExec=%1 megtekintése
+
+; *** "Setup Needs the Next Disk" stuff
+ChangeDiskTitle=A Telepítõnek szüksége van a következõ lemezre
+SelectDiskLabel2=Helyezze be a(z) %1. lemezt és kattintson az 'OK'-ra.%n%nHa a fájlok a lemez egy a megjelenítettõl különbözõ mappájában találhatók, írja be a helyes útvonalat vagy kattintson a 'Tallózás'-ra.
+PathLabel=Ú&tvonal:
+FileNotInDir2=A(z) "%1" fájl nem található a következõ helyen: "%2". Helyezze be a megfelelõ lemezt vagy válasszon egy másik mappát.
+SelectDirectoryLabel=Adja meg a következõ lemez helyét.
+
+; *** Installation phase messages
+SetupAborted=A telepítés nem fejezõdött be.%n%nHárítsa el a hibát és futtassa újból a Telepítõt.
+AbortRetryIgnoreSelectAction=Válasszon mûveletet
+AbortRetryIgnoreRetry=&Újra
+AbortRetryIgnoreIgnore=&Hiba elvetése és folytatás
+AbortRetryIgnoreCancel=Telepítés megszakítása
+
+; *** Installation status messages
+StatusClosingApplications=Alkalmazások bezárása...
+StatusCreateDirs=Könyvtárak létrehozása...
+StatusExtractFiles=Fájlok kibontása...
+StatusCreateIcons=Parancsikonok létrehozása...
+StatusCreateIniEntries=INI bejegyzések létrehozása...
+StatusCreateRegistryEntries=Rendszerleíró bejegyzések létrehozása...
+StatusRegisterFiles=Fájlok regisztrálása...
+StatusSavingUninstall=Eltávolító információk mentése...
+StatusRunProgram=Telepítés befejezése...
+StatusRestartingApplications=Alkalmazások újraindítása...
+StatusRollback=Változtatások visszavonása...
+
+; *** Misc. errors
+ErrorInternal2=Belsõ hiba: %1
+ErrorFunctionFailedNoCode=Sikertelen %1
+ErrorFunctionFailed=Sikertelen %1; kód: %2
+ErrorFunctionFailedWithMessage=Sikertelen %1; kód: %2.%n%3
+ErrorExecutingProgram=Nem hajtható végre a fájl:%n%1
+
+; *** Registry errors
+ErrorRegOpenKey=Nem nyitható meg a rendszerleíró kulcs:%n%1\%2
+ErrorRegCreateKey=Nem hozható létre a rendszerleíró kulcs:%n%1\%2
+ErrorRegWriteKey=Nem módosítható a rendszerleíró kulcs:%n%1\%2
+
+; *** INI errors
+ErrorIniEntry=Bejegyzés létrehozása sikertelen a következõ INI fájlban: "%1".
+
+; *** File copying errors
+FileAbortRetryIgnoreSkipNotRecommended=&Fájl kihagyása (nem ajánlott)
+FileAbortRetryIgnoreIgnoreNotRecommended=&Hiba elvetése és folytatás (nem ajánlott)
+SourceIsCorrupted=A forrásfájl megsérült
+SourceDoesntExist=A(z) "%1" forrásfájl nem létezik
+ExistingFileReadOnly2=A fájl csak olvashatóként van jelölve.
+ExistingFileReadOnlyRetry=Csak &olvasható tulajdonság eltávolítása és újra próbálkozás
+ExistingFileReadOnlyKeepExisting=&Létezõ fájl megtartása
+ErrorReadingExistingDest=Hiba lépett fel a fájl olvasása közben:
+FileExists=A fájl már létezik.%n%nFelül kívánja írni?
+ExistingFileNewer=A létezõ fájl újabb a telepítésre kerülõnél. Ajánlott a létezõ fájl megtartása.%n%nMeg kívánja tartani a létezõ fájlt?
+ErrorChangingAttr=Hiba lépett fel a fájl attribútumának módosítása közben:
+ErrorCreatingTemp=Hiba lépett fel a fájl telepítési könyvtárban történõ létrehozása közben:
+ErrorReadingSource=Hiba lépett fel a forrásfájl olvasása közben:
+ErrorCopying=Hiba lépett fel a fájl másolása közben:
+ErrorReplacingExistingFile=Hiba lépett fel a létezõ fájl cseréje közben:
+ErrorRestartReplace=A fájl cseréje az újraindítás után sikertelen volt:
+ErrorRenamingTemp=Hiba lépett fel fájl telepítési könyvtárban történõ átnevezése közben:
+ErrorRegisterServer=Nem lehet regisztrálni a DLL-t/OCX-et: %1
+ErrorRegSvr32Failed=Sikertelen RegSvr32. A visszaadott kód: %1
+ErrorRegisterTypeLib=Nem lehet regisztrálni a típustárat: %1
+
+; *** Uninstall display name markings
+; used for example as 'My Program (32-bit)'
+UninstallDisplayNameMark=%1 (%2)
+; used for example as 'My Program (32-bit, All users)'
+UninstallDisplayNameMarks=%1 (%2, %3)
+UninstallDisplayNameMark32Bit=32-bit
+UninstallDisplayNameMark64Bit=64-bit
+UninstallDisplayNameMarkAllUsers=Minden felhasználó
+UninstallDisplayNameMarkCurrentUser=Jelenlegi felhasználó
+
+; *** Post-installation errors
+ErrorOpeningReadme=Hiba lépett fel a FONTOS fájl megnyitása közben.
+ErrorRestartingComputer=A Telepítõ nem tudta újraindítani a számítógépet. Indítsa újra kézileg.
+
+; *** Uninstaller messages
+UninstallNotFound=A(z) "%1" fájl nem létezik. Nem távolítható el.
+UninstallOpenError=A(z) "%1" fájl nem nyitható meg. Nem távolítható el.
+UninstallUnsupportedVer=A(z) "%1" eltávolítási naplófájl formátumát nem tudja felismerni az eltávolító jelen verziója. Az eltávolítás nem folytatható
+UninstallUnknownEntry=Egy ismeretlen bejegyzés (%1) található az eltávolítási naplófájlban
+ConfirmUninstall=Biztosan el kívánja távolítani a(z) %1 programot és minden összetevõjét?
+UninstallOnlyOnWin64=Ezt a telepítést csak 64-bites Windowson lehet eltávolítani.
+OnlyAdminCanUninstall=Ezt a telepítést csak adminisztrációs jogokkal rendelkezõ felhasználó távolíthatja el.
+UninstallStatusLabel=Legyen türelemmel, amíg a(z) %1 számítógépérõl történõ eltávolítása befejezõdik.
+UninstalledAll=A(z) %1 sikeresen el lett távolítva a számítógéprõl.
+UninstalledMost=A(z) %1 eltávolítása befejezõdött.%n%nNéhány elemet nem lehetett eltávolítani. Törölje kézileg.
+UninstalledAndNeedsRestart=A(z) %1 eltávolításának befejezéséhez újra kell indítania a számítógépét.%n%nÚjraindítja most?
+UninstallDataCorrupted=A(z) "%1" fájl sérült. Nem távolítható el.
+
+; *** Uninstallation phase messages
+ConfirmDeleteSharedFileTitle=Törli a megosztott fájlt?
+ConfirmDeleteSharedFile2=A rendszer azt jelzi, hogy a következõ megosztott fájlra már nincs szüksége egyetlen programnak sem. Eltávolítja a megosztott fájlt?%n%nHa más programok még mindig használják a megosztott fájlt, akkor az eltávolítása után lehet, hogy nem fognak megfelelõen mûködni. Ha bizonytalan, válassza a Nemet. A fájl megtartása nem okoz problémát a rendszerben.
+SharedFileNameLabel=Fájlnév:
+SharedFileLocationLabel=Helye:
+WizardUninstalling=Eltávolítás állapota
+StatusUninstalling=%1 eltávolítása...
+
+; *** Shutdown block reasons
+ShutdownBlockReasonInstallingApp=%1 telepítése.
+ShutdownBlockReasonUninstallingApp=%1 eltávolítása.
+
+; The custom messages below aren't used by Setup itself, but if you make
+; use of them in your scripts, you'll want to translate them.
+
+[CustomMessages]
+
+NameAndVersion=%1, verzió: %2
+AdditionalIcons=További parancsikonok:
+CreateDesktopIcon=&Asztali ikon létrehozása
+CreateQuickLaunchIcon=&Gyorsindító parancsikon létrehozása
+ProgramOnTheWeb=%1 az interneten
+UninstallProgram=Eltávolítás - %1
+LaunchProgram=Indítás %1
+AssocFileExtension=A(z) %1 &társítása a(z) %2 fájlkiterjesztéssel
+AssocingFileExtension=A(z) %1 társítása a(z) %2 fájlkiterjesztéssel...
+AutoStartProgramGroupDescription=Indítópult:
+AutoStartProgram=%1 automatikus indítása
+AddonHostProgramNotFound=A(z) %1 nem található a kiválasztott könyvtárban.%n%nMindenképpen folytatja?
diff --git a/build/win32/i18n/Default.isl b/build/win32/i18n/Default.isl
deleted file mode 100644
index 370da6b37c7..00000000000
--- a/build/win32/i18n/Default.isl
+++ /dev/null
@@ -1,336 +0,0 @@
-; *** Inno Setup version 5.5.3+ English messages ***
-;
-; To download user-contributed translations of this file, go to:
-; http://www.jrsoftware.org/files/istrans/
-;
-; Note: When translating this text, do not add periods (.) to the end of
-; messages that didn't have them already, because on those messages Inno
-; Setup adds the periods automatically (appending a period would result in
-; two periods being displayed).
-
-[LangOptions]
-; The following three entries are very important. Be sure to read and
-; understand the '[LangOptions] section' topic in the help file.
-LanguageName=English
-LanguageID=$0409
-LanguageCodePage=0
-; If the language you are translating to requires special font faces or
-; sizes, uncomment any of the following entries and change them accordingly.
-;DialogFontName=
-;DialogFontSize=8
-;WelcomeFontName=Verdana
-;WelcomeFontSize=12
-;TitleFontName=Arial
-;TitleFontSize=29
-;CopyrightFontName=Arial
-;CopyrightFontSize=8
-
-[Messages]
-
-; *** Application titles
-SetupAppTitle=Setup
-SetupWindowTitle=Setup - %1
-UninstallAppTitle=Uninstall
-UninstallAppFullTitle=%1 Uninstall
-
-; *** Misc. common
-InformationTitle=Information
-ConfirmTitle=Confirm
-ErrorTitle=Error
-
-; *** SetupLdr messages
-SetupLdrStartupMessage=This will install %1. Do you wish to continue?
-LdrCannotCreateTemp=Unable to create a temporary file. Setup aborted
-LdrCannotExecTemp=Unable to execute file in the temporary directory. Setup aborted
-
-; *** Startup error messages
-LastErrorMessage=%1.%n%nError %2: %3
-SetupFileMissing=The file %1 is missing from the installation directory. Please correct the problem or obtain a new copy of the program.
-SetupFileCorrupt=The setup files are corrupted. Please obtain a new copy of the program.
-SetupFileCorruptOrWrongVer=The setup files are corrupted, or are incompatible with this version of Setup. Please correct the problem or obtain a new copy of the program.
-InvalidParameter=An invalid parameter was passed on the command line:%n%n%1
-SetupAlreadyRunning=Setup is already running.
-WindowsVersionNotSupported=This program does not support the version of Windows your computer is running.
-WindowsServicePackRequired=This program requires %1 Service Pack %2 or later.
-NotOnThisPlatform=This program will not run on %1.
-OnlyOnThisPlatform=This program must be run on %1.
-OnlyOnTheseArchitectures=This program can only be installed on versions of Windows designed for the following processor architectures:%n%n%1
-MissingWOW64APIs=The version of Windows you are running does not include functionality required by Setup to perform a 64-bit installation. To correct this problem, please install Service Pack %1.
-WinVersionTooLowError=This program requires %1 version %2 or later.
-WinVersionTooHighError=This program cannot be installed on %1 version %2 or later.
-AdminPrivilegesRequired=You must be logged in as an administrator when installing this program.
-PowerUserPrivilegesRequired=You must be logged in as an administrator or as a member of the Power Users group when installing this program.
-SetupAppRunningError=Setup has detected that %1 is currently running.%n%nPlease close all instances of it now, then click OK to continue, or Cancel to exit.
-UninstallAppRunningError=Uninstall has detected that %1 is currently running.%n%nPlease close all instances of it now, then click OK to continue, or Cancel to exit.
-
-; *** Misc. errors
-ErrorCreatingDir=Setup was unable to create the directory "%1"
-ErrorTooManyFilesInDir=Unable to create a file in the directory "%1" because it contains too many files
-
-; *** Setup common messages
-ExitSetupTitle=Exit Setup
-ExitSetupMessage=Setup is not complete. If you exit now, the program will not be installed.%n%nYou may run Setup again at another time to complete the installation.%n%nExit Setup?
-AboutSetupMenuItem=&About Setup...
-AboutSetupTitle=About Setup
-AboutSetupMessage=%1 version %2%n%3%n%n%1 home page:%n%4
-AboutSetupNote=
-TranslatorNote=
-
-; *** Buttons
-ButtonBack=< &Back
-ButtonNext=&Next >
-ButtonInstall=&Install
-ButtonOK=OK
-ButtonCancel=Cancel
-ButtonYes=&Yes
-ButtonYesToAll=Yes to &All
-ButtonNo=&No
-ButtonNoToAll=N&o to All
-ButtonFinish=&Finish
-ButtonBrowse=&Browse...
-ButtonWizardBrowse=B&rowse...
-ButtonNewFolder=&Make New Folder
-
-; *** "Select Language" dialog messages
-SelectLanguageTitle=Select Setup Language
-SelectLanguageLabel=Select the language to use during the installation:
-
-; *** Common wizard text
-ClickNext=Click Next to continue, or Cancel to exit Setup.
-BeveledLabel=
-BrowseDialogTitle=Browse For Folder
-BrowseDialogLabel=Select a folder in the list below, then click OK.
-NewFolderName=New Folder
-
-; *** "Welcome" wizard page
-WelcomeLabel1=Welcome to the [name] Setup Wizard
-WelcomeLabel2=This will install [name/ver] on your computer.%n%nIt is recommended that you close all other applications before continuing.
-
-; *** "Password" wizard page
-WizardPassword=Password
-PasswordLabel1=This installation is password protected.
-PasswordLabel3=Please provide the password, then click Next to continue. Passwords are case-sensitive.
-PasswordEditLabel=&Password:
-IncorrectPassword=The password you entered is not correct. Please try again.
-
-; *** "License Agreement" wizard page
-WizardLicense=License Agreement
-LicenseLabel=Please read the following important information before continuing.
-LicenseLabel3=Please read the following License Agreement. You must accept the terms of this agreement before continuing with the installation.
-LicenseAccepted=I &accept the agreement
-LicenseNotAccepted=I &do not accept the agreement
-
-; *** "Information" wizard pages
-WizardInfoBefore=Information
-InfoBeforeLabel=Please read the following important information before continuing.
-InfoBeforeClickLabel=When you are ready to continue with Setup, click Next.
-WizardInfoAfter=Information
-InfoAfterLabel=Please read the following important information before continuing.
-InfoAfterClickLabel=When you are ready to continue with Setup, click Next.
-
-; *** "User Information" wizard page
-WizardUserInfo=User Information
-UserInfoDesc=Please enter your information.
-UserInfoName=&User Name:
-UserInfoOrg=&Organization:
-UserInfoSerial=&Serial Number:
-UserInfoNameRequired=You must enter a name.
-
-; *** "Select Destination Location" wizard page
-WizardSelectDir=Select Destination Location
-SelectDirDesc=Where should [name] be installed?
-SelectDirLabel3=Setup will install [name] into the following folder.
-SelectDirBrowseLabel=To continue, click Next. If you would like to select a different folder, click Browse.
-DiskSpaceMBLabel=At least [mb] MB of free disk space is required.
-CannotInstallToNetworkDrive=Setup cannot install to a network drive.
-CannotInstallToUNCPath=Setup cannot install to a UNC path.
-InvalidPath=You must enter a full path with drive letter; for example:%n%nC:\APP%n%nor a UNC path in the form:%n%n\\server\share
-InvalidDrive=The drive or UNC share you selected does not exist or is not accessible. Please select another.
-DiskSpaceWarningTitle=Not Enough Disk Space
-DiskSpaceWarning=Setup requires at least %1 KB of free space to install, but the selected drive only has %2 KB available.%n%nDo you want to continue anyway?
-DirNameTooLong=The folder name or path is too long.
-InvalidDirName=The folder name is not valid.
-BadDirName32=Folder names cannot include any of the following characters:%n%n%1
-DirExistsTitle=Folder Exists
-DirExists=The folder:%n%n%1%n%nalready exists. Would you like to install to that folder anyway?
-DirDoesntExistTitle=Folder Does Not Exist
-DirDoesntExist=The folder:%n%n%1%n%ndoes not exist. Would you like the folder to be created?
-
-; *** "Select Components" wizard page
-WizardSelectComponents=Select Components
-SelectComponentsDesc=Which components should be installed?
-SelectComponentsLabel2=Select the components you want to install; clear the components you do not want to install. Click Next when you are ready to continue.
-FullInstallation=Full installation
-; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
-CompactInstallation=Compact installation
-CustomInstallation=Custom installation
-NoUninstallWarningTitle=Components Exist
-NoUninstallWarning=Setup has detected that the following components are already installed on your computer:%n%n%1%n%nDeselecting these components will not uninstall them.%n%nWould you like to continue anyway?
-ComponentSize1=%1 KB
-ComponentSize2=%1 MB
-ComponentsDiskSpaceMBLabel=Current selection requires at least [mb] MB of disk space.
-
-; *** "Select Additional Tasks" wizard page
-WizardSelectTasks=Select Additional Tasks
-SelectTasksDesc=Which additional tasks should be performed?
-SelectTasksLabel2=Select the additional tasks you would like Setup to perform while installing [name], then click Next.
-
-; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=Select Start Menu Folder
-SelectStartMenuFolderDesc=Where should Setup place the program's shortcuts?
-SelectStartMenuFolderLabel3=Setup will create the program's shortcuts in the following Start Menu folder.
-SelectStartMenuFolderBrowseLabel=To continue, click Next. If you would like to select a different folder, click Browse.
-MustEnterGroupName=You must enter a folder name.
-GroupNameTooLong=The folder name or path is too long.
-InvalidGroupName=The folder name is not valid.
-BadGroupName=The folder name cannot include any of the following characters:%n%n%1
-NoProgramGroupCheck2=&Don't create a Start Menu folder
-
-; *** "Ready to Install" wizard page
-WizardReady=Ready to Install
-ReadyLabel1=Setup is now ready to begin installing [name] on your computer.
-ReadyLabel2a=Click Install to continue with the installation, or click Back if you want to review or change any settings.
-ReadyLabel2b=Click Install to continue with the installation.
-ReadyMemoUserInfo=User information:
-ReadyMemoDir=Destination location:
-ReadyMemoType=Setup type:
-ReadyMemoComponents=Selected components:
-ReadyMemoGroup=Start Menu folder:
-ReadyMemoTasks=Additional tasks:
-
-; *** "Preparing to Install" wizard page
-WizardPreparing=Preparing to Install
-PreparingDesc=Setup is preparing to install [name] on your computer.
-PreviousInstallNotCompleted=The installation/removal of a previous program was not completed. You will need to restart your computer to complete that installation.%n%nAfter restarting your computer, run Setup again to complete the installation of [name].
-CannotContinue=Setup cannot continue. Please click Cancel to exit.
-ApplicationsFound=The following applications are using files that need to be updated by Setup. It is recommended that you allow Setup to automatically close these applications.
-ApplicationsFound2=The following applications are using files that need to be updated by Setup. It is recommended that you allow Setup to automatically close these applications. After the installation has completed, Setup will attempt to restart the applications.
-CloseApplications=&Automatically close the applications
-DontCloseApplications=&Do not close the applications
-ErrorCloseApplications=Setup was unable to automatically close all applications. It is recommended that you close all applications using files that need to be updated by Setup before continuing.
-
-; *** "Installing" wizard page
-WizardInstalling=Installing
-InstallingLabel=Please wait while Setup installs [name] on your computer.
-
-; *** "Setup Completed" wizard page
-FinishedHeadingLabel=Completing the [name] Setup Wizard
-FinishedLabelNoIcons=Setup has finished installing [name] on your computer.
-FinishedLabel=Setup has finished installing [name] on your computer. The application may be launched by selecting the installed icons.
-ClickFinish=Click Finish to exit Setup.
-FinishedRestartLabel=To complete the installation of [name], Setup must restart your computer. Would you like to restart now?
-FinishedRestartMessage=To complete the installation of [name], Setup must restart your computer.%n%nWould you like to restart now?
-ShowReadmeCheck=Yes, I would like to view the README file
-YesRadio=&Yes, restart the computer now
-NoRadio=&No, I will restart the computer later
-; used for example as 'Run MyProg.exe'
-RunEntryExec=Run %1
-; used for example as 'View Readme.txt'
-RunEntryShellExec=View %1
-
-; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle=Setup Needs the Next Disk
-SelectDiskLabel2=Please insert Disk %1 and click OK.%n%nIf the files on this disk can be found in a folder other than the one displayed below, enter the correct path or click Browse.
-PathLabel=&Path:
-FileNotInDir2=The file "%1" could not be located in "%2". Please insert the correct disk or select another folder.
-SelectDirectoryLabel=Please specify the location of the next disk.
-
-; *** Installation phase messages
-SetupAborted=Setup was not completed.%n%nPlease correct the problem and run Setup again.
-EntryAbortRetryIgnore=Click Retry to try again, Ignore to proceed anyway, or Abort to cancel installation.
-
-; *** Installation status messages
-StatusClosingApplications=Closing applications...
-StatusCreateDirs=Creating directories...
-StatusExtractFiles=Extracting files...
-StatusCreateIcons=Creating shortcuts...
-StatusCreateIniEntries=Creating INI entries...
-StatusCreateRegistryEntries=Creating registry entries...
-StatusRegisterFiles=Registering files...
-StatusSavingUninstall=Saving uninstall information...
-StatusRunProgram=Finishing installation...
-StatusRestartingApplications=Restarting applications...
-StatusRollback=Rolling back changes...
-
-; *** Misc. errors
-ErrorInternal2=Internal error: %1
-ErrorFunctionFailedNoCode=%1 failed
-ErrorFunctionFailed=%1 failed; code %2
-ErrorFunctionFailedWithMessage=%1 failed; code %2.%n%3
-ErrorExecutingProgram=Unable to execute file:%n%1
-
-; *** Registry errors
-ErrorRegOpenKey=Error opening registry key:%n%1\%2
-ErrorRegCreateKey=Error creating registry key:%n%1\%2
-ErrorRegWriteKey=Error writing to registry key:%n%1\%2
-
-; *** INI errors
-ErrorIniEntry=Error creating INI entry in file "%1".
-
-; *** File copying errors
-FileAbortRetryIgnore=Click Retry to try again, Ignore to skip this file (not recommended), or Abort to cancel installation.
-FileAbortRetryIgnore2=Click Retry to try again, Ignore to proceed anyway (not recommended), or Abort to cancel installation.
-SourceIsCorrupted=The source file is corrupted
-SourceDoesntExist=The source file "%1" does not exist
-ExistingFileReadOnly=The existing file is marked as read-only.%n%nClick Retry to remove the read-only attribute and try again, Ignore to skip this file, or Abort to cancel installation.
-ErrorReadingExistingDest=An error occurred while trying to read the existing file:
-FileExists=The file already exists.%n%nWould you like Setup to overwrite it?
-ExistingFileNewer=The existing file is newer than the one Setup is trying to install. It is recommended that you keep the existing file.%n%nDo you want to keep the existing file?
-ErrorChangingAttr=An error occurred while trying to change the attributes of the existing file:
-ErrorCreatingTemp=An error occurred while trying to create a file in the destination directory:
-ErrorReadingSource=An error occurred while trying to read the source file:
-ErrorCopying=An error occurred while trying to copy a file:
-ErrorReplacingExistingFile=An error occurred while trying to replace the existing file:
-ErrorRestartReplace=RestartReplace failed:
-ErrorRenamingTemp=An error occurred while trying to rename a file in the destination directory:
-ErrorRegisterServer=Unable to register the DLL/OCX: %1
-ErrorRegSvr32Failed=RegSvr32 failed with exit code %1
-ErrorRegisterTypeLib=Unable to register the type library: %1
-
-; *** Post-installation errors
-ErrorOpeningReadme=An error occurred while trying to open the README file.
-ErrorRestartingComputer=Setup was unable to restart the computer. Please do this manually.
-
-; *** Uninstaller messages
-UninstallNotFound=File "%1" does not exist. Cannot uninstall.
-UninstallOpenError=File "%1" could not be opened. Cannot uninstall
-UninstallUnsupportedVer=The uninstall log file "%1" is in a format not recognized by this version of the uninstaller. Cannot uninstall
-UninstallUnknownEntry=An unknown entry (%1) was encountered in the uninstall log
-ConfirmUninstall=Are you sure you want to completely remove %1? Extensions and settings will not be removed.
-UninstallOnlyOnWin64=This installation can only be uninstalled on 64-bit Windows.
-OnlyAdminCanUninstall=This installation can only be uninstalled by a user with administrative privileges.
-UninstallStatusLabel=Please wait while %1 is removed from your computer.
-UninstalledAll=%1 was successfully removed from your computer.
-UninstalledMost=%1 uninstall complete.%n%nSome elements could not be removed. These can be removed manually.
-UninstalledAndNeedsRestart=To complete the uninstallation of %1, your computer must be restarted.%n%nWould you like to restart now?
-UninstallDataCorrupted="%1" file is corrupted. Cannot uninstall
-
-; *** Uninstallation phase messages
-ConfirmDeleteSharedFileTitle=Remove Shared File?
-ConfirmDeleteSharedFile2=The system indicates that the following shared file is no longer in use by any programs. Would you like for Uninstall to remove this shared file?%n%nIf any programs are still using this file and it is removed, those programs may not function properly. If you are unsure, choose No. Leaving the file on your system will not cause any harm.
-SharedFileNameLabel=File name:
-SharedFileLocationLabel=Location:
-WizardUninstalling=Uninstall Status
-StatusUninstalling=Uninstalling %1...
-
-; *** Shutdown block reasons
-ShutdownBlockReasonInstallingApp=Installing %1.
-ShutdownBlockReasonUninstallingApp=Uninstalling %1.
-
-; The custom messages below aren't used by Setup itself, but if you make
-; use of them in your scripts, you'll want to translate them.
-
-[CustomMessages]
-
-NameAndVersion=%1 version %2
-AdditionalIcons=Additional icons:
-CreateDesktopIcon=Create a &desktop icon
-CreateQuickLaunchIcon=Create a &Quick Launch icon
-ProgramOnTheWeb=%1 on the Web
-UninstallProgram=Uninstall %1
-LaunchProgram=Launch %1
-AssocFileExtension=&Associate %1 with the %2 file extension
-AssocingFileExtension=Associating %1 with the %2 file extension...
-AutoStartProgramGroupDescription=Startup:
-AutoStartProgram=Automatically start %1
-AddonHostProgramNotFound=%1 could not be located in the folder you selected.%n%nDo you want to continue anyway?
diff --git a/build/win32/i18n/Default.ko.isl b/build/win32/i18n/Default.ko.isl
index a7c38d12b9f..0f1b1a7ccf5 100644
--- a/build/win32/i18n/Default.ko.isl
+++ b/build/win32/i18n/Default.ko.isl
@@ -1,12 +1,16 @@
-; *** Inno Setup version 5.5.3+ Korean messages ***
-;
-; To download user-contributed translations of this file, go to:
-; http://www.jrsoftware.org/files/istrans/
+; *** Inno Setup version 6.0.0+ Korean messages ***
;
+; ¢Æ 6.0.3+ Translator: SungDong Kim (acroedit@gmail.com)
+; ¢Æ 5.5.3+ Translator: Domddol (domddol@gmail.com)
+; ¢Æ Translation date: MAR 04, 2014
+; ¢Æ Contributors: Hansoo KIM (iryna7@gmail.com), Woong-Jae An (a183393@hanmail.net)
+; ¢Æ Storage: http://www.jrsoftware.org/files/istrans/
+; ¢Æ ÀÌ ¹ø¿ªÀº »õ·Î¿î Çѱ¹¾î ¸ÂÃã¹ý ±ÔÄ¢À» ÁؼöÇÕ´Ï´Ù.
; Note: When translating this text, do not add periods (.) to the end of
; messages that didn't have them already, because on those messages Inno
; Setup adds the periods automatically (appending a period would result in
; two periods being displayed).
+
[LangOptions]
; The following three entries are very important. Be sure to read and
; understand the '[LangOptions] section' topic in the help file.
@@ -23,50 +27,68 @@ LanguageCodePage=949
;TitleFontSize=29
;CopyrightFontName=Arial
;CopyrightFontSize=8
+
[Messages]
+
; *** Application titles
SetupAppTitle=¼³Ä¡
-SetupWindowTitle=¼³Ä¡ - %1
+SetupWindowTitle=%1 ¼³Ä¡
UninstallAppTitle=Á¦°Å
UninstallAppFullTitle=%1 Á¦°Å
+
; *** Misc. common
InformationTitle=Á¤º¸
ConfirmTitle=È®ÀÎ
ErrorTitle=¿À·ù
+
; *** SetupLdr messages
-SetupLdrStartupMessage=±×·¯¸é %1ÀÌ(°¡) ¼³Ä¡µË´Ï´Ù. °è¼ÓÇϽðڽÀ´Ï±î?
-LdrCannotCreateTemp=Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù. ¼³Ä¡ ÇÁ·Î±×·¥ÀÌ ÁߴܵǾú½À´Ï´Ù.
-LdrCannotExecTemp=Àӽà µð·ºÅ͸®¿¡¼ ÆÄÀÏÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù. ¼³Ä¡ ÇÁ·Î±×·¥ÀÌ ÁߴܵǾú½À´Ï´Ù.
+SetupLdrStartupMessage=%1À»(¸¦) ¼³Ä¡ÇÕ´Ï´Ù, °è¼ÓÇϽðڽÀ´Ï±î?
+LdrCannotCreateTemp=Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù, ¼³Ä¡¸¦ Áß´ÜÇÕ´Ï´Ù
+LdrCannotExecTemp=Àӽà Æú´õÀÇ ÆÄÀÏÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù, ¼³Ä¡¸¦ Áß´ÜÇÕ´Ï´Ù
+HelpTextNote=
+
; *** Startup error messages
LastErrorMessage=%1.%n%n¿À·ù %2: %3
-SetupFileMissing=ÆÄÀÏ %1ÀÌ(°¡) ¼³Ä¡ µð·ºÅ͸®¿¡¼ ´©¶ôµÇ¾ú½À´Ï´Ù. ¹®Á¦¸¦ ÇØ°áÇϰųª ÇÁ·Î±×·¥À» »õ·Î ¹ÞÀ¸¼¼¿ä.
-SetupFileCorrupt=¼³Ä¡ ÆÄÀÏÀÌ ¼Õ»óµÇ¾ú½À´Ï´Ù. ÇÁ·Î±×·¥À» »õ·Î ¹ÞÀ¸¼¼¿ä.
-SetupFileCorruptOrWrongVer=¼³Ä¡ ÆÄÀÏÀÌ ¼Õ»óµÇ¾ú°Å³ª ÀÌ ¹öÀüÀÇ ¼³Ä¡ ÇÁ·Î±×·¥°ú ȣȯµÇÁö ¾Ê½À´Ï´Ù. ¹®Á¦¸¦ ÇØ°áÇϰųª ÇÁ·Î±×·¥À» »õ·Î ¹ÞÀ¸¼¼¿ä.
-InvalidParameter=¸í·ÉÁÙ¿¡ À߸øµÈ ¸Å°³ º¯¼ö°¡ Àü´ÞµÊ:%n%n%1
-SetupAlreadyRunning=¼³Ä¡ ÇÁ·Î±×·¥ÀÌ ÀÌ¹Ì ½ÇÇà ÁßÀÔ´Ï´Ù.
-WindowsVersionNotSupported=ÀÌ ÇÁ·Î±×·¥Àº ÄÄÇ»ÅÍ¿¡¼ ½ÇÇà ÁßÀÎ ¹öÀüÀÇ Windows¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
-WindowsServicePackRequired=ÀÌ ÇÁ·Î±×·¥À» ¼³Ä¡ÇÏ·Á¸é %1 ¼ºñ½º ÆÑ %2 ÀÌ»óÀÌ ÇÊ¿äÇÕ´Ï´Ù.
-NotOnThisPlatform=ÀÌ ÇÁ·Î±×·¥Àº %1¿¡¼ ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù.
+SetupFileMissing=%1 ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù, ¹®Á¦¸¦ ÇØ°áÇØ º¸°Å³ª »õ·Î¿î ¼³Ä¡ ÇÁ·Î±×·¥À» ±¸ÇϽñ⠹ٶø´Ï´Ù.
+SetupFileCorrupt=¼³Ä¡ ÆÄÀÏÀÌ ¼Õ»óµÇ¾ú½À´Ï´Ù, »õ·Î¿î ¼³Ä¡ ÇÁ·Î±×·¥À» ±¸ÇϽñ⠹ٶø´Ï´Ù.
+SetupFileCorruptOrWrongVer=¼³Ä¡ ÆÄÀÏÀÇ ¼Õ»óÀ̰ųª ÀÌ ¼³Ä¡ ¹öÀü°ú ȣȯµÇÁö ¾Ê½À´Ï´Ù, ¹®Á¦¸¦ ÇØ°áÇØ º¸°Å³ª »õ·Î¿î ¼³Ä¡ ÇÁ·Î±×·¥À» ±¸ÇϽñ⠹ٶø´Ï´Ù.
+InvalidParameter=À߸øµÈ ¸Å°³ º¯¼öÀÔ´Ï´Ù:%n%n%1
+SetupAlreadyRunning=¼³Ä¡°¡ ÀÌ¹Ì ½ÇÇà ÁßÀÔ´Ï´Ù.
+WindowsVersionNotSupported=ÀÌ ÇÁ·Î±×·¥Àº ±ÍÇÏÀÇ Windows ¹öÀüÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.
+WindowsServicePackRequired=ÀÌ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ·Á¸é %1 sp%2 ÀÌ»óÀ̾î¾ß ÇÕ´Ï´Ù.
+NotOnThisPlatform=ÀÌ ÇÁ·Î±×·¥Àº %1¿¡¼ ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù.
OnlyOnThisPlatform=ÀÌ ÇÁ·Î±×·¥Àº %1¿¡¼ ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù.
-OnlyOnTheseArchitectures=ÀÌ ÇÁ·Î±×·¥Àº ÇÁ·Î¼¼¼ ¾ÆÅ°ÅØÃ³ %n%n%1¿ëÀ¸·Î ¼³°èµÈ Windows ¹öÀü¿¡¼¸¸ ¼³Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
-MissingWOW64APIs=½ÇÇà ÁßÀÎ Windows ¹öÀü¿¡´Â ¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ 64ºñÆ®¸¦ ¼³Ä¡ÇÏ´Â µ¥ ÇÊ¿äÇÑ ±â´ÉÀÌ ¾ø½À´Ï´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ¼ºñ½º ÆÑ %1À»(¸¦) ¼³Ä¡Çϼ¼¿ä.
-WinVersionTooLowError=ÀÌ ÇÁ·Î±×·¥À» ¼³Ä¡ÇÏ·Á¸é %1 ¹öÀü %2 ÀÌ»óÀÌ ÇÊ¿äÇÕ´Ï´Ù.
-WinVersionTooHighError=ÀÌ ÇÁ·Î±×·¥Àº %1 ¹öÀü %2 À̻󿡼´Â ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù.
-AdminPrivilegesRequired=ÀÌ ÇÁ·Î±×·¥À» ¼³Ä¡ÇÒ ¶§´Â °ü¸®ÀÚ·Î ·Î±×ÀÎÇØ¾ß ÇÕ´Ï´Ù.
-PowerUserPrivilegesRequired=ÀÌ ÇÁ·Î±×·¥À» ¼³Ä¡ÇÒ ¶§´Â °ü¸®ÀÚ³ª °í±Þ »ç¿ëÀÚ ±×·ìÀÇ ±¸¼º¿øÀ¸·Î ·Î±×ÀÎÇØ¾ß ÇÕ´Ï´Ù.
-SetupAppRunningError=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ %1(ÀÌ)°¡ ÇöÀç ½ÇÇà ÁßÀÓÀ» °¨ÁöÇß½À´Ï´Ù.%n%nÀÌ Ç׸ñÀÇ ¸ðµç ÀνºÅϽº¸¦ Áö±Ý ´Ý°í °è¼ÓÇÏ·Á¸é [È®ÀÎ]À», Á¾·áÇÏ·Á¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä.
-UninstallAppRunningError=Á¦°Å ÀÛ¾÷¿¡¼ %1(ÀÌ)°¡ ÇöÀç ½ÇÇà ÁßÀÓÀ» °¨ÁöÇß½À´Ï´Ù.%n%nÀÌ Ç׸ñÀÇ ¸ðµç ÀνºÅϽº¸¦ Áö±Ý ´Ý°í °è¼ÓÇÏ·Á¸é [È®ÀÎ]À», Á¾·áÇÏ·Á¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä.
+OnlyOnTheseArchitectures=ÀÌ ÇÁ·Î±×·¥Àº ¾Æ·¡ ó¸® ±¸Á¶¿Í ȣȯµÇ´Â Windows ¹öÀü¿¡¸¸ ¼³Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù:%n%n%1
+WinVersionTooLowError=ÀÌ ÇÁ·Î±×·¥Àº %1 ¹öÀü %2 ÀÌ»óÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+WinVersionTooHighError=ÀÌ ÇÁ·Î±×·¥Àº %1 ¹öÀü %2 À̻󿡼 ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù.
+AdminPrivilegesRequired=ÀÌ ÇÁ·Î±×·¥À» ¼³Ä¡ÇÏ·Á¸é °ü¸®ÀÚ·Î ·Î±×ÀÎÇØ¾ß ÇÕ´Ï´Ù.
+PowerUserPrivilegesRequired=ÀÌ ÇÁ·Î±×·¥À» ¼³Ä¡ÇÏ·Á¸é °ü¸®ÀÚ ¶Ç´Â °í±Þ »ç¿ëÀÚ·Î ·Î±×ÀÎÇØ¾ß ÇÕ´Ï´Ù.
+SetupAppRunningError=ÇöÀç %1ÀÌ(°¡) ½ÇÇà ÁßÀÔ´Ï´Ù!%n%nÁö±Ý ±×°ÍÀÇ ¸ðµç ÀνºÅϽº¸¦ ´Ý¾Æ ÁֽʽÿÀ. ±×·± ´ÙÀ½ °è¼ÓÇÏ·Á¸é "È®ÀÎ"À», Á¾·áÇÏ·Á¸é "Ãë¼Ò"¸¦ Ŭ¸¯ÇϽʽÿÀ.
+UninstallAppRunningError=ÇöÀç %1ÀÌ(°¡) ½ÇÇà ÁßÀÔ´Ï´Ù!%n%nÁö±Ý ±×°ÍÀÇ ¸ðµç ÀνºÅϽº¸¦ ´Ý¾Æ ÁֽʽÿÀ. ±×·± ´ÙÀ½ °è¼ÓÇÏ·Á¸é "È®ÀÎ"À», Á¾·áÇÏ·Á¸é "Ãë¼Ò"¸¦ Ŭ¸¯ÇϽʽÿÀ.
+
+; *** Startup questions
+PrivilegesRequiredOverrideTitle=¼³Ä¡ ¸ðµå ¼±ÅÃ
+PrivilegesRequiredOverrideInstruction=¼³Ä¡ ¸ðµå¸¦ ¼±ÅÃÇØ ÁֽʽÿÀ
+PrivilegesRequiredOverrideText1=%1 Àº ¸ðµç »ç¿ëÀÚ(°ü¸®ÀÚ ±ÇÇÑ ÇÊ¿ä) ¶Ç´Â ÇöÀç »ç¿ëÀÚ¿ëÀ¸·Î ¼³Ä¡ÇÕ´Ï´Ù.
+PrivilegesRequiredOverrideText2=%1 Àº ÇöÀç »ç¿ëÀÚ ¶Ç´Â ¸ðµç »ç¿ëÀÚ(°ü¸®ÀÚ ±ÇÇÑ ÇÊ¿ä) ¿ëÀ¸·Î ¼³Ä¡ÇÕ´Ï´Ù.
+PrivilegesRequiredOverrideAllUsers=¸ðµç »ç¿ëÀÚ¿ëÀ¸·Î ¼³Ä¡(&A)
+PrivilegesRequiredOverrideAllUsersRecommended=¸ðµç »ç¿ëÀÚ¿ëÀ¸·Î ¼³Ä¡(&A) (Ãßõ)
+PrivilegesRequiredOverrideCurrentUser=ÇöÀç »ç¿ëÀÚ¿ëÀ¸·Î ¼³Ä¡(&M)
+PrivilegesRequiredOverrideCurrentUserRecommended=ÇöÀç »ç¿ëÀÚ¿ëÀ¸·Î ¼³Ä¡(&M) (Ãßõ)
+
; *** Misc. errors
-ErrorCreatingDir=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ µð·ºÅ͸® "%1"À»(¸¦) ¸¸µé ¼ö ¾ø½À´Ï´Ù.
-ErrorTooManyFilesInDir=µð·ºÅ͸® "%1"¿¡ ÆÄÀÏÀÌ ³Ê¹« ¸¹À¸¹Ç·Î ÀÌ µð·ºÅ͸®¿¡ ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù.
+ErrorCreatingDir="%1" Æú´õ¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù.
+ErrorTooManyFilesInDir="%1" Æú´õ¿¡ ÆÄÀÏÀÌ ³Ê¹« ¸¹±â ¶§¹®¿¡ ÆÄÀÏÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù.
+
; *** Setup common messages
-ExitSetupTitle=¼³Ä¡ Á¾·á
-ExitSetupMessage=¼³Ä¡°¡ ¿Ï·áµÇÁö ¾Ê¾Ò½À´Ï´Ù. Áö±Ý Á¾·áÇϸé ÇÁ·Î±×·¥ÀÌ ¼³Ä¡µÇÁö ¾Ê½À´Ï´Ù.%n%n³ªÁß¿¡ ¼³Ä¡ ÇÁ·Î±×·¥À» ´Ù½Ã ½ÇÇàÇÏ¿© ¼³Ä¡¸¦ ³¡³¾ ¼ö ÀÖ½À´Ï´Ù.%n%n¼³Ä¡ ÇÁ·Î±×·¥À» Á¾·áÇϽðڽÀ´Ï±î?
-AboutSetupMenuItem=¼³Ä¡ ÇÁ·Î±×·¥ Á¤º¸(&A)...
-AboutSetupTitle=¼³Ä¡ ÇÁ·Î±×·¥ Á¤º¸
-AboutSetupMessage=%1 ¹öÀü %2%n%3%n%n%1 ȨÆäÀÌÁö:%n%4
+ExitSetupTitle=¼³Ä¡ ¿Ï·á
+ExitSetupMessage=¼³Ä¡°¡ ¿Ï·áµÇÁö ¾Ê¾Ò½À´Ï´Ù, ¿©±â¼ ¼³Ä¡¸¦ Á¾·áÇϸé ÇÁ·Î±×·¥Àº ¼³Ä¡µÇÁö ¾Ê½À´Ï´Ù.%n%n¼³Ä¡¸¦ ¿Ï·áÇÏ·Á¸é ³ªÁß¿¡ ´Ù½Ã ¼³Ä¡ ÇÁ·Î±×·¥À» ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù.%n%n±×·¡µµ ¼³Ä¡¸¦ Á¾·áÇϽðڽÀ´Ï±î?
+AboutSetupMenuItem=¼³Ä¡ Á¤º¸(&A)...
+AboutSetupTitle=¼³Ä¡ Á¤º¸
+AboutSetupMessage=%1 ¹öÀü %2%n%3%n%n%1 Ȩ ÆäÀÌÁö:%n%4
AboutSetupNote=
TranslatorNote=
+
; *** Buttons
ButtonBack=< µÚ·Î(&B)
ButtonNext=´ÙÀ½(&N) >
@@ -75,224 +97,271 @@ ButtonOK=È®
ButtonCancel=Ãë¼Ò
ButtonYes=¿¹(&Y)
ButtonYesToAll=¸ðµÎ ¿¹(&A)
-ButtonNo=¾Æ´Ï¿ä(&N)
-ButtonNoToAll=¸ðµÎ ¾Æ´Ï¿ä(&O)
-ButtonFinish=¸¶Ä§(&F)
+ButtonNo=¾Æ´Ï¿À(&N)
+ButtonNoToAll=¸ðµÎ ¾Æ´Ï¿À(&O)
+ButtonFinish=Á¾·á(&F)
ButtonBrowse=ã¾Æº¸±â(&B)...
-ButtonWizardBrowse=ã¾Æº¸±â(&R)
+ButtonWizardBrowse=ã¾Æº¸±â(&R)...
ButtonNewFolder=»õ Æú´õ ¸¸µé±â(&M)
+
; *** "Select Language" dialog messages
SelectLanguageTitle=¼³Ä¡ ¾ð¾î ¼±ÅÃ
-SelectLanguageLabel=¼³Ä¡ Áß¿¡ »ç¿ëÇÒ ¾ð¾î¸¦ ¼±ÅÃÇϼ¼¿ä.
+SelectLanguageLabel=¼³Ä¡¿¡ »ç¿ëÇÒ ¾ð¾î¸¦ ¼±ÅÃÇϽʽÿÀ.
+
; *** Common wizard text
-ClickNext=°è¼ÓÇÏ·Á¸é [´ÙÀ½]À» Ŭ¸¯ÇÏ°í ¼³Ä¡ ÇÁ·Î±×·¥À» Á¾·áÇÏ·Á¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä.
+ClickNext=°è¼ÓÇÏ·Á¸é "´ÙÀ½"À» Ŭ¸¯ÇÏ°í ¼³Ä¡¸¦ Á¾·áÇÏ·Á¸é "Ãë¼Ò"¸¦ Ŭ¸¯ÇÕ´Ï´Ù.
BeveledLabel=
BrowseDialogTitle=Æú´õ ã¾Æº¸±â
-BrowseDialogLabel=¾Æ·¡ ¸ñ·Ï¿¡¼ Æú´õ¸¦ ¼±ÅÃÇÑ ´ÙÀ½ [È®ÀÎ]À» Ŭ¸¯Çϼ¼¿ä.
+BrowseDialogLabel=¾Æ·¡ ¸ñ·Ï¿¡¼ Æú´õ¸¦ ¼±ÅÃÇÑ ´ÙÀ½ "È®ÀÎ"À» Ŭ¸¯ÇÕ´Ï´Ù.
NewFolderName=»õ Æú´õ
+
; *** "Welcome" wizard page
WelcomeLabel1=[name] ¼³Ä¡ ¸¶¹ý»ç ½ÃÀÛ
-WelcomeLabel2=ÀÌ ¸¶¹ý»ç´Â ÄÄÇ»ÅÍ¿¡ [name/ver]À»(¸¦) ¼³Ä¡ÇÕ´Ï´Ù.%n%n°è¼ÓÇϱâ Àü¿¡ ´Ù¸¥ ¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥À» ´Ý´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
+WelcomeLabel2=ÀÌ ¸¶¹ý»ç´Â ±ÍÇÏÀÇ ÄÄÇ»ÅÍ¿¡ [name/ver]À»(¸¦) ¼³Ä¡ÇÒ °ÍÀÔ´Ï´Ù.%n%n¼³Ä¡Çϱâ Àü¿¡ ´Ù¸¥ ÀÀ¿ëÇÁ·Î±×·¥µéÀ» ¸ðµÎ ´ÝÀ¸½Ã±â ¹Ù¶ø´Ï´Ù.
+
; *** "Password" wizard page
-WizardPassword=¾ÏÈ£
-PasswordLabel1=ÀÌ ¼³Ä¡´Â ¾ÏÈ£·Î º¸È£µÇ°í ÀÖ½À´Ï´Ù.
-PasswordLabel3=°è¼ÓÇÏ·Á¸é ¾ÏÈ£¸¦ ÀÔ·ÂÇÑ ´ÙÀ½ [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. ¾ÏÈ£´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÕ´Ï´Ù.
-PasswordEditLabel=¾ÏÈ£(&P):
-IncorrectPassword=ÀÔ·ÂÇÑ ¾ÏÈ£°¡ À߸øµÇ¾ú½À´Ï´Ù. ´Ù½Ã ½ÃµµÇϼ¼¿ä.
+WizardPassword=ºñ¹Ð ¹øÈ£
+PasswordLabel1=ÀÌ ¼³Ä¡ ¸¶¹ý»ç´Â ºñ¹Ð ¹øÈ£·Î º¸È£µÇ¾î ÀÖ½À´Ï´Ù.
+PasswordLabel3=ºñ¹Ð ¹øÈ£¸¦ ÀÔ·ÂÇϰí "´ÙÀ½"À» Ŭ¸¯ÇϽʽÿÀ. ºñ¹Ð ¹øÈ£´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇØ¾ß ÇÕ´Ï´Ù.
+PasswordEditLabel=ºñ¹Ð ¹øÈ£(&P):
+IncorrectPassword=ºñ¹Ð ¹øÈ£°¡ Á¤È®ÇÏÁö ¾Ê½À´Ï´Ù, ´Ù½Ã ÀÔ·ÂÇϽʽÿÀ.
+
; *** "License Agreement" wizard page
WizardLicense=»ç¿ë±Ç °è¾à
-LicenseLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ Áß¿äÇÑ Á¤º¸¸¦ ÀÐ¾î º¸¼¼¿ä.
-LicenseLabel3=´ÙÀ½ »ç¿ë±Ç °è¾àÀ» Àоî ÁÖ¼¼¿ä. ¼³Ä¡¸¦ °è¼ÓÇÏ·Á¸é ¸ÕÀú ÀÌ °è¾à Á¶°Ç¿¡ µ¿ÀÇÇØ¾ß ÇÕ´Ï´Ù.
-LicenseAccepted=°è¾à¿¡ µ¿ÀÇÇÔ(&A)
-LicenseNotAccepted=°è¾à¿¡ µ¿ÀÇ ¾È ÇÔ(&D)
+LicenseLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ÀÇ Áß¿ä Á¤º¸¸¦ Àо½Ê½Ã¿À.
+LicenseLabel3=´ÙÀ½ »ç¿ë±Ç °è¾àÀ» Àо½Ê½Ã¿À, ¼³Ä¡¸¦ °è¼ÓÇÏ·Á¸é ÀÌ °è¾à¿¡ µ¿ÀÇÇØ¾ß ÇÕ´Ï´Ù.
+LicenseAccepted=µ¿ÀÇÇÕ´Ï´Ù(&A)
+LicenseNotAccepted=µ¿ÀÇÇÏÁö ¾Ê½À´Ï´Ù(&D)
+
; *** "Information" wizard pages
WizardInfoBefore=Á¤º¸
-InfoBeforeLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ Áß¿äÇÑ Á¤º¸¸¦ ÀÐ¾î º¸¼¼¿ä.
-InfoBeforeClickLabel=¼³Ä¡¸¦ °è¼Ó ÁøÇàÇÒ Áغñ°¡ µÇ¸é [´ÙÀ½]À» Ŭ¸¯ÇÕ´Ï´Ù.
+InfoBeforeLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ÀÇ Áß¿ä Á¤º¸¸¦ Àо½Ê½Ã¿À.
+InfoBeforeClickLabel=¼³Ä¡¸¦ °è¼ÓÇÏ·Á¸é "´ÙÀ½"À» Ŭ¸¯ÇϽʽÿÀ.
WizardInfoAfter=Á¤º¸
-InfoAfterLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ Áß¿äÇÑ Á¤º¸¸¦ ÀÐ¾î º¸¼¼¿ä.
-InfoAfterClickLabel=¼³Ä¡¸¦ °è¼Ó ÁøÇàÇÒ Áغñ°¡ µÇ¸é [´ÙÀ½]À» Ŭ¸¯ÇÕ´Ï´Ù.
+InfoAfterLabel=°è¼ÓÇϱâ Àü¿¡ ´ÙÀ½ÀÇ Áß¿ä Á¤º¸¸¦ Àо½Ê½Ã¿À.
+InfoAfterClickLabel=¼³Ä¡¸¦ °è¼ÓÇÏ·Á¸é "´ÙÀ½"À» Ŭ¸¯ÇϽʽÿÀ.
+
; *** "User Information" wizard page
WizardUserInfo=»ç¿ëÀÚ Á¤º¸
-UserInfoDesc=Á¤º¸¸¦ ÀÔ·ÂÇϼ¼¿ä.
+UserInfoDesc=»ç¿ëÀÚ Á¤º¸¸¦ ÀÔ·ÂÇϽʽÿÀ.
UserInfoName=»ç¿ëÀÚ À̸§(&U):
UserInfoOrg=Á¶Á÷(&O):
-UserInfoSerial=ÀÏ·Ã ¹øÈ£(&S):
-UserInfoNameRequired=À̸§À» ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.
+UserInfoSerial=½Ã¸®¾ó ¹øÈ£(&S):
+UserInfoNameRequired=»ç¿ëÀÚ À̸§À» ÀÔ·ÂÇϽʽÿÀ.
+
; *** "Select Destination Location" wizard page
-WizardSelectDir=´ë»ó À§Ä¡ ¼±ÅÃ
-SelectDirDesc=[name]À»(¸¦) ¾îµð¿¡ ¼³Ä¡ÇϽðڽÀ´Ï±î?
-SelectDirLabel3=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ [name]À»(¸¦) ´ÙÀ½ Æú´õ¿¡ ¼³Ä¡ÇÕ´Ï´Ù.
-SelectDirBrowseLabel=°è¼ÓÇÏ·Á¸é [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. ´Ù¸¥ Æú´õ¸¦ ¼±ÅÃÇÏ·Á¸é [ã¾Æº¸±â]¸¦ Ŭ¸¯Çϼ¼¿ä.
-DiskSpaceMBLabel=Àû¾îµµ [mb]MBÀÇ ¿©À¯ µð½ºÅ© °ø°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
-CannotInstallToNetworkDrive=¼³Ä¡ ÇÁ·Î±×·¥Àº ³×Æ®¿öÅ© µå¶óÀ̺꿡 ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù.
-CannotInstallToUNCPath=¼³Ä¡ ÇÁ·Î±×·¥Àº UNC °æ·Î¿¡ ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù.
-InvalidPath=µå¶óÀÌºê ¹®ÀÚ¿Í ÇÔ²² Àüü °æ·Î¸¦ ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù. ¿¹:%n%nC:\APP%n%n¶Ç´Â ´ÙÀ½ ÇüÅÂÀÇ UNC °æ·Î:%n%n\\server\share
-InvalidDrive=¼±ÅÃÇÑ µå¶óÀ̺곪 UNC °øÀ¯°¡ ¾ø°Å³ª ÀÌ µÎ Ç׸ñ¿¡ ¾×¼¼½ºÇÒ ¼ö ¾ø½À´Ï´Ù. ´Ù¸¥ µå¶óÀ̺곪 UNC °øÀ¯¸¦ ¼±ÅÃÇϼ¼¿ä.
-DiskSpaceWarningTitle=µð½ºÅ© °ø°£ ºÎÁ·
-DiskSpaceWarning=¼³Ä¡ ÇÁ·Î±×·¥À» ¼³Ä¡ÇÏ·Á¸é ¿©À¯ ¼³Ä¡ °ø°£ÀÌ Àû¾îµµ %1KB°¡ ÇÊ¿äÇÏÁö¸¸ ¼±ÅÃÇÑ µå¶óÀ̺êÀÇ °¡¿ë °ø°£Àº %2KB¹Û¿¡ ¾ø½À´Ï´Ù.%n%n±×·¡µµ °è¼ÓÇϽðڽÀ´Ï±î?
+WizardSelectDir=¼³Ä¡ À§Ä¡ ¼±ÅÃ
+SelectDirDesc=[name]ÀÇ ¼³Ä¡ À§Ä¡¸¦ ¼±ÅÃÇϽʽÿÀ.
+SelectDirLabel3=´ÙÀ½ Æú´õ¿¡ [name]À»(¸¦) ¼³Ä¡ÇÕ´Ï´Ù.
+SelectDirBrowseLabel=°è¼ÓÇÏ·Á¸é "´ÙÀ½"À», ´Ù¸¥ Æú´õ¸¦ ¼±ÅÃÇÏ·Á¸é "ã¾Æº¸±â"¸¦ Ŭ¸¯ÇϽʽÿÀ.
+DiskSpaceGBLabel=ÀÌ ÇÁ·Î±×·¥Àº ÃÖ¼Ò [gb] GBÀÇ µð½ºÅ© ¿©À¯ °ø°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+DiskSpaceMBLabel=ÀÌ ÇÁ·Î±×·¥Àº ÃÖ¼Ò [mb] MBÀÇ µð½ºÅ© ¿©À¯ °ø°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+CannotInstallToNetworkDrive=³×Æ®¿öÅ© µå¶óÀ̺꿡 ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù.
+CannotInstallToUNCPath=UNC °æ·Î¿¡ ¼³Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù.
+InvalidPath=µå¶óÀÌºê ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ Àüü °æ·Î¸¦ ÀÔ·ÂÇϽʽÿÀ.%n¡Ø ¿¹: C:\APP %n%n¶Ç´Â, UNC Çü½ÄÀÇ °æ·Î¸¦ ÀÔ·ÂÇϽʽÿÀ.%n¡Ø ¿¹: \\server\share
+InvalidDrive=¼±ÅÃÇÑ µå¶óÀÌºê ¶Ç´Â UNC °øÀ¯°¡ Á¸ÀçÇÏÁö ¾Ê°Å³ª ¾×¼¼½ºÇÒ ¼ö ¾ø½À´Ï´Ù, ´Ù¸¥ °æ·Î¸¦ ¼±ÅÃÇϽʽÿÀ.
+DiskSpaceWarningTitle=µð½ºÅ© °ø°£ÀÌ ºÎÁ·ÇÕ´Ï´Ù
+DiskSpaceWarning=¼³Ä¡ ½Ã ÃÖ¼Ò %1 KB µð½ºÅ© °ø°£ÀÌ ÇÊ¿äÇÏÁö¸¸, ¼±ÅÃÇÑ µå¶óÀ̺êÀÇ ¿©À¯ °ø°£Àº %2 KB ¹Û¿¡ ¾ø½À´Ï´Ù.%n%n±×·¡µµ °è¼ÓÇϽðڽÀ´Ï±î?
DirNameTooLong=Æú´õ À̸§ ¶Ç´Â °æ·Î°¡ ³Ê¹« ±é´Ï´Ù.
-InvalidDirName=Æú´õ À̸§ÀÌ À߸øµÇ¾ú½À´Ï´Ù.
-BadDirName32=Æú´õ À̸§¿¡´Â %n%n%1 ¹®ÀÚ¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
-DirExistsTitle=Æú´õ ÀÖÀ½
-DirExists=Æú´õ %n%n%1%n%nÀÌ(°¡) ÀÌ¹Ì ÀÖ½À´Ï´Ù. ±×·¡µµ ÇØ´ç Æú´õ¿¡ ¼³Ä¡ÇϽðڽÀ´Ï±î?
-DirDoesntExistTitle=Æú´õ ¾øÀ½
-DirDoesntExist=Æú´õ %n%n%1%n%nÀÌ(°¡) ¾ø½À´Ï´Ù. Æú´õ¸¦ ¸¸µå½Ã°Ú½À´Ï±î?
+InvalidDirName=Æú´õ À̸§ÀÌ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.
+BadDirName32=Æú´õ À̸§Àº ´ÙÀ½ ¹®ÀÚ¸¦ Æ÷ÇÔÇÒ ¼ö ¾ø½À´Ï´Ù:%n%n%1
+DirExistsTitle=Æú´õ°¡ Á¸ÀçÇÕ´Ï´Ù
+DirExists=Æú´õ %n%n%1%n%nÀÌ(°¡) ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù, ÀÌ Æú´õ¿¡ ¼³Ä¡ÇϽðڽÀ´Ï±î?
+DirDoesntExistTitle=Æú´õ°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù
+DirDoesntExist=Æú´õ %n%n%1%n%nÀÌ(°¡) Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù, »õ·Î Æú´õ¸¦ ¸¸µå½Ã°Ú½À´Ï±î?
+
; *** "Select Components" wizard page
WizardSelectComponents=±¸¼º ¿ä¼Ò ¼±ÅÃ
-SelectComponentsDesc=¾î¶² ±¸¼º ¿ä¼Ò¸¦ ¼³Ä¡ÇϽðڽÀ´Ï±î?
-SelectComponentsLabel2=¼³Ä¡ÇÒ ±¸¼º ¿ä¼Ò´Â ¼±ÅÃÇÏ°í ¼³Ä¡ÇÏÁö ¾ÊÀ» ±¸¼º ¿ä¼Ò´Â Áö¿ì¼¼¿ä. °è¼Ó ÁøÇàÇÒ Áغñ°¡ µÇ¸é [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä.
-FullInstallation=Àüü ¼³Ä¡
+SelectComponentsDesc=¼³Ä¡ÇÒ ±¸¼º ¿ä¼Ò¸¦ ¼±ÅÃÇϽʽÿÀ.
+SelectComponentsLabel2=ÇÊ¿äÇÑ ±¸¼º ¿ä¼Ò´Â üũÇÏ°í ºÒÇÊ¿äÇÑ ±¸¼º ¿ä¼Ò´Â üũ ÇØÁ¦ÇÕ´Ï´Ù, °è¼ÓÇÏ·Á¸é "´ÙÀ½"À» Ŭ¸¯ÇϽʽÿÀ.
+FullInstallation=¸ðµÎ ¼³Ä¡
; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
-CompactInstallation=Compact ¼³Ä¡
+CompactInstallation=ÃÖ¼Ò ¼³Ä¡
CustomInstallation=»ç¿ëÀÚ ÁöÁ¤ ¼³Ä¡
-NoUninstallWarningTitle=±¸¼º ¿ä¼Ò°¡ ÀÖÀ½
-NoUninstallWarning=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ±¸¼º ¿ä¼Ò %n%n%1%n%nÀÌ(°¡) ÄÄÇ»ÅÍ¿¡ ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖÀ½À» °¨ÁöÇß½À´Ï´Ù. ÀÌ·¯ÇÑ ±¸¼º ¿ä¼Ò´Â ¼±Åà Ãë¼ÒÇØµµ Á¦°ÅµÇÁö ¾Ê½À´Ï´Ù.%n%n±×·¡µµ °è¼ÓÇϽðڽÀ´Ï±î?
-ComponentSize1=%1KB
-ComponentSize2=%1MB
-ComponentsDiskSpaceMBLabel=ÇöÀç ¼±ÅÃÀ» À§Çؼ´Â Àû¾îµµ [mb]MBÀÇ µð½ºÅ© °ø°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+NoUninstallWarningTitle=±¸¼º ¿ä¼Ò°¡ Á¸ÀçÇÕ´Ï´Ù
+NoUninstallWarning=´ÙÀ½ ±¸¼º ¿ä¼Ò°¡ ÀÌ¹Ì ¼³Ä¡µÇ¾î ÀÖ½À´Ï´Ù:%n%n%1%n%nÀ§ ±¸¼º ¿ä¼ÒÀ» ¼±ÅÃÇÏÁö ¾ÊÀ¸¸é, ÇÁ·Î±×·¥ Á¦°Å½Ã ÀÌ ±¸¼º ¿ä¼ÒµéÀº Á¦°ÅµÇÁö ¾ÊÀ» °Ì´Ï´Ù.%n%n±×·¡µµ °è¼ÓÇϽðڽÀ´Ï±î?
+ComponentSize1=%1 KB
+ComponentSize2=%1 MB
+ComponentsDiskSpaceGBLabel=ÇöÀç ¼±ÅÃÀº ÃÖ¼Ò [gb] GBÀÇ µð½ºÅ© ¿©À¯ °ø°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+ComponentsDiskSpaceMBLabel=ÇöÀç ¼±ÅÃÀº ÃÖ¼Ò [mb] MBÀÇ µð½ºÅ© ¿©À¯ °ø°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+
; *** "Select Additional Tasks" wizard page
WizardSelectTasks=Ãß°¡ ÀÛ¾÷ ¼±ÅÃ
-SelectTasksDesc=¾î¶² ÀÛ¾÷À» Ãß°¡·Î ¼öÇàÇϽðڽÀ´Ï±î?
-SelectTasksLabel2=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ [name]À»(¸¦) ¼³Ä¡ÇÏ´Â µ¿¾È ¼öÇàÇÒ Ãß°¡ ÀÛ¾÷À» ¼±ÅÃÇÑ ÈÄ [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä.
+SelectTasksDesc=¼öÇàÇÒ Ãß°¡ ÀÛ¾÷À» ¼±ÅÃÇϽʽÿÀ.
+SelectTasksLabel2=[name] ¼³Ä¡ °úÁ¤¿¡ Æ÷ÇÔÇÒ Ãß°¡ ÀÛ¾÷À» ¼±ÅÃÇÑ ÈÄ, "´ÙÀ½"À» Ŭ¸¯ÇϽʽÿÀ.
+
; *** "Select Start Menu Folder" wizard page
WizardSelectProgramGroup=½ÃÀÛ ¸Þ´º Æú´õ ¼±ÅÃ
-SelectStartMenuFolderDesc=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÇÁ·Î±×·¥ÀÇ ¹Ù·Î °¡±â¸¦ ¾îµð¿¡ ¸¸µéµµ·Ï ÇϽðڽÀ´Ï±î?
-SelectStartMenuFolderLabel3=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÇÁ·Î±×·¥ÀÇ ¹Ù·Î °¡±â¸¦ ´ÙÀ½ ½ÃÀÛ ¸Þ´º Æú´õ¿¡ ¸¸µì´Ï´Ù.
-SelectStartMenuFolderBrowseLabel=°è¼ÓÇÏ·Á¸é [´ÙÀ½]À» Ŭ¸¯Çϼ¼¿ä. ´Ù¸¥ Æú´õ¸¦ ¼±ÅÃÇÏ·Á¸é [ã¾Æº¸±â]¸¦ Ŭ¸¯Çϼ¼¿ä.
-MustEnterGroupName=Æú´õ À̸§À» ÀÔ·ÂÇØ¾ß ÇÕ´Ï´Ù.
+SelectStartMenuFolderDesc=¾îµð¿¡ ÇÁ·Î±×·¥ ¹Ù·Î°¡±â¸¦ À§Ä¡ÇϰڽÀ´Ï±î?
+SelectStartMenuFolderLabel3=´ÙÀ½ ½ÃÀÛ ¸Þ´º Æú´õ¿¡ ÇÁ·Î±×·¥ ¹Ù·Î°¡±â¸¦ ¸¸µì´Ï´Ù.
+SelectStartMenuFolderBrowseLabel=°è¼ÓÇÏ·Á¸é "´ÙÀ½"À» Ŭ¸¯Çϰí, ´Ù¸¥ Æú´õ¸¦ ¼±ÅÃÇÏ·Á¸é "ã¾Æº¸±â"¸¦ Ŭ¸¯ÇϽʽÿÀ.
+MustEnterGroupName=Æú´õ À̸§À» ÀÔ·ÂÇϽʽÿÀ.
GroupNameTooLong=Æú´õ À̸§ ¶Ç´Â °æ·Î°¡ ³Ê¹« ±é´Ï´Ù.
-InvalidGroupName=Æú´õ À̸§ÀÌ À߸øµÇ¾ú½À´Ï´Ù.
-BadGroupName=Æú´õ À̸§¿¡´Â %n%n%1 ¹®ÀÚ¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
+InvalidGroupName=Æú´õ À̸§ÀÌ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.
+BadGroupName=Æú´õ À̸§Àº ´ÙÀ½ ¹®ÀÚ¸¦ Æ÷ÇÔÇÒ ¼ö ¾ø½À´Ï´Ù:%n%n%1
NoProgramGroupCheck2=½ÃÀÛ ¸Þ´º Æú´õ¸¦ ¸¸µéÁö ¾ÊÀ½(&D)
+
; *** "Ready to Install" wizard page
-WizardReady=¼³Ä¡ ÁغñµÊ
-ReadyLabel1=ÀÌÁ¦ ¼³Ä¡ ÇÁ·Î±×·¥ÀÌ ÄÄÇ»ÅÍ¿¡ [name] ¼³Ä¡¸¦ ½ÃÀÛÇÒ Áغñ°¡ µÇ¾ú½À´Ï´Ù.
-ReadyLabel2a=¼³Ä¡¸¦ °è¼ÓÇÏ·Á¸é [¼³Ä¡]¸¦ Ŭ¸¯Çϰí, ¼³Á¤À» °ËÅäÇϰųª º¯°æÇÏ·Á¸é [µÚ·Î]¸¦ Ŭ¸¯Çϼ¼¿ä.
-ReadyLabel2b=¼³Ä¡¸¦ °è¼ÓÇÏ·Á¸é [¼³Ä¡]¸¦ Ŭ¸¯Çϼ¼¿ä.
+WizardReady=¼³Ä¡ Áغñ ¿Ï·á
+ReadyLabel1=±ÍÇÏÀÇ ÄÄÇ»ÅÍ¿¡ [name]À»(¸¦) ¼³Ä¡ÇÒ Áغñ°¡ µÇ¾ú½À´Ï´Ù.
+ReadyLabel2a=¼³Ä¡¸¦ °è¼ÓÇÏ·Á¸é "¼³Ä¡"¸¦, ¼³Á¤À» º¯°æÇϰųª °ËÅäÇÏ·Á¸é "µÚ·Î"¸¦ Ŭ¸¯ÇϽʽÿÀ.
+ReadyLabel2b=¼³Ä¡¸¦ °è¼ÓÇÏ·Á¸é "¼³Ä¡"¸¦ Ŭ¸¯ÇϽʽÿÀ.
ReadyMemoUserInfo=»ç¿ëÀÚ Á¤º¸:
-ReadyMemoDir=´ë»ó À§Ä¡:
+ReadyMemoDir=¼³Ä¡ À§Ä¡:
ReadyMemoType=¼³Ä¡ À¯Çü:
ReadyMemoComponents=¼±ÅÃÇÑ ±¸¼º ¿ä¼Ò:
ReadyMemoGroup=½ÃÀÛ ¸Þ´º Æú´õ:
ReadyMemoTasks=Ãß°¡ ÀÛ¾÷:
+
; *** "Preparing to Install" wizard page
WizardPreparing=¼³Ä¡ Áغñ Áß
-PreparingDesc=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÄÄÇ»ÅÍ¿¡ [name] ¼³Ä¡¸¦ ÁغñÇϰí ÀÖ½À´Ï´Ù.
-PreviousInstallNotCompleted=ÀÌÀü ÇÁ·Î±×·¥ÀÇ ¼³Ä¡/Á¦°Å ÀÛ¾÷ÀÌ ¿Ï·áµÇÁö ¾Ê¾Ò½À´Ï´Ù. ÇØ´ç ¼³Ä¡¸¦ ¿Ï·áÇÏ·Á¸é ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù.%n%nÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇÑ ÈÄ [name] ¼³Ä¡¸¦ ¿Ï·áÇÏ·Á¸é ¼³Ä¡ ÇÁ·Î±×·¥À» ´Ù½Ã ½ÇÇàÇϼ¼¿ä.
-CannotContinue=¼³Ä¡ ÇÁ·Î±×·¥À» °è¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù. Á¾·áÇÏ·Á¸é [Ãë¼Ò]¸¦ Ŭ¸¯Çϼ¼¿ä.
-ApplicationsFound=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ¾÷µ¥ÀÌÆ®ÇØ¾ß ÇÏ´Â ÆÄÀÏÀÌ ´ÙÀ½ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù. ¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÀÌ·¯ÇÑ ÀÀ¿ë ÇÁ·Î±×·¥À» ÀÚµ¿À¸·Î ´Ýµµ·Ï Çã¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
-ApplicationsFound2=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ¾÷µ¥ÀÌÆ®ÇØ¾ß ÇÏ´Â ÆÄÀÏÀÌ ´ÙÀ½ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù. ¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÀÌ·¯ÇÑ ÀÀ¿ë ÇÁ·Î±×·¥À» ÀÚµ¿À¸·Î ´Ýµµ·Ï Çã¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ¼³Ä¡°¡ ¿Ï·áµÇ¸é ¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÀÀ¿ë ÇÁ·Î±×·¥À» ´Ù½Ã ½ÃÀÛÇÏ·Á°í ½ÃµµÇÕ´Ï´Ù.
-CloseApplications=ÀÀ¿ë ÇÁ·Î±×·¥ ÀÚµ¿ ´Ý±â(&A)
-DontCloseApplications=ÀÀ¿ë ÇÁ·Î±×·¥À» ´ÝÁö ¾ÊÀ½(&D)
-ErrorCloseApplications=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÀϺΠÀÀ¿ë ÇÁ·Î±×·¥À» ÀÚµ¿À¸·Î ´ÝÀ» ¼ö ¾ø½À´Ï´Ù. °è¼ÓÇϱâ Àü¿¡ ¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ¾÷µ¥ÀÌÆ®ÇØ¾ß ÇÏ´Â ÆÄÀÏÀ» »ç¿ëÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥À» ¸ðµÎ ´Ý´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
+PreparingDesc=±ÍÇÏÀÇ ÄÄÇ»ÅÍ¿¡ [name] ¼³Ä¡¸¦ ÁغñÇÏ´Â ÁßÀÔ´Ï´Ù.
+PreviousInstallNotCompleted=ÀÌÀü ÇÁ·Î±×·¥ÀÇ ¼³Ä¡/Á¦°Å ÀÛ¾÷ÀÌ ¿Ï·áµÇÁö ¾Ê¾Ò½À´Ï´Ù, ¿Ï·áÇÏ·Á¸é ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù.%n%nÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇÑ ÈÄ, ¼³Ä¡ ¸¶¹ý»ç¸¦ ´Ù½Ã ½ÇÇàÇÏ¿© [name] ¼³Ä¡¸¦ ¿Ï·áÇϽñ⠹ٶø´Ï´Ù.
+CannotContinue=¼³Ä¡¸¦ °è¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù, "Ãë¼Ò"¸¦ Ŭ¸¯ÇÏ¿© ¼³Ä¡¸¦ Á¾·áÇϽʽÿÀ.
+ApplicationsFound=´ÙÀ½ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ¼³Ä¡ ¾÷µ¥ÀÌÆ®°¡ ÇÊ¿äÇÑ ÆÄÀÏÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù, ¼³Ä¡ ¸¶¹ý»ç°¡ ÀÌ·± ÀÀ¿ëÇÁ·Î±×·¥À» ÀÚµ¿À¸·Î Á¾·áÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇϽñ⠹ٶø´Ï´Ù.
+ApplicationsFound2=´ÙÀ½ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ¼³Ä¡ ¾÷µ¥ÀÌÆ®°¡ ÇÊ¿äÇÑ ÆÄÀÏÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù, ¼³Ä¡ ¸¶¹ý»ç°¡ ÀÌ·± ÀÀ¿ëÇÁ·Î±×·¥À» ÀÚµ¿À¸·Î Á¾·áÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇϽñ⠹ٶø´Ï´Ù. ¼³Ä¡°¡ ¿Ï·áµÇ¸é, ¼³Ä¡ ¸¶¹ý»ç´Â ÀÌ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ´Ù½Ã ½ÃÀ۵ǵµ·Ï ½ÃµµÇÒ °Ì´Ï´Ù.
+CloseApplications=ÀÚµ¿À¸·Î ÀÀ¿ëÇÁ·Î±×·¥À» Á¾·áÇÔ(&A)
+DontCloseApplications=ÀÀ¿ëÇÁ·Î±×·¥À» Á¾·áÇÏÁö ¾ÊÀ½(&D)
+ErrorCloseApplications=¼³Ä¡ ¸¶¹ý»ç°¡ ÀÀ¿ëÇÁ·Î±×·¥À» ÀÚµ¿À¸·Î Á¾·áÇÒ ¼ö ¾ø½À´Ï´Ù, °è¼ÓÇϱâ Àü¿¡ ¼³Ä¡ ¾÷µ¥ÀÌÆ®°¡ ÇÊ¿äÇÑ ÆÄÀÏÀ» »ç¿ëÇϰí ÀÖ´Â ÀÀ¿ëÇÁ·Î±×·¥À» ¸ðµÎ Á¾·áÇϽñ⠹ٶø´Ï´Ù.
+PrepareToInstallNeedsRestart=¼³Ä¡ ¸¶¹ý»ç´Â ±ÍÇÏÀÇ ÄÄÇ»Å͸¦ Àç½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù. [name] ¼³Ä¡¸¦ ¿Ï·áÇϱâ À§ÇØ ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇÑ ÈÄ¿¡ ¼³Ä¡ ¸¶¹ý»ç¸¦ ´Ù½Ã ½ÇÇàÇØ ÁֽʽÿÀ.%n%nÁö±Ý ´Ù½Ã ½ÃÀÛÇϽðڽÀ´Ï±î?
+
; *** "Installing" wizard page
WizardInstalling=¼³Ä¡ Áß
-InstallingLabel=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÄÄÇ»ÅÍ¿¡ [name]À»(¸¦) ¼³Ä¡ÇÏ´Â µ¿¾È ±â´Ù·Á ÁÖ¼¼¿ä.
+InstallingLabel=±ÍÇÏÀÇ ÄÄÇ»ÅÍ¿¡ [name]À»(¸¦) ¼³Ä¡ÇÏ´Â Áß... Àá½Ã ±â´Ù·Á ÁֽʽÿÀ.
+
; *** "Setup Completed" wizard page
-FinishedHeadingLabel=[name] ¼³Á¤ ¸¶¹ý»ç¸¦ ¿Ï·áÇÏ´Â Áß
-FinishedLabelNoIcons=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÄÄÇ»ÅÍ¿¡ [name]À»(¸¦) ¼³Ä¡Çß½À´Ï´Ù.
-FinishedLabel=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÄÄÇ»ÅÍ¿¡ [name]À»(¸¦) ¼³Ä¡Çß½À´Ï´Ù. ¼³Ä¡ÇÑ ¹Ù·Î °¡±â¸¦ ¼±ÅÃÇÏ¿© ÇØ´ç ÀÀ¿ë ÇÁ·Î±×·¥À» ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.
-ClickFinish=¼³Ä¡ ÇÁ·Î±×·¥À» Á¾·áÇÏ·Á¸é [¸¶Ä§]À» Ŭ¸¯Çϼ¼¿ä.
-FinishedRestartLabel=[name] ¼³Ä¡¸¦ ¿Ï·áÇÏ·Á¸é ¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù. Áö±Ý ´Ù½Ã ½ÃÀÛÇϽðڽÀ´Ï±î?
-FinishedRestartMessage=[name] ¼³Ä¡¸¦ ¿Ï·áÇÏ·Á¸é ¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù.%n%nÁö±Ý ´Ù½Ã ½ÃÀÛÇϽðڽÀ´Ï±î?
-ShowReadmeCheck=¿¹, README ÆÄÀÏÀ» º¸°Ú½À´Ï´Ù.
-YesRadio=¿¹, ÄÄÇ»Å͸¦ Áö±Ý ´Ù½Ã ½ÃÀÛÇϰڽÀ´Ï´Ù(&Y).
-NoRadio=¾Æ´Ï¿ä, ÄÄÇ»Å͸¦ ³ªÁß¿¡ ´Ù½Ã ½ÃÀÛÇϰڽÀ´Ï´Ù(&N).
+FinishedHeadingLabel=[name] ¼³Ä¡ ¸¶¹ý»ç ¿Ï·á
+FinishedLabelNoIcons=±ÍÇÏÀÇ ÄÄÇ»ÅÍ¿¡ [name]ÀÌ(°¡) ¼³Ä¡µÇ¾ú½À´Ï´Ù.
+FinishedLabel=±ÍÇÏÀÇ ÄÄÇ»ÅÍ¿¡ [name]ÀÌ(°¡) ¼³Ä¡µÇ¾ú½À´Ï´Ù, ÀÀ¿ëÇÁ·Î±×·¥Àº ¼³Ä¡µÈ ¾ÆÀÌÄÜÀ» ¼±ÅÃÇÏ¿© ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.
+ClickFinish=¼³Ä¡¸¦ ³¡³»·Á¸é "Á¾·á"¸¦ Ŭ¸¯ÇϽʽÿÀ.
+FinishedRestartLabel=[name] ¼³Ä¡¸¦ ¿Ï·áÇÏ·Á¸é, ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù. Áö±Ý ´Ù½Ã ½ÃÀÛÇϽðڽÀ´Ï±î?
+FinishedRestartMessage=[name] ¼³Ä¡¸¦ ¿Ï·áÇÏ·Á¸é, ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù.%n%nÁö±Ý ´Ù½Ã ½ÃÀÛÇϽðڽÀ´Ï±î?
+ShowReadmeCheck=¿¹, README ÆÄÀÏÀ» Ç¥½ÃÇÕ´Ï´Ù
+YesRadio=¿¹, Áö±Ý ´Ù½Ã ½ÃÀÛÇÕ´Ï´Ù(&Y)
+NoRadio=¾Æ´Ï¿À, ³ªÁß¿¡ ´Ù½Ã ½ÃÀÛÇÕ´Ï´Ù(&N)
; used for example as 'Run MyProg.exe'
RunEntryExec=%1 ½ÇÇà
; used for example as 'View Readme.txt'
-RunEntryShellExec=%1 º¸±â
+RunEntryShellExec=%1 Ç¥½Ã
+
; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ´ÙÀ½ µð½ºÅ©°¡ ÇÊ¿äÇÔ
-SelectDiskLabel2=µð½ºÅ© %1À»(¸¦) »ðÀÔÇÑ ´ÙÀ½ [È®ÀÎ]À» Ŭ¸¯Çϼ¼¿ä.%n%nÀÌ µð½ºÅ©ÀÇ ÆÄÀÏÀÌ ¾Æ·¡ Ç¥½ÃµÈ Æú´õ°¡ ¾Æ´Ñ ´Ù¸¥ Æú´õ¿¡ ÀÖÀ¸¸é ¿Ã¹Ù¸¥ °æ·Î¸¦ ÀÔ·ÂÇϰųª [ã¾Æº¸±â]¸¦ Ŭ¸¯Çϼ¼¿ä.
+ChangeDiskTitle=µð½ºÅ©°¡ ÇÊ¿äÇÕ´Ï´Ù
+SelectDiskLabel2=µð½ºÅ© %1À»(¸¦) »ðÀÔÇϰí "È®ÀÎ"À» Ŭ¸¯ÇϽʽÿÀ.%n%nÀÌ µð½ºÅ© »óÀÇ ÆÄÀÏÀÌ ¾Æ·¡ °æ·Î°¡ ¾Æ´Ñ °÷¿¡ ÀÖ´Â °æ¿ì, ¿Ã¹Ù¸¥ °æ·Î¸¦ ÀÔ·ÂÇϰųª "ã¾Æº¸±â"¸¦ Ŭ¸¯ÇϽñ⠹ٶø´Ï´Ù.
PathLabel=°æ·Î(&P):
-FileNotInDir2="%2"¿¡¼ ÆÄÀÏ "%1"À»(¸¦) ãÀ» ¼ö ¾ø½À´Ï´Ù. ¿Ã¹Ù¸¥ µð½ºÅ©¸¦ »ðÀÔÇϰųª ´Ù¸¥ Æú´õ¸¦ ¼±ÅÃÇϼ¼¿ä.
-SelectDirectoryLabel=´ÙÀ½ µð½ºÅ©ÀÇ À§Ä¡¸¦ ÁöÁ¤Çϼ¼¿ä.
+FileNotInDir2=%2¿¡ ÆÄÀÏ %1À»(¸¦) À§Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù, ¿Ã¹Ù¸¥ µð½ºÅ©¸¦ »ðÀÔÇϰųª ´Ù¸¥ Æú´õ¸¦ ¼±ÅÃÇϽʽÿÀ.
+SelectDirectoryLabel=´ÙÀ½ µð½ºÅ©ÀÇ À§Ä¡¸¦ ÁöÁ¤ÇϽʽÿÀ.
+
; *** Installation phase messages
-SetupAborted=¼³Ä¡¸¦ ¿Ï·áÇÏÁö ¸øÇß½À´Ï´Ù.%n%n¹®Á¦¸¦ ÇØ°áÇÑ ´ÙÀ½ ¼³Ä¡ ÇÁ·Î±×·¥À» ´Ù½Ã ½ÇÇàÇϼ¼¿ä.
-EntryAbortRetryIgnore=´Ù½Ã ½ÃµµÇÏ·Á¸é [´Ù½Ã ½Ãµµ]¸¦, ±×·¡µµ °è¼ÓÇÏ·Á¸é [¹«½Ã]¸¦, ¼³Ä¡¸¦ Ãë¼ÒÇÏ·Á¸é [Áß´Ü]À» Ŭ¸¯Çϼ¼¿ä.
+SetupAborted=¼³Ä¡°¡ ¿Ï·áµÇÁö ¾Ê¾Ò½À´Ï´Ù.%n%n¹®Á¦¸¦ ÇØ°áÇÑ ÈÄ, ´Ù½Ã ¼³Ä¡¸¦ ½ÃÀÛÇϽʽÿÀ.
+AbortRetryIgnoreSelectAction=¾×¼ÇÀ» ¼±ÅÃÇØ ÁֽʽÿÀ.
+AbortRetryIgnoreRetry=Àç½Ãµµ(&T)
+AbortRetryIgnoreIgnore=¿À·ù¸¦ ¹«½ÃÇϰí ÁøÇà(&I)
+AbortRetryIgnoreCancel=¼³Ä¡ Ãë¼Ò
+
; *** Installation status messages
-StatusClosingApplications=ÀÀ¿ë ÇÁ·Î±×·¥À» ´Ý´Â Áß...
-StatusCreateDirs=µð·ºÅ͸®¸¦ ¸¸µå´Â Áß...
+StatusClosingApplications=ÀÀ¿ëÇÁ·Î±×·¥À» Á¾·áÇÏ´Â Áß...
+StatusCreateDirs=Æú´õ¸¦ ¸¸µå´Â Áß...
StatusExtractFiles=ÆÄÀÏÀ» ÃßÃâÇÏ´Â Áß...
-StatusCreateIcons=¹Ù·Î °¡±â¸¦ ¸¸µå´Â Áß...
+StatusCreateIcons=¹Ù·Î°¡±â¸¦ »ý¼ºÇÏ´Â Áß...
StatusCreateIniEntries=INI Ç׸ñÀ» ¸¸µå´Â Áß...
StatusCreateRegistryEntries=·¹Áö½ºÆ®¸® Ç׸ñÀ» ¸¸µå´Â Áß...
StatusRegisterFiles=ÆÄÀÏÀ» µî·ÏÇÏ´Â Áß...
StatusSavingUninstall=Á¦°Å Á¤º¸¸¦ ÀúÀåÇÏ´Â Áß...
StatusRunProgram=¼³Ä¡¸¦ ¿Ï·áÇÏ´Â Áß...
-StatusRestartingApplications=ÀÀ¿ë ÇÁ·Î±×·¥À» ´Ù½Ã ½ÃÀÛÇÏ´Â Áß...
-StatusRollback=º¯°æ »çÇ×À» ·Ñ¹éÇÏ´Â Áß...
+StatusRestartingApplications=ÀÀ¿ëÇÁ·Î±×·¥À» ´Ù½Ã ½ÃÀÛÇÏ´Â Áß...
+StatusRollback=º¯°æÀ» Ãë¼ÒÇÏ´Â Áß...
+
; *** Misc. errors
ErrorInternal2=³»ºÎ ¿À·ù: %1
ErrorFunctionFailedNoCode=%1 ½ÇÆÐ
-ErrorFunctionFailed=%1 ½ÇÆÐ, ÄÚµå %2
-ErrorFunctionFailedWithMessage=%1 ½ÇÆÐ, ÄÚµå %2.%n%3
-ErrorExecutingProgram=ÆÄÀÏÀ» ½ÇÇàÇÒ ¼ö ¾øÀ½:%n%1
+ErrorFunctionFailed=%1 ½ÇÆÐ; ÄÚµå %2
+ErrorFunctionFailedWithMessage=%1 ½ÇÆÐ, ÄÚµå: %2.%n%3
+ErrorExecutingProgram=ÆÄÀÏ ½ÇÇà ¿À·ù:%n%1
+
; *** Registry errors
-ErrorRegOpenKey=·¹Áö½ºÆ®¸® ۸¦ ¿©´Â Áß ¿À·ù ¹ß»ý:%n%1\%2
-ErrorRegCreateKey=·¹Áö½ºÆ®¸® ۸¦ ¸¸µå´Â Áß ¿À·ù ¹ß»ý:%n%1\%2
-ErrorRegWriteKey=·¹Áö½ºÆ®¸® Ű¿¡ ±â·ÏÇÏ´Â Áß ¿À·ù ¹ß»ý:%n%1\%2
+ErrorRegOpenKey=·¹Áö½ºÆ®¸® Ű ¿±â ¿À·ù:%n%1\%2
+ErrorRegCreateKey=·¹Áö½ºÆ®¸® Ű »ý¼º ¿À·ù:%n%1\%2
+ErrorRegWriteKey=·¹Áö½ºÆ®¸® Ű ¾²±â ¿À·ù:%n%1\%2
+
; *** INI errors
-ErrorIniEntry=ÆÄÀÏ "%1"¿¡ INI Ç׸ñÀ» ¸¸µå´Â Áß¿¡ ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù.
+ErrorIniEntry=%1 ÆÄÀÏ¿¡ INI Ç׸ñ ¸¸µé±â ¿À·ùÀÔ´Ï´Ù.
+
; *** File copying errors
-FileAbortRetryIgnore=´Ù½Ã ½ÃµµÇÏ·Á¸é [´Ù½Ã ½Ãµµ]¸¦, ÀÌ ÆÄÀÏÀ» °Ç³Ê¶Ù·Á¸é [¹«½Ã](±ÇÀåµÇÁö ¾ÊÀ½)¸¦, ¼³Ä¡¸¦ Ãë¼ÒÇÏ·Á¸é [Áß´Ü]À» Ŭ¸¯Çϼ¼¿ä.
-FileAbortRetryIgnore2=´Ù½Ã ½ÃµµÇÏ·Á¸é [´Ù½Ã ½Ãµµ]¸¦, ±×·¡µµ °è¼ÓÇÏ·Á¸é [¹«½Ã](±ÇÀåµÇÁö ¾ÊÀ½)¸¦, ¼³Ä¡¸¦ Ãë¼ÒÇÏ·Á¸é [Áß´Ü]À» Ŭ¸¯Çϼ¼¿ä.
-SourceIsCorrupted=¿øº» ÆÄÀÏÀÌ ¼Õ»óµÇ¾ú½À´Ï´Ù.
-SourceDoesntExist=¿øº» ÆÄÀÏ "%1"ÀÌ(°¡) ¾ø½À´Ï´Ù.
-ExistingFileReadOnly=±âÁ¸ ÆÄÀÏÀÌ Àбâ Àü¿ëÀ¸·Î Ç¥½ÃµÇ¾î ÀÖ½À´Ï´Ù.%n%nÀбâ Àü¿ë Ư¼ºÀ» Á¦°ÅÇÏ°í ´Ù½Ã ½ÃµµÇÏ·Á¸é [´Ù½Ã ½Ãµµ]¸¦, ÀÌ ÆÄÀÏÀ» °Ç³Ê¶Ù·Á¸é [¹«½Ã]¸¦, ¼³Ä¡¸¦ Ãë¼ÒÇÏ·Á¸é [Áß´Ü]À» Ŭ¸¯Çϼ¼¿ä.
-ErrorReadingExistingDest=±âÁ¸ ÆÄÀÏÀ» Àд Áß ¿À·ù ¹ß»ý:
-FileExists=ÇØ´ç ÆÄÀÏÀÌ ÀÌ¹Ì ÀÖ½À´Ï´Ù.%n%n¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÀÌ ÆÄÀÏÀ» µ¤¾î¾²µµ·Ï ÇϽðڽÀ´Ï±î?
-ExistingFileNewer=±âÁ¸ ÆÄÀÏÀÌ ¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ¼³Ä¡ÇÏ·Á´Â ÆÄÀϺ¸´Ù ÃÖ½ÅÀÔ´Ï´Ù. ±âÁ¸ ÆÄÀÏÀ» À¯ÁöÇÒ °ÍÀ» ±ÇÀåÇÕ´Ï´Ù.%n%n±âÁ¸ ÆÄÀÏÀ» À¯ÁöÇϽðڽÀ´Ï±î?
-ErrorChangingAttr=±âÁ¸ ÆÄÀÏÀÇ Æ¯¼ºÀ» º¯°æÇÏ´Â Áß ¿À·ù ¹ß»ý:
-ErrorCreatingTemp=´ë»ó µð·ºÅ͸®¿¡ ÆÄÀÏÀ» ¸¸µå´Â Áß ¿À·ù ¹ß»ý:
-ErrorReadingSource=¿øº» ÆÄÀÏÀ» Àд Áß ¿À·ù ¹ß»ý:
-ErrorCopying=ÆÄÀÏÀ» º¹»çÇÏ´Â Áß ¿À·ù ¹ß»ý:
-ErrorReplacingExistingFile=±âÁ¸ ÆÄÀÏÀ» ¹Ù²Ù´Â Áß ¿À·ù ¹ß»ý:
+FileAbortRetryIgnoreSkipNotRecommended=ÀÌ ÆÄÀÏÀ» °Ç³Ê¶ê(&S) (±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù)
+FileAbortRetryIgnoreIgnoreNotRecommended=¿À·ù¸¦ ¹«½ÃÇϰí ÁøÇà(&I) (±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù)
+SourceIsCorrupted=¿øº» ÆÄÀÏÀÌ ¼Õ»óµÊ
+SourceDoesntExist=¿øº» ÆÄÀÏ %1ÀÌ(°¡) Á¸ÀçÇÏÁö ¾ÊÀ½
+ExistingFileReadOnly2=±âÁ¸ ÆÄÀÏÀº Àбâ Àü¿ëÀ̱⶧¹®¿¡ ´ëüÇÒ ¼ö ¾ø½À´Ï´Ù.
+ExistingFileReadOnlyRetry=Àбâ Àü¿ë ¼Ó¼ºÀ» ÇØÁ¦ÇÏ°í ´Ù½Ã ½ÃµµÇÏ·Á¸é(&R)
+ExistingFileReadOnlyKeepExisting=±âÁ¸ ÆÄÀÏÀ» À¯Áö(&K)
+ErrorReadingExistingDest=±âÁ¸ ÆÄÀÏÀ» Àд µ¿¾È ¿À·ù ¹ß»ý:
+FileExists=ÆÄÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇÕ´Ï´Ù.%n%nÆÄÀÏÀ» µ¤¾î¾²½Ã°Ú½À´Ï±î?
+ExistingFileNewer=±âÁ¸ ÆÄÀÏÀÌ ¼³Ä¡ÇÏ·Á°í ÇÏ´Â ÆÄÀϺ¸´Ù »õ ÆÄÀÏÀÔ´Ï´Ù, ±âÁ¸ ÆÄÀÏÀ» À¯ÁöÇϽñ⠹ٶø´Ï´Ù.%n%n±âÁ¸ ÆÄÀÏÀ» À¯ÁöÇϽðڽÀ´Ï±î?
+ErrorChangingAttr=±âÁ¸ ÆÄÀÏÀÇ ¼Ó¼ºÀ» º¯°æÇÏ´Â µ¿¾È ¿À·ù ¹ß»ý:
+ErrorCreatingTemp=´ë»ó Æú´õ¿¡ ÆÄÀÏÀ» ¸¸µå´Â µ¿¾È ¿À·ù ¹ß»ý:
+ErrorReadingSource=¿øº» ÆÄÀÏÀ» Àд µ¿¾È ¿À·ù ¹ß»ý:
+ErrorCopying=ÆÄÀÏÀ» º¹»çÇÏ´Â µ¿¾È ¿À·ù ¹ß»ý:
+ErrorReplacingExistingFile=±âÁ¸ ÆÄÀÏÀ» ±³Ã¼ÇÏ´Â µ¿¾È ¿À·ù ¹ß»ý:
ErrorRestartReplace=RestartReplace ½ÇÆÐ:
-ErrorRenamingTemp=´ë»ó µð·ºÅ͸®¿¡ ÀÖ´Â ÆÄÀÏ À̸§À» ¹Ù²Ù´Â Áß ¿À·ù ¹ß»ý:
-ErrorRegisterServer=DLL/OCX¸¦ µî·ÏÇÒ ¼ö ¾øÀ½: %1
-ErrorRegSvr32Failed=Á¾·á ÄÚµå %1°ú(¿Í) ÇÔ²² RegSvr32 ½ÇÆÐ
-ErrorRegisterTypeLib=Çü½Ä ¶óÀ̺귯¸®¸¦ µî·ÏÇÒ ¼ö ¾øÀ½: %1
+ErrorRenamingTemp=´ë»ó Æú´õ ³»ÀÇ ÆÄÀÏ À̸§À» ¹Ù²Ù´Â µ¿¾È ¿À·ù ¹ß»ý:
+ErrorRegisterServer=DLL/OCX µî·Ï ½ÇÆÐ: %1
+ErrorRegSvr32Failed=RegSvr32°¡ ´ÙÀ½ Á¾·á ÄÚµå·Î ½ÇÆÐ: %1
+ErrorRegisterTypeLib=´ÙÀ½ À¯ÇüÀÇ ¶óÀ̺귯¸® µî·Ï¿¡ ½ÇÆÐ: %1
+
+; *** Uninstall display name markings
+; used for example as 'My Program (32-bit)'
+UninstallDisplayNameMark=%1 (%2)
+; used for example as 'My Program (32-bit, All users)'
+UninstallDisplayNameMarks=%1 (%2, %3)
+UninstallDisplayNameMark32Bit=32ºñÆ®
+UninstallDisplayNameMark64Bit=64ºñÆ®
+UninstallDisplayNameMarkAllUsers=¸ðµç »ç¿ëÀÚ
+UninstallDisplayNameMarkCurrentUser=ÇöÀç »ç¿ëÀÚ
+
; *** Post-installation errors
-ErrorOpeningReadme=README ÆÄÀÏÀ» ¿©´Â Áß¿¡ ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù.
-ErrorRestartingComputer=¼³Ä¡ ÇÁ·Î±×·¥¿¡¼ ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇÒ ¼ö ¾ø½À´Ï´Ù. ¼öµ¿À¸·Î ÁøÇàÇϼ¼¿ä.
+ErrorOpeningReadme=README ÆÄÀÏÀ» ¿©´Â Áß ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù.
+ErrorRestartingComputer=ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇÒ ¼ö ¾ø½À´Ï´Ù, ¼öµ¿À¸·Î ´Ù½Ã ½ÃÀÛÇϽʽÿÀ.
+
; *** Uninstaller messages
-UninstallNotFound=ÆÄÀÏ "%1"ÀÌ(°¡) ¾ø½À´Ï´Ù. Á¦°ÅÇÒ ¼ö ¾ø½À´Ï´Ù.
-UninstallOpenError=ÆÄÀÏ "%1"À»(¸¦) ¿ ¼ö ¾ø½À´Ï´Ù. Á¦°ÅÇÒ ¼ö ¾ø½À´Ï´Ù.
-UninstallUnsupportedVer=Á¦°Å ·Î±× ÆÄÀÏ "%1"ÀÌ(°¡) ÀÌ ¹öÀüÀÇ Á¦°Å ÇÁ·Î±×·¥¿¡¼ ÀνÄÇÏÁö ¸øÇÏ´Â Çü½ÄÀÔ´Ï´Ù. Á¦°ÅÇÒ ¼ö ¾ø½À´Ï´Ù.
-UninstallUnknownEntry=Á¦°Å ·Î±×¿¡¼ ¾Ë ¼ö ¾ø´Â Ç׸ñ(%1)ÀÌ ¹ß°ßµÇ¾ú½À´Ï´Ù.
-ConfirmUninstall=%1°ú(¿Í) ÇØ´ç ±¸¼º ¿ä¼Ò¸¦ ¸ðµÎ ¿ÏÀüÈ÷ Á¦°ÅÇϽðڽÀ´Ï±î?
-UninstallOnlyOnWin64=ÀÌ ¼³Ä¡´Â 64ºñÆ® Windows¿¡¼¸¸ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.
-OnlyAdminCanUninstall=ÀÌ ¼³Ä¡´Â °ü¸®ÀÚ ±ÇÇÑÀÌ ÀÖ´Â »ç¿ëÀÚ¸¸ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.
-UninstallStatusLabel=ÄÄÇ»ÅÍ¿¡¼ %1À»(¸¦) Á¦°ÅÇÏ´Â µ¿¾È ±â´Ù·Á ÁÖ¼¼¿ä.
-UninstalledAll=ÄÄÇ»ÅÍ¿¡¼ %1À»(¸¦) Á¦°ÅÇß½À´Ï´Ù.
-UninstalledMost=%1 Á¦°Å°¡ ¿Ï·áµÇ¾ú½À´Ï´Ù.%n%nÀϺΠ¿ä¼Ò´Â Á¦°ÅÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ·¯ÇÑ Ç׸ñÀº ¼öµ¿À¸·Î Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.
-UninstalledAndNeedsRestart=%1 Á¦°Å¸¦ ¿Ï·áÇÏ·Á¸é ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù.%n%nÁö±Ý ´Ù½Ã ½ÃÀÛÇϽðڽÀ´Ï±î?
-UninstallDataCorrupted="%1" ÆÄÀÏÀÌ ¼Õ»óµÇ¾ú½À´Ï´Ù. Á¦°ÅÇÒ ¼ö ¾ø½À´Ï´Ù.
+UninstallNotFound=ÆÄÀÏ %1ÀÌ(°¡) Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®¿¡, Á¦°Å¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù.
+UninstallOpenError=ÆÄÀÏ %1À»(¸¦) ¿ ¼ö ¾ø±â ¶§¹®¿¡, Á¦°Å¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù.
+UninstallUnsupportedVer=»èÁ¦ ·Î±× ÆÄÀÏ "%1"Àº(´Â) ÀÌ »èÁ¦ ¸¶¹ý»ç·Î ÀνÄÇÒ ¼ö ¾ø´Â Çü½ÄÀ̱⠶§¹®¿¡, Á¦°Å¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù.
+UninstallUnknownEntry=¾Ë ¼ö ¾ø´Â Ç׸ñ %1ÀÌ(°¡) »èÁ¦ ·Î±×¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.
+ConfirmUninstall=Á¤¸» %1¿Í(°ú) ±× ±¸¼º ¿ä¼Ò¸¦ ¸ðµÎ Á¦°ÅÇϽðڽÀ´Ï±î?
+UninstallOnlyOnWin64=ÀÌ ÇÁ·Î±×·¥Àº 64ºñÆ® Windows¿¡¼¸¸ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.
+OnlyAdminCanUninstall=ÀÌ ÇÁ·Î±×·¥À» Á¦°ÅÇÏ·Á¸é °ü¸®ÀÚ ±ÇÇÑÀÌ ÇÊ¿äÇÕ´Ï´Ù.
+UninstallStatusLabel=±ÍÇÏÀÇ ÄÄÇ»ÅÍ¿¡¼ %1À»(¸¦) Á¦°ÅÇÏ´Â Áß... Àá½Ã ±â´Ù·Á ÁֽʽÿÀ.
+UninstalledAll=%1ÀÌ(°¡) ¼º°øÀûÀ¸·Î Á¦°ÅµÇ¾ú½À´Ï´Ù!
+UninstalledMost=%1 Á¦°Å°¡ ¿Ï·áµÇ¾ú½À´Ï´Ù.%n%nÀϺΠ¿ä¼Ò´Â »èÁ¦ÇÒ ¼ö ¾øÀ¸´Ï, ¼öµ¿À¸·Î Á¦°ÅÇϽñ⠹ٶø´Ï´Ù.
+UninstalledAndNeedsRestart=%1ÀÇ Á¦°Å¸¦ ¿Ï·áÇÏ·Á¸é, ÄÄÇ»Å͸¦ ´Ù½Ã ½ÃÀÛÇØ¾ß ÇÕ´Ï´Ù.%n%nÁö±Ý ´Ù½Ã ½ÃÀÛÇϽðڽÀ´Ï±î?
+UninstallDataCorrupted=ÆÄÀÏ "%1"ÀÌ(°¡) ¼Õ»óµÇ¾ú±â ¶§¹®¿¡, Á¦°Å¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù.
+
; *** Uninstallation phase messages
ConfirmDeleteSharedFileTitle=°øÀ¯ ÆÄÀÏÀ» Á¦°ÅÇϽðڽÀ´Ï±î?
-ConfirmDeleteSharedFile2=½Ã½ºÅÛ¿¡¼´Â ÀÌÁ¦ ´ÙÀ½ °øÀ¯ ÆÄÀÏÀ» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÌ ¾ø´Â °ÍÀ¸·Î Ç¥½ÃµË´Ï´Ù. Á¦°Å ÀÛ¾÷À» ÅëÇØ ÀÌ °øÀ¯ ÆÄÀÏÀ» Á¦°ÅÇϽðڽÀ´Ï±î?%n%n¾ÆÁ÷ ÀÌ ÆÄÀÏÀ» »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÌ Àִµ¥ ÀÌ ÆÄÀÏÀ» Á¦°ÅÇϸé ÇØ´ç ÇÁ·Î±×·¥ÀÌ ¿Ã¹Ù¸£°Ô ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. Àß ¸ð¸£´Â °æ¿ì [¾Æ´Ï¿ä]¸¦ ¼±ÅÃÇϼ¼¿ä. ½Ã½ºÅÛ¿¡ ÆÄÀÏÀ» ±×´ë·Î µÎ¾îµµ ¾Æ¹«·± ¹®Á¦°¡ ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù.
+ConfirmDeleteSharedFile2=½Ã½ºÅÛÀÇ ¾î¶² ÇÁ·Î±×·¥µµ ´ÙÀ½ °øÀ¯ ÆÄÀÏÀ» »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù, ÀÌ °øÀ¯ ÆÄÀÏÀ» »èÁ¦ÇϽðڽÀ´Ï±î?%n%nÀÌ ÆÄÀÏÀ» ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ °øÀ¯Çϰí ÀÖ´Â »óÅ¿¡¼ ÀÌ ÆÄÀÏÀ» Á¦°ÅÇÒ °æ¿ì, ÇØ´ç ÇÁ·Î±×·¥ÀÌ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖÀ¸´Ï, È®½ÅÀÌ ¾øÀ¸¸é "¾Æ´Ï¿À"¸¦ ¼±ÅÃÇϼŵµ µË´Ï´Ù. ½Ã½ºÅÛ¿¡ ÆÄÀÏÀÌ ³²¾Æ À־ ¹®Á¦°¡ µÇÁø ¾Ê½À´Ï´Ù.
SharedFileNameLabel=ÆÄÀÏ À̸§:
SharedFileLocationLabel=À§Ä¡:
WizardUninstalling=Á¦°Å »óÅÂ
StatusUninstalling=%1À»(¸¦) Á¦°ÅÇÏ´Â Áß...
+
; *** Shutdown block reasons
ShutdownBlockReasonInstallingApp=%1À»(¸¦) ¼³Ä¡ÇÏ´Â ÁßÀÔ´Ï´Ù.
ShutdownBlockReasonUninstallingApp=%1À»(¸¦) Á¦°ÅÇÏ´Â ÁßÀÔ´Ï´Ù.
+
; The custom messages below aren't used by Setup itself, but if you make
; use of them in your scripts, you'll want to translate them.
+
[CustomMessages]
+
NameAndVersion=%1 ¹öÀü %2
-AdditionalIcons=Ãß°¡ ¹Ù·Î °¡±â:
-CreateDesktopIcon=¹ÙÅÁ È¸é ¹Ù·Î °¡±â ¸¸µé±â(&D)
-CreateQuickLaunchIcon=ºü¸¥ ½ÇÇà ¹Ù·Î °¡±â ¸¸µé±â(&Q)
-ProgramOnTheWeb=%1 À¥ Á¤º¸
+AdditionalIcons=¾ÆÀÌÄÜ Ãß°¡:
+CreateDesktopIcon=¹ÙÅÁ ȸ鿡 ¹Ù·Î°¡±â ¸¸µé±â(&D)
+CreateQuickLaunchIcon=ºü¸¥ ½ÇÇà ¾ÆÀÌÄÜ ¸¸µé±â(&Q)
+ProgramOnTheWeb=%1 À¥ÆäÀÌÁö
UninstallProgram=%1 Á¦°Å
-LaunchProgram=%1 ½ÃÀÛ
-AssocFileExtension=%1À»(¸¦) %2 ÆÄÀÏ È®Àå¸í°ú ¿¬°á(&A)
-AssocingFileExtension=%1À»(¸¦) %2 ÆÄÀÏ È®Àå¸í°ú ¿¬°á Áß...
+LaunchProgram=%1 ½ÇÇà
+AssocFileExtension=ÆÄÀÏ È®ÀåÀÚ %2À»(¸¦) %1¿¡ ¿¬°áÇÕ´Ï´Ù.
+AssocingFileExtension=ÆÄÀÏ È®ÀåÀÚ %2À»(¸¦) %1¿¡ ¿¬°áÇÏ´Â Áß...
AutoStartProgramGroupDescription=½ÃÀÛ:
-AutoStartProgram=%1 ÀÚµ¿ ½ÃÀÛ
-AddonHostProgramNotFound=¼±ÅÃÇÑ Æú´õ¿¡¼ %1À»(¸¦) ãÀ» ¼ö ¾ø½À´Ï´Ù.%n%n±×·¡µµ °è¼ÓÇϽðڽÀ´Ï±î?
\ No newline at end of file
+AutoStartProgram=%1À»(¸¦) ÀÚµ¿À¸·Î ½ÃÀÛ
+AddonHostProgramNotFound=%1Àº(´Â) ¼±ÅÃÇÑ Æú´õ¿¡ À§Ä¡ÇÒ ¼ö ¾ø½À´Ï´Ù.%n%n±×·¡µµ °è¼ÓÇϽðڽÀ´Ï±î?
diff --git a/build/win32/i18n/Default.zh-cn.isl b/build/win32/i18n/Default.zh-cn.isl
index e384e83d30d..5c5df9a166f 100644
--- a/build/win32/i18n/Default.zh-cn.isl
+++ b/build/win32/i18n/Default.zh-cn.isl
@@ -1,16 +1,17 @@
-; *** Inno Setup version 5.5.3+ Simplified Chinese messages ***
+; *** Inno Setup version 6.0.3+ Chinese Simplified messages ***
;
-; To download user-contributed translations of this file, go to:
-; http://www.jrsoftware.org/files/istrans/
+; Maintained by Zhenghan Yang
+; Email: 847320916@QQ.com
+; Translation based on network resource
+; The latest Translation is on https://github.com/kira-96/Inno-Setup-Chinese-Simplified-Translation
;
-; Note: When translating this text, do not add periods (.) to the end of
-; messages that didn't have them already, because on those messages Inno
-; Setup adds the periods automatically (appending a period would result in
-; two periods being displayed).
+
[LangOptions]
; The following three entries are very important. Be sure to read and
; understand the '[LangOptions] section' topic in the help file.
-LanguageName=Simplified Chinese
+LanguageName=ç®€ä½“ä¸æ–‡
+; If Language Name display incorrect, uncomment next line
+; LanguageName=<7B80><4F53><4E2D><6587>
LanguageID=$0804
LanguageCodePage=936
; If the language you are translating to requires special font faces or
@@ -23,276 +24,342 @@ LanguageCodePage=936
;TitleFontSize=29
;CopyrightFontName=Arial
;CopyrightFontSize=8
+
[Messages]
-; *** Application titles
-SetupAppTitle=°²×°³ÌÐò
-SetupWindowTitle=°²×°³ÌÐò - %1
-UninstallAppTitle=Ð¶ÔØ
-UninstallAppFullTitle=%1 Ð¶ÔØ
+
+; *** åº”ç”¨ç¨‹åºæ ‡é¢˜
+SetupAppTitle=安装
+SetupWindowTitle=安装 - %1
+UninstallAppTitle=å¸è½½
+UninstallAppFullTitle=%1 å¸è½½
+
; *** Misc. common
-InformationTitle=ÐÅÏ¢
-ConfirmTitle=È·ÈÏ
-ErrorTitle=´íÎó
+InformationTitle=ä¿¡æ¯
+ConfirmTitle=确认
+ErrorTitle=错误
+
; *** SetupLdr messages
-SetupLdrStartupMessage=Õ⽫°²×° %1¡£ÊÇ·ñÒª¼ÌÐø?
-LdrCannotCreateTemp=ÎÞ·¨´´½¨ÁÙʱÎļþ¡£°²×°³ÌÐòÒÑÖÐÖ¹
-LdrCannotExecTemp=ÎÞ·¨ÔÚÁÙʱĿ¼ÖÐÖ´ÐÐÎļþ¡£°²×°³ÌÐòÒÑÖÐÖ¹
-; *** Startup error messages
-LastErrorMessage=%1¡£%n%n´íÎó %2: %3
-SetupFileMissing=°²×°Ä¿Â¼È±Ê§Îļþ %1¡£Çë¸üÕý¸ÃÎÊÌâ»ò»ñÈ¡¸ÃÎÊÌâµÄи±±¾¡£
-SetupFileCorrupt=°²×°³ÌÐòÎļþ¼ÐÒÑË𻵡£Çë»ñÈ¡¸Ã³ÌÐòµÄи±±¾¡£
-SetupFileCorruptOrWrongVer=°²×°³ÌÐòÎļþ¼ÐÒÑË𻵻òÓë´Ë°²×°³ÌÐò°æ±¾²»¼æÈÝ¡£Çë¸üÕý¸ÃÎÊÌâ»ò»ñÈ¡¸Ã³ÌÐòµÄи±±¾¡£
-InvalidParameter=ÃüÁîÐÐ %n%n%1 ÉÏ´«µÝÁËÒ»¸öÎÞЧ²ÎÊý
-SetupAlreadyRunning=°²×°³ÌÐòÒÑÔÚÔËÐС£
-WindowsVersionNotSupported=´Ë³ÌÐò²»Ö§³ÖÄã¼ÆËã»úÕýÔËÐÐµÄ Windows °æ±¾¡£
-WindowsServicePackRequired=´Ë³ÌÐòÐèÒª %1 ·þÎñ°ü %2 »ò¸ü¸ß°æ±¾¡£
-NotOnThisPlatform=´Ë³ÌÐò½«²»ÔÚ %1 ÉÏÔËÐС£
-OnlyOnThisPlatform=´Ë³ÌÐò±ØÐëÔÚ %1 ÉÏÔËÐС£
-OnlyOnTheseArchitectures=´Ë³ÌÐò½ö¿É°²×°ÔÚΪÒÔÏ´¦ÀíÆ÷Ìåϵ½á¹¹Éè¼ÆµÄ Windows °æ±¾ÉÏ:%n%n%1
-MissingWOW64APIs=ÄãÕýÔËÐÐµÄ Windows °æ±¾²»°üº¬°²×°³ÌÐòÖ´ÐÐ 64 λ°²×°ËùÐèµÄ¹¦ÄÜ¡£Òª¸üÕý´ËÎÊÌ⣬Çë°²×°·þÎñ°ü %1¡£
-WinVersionTooLowError=´Ë³ÌÐòÐèÒª %1 °æ±¾ %2 »ò¸ü¸ß°æ±¾¡£
-WinVersionTooHighError=´Ë³ÌÐò²»Äܰ²×°ÔÚ %1 °æ±¾ %2 »ò¸ü¸ßµÄ°æ±¾ÉÏ¡£
-AdminPrivilegesRequired=ÔÚ°²×°´Ë³ÌÐòʱ±ØÐë×÷Ϊ¹ÜÀíÔ±µÇ¼¡£
-PowerUserPrivilegesRequired=°²×°´Ë³ÌÐòʱ±ØÐëÒÔ¹ÜÀíÔ±»ò Power User ×é³ÉÔ±Éí·ÝµÇ¼¡£
-SetupAppRunningError=°²×°³ÌÐò¼ì²âµ½ %1 µ±Ç°ÕýÔÚÔËÐС£%n%nÇëÁ¢¼´¹Ø±ÕËüµÄËùÓÐʵÀý£¬È»ºóµ¥»÷¡°È·¶¨¡±ÒÔ¼ÌÐø£¬»òµ¥»÷¡°È¡Ïû¡±ÒÔÍ˳ö¡£
-UninstallAppRunningError=Ð¶ÔØ¼ì²âµ½ %1 µ±Ç°ÕýÔÚÔËÐС£%n%nÇëÁ¢¼´¹Ø±ÕËüµÄËùÓÐʵÀý£¬È»ºóµ¥»÷¡°È·¶¨¡±ÒÔ¼ÌÐø»òµ¥»÷¡°È¡Ïû¡±ÒÔÍ˳ö¡£
-; *** Misc. errors
-ErrorCreatingDir=°²×°³ÌÐòÎÞ·¨´´½¨Ä¿Â¼¡°%1¡±
-ErrorTooManyFilesInDir=ÎÞ·¨ÔÚĿ¼¡°%1¡±Öд´½¨Îļþ£¬ÒòΪËü°üº¬Ì«¶àÎļþ
-; *** Setup common messages
-ExitSetupTitle=Í˳ö°²×°³ÌÐò
-ExitSetupMessage=°²×°³ÌÐòδÍê³É¡£Èç¹ûÁ¢¼´Í˳ö£¬½«²»»á°²×°¸Ã³ÌÐò¡£%n%n¿ÉÔÚÆäËûʱ¼äÔÙ´ÎÔËÐа²×°³ÌÐòÒÔÍê³É°²×°¡£%n%nÊÇ·ñÍ˳ö°²×°³ÌÐò?
-AboutSetupMenuItem=¹ØÓÚ°²×°³ÌÐò(&A)...
-AboutSetupTitle=¹ØÓÚ°²×°³ÌÐò
-AboutSetupMessage=%1 °æ±¾ %2%n%3%n%n%1 Ö÷Ò³:%n%4
+SetupLdrStartupMessage=现在将安装 %1。您想è¦ç»§ç»å—?
+LdrCannotCreateTemp=ä¸èƒ½åˆ›å»ºä¸´æ—¶æ–‡ä»¶ã€‚å®‰è£…ä¸æ–。
+LdrCannotExecTemp=ä¸èƒ½æ‰§è¡Œä¸´æ—¶ç›®å½•ä¸çš„æ–‡ä»¶ã€‚å®‰è£…ä¸æ–。
+HelpTextNote=
+
+; *** å¯åŠ¨é”™è¯¯æ¶ˆæ¯
+LastErrorMessage=%1.%n%n错误 %2: %3
+SetupFileMissing=安装目录ä¸çš„æ–‡ä»¶ %1 丢失。请修æ£è¿™ä¸ªé—®é¢˜æˆ–获å–一个新的程åºå‰¯æœ¬ã€‚
+SetupFileCorrupt=安装文件已æŸå。请获å–一个新的程åºå‰¯æœ¬ã€‚
+SetupFileCorruptOrWrongVer=安装文件已æŸå,或是与这个安装程åºçš„版本ä¸å…¼å®¹ã€‚请修æ£è¿™ä¸ªé—®é¢˜æˆ–èŽ·å–æ–°çš„程åºå‰¯æœ¬ã€‚
+InvalidParameter=æ— æ•ˆçš„å‘½ä»¤è¡Œå‚æ•°: %n%n%1
+SetupAlreadyRunning=å®‰è£…ç¨‹åºæ£åœ¨è¿è¡Œã€‚
+WindowsVersionNotSupported=这个程åºä¸æ”¯æŒè¯¥ç‰ˆæœ¬çš„计算机è¿è¡Œã€‚
+WindowsServicePackRequired=这个程åºè¦æ±‚%1æœåŠ¡åŒ…%1或更高。
+NotOnThisPlatform=这个程åºå°†ä¸èƒ½è¿è¡ŒäºŽ %1。
+OnlyOnThisPlatform=这个程åºå¿…é¡»è¿è¡ŒäºŽ %1。
+OnlyOnTheseArchitectures=这个程åºåªèƒ½åœ¨ä¸ºä¸‹åˆ—处ç†å™¨ç»“构设计的 Windows 版本ä¸è¿›è¡Œå®‰è£…:%n%n%1
+WinVersionTooLowError=这个程åºéœ€è¦ %1 版本 %2 或更高。
+WinVersionTooHighError=这个程åºä¸èƒ½å®‰è£…于 %1 版本 %2 或更高。
+AdminPrivilegesRequired=åœ¨å®‰è£…è¿™ä¸ªç¨‹åºæ—¶æ‚¨å¿…须以管ç†å‘˜èº«ä»½ç™»å½•。
+PowerUserPrivilegesRequired=åœ¨å®‰è£…è¿™ä¸ªç¨‹åºæ—¶æ‚¨å¿…须以管ç†å‘˜èº«ä»½æˆ–有æƒé™çš„用户组身份登录。
+SetupAppRunningError=安装程åºå‘现 %1 当剿£åœ¨è¿è¡Œã€‚%n%nè¯·å…ˆå…³é—æ‰€æœ‰è¿è¡Œçš„窗å£ï¼Œç„¶åŽå•击“确定â€ç»§ç»ï¼Œæˆ–æŒ‰â€œå–æ¶ˆâ€é€€å‡ºã€‚
+UninstallAppRunningError=å¸è½½ç¨‹åºå‘现 %1 当剿£åœ¨è¿è¡Œã€‚%n%nè¯·å…ˆå…³é—æ‰€æœ‰è¿è¡Œçš„窗å£ï¼Œç„¶åŽå•击“确定â€ç»§ç»ï¼Œæˆ–æŒ‰â€œå–æ¶ˆâ€é€€å‡ºã€‚
+
+; *** å¯åŠ¨é—®é¢˜
+PrivilegesRequiredOverrideTitle=é€‰æ‹©å®‰è£…ç¨‹åºæ¨¡å¼
+PrivilegesRequiredOverrideInstruction=选择安装模å¼
+PrivilegesRequiredOverrideText1=%1 å¯ä»¥ä¸ºæ‰€æœ‰ç”¨æˆ·å®‰è£…(需è¦ç®¡ç†å‘˜æƒé™),或仅为您安装。
+PrivilegesRequiredOverrideText2=%1 åªèƒ½ä¸ºæ‚¨å®‰è£…,或为所有用户安装(需è¦ç®¡ç†å‘˜æƒé™)。
+PrivilegesRequiredOverrideAllUsers=为所有用户安装(&A)
+PrivilegesRequiredOverrideAllUsersRecommended=为所有用户安装(建议选项)(&A)
+PrivilegesRequiredOverrideCurrentUser=åªä¸ºæˆ‘安装(&M)
+PrivilegesRequiredOverrideCurrentUserRecommended=åªä¸ºæˆ‘安装(建议选项)(&M)
+
+; *** 其它错误
+ErrorCreatingDir=安装程åºä¸èƒ½åˆ›å»ºç›®å½•“%1â€ã€‚
+ErrorTooManyFilesInDir=ä¸èƒ½åœ¨ç›®å½•“%1â€ä¸åˆ›å»ºæ–‡ä»¶ï¼Œå› 为里é¢çš„æ–‡ä»¶å¤ªå¤š
+
+; *** 安装程åºå…¬å…±æ¶ˆæ¯
+ExitSetupTitle=退出安装程åº
+ExitSetupMessage=å®‰è£…ç¨‹åºæœªå®Œæˆå®‰è£…。如果您现在退出,您的程åºå°†ä¸èƒ½å®‰è£…。%n%n您å¯ä»¥ä»¥åŽå†è¿è¡Œå®‰è£…程åºå®Œæˆå®‰è£…。%n%n退出安装程åºå—?
+AboutSetupMenuItem=关于安装程åº(&A)...
+AboutSetupTitle=关于安装程åº
+AboutSetupMessage=%1 版本 %2%n%3%n%n%1 主页:%n%4
AboutSetupNote=
TranslatorNote=
-; *** Buttons
-ButtonBack=< ÉÏÒ»²½(&B)
-ButtonNext=ÏÂÒ»²½(&N) >
-ButtonInstall=°²×°(&I)
-ButtonOK=È·¶¨
-ButtonCancel=È¡Ïû
-ButtonYes=ÊÇ(&Y)
-ButtonYesToAll=½ÓÊÜÈ«²¿(&A)
-ButtonNo=·ñ(&N)
-ButtonNoToAll=·ñ¶¨È«²¿(&O)
-ButtonFinish=Íê³É(&F)
-ButtonBrowse=ä¯ÀÀ(&B)...
-ButtonWizardBrowse=ä¯ÀÀ(&R)...
-ButtonNewFolder=н¨Îļþ¼Ð(&M)
-; *** "Select Language" dialog messages
-SelectLanguageTitle=Ñ¡Ôñ°²×°³ÌÐòÓïÑÔ
-SelectLanguageLabel=Ñ¡Ôñ°²×°Ê±ÒªÊ¹ÓõÄÓïÑÔ:
-; *** Common wizard text
-ClickNext=µ¥»÷¡°ÏÂÒ»²½¡±ÒÔ¼ÌÐø£¬»òµ¥»÷¡°È¡Ïû¡±ÒÔÍ˳ö°²×°³ÌÐò¡£
+
+; *** 按钮
+ButtonBack=< 上一æ¥(&B)
+ButtonNext=下一æ¥(&N) >
+ButtonInstall=安装(&I)
+ButtonOK=确定
+ButtonCancel=å–æ¶ˆ
+ButtonYes=是(&Y)
+ButtonYesToAll=全是(&A)
+ButtonNo=å¦(&N)
+ButtonNoToAll=å…¨å¦(&O)
+ButtonFinish=完æˆ(&F)
+ButtonBrowse=æµè§ˆ(&B)...
+ButtonWizardBrowse=æµè§ˆ(&R)...
+ButtonNewFolder=新建文件夹(&M)
+
+; *** “选择è¯è¨€â€å¯¹è¯æ¡†æ¶ˆæ¯
+SelectLanguageTitle=选择安装è¯è¨€
+SelectLanguageLabel=选择安装时è¦ä½¿ç”¨çš„è¯è¨€ã€‚
+
+; *** 公共å‘导文å—
+ClickNext=å•击“下一æ¥â€ç»§ç»ï¼Œæˆ–å•å‡»â€œå–æ¶ˆâ€é€€å‡ºå®‰è£…程åºã€‚
BeveledLabel=
-BrowseDialogTitle=ä¯ÀÀ²éÕÒÎļþ¼Ð
-BrowseDialogLabel=ÔÚÒÔÏÂÁбíÖÐÑ¡ÔñÒ»¸öÎļþ¼Ð£¬È»ºóµ¥»÷¡°È·¶¨¡±¡£
-NewFolderName=н¨Îļþ¼Ð
-; *** "Welcome" wizard page
-WelcomeLabel1=»¶ÓʹÓà [name] °²×°Ïòµ¼
-WelcomeLabel2=Õ⽫ÔÚ¼ÆËã»úÉϰ²×° [name/ver]¡£%n%n½¨Ò鹨±ÕËùÓÐÆäËûÓ¦ÓóÌÐòÔÙ¼ÌÐø¡£
-; *** "Password" wizard page
-WizardPassword=ÃÜÂë
-PasswordLabel1=´Ë°²×°ÊÜÃÜÂë±£»¤¡£
-PasswordLabel3=ÇëÌṩÃÜÂ룬Ȼºóµ¥»÷¡°ÏÂÒ»²½¡±ÒÔ¼ÌÐø¡£ÃÜÂëÇø·Ö´óСд¡£
-PasswordEditLabel=ÃÜÂë(&P):
-IncorrectPassword=ÊäÈëµÄÃÜÂë²»ÕýÈ·¡£ÇëÖØÊÔ¡£
-; *** "License Agreement" wizard page
-WizardLicense=Ðí¿ÉÐÒé
-LicenseLabel=ÇëÔÚ¼ÌÐø²Ù×÷ǰÔĶÁÒÔÏÂÖØÒªÐÅÏ¢¡£
-LicenseLabel3=ÇëÔĶÁÒÔÏÂÐí¿ÉÐÒé¡£±ØÐë½ÓÊÜ´ËÐÒéÌõ¿î²Å¿É¼ÌÐø°²×°¡£
-LicenseAccepted=ÎÒ½ÓÊÜÐÒé(&A)
-LicenseNotAccepted=ÎÒ²»½ÓÊÜÐÒé(&D)
-; *** "Information" wizard pages
-WizardInfoBefore=ÐÅÏ¢
-InfoBeforeLabel=ÇëÔÚ¼ÌÐø²Ù×÷ǰÔĶÁÒÔÏÂÖØÒªÐÅÏ¢¡£
-InfoBeforeClickLabel=×¼±¸ºÃ¼ÌÐø°²×°ºó£¬µ¥»÷¡°ÏÂÒ»²½¡±¡£
-WizardInfoAfter=ÐÅÏ¢
-InfoAfterLabel=ÇëÔÚ¼ÌÐø²Ù×÷ǰÔĶÁÒÔÏÂÖØÒªÐÅÏ¢¡£
-InfoAfterClickLabel=×¼±¸ºÃ¼ÌÐø°²×°ºó£¬µ¥»÷¡°ÏÂÒ»²½¡±¡£
-; *** "User Information" wizard page
-WizardUserInfo=Óû§ÐÅÏ¢
-UserInfoDesc=ÇëÊäÈëÄãµÄÐÅÏ¢¡£
-UserInfoName=Óû§Ãû(&U):
-UserInfoOrg=×éÖ¯(&O):
-UserInfoSerial=ÐòÁкÅ(&S):
-UserInfoNameRequired=±ØÐëÊäÈëÃû³Æ¡£
-; *** "Select Destination Location" wizard page
-WizardSelectDir=Ñ¡ÔñÄ¿±êλÖÃ
-SelectDirDesc=Ó¦½« [name] °²×°µ½ÄÄÀï?
-SelectDirLabel3=°²×°³ÌÐò»á½« [name] °²×°µ½ÒÔÏÂÎļþ¼Ð¡£
-SelectDirBrowseLabel=ÈôÒª¼ÌÐø£¬µ¥»÷¡°ÏÂÒ»²½¡±¡£Èç¹ûÏëÑ¡ÔñÆäËûÎļþ¼Ð£¬µ¥»÷¡°ä¯ÀÀ¡±¡£
-DiskSpaceMBLabel=ÐèÒªÖÁÉÙ [mb] MB ¿ÉÓôÅÅ̿ռ䡣
-CannotInstallToNetworkDrive=°²×°³ÌÐòÎÞ·¨°²×°µ½ÍøÂçÇý¶¯Æ÷¡£
-CannotInstallToUNCPath=°²×°³ÌÐòÎÞ·¨°²×°µ½ UNC ·¾¶¡£
-InvalidPath=±ØÐëÊäÈë´øÇý¶¯Æ÷ºÅµÄÍêÕû·¾¶(ÀýÈç:%n%nC:\APP%n%n)»òÒÔϸñʽµÄ UNC ·¾¶:%n%n\\server\share
-InvalidDrive=ËùÑ¡Çý¶¯Æ÷»ò UNC ¹²Ïí²»´æÔÚ»ò²»¿É·ÃÎÊ¡£ÇëÁíÍâÑ¡Ôñ¡£
-DiskSpaceWarningTitle=´ÅÅ̿ռ䲻×ã
-DiskSpaceWarning=°²×°³ÌÐòÐèÒªÖÁÉÙ %1 KB ¿ÉÓÿռäÀ´°²×°£¬µ«ËùÑ¡Çý¶¯Æ÷½öÓÐ %2 KB ¿ÉÓÿռ䡣%n%nÊÇ·ñÈÔÒª¼ÌÐø?
-DirNameTooLong=Îļþ¼ÐÃû³Æ»ò·¾¶Ì«³¤¡£
-InvalidDirName=Îļþ¼ÐÃû³ÆÎÞЧ¡£
-BadDirName32=Îļþ¼ÐÃû²»Äܰüº¬ÒÔÏÂÈÎÒ»×Ö·û:%n%n%1
-DirExistsTitle=Îļþ¼Ð´æÔÚ
-DirExists=Îļþ¼Ð:%n%n%1%n%nÒÑ´æÔÚ¡£ÊÇ·ñÈÔÒª°²×°µ½¸ÃÎļþ¼Ð?
-DirDoesntExistTitle=Îļþ¼Ð²»´æÔÚ
-DirDoesntExist=Îļþ¼Ð:%n%n%1%n%n²»´æÔÚ¡£ÊÇ·ñÒª´´½¨¸ÃÎļþ¼Ð?
-; *** "Select Components" wizard page
-WizardSelectComponents=Ñ¡Ôñ×é¼þ
-SelectComponentsDesc=Ó¦°²×°ÄÄЩ×é¼þ?
-SelectComponentsLabel2=Ñ¡ÔñÏ£Íû°²×°µÄ×é¼þ£»Çå³ý²»Ï£Íû°²×°µÄ×é¼þ¡£×¼±¸¾ÍÐ÷ºóµ¥»÷¡°ÏÂÒ»²½¡±ÒÔ¼ÌÐø¡£
-FullInstallation=ÍêÈ«°²×°
+BrowseDialogTitle=æµè§ˆæ–‡ä»¶å¤¹
+BrowseDialogLabel=在下列列表ä¸é€‰æ‹©ä¸€ä¸ªæ–‡ä»¶å¤¹ï¼Œç„¶åŽå•击“确定â€ã€‚
+NewFolderName=新建文件夹
+
+; *** “欢迎â€å‘导页
+WelcomeLabel1=欢迎使用 [name] 安装å‘导
+WelcomeLabel2=现在将安装 [name/ver] 到您的电脑ä¸ã€‚%n%næŽ¨èæ‚¨åœ¨ç»§ç»å®‰è£…å‰å…³é—所有其它应用程åºã€‚
+
+; *** “密ç â€å‘导页
+WizardPassword=密ç
+PasswordLabel1=è¿™ä¸ªå®‰è£…ç¨‹åºæœ‰å¯†ç ä¿æŠ¤ã€‚
+PasswordLabel3=请输入密ç ,然åŽå•击“下一æ¥â€ç»§ç»ã€‚密ç 区分大å°å†™ã€‚
+PasswordEditLabel=密ç (&P):
+IncorrectPassword=您输入的密ç 䏿£ç¡®ï¼Œè¯·é‡è¯•。
+
+; *** “许å¯åè®®â€å‘导页
+WizardLicense=许å¯åè®®
+LicenseLabel=ç»§ç»å®‰è£…å‰è¯·é˜…读下列é‡è¦ä¿¡æ¯ã€‚
+LicenseLabel3=请仔细阅读下列许å¯å议。您在继ç»å®‰è£…å‰å¿…é¡»åŒæ„这些åè®®æ¡æ¬¾ã€‚
+LicenseAccepted=æˆ‘åŒæ„æ¤åè®®(&A)
+LicenseNotAccepted=我ä¸åŒæ„æ¤åè®®(&D)
+
+; *** “信æ¯â€å‘导页
+WizardInfoBefore=ä¿¡æ¯
+InfoBeforeLabel=请在继ç»å®‰è£…å‰é˜…读下列é‡è¦ä¿¡æ¯ã€‚
+InfoBeforeClickLabel=如果您想继ç»å®‰è£…,å•击“下一æ¥â€ã€‚
+WizardInfoAfter=ä¿¡æ¯
+InfoAfterLabel=请在继ç»å®‰è£…å‰é˜…读下列é‡è¦ä¿¡æ¯ã€‚
+InfoAfterClickLabel=如果您想继ç»å®‰è£…,å•击“下一æ¥â€ã€‚
+
+; *** “用户信æ¯â€å‘导页
+WizardUserInfo=用户信æ¯
+UserInfoDesc=请输入您的信æ¯ã€‚
+UserInfoName=用户å(&U):
+UserInfoOrg=组织(&O):
+UserInfoSerial=åºåˆ—å·(&S):
+UserInfoNameRequired=您必须输入åå—。
+
+; *** â€œé€‰æ‹©ç›®æ ‡ç›®å½•â€å‘导é¢
+WizardSelectDir=é€‰æ‹©ç›®æ ‡ä½ç½®
+SelectDirDesc=您想将 [name] 安装在什么地方?
+SelectDirLabel3=安装程åºå°†å®‰è£… [name] 到下列文件夹ä¸ã€‚
+SelectDirBrowseLabel=å•击“下一æ¥â€ç»§ç»ã€‚如果您想选择其它文件夹,å•击“æµè§ˆâ€ã€‚
+DiskSpaceGBLabel=è‡³å°‘éœ€è¦æœ‰ [gb] GB çš„å¯ç”¨ç£ç›˜ç©ºé—´ã€‚
+DiskSpaceMBLabel=è‡³å°‘éœ€è¦æœ‰ [mb] MB çš„å¯ç”¨ç£ç›˜ç©ºé—´ã€‚
+CannotInstallToNetworkDrive=å®‰è£…ç¨‹åºæ— 法安装到一个网络驱动器。
+CannotInstallToUNCPath=å®‰è£…ç¨‹åºæ— 法安装到一个UNC路径。
+InvalidPath=æ‚¨å¿…é¡»è¾“å…¥ä¸€ä¸ªå¸¦é©±åŠ¨å™¨å·æ ‡çš„完整路径,例如:%n%nC:\APP%n%n或下列形å¼çš„ UNC 路径:%n%n\\server\share
+InvalidDrive=您选定的驱动器或 UNC 共享ä¸å˜åœ¨æˆ–ä¸èƒ½è®¿é—®ã€‚请选选择其它ä½ç½®ã€‚
+DiskSpaceWarningTitle=没有足够的ç£ç›˜ç©ºé—´
+DiskSpaceWarning=安装程åºè‡³å°‘éœ€è¦ %1 KB çš„å¯ç”¨ç©ºé—´æ‰èƒ½å®‰è£…ï¼Œä½†é€‰å®šé©±åŠ¨å™¨åªæœ‰ %2 KB çš„å¯ç”¨ç©ºé—´ã€‚%n%n您一定è¦ç»§ç»å—?
+DirNameTooLong=æ–‡ä»¶å¤¹åæˆ–路径太长。
+InvalidDirName=æ–‡ä»¶å¤¹åæ˜¯æ— 效的。
+BadDirName32=文件夹åä¸èƒ½åŒ…å«ä¸‹åˆ—任何å—符:%n%n%1
+DirExistsTitle=文件夹å˜åœ¨
+DirExists=文件夹:%n%n%1%n%nå·²ç»å˜åœ¨ã€‚您一定è¦å®‰è£…到这个文件夹ä¸å—?
+DirDoesntExistTitle=文件夹ä¸å˜åœ¨
+DirDoesntExist=文件夹:%n%n%1%n%nä¸å˜åœ¨ã€‚您想è¦åˆ›å»ºæ¤ç›®å½•å—?
+
+; *** “选择组件â€å‘导页
+WizardSelectComponents=选择组件
+SelectComponentsDesc=您想安装哪些程åºçš„组件?
+SelectComponentsLabel2=选择您想è¦å®‰è£…çš„ç»„ä»¶ï¼›æ¸…é™¤æ‚¨ä¸æƒ³å®‰è£…的组件。然åŽå•击“下一æ¥â€ç»§ç»ã€‚
+FullInstallation=完全安装
; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
-CompactInstallation=¼ò½à°²×°
-CustomInstallation=×Ô¶¨Òå°²×°
-NoUninstallWarningTitle=×é¼þ´æÔÚ
-NoUninstallWarning=°²×°³ÌÐò¼ì²âµ½¼ÆËã»úÉÏÒѰ²×°ÒÔÏÂ×é¼þ:%n%n%1%n%nÈ¡ÏûÑ¡ÔñÕâЩ×é¼þ½«²»»áÐ¶ÔØËüÃÇ¡£%n%nÊÇ·ñÈÔÒª¼ÌÐø?
+CompactInstallation=简æ´å®‰è£…
+CustomInstallation=自定义安装
+NoUninstallWarningTitle=组件å˜åœ¨
+NoUninstallWarning=安装程åºä¾¦æµ‹åˆ°ä¸‹åˆ—组件已在您的电脑ä¸å®‰è£…。:%n%n%1%n%nå–æ¶ˆé€‰å®šè¿™äº›ç»„ä»¶å°†ä¸èƒ½å¸è½½å®ƒä»¬ã€‚%n%n您一定è¦ç»§ç»å—?
ComponentSize1=%1 KB
ComponentSize2=%1 MB
-ComponentsDiskSpaceMBLabel=µ±Ç°Ñ¡ÔñÐèÒªÖÁÉÙ [mb] MB ´ÅÅ̿ռ䡣
-; *** "Select Additional Tasks" wizard page
-WizardSelectTasks=Ñ¡ÔñÆäËûÈÎÎñ
-SelectTasksDesc=Ó¦Ö´ÐÐÄÄЩÆäËûÈÎÎñ?
-SelectTasksLabel2=Ñ¡Ôñ°²×° [name] ʱϣÍû°²×°³ÌÐòÀ´Ö´ÐÐµÄÆäËûÈÎÎñ£¬È»ºóµ¥»÷¡°ÏÂÒ»²½¡±¡£
-; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=Ñ¡Ôñ¿ªÊ¼²Ëµ¥Îļþ¼Ð
-SelectStartMenuFolderDesc=°²×°³ÌÐòÓ¦½«³ÌÐòµÄ¿ì½Ý·½Ê½·ÅÖõ½ÄÄÀï?
-SelectStartMenuFolderLabel3=°²×°³ÌÐò½«ÔÚÒÔÏ¿ªÊ¼²Ëµ¥Îļþ¼ÐÖд´½¨¸Ã³ÌÐòµÄ¿ì½Ý·½Ê½¡£
-SelectStartMenuFolderBrowseLabel=ÈôÒª¼ÌÐø£¬µ¥»÷¡°ÏÂÒ»²½¡±¡£Èç¹ûÏëÑ¡ÔñÆäËûÎļþ¼Ð£¬µ¥»÷¡°ä¯ÀÀ¡±¡£
-MustEnterGroupName=±ØÐëÊäÈëÎļþ¼ÐÃû¡£
-GroupNameTooLong=Îļþ¼ÐÃû³Æ»ò·¾¶Ì«³¤¡£
-InvalidGroupName=Îļþ¼ÐÃû³ÆÎÞЧ¡£
-BadGroupName=Îļþ¼ÐÃû²»Äܱ£»¤ÒÔÏÂÈÎÒ»×Ö·û:%n%n%1
-NoProgramGroupCheck2=²»´´½¨¿ªÊ¼²Ëµ¥Îļþ¼Ð(&D)
-; *** "Ready to Install" wizard page
-WizardReady=°²×°×¼±¸¾ÍÐ÷
-ReadyLabel1=°²×°³ÌÐòÏÖÒÑ×¼±¸ºÃÔÚ¼ÆËã»úÉϰ²×° [name]¡£
-ReadyLabel2a=µ¥»÷¡°°²×°¡±ÒÔ¼ÌÐø°²×°£¬ÈçÏë²é¿´»ò¸ü¸ÄÈκÎÉèÖÃÔòµ¥»÷"·µ»Ø"¡£
-ReadyLabel2b=µ¥»÷¡°°²×°¡±ÒÔ¼ÌÐø°²×°¡£
-ReadyMemoUserInfo=Óû§ÐÅÏ¢:
-ReadyMemoDir=Ä¿±êλÖÃ:
-ReadyMemoType=°²×°³ÌÐòÀàÐÍ:
-ReadyMemoComponents=ËùÑ¡×é¼þ:
-ReadyMemoGroup=¿ªÊ¼²Ëµ¥Îļþ¼Ð:
-ReadyMemoTasks=ÆäËûÈÎÎñ:
-; *** "Preparing to Install" wizard page
-WizardPreparing=ÕýÔÚ×¼±¸°²×°
-PreparingDesc=°²×°³ÌÐòÕý×¼±¸ÔÚ¼ÆËã»úÉϰ²×° [name]¡£
-PreviousInstallNotCompleted=ÉÏÒ»¸ö³ÌÐòµÄ°²×°/ɾ³ýδÍê³É¡£ÐèÖØÆô¼ÆËã»úÒÔÍê³É¸Ã°²×°¡£%n%nÖØÆô¼ÆËã»úºó£¬ÖØÐÂÔËÐа²×°³ÌÐòÒÔÍê³É [name] µÄ°²×°¡£
-CannotContinue=°²×°³ÌÐòÎÞ·¨¼ÌÐø¡£Çëµ¥»÷"È¡Ïû"ÒÔÍ˳ö¡£
-ApplicationsFound=ÒÔÏÂÓ¦ÓóÌÐòÕýÔÚʹÓÃÐèҪͨ¹ý°²×°³ÌÐò½øÐиüеÄÎļþ¡£½¨ÒéÔÊÐí°²×°³ÌÐò×Ô¶¯¹Ø±ÕÕâЩӦÓóÌÐò¡£
-ApplicationsFound2=ÒÔÏÂÓ¦ÓóÌÐòÕýÔÚʹÓÃÐèҪͨ¹ý°²×°³ÌÐò½øÐиüеÄÎļþ¡£½¨ÒéÔÊÐí°²×°³ÌÐò×Ô¶¯¹Ø±ÕÕâЩӦÓóÌÐò¡£Íê³É°²×°ºó£¬°²×°³ÌÐò½«³¢ÊÔÖØÆôÓ¦ÓóÌÐò¡£
-CloseApplications=×Ô¶¯¹Ø±ÕÓ¦ÓóÌÐò(&A)
-DontCloseApplications=²»¹Ø±ÕÓ¦ÓóÌÐò(&D)
-ErrorCloseApplications=°²×°³ÌÐòÎÞ·¨×Ô¶¯¹Ø±ÕËùÓÐÓ¦ÓóÌÐò¡£½¨ÒéÔÚ¼ÌÐø²Ù×÷֮ǰÏȹرÕËùÓÐʹÓÃÐèͨ¹ý°²×°³ÌÐò½øÐиüеÄÎļþµÄÓ¦ÓóÌÐò¡£
-; *** "Installing" wizard page
-WizardInstalling=ÕýÔÚ°²×°
-InstallingLabel=°²×°³ÌÐòÕýÔÚ¼ÆËã»úÉϰ²×° [name]£¬ÇëÉԵȡ£
-; *** "Setup Completed" wizard page
-FinishedHeadingLabel=Íê³É [name] °²×°Ïòµ¼
-FinishedLabelNoIcons=°²×°³ÌÐòÒÑÔÚ¼ÆËã»úÉÏÍê³É°²×° [name]¡£
-FinishedLabel=°²×°³ÌÐòÒÑÔÚ¼ÆËã»úÉÏÍê³É°²×° [name]¡£Í¨¹ýÑ¡Ôñ°²×°µÄ¿ì½Ý·½Ê½¿ÉÒÔÆô¶¯¸ÃÓ¦ÓóÌÐò¡£
-ClickFinish=µ¥»÷¡°Íê³É¡±ÒÔÍ˳ö°²×°³ÌÐò¡£
-FinishedRestartLabel=ÒªÍê³É [name] µÄ°²×°£¬°²×°³ÌÐò±ØÐëÖØÆô¼ÆËã»ú¡£ÊÇ·ñÒªÁ¢¼´ÖØÆô?
-FinishedRestartMessage=ÒªÍê³É [name] µÄ°²×°£¬°²×°³ÌÐò±ØÐëÖØÆô¼ÆËã»ú¡£%n%nÊÇ·ñÒªÁ¢¼´ÖØÆô?
-ShowReadmeCheck=ÊÇ£¬ÎÒÏ£Íû²é¿´ README Îļþ
-YesRadio=ÊÇ£¬Á¢¼´ÖØÆô¼ÆËã»ú(&Y)
-NoRadio=·ñ£¬ÎÒ½«ÉÔºóÖØÆô¼ÆËã»ú(&N)
-; used for example as 'Run MyProg.exe'
-RunEntryExec=ÔËÐÐ %1
-; used for example as 'View Readme.txt'
-RunEntryShellExec=²é¿´ %1
-; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle=°²×°³ÌÐòÐèÒªÏÂÒ»¸ö´ÅÅÌ
-SelectDiskLabel2=Çë²åÈë´ÅÅÌ %1 ²¢µã»÷¡°È·¶¨¡±¡£%n%nÈç¹û´Ë´ÅÅÌÉϵÄÎļþ¿ÉÔÚÒÔÏÂÎļþ¼ÐÍâµÄÆäËûÎļþ¼ÐÖÐÕÒµ½£¬ÇëÊäÈëÕýȷ·¾¶»òµ¥»÷¡°ä¯ÀÀ¡±¡£
-PathLabel=·¾¶(&P):
-FileNotInDir2=ÔÚ¡°%2¡±ÖÐÎÞ·¨¶¨Î»Îļþ¡°%1¡±¡£Çë²åÈëÕýÈ·µÄ´ÅÅÌ»òÑ¡ÔñÆäËûÎļþ¼Ð¡£
-SelectDirectoryLabel=ÇëÖ¸¶¨ÏÂÒ»¸ö´ÅÅ̵ÄλÖá£
-; *** Installation phase messages
-SetupAborted=°²×°³ÌÐòδÍê³É¡£%n%nÇë¸üÕýÎÊÌâ²¢ÖØÐÂÔËÐа²×°³ÌÐò¡£
-EntryAbortRetryIgnore=µ¥»÷¡°ÖØÊÔ¡±ÒÔÔٴγ¢ÊÔ£¬µ¥»÷¡°ºöÂÔ¡±ÒÔ¼ÌÐø£¬»òµ¥»÷¡°ÖÐÖ¹¡±ÒÔÈ¡Ïû°²×°¡£
-; *** Installation status messages
-StatusClosingApplications=ÕýÔڹرÕÓ¦ÓóÌÐò...
-StatusCreateDirs=ÕýÔÚ´´½¨Ä¿Â¼...
-StatusExtractFiles=ÕýÔÚ½âѹËõÎļþ...
-StatusCreateIcons=ÕýÔÚ´´½¨¿ì½Ý·½Ê½...
-StatusCreateIniEntries=ÕýÔÚ´´½¨ INI Ïî...
-StatusCreateRegistryEntries=ÕýÔÚ´´½¨×¢²á±íÏî...
-StatusRegisterFiles=ÕýÔÚ×¢²áÎļþ...
-StatusSavingUninstall=ÕýÔÚ±£´æÐ¶ÔØÐÅÏ¢...
-StatusRunProgram=ÕýÔÚÍê³É°²×°...
-StatusRestartingApplications=ÕýÔÚÖØÆôÓ¦ÓóÌÐò...
-StatusRollback=ÕýÔÚ»ØÍ˸ü¸Ä...
-; *** Misc. errors
-ErrorInternal2=ÄÚ²¿´íÎó: %1
-ErrorFunctionFailedNoCode=%1 ʧ°Ü
-ErrorFunctionFailed=%1 ʧ°Ü£»´úÂë %2
-ErrorFunctionFailedWithMessage=%1 ʧ°Ü£»´úÂë %2¡£%n%3
-ErrorExecutingProgram=ÎÞ·¨Ö´ÐÐÎļþ:%n%1
-; *** Registry errors
-ErrorRegOpenKey=´ò¿ª×¢²á±íÏîʱ³ö´í:%n%1\%2
-ErrorRegCreateKey=´´½¨×¢²á±íÏîʱ³ö´í:%n%1\%2
-ErrorRegWriteKey=дÈë×¢²á±íÏîʱ³ö´í:%n%1\%2
-; *** INI errors
-ErrorIniEntry=ÔÚÎļþ¡°%1¡±Öд´½¨ INI Ïîʱ³ö´í¡£
-; *** File copying errors
-FileAbortRetryIgnore=µ¥»÷¡°ÖØÊÔ¡±ÒÔÔٴβÙ×÷£¬µ¥»÷¡°ºöÂÔ¡±ÒÔÌø¹ý´ËÎļþ(²»½¨Òé´Ë²Ù×÷)£¬»òµ¥»÷¡°ÖÐÖ¹¡±ÒÔÈ¡Ïû°²×°¡£
-FileAbortRetryIgnore2=µ¥»÷¡°ÖØÊÔ¡±ÒÔÔٴβÙ×÷£¬µ¥»÷¡°ºöÂÔ¡±ÒÔ¼ÌÐø(²»½¨Òé´Ë²Ù×÷)£¬»òµ¥»÷¡°ÖÐÖ¹¡±ÒÔÈ¡Ïû°²×°¡£
-SourceIsCorrupted=Ô´ÎļþÒÑËð»µ
-SourceDoesntExist=Ô´Îļþ¡°%1¡±²»´æÔÚ
-ExistingFileReadOnly=ÏÖÓÐÎļþ±»±ê¼ÇΪֻ¶Á״̬¡£%n%nµ¥»÷¡°ÖØÊÔ¡±ÒÔɾ³ýÖ»¶ÁÌØÐÔ²¢ÖØÊÔ£¬µ¥»÷¡°ºöÂÔ¡±ÒÔÌø¹ý´ËÎļþ£¬»òµ¥»÷¡°ÖÐÖ¹¡±ÒÔÈ¡Ïû°²×°¡£
-ErrorReadingExistingDest=³¢ÊÔ¶ÁÈ¡ÏÖÓÐÎļþʱ³ö´í:
-FileExists=¸ÃÎļþÒÑ´æÔÚ¡£%n%nÊÇ·ñÒª°²×°³ÌÐò¸²¸ÇËü?
-ExistingFileNewer=ÏÖÓÐÎļþ±È°²×°³ÌÐòÕý³¢ÊÔ°²×°µÄÎļþ¸üС£½¨Òé±£ÁôÏÖÓÐÎļþ¡£%n%nÊÇ·ñÒª±£ÁôÏÖÓÐÎļþ?
-ErrorChangingAttr=³¢ÊÔ¸ü¸ÄÏÖÓÐÎļþÌØÐÔ³ö´í:
-ErrorCreatingTemp=³¢ÊÔÔÚÄ¿±êĿ¼´´½¨Îļþʱ³ö´í:
-ErrorReadingSource=³¢ÊÔ¶ÁȡԴÎļþʱ³ö´í:
-ErrorCopying=³¢ÊÔ¸´ÖÆÎļþʱ³ö´í:
-ErrorReplacingExistingFile=³¢ÊÔÌæ»»ÏÖÓÐÎļþʱ³ö´í:
-ErrorRestartReplace=RestartReplace ʧ°Ü:
-ErrorRenamingTemp=³¢ÊÔÔÚÄ¿±êÄ¿Â¼ÖØÃüÃûÎļþʱ³ö´í:
-ErrorRegisterServer=ÎÞ·¨×¢²á DLL/OCX: %1
-ErrorRegSvr32Failed=RegSvr32 ʧ°Ü£¬Í˳ö´úÂëΪ %1
-ErrorRegisterTypeLib=ÎÞ·¨×¢²áÀàÐÍ¿â: %1
-; *** Post-installation errors
-ErrorOpeningReadme=³¢ÊÔ´ò¿ª README Îļþʱ³ö´í¡£
-ErrorRestartingComputer=°²×°³ÌÐòÎÞ·¨ÖØÆô¼ÆËã»ú¡£ÇëÊÖ¶¯Ö´Ðд˲Ù×÷¡£
-; *** Uninstaller messages
-UninstallNotFound=Îļþ¡°%1¡±²»´æÔÚ¡£ÎÞ·¨°²×°¡£
-UninstallOpenError=ÎÞ·¨´ò¿ªÎļþ¡°%1¡±¡£ÎÞ·¨Ð¶ÔØ
-UninstallUnsupportedVer=Ð¶ÔØÈÕÖ¾¡°%1¡±µÄ¸ñʽÎÞ·¨±»´Ë°æ±¾µÄÐ¶ÔØ³ÌÐòʶ±ð¡£ÎÞ·¨Ð¶ÔØ
-UninstallUnknownEntry=Ð¶ÔØÈÕÖ¾Öз¢ÏÖδ֪ÌõÄ¿(%1)
-ConfirmUninstall=È·¶¨Òª³¹µ×ɾ³ý %1 ºÍ¼°ÆäÈ«²¿×é¼þ?
-UninstallOnlyOnWin64=½ö¿ÉÔÚ 64 λ Windows ÉÏÐ¶ÔØ´Ë°²×°¡£
-OnlyAdminCanUninstall=½ö¾ßÓйÜÀíȨÏÞµÄÓû§²Å¿ÉÐ¶ÔØ´Ë°²×°¡£
-UninstallStatusLabel=Õý´Ó¼ÆËã»úɾ³ý %1£¬ÇëÉԵȡ£
-UninstalledAll=Òѳɹ¦´Ó¼ÆËã»úÉÏɾ³ý %1¡£
-UninstalledMost=%1 Ð¶ÔØÍê³É¡£%n%nÎÞ·¨É¾³ýÒ»Ð©ÔªËØ¡£¿É½«ÆäÊÖ¶¯É¾³ý¡£
-UninstalledAndNeedsRestart=ÒªÍê³É %1 µÄÐ¶ÔØ£¬±ØÐëÖØÆô¼ÆËã»ú¡£%n%nÊÇ·ñÒªÁ¢¼´ÖØÆô?
-UninstallDataCorrupted=¡°%1¡±ÎļþÒÑË𻵡£ÎÞ·¨Ð¶ÔØ
-; *** Uninstallation phase messages
-ConfirmDeleteSharedFileTitle=ɾ³ý¹²ÏíÎļþ?
-ConfirmDeleteSharedFile2=ϵͳ±íʾÒÔϹ²ÏíÎļþ²»ÔÙ±»ÈκγÌÐòʹÓá£ÊÇ·ñÒªÐ¶ÔØÉ¾³ý´Ë¹²ÏíÎļþ?%n%nÈç¹ûÔÚÓгÌÐòÈÔÔÚʹÓôËÎļþ¶øËü±»É¾³ý£¬Ôò³ÌÐò¿ÉÄܲ»»áÕý³£ÔËÐС£Èç¹û²»È·¶¨£¬ÇëÑ¡Ôñ¡°·ñ¡±¡£½«ÎļþÁôסϵͳÉϲ»»áÔì³ÉÈκÎÎÊÌâ¡£
-SharedFileNameLabel=ÎļþÃû:
-SharedFileLocationLabel=λÖÃ:
-WizardUninstalling=Ð¶ÔØ×´Ì¬
-StatusUninstalling=ÕýÔÚÐ¶ÔØ %1...
+ComponentsDiskSpaceGBLabel=当å‰é€‰æ‹©çš„ç»„ä»¶è‡³å°‘éœ€è¦ [gb] GB çš„ç£ç›˜ç©ºé—´ã€‚
+ComponentsDiskSpaceMBLabel=当å‰é€‰æ‹©çš„ç»„ä»¶è‡³å°‘éœ€è¦ [mb] MB çš„ç£ç›˜ç©ºé—´ã€‚
+
+; *** â€œé€‰æ‹©é™„åŠ ä»»åŠ¡â€å‘导页
+WizardSelectTasks=é€‰æ‹©é™„åŠ ä»»åŠ¡
+SelectTasksDesc=您想è¦å®‰è£…ç¨‹åºæ‰§è¡Œå“ªäº›é™„åŠ ä»»åŠ¡ï¼Ÿ
+SelectTasksLabel2=选择您想è¦å®‰è£…程åºåœ¨å®‰è£… [name] æ—¶æ‰§è¡Œçš„é™„åŠ ä»»åŠ¡ï¼Œç„¶åŽå•击“下一æ¥â€ã€‚
+
+; *** “选择开始èœå•文件夹â€å‘导页
+WizardSelectProgramGroup=选择开始èœå•文件夹
+SelectStartMenuFolderDesc=您想在哪里放置程åºçš„å¿«æ·æ–¹å¼ï¼Ÿ
+SelectStartMenuFolderLabel3=安装程åºçŽ°åœ¨å°†åœ¨ä¸‹åˆ—å¼€å§‹èœå•文件夹ä¸åˆ›å»ºç¨‹åºçš„å¿«æ·æ–¹å¼ã€‚
+SelectStartMenuFolderBrowseLabel=å•击“下一æ¥â€ç»§ç»ã€‚如果您想选择其它文件夹,å•击“æµè§ˆâ€ã€‚
+MustEnterGroupName=您必须输入一个文件夹å。
+GroupNameTooLong=æ–‡ä»¶å¤¹åæˆ–路径太长。
+InvalidGroupName=æ–‡ä»¶å¤¹åæ˜¯æ— 效的。
+BadGroupName=文件夹åä¸èƒ½åŒ…å«ä¸‹åˆ—任何å—符:%n%n%1
+NoProgramGroupCheck2=ä¸åˆ›å»ºå¼€å§‹èœå•文件夹(&D)
+
+; *** “准备安装â€å‘导页
+WizardReady=准备安装
+ReadyLabel1=安装程åºçŽ°åœ¨å‡†å¤‡å¼€å§‹å®‰è£… [name] 到您的电脑ä¸ã€‚
+ReadyLabel2a=å•击“安装â€ç»§ç»æ¤å®‰è£…程åºã€‚如果您想è¦å›žé¡¾æˆ–改å˜è®¾ç½®ï¼Œè¯·å•击“上一æ¥â€ã€‚
+ReadyLabel2b=å•击“安装â€ç»§ç»æ¤å®‰è£…程åº?
+ReadyMemoUserInfo=用户信æ¯:
+ReadyMemoDir=ç›®æ ‡ä½ç½®:
+ReadyMemoType=安装类型:
+ReadyMemoComponents=选定组件:
+ReadyMemoGroup=开始èœå•文件夹:
+ReadyMemoTasks=é™„åŠ ä»»åŠ¡:
+
+; *** “æ£åœ¨å‡†å¤‡å®‰è£…â€å‘导页
+WizardPreparing=æ£åœ¨å‡†å¤‡å®‰è£…
+PreparingDesc=å®‰è£…ç¨‹åºæ£åœ¨å‡†å¤‡å®‰è£… [name] 到您的电脑ä¸ã€‚
+PreviousInstallNotCompleted=å…ˆå‰ç¨‹åºçš„安装/å¸è½½æœªå®Œæˆã€‚您需è¦é‡æ–°å¯åŠ¨æ‚¨çš„ç”µè„‘æ‰èƒ½å®Œæˆå®‰è£…。%n%nåœ¨é‡æ–°å¯åŠ¨ç”µè„‘åŽï¼Œå†è¿è¡Œå®‰è£…å®Œæˆ [name] 的安装。
+CannotContinue=安装程åºä¸èƒ½ç»§ç»ã€‚请å•å‡»â€œå–æ¶ˆâ€é€€å‡ºã€‚
+ApplicationsFound=ä¸‹åˆ—åº”ç”¨ç¨‹åºæ£åœ¨ä½¿ç”¨çš„æ–‡ä»¶éœ€è¦æ›´æ–°è®¾ç½®ã€‚它是建议您å…许安装程åºè‡ªåЍ关é—这些应用程åºã€‚
+ApplicationsFound2=ä¸‹åˆ—åº”ç”¨ç¨‹åºæ£åœ¨ä½¿ç”¨çš„æ–‡ä»¶éœ€è¦æ›´æ–°è®¾ç½®ã€‚它是建议您å…许安装程åºè‡ªåЍ关é—这些应用程åºã€‚安装完æˆåŽï¼Œå®‰è£…程åºå°†å°è¯•釿–°å¯åŠ¨åº”ç”¨ç¨‹åºã€‚
+CloseApplications=自动关é—该应用程åº(&A)
+DontCloseApplications=ä¸è¦å…³é—该应用程åº(D)
+ErrorCloseApplications=å®‰è£…ç¨‹åºæ— æ³•è‡ªåŠ¨å…³é—æ‰€æœ‰åº”用程åºã€‚在继ç»ä¹‹å‰ï¼Œæˆ‘ä»¬å»ºè®®æ‚¨å…³é—æ‰€æœ‰ä½¿ç”¨éœ€è¦æ›´æ–°çš„å®‰è£…ç¨‹åºæ–‡ä»¶ã€‚
+PrepareToInstallNeedsRestart=安装程åºå¿…须釿–°å¯åŠ¨è®¡ç®—æœºã€‚é‡æ–°å¯åŠ¨è®¡ç®—æœºåŽï¼Œè¯·å†æ¬¡è¿è¡Œå®‰è£…程åºä»¥å®Œæˆ [name] 的安装。%n%n是å¦ç«‹å³é‡æ–°å¯åŠ¨ï¼Ÿ
+
+; *** “æ£åœ¨å®‰è£…â€å‘导页
+WizardInstalling=æ£åœ¨å®‰è£…
+InstallingLabel=å®‰è£…ç¨‹åºæ£åœ¨å®‰è£… [name] 到您的电脑ä¸ï¼Œè¯·ç¨ç‰ã€‚
+
+; *** “安装完æˆâ€å‘导页
+FinishedHeadingLabel=[name] 安装完æˆ
+FinishedLabelNoIcons=安装程åºå·²åœ¨æ‚¨çš„电脑ä¸å®‰è£…了 [name]。
+FinishedLabel=安装程åºå·²åœ¨æ‚¨çš„电脑ä¸å®‰è£…了 [name]。æ¤åº”用程åºå¯ä»¥é€šè¿‡é€‰æ‹©å®‰è£…çš„å¿«æ·æ–¹å¼è¿è¡Œã€‚
+ClickFinish=å•击“完æˆâ€é€€å‡ºå®‰è£…程åºã€‚
+FinishedRestartLabel=è¦å®Œæˆ [name] 的安装,安装程åºå¿…须釿–°å¯åŠ¨æ‚¨çš„ç”µè„‘ã€‚æ‚¨æƒ³çŽ°åœ¨é‡æ–°å¯åЍå—?
+FinishedRestartMessage=è¦å®Œæˆ [name] 的安装,安装程åºå¿…须釿–°å¯åŠ¨æ‚¨çš„ç”µè„‘ã€‚%n%næ‚¨æƒ³çŽ°åœ¨é‡æ–°å¯åЍå—?
+ShowReadmeCheck=是,您想查阅自述文件
+YesRadio=是,立å³é‡æ–°å¯åŠ¨ç”µè„‘(&Y)
+NoRadio=å¦ï¼Œç¨åŽé‡æ–°å¯åŠ¨ç”µè„‘(&N)
+; 用于象“è¿è¡Œ MyProg.exeâ€
+RunEntryExec=è¿è¡Œ %1
+; 用于象“查阅 Readme.txtâ€
+RunEntryShellExec=查阅 %1
+
+; *** “安装程åºéœ€è¦ä¸‹ä¸€å¼ ç£ç›˜â€æç¤º
+ChangeDiskTitle=安装程åºéœ€è¦ä¸‹ä¸€å¼ ç£ç›˜
+SelectDiskLabel2=请æ’å…¥ç£ç›˜ %1 å¹¶å•击“确定â€ã€‚%n%n如果这个ç£ç›˜ä¸çš„æ–‡ä»¶ä¸èƒ½åœ¨ä¸åŒäºŽä¸‹åˆ—æ˜¾ç¤ºçš„æ–‡ä»¶å¤¹ä¸æ‰¾åˆ°ï¼Œè¾“å…¥æ£ç¡®çš„路径或å•击“æµè§ˆâ€ã€‚
+PathLabel=路径(&P):
+FileNotInDir2=文件“%1â€ä¸èƒ½åœ¨â€œ%2â€å®šä½ã€‚请æ’å…¥æ£ç¡®çš„ç£ç›˜æˆ–选择其它文件夹。
+SelectDirectoryLabel=è¯·æŒ‡å®šä¸‹ä¸€å¼ ç£ç›˜çš„ä½ç½®ã€‚
+
+; *** å®‰è£…çŠ¶æ€æ¶ˆæ¯
+SetupAborted=å®‰è£…ç¨‹åºæœªå®Œæˆå®‰è£…。%n%n请修æ£è¿™ä¸ªé—®é¢˜å¹¶é‡æ–°è¿è¡Œå®‰è£…程åºã€‚
+AbortRetryIgnoreSelectAction=选项
+AbortRetryIgnoreRetry=é‡è¯•(&T)
+AbortRetryIgnoreIgnore=忽略错误并继ç»(&I)
+AbortRetryIgnoreCancel=å…³é—安装程åº
+
+; *** å®‰è£…çŠ¶æ€æ¶ˆæ¯
+StatusClosingApplications=æ£åœ¨å…³é—应用程åº...
+StatusCreateDirs=æ£åœ¨åˆ›å»ºç›®å½•...
+StatusExtractFiles=æ£åœ¨è§£åŽ‹ç¼©æ–‡ä»¶...
+StatusCreateIcons=æ£åœ¨åˆ›å»ºå¿«æ·æ–¹å¼...
+StatusCreateIniEntries=æ£åœ¨åˆ›å»º INI æ¡ç›®...
+StatusCreateRegistryEntries=æ£åœ¨åˆ›å»ºæ³¨å†Œè¡¨æ¡ç›®...
+StatusRegisterFiles=æ£åœ¨æ³¨å†Œæ–‡ä»¶...
+StatusSavingUninstall=æ£åœ¨ä¿å˜å¸è½½ä¿¡æ¯...
+StatusRunProgram=æ£åœ¨å®Œæˆå®‰è£…...
+StatusRestartingApplications=æ£åœ¨é‡å¯åº”用程åº...
+StatusRollback=æ£åœ¨æ’¤é”€æ›´æ”¹...
+
+; *** 其它错误
+ErrorInternal2=内部错误: %1
+ErrorFunctionFailedNoCode=%1 失败
+ErrorFunctionFailed=%1 失败;错误代ç %2
+ErrorFunctionFailedWithMessage=%1 失败;错误代ç %2.%n%3
+ErrorExecutingProgram=ä¸èƒ½æ‰§è¡Œæ–‡ä»¶:%n%1
+
+; *** 注册表错误
+ErrorRegOpenKey=打开注册表项时出错:%n%1\%2
+ErrorRegCreateKey=创建注册表项时出错:%n%1\%2
+ErrorRegWriteKey=写入注册表项时出错:%n%1\%2
+
+; *** INI 错误
+ErrorIniEntry=在文件“%1â€åˆ›å»º INI 项目错误。
+
+; *** 文件å¤åˆ¶é”™è¯¯
+FileAbortRetryIgnoreSkipNotRecommended=跳过这个文件 (䏿ލè)(&S)
+FileAbortRetryIgnoreIgnoreNotRecommended=å¿½ç•¥é”™è¯¯å¹¶ç»§ç» (䏿ލè)(&I)
+SourceIsCorrupted=æºæ–‡ä»¶å·²æŸå
+SourceDoesntExist=æºæ–‡ä»¶â€œ%1â€ä¸å˜åœ¨
+ExistingFileReadOnly2=æ— æ³•æ›¿æ¢çŽ°æœ‰æ–‡ä»¶ï¼Œå› ä¸ºå®ƒæ˜¯åªè¯»çš„。
+ExistingFileReadOnlyRetry=移除åªè¯»å±žæ€§å¹¶é‡è¯•(&R)
+ExistingFileReadOnlyKeepExisting=ä¿ç•™çŽ°æœ‰æ–‡ä»¶(&K)
+ErrorReadingExistingDest=å°è¯•读å–现有文件时å‘生一个错误:
+FileExists=文件已ç»å˜åœ¨ã€‚%n%n您想è¦å®‰è£…程åºè¦†ç›–它å—?
+ExistingFileNewer=现有的文件新与安装程åºè¦å®‰è£…çš„æ–‡ä»¶ã€‚æŽ¨èæ‚¨ä¿ç•™çŽ°æœ‰æ–‡ä»¶ã€‚%n%n您想è¦ä¿ç•™çŽ°æœ‰çš„æ–‡ä»¶å—?
+ErrorChangingAttr=å°è¯•改å˜ä¸‹åˆ—现有的文件的属性时å‘生一个错误:
+ErrorCreatingTemp=å°è¯•åœ¨ç›®æ ‡ç›®å½•åˆ›å»ºæ–‡ä»¶æ—¶å‘生一个错误:
+ErrorReadingSource=å°è¯•读å–ä¸‹åˆ—æºæ–‡ä»¶æ—¶å‘生一个错误:
+ErrorCopying=å°è¯•å¤åˆ¶ä¸‹åˆ—文件时å‘生一个错误:
+ErrorReplacingExistingFile=å°è¯•替æ¢çŽ°æœ‰çš„æ–‡ä»¶æ—¶å‘生错误:
+ErrorRestartReplace=é‡å¯ç”µè„‘åŽæ›¿æ¢æ–‡ä»¶å¤±è´¥:
+ErrorRenamingTemp=å°è¯•釿–°å‘½åä»¥ä¸‹ç›®æ ‡ç›®å½•ä¸çš„一个文件时å‘生错误:
+ErrorRegisterServer=ä¸èƒ½æ³¨å†Œ DLL/OCX: %1
+ErrorRegSvr32Failed=RegSvr32 失败;退出代ç %1
+ErrorRegisterTypeLib=ä¸èƒ½æ³¨å†Œç±»åž‹åº“: %1
+
+; *** å¸è½½æ˜¾ç¤ºåå—æ ‡è®°
+; used for example as 'My Program (32-bit)'
+UninstallDisplayNameMark=%1 (%2)
+; used for example as 'My Program (32-bit, All users)'
+UninstallDisplayNameMarks=%1 (%2, %3)
+UninstallDisplayNameMark32Bit=32ä½
+UninstallDisplayNameMark64Bit=64ä½
+UninstallDisplayNameMarkAllUsers=所有用户
+UninstallDisplayNameMarkCurrentUser=当å‰ç”¨æˆ·
+
+; *** 安装åŽé”™è¯¯
+ErrorOpeningReadme=当å°è¯•打开自述文件时å‘生一个错误。
+ErrorRestartingComputer=安装程åºä¸èƒ½é‡æ–°å¯åŠ¨ç”µè„‘ï¼Œè¯·æ‰‹åŠ¨é‡å¯ã€‚
+
+; *** å¸è½½æ¶ˆæ¯
+UninstallNotFound=文件“%1â€ä¸å˜åœ¨ã€‚ä¸èƒ½å¸è½½ã€‚
+UninstallOpenError=文件“%1â€ä¸èƒ½æ‰“开。ä¸èƒ½å¸è½½ã€‚
+UninstallUnsupportedVer=å¸è½½æ—¥å¿—文件“%1â€æœ‰æœªè¢«è¿™ä¸ªç‰ˆæœ¬çš„å¸è½½å™¨æ‰¿è®¤çš„æ ¼å¼ã€‚ä¸èƒ½å¸è½½
+UninstallUnknownEntry=在å¸è½½æ—¥å¿—ä¸é‡åˆ°ä¸€ä¸ªæœªçŸ¥çš„æ¡ç›® (%1)
+ConfirmUninstall=您确认想è¦å®Œå…¨åˆ 除 %1 åŠå®ƒçš„æ‰€æœ‰ç»„ä»¶å—?
+UninstallOnlyOnWin64=这个安装程åºåªèƒ½åœ¨ 64 ä½ Windows ä¸è¿›è¡Œå¸è½½ã€‚
+OnlyAdminCanUninstall=这个安装的程åºåªèƒ½æ˜¯æœ‰ç®¡ç†å‘˜æƒé™çš„用户æ‰èƒ½å¸è½½ã€‚
+UninstallStatusLabel=æ£åœ¨ä»Žæ‚¨çš„电脑ä¸åˆ 除 %1,请ç‰å¾…。
+UninstalledAll=%1 已顺利地从您的电脑ä¸åˆ 除。
+UninstalledMost=%1 å¸è½½å®Œæˆã€‚%n%n有一些内容ä¸èƒ½è¢«åˆ 除。您å¯ä»¥æ‰‹å·¥åˆ 除它们。
+UninstalledAndNeedsRestart=è¦å®Œæˆ %1 çš„å¸è½½ï¼Œæ‚¨çš„ç”µè„‘å¿…é¡»é‡æ–°å¯åŠ¨ã€‚%n%næ‚¨çŽ°åœ¨æƒ³é‡æ–°å¯åŠ¨ç”µè„‘å—?
+UninstallDataCorrupted=“%1â€æ–‡ä»¶è¢«ç ´å,ä¸èƒ½å¸è½½
+
+; *** å¸è½½çŠ¶æ€æ¶ˆæ¯
+ConfirmDeleteSharedFileTitle=åˆ é™¤å…±äº«æ–‡ä»¶å—?
+ConfirmDeleteSharedFile2=系统ä¸åŒ…å«çš„下列共享文件已ç»ä¸è¢«å…¶å®ƒç¨‹åºä½¿ç”¨ã€‚您想è¦å¸è½½ç¨‹åºåˆ 除这些共享文件å—?%n%nå¦‚æžœè¿™äº›æ–‡ä»¶è¢«åˆ é™¤ï¼Œä½†è¿˜æœ‰ç¨‹åºæ£åœ¨ä½¿ç”¨è¿™äº›æ–‡ä»¶ï¼Œè¿™äº›ç¨‹åºå¯èƒ½ä¸èƒ½æ£ç¡®æ‰§è¡Œã€‚如果您ä¸èƒ½ç¡®å®šï¼Œé€‰æ‹©â€œå¦â€ã€‚把这些文件ä¿ç•™åœ¨ç³»ç»Ÿä¸ä»¥å…引起问题。
+SharedFileNameLabel=文件å:
+SharedFileLocationLabel=ä½ç½®:
+WizardUninstalling=å¸è½½çжæ€
+StatusUninstalling=æ£åœ¨å¸è½½ %1...
+
; *** Shutdown block reasons
-ShutdownBlockReasonInstallingApp=ÕýÔÚ°²×° %1¡£
-ShutdownBlockReasonUninstallingApp=ÕýÔÚÐ¶ÔØ %1¡£
+ShutdownBlockReasonInstallingApp=æ£åœ¨å®‰è£… %1.
+ShutdownBlockReasonUninstallingApp=æ£åœ¨å¸è½½ %1.
+
; The custom messages below aren't used by Setup itself, but if you make
; use of them in your scripts, you'll want to translate them.
+
[CustomMessages]
-NameAndVersion=%1 °æ±¾ %2
-AdditionalIcons=ÆäËû¿ì½Ý·½Ê½:
-CreateDesktopIcon=´´½¨×ÀÃæ¿ì½Ý·½Ê½(&D)
-CreateQuickLaunchIcon=´´½¨¿ìËÙÆô¶¯¿ì½Ý·½Ê½(&Q)
-ProgramOnTheWeb=Web É쵀 %1
-UninstallProgram=Ð¶ÔØ %1
-LaunchProgram=Æô¶¯ %1
-AssocFileExtension=½« %1 Óë %2 ÎļþÀ©Õ¹Ãû¹ØÁª(&A)
-AssocingFileExtension=Õý½« %1 Óë %2 ÎļþÀ©Õ¹Ãû¹ØÁª...
-AutoStartProgramGroupDescription=Æô¶¯:
-AutoStartProgram=×Ô¶¯Æô¶¯ %1
-AddonHostProgramNotFound=ÎÞ·¨ÔÚËùÑ¡Îļþ¼ÐÖж¨Î» %1¡£%n%nÊÇ·ñÈÔÒª¼ÌÐø?
\ No newline at end of file
+
+NameAndVersion=%1 版本 %2
+AdditionalIcons=é™„åŠ å¿«æ·æ–¹å¼:
+CreateDesktopIcon=创建桌é¢å¿«æ·æ–¹å¼(&D)
+CreateQuickLaunchIcon=创建快速è¿è¡Œæ å¿«æ·æ–¹å¼(&Q)
+ProgramOnTheWeb=%1 网站
+UninstallProgram=å¸è½½ %1
+LaunchProgram=è¿è¡Œ %1
+AssocFileExtension=å°† %2 文件扩展å与 %1 建立关è”(&A)
+AssocingFileExtension=æ£åœ¨å°† %2 文件扩展å与 %1 建立关è”...
+AutoStartProgramGroupDescription=å¯åŠ¨ç»„:
+AutoStartProgram=自动å¯åЍ %1
+AddonHostProgramNotFound=%1æ— æ³•æ‰¾åˆ°æ‚¨æ‰€é€‰æ‹©çš„æ–‡ä»¶å¤¹ã€‚%n%n您想è¦ç»§ç»å—?
+
diff --git a/build/win32/i18n/Default.zh-tw.isl b/build/win32/i18n/Default.zh-tw.isl
index 4746349e191..fb748761f99 100644
--- a/build/win32/i18n/Default.zh-tw.isl
+++ b/build/win32/i18n/Default.zh-tw.isl
@@ -1,298 +1,359 @@
-; *** Inno Setup version 5.5.3+ Traditional Chinese messages ***
+; *** Inno Setup version 6.0.0+ Chinese Traditional messages ***
;
-; To download user-contributed translations of this file, go to:
-; http://www.jrsoftware.org/files/istrans/
+; Name: John Wu, mr.johnwu@gmail.com
+; Base on 5.5.3+ translations by Samuel Lee, Email: 751555749@qq.com
+; Translation based on network resource
;
-; Note: When translating this text, do not add periods (.) to the end of
-; messages that didn't have them already, because on those messages Inno
-; Setup adds the periods automatically (appending a period would result in
-; two periods being displayed).
+
[LangOptions]
; The following three entries are very important. Be sure to read and
; understand the '[LangOptions] section' topic in the help file.
-LanguageName=Traditional Chinese
+; If Language Name display incorrect, uncomment next line
+LanguageName=<7e41><9ad4><4e2d><6587>
LanguageID=$0404
-LanguageCodePage=950
+LanguageCodepage=950
; If the language you are translating to requires special font faces or
; sizes, uncomment any of the following entries and change them accordingly.
-;DialogFontName=
-;DialogFontSize=8
-;WelcomeFontName=Verdana
-;WelcomeFontSize=12
-;TitleFontName=Arial
-;TitleFontSize=29
-;CopyrightFontName=Arial
-;CopyrightFontSize=8
+DialogFontName=新細明體
+DialogFontSize=9
+TitleFontName=Arial
+TitleFontSize=28
+WelcomeFontName=新細明體
+WelcomeFontSize=12
+CopyrightFontName=新細明體
+CopyrightFontSize=9
+
[Messages]
+
; *** Application titles
-SetupAppTitle=¦w¸Ëµ{¦¡
-SetupWindowTitle=¦w¸Ëµ{¦¡ - %1
-UninstallAppTitle=¸Ñ°£¦w¸Ë
-UninstallAppFullTitle=%1 ¸Ñ°£¦w¸Ë
+SetupAppTitle=安è£ç¨‹å¼
+SetupWindowTitle=%1 安è£ç¨‹å¼
+UninstallAppTitle=解除安è£
+UninstallAppFullTitle=è§£é™¤å®‰è£ %1
+
; *** Misc. common
-InformationTitle=¸ê°T
-ConfirmTitle=½T»{
-ErrorTitle=¿ù»~
+InformationTitle=訊æ¯
+ConfirmTitle=確èª
+ErrorTitle=錯誤
+
; *** SetupLdr messages
-SetupLdrStartupMessage=³o·|¦w¸Ë %1¡CnÄ~Äò¶Ü?
-LdrCannotCreateTemp=µLªk«Ø¥ß¼È¦sÀÉ¡C¦w¸Ë¤w¤¤¤î
-LdrCannotExecTemp=µLªk°õ¦æ¼È¦s¥Ø¿ý¤¤ªºÀɮסC¦w¸Ë¤w¤¤¤î
+SetupLdrStartupMessage=é€™å°‡æœƒå®‰è£ %1。您想è¦ç¹¼çºŒå—Ž?
+LdrCannotCreateTemp=ç„¡æ³•å»ºç«‹æš«å˜æª”案。安è£ç¨‹å¼å°‡æœƒçµæŸã€‚
+LdrCannotExecTemp=ç„¡æ³•åŸ·è¡Œæš«å˜æª”案。安è£ç¨‹å¼å°‡æœƒçµæŸã€‚
+HelpTextNote=
+
; *** Startup error messages
-LastErrorMessage=%1¡C%n%n¿ù»~ %2: %3
-SetupFileMissing=¦w¸Ë¥Ø¿ý¤¤¯Ê¤ÖÀÉ®× %1¡C½Ð×¥¿°ÝÃD¡A©Î«·s¨ú±oµ{¦¡ªº·s½Æ¥»¡C
-SetupFileCorrupt=¦w¸Ëµ{¦¡Àɮפw·l·´¡C½Ð«·s¨ú±o¸Óµ{¦¡ªº½Æ¥»¡C
-SetupFileCorruptOrWrongVer=¦w¸Ëµ{¦¡Àɮפw·l·´¡A©Î¤£¬Û®e©ó»P¦¹ª©ªº¦w¸Ëµ{¦¡¡C½Ð×¥¿°ÝÃD¡A©Î«·s¨ú±oµ{¦¡ªº·s½Æ¥»¡C
-InvalidParameter=¦b©R¥O¦C¤W¶Ç»¼¤FµL®Äªº°Ñ¼Æ:%n%n%1
-SetupAlreadyRunning=¦w¸Ëµ{¦¡¤w¦b°õ¦æ¤¤¡C
-WindowsVersionNotSupported=¦¹µ{¦¡¤£¤ä´©¹q¸£©Ò°õ¦æªº Windows ª©¥»¡C
-WindowsServicePackRequired=¦¹µ{¦¡»Ýn %1 Service Pack %2 ©Î§ó·sª©¥»¡C
-NotOnThisPlatform=¦¹µ{¦¡¤£·|¦b %1 ¤W°õ¦æ¡C
-OnlyOnThisPlatform=¦¹µ{¦¡¥²¶·¦b %1 ¤W°õ¦æ¡C
-OnlyOnTheseArchitectures=¦¹µ{¦¡¥u¥i¦w¸Ë¦b±M¬°¤U¦C³B²z¾¹¬[ºc³]pªº Windows ª©¥»¤W:%n%n%1
-MissingWOW64APIs=±z°õ¦æªº Windows ª©¥»¤£§t¦w¸Ëµ{¦¡°õ¦æ 64 ¦ì¤¸¦w¸Ë©Ò»Ýªº¥\¯à¡CYn×¥¿¦¹°ÝÃD¡A½Ð¦w¸Ë Service Pack %1¡C
-WinVersionTooLowError=¦¹µ{¦¡»Ýn %1 ª© %2 ©Î§ó·sª©¥»¡C
-WinVersionTooHighError=¦¹µ{¦¡µLªk¦w¸Ë¦b %1 ª© %2 ©Î§ó·sª©¥»¤W¡C
-AdminPrivilegesRequired=¦w¸Ë¦¹µ{¦¡®É¡A¥²¶·¥H¨t²ÎºÞ²zû¨¤Àµn¤J¡C
-PowerUserPrivilegesRequired=·í±z¦w¸Ë¦¹µ{¦¡®É¡A¥²¶·¥H¨t²ÎºÞ²zû©Î Power Users ¸s²Õªº¦¨û¨¤Àµn¤J¡C
-SetupAppRunningError=¦w¸Ë®É°»´ú¨ì %1 ¥Ø«e¥¿¦b°õ¦æ¤¤¡C%n%n½Ð¥ß§YÃö³¬¨ä©Ò¦³°õ¦æÓÅé¡CYnÄ~Äò¡A½Ð«ö¤@¤U [½T©w]; Ynµ²§ô¡A½Ð«ö¤@¤U [¨ú®ø]¡C
-UninstallAppRunningError=¸Ñ°£¦w¸Ë®É°»´ú¨ì %1 ¥Ø«e¥¿¦b°õ¦æ¤¤¡C%n%n½Ð¥ß§YÃö³¬¨ä©Ò¦³°õ¦æÓÅé¡CYnÄ~Äò¡A½Ð«ö¤@¤U [½T©w]; Ynµ²§ô¡A½Ð«ö¤@¤U [¨ú®ø]¡C
+LastErrorMessage=%1%n%n錯誤 %2: %3
+SetupFileMissing=安è£è³‡æ–™å¤¾ä¸éºå¤±æª”案 %1ã€‚è«‹ä¿®æ£æ¤å•é¡Œæˆ–é‡æ–°å–å¾—æ¤è»Ÿé«”。
+SetupFileCorrupt=å®‰è£æª”æ¡ˆå·²ç¶“ææ¯€ã€‚è«‹é‡æ–°å–å¾—æ¤è»Ÿé«”。
+SetupFileCorruptOrWrongVer=å®‰è£æª”æ¡ˆå·²ç¶“ææ¯€ï¼Œæˆ–與安è£ç¨‹å¼çš„版本ä¸ç¬¦ã€‚è«‹é‡æ–°å–å¾—æ¤è»Ÿé«”。
+InvalidParameter=æŸå€‹ç„¡æ•ˆçš„變é‡å·²è¢«å‚³éžåˆ°äº†å‘½ä»¤åˆ—:%n%n%1
+SetupAlreadyRunning=安è£ç¨‹å¼å·²ç¶“在執行。
+WindowsVersionNotSupported=本安è£ç¨‹å¼ä¸¦ä¸æ”¯æ´ç›®å‰åœ¨é›»è…¦æ‰€é‹è¡Œçš„ Windows 版本。
+WindowsServicePackRequired=本安è£ç¨‹å¼éœ€è¦ %1 Service Pack %2 或更新。
+NotOnThisPlatform=這個程å¼ç„¡æ³•在 %1 執行。
+OnlyOnThisPlatform=這個程å¼å¿…é ˆåœ¨ %1 執行。
+OnlyOnTheseArchitectures=這個程å¼åªèƒ½åœ¨å°ˆé–€ç‚ºä»¥ä¸‹è™•ç†å™¨æž¶æ§‹è€Œè¨è¨ˆçš„ Windows 上安è£:%n%n%1
+WinVersionTooLowError=這個程å¼å¿…é ˆåœ¨ %1 版本 %2 或以上的系統執行。
+WinVersionTooHighError=這個程å¼ç„¡æ³•安è£åœ¨ %1 版本 %2 或以上的系統。
+AdminPrivilegesRequired=æ‚¨å¿…é ˆç™»å…¥æˆç³»çµ±ç®¡ç†å“¡ä»¥å®‰è£é€™å€‹ç¨‹å¼ã€‚
+PowerUserPrivilegesRequired=æ‚¨å¿…é ˆç™»å…¥æˆå…·æœ‰ç³»çµ±ç®¡ç†å“¡æˆ– Power User 權é™çš„使用者以安è£é€™å€‹ç¨‹å¼ã€‚
+SetupAppRunningError=安è£ç¨‹å¼åµæ¸¬åˆ° %1 æ£åœ¨åŸ·è¡Œã€‚%n%n請關閉該程å¼å¾ŒæŒ‰ [確定] 繼續,或按 [å–æ¶ˆ] 離開。
+UninstallAppRunningError=解除安è£ç¨‹å¼åµæ¸¬åˆ° %1 æ£åœ¨åŸ·è¡Œã€‚%n%n請關閉該程å¼å¾ŒæŒ‰ [確定] 繼續,或按 [å–æ¶ˆ] 離開。
+
+; *** Startup questions
+PrivilegesRequiredOverrideTitle=鏿“‡å®‰è£ç¨‹å¼å®‰è£æ¨¡å¼
+PrivilegesRequiredOverrideInstruction=鏿“‡å®‰è£æ¨¡å¼
+PrivilegesRequiredOverrideText1=å¯ä»¥ç‚ºæ‰€æœ‰ä½¿ç”¨è€…å®‰è£ %1 (需è¦ç³»çµ±ç®¡ç†æ¬Šé™),或是僅為您安è£ã€‚
+PrivilegesRequiredOverrideText2=å¯ä»¥åƒ…ç‚ºæ‚¨å®‰è£ %1ï¼Œæˆ–æ˜¯ç‚ºæ‰€æœ‰ä½¿ç”¨è€…å®‰è£ (需è¦ç³»çµ±ç®¡ç†æ¬Šé™)。
+PrivilegesRequiredOverrideAllUsers=ç‚ºæ‰€æœ‰ä½¿ç”¨è€…å®‰è£ (&A)
+PrivilegesRequiredOverrideAllUsersRecommended=ç‚ºæ‰€æœ‰ä½¿ç”¨è€…å®‰è£ (建è°é¸é …) (&A)
+PrivilegesRequiredOverrideCurrentUser=åƒ…ç‚ºæˆ‘å®‰è£ (&M)
+PrivilegesRequiredOverrideCurrentUserRecommended=åƒ…ç‚ºæˆ‘å®‰è£ (建è°é¸é …) (&M)
+
; *** Misc. errors
-ErrorCreatingDir=¦w¸Ëµ{¦¡µLªk«Ø¥ß¥Ø¿ý "%1"
-ErrorTooManyFilesInDir=¦]¬°¥Ø¿ý "%1" ¥]§t¤Ó¦hÀɮסA©Ò¥HµLªk¦b¨ä¤¤«Ø¥ßÀÉ®×
+ErrorCreatingDir=安è£ç¨‹å¼ç„¡æ³•建立資料夾“%1â€ã€‚
+ErrorTooManyFilesInDir=無法在資料夾“%1â€å…§å»ºç«‹æª”æ¡ˆï¼Œå› ç‚ºè³‡æ–™å¤¾å…§æœ‰å¤ªå¤šçš„æª”æ¡ˆã€‚
+
; *** Setup common messages
-ExitSetupTitle=µ²§ô¦w¸Ë
-ExitSetupMessage=¦w¸Ë¥¼§¹¦¨¡CY¥ß§Yµ²§ô¡A±N¤£·|¦w¸Ëµ{¦¡¡C%n%n±z¥i¥Hµy«á¦A°õ¦æ¦w¸Ëµ{¦¡¨Ó§¹¦¨¦w¸Ë¡C%n%nnµ²§ô¦w¸Ë¶Ü?
-AboutSetupMenuItem=Ãö©ó¦w¸Ëµ{¦¡(&A)...
-AboutSetupTitle=Ãö©ó¦w¸Ëµ{¦¡
-AboutSetupMessage=%1 ª© %2%n%3%n%n%1 º¶:%n%4
+ExitSetupTitle=çµæŸå®‰è£ç¨‹å¼
+ExitSetupMessage=安è£å°šæœªå®Œæˆã€‚如果您ç¾åœ¨çµæŸå®‰è£ç¨‹å¼ï¼Œé€™å€‹ç¨‹å¼å°‡ä¸æœƒè¢«å®‰è£ã€‚%n%n您å¯ä»¥ç¨å¾Œå†åŸ·è¡Œå®‰è£ç¨‹å¼ä»¥å®Œæˆå®‰è£ç¨‹åºã€‚您ç¾åœ¨è¦çµæŸå®‰è£ç¨‹å¼å—Ž?
+AboutSetupMenuItem=關於安è£ç¨‹å¼(&A)...
+AboutSetupTitle=關於安è£ç¨‹å¼
+AboutSetupMessage=%1 版本 %2%n%3%n%n%1 ç¶²å€:%n%4
AboutSetupNote=
TranslatorNote=
+
; *** Buttons
-ButtonBack=< ¤W¤@¨B(&B)
-ButtonNext=¤U¤@¨B(&N) >
-ButtonInstall=¦w¸Ë(&I)
-ButtonOK=½T©w
-ButtonCancel=¨ú®ø
-ButtonYes=¬O(&Y)
-ButtonYesToAll=¥þ³¡¬Ò¬O(&A)
-ButtonNo=§_(&N)
-ButtonNoToAll=¥þ³¡¬Ò§_(&O)
-ButtonFinish=§¹¦¨(&F)
-ButtonBrowse=ÂsÄý(&B)...
-ButtonWizardBrowse=ÂsÄý(&R)...
-ButtonNewFolder=«Ø¥ß·s¸ê®Æ§¨(&M)
+ButtonBack=< 上一æ¥(&B)
+ButtonInstall=安è£(&I)
+ButtonNext=下一æ¥(&N) >
+ButtonOK=確定
+ButtonCancel=å–æ¶ˆ
+ButtonYes=是(&Y)
+ButtonYesToAll=全部皆是(&A)
+ButtonNo=å¦(&N)
+ButtonNoToAll=全部皆å¦(&O)
+ButtonFinish=完æˆ(&F)
+ButtonBrowse=ç€è¦½(&B)...
+ButtonWizardBrowse=ç€è¦½(&R)...
+ButtonNewFolder=建立新資料夾(&M)
+
; *** "Select Language" dialog messages
-SelectLanguageTitle=¿ï¨ú¦w¸Ëµ{¦¡»y¨¥
-SelectLanguageLabel=¿ï¨ú¦w¸Ë´Á¶¡©Òn¨Ï¥Îªº»y¨¥:
+SelectLanguageTitle=鏿“‡å®‰è£èªžè¨€
+SelectLanguageLabel=鏿“‡åœ¨å®‰è£éŽç¨‹ä¸ä½¿ç”¨çš„語言:
+
; *** Common wizard text
-ClickNext=YnÄ~Äò¡A½Ð«ö¤@¤U [¤U¤@¨B]; Ynµ²§ô¦w¸Ë¡A½Ð«ö¤@¤U [¨ú®ø]¡C
+ClickNext=按 [下一æ¥] 繼續安è£ï¼Œæˆ–按 [å–æ¶ˆ] çµæŸå®‰è£ç¨‹å¼ã€‚
BeveledLabel=
-BrowseDialogTitle=ÂsÄý¸ê®Æ§¨
-BrowseDialogLabel=½Ð±q¤U¦C²M³æ¤¤¿ï¨ú¸ê®Æ§¨¡AµM«á«ö¤@¤U [½T©w]¡C
-NewFolderName=·s¼W¸ê®Æ§¨
+BrowseDialogTitle=ç€è¦½è³‡æ–™å¤¾
+BrowseDialogLabel=在下é¢çš„資料夾列表ä¸é¸æ“‡ä¸€å€‹è³‡æ–™å¤¾ï¼Œç„¶å¾ŒæŒ‰ [確定]。
+NewFolderName=新資料夾
+
; *** "Welcome" wizard page
-WelcomeLabel1=Åwªï¨Ï¥Î [name] ¦w¸ËºëÆF
-WelcomeLabel2=³o·|¦b±zªº¹q¸£¤W¦w¸Ë [name/ver]¡C%n%n«ØÄ³±z¥ýÃö³¬©Ò¦³¨ä¥LÀ³¥Îµ{¦¡¡AµM«á¦AÄ~Äò¡C
+WelcomeLabel1=æ¡è¿Žä½¿ç”¨ [name] 安è£ç¨‹å¼
+WelcomeLabel2=這個安è£ç¨‹å¼å°‡æœƒå®‰è£ [name/ver] 到您的電腦。%n%næˆ‘å€‘å¼·çƒˆå»ºè°æ‚¨åœ¨å®‰è£éŽç¨‹ä¸é—œé–‰å…¶å®ƒçš„æ‡‰ç”¨ç¨‹å¼ï¼Œä»¥é¿å…與安è£ç¨‹å¼ç™¼ç”Ÿæ²–çªã€‚
+
; *** "Password" wizard page
-WizardPassword=±K½X
-PasswordLabel1=¦¹¦w¸Ë¨ü±K½X«OÅ@¡C
-PasswordLabel3=½Ð´£¨Ñ±K½X¡AµM«á«ö¤@¤U [¤U¤@¨B] ¥HÄ~Äò¡C±K½X°Ï¤À¤j¤p¼g¡C
-PasswordEditLabel=±K½X(&P):
-IncorrectPassword=¿é¤Jªº±K½X¤£¥¿½T¡C½Ð¦A¸Õ¤@¦¸¡C
+WizardPassword=密碼
+PasswordLabel1=這個安è£ç¨‹å¼å…·æœ‰å¯†ç¢¼ä¿è·ã€‚
+PasswordLabel3=請輸入密碼,然後按 [下一æ¥] 繼續。密碼是å€åˆ†å¤§å°å¯«çš„。
+PasswordEditLabel=密碼(&P):
+IncorrectPassword=æ‚¨è¼¸å…¥çš„å¯†ç¢¼ä¸æ£ç¢ºï¼Œè«‹é‡æ–°è¼¸å…¥ã€‚
+
; *** "License Agreement" wizard page
-WizardLicense=±ÂÅv¦X¬ù
-LicenseLabel=½Ð¥ý¾\Ū¤U¦C«n¸ê°T¦AÄ~Äò¡C
-LicenseLabel3=½Ð¾\Ū¤U¦C±ÂÅv¦X¬ù¡C±z¥²¶·±µ¨ü¦¹¦X¬ù±ø´Ú¡A¤~¯àÄ~Äò¦w¸Ë¡C
-LicenseAccepted=§Ú±µ¨ü¦X¬ù(&A)
-LicenseNotAccepted=§Ú¤£±µ¨ü¦X¬ù(&D)
+WizardLicense=授權åˆç´„
+LicenseLabel=請閱讀以下授權åˆç´„。
+LicenseLabel3=請閱讀以下授權åˆç´„ï¼Œæ‚¨å¿…é ˆæŽ¥å—åˆç´„çš„å„é …æ¢æ¬¾æ‰èƒ½ç¹¼çºŒå®‰è£ã€‚
+LicenseAccepted=æˆ‘åŒæ„(&A)
+LicenseNotAccepted=我ä¸åŒæ„(&D)
+
; *** "Information" wizard pages
-WizardInfoBefore=¸ê°T
-InfoBeforeLabel=½Ð¥ý¾\Ū¤U¦C«n¸ê°T¦AÄ~Äò¡C
-InfoBeforeClickLabel=·í±z·Ç³Æ¦nnÄ~Äò¦w¸Ë®É¡A½Ð«ö¤@¤U [¤U¤@¨B]¡C
-WizardInfoAfter=¸ê°T
-InfoAfterLabel=½Ð¥ý¾\Ū¤U¦C«n¸ê°T¦AÄ~Äò¡C
-InfoAfterClickLabel=·í±z·Ç³Æ¦nnÄ~Äò¦w¸Ë®É¡A½Ð«ö¤@¤U [¤U¤@¨B]¡C
+WizardInfoBefore=訊æ¯
+InfoBeforeLabel=在繼續安è£ä¹‹å‰è«‹é–±è®€ä»¥ä¸‹é‡è¦è³‡è¨Šã€‚
+InfoBeforeClickLabel=當您準備好繼續安è£ï¼Œè«‹æŒ‰ [下一æ¥]。
+WizardInfoAfter=訊æ¯
+InfoAfterLabel=在繼續安è£ä¹‹å‰è«‹é–±è®€ä»¥ä¸‹é‡è¦è³‡è¨Šã€‚
+InfoAfterClickLabel=當您準備好繼續安è£ï¼Œè«‹æŒ‰ [下一æ¥]。
+
; *** "User Information" wizard page
-WizardUserInfo=¨Ï¥ÎªÌ¸ê°T
-UserInfoDesc=½Ð¿é¤J±zªº¸ê°T¡C
-UserInfoName=¨Ï¥ÎªÌ¦WºÙ(&U):
-UserInfoOrg=²Õ´(&O):
-UserInfoSerial=§Ç¸¹(&S):
-UserInfoNameRequired=¥²¶·¿é¤J¦WºÙ¡C
+WizardUserInfo=使用者資訊
+UserInfoDesc=請輸入您的資料。
+UserInfoName=使用者å稱(&U):
+UserInfoOrg=組織(&O):
+UserInfoSerial=åºè™Ÿ(&S):
+UserInfoNameRequired=æ‚¨å¿…é ˆè¼¸å…¥æ‚¨çš„å稱。
+
; *** "Select Destination Location" wizard page
-WizardSelectDir=¿ï¨ú¥Øªº¦a¦ì¸m
-SelectDirDesc=À³±N [name] ¦w¸Ë¦b¦ó³B?
-SelectDirLabel3=¦w¸Ëµ{¦¡·|±N [name] ¦w¸Ë¦b¤U¦C¸ê®Æ§¨¤¤¡C
-SelectDirBrowseLabel=YnÄ~Äò¡A½Ð«ö¤@¤U [¤U¤@¨B]¡CY±z·Q¿ï¨ú¤£¦Pªº¸ê®Æ§¨¡A½Ð«ö¤@¤U [ÂsÄý]¡C
-DiskSpaceMBLabel=¦Ü¤Ö¶·¦³ [mb] MB ªº¥i¥ÎºÏºÐªÅ¶¡¡C
-CannotInstallToNetworkDrive=¦w¸Ëµ{¦¡µLªk¦w¸Ë¨ìºô¸ôºÏºÐ¾÷¡C
-CannotInstallToUNCPath=¦w¸Ëµ{¦¡µLªk¦w¸Ë¨ì UNC ¸ô®|¡C
-InvalidPath=¥²¶·¿é¤J¥]§tºÏºÐ¾÷¥N¸¹ªº§¹¾ã¸ô®|¡A¨Ò¦p:%n%nC:\APP%n%n©Î¿é¤J¤U¦C®æ¦¡ªº UNC ¸ô®|:%n%n\\¦øªA¾¹\¦@¥Î
-InvalidDrive=¿ï¨úªººÏºÐ¾÷©Î UNC ¦@¥Î¤£¦s¦b©ÎµLªk¦s¨ú¡C½Ð¿ï¨ú¨ä¥LºÏºÐ¾÷©Î UNC ¦@¥Î¡C
-DiskSpaceWarningTitle=ºÏºÐªÅ¶¡¤£¨¬
-DiskSpaceWarning=¦w¸Ëµ{¦¡¦Ü¤Ö»Ýn %1 KB ªº¥i¥ÎªÅ¶¡¤~¯à¦w¸Ë¡A¦ý©Ò¿ïºÏºÐ¾÷ªº¥i¥ÎªÅ¶¡¥u¦³ %2 KB¡C%n%n¤´nÄ~Äò¶Ü?
-DirNameTooLong=¸ê®Æ§¨¦WºÙ©Î¸ô®|¹Lªø¡C
-InvalidDirName=¦¹¸ê®Æ§¨¦WºÙµL®Ä¡C
-BadDirName32=¸ê®Æ§¨¦WºÙ¤£±o¥]§t¤U¦C¥ô¤@¦r¤¸:%n%n%1
-DirExistsTitle=¸ê®Æ§¨¤w¦s¦b
-DirExists=¤w¦³¸ê®Æ§¨ %n%n%1%n%n¡C¤´n¦w¸Ë¨ì¸Ó¸ê®Æ§¨¶Ü?
-DirDoesntExistTitle=¸ê®Æ§¨¤£¦s¦b
-DirDoesntExist=¸ê®Æ§¨ %n%n%1%n%n ¤£¦s¦b¡Cn«Ø¥ß¸Ó¸ê®Æ§¨¶Ü?
+WizardSelectDir=鏿“‡ç›®çš„資料夾
+SelectDirDesc=鏿“‡å®‰è£ç¨‹å¼å®‰è£ [name] çš„ä½ç½®ã€‚
+SelectDirLabel3=安è£ç¨‹å¼å°‡æœƒæŠŠ [name] 安è£åˆ°ä¸‹é¢çš„資料夾。
+SelectDirBrowseLabel=按 [下一æ¥] ç¹¼çºŒï¼Œå¦‚æžœæ‚¨æƒ³é¸æ“‡å¦ä¸€å€‹è³‡æ–™å¤¾ï¼Œè«‹æŒ‰ [ç€è¦½]。
+DiskSpaceMBLabel=æœ€å°‘éœ€è¦ [mb] MB ç£ç¢Ÿç©ºé–“。
+CannotInstallToNetworkDrive=安è£ç¨‹å¼ç„¡æ³•å®‰è£æ–¼ç¶²çµ¡ç£ç¢Ÿæ©Ÿã€‚
+CannotInstallToUNCPath=安è£ç¨‹å¼ç„¡æ³•å®‰è£æ–¼ UNC 路徑。
+InvalidPath=æ‚¨å¿…é ˆè¼¸å…¥å®Œæ•´çš„è·¯å¾‘å稱åŠç£ç¢Ÿæ©Ÿä»£ç¢¼ã€‚%n%n例如 C:\App 或 UNC è·¯å¾‘æ ¼å¼ \\伺æœå™¨\共用資料夾。
+InvalidDrive=您é¸å–çš„ç£ç¢Ÿæ©Ÿæˆ– UNC å稱ä¸å˜åœ¨æˆ–無法å˜å–ï¼Œè«‹é¸æ“‡å…¶ä»–的目的地。
+DiskSpaceWarningTitle=ç£ç¢Ÿç©ºé–“ä¸è¶³
+DiskSpaceWarning=安è£ç¨‹å¼éœ€è¦è‡³å°‘ %1 KB çš„ç£ç¢Ÿç©ºé–“,您所é¸å–çš„ç£ç¢Ÿåªæœ‰ %2 KB å¯ç”¨ç©ºé–“。%n%n您è¦ç¹¼çºŒå®‰è£å—Ž?
+DirNameTooLong=資料夾å稱或路徑太長。
+InvalidDirName=資料夾åç¨±ä¸æ£ç¢ºã€‚
+BadDirName32=資料夾å稱ä¸å¾—包å«ä»¥ä¸‹ç‰¹æ®Šå—å…ƒ:%n%n%1
+DirExistsTitle=資料夾已經å˜åœ¨
+DirExists=資料夾:%n%n%1%n%n 已經å˜åœ¨ã€‚ä»è¦å®‰è£åˆ°è©²è³‡æ–™å¤¾å—Žï¼Ÿ
+DirDoesntExistTitle=資料夾ä¸å˜åœ¨
+DirDoesntExist=資料夾:%n%n%1%n%n ä¸å˜åœ¨ã€‚è¦å»ºç«‹è©²è³‡æ–™å¤¾å—Žï¼Ÿ
+
; *** "Select Components" wizard page
-WizardSelectComponents=¿ï¨ú¤¸¥ó
-SelectComponentsDesc=À³¦w¸Ëþ¨Ç¤¸¥ó?
-SelectComponentsLabel2=¿ï¨ú±zn¦w¸Ëªº¤¸¥ó; ²M°£±z¤£n¦w¸Ëªº¤¸¥ó¡C·í±z·Ç³Æ¦nnÄ~Äò®É¡A½Ð«ö¤@¤U [¤U¤@¨B]¡C
-FullInstallation=§¹¾ã¦w¸Ë
+WizardSelectComponents=鏿“‡å…ƒä»¶
+SelectComponentsDesc=鏿“‡å°‡æœƒè¢«å®‰è£çš„元件。
+SelectComponentsLabel2=鏿“‡æ‚¨æƒ³è¦å®‰è£çš„å…ƒä»¶ï¼›æ¸…é™¤æ‚¨ä¸æƒ³å®‰è£çš„元件。然後按 [下一æ¥] 繼續安è£ã€‚
+FullInstallation=完整安è£
; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)
-CompactInstallation=ºë²¦w¸Ë
-CustomInstallation=¦Ûq¦w¸Ë
-NoUninstallWarningTitle=¤w¦³¦¹¤¸¥ó
-NoUninstallWarning=¦w¸Ëµ{¦¡°»´ú¨ì±zªº¹q¸£¤w¦w¸Ë¤F¤U¦C¤¸¥ó:%n%n%1%n%n±N³o¨Ç¤¸¥ó¨ú®ø¿ï¨ú¨Ã¤£·|¨Ï¤¸¥ó¸Ñ°£¦w¸Ë¡C%n%n¤´nÄ~Äò¶Ü?
+CompactInstallation=最å°å®‰è£
+CustomInstallation=自訂安è£
+NoUninstallWarningTitle=元件已å˜åœ¨
+NoUninstallWarning=安è£ç¨‹å¼åµæ¸¬åˆ°ä»¥ä¸‹å…ƒä»¶å·²ç¶“安è£åœ¨æ‚¨çš„電腦上:%n%n%1%n%nå–æ¶ˆé¸æ“‡é€™äº›å…ƒä»¶å°‡ä¸æœƒç§»é™¤å®ƒå€‘。%n%n您ä»ç„¶è¦ç¹¼çºŒå—Ž?
ComponentSize1=%1 KB
ComponentSize2=%1 MB
-ComponentsDiskSpaceMBLabel=¥Ø«eªº¿ï¾Ü¦Ü¤Ö»Ýn [mb] MB ªººÏºÐªÅ¶¡¡C
+ComponentsDiskSpaceMBLabel=ç›®å‰çš„鏿“‡éœ€è¦è‡³å°‘ [mb] MB ç£ç¢Ÿç©ºé–“。
+
; *** "Select Additional Tasks" wizard page
-WizardSelectTasks=¿ï¨ú¨ä¥L¤u§@
-SelectTasksDesc=ÁÙ¶·°õ¦æþ¨Ç¨ä¥L¤u§@?
-SelectTasksLabel2=½Ð¿ï¨ú¦w¸Ëµ{¦¡¦b¦w¸Ë [name] ®É¡A¶·ÃB¥~°õ¦æªº¨ä¥L¤u§@¡AµM«á«ö¤@¤U [¤U¤@¨B]¡C
+WizardSelectTasks=鏿“‡é™„åŠ çš„å·¥ä½œ
+SelectTasksDesc=鏿“‡è¦åŸ·è¡Œçš„é™„åŠ å·¥ä½œã€‚
+SelectTasksLabel2=鏿“‡å®‰è£ç¨‹å¼åœ¨å®‰è£ [name] 時è¦åŸ·è¡Œçš„é™„åŠ å·¥ä½œï¼Œç„¶å¾ŒæŒ‰ [下一æ¥]。
+
; *** "Select Start Menu Folder" wizard page
-WizardSelectProgramGroup=¿ï¨ú [¶}©l] ¥\¯àªí¸ê®Æ§¨
-SelectStartMenuFolderDesc=¦w¸Ëµ{¦¡À³±Nµ{¦¡±¶®|¸m©ó¦ó³B?
-SelectStartMenuFolderLabel3=¦w¸Ëµ{¦¡±N¦b¤U¦C [¶}©l] ¥\¯àªí¸ê®Æ§¨¤¤«Ø¥ßµ{¦¡±¶®|¡C
-SelectStartMenuFolderBrowseLabel=YnÄ~Äò¡A½Ð«ö¤@¤U [¤U¤@¨B]¡CY±z·Q¿ï¨ú¤£¦Pªº¸ê®Æ§¨¡A½Ð«ö¤@¤U [ÂsÄý]¡C
-MustEnterGroupName=¥²¶·¿é¤J¸ê®Æ§¨¦WºÙ¡C
-GroupNameTooLong=¸ê®Æ§¨¦WºÙ©Î¸ô®|¹Lªø¡C
-InvalidGroupName=¦¹¸ê®Æ§¨¦WºÙµL®Ä¡C
-BadGroupName=¸ê®Æ§¨¦WºÙ¤£±o¥]§t¤U¦C¥ô¤@¦r¤¸:%n%n%1
-NoProgramGroupCheck2=¤£n«Ø¥ß [¶}©l] ¥\¯àªí¸ê®Æ§¨(&D)
+WizardSelectProgramGroup=鏿“‡ã€Œé–‹å§‹ã€åŠŸèƒ½è¡¨çš„è³‡æ–™å¤¾
+SelectStartMenuFolderDesc=鏿“‡å®‰è£ç¨‹å¼å»ºç«‹ç¨‹å¼çš„æ·å¾‘çš„ä½ç½®ã€‚
+SelectStartMenuFolderLabel3=安è£ç¨‹å¼å°‡æœƒæŠŠç¨‹å¼çš„æ·å¾‘å»ºç«‹åœ¨ä¸‹é¢çš„「開始ã€åŠŸèƒ½è¡¨è³‡æ–™å¤¾ã€‚
+SelectStartMenuFolderBrowseLabel=按 [下一æ¥] ç¹¼çºŒï¼Œå¦‚æžœæ‚¨æƒ³é¸æ“‡å¦ä¸€å€‹è³‡æ–™å¤¾ï¼Œè«‹æŒ‰ [ç€è¦½]。
+MustEnterGroupName=æ‚¨å¿…é ˆè¼¸å…¥ä¸€å€‹è³‡æ–™å¤¾çš„å稱。
+GroupNameTooLong=資料夾å稱或路徑太長。
+InvalidGroupName=資料夾åç¨±ä¸æ£ç¢ºã€‚
+BadGroupName=資料夾å稱ä¸å¾—包å«ä¸‹åˆ—å—å…ƒ:%n%n%1
+NoProgramGroupCheck2=ä¸è¦åœ¨ã€Œé–‹å§‹ã€åŠŸèƒ½è¡¨ä¸å»ºç«‹è³‡æ–™å¤¾(&D)
+
; *** "Ready to Install" wizard page
-WizardReady=¤w¥i¶}©l¦w¸Ë
-ReadyLabel1=¦w¸Ëµ{¦¡²{¦b¤w¥i¶}©l±N [name] ¦w¸Ë¨ì±zªº¹q¸£¤W¡C
-ReadyLabel2a=YnÄ~Äò¦w¸Ë¡A½Ð«ö¤@¤U [¦w¸Ë]; YnÀ˾\©ÎÅܧó¥ô¦ó³]©w¡A½Ð«ö¤@¤U [¤W¤@¨B]¡C
-ReadyLabel2b=YnÄ~Äò¦w¸Ë¡A½Ð«ö¤@¤U [¦w¸Ë]¡C
-ReadyMemoUserInfo=¨Ï¥ÎªÌ¸ê°T:
-ReadyMemoDir=¥Øªº¦a¦ì¸m:
-ReadyMemoType=¦w¸ËÃþ«¬:
-ReadyMemoComponents=¿ï¨úªº¤¸¥ó:
-ReadyMemoGroup=[¶}©l] ¥\¯àªí¸ê®Æ§¨:
-ReadyMemoTasks=¨ä¥L¤u§@:
+WizardReady=準備安è£
+ReadyLabel1=安è£ç¨‹å¼å°‡é–‹å§‹å®‰è£ [name] 到您的電腦ä¸ã€‚
+ReadyLabel2a=按下 [安è£] 繼續安è£ï¼Œæˆ–按 [上一æ¥] 釿–°æª¢è¦–或è¨å®šå„é¸é …的內容。
+ReadyLabel2b=按下 [安è£] 繼續安è£ã€‚
+ReadyMemoUserInfo=使用者資訊
+ReadyMemoDir=目的資料夾:
+ReadyMemoType=安è£åž‹æ…‹:
+ReadyMemoComponents=鏿“‡çš„元件:
+ReadyMemoGroup=「開始ã€åŠŸèƒ½è¡¨è³‡æ–™å¤¾:
+ReadyMemoTasks=é™„åŠ å·¥ä½œ:
+
; *** "Preparing to Install" wizard page
-WizardPreparing=¥¿¦b·Ç³Æ¦w¸Ë
-PreparingDesc=¦w¸Ëµ{¦¡¥¿¦b·Ç³Æ±N [name] ¦w¸Ë¨ì±zªº¹q¸£¤W¡C
-PreviousInstallNotCompleted=¤W¤@Óµ{¦¡ªº¦w¸Ë/²¾°£©|¥¼§¹¦¨¡C¥²¶·«·s±Ò°Ê¹q¸£¡A¤~¯à§¹¦¨¸Ó¦w¸Ë¡C%n%n½Ð¦b«·s±Ò°Ê¹q¸£¤§«á¡A«·s°õ¦æ¦w¸Ëµ{¦¡¡A¥H§¹¦¨ [name] ªº¦w¸Ë¡C
-CannotContinue=¦w¸Ëµ{¦¡µLªkÄ~Äò¡C½Ð«ö¤@¤U [¨ú®ø] ¥Hµ²§ô¡C
-ApplicationsFound=¦w¸Ëµ{¦¡¥²¶·§ó·s¤U¦CÀ³¥Îµ{¦¡¥¿¦b¨Ï¥Îªº¤@¨ÇÀɮסC«ØÄ³±z¤¹³\¦w¸Ëµ{¦¡¦Û°ÊÃö³¬³o¨ÇÀ³¥Îµ{¦¡¡C
-ApplicationsFound2=¦w¸Ëµ{¦¡¥²¶·§ó·s¤U¦CÀ³¥Îµ{¦¡¥¿¦b¨Ï¥Îªº¤@¨ÇÀɮסC«ØÄ³±z¤¹³\¦w¸Ëµ{¦¡¦Û°ÊÃö³¬³o¨ÇÀ³¥Îµ{¦¡¡C·í¦w¸Ë§¹¦¨¤§«á¡A¦w¸Ëµ{¦¡±N·|¹Á¸Õ«·s±Ò°Ê³o¨ÇÀ³¥Îµ{¦¡¡C
-CloseApplications=¦Û°ÊÃö³¬À³¥Îµ{¦¡(&A)
-DontCloseApplications=¤£nÃö³¬À³¥Îµ{¦¡(&D)
-ErrorCloseApplications=¦w¸Ëµ{¦¡µLªk¦Û°ÊÃö³¬©Ò¦³À³¥Îµ{¦¡¡C«ØÄ³±zÃö³¬©Ò¦³¥¿¦b¨Ï¥Î¦w¸Ëµ{¦¡¥²¶·§ó·s¤§ÀɮתºÀ³¥Îµ{¦¡¡AµM«á¦AÄ~Äò¡C
+WizardPreparing=準備安è£ç¨‹å¼
+PreparingDesc=安è£ç¨‹å¼æº–備將 [name] 安è£åˆ°æ‚¨çš„電腦上。
+PreviousInstallNotCompleted=å…ˆå‰çš„安è£/ 解除安è£å°šæœªå®Œæˆï¼Œæ‚¨å¿…é ˆé‡æ–°å•Ÿå‹•電腦以完æˆè©²å®‰è£ã€‚%n%nåœ¨é‡æ–°å•Ÿå‹•電腦之後,請å†åŸ·è¡Œé€™å€‹ç¨‹å¼ä¾†å®‰è£ [name]。
+CannotContinue=安è£ç¨‹å¼ç„¡æ³•繼續。請按 [å–æ¶ˆ] 離開。
+ApplicationsFound=下é¢çš„æ‡‰ç”¨ç¨‹å¼æ£åœ¨ä½¿ç”¨å®‰è£ç¨‹å¼æ‰€éœ€è¦æ›´æ–°çš„æ–‡æª”ã€‚å»ºè°æ‚¨å…許安è£ç¨‹å¼è‡ªå‹•關閉這些應用程å¼ã€‚
+ApplicationsFound2=下é¢çš„æ‡‰ç”¨ç¨‹å¼æ£åœ¨ä½¿ç”¨å®‰è£ç¨‹å¼æ‰€éœ€è¦æ›´æ–°çš„æ–‡æª”ã€‚å»ºè°æ‚¨å…許安è£ç¨‹å¼è‡ªå‹•關閉這些應用程å¼ã€‚當安è£éŽç¨‹çµæŸå¾Œï¼Œæœ¬å®‰è£ç¨‹å¼å°‡æœƒå˜—è©¦é‡æ–°é–‹å•Ÿè©²æ‡‰ç”¨ç¨‹å¼ã€‚
+CloseApplications=關閉應用程å¼(&A)
+DontCloseApplications=ä¸è¦é—œé–‰æ‡‰ç”¨ç¨‹å¼ (&D)
+ErrorCloseApplications=安è£ç¨‹å¼ç„¡æ³•自動關閉所有應用程å¼ã€‚å»ºè°æ‚¨åœ¨ç¹¼çºŒå‰å…ˆé—œé–‰æ‰€æœ‰æ‡‰ç”¨ç¨‹å¼ä½¿ç”¨çš„æª”案。
+
; *** "Installing" wizard page
-WizardInstalling=¦w¸Ë¤¤
-InstallingLabel=½ÐµyÔ¡A¦w¸Ëµ{¦¡¥¿¦b±N [name] ¦w¸Ë¨ì±zªº¹q¸£¤W¡C
+WizardInstalling=æ£åœ¨å®‰è£
+InstallingLabel=è«‹ç¨å€™ï¼Œå®‰è£ç¨‹å¼æ£åœ¨å°‡ [name] 安è£åˆ°æ‚¨çš„電腦上
+
; *** "Setup Completed" wizard page
-FinishedHeadingLabel=¥¿¦b§¹¦¨ [name] ¦w¸ËºëÆF
-FinishedLabelNoIcons=¦w¸Ëµ{¦¡¤w§¹¦¨±z¹q¸£¤W [name] ªº¦w¸Ë¡C
-FinishedLabel=¦w¸Ëµ{¦¡¤w§¹¦¨±z¹q¸£¤W [name] ªº¦w¸Ë¡C±z¥i¥H¿ï¨ú©Ò¦w¸Ëªº±¶®|¨Ó±Ò°ÊÀ³¥Îµ{¦¡¡C
-ClickFinish=½Ð«ö¤@¤U [§¹¦¨]¡A¥Hµ²§ô¦w¸Ë¡C
-FinishedRestartLabel=¦w¸Ëµ{¦¡¥²¶·«·s±Ò°Ê±zªº¹q¸£¡A¤~¯à§¹¦¨ [name] ªº¦w¸Ë¡Cn¥ß§Y«·s±Ò°Ê¶Ü?
-FinishedRestartMessage=¦w¸Ëµ{¦¡¥²¶·«·s±Ò°Ê±zªº¹q¸£¡A¤~¯à§¹¦¨ [name] ªº¦w¸Ë¡C%n%nn¥ß§Y«·s±Ò°Ê¶Ü?
-ShowReadmeCheck=¬O¡A§ÚnÀ˵øÅª§ÚÀÉ®×
-YesRadio=¬O¡A¥ß§Y«·s±Ò°Ê¹q¸£(&Y)
-NoRadio=§_¡AµyÔ¦A«·s±Ò°Ê¹q¸£(&N)
+FinishedHeadingLabel=安è£å®Œæˆ
+FinishedLabelNoIcons=安è£ç¨‹å¼å·²ç¶“å°‡ [name] 安è£åœ¨æ‚¨çš„電腦上。
+FinishedLabel=安è£ç¨‹å¼å·²ç¶“å°‡ [name] 安è£åœ¨æ‚¨çš„電腦ä¸ï¼Œæ‚¨å¯ä»¥é¸æ“‡ç¨‹å¼çš„圖示來執行該應用程å¼ã€‚
+ClickFinish=按 [完æˆ] ä»¥çµæŸå®‰è£ç¨‹å¼ã€‚
+FinishedRestartLabel=è¦å®Œæˆ [name] 的安è£ï¼Œå®‰è£ç¨‹å¼å¿…é ˆé‡æ–°å•Ÿå‹•您的電腦。您想è¦ç¾åœ¨é‡æ–°å•Ÿå‹•電腦嗎?
+FinishedRestartMessage=è¦å®Œæˆ [name] 的安è£ï¼Œå®‰è£ç¨‹å¼å¿…é ˆé‡æ–°å•Ÿå‹•您的電腦。%n%n您想è¦ç¾åœ¨é‡æ–°å•Ÿå‹•電腦嗎?
+ShowReadmeCheck=是,我è¦é–±è®€è®€æˆ‘檔案。
+YesRadio=是,立å³é‡æ–°å•Ÿå‹•電腦(&Y)
+NoRadio=å¦ï¼Œæˆ‘ç¨å¾Œé‡æ–°å•Ÿå‹•電腦(&N)
; used for example as 'Run MyProg.exe'
-RunEntryExec=°õ¦æ %1
+RunEntryExec=執行 %1
; used for example as 'View Readme.txt'
-RunEntryShellExec=À˵ø %1
-; *** "Setup Needs the Next Disk" stuff
-ChangeDiskTitle=¦w¸Ëµ{¦¡»Ýn¤U¤@±iºÏ¤ù¡C
-SelectDiskLabel2=½Ð´¡¤JºÏ¤ù %1¡AµM«á«ö¤@¤U [½T©w]¡C%n%nY¦¹ºÏ¤ù¤WªºÀÉ®×¥i¥H¦b¤U¦CÅã¥Ü¤§¸ê®Æ§¨¥H¥~ªº¸ê®Æ§¨¤¤§ä¨ì¡A½Ð¿é¤J¥¿½Tªº¸ô®|¡A©Î«ö¤@¤U [ÂsÄý]¡C
-PathLabel=¸ô®|(&P):
-FileNotInDir2=¦b "%2" ¤¤§ä¤£¨ìÀÉ®× "%1"¡C½Ð´¡¤J¥¿½TªººÏ¤ù¡A©Î¿ï¨ú¨ä¥L¸ê®Æ§¨¡C
-SelectDirectoryLabel=½Ð«ü©w¤U¤@±iºÏ¤ùªº¦ì¸m¡C
+RunEntryShellExec=檢視 %1
+
+; *** "Setup Needs the Next Disk"
+ChangeDiskTitle=安è£ç¨‹å¼éœ€è¦ä¸‹ä¸€å¼µç£ç‰‡
+SelectDiskLabel2=è«‹æ’å…¥ç£ç‰‡ %1,然後按 [確定]。%n%n如果檔案ä¸åœ¨ä»¥ä¸‹æ‰€é¡¯ç¤ºçš„資料夾之ä¸ï¼Œè«‹è¼¸å…¥æ£ç¢ºçš„資料夾å稱或按 [ç€è¦½] é¸å–。
+PathLabel=路徑(&P):
+FileNotInDir2=檔案“%1â€ç„¡æ³•在“%2â€æ‰¾åˆ°ã€‚è«‹æ’å…¥æ£ç¢ºçš„ç£ç‰‡æˆ–鏿“‡å…¶å®ƒçš„資料夾。
+SelectDirectoryLabel=請指定下一張ç£ç‰‡çš„ä½ç½®ã€‚
+
; *** Installation phase messages
-SetupAborted=¦w¸Ë¥¼¦w¦¨¡C%n%n½Ð×¥¿°ÝÃD¡A¦A«·s°õ¦æ¦w¸Ëµ{¦¡¡C
-EntryAbortRetryIgnore=Yn¦A¸Õ¤@¦¸¡A½Ð«ö¤@¤U [«¸Õ]; YnÄ~Äò¡A½Ð«ö¤@¤U [©¿²¤]; Yn¨ú®ø¦w¸Ë¡A½Ð«ö¤@¤U [¤¤¤î]¡C
+SetupAborted=å®‰è£æ²’有完æˆã€‚%n%nè«‹æ›´æ£å•é¡Œå¾Œé‡æ–°å®‰è£ä¸€æ¬¡ã€‚
+AbortRetryIgnoreSelectAction=é¸å–動作
+AbortRetryIgnoreRetry=è«‹å†è©¦ä¸€æ¬¡ (&T)
+AbortRetryIgnoreIgnore=ç•¥éŽéŒ¯èª¤ä¸¦ç¹¼çºŒ (&I)
+AbortRetryIgnoreCancel=å–æ¶ˆå®‰è£
+
; *** Installation status messages
-StatusClosingApplications=¥¿¦bÃö³¬À³¥Îµ{¦¡...
-StatusCreateDirs=¥¿¦b«Ø¥ß¥Ø¿ý...
-StatusExtractFiles=¥¿¦b¸ÑÀ£ÁYÀÉ®×...
-StatusCreateIcons=¥¿¦b«Ø¥ß±¶®|...
-StatusCreateIniEntries=¥¿¦b«Ø¥ß INI ¶µ¥Ø...
-StatusCreateRegistryEntries=¥¿¦b«Ø¥ßµn¿ý¶µ¥Ø...
-StatusRegisterFiles=¥¿¦bµn¿ýÀÉ®×...
-StatusSavingUninstall=¥¿¦bÀx¦s¸Ñ°£¦w¸Ë¸ê°T...
-StatusRunProgram=¥¿¦b§¹¦¨¦w¸Ë...
-StatusRestartingApplications=¥¿¦b«·s±Ò°ÊÀ³¥Îµ{¦¡...
-StatusRollback=¥¿¦b´_ìÅܧó...
+StatusClosingApplications=æ£åœ¨é—œé–‰æ‡‰ç”¨ç¨‹å¼...
+StatusCreateDirs=æ£åœ¨å»ºç«‹è³‡æ–™å¤¾...
+StatusExtractFiles=æ£åœ¨è§£å£“縮檔案...
+StatusCreateIcons=æ£åœ¨å»ºç«‹ç¨‹å¼é›†åœ–示...
+StatusCreateIniEntries=寫入 INI æª”æ¡ˆçš„é …ç›®...
+StatusCreateRegistryEntries=æ£åœ¨æ›´æ–°ç³»çµ±ç™»éŒ„...
+StatusRegisterFiles=æ£åœ¨ç™»éŒ„檔案...
+StatusSavingUninstall=儲å˜è§£é™¤å®‰è£è³‡è¨Š...
+StatusRunProgram=æ£åœ¨å®Œæˆå®‰è£...
+StatusRestartingApplications=æ£åœ¨é‡æ–°é–‹å•Ÿæ‡‰ç”¨ç¨‹å¼...
+StatusRollback=æ£åœ¨å¾©åŽŸè®Šæ›´...
+
; *** Misc. errors
-ErrorInternal2=¤º³¡¿ù»~: %1
-ErrorFunctionFailedNoCode=%1 ¥¢±Ñ
-ErrorFunctionFailed=%1 ¥¢±Ñ; ¥N½X %2
-ErrorFunctionFailedWithMessage=%1 ¥¢±Ñ; ¥N½X %2¡C%n%3
-ErrorExecutingProgram=µLªk°õ¦æÀÉ®×:%n%1
+ErrorInternal2=內部錯誤: %1
+ErrorFunctionFailedNoCode=%1 失敗
+ErrorFunctionFailed=%1 失敗;代碼 %2
+ErrorFunctionFailedWithMessage=%1 失敗;代碼 %2.%n%3
+ErrorExecutingProgram=無法執行檔案:%n%1
+
; *** Registry errors
-ErrorRegOpenKey=¶}±Òµn¿ý¾÷½X®Éµo¥Í¿ù»~:%n%1\%2
-ErrorRegCreateKey=«Ø¥ßµn¿ý¾÷½X®Éµo¥Í¿ù»~:%n%1\%2
-ErrorRegWriteKey=¼g¤Jµn¿ý¾÷½X®Éµo¥Í¿ù»~:%n%1\%2
+ErrorRegOpenKey=無法開啟登錄éµ:%n%1\%2
+ErrorRegCreateKey=ç„¡æ³•å»ºç«‹ç™»éŒ„é …ç›®:%n%1\%2
+ErrorRegWriteKey=ç„¡æ³•è®Šæ›´ç™»éŒ„é …ç›®:%n%1\%2
+
; *** INI errors
-ErrorIniEntry=¦bÀÉ®× "%1" ¤¤«Ø¥ß INI ¶µ¥Ø®Éµo¥Í¿ù»~¡C
+ErrorIniEntry=在檔案“%1â€å»ºç«‹ INI é …ç›®éŒ¯èª¤ã€‚
+
; *** File copying errors
-FileAbortRetryIgnore=Yn¦A¸Õ¤@¦¸¡A½Ð«ö¤@¤U [«¸Õ]; Yn²¤¹L¦¹ÀɮסA½Ð«ö¤@¤U [©¿²¤] (¤£«ØÄ³¨Ï¥Î); Yn¨ú®ø¦w¸Ë¡A½Ð«ö¤@¤U [¤¤¤î]¡C
-FileAbortRetryIgnore2=Yn¦A¸Õ¤@¦¸¡A½Ð«ö¤@¤U [«¸Õ]; YnÄ~Äò¡A½Ð«ö¤@¤U [©¿²¤] (¤£«ØÄ³¨Ï¥Î); Yn¨ú®ø¦w¸Ë¡A½Ð«ö¤@¤U [¤¤¤î]¡C
-SourceIsCorrupted=ì©lµ{¦¡Àɤw·l·´
-SourceDoesntExist=ì©lµ{¦¡ÀÉ "%1" ¤£¦s¦b
-ExistingFileReadOnly=²{¦³Àɮפw¼Ð°O¬°°ßŪ¡C%n%nYn²¾°£°ßŪÄݩʡAµM«á¦A¸Õ¤@¦¸¡A½Ð«ö¤@¤U [«¸Õ]; Yn²¤¹L¦¹ÀɮסA½Ð«ö¤@¤U [©¿²¤]; Yn¨ú®ø¦w¸Ë¡A½Ð«ö¤@¤U [¤¤¤î]¡C
-ErrorReadingExistingDest=¹Á¸ÕŪ¨ú²{¦³Àɮ׮ɵo¥Í¿ù»~:
-FileExists=¤w¦³¦¹ÀɮסC%n%nn¥Ñ¦w¸Ëµ{¦¡¥[¥HÂмg¶Ü?
-ExistingFileNewer=²{¦³Àɮ׸û¦w¸Ëµ{¦¡¹Á¸Õ¦w¸ËªºÀÉ®×·s¡C«ØÄ³±z«O¯d²{¦³ÀɮסC%n%nn«O¯d²{¦³ªºÀÉ®×¶Ü?
-ErrorChangingAttr=¹Á¸ÕÅܧó²{¦³ÀɮתºÄݩʮɵo¥Í¿ù»~:
-ErrorCreatingTemp=¹Á¸Õ¦b¥Øªº¦a¥Ø¿ý¤¤«Ø¥ßÀɮ׮ɵo¥Í¿ù»~:
-ErrorReadingSource=¹Á¸ÕŪ¨úì©lµ{¦¡Àɮɵo¥Í¿ù»~:
-ErrorCopying=¹Á¸Õ½Æ»sÀɮ׮ɵo¥Í¿ù»~:
-ErrorReplacingExistingFile=¹Á¸Õ¨ú¥N²{¦³Àɮ׮ɵo¥Í¿ù»~:
-ErrorRestartReplace=RestartReplace ¥¢±Ñ:
-ErrorRenamingTemp=¹Á¸Õ«·s©R¦W¥Øªº¦a¥Ø¿ý¤¤ªºÀɮ׮ɵo¥Í¿ù»~:
-ErrorRegisterServer=µLªkµn¿ý DLL/OCX: %1
-ErrorRegSvr32Failed=RegSvr32 ¥¢±Ñ¡Aµ²§ô¥N½X¬° %1
-ErrorRegisterTypeLib=µLªkµn¿ýÃþ«¬µ{¦¡®w: %1
+FileAbortRetryIgnoreSkipNotRecommended=ç•¥éŽé€™å€‹æª”案 (ä¸å»ºè°) (&S)
+FileAbortRetryIgnoreIgnoreNotRecommended=ç•¥éŽéŒ¯èª¤ä¸¦ç¹¼çºŒ (ä¸å»ºè°) (&I)
+SourceDoesntExist=ä¾†æºæª”案“%1â€ä¸å˜åœ¨ã€‚
+SourceIsCorrupted=ä¾†æºæª”æ¡ˆå·²ç¶“ææ¯€ã€‚
+ExistingFileReadOnly2=無法å–ä»£ç¾æœ‰æª”æ¡ˆï¼Œå› ç‚ºæª”æ¡ˆå·²æ¨™ç¤ºç‚ºå”¯è®€ã€‚
+ExistingFileReadOnlyRetry=移除唯讀屬性並é‡è©¦ (&R)
+ExistingFileReadOnlyKeepExisting=ä¿ç•™ç¾æœ‰æª”案 (&K)
+ErrorReadingExistingDest=讀å–一個已å˜åœ¨çš„æª”案時發生錯誤:
+FileExists=檔案已經å˜åœ¨ã€‚%n%n è¦è®“安è£ç¨‹å¼åŠ ä»¥è¦†å¯«å—Ž?
+ExistingFileNewer=å˜åœ¨çš„æª”æ¡ˆç‰ˆæœ¬æ¯”è¼ƒæ–°ï¼Œå»ºè°æ‚¨ä¿ç•™ç›®å‰å·²å˜åœ¨çš„æª”案。%n%n您è¦ä¿ç•™ç›®å‰å·²å˜åœ¨çš„æª”案嗎?
+ErrorChangingAttr=在變更檔案屬性時發生錯誤:
+ErrorCreatingTemp=在目的資料夾ä¸å»ºç«‹æª”案時發生錯誤:
+ErrorReadingSource=讀å–原始檔案時發生錯誤:
+ErrorCopying=復制檔案時發生錯誤:
+ErrorReplacingExistingFile=å–代檔案時發生錯誤:
+ErrorRestartReplace=釿–°å•Ÿå‹•電腦後å–代檔案失敗:
+ErrorRenamingTemp=在目的資料夾變更檔案å稱時發生錯誤:
+ErrorRegisterServer=無法注冊 DLL/OCX 檔案: %1。
+ErrorRegSvr32Failed=RegSvr32 失敗;退出代碼 %1
+ErrorRegisterTypeLib=無法注冊類型庫: %1。
+
+; *** Uninstall display name markings
+; used for example as 'My Program (32-bit)'
+UninstallDisplayNameMark=%1 (%2)
+; used for example as 'My Program (32-bit, All users)'
+UninstallDisplayNameMarks=%1 (%2, %3)
+UninstallDisplayNameMark32Bit=32-bit
+UninstallDisplayNameMark64Bit=64-bit
+UninstallDisplayNameMarkAllUsers=所有使用者
+UninstallDisplayNameMarkCurrentUser=ç›®å‰ä½¿ç”¨è€…
+
; *** Post-installation errors
-ErrorOpeningReadme=¹Á¸Õ¶}±ÒŪ§ÚÀɮ׮ɵo¥Í¿ù»~¡C
-ErrorRestartingComputer=¦w¸Ëµ{¦¡µLªk«·s±Ò°Ê¹q¸£¡C½Ð¤â°Ê°õ¦æ¦¹§@·~¡C
+ErrorOpeningReadme=開啟讀我檔案時發生錯誤。
+ErrorRestartingComputer=安è£ç¨‹å¼ç„¡æ³•釿–°å•Ÿå‹•電腦,請以手動方å¼è‡ªè¡Œé‡æ–°å•Ÿå‹•電腦。
+
; *** Uninstaller messages
-UninstallNotFound=¨S¦³ÀÉ®× "%1"¡CµLªk¸Ñ°£¦w¸Ë¡C
-UninstallOpenError=µLªk¶}±ÒÀÉ®× "%1"¡CµLªk¸Ñ°£¦w¸Ë
-UninstallUnsupportedVer=¦¹ª©¸Ñ°£¦w¸Ëµ{¦¡µLªk¿ëÃѸѰ£¦w¸Ë°O¿ýÀÉ "%1" ªº®æ¦¡¡CµLªk¸Ñ°£¦w¸Ë
-UninstallUnknownEntry=¦b¸Ñ°£¦w¸Ë°O¿ý¤¤§ä¨ì¤£©úªº¶µ¥Ø (%1)
-ConfirmUninstall=½T©wn§¹¥þ²¾°£ %1 ¤Î¨ä©Ò¦³¤¸¥ó¶Ü?
-UninstallOnlyOnWin64=¥u¥i¦b 64 ¦ì¤¸ Windows ¤W¸Ñ°£¦w¸Ë¦¹¦w¸Ë¡C
-OnlyAdminCanUninstall=¥u¦³¨ã³Æ¨t²ÎºÞ²zÅvªº¨Ï¥ÎªÌ¡A¤~¯à¸Ñ°£¦w¸Ë¦¹¦w¸Ë¡C
-UninstallStatusLabel=¥¿¦b±q±zªº¹q¸£²¾°£ %1¡A½ÐµyÔ¡C
-UninstalledAll=¤w¦¨¥\±q±zªº¹q¸£²¾°£ %1¡C
-UninstalledMost=¸Ñ°£¦w¸Ë %1 ¤w§¹¦¨¡C%n%n¦³³¡¤À¶µ¥ØµLªk²¾°£¡C±z¥i¥H¤â°Ê¥[¥H²¾°£¡C
-UninstalledAndNeedsRestart=Yn§¹¦¨ %1 ªº¸Ñ°£¦w¸Ë¡A¥²¶·«·s±Ò°Ê±zªº¹q¸£¡C%n%nn¥ß§Y«·s±Ò°Ê¶Ü?
-UninstallDataCorrupted="%1" Àɮפw·l·´¡CµLªk¸Ñ°£¦w¸Ë
+UninstallNotFound=檔案“%1â€ä¸å˜åœ¨ï¼Œç„¡æ³•移除程å¼ã€‚
+UninstallOpenError=無法開啟檔案“%1â€ï¼Œç„¡æ³•移除程å¼ã€‚
+UninstallUnsupportedVer=這個版本的解除安è£ç¨‹å¼ç„¡æ³•辨è˜è¨˜éŒ„檔 “%1â€ ä¹‹æ ¼å¼ï¼Œç„¡æ³•解除安è£ã€‚
+UninstallUnknownEntry=解除安è£è¨˜éŒ„檔ä¸ç™¼ç¾æœªçŸ¥çš„記錄 (%1)。
+ConfirmUninstall=您確定è¦å®Œå…¨ç§»é™¤ %1 åŠå…¶ç›¸é—œçš„æª”案嗎?
+UninstallOnlyOnWin64=這個程å¼åªèƒ½åœ¨ 64 ä½å…ƒçš„ Windows 上解除安è£ã€‚
+OnlyAdminCanUninstall=這個程å¼è¦å…·å‚™ç³»çµ±ç®¡ç†å“¡æ¬Šé™çš„使用者方å¯è§£é™¤å®‰è£ã€‚
+UninstallStatusLabel=æ£åœ¨å¾žæ‚¨çš„電腦移除 %1 ä¸ï¼Œè«‹ç¨å€™...
+UninstalledAll=%1 已經æˆåŠŸå¾žæ‚¨çš„é›»è…¦ä¸ç§»é™¤ã€‚
+UninstalledMost=%1 解除安è£å®Œæˆã€‚%n%næŸäº›æª”案åŠå…ƒä»¶ç„¡æ³•移除,您å¯ä»¥è‡ªè¡Œåˆªé™¤é€™äº›æª”案。
+UninstalledAndNeedsRestart=è¦å®Œæˆ %1 的解除安è£ç¨‹åºï¼Œæ‚¨å¿…é ˆé‡æ–°å•Ÿå‹•電腦。%n%n您想è¦ç¾åœ¨é‡æ–°å•Ÿå‹•電腦嗎?
+UninstallDataCorrupted=檔案“%1â€å·²ç¶“ææ¯€ï¼Œç„¡æ³•解除安è£ã€‚
+
; *** Uninstallation phase messages
-ConfirmDeleteSharedFileTitle=n²¾°£¦@¥ÎÀÉ®×¶Ü?
-ConfirmDeleteSharedFile2=¨t²Î«ü¥X¤wµL¥ô¦óµ{¦¡¦b¨Ï¥Î¤U¦C¦@¥ÎÀɮסC±zn¸Ñ°£¦w¸Ë¡A¥H²¾°£¦¹¦@¥ÎÀÉ®×¶Ü?%n%n¦p¦³¥ô¦óµ{¦¡¤´¦b¨Ï¥Î¦¹ÀɮצӱN¸ÓÀɮײ¾°£¡A³o¨Çµ{¦¡¥i¯àµLªk¥¿±`¹B§@¡CY¤£½T©w¡A½Ð¿ï¾Ü [§_]¡C±NÀɮ׫O¯d¦b¨t²Î¤W¨Ã¤£·|³y¦¨¥ô¦ó¤£¨}¼vÅT¡C
-SharedFileNameLabel=ÀɮצWºÙ:
-SharedFileLocationLabel=¦ì¸m:
-WizardUninstalling=¸Ñ°£¦w¸Ëª¬ºA
-StatusUninstalling=¥¿¦b¸Ñ°£¦w¸Ë %1...
+ConfirmDeleteSharedFileTitle=移除共用檔案
+ConfirmDeleteSharedFile2=系統顯示下列共用檔案已ä¸å†è¢«ä»»ä½•ç¨‹å¼æ‰€ä½¿ç”¨ï¼Œæ‚¨è¦ç§»é™¤é€™äº›æª”案嗎?%n%n%1%n%nå€˜è‹¥æ‚¨ç§»é™¤äº†ä»¥ä¸Šæª”æ¡ˆä½†ä»æœ‰ç¨‹å¼éœ€è¦ä½¿ç”¨å®ƒå€‘ï¼Œå°‡é€ æˆé€™äº›ç¨‹å¼ç„¡æ³•æ£å¸¸åŸ·è¡Œï¼Œå› æ¤æ‚¨è‹¥ç„¡æ³•ç¢ºå®šè«‹é¸æ“‡ [å¦]。ä¿ç•™é€™äº›æª”案在您的系統ä¸ä¸æœƒé€ æˆä»»ä½•æå®³ã€‚
+SharedFileNameLabel=檔案å稱:
+SharedFileLocationLabel=ä½ç½®:
+WizardUninstalling=解除安è£ç‹€æ…‹
+StatusUninstalling=æ£åœ¨è§£é™¤å®‰è£ %1...
+
; *** Shutdown block reasons
-ShutdownBlockReasonInstallingApp=¥¿¦b¦w¸Ë %1¡C
-ShutdownBlockReasonUninstallingApp=¥¿¦b¸Ñ°£¦w¸Ë %1¡C
+ShutdownBlockReasonInstallingApp=æ£åœ¨å®‰è£ %1.
+ShutdownBlockReasonUninstallingApp=æ£åœ¨è§£é™¤å®‰è£ %1.
+
; The custom messages below aren't used by Setup itself, but if you make
; use of them in your scripts, you'll want to translate them.
+
[CustomMessages]
-NameAndVersion=%1 ª© %2
-AdditionalIcons=¨ä¥L±¶®|:
-CreateDesktopIcon=«Ø¥ß®à±±¶®|(&D)
-CreateQuickLaunchIcon=«Ø¥ß§Ö³t±Ò°Ê±¶®|(&Q)
-ProgramOnTheWeb=Web ¤Wªº %1
-UninstallProgram=¸Ñ°£¦w¸Ë %1
-LaunchProgram=±Ò°Ê %1
-AssocFileExtension=ÃöÁp %1 »P %2 °ÆÀɦW(&A)
-AssocingFileExtension=¥¿¦b«Ø¥ß %1 »P %2 °ÆÀɦWªºÃöÁp¡K
-AutoStartProgramGroupDescription=±Ò°Ê:
-AutoStartProgram=¦Û°Ê±Ò°Ê %1
-AddonHostProgramNotFound=¦b¿ï¨úªº¸ê®Æ§¨¤¤§ä¤£¨ì %1¡C%n%n¤´nÄ~Äò¶Ü?
\ No newline at end of file
+
+NameAndVersion=%1 版本 %2
+AdditionalIcons=é™„åŠ åœ–ç¤º:
+CreateDesktopIcon=建立桌é¢åœ–示(&D)
+CreateQuickLaunchIcon=建立快速啟動圖示(&Q)
+ProgramOnTheWeb=%1 的網站
+UninstallProgram=è§£é™¤å®‰è£ %1
+LaunchProgram=啟動 %1
+AssocFileExtension=å°‡ %1 與檔案副檔å %2 產生關è¯(&A)
+AssocingFileExtension=æ£åœ¨å°‡ %1 與檔案副檔å %2 產生關è¯...
+AutoStartProgramGroupDescription=開啟:
+AutoStartProgram=自動開啟 %1
+AddonHostProgramNotFound=%1 無法在您所é¸çš„è³‡æ–™å¤¾ä¸æ‰¾åˆ°ã€‚%n%n您是å¦é‚„è¦ç¹¼çºŒï¼Ÿ
diff --git a/build/win32/i18n/messages.en.isl b/build/win32/i18n/messages.en.isl
index 12189c080d4..986eba00d3e 100644
--- a/build/win32/i18n/messages.en.isl
+++ b/build/win32/i18n/messages.en.isl
@@ -1,4 +1,11 @@
+[Messages]
+FinishedLabel=Setup has finished installing [name] on your computer. The application may be launched by selecting the installed shortcuts.
+ConfirmUninstall=Are you sure you want to completely remove %1 and all of its components?
+
[CustomMessages]
+AdditionalIcons=Additional icons:
+CreateDesktopIcon=Create a &desktop icon
+CreateQuickLaunchIcon=Create a &Quick Launch icon
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
diff --git a/build/yarn.lock b/build/yarn.lock
index 8f615cb4e6c..bdf8fa7d994 100644
--- a/build/yarn.lock
+++ b/build/yarn.lock
@@ -158,6 +158,13 @@
"@types/node" "*"
"@types/vinyl" "*"
+"@types/gulp-gzip@^0.0.31":
+ version "0.0.31"
+ resolved "https://registry.yarnpkg.com/@types/gulp-gzip/-/gulp-gzip-0.0.31.tgz#9358def25540442138fd61a7227f40d4c1e26760"
+ integrity sha512-KQjHz1FTqLse8/EiktfhN/vo33vamX4gVAQhMTp55STDBA7UToW5CJqYyP7iRorkHK9/aJ2nL2hLkNZkY4M8+w==
+ dependencies:
+ "@types/node" "*"
+
"@types/gulp-json-editor@^2.2.31":
version "2.2.31"
resolved "https://registry.yarnpkg.com/@types/gulp-json-editor/-/gulp-json-editor-2.2.31.tgz#3c1a8950556c109a0e2d0ab11d5f2a2443665ed2"
@@ -394,6 +401,11 @@ acorn@4.X:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
+agent-base@5:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c"
+ integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==
+
ajv@^4.9.1:
version "4.11.8"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
@@ -412,6 +424,23 @@ ajv@^5.1.0:
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
+ajv@^6.12.3:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+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:
+ 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"
@@ -424,16 +453,40 @@ ansi-regex@^2.0.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+ansi-regex@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
+ integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
+
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-styles@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+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=
+any-promise@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+ integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
+
+append-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1"
+ integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=
+ dependencies:
+ buffer-equal "^1.0.0"
+
applicationinsights@1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.0.8.tgz#db6e3d983cf9f9405fe1ee5ba30ac6e1914537b5"
@@ -450,6 +503,16 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
+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-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-back@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0"
@@ -535,6 +598,11 @@ aws4@^1.6.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289"
integrity sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==
+aws4@^1.8.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428"
+ integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==
+
azure-storage@^2.1.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/azure-storage/-/azure-storage-2.6.0.tgz#84747ee54a4bd194bb960f89f3eff89d67acf1cf"
@@ -552,6 +620,23 @@ azure-storage@^2.1.0:
xml2js "0.2.7"
xmlbuilder "0.4.3"
+azure-storage@^2.10.2:
+ version "2.10.3"
+ resolved "https://registry.yarnpkg.com/azure-storage/-/azure-storage-2.10.3.tgz#c5966bf929d87587d78f6847040ea9a4b1d4a50a"
+ integrity sha512-IGLs5Xj6kO8Ii90KerQrrwuJKexLgSwYC4oLWmc11mzKe7Jt2E5IVg+ZQ8K53YWZACtVTMBNO3iGuA+4ipjJxQ==
+ dependencies:
+ browserify-mime "~1.2.9"
+ extend "^3.0.2"
+ json-edm-parser "0.1.2"
+ md5.js "1.3.4"
+ readable-stream "~2.0.0"
+ request "^2.86.0"
+ underscore "~1.8.3"
+ uuid "^3.0.0"
+ validator "~9.4.1"
+ xml2js "0.2.8"
+ xmlbuilder "^9.0.7"
+
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
@@ -643,6 +728,11 @@ buffer-crc32@~0.2.3:
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
+buffer-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
+ integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74=
+
buffer-fill@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
@@ -653,6 +743,16 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+bytes@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+ integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+
+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==
+
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -681,16 +781,49 @@ cheerio@^1.0.0-rc.1:
lodash "^4.15.0"
parse5 "^3.0.1"
+cliui@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
+ integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^6.2.0"
+
+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.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+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"
+
co@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@@ -701,6 +834,18 @@ code-block-writer@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@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
color-support@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
@@ -725,6 +870,13 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies:
delayed-stream "~1.0.0"
+combined-stream@^1.0.6, combined-stream@~1.0.6:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ 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"
@@ -762,6 +914,13 @@ convert-source-map@1.X:
dependencies:
safe-buffer "~5.1.1"
+convert-source-map@^1.5.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+ integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
core-util-is@1.0.2, 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"
@@ -845,18 +1004,35 @@ debug@2.X, debug@^2.6.8:
dependencies:
ms "2.0.0"
-debug@^4.1.1:
+debug@4, debug@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
dependencies:
ms "^2.1.1"
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
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=
+define-properties@^1.1.3:
+ 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"
+
+delayed-stream@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.6.tgz#a2646cb7ec3d5d7774614670a7a65de0c173edbc"
+ integrity sha1-omRst+w9XXd0YUZwp6Zd4MFz7bw=
+
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -944,6 +1120,21 @@ duplexer2@0.0.2:
dependencies:
readable-stream "~1.1.9"
+duplexer@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
ecc-jsbn@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
@@ -963,7 +1154,12 @@ electron-osx-sign@^0.4.16:
minimist "^1.2.0"
plist "^3.0.1"
-end-of-stream@^1.1.0:
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
@@ -975,6 +1171,33 @@ entities@^1.1.1, entities@~1.1.1:
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1:
+ version "1.18.0-next.1"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68"
+ integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==
+ dependencies:
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+ is-callable "^1.2.2"
+ is-negative-zero "^2.0.0"
+ is-regex "^1.1.1"
+ object-inspect "^1.8.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.1"
+ string.prototype.trimend "^1.0.1"
+ string.prototype.trimstart "^1.0.1"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
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"
@@ -1005,6 +1228,19 @@ estraverse@^4.1.0, estraverse@^4.1.1:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+event-stream@3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
+ integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=
+ dependencies:
+ duplexer "~0.1.1"
+ from "~0"
+ map-stream "~0.1.0"
+ pause-stream "0.0.11"
+ split "0.3"
+ stream-combiner "~0.0.4"
+ through "~2.3.1"
+
execa@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
@@ -1026,6 +1262,11 @@ extend-shallow@^3.0.2:
assign-symbols "^1.0.0"
is-extendable "^1.0.1"
+extend@^3.0.0, extend@^3.0.2, extend@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
extend@~1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-1.2.1.tgz#a0f5fd6cfc83a5fe49ef698d60ec8a624dd4576c"
@@ -1050,11 +1291,26 @@ fancy-log@^1.1.0:
color-support "^1.1.3"
time-stamp "^1.0.0"
+fancy-log@^1.3.2:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7"
+ integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==
+ dependencies:
+ ansi-gray "^0.1.1"
+ color-support "^1.1.3"
+ parse-node-version "^1.0.0"
+ time-stamp "^1.0.0"
+
fast-deep-equal@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
fast-glob@^3.0.3:
version "3.0.4"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.0.4.tgz#d484a41005cb6faeb399b951fd1bd70ddaebb602"
@@ -1100,6 +1356,22 @@ find-replace@^3.0.0:
dependencies:
array-back "^3.0.1"
+find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+flush-write-stream@^1.0.2:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -1123,6 +1395,20 @@ form-data@~2.3.1:
combined-stream "1.0.6"
mime-types "^2.1.12"
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
+from@~0:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
+ integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=
+
fs-extra@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
@@ -1132,11 +1418,29 @@ fs-extra@^8.1.0:
jsonfile "^4.0.0"
universalify "^0.1.0"
+fs-mkdirp-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb"
+ integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=
+ dependencies:
+ graceful-fs "^4.1.11"
+ through2 "^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=
+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@^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"
@@ -1161,6 +1465,14 @@ github-releases@^0.4.1:
prettyjson "1.2.1"
request "2.81.0"
+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=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
glob-parent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954"
@@ -1168,6 +1480,22 @@ glob-parent@^5.0.0:
dependencies:
is-glob "^4.0.1"
+glob-stream@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4"
+ integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=
+ dependencies:
+ extend "^3.0.0"
+ glob "^7.1.1"
+ glob-parent "^3.1.0"
+ is-negated-glob "^1.0.0"
+ ordered-read-streams "^1.0.0"
+ pumpify "^1.3.5"
+ readable-stream "^2.1.5"
+ remove-trailing-separator "^1.0.1"
+ to-absolute-glob "^2.0.0"
+ unique-stream "^2.0.2"
+
glob@^7.0.6:
version "7.1.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
@@ -1180,10 +1508,10 @@ glob@^7.0.6:
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==
+glob@^7.1.1, glob@^7.1.6:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@@ -1192,10 +1520,10 @@ glob@^7.1.3:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.1.6:
- version "7.1.6"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
- integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+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"
@@ -1230,11 +1558,32 @@ graceful-fs@4.X:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+graceful-fs@^4.0.0, graceful-fs@^4.1.11:
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
+ integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
+
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-azure-storage@^0.11.1:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/gulp-azure-storage/-/gulp-azure-storage-0.11.1.tgz#0e5f5d0f789da11206f1e5a9311a6cf7107877d7"
+ integrity sha512-csOwItwZV1P9GLsORVQy+CFwjYDdHNrBol89JlHdlhGx0fTgJBc1COTRZbjGRyRjgdUuVguo3YLl4ToJ10/SIQ==
+ dependencies:
+ azure-storage "^2.10.2"
+ delayed-stream "0.0.6"
+ event-stream "3.3.4"
+ mime "^1.3.4"
+ progress "^1.1.8"
+ queue "^3.0.10"
+ streamifier "^0.1.1"
+ vinyl "^2.2.0"
+ vinyl-fs "^3.0.3"
+ yargs "^15.3.0"
+
gulp-bom@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/gulp-bom/-/gulp-bom-1.0.0.tgz#38a183a07187bd57a7922d37977441f379df2abf"
@@ -1243,6 +1592,18 @@ gulp-bom@^1.0.0:
gulp-util "^3.0.0"
through2 "^2.0.0"
+gulp-gzip@^1.4.2:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/gulp-gzip/-/gulp-gzip-1.4.2.tgz#0422a94014248655b5b1a9eea1c2abee1d4f4337"
+ integrity sha512-ZIxfkUwk2XmZPTT9pPHrHUQlZMyp9nPhg2sfoeN27mBGpi7OaHnOD+WCN41NXjfJQ69lV1nQ9LLm1hYxx4h3UQ==
+ dependencies:
+ ansi-colors "^1.0.1"
+ bytes "^3.0.0"
+ fancy-log "^1.3.2"
+ plugin-error "^1.0.0"
+ stream-to-array "^2.3.0"
+ through2 "^2.0.3"
+
gulp-sourcemaps@^1.11.0:
version "1.12.1"
resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.12.1.tgz#b437d1f3d980cf26e81184823718ce15ae6597b6"
@@ -1333,6 +1694,14 @@ har-validator@~5.0.3:
ajv "^5.1.0"
har-schema "^2.0.0"
+har-validator@~5.1.3:
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
+ integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
+ dependencies:
+ ajv "^6.12.3"
+ har-schema "^2.0.0"
+
has-ansi@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@@ -1347,6 +1716,18 @@ has-gulplog@^0.1.0:
dependencies:
sparkles "^1.0.0"
+has-symbols@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
+ integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+
+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"
+
hash-base@^3.0.0:
version "3.0.4"
resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
@@ -1415,12 +1796,18 @@ http-signature@~1.2.0:
jsprim "^1.2.2"
sshpk "^1.7.0"
-iconv-lite@0.4.23:
- version "0.4.23"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
- integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
+https-proxy-agent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b"
+ integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==
dependencies:
- safer-buffer ">= 2.1.2 < 3"
+ agent-base "5"
+ debug "4"
+
+iconv-lite-umd@0.6.8:
+ version "0.6.8"
+ resolved "https://registry.yarnpkg.com/iconv-lite-umd/-/iconv-lite-umd-0.6.8.tgz#5ad310ec126b260621471a2d586f7f37b9958ec0"
+ integrity sha512-zvXJ5gSwMC9JD3wDzH8CoZGc1pbiJn12Tqjk8BXYCnYz3hYL5GRjHW8LEykjXhV9WgNGI4rgpgHcbIiBfrRq6A==
ignore@^5.1.1:
version "5.1.2"
@@ -1435,7 +1822,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2:
+inherits@2, inherits@~2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -1453,6 +1840,21 @@ is-absolute@^1.0.0:
is-relative "^1.0.0"
is-windows "^1.0.1"
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-callable@^1.1.4, is-callable@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
+ integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
+
+is-date-object@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
+ integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
+
is-extendable@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
@@ -1460,11 +1862,23 @@ is-extendable@^1.0.1:
dependencies:
is-plain-object "^2.0.4"
-is-extglob@^2.1.1:
+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=
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
is-glob@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
@@ -1477,6 +1891,11 @@ is-negated-glob@^1.0.0:
resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=
+is-negative-zero@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
+ integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
+
is-number@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
@@ -1489,6 +1908,13 @@ is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
+is-regex@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
+ integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
+ dependencies:
+ has-symbols "^1.0.1"
+
is-relative@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
@@ -1501,6 +1927,13 @@ is-stream@^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.3"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
+ integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
+ dependencies:
+ has-symbols "^1.0.1"
+
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -1513,11 +1946,16 @@ is-unc-path@^1.0.0:
dependencies:
unc-path-regex "^0.1.2"
-is-utf8@^0.2.0:
+is-utf8@^0.2.0, is-utf8@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+is-valid-glob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa"
+ integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=
+
is-windows@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
@@ -1572,11 +2010,21 @@ json-schema-traverse@^0.3.0:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
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-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
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"
@@ -1589,6 +2037,11 @@ 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=
+jsonc-parser@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.0.tgz#7c7fc988ee1486d35734faaaa866fadb00fa91ee"
+ integrity sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==
+
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -1621,6 +2074,20 @@ lazy-debug-legacy@0.0.X:
resolved "https://registry.yarnpkg.com/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz#537716c0776e4cf79e3ed1b621f7658c2911b1b1"
integrity sha1-U3cWwHduTPeePtG2IfdljCkRsbE=
+lazystream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4"
+ integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=
+ dependencies:
+ readable-stream "^2.0.5"
+
+lead@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42"
+ integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=
+ dependencies:
+ flush-write-stream "^1.0.2"
+
linkify-it@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.0.3.tgz#d94a4648f9b1c179d64fa97291268bdb6ce9434f"
@@ -1628,6 +2095,13 @@ linkify-it@^2.0.0:
dependencies:
uc.micro "^1.0.1"
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
lodash._basecopy@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
@@ -1738,9 +2212,9 @@ lodash.unescape@4.0.1:
integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
lodash@^4.15.0, lodash@^4.17.10:
- version "4.17.11"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
- integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
+ version "4.17.19"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
+ integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
macos-release@^2.2.0:
version "2.3.0"
@@ -1759,6 +2233,11 @@ make-error@^1.2.0:
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8"
integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==
+map-stream@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
+ integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=
+
markdown-it@^8.3.1:
version "8.4.2"
resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54"
@@ -1796,6 +2275,11 @@ micromatch@^4.0.2:
braces "^3.0.1"
picomatch "^2.0.5"
+mime-db@1.44.0:
+ version "1.44.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
+ integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
+
mime-db@~1.30.0:
version "1.30.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
@@ -1820,6 +2304,13 @@ mime-types@~2.1.17:
dependencies:
mime-db "~1.33.0"
+mime-types@~2.1.19:
+ version "2.1.27"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
+ integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
+ dependencies:
+ mime-db "1.44.0"
+
mime@^1.3.4:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
@@ -1890,13 +2381,20 @@ node-fetch@^2.6.0:
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
-normalize-path@^2.0.1:
+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"
+now-and-later@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c"
+ integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==
+ dependencies:
+ once "^1.3.2"
+
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"
@@ -1916,6 +2414,11 @@ oauth-sign@~0.8.1, oauth-sign@~0.8.2:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
object-assign@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
@@ -1926,7 +2429,27 @@ object-assign@^3.0.0:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
+object-inspect@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
+ integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
+
+object-keys@^1.0.12, object-keys@^1.1.1:
+ 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.0.4, object.assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd"
+ integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.0"
+ has-symbols "^1.0.1"
+ object-keys "^1.1.1"
+
+once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
@@ -1941,6 +2464,13 @@ optimist@0.6.1:
minimist "~0.0.1"
wordwrap "~0.0.2"
+ordered-read-streams@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e"
+ integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=
+ dependencies:
+ readable-stream "^2.0.1"
+
os-homedir@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
@@ -1972,6 +2502,30 @@ p-finally@^1.0.0:
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.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==
+
+parse-node-version@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
parse-semver@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/parse-semver/-/parse-semver-1.1.1.tgz#9a4afd6df063dc4826f93fba4a99cf223f666cb8"
@@ -1986,6 +2540,16 @@ parse5@^3.0.1:
dependencies:
"@types/node" "*"
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
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"
@@ -2001,6 +2565,13 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+pause-stream@0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
+ integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=
+ dependencies:
+ through "~2.3"
+
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
@@ -2030,6 +2601,16 @@ plist@^3.0.1:
xmlbuilder "^9.0.7"
xmldom "0.1.x"
+plugin-error@^1.0.0:
+ 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"
+
prettyjson@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prettyjson/-/prettyjson-1.2.1.tgz#fcffab41d19cab4dfae5e575e64246619b12d289"
@@ -2043,6 +2624,11 @@ priorityqueuejs@^1.0.0:
resolved "https://registry.yarnpkg.com/priorityqueuejs/-/priorityqueuejs-1.0.0.tgz#2ee4f23c2560913e08c07ce5ccdd6de3df2c5af8"
integrity sha1-LuTyPCVgkT4IwHzlzN1t498sWvg=
+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"
@@ -2053,6 +2639,29 @@ process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
+progress@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+ integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=
+
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
+psl@^1.1.28:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+ integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
pump@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
@@ -2061,11 +2670,25 @@ pump@^3.0.0:
end-of-stream "^1.1.0"
once "^1.3.1"
+pumpify@^1.3.5:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
q@^1.0.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -2081,6 +2704,18 @@ qs@~6.5.1:
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==
+qs@~6.5.2:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+ integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
+
+queue@^3.0.10:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/queue/-/queue-3.1.0.tgz#6c49d01f009e2256788789f2bffac6b8b9990585"
+ integrity sha1-bEnQHwCeIlZ4h4nyv/rGuLmZBYU=
+ dependencies:
+ inherits "~2.0.0"
+
read@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
@@ -2088,6 +2723,19 @@ read@^1.0.7:
dependencies:
mute-stream "~0.0.4"
+readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.5, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ 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"
+
readable-stream@^2.1.5:
version "2.3.6"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
@@ -2132,6 +2780,23 @@ readable-stream@~2.0.0:
string_decoder "~0.10.x"
util-deprecate "~1.0.1"
+remove-bom-buffer@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53"
+ integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==
+ dependencies:
+ is-buffer "^1.1.5"
+ is-utf8 "^0.2.1"
+
+remove-bom-stream@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523"
+ integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=
+ dependencies:
+ remove-bom-buffer "^3.0.0"
+ safe-buffer "^5.1.0"
+ through2 "^2.0.3"
+
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"
@@ -2142,6 +2807,11 @@ replace-ext@0.0.1:
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=
+replace-ext@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a"
+ integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==
+
request@2.81.0, request@~2.81.0:
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
@@ -2198,6 +2868,49 @@ request@^2.85.0:
tunnel-agent "^0.6.0"
uuid "^3.1.0"
+request@^2.86.0:
+ version "2.88.2"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
+ integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.3"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.5.0"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
+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@^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==
+
+resolve-options@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131"
+ integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=
+ dependencies:
+ value-or-function "^3.0.0"
+
resolve-url@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
@@ -2218,6 +2931,11 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
+safe-buffer@^5.1.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
safe-buffer@^5.1.2:
version "5.2.0"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
@@ -2228,16 +2946,16 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-"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@0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.2.tgz#735ffaa39a1cff8ffb9598f0223abdb03a9fb2ea"
integrity sha1-c1/6o5oc/4/7lZjwIjq9sDqfsuo=
+sax@0.5.x:
+ version "0.5.8"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1"
+ integrity sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=
+
sax@>=0.6.0:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -2263,6 +2981,11 @@ semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+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"
@@ -2338,6 +3061,13 @@ sparkles@^1.0.0:
resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c"
integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==
+split@0.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
+ integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=
+ dependencies:
+ through "2"
+
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
@@ -2358,6 +3088,55 @@ sshpk@^1.7.0:
jsbn "~0.1.0"
tweetnacl "~0.14.0"
+stream-combiner@~0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
+ integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=
+ dependencies:
+ duplexer "~0.1.1"
+
+stream-shift@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+
+stream-to-array@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353"
+ integrity sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=
+ dependencies:
+ any-promise "^1.1.0"
+
+streamifier@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/streamifier/-/streamifier-0.1.1.tgz#97e98d8fa4d105d62a2691d1dc07e820db8dfc4f"
+ integrity sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8=
+
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
+ integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.0"
+
+string.prototype.trimend@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46"
+ integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+
+string.prototype.trimstart@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7"
+ integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.18.0-next.1"
+
string_decoder@^1.1.1, string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -2382,6 +3161,13 @@ strip-ansi@^3.0.0:
dependencies:
ansi-regex "^2.0.0"
+strip-ansi@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
+ integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
+ dependencies:
+ ansi-regex "^5.0.0"
+
strip-bom@2.X:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
@@ -2417,6 +3203,14 @@ terser@4.3.8:
source-map "~0.6.1"
source-map-support "~0.5.12"
+through2-filter@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"
+ integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==
+ dependencies:
+ through2 "~2.0.0"
+ xtend "~4.0.0"
+
through2@2.X, through2@^2.0.0, through2@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
@@ -2425,6 +3219,19 @@ through2@2.X, through2@^2.0.0, through2@^2.0.3:
readable-stream "^2.1.5"
xtend "~4.0.1"
+through2@~2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+through@2, through@~2.3, through@~2.3.1:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
time-stamp@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
@@ -2437,6 +3244,14 @@ tmp@0.0.29:
dependencies:
os-tmpdir "~1.0.1"
+to-absolute-glob@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b"
+ integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=
+ dependencies:
+ is-absolute "^1.0.0"
+ is-negated-glob "^1.0.0"
+
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"
@@ -2444,6 +3259,13 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
+to-through@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6"
+ integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=
+ dependencies:
+ through2 "^2.0.3"
+
tough-cookie@~2.3.0:
version "2.3.3"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
@@ -2458,6 +3280,14 @@ tough-cookie@~2.3.3:
dependencies:
punycode "^1.4.1"
+tough-cookie@~2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
ts-morph@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-3.1.3.tgz#bbfa1d14481ee23bdd1c030340ccf4a243cfc844"
@@ -2519,10 +3349,10 @@ typescript@^3.0.1:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977"
integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==
-typescript@^3.9.3:
- version "3.9.3"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a"
- integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==
+typescript@^4.2.0-dev.20201104:
+ version "4.2.0-dev.20201104"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.0-dev.20201104.tgz#9dca362fd423ac9391ef4a67bdc6f18537e9593c"
+ integrity sha512-MEnAcd0iwQySO+8F19KXGsX8WaHMda48j66I4qqUO8bknueGJUH/FdG9MakpApXd2Lzd9tlUMlOyT07dxeNsSQ==
typical@^4.0.0:
version "4.0.0"
@@ -2557,11 +3387,26 @@ 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==
+unique-stream@^2.0.2:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac"
+ integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==
+ dependencies:
+ json-stable-stringify-without-jsonify "^1.0.1"
+ through2-filter "^3.0.0"
+
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==
+uri-js@^4.2.2:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602"
+ integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==
+ dependencies:
+ punycode "^2.1.0"
+
urix@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
@@ -2597,6 +3442,16 @@ validator@~3.35.0:
resolved "https://registry.yarnpkg.com/validator/-/validator-3.35.0.tgz#3f07249402c1fc8fc093c32c6e43d72a79cca1dc"
integrity sha1-PwcklALB/I/Ak8MsbkPXKnnModw=
+validator@~9.4.1:
+ version "9.4.1"
+ resolved "https://registry.yarnpkg.com/validator/-/validator-9.4.1.tgz#abf466d398b561cd243050112c6ff1de6cc12663"
+ integrity sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA==
+
+value-or-function@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813"
+ integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=
+
verror@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
@@ -2606,6 +3461,42 @@ verror@1.10.0:
core-util-is "1.0.2"
extsprintf "^1.2.0"
+vinyl-fs@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7"
+ integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==
+ dependencies:
+ fs-mkdirp-stream "^1.0.0"
+ glob-stream "^6.1.0"
+ graceful-fs "^4.0.0"
+ is-valid-glob "^1.0.0"
+ lazystream "^1.0.0"
+ lead "^1.0.0"
+ object.assign "^4.0.4"
+ pumpify "^1.3.5"
+ readable-stream "^2.3.3"
+ remove-bom-buffer "^3.0.0"
+ remove-bom-stream "^1.2.0"
+ resolve-options "^1.1.0"
+ through2 "^2.0.0"
+ to-through "^2.0.0"
+ value-or-function "^3.0.0"
+ vinyl "^2.0.0"
+ vinyl-sourcemap "^1.1.0"
+
+vinyl-sourcemap@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16"
+ integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=
+ dependencies:
+ append-buffer "^1.0.2"
+ convert-source-map "^1.5.0"
+ graceful-fs "^4.1.6"
+ normalize-path "^2.1.1"
+ now-and-later "^2.0.0"
+ remove-bom-buffer "^3.0.0"
+ vinyl "^2.0.0"
+
vinyl-sourcemaps-apply@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705"
@@ -2631,6 +3522,18 @@ vinyl@^0.5.0:
clone-stats "^0.0.1"
replace-ext "0.0.1"
+vinyl@^2.0.0, vinyl@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974"
+ integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==
+ 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"
+
vsce@1.48.0:
version "1.48.0"
resolved "https://registry.yarnpkg.com/vsce/-/vsce-1.48.0.tgz#31c1a4c6909c3b8bdc48b3d32cc8c8e94c7113a2"
@@ -2654,19 +3557,22 @@ vsce@1.48.0:
yauzl "^2.3.1"
yazl "^2.2.2"
-vscode-ripgrep@^1.5.6:
- version "1.5.7"
- resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.5.7.tgz#acb6b548af488a4bca5d0f1bb5faf761343289ce"
- integrity sha512-/Vsz/+k8kTvui0q3O74pif9FK0nKopgFTiGNVvxicZANxtSA8J8gUE9GQ/4dpi7D/2yI/YVORszwVskFbz46hQ==
+vscode-ripgrep@^1.6.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/vscode-ripgrep/-/vscode-ripgrep-1.6.2.tgz#fb912c7465699f10ce0218a6676cc632c77369b4"
+ integrity sha512-jkZEWnQFcE+QuQFfxQXWcWtDafTmgkp3DjMKawDkajZwgnDlGKpFp15ybKrZNVTi1SLEF/12BzxYSZVVZ2XrkA==
+ dependencies:
+ https-proxy-agent "^4.0.0"
+ proxy-from-env "^1.1.0"
-vscode-telemetry-extractor@^1.5.4:
- version "1.5.4"
- resolved "https://registry.yarnpkg.com/vscode-telemetry-extractor/-/vscode-telemetry-extractor-1.5.4.tgz#bcb0d17667fa1b77715e3a3bf372ade18f846782"
- integrity sha512-MN9LNPo0Rc6cy3sIWTAG97PTWkEKdRnP0VeYoS8vjKSNtG9CAsrUxHgFfYoHm2vNK/ijd0a4NzETyVGO2kT6hw==
+vscode-telemetry-extractor@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/vscode-telemetry-extractor/-/vscode-telemetry-extractor-1.6.0.tgz#e9d9c1d24863cce8d3d715f0287de3b31eb90c56"
+ integrity sha512-zSxvkbyAMa1lTRGIHfGg7gW2e9Sey+2zGYD19uNWCsVEfoXAr2NB6uzb0sNHtbZ2SSqxSePmFXzBAavsudT5fw==
dependencies:
command-line-args "^5.1.1"
ts-morph "^3.1.3"
- vscode-ripgrep "^1.5.6"
+ vscode-ripgrep "^1.6.2"
vso-node-api@6.1.2-preview:
version "6.1.2-preview"
@@ -2678,6 +3584,11 @@ vso-node-api@6.1.2-preview:
typed-rest-client "^0.9.0"
underscore "^1.8.3"
+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.2.9:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
@@ -2697,6 +3608,15 @@ wordwrap@~0.0.2:
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -2709,6 +3629,13 @@ xml2js@0.2.7:
dependencies:
sax "0.5.2"
+xml2js@0.2.8:
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.2.8.tgz#9b81690931631ff09d1957549faf54f4f980b3c2"
+ integrity sha1-m4FpCTFjH/CdGVdUn69U9PmAs8I=
+ dependencies:
+ sax "0.5.x"
+
xml2js@^0.4.17:
version "0.4.19"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
@@ -2737,11 +3664,46 @@ xmldom@0.1.x:
resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff"
integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==
+xtend@~4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
xtend@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+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@^18.1.2:
+ version "18.1.3"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs@^15.3.0:
+ version "15.4.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
+ integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
+ dependencies:
+ cliui "^6.0.0"
+ decamelize "^1.2.0"
+ find-up "^4.1.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^4.2.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^18.1.2"
+
yauzl@^2.3.1:
version "2.10.0"
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
diff --git a/cglicenses.json b/cglicenses.json
index fcbac22e310..56f92bef6c5 100644
--- a/cglicenses.json
+++ b/cglicenses.json
@@ -19,7 +19,7 @@
]
},
{
- // Reason: The license at https://github.com/Microsoft/TypeScript/blob/master/LICENSE.txt
+ // Reason: The license at https://github.com/microsoft/TypeScript/blob/master/LICENSE.txt
// does not include a clear Copyright statement.
"name": "typescript",
"prependLicenseText": [
@@ -200,6 +200,194 @@
},
{
"name": "big-integer",
- "prependLicenseText": ["Copyright released to public domain"]
+ "prependLicenseText": [
+ "Copyright released to public domain"
+ ]
+ },
+ {
+ // Reason: The license at https://github.com/justmoon/node-extend/blob/main/LICENSE
+ // cannot be found by the OSS tool automatically.
+ "name": "extend",
+ "fullLicenseText": [
+ "The MIT License (MIT)",
+ "",
+ "Copyright (c) 2014 Stefan Thomas",
+ "",
+ "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."
+ ]
+ },
+ {
+ // Reason: The license at https://github.com/retep998/winapi-rs/blob/0.3/LICENSE-MIT
+ // cannot be found by the OSS tool automatically.
+ "name": "retep998/winapi-rs",
+ "fullLicenseText": [
+ "Copyright (c) 2015-2018 The winapi-rs Developers",
+ "",
+ "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."
+ ]
+ },
+ {
+ // Reason: The license at https://github.com/digitaldesignlabs/es6-promisify/blob/main/LICENSE
+ // cannot be found by the OSS tool automatically.
+ "name": "es6-promisify",
+ "fullLicenseText": [
+ "Copyright (c) 2014 Mike Hall / Digital Design Labs",
+ "",
+ "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."
+ ]
+ },
+ {
+ // Reason: The license at https://github.com/zkat/json-parse-better-errors/blob/latest/LICENSE.md
+ // cannot be found by the OSS tool automatically.
+ "name": "json-parse-better-errors",
+ "fullLicenseText": [
+ "Copyright 2017 Kat Marchán",
+ "",
+ "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."
+ ]
+ },
+ {
+ // Reason: The license at https://github.com/time-rs/time/blob/main/LICENSE-MIT
+ // cannot be found by the OSS tool automatically.
+ "name": "time-rs/time",
+ "fullLicenseText": [
+ "Copyright (c) 2019 Jacob Pratt",
+ "",
+ "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."
+ ]
+ },
+ {
+ // Reason: The license at https://github.com/colorjs/color-name/blob/master/LICENSE
+ // cannot be found by the OSS tool automatically.
+ "name": "color-name",
+ "fullLicenseText": [
+ "The MIT License (MIT)",
+ "Copyright (c) 2015 Dmitry Ivanov",
+ "",
+ "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."
+ ]
+ },
+ {
+ // Reason: The license cannot be found by the tool due to access controls on the repository
+ "name": "tas-client-umd",
+ "fullLicenseText": [
+ "MIT License",
+ "Copyright (c) 2020 - present Microsoft Corporation",
+ "",
+ "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."
+ ]
+ },
+ {
+ // Reason: The license at https://github.com/acornjs/acorn/blob/master/acorn/LICENSE
+ // cannot be found by the OSS tool automatically.
+ "name": "acorn",
+ "fullLicenseText": [
+ "MIT License",
+ "Copyright (C) 2012-2018 by various contributors (see AUTHORS)",
+ "",
+ "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."
+ ]
+ },
+ {
+ // Reason: The license at https://github.com/acornjs/acorn/blob/master/acorn-loose/LICENSE
+ // cannot be found by the OSS tool automatically.
+ "name": "acorn-loose",
+ "fullLicenseText": [
+ "MIT License",
+ "Copyright (C) 2012-2018 by various contributors (see AUTHORS)",
+ "",
+ "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
diff --git a/cgmanifest.json b/cgmanifest.json
index f1ce13c7205..bd95a0d80b0 100644
--- a/cgmanifest.json
+++ b/cgmanifest.json
@@ -6,7 +6,7 @@
"git": {
"name": "chromium",
"repositoryUrl": "https://chromium.googlesource.com/chromium/src",
- "commitHash": "e4745133a1d3745f066e068b8033c6a269b59caf"
+ "commitHash": "894fb9eb56c6cbda65e3c3ae9ada6d4cb5850cc9"
}
},
"licenseDetail": [
@@ -40,7 +40,7 @@
"SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
],
"isOnlyProductionDependency": true,
- "version": "78.0.3904.130"
+ "version": "83.0.4103.122"
},
{
"component": {
@@ -48,11 +48,11 @@
"git": {
"name": "nodejs",
"repositoryUrl": "https://github.com/nodejs/node",
- "commitHash": "787378879acfb212ed4ff824bf9f767a24a5cb43a"
+ "commitHash": "9622fed3fb2cffcea9efff6c8cb4cc2def99d75d"
}
},
"isOnlyProductionDependency": true,
- "version": "12.8.1"
+ "version": "12.14.1"
},
{
"component": {
@@ -60,12 +60,12 @@
"git": {
"name": "electron",
"repositoryUrl": "https://github.com/electron/electron",
- "commitHash": "8f502de1dc5b6df4218a900d0857de7a40301d98"
+ "commitHash": "0b5f24002b4f18adee112ed39fe269aa51f6705c"
}
},
"isOnlyProductionDependency": true,
"license": "MIT",
- "version": "7.3.0"
+ "version": "9.3.3"
},
{
"component": {
@@ -77,6 +77,40 @@
}
},
"isOnlyProductionDependency": true,
+ "licenseDetail": [
+ "Inno Setup License",
+ "==================",
+ "",
+ "Except where otherwise noted, all of the documentation and software included in the Inno Setup",
+ "package is copyrighted by Jordan Russell.",
+ "",
+ "Copyright (C) 1997-2020 Jordan Russell. All rights reserved.",
+ "Portions Copyright (C) 2000-2020 Martijn Laan. All rights reserved.",
+ "",
+ "This software is provided \"as-is,\" without any express or implied warranty. In no event shall the",
+ "author be held liable for any damages arising from the use of this software.",
+ "",
+ "Permission is granted to anyone to use this software for any purpose, including commercial",
+ "applications, and to alter and redistribute it, provided that the following conditions are met:",
+ "",
+ "1. All redistributions of source code files must retain all copyright notices that are currently in",
+ " place, and this list of conditions without modification.",
+ "",
+ "2. All redistributions in binary form must retain all occurrences of the above copyright notice and",
+ " web site addresses that are currently in place (for example, in the About boxes).",
+ "",
+ "3. The origin of this software must not be misrepresented; you must not claim that you wrote the",
+ " original software. If you use this software to distribute a product, an acknowledgment in the",
+ " product documentation would be appreciated but is not required.",
+ "",
+ "4. Modified versions in source or binary form must be plainly marked as such, and must not be",
+ " misrepresented as being the original software.",
+ "",
+ "",
+ "Jordan Russell",
+ "jr-2010 AT jrsoftware.org",
+ "https://jrsoftware.org/"
+ ],
"version": "5.5.6"
},
{
@@ -499,7 +533,7 @@
"git": {
"name": "ripgrep",
"repositoryUrl": "https://github.com/BurntSushi/ripgrep",
- "commitHash": "8a7db1a918e969b85cd933d8ed9fa5285b281ba4"
+ "commitHash": "973de50c9ef451da2cfcdfa86f2b2711d8d6ff48"
}
},
"isOnlyProductionDependency": true,
diff --git a/extensions/bat/language-configuration.json b/extensions/bat/language-configuration.json
index 17bc92f6a91..e205fb5f5c4 100644
--- a/extensions/bat/language-configuration.json
+++ b/extensions/bat/language-configuration.json
@@ -1,6 +1,6 @@
{
"comments": {
- "lineComment": "REM"
+ "lineComment": "@REM"
},
"brackets": [
["{", "}"],
@@ -22,8 +22,8 @@
],
"folding": {
"markers": {
- "start": "^\\s*(::\\s*|REM\\s+)#region",
- "end": "^\\s*(::\\s*|REM\\s+)#endregion"
+ "start": "^\\s*(::|REM|@REM)\\s*#region",
+ "end": "^\\s*(::|REM|@REM)\\s*#endregion"
}
}
}
diff --git a/extensions/cgmanifest.json b/extensions/cgmanifest.json
index 6c12dba86ad..03cf0cef986 100644
--- a/extensions/cgmanifest.json
+++ b/extensions/cgmanifest.json
@@ -5,7 +5,7 @@
"type": "git",
"git": {
"name": "typescript",
- "repositoryUrl": "https://github.com/Microsoft/TypeScript",
+ "repositoryUrl": "https://github.com/microsoft/TypeScript",
"commitHash": "54426a14f4c232da8e563d20ca8e71263e1c96b5"
}
},
diff --git a/extensions/configuration-editing/.vscodeignore b/extensions/configuration-editing/.vscodeignore
index f12c396fd04..de8e6dc5913 100644
--- a/extensions/configuration-editing/.vscodeignore
+++ b/extensions/configuration-editing/.vscodeignore
@@ -3,4 +3,5 @@ src/**
tsconfig.json
out/**
extension.webpack.config.js
+extension-browser.webpack.config.js
yarn.lock
diff --git a/src/vs/code/electron-browser/processExplorer/processExplorer.js b/extensions/configuration-editing/extension-browser.webpack.config.js
similarity index 57%
rename from src/vs/code/electron-browser/processExplorer/processExplorer.js
rename to extensions/configuration-editing/extension-browser.webpack.config.js
index d05816f9915..de941625373 100644
--- a/src/vs/code/electron-browser/processExplorer/processExplorer.js
+++ b/extensions/configuration-editing/extension-browser.webpack.config.js
@@ -4,10 +4,18 @@
*--------------------------------------------------------------------------------------------*/
//@ts-check
+
'use strict';
-const bootstrapWindow = require('../../../../bootstrap-window');
+const withBrowserDefaults = require('../shared.webpack.config').browser;
+
+module.exports = withBrowserDefaults({
+ context: __dirname,
+ entry: {
+ extension: './src/configurationEditingMain.ts'
+ },
+ output: {
+ filename: 'configurationEditingMain.js'
+ }
+});
-bootstrapWindow.load(['vs/code/electron-browser/processExplorer/processExplorerMain'], function (processExplorer, configuration) {
- processExplorer.startup(configuration.data);
-}, { forceEnableDeveloperKeybindings: true });
\ No newline at end of file
diff --git a/extensions/configuration-editing/extension.webpack.config.js b/extensions/configuration-editing/extension.webpack.config.js
index b474e65cbb1..1b18dd86a99 100644
--- a/extensions/configuration-editing/extension.webpack.config.js
+++ b/extensions/configuration-editing/extension.webpack.config.js
@@ -12,7 +12,10 @@ const withDefaults = require('../shared.webpack.config');
module.exports = withDefaults({
context: __dirname,
entry: {
- extension: './src/extension.ts',
+ extension: './src/configurationEditingMain.ts',
+ },
+ output: {
+ filename: 'configurationEditingMain.js'
},
resolve: {
mainFields: ['module', 'main']
diff --git a/extensions/configuration-editing/package.json b/extensions/configuration-editing/package.json
index f929c260fd5..3afe9fa4332 100644
--- a/extensions/configuration-editing/package.json
+++ b/extensions/configuration-editing/package.json
@@ -12,7 +12,8 @@
"onLanguage:json",
"onLanguage:jsonc"
],
- "main": "./out/extension",
+ "main": "./out/configurationEditingMain",
+ "browser": "./dist/browser/configurationEditingMain",
"scripts": {
"compile": "gulp compile-extension:configuration-editing",
"watch": "gulp watch-extension:configuration-editing"
@@ -53,7 +54,7 @@
"url": "vscode://schemas/keybindings"
},
{
- "fileMatch": "vscode://defaultsettings/*/*.json",
+ "fileMatch": "vscode://defaultsettings/*.json",
"url": "vscode://schemas/settings/default"
},
{
@@ -116,6 +117,10 @@
"fileMatch": "/.devcontainer.json",
"url": "./schemas/devContainer.schema.json"
},
+ {
+ "fileMatch": "%APP_SETTINGS_HOME%/globalStorage/ms-vscode-remote.remote-containers/nameConfigs/*.json",
+ "url": "./schemas/attachContainer.schema.json"
+ },
{
"fileMatch": "%APP_SETTINGS_HOME%/globalStorage/ms-vscode-remote.remote-containers/imageConfigs/*.json",
"url": "./schemas/attachContainer.schema.json"
diff --git a/extensions/configuration-editing/schemas/attachContainer.schema.json b/extensions/configuration-editing/schemas/attachContainer.schema.json
index 015e32e8018..b3b86533397 100644
--- a/extensions/configuration-editing/schemas/attachContainer.schema.json
+++ b/extensions/configuration-editing/schemas/attachContainer.schema.json
@@ -21,7 +21,7 @@
},
"settings": {
"$ref": "vscode://schemas/settings/machine",
- "description": "Machine specific settings that should be copied into the container."
+ "description": "Machine specific settings that should be copied into the container. These are only copied when connecting to the container for the first time."
},
"remoteEnv": {
"type": "object",
@@ -31,7 +31,7 @@
"null"
]
},
- "description": "Remote environment variables."
+ "description": "Remote environment variables. If these are used in the Integrated Terminal, make sure the 'Terminal > Integrated: Inherit Env' setting is enabled."
},
"remoteUser": {
"type": "string",
@@ -42,8 +42,28 @@
"description": "An array of extensions that should be installed into the container.",
"items": {
"type": "string",
- "pattern": "^([a-z0-9A-Z][a-z0-9\\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\\-A-Z]*)$",
- "errorMessage": "Expected format '${publisher}.${name}'. Example: 'vscode.csharp'."
+ "pattern": "^([a-z0-9A-Z][a-z0-9\\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\\-A-Z]*)(@(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)?$",
+ "errorMessage": "Expected format: '${publisher}.${name}' or '${publisher}.${name}@${version}'. Example: 'ms-dotnettools.csharp'."
+ }
+ },
+ "userEnvProbe": {
+ "type": "string",
+ "enum": [
+ "none",
+ "loginShell",
+ "loginInteractiveShell",
+ "interactiveShell"
+ ],
+ "description": "User environment probe to run. The default is none."
+ },
+ "postAttachCommand": {
+ "type": [
+ "string",
+ "array"
+ ],
+ "description": "A command to run after attaching to 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"
}
}
}
diff --git a/extensions/configuration-editing/schemas/devContainer.schema.json b/extensions/configuration-editing/schemas/devContainer.schema.json
index 5a69d57057b..0395a1b3751 100644
--- a/extensions/configuration-editing/schemas/devContainer.schema.json
+++ b/extensions/configuration-editing/schemas/devContainer.schema.json
@@ -17,13 +17,13 @@
"description": "An array of extensions that should be installed into the container.",
"items": {
"type": "string",
- "pattern": "^([a-z0-9A-Z][a-z0-9\\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\\-A-Z]*)$",
- "errorMessage": "Expected format '${publisher}.${name}'. Example: 'vscode.csharp'."
+ "pattern": "^([a-z0-9A-Z][a-z0-9\\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\\-A-Z]*)(@(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)?$",
+ "errorMessage": "Expected format: '${publisher}.${name}' or '${publisher}.${name}@${version}'. Example: 'ms-dotnettools.csharp'."
}
},
"settings": {
"$ref": "vscode://schemas/settings/machine",
- "description": "Machine specific settings that should be copied into the container."
+ "description": "Machine specific settings that should be copied into the container. These are only copied when connecting to the container for the first time, rebuilding the container then triggers it again."
},
"forwardPorts": {
"type": "array",
@@ -42,7 +42,7 @@
"null"
]
},
- "description": "Remote environment variables."
+ "description": "Remote environment variables. If these are used in the Integrated Terminal, make sure the 'Terminal > Integrated: Inherit Env' setting is enabled."
},
"remoteUser": {
"type": "string",
@@ -68,9 +68,43 @@
"type": "string"
}
},
+ "postStartCommand": {
+ "type": [
+ "string",
+ "array"
+ ],
+ "description": "A command to run after starting 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"
+ }
+ },
+ "postAttachCommand": {
+ "type": [
+ "string",
+ "array"
+ ],
+ "description": "A command to run after attaching to 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."
+ },
+ "userEnvProbe": {
+ "type": "string",
+ "enum": [
+ "none",
+ "loginShell",
+ "loginInteractiveShell",
+ "interactiveShell"
+ ],
+ "description": "User environment probe to run. The default is none."
+ },
+ "codespaces": {
+ "type": "object",
+ "description": "Codespaces-specific configuration."
}
}
},
@@ -264,7 +298,7 @@
},
"workspaceFolder": {
"type": "string",
- "description": "The path of the workspace folder inside the container."
+ "description": "The path of the workspace folder inside the container. This is typically the target path of a volume mount in the docker-compose.yml."
},
"shutdownAction": {
"type": "string",
diff --git a/extensions/configuration-editing/src/extension.ts b/extensions/configuration-editing/src/configurationEditingMain.ts
similarity index 100%
rename from extensions/configuration-editing/src/extension.ts
rename to extensions/configuration-editing/src/configurationEditingMain.ts
diff --git a/extensions/configuration-editing/src/settingsDocumentHelper.ts b/extensions/configuration-editing/src/settingsDocumentHelper.ts
index 4a7f80c2a2a..5e466c2eb6f 100644
--- a/extensions/configuration-editing/src/settingsDocumentHelper.ts
+++ b/extensions/configuration-editing/src/settingsDocumentHelper.ts
@@ -42,11 +42,11 @@ export class SettingsDocument {
});
}
- // sync.ignoredExtensions
- if (location.path[0] === 'sync.ignoredExtensions') {
+ // settingsSync.ignoredExtensions
+ if (location.path[0] === 'settingsSync.ignoredExtensions') {
let ignoredExtensions = [];
try {
- ignoredExtensions = parse(this.document.getText())['sync.ignoredExtensions'];
+ ignoredExtensions = parse(this.document.getText())['settingsSync.ignoredExtensions'];
} catch (e) {/* ignore error */ }
return provideInstalledExtensionProposals(ignoredExtensions, range, true);
}
@@ -223,7 +223,7 @@ export class SettingsDocument {
if (location.path.length === 1 && location.previousNode && typeof location.previousNode.value === 'string' && location.previousNode.value.startsWith('[')) {
// Suggestion model word matching includes closed sqaure bracket and ending quote
// Hence include them in the proposal to replace
- let range = this.document.getWordRangeAtPosition(position) || new vscode.Range(position, position);
+ const range = this.document.getWordRangeAtPosition(position) || new vscode.Range(position, position);
return this.provideLanguageCompletionItemsForLanguageOverrides(location, range, language => `"[${language}]"`);
}
return Promise.resolve([]);
diff --git a/extensions/cpp/build/update-grammars.js b/extensions/cpp/build/update-grammars.js
index e6293eb2e89..28b4ca9236f 100644
--- a/extensions/cpp/build/update-grammars.js
+++ b/extensions/cpp/build/update-grammars.js
@@ -6,9 +6,9 @@
var updateGrammar = require('../../../build/npm/update-grammar');
-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/');
-updateGrammar.update('jeff-hykin/cpp-textmate-grammar', '/syntaxes/cpp.embedded.macro.tmLanguage.json', './syntaxes/cpp.embedded.macro.tmLanguage.json', undefined, 'master', 'source/languages/cpp/');
+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/');
+updateGrammar.update('jeff-hykin/cpp-textmate-grammar', 'syntaxes/cpp.embedded.macro.tmLanguage.json', './syntaxes/cpp.embedded.macro.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 1690f2220d1..05938de60d9 100644
--- a/extensions/cpp/cgmanifest.json
+++ b/extensions/cpp/cgmanifest.json
@@ -6,11 +6,11 @@
"git": {
"name": "jeff-hykin/cpp-textmate-grammar",
"repositoryUrl": "https://github.com/jeff-hykin/cpp-textmate-grammar",
- "commitHash": "666808cab3907fc91ed4d3901060ee6b045cca58"
+ "commitHash": "ad9f1541fd376740c30a7257614c9cb5ed25005d"
}
},
"license": "MIT",
- "version": "1.14.15",
+ "version": "1.15.3",
"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."
},
{
@@ -19,7 +19,7 @@
"git": {
"name": "textmate/c.tmbundle",
"repositoryUrl": "https://github.com/textmate/c.tmbundle",
- "commitHash": "9aa365882274ca52f01722f3dbb169b9539a20ee"
+ "commitHash": "60daf83b9d45329524f7847a75e9298b3aae5805"
}
},
"licenseDetail": [
@@ -42,4 +42,4 @@
}
],
"version": 1
-}
+}
\ No newline at end of file
diff --git a/extensions/cpp/package.json b/extensions/cpp/package.json
index e02009fb57f..1c8a244d285 100644
--- a/extensions/cpp/package.json
+++ b/extensions/cpp/package.json
@@ -34,7 +34,8 @@
".c++",
".hpp",
".hh",
- ".hxx",
+ ".hxx",
+ ".h++",
".h",
".ii",
".ino",
diff --git a/extensions/cpp/syntaxes/c.tmLanguage.json b/extensions/cpp/syntaxes/c.tmLanguage.json
index eef07eeb53d..952730f5a0e 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/jeff-hykin/cpp-textmate-grammar/blob/master//syntaxes/c.tmLanguage.json",
+ "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/jeff-hykin/cpp-textmate-grammar/commit/72b309aabb63bf14a3cdf0280149121db005d616",
+ "version": "https://github.com/jeff-hykin/cpp-textmate-grammar/commit/afa42b3f5529833714ae354fbc638ece8f253074",
"name": "C",
"scopeName": "source.c",
"patterns": [
@@ -364,7 +364,7 @@
{
"name": "meta.function.c",
"begin": "(?\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:\\n|$)",
+ "captures": {
"1": {
- "name": "meta.encoding.c"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"2": {
- "name": "punctuation.definition.string.begin.assembly.c"
- }
- },
- "end": "(\")",
- "endCaptures": {
- "1": {
- "name": "punctuation.definition.string.end.assembly.c"
- }
- },
- "patterns": [
- {
- "include": "source.asm"
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
},
- {
- "include": "source.x86"
+ "3": {
+ "name": "comment.block.c"
},
- {
- "include": "source.x86_64"
- },
- {
- "include": "source.arm"
- },
- {
- "include": "#backslash_escapes"
- },
- {
- "include": "#string_escaped_char"
- },
- {
- "match": "(?=not)possible"
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
}
- ]
- },
- {
- "begin": "(\\()",
- "beginCaptures": {
- "1": {
- "name": "punctuation.section.parens.begin.bracket.round.assembly.inner.c"
- }
- },
- "end": "(\\))",
- "endCaptures": {
- "1": {
- "name": "punctuation.section.parens.end.bracket.round.assembly.inner.c"
- }
- },
- "patterns": [
- {
- "include": "#evaluation_context"
- }
- ]
- },
- {
- "match": ":",
- "name": "punctuation.separator.delimiter.colon.assembly.c"
+ }
},
{
"include": "#comments_context"
},
{
"include": "#comments"
+ },
+ {
+ "begin": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.begin.bracket.round.assembly.c"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "4": {
+ "name": "comment.block.c"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.assembly.c"
+ }
+ },
+ "patterns": [
+ {
+ "name": "string.quoted.double.c",
+ "contentName": "meta.embedded.assembly.c",
+ "begin": "(R?)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.encoding.c"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.assembly.c"
+ }
+ },
+ "end": "(\")",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.assembly.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.asm"
+ },
+ {
+ "include": "source.x86"
+ },
+ {
+ "include": "source.x86_64"
+ },
+ {
+ "include": "source.arm"
+ },
+ {
+ "include": "#backslash_escapes"
+ },
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.begin.bracket.round.assembly.inner.c"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.assembly.inner.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "\\[((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))([a-zA-Z_]\\w*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\]",
+ "captures": {
+ "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": "variable.other.asm.label.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.delimiter.colon.assembly.c"
+ },
+ {
+ "include": "#comments_context"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
}
]
}
@@ -3194,4 +3342,4 @@
"name": "punctuation.vararg-ellipses.c"
}
}
-}
+}
\ No newline at end of file
diff --git a/extensions/cpp/syntaxes/cpp.embedded.macro.tmLanguage.json b/extensions/cpp/syntaxes/cpp.embedded.macro.tmLanguage.json
index 4c0e9a582cf..151cad6feb2 100644
--- a/extensions/cpp/syntaxes/cpp.embedded.macro.tmLanguage.json
+++ b/extensions/cpp/syntaxes/cpp.embedded.macro.tmLanguage.json
@@ -1,10 +1,10 @@
{
"information_for_contributors": [
- "This file has been converted from https://github.com/jeff-hykin/cpp-textmate-grammar/blob/master//syntaxes/cpp.embedded.macro.tmLanguage.json",
+ "This file has been converted from https://github.com/jeff-hykin/cpp-textmate-grammar/blob/master/syntaxes/cpp.embedded.macro.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/jeff-hykin/cpp-textmate-grammar/commit/666808cab3907fc91ed4d3901060ee6b045cca58",
+ "version": "https://github.com/jeff-hykin/cpp-textmate-grammar/commit/ad9f1541fd376740c30a7257614c9cb5ed25005d",
"name": "C++",
"scopeName": "source.cpp.embedded.macro",
"patterns": [
@@ -27,13 +27,13 @@
"include": "#using_namespace"
},
{
- "include": "#type_alias"
+ "include": "source.cpp#type_alias"
},
{
- "include": "#using_name"
+ "include": "source.cpp#using_name"
},
{
- "include": "#namespace_alias"
+ "include": "source.cpp#namespace_alias"
},
{
"include": "#namespace_block"
@@ -51,10 +51,10 @@
"include": "#typedef_union"
},
{
- "include": "#typedef_keyword"
+ "include": "source.cpp#misc_keywords"
},
{
- "include": "#standard_declares"
+ "include": "source.cpp#standard_declares"
},
{
"include": "#class_block"
@@ -69,13 +69,13 @@
"include": "#enum_block"
},
{
- "include": "#template_isolated_definition"
+ "include": "source.cpp#template_isolated_definition"
},
{
"include": "#template_definition"
},
{
- "include": "#access_control_keywords"
+ "include": "source.cpp#access_control_keywords"
},
{
"include": "#block"
@@ -94,56 +94,20 @@
}
],
"repository": {
- "access_control_keywords": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(((?:protected|private|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"
- }
- }
- },
"alignas_attribute": {
- "name": "support.other.attribute.cpp",
- "begin": "(alignas\\()",
+ "begin": "alignas\\(",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\n)|$)",
+ "captures": {
"1": {
- "name": "meta.encoding.cpp"
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
},
"2": {
- "name": "punctuation.definition.string.begin.assembly.cpp"
- }
- },
- "end": "(\")|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\(",
+ "end": "\\)|(?=(?(?:\\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)))\\]",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#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.other.asm.label.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.delimiter.colon.assembly.cpp"
+ },
+ {
+ "include": "#comments_context"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
}
]
},
- "assignment_operator": {
- "match": "\\=",
- "name": "keyword.operator.assignment.cpp"
- },
"attributes_context": {
"patterns": [
{
@@ -402,24 +489,20 @@
}
]
},
- "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.cpp"
- },
"block": {
- "name": "meta.block.cpp",
- "begin": "({)",
+ "begin": "{",
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "(?:\\s)*+(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "source.cpp#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -768,134 +804,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "source.cpp#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- ]
- }
- }
- },
- "comma": {
- "match": ",",
- "name": "punctuation.separator.delimiter.comma.cpp"
- },
- "comma_in_template_argument": {
- "match": ",",
- "name": "punctuation.separator.delimiter.comma.template.argument.cpp"
- },
"comments": {
"patterns": [
{
- "name": "comment.line.double-slash.documentation.cpp",
- "begin": "(?:^)(?>\\s*)(\\/\\/[!\\/]+)",
+ "begin": "^(?:(?:\\s)+)?+(\\/\\/[!\\/]+)",
+ "end": "(?<=\\n)(?|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1186,7 +939,7 @@
}
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1197,7 +950,7 @@
}
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1216,22 +969,30 @@
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@]param)\\s+(\\b\\w+\\b)",
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:(?:\\s)+)?(?:in|out)(?:(?:\\s)+)?)+)\\])?(?:\\s)+(\\b\\w+\\b)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
},
"2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.cpp"
+ }
+ ]
+ },
+ "3": {
"name": "variable.parameter.cpp"
}
}
},
{
- "match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
@@ -1253,7 +1014,7 @@
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1264,7 +1025,7 @@
}
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1275,7 +1036,7 @@
}
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1294,22 +1055,30 @@
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@]param)\\s+(\\b\\w+\\b)",
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:(?:\\s)+)?(?:in|out)(?:(?:\\s)+)?)+)\\])?(?:\\s)+(\\b\\w+\\b)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
},
"2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.cpp"
+ }
+ ]
+ },
+ "3": {
"name": "variable.parameter.cpp"
}
}
},
{
- "match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
@@ -1325,26 +1094,26 @@
"name": "comment.block.documentation.cpp"
},
{
- "name": "comment.block.documentation.cpp",
- "begin": "((?>\\s*)\\/\\*[!*]+(?:(?:\\n|$)|(?=\\s)))",
+ "begin": "(?:(?:\\s)+)?+\\/\\*[!*]+(?:(?:(?:\\n)|$)|(?=\\s))",
+ "end": "[!*]*\\*\\/|(?=(?|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1355,7 +1124,7 @@
}
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1366,7 +1135,7 @@
}
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1385,22 +1154,30 @@
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@]param)\\s+(\\b\\w+\\b)",
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:(?:\\s)+)?(?:in|out)(?:(?:\\s)+)?)+)\\])?(?:\\s)+(\\b\\w+\\b)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
},
"2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.cpp"
+ }
+ ]
+ },
+ "3": {
"name": "variable.parameter.cpp"
}
}
},
{
- "match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
@@ -1410,7 +1187,7 @@
]
},
{
- "include": "#emacs_file_banner"
+ "include": "source.cpp#emacs_file_banner"
},
{
"include": "#block_comment"
@@ -1419,31 +1196,31 @@
"include": "#line_comment"
},
{
- "include": "#invalid_comment_end"
+ "include": "source.cpp#invalid_comment_end"
}
]
},
"constructor_inline": {
- "name": "meta.function.definition.special.constructor.cpp",
- "begin": "(^((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?:constexpr|explicit|mutable|virtual|inline|friend)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": {
+ "match": "(\\=)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))",
+ "captures": {
"1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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": "source.cpp#functional_specifiers_pre_parameters"
+ },
+ {
+ "begin": ":",
+ "end": "(?=\\{)|(?=(?(?:(?>[^<>]*)\\g<3>?)+)>)\\s*)?(\\()",
+ "begin": "((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?(\\()",
+ "end": "\\)|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?::)*)(((?>(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))::((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\16((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\()))",
+ "begin": "\\s*+((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)(((?>(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))::((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\14((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": {
+ "match": "(\\=)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))",
+ "captures": {
"1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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": "source.cpp#functional_specifiers_pre_parameters"
+ },
+ {
+ "begin": ":",
+ "end": "(?=\\{)|(?=(?(?:(?>[^<>]*)\\g<3>?)+)>)\\s*)?(\\()",
+ "begin": "((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?(\\()",
+ "end": "\\)|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\{)",
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<18>?)+>)?(?![\\w<:.]))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\{)",
+ "end": "\\}|(?=(?|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?:constexpr|explicit|mutable|virtual|inline|friend)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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)))((?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)(~(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
+ "match": "(\\=)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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": "(\\()",
+ "begin": "\\(",
+ "end": "\\)|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?::)*)(((?>(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))::((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))~\\16((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\()))",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)(((?>(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))::((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))~\\14((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
+ "match": "(\\=)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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": "(\\()",
+ "begin": "\\(",
+ "end": "\\)|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*((?:error|warning)))\\b\\s*",
+ "begin": "(^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?:error|warning)))\\b(?:(?:\\s)+)?",
+ "end": "(?[#;\\/=*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.banner.cpp"
- },
- "7": {
- "name": "punctuation.definition.comment.cpp"
- },
- "8": {
- "name": "meta.banner.character.cpp"
- }
- }
- },
- "empty_square_brackets": {
- "name": "storage.modifier.array.bracket.square.cpp",
- "match": "(?-mix:(?-mix:(?(?:(?>[^<>]*)\\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*((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?(::))?(?:(?:\\s)+)?((?|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- ]
- }
- }
- },
- "enumerator_list": {
- "match": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(extern)(?=\\s*\\\"))",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(extern)(?=\\s*\\\")",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?>[^<>]*)\\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(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(((?(?:(?>[^<>]*)\\g<12>?)+)>)\\s*)?(\\()",
+ "begin": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)(?:\\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<11>?)+>)(?:\\s)*+)?(\\()",
+ "end": "\\)|(?=(?))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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<70>?)+)>)\\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<70>?)+)>)\\s*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<70>?)+)>)\\s*)?(?![\\w<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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<70>?)+)>)\\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(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\())",
+ "begin": "(?:(?:^|\\G|(?<=;|\\}))|(?<=>))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<60>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<60>?)+>)?(?![\\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)))((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<60>?)+>)(?:\\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)))(?=\\()",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))",
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
"captures": {
"1": {
"name": "storage.modifier.$1.cpp"
@@ -4002,7 +3521,7 @@
"2": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -4029,12 +3548,12 @@
]
},
"12": {
- "name": "storage.modifier.$1.cpp"
+ "name": "storage.modifier.$12.cpp"
},
"13": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -4060,32 +3579,50 @@
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -4264,45 +3782,95 @@
}
]
},
- "45": {
+ "36": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
- "46": {
+ "37": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "47": {
+ "38": {
"name": "comment.block.cpp"
},
+ "39": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "40": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "41": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "42": {
+ "name": "comment.block.cpp"
+ },
+ "43": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "44": {
+ "patterns": [
+ {
+ "include": "source.cpp#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": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "source.cpp#inline_comment"
}
]
},
"49": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "50": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "51": {
+ "50": {
"name": "comment.block.cpp"
},
- "52": {
+ "51": {
"patterns": [
{
"match": "\\*\\/",
@@ -4314,10 +3882,13 @@
}
]
},
+ "52": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
"53": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -4342,35 +3913,28 @@
"57": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#scope_resolution_function_definition_inner_generated"
}
]
},
"58": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
},
"59": {
- "name": "comment.block.cpp"
- },
- "60": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#template_call_range"
}
]
},
+ "60": {},
"61": {
- "name": "storage.type.modifier.calling-convention.cpp"
+ "name": "entity.name.function.definition.cpp"
},
"62": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -4391,83 +3955,39 @@
"name": "comment.block.cpp"
}
]
- },
- "66": {
- "patterns": [
- {
- "include": "#scope_resolution_function_definition_inner_generated"
- }
- ]
- },
- "67": {
- "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
- },
- "69": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- },
- "71": {
- "name": "entity.name.function.definition.cpp"
- },
- "72": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "73": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "74": {
- "name": "comment.block.cpp"
- },
- "75": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
}
},
- "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<23>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<23>?)+>)?(?![\\w<:.]))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.function.return-type.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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*(\\()",
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<18>?)+>)?(?![\\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)+)?(\\()",
+ "end": "(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()|(?=(?|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -4739,111 +4459,110 @@
}
]
},
- "29": {
+ "20": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#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": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
"30": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "comment.block.cpp"
},
"31": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "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": {
+ "33": {
"name": "punctuation.definition.function.pointer.dereference.cpp"
},
- "43": {
+ "34": {
"name": "variable.other.definition.pointer.function.cpp"
},
- "44": {
+ "35": {
"name": "punctuation.definition.begin.bracket.square.cpp"
},
- "45": {
+ "36": {
"patterns": [
{
"include": "#evaluation_context"
}
]
},
- "46": {
+ "37": {
"name": "punctuation.definition.end.bracket.square.cpp"
},
- "47": {
+ "38": {
"name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
},
- "48": {
+ "39": {
"name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
}
},
- "end": "(\\))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=[{=,);]|\\n)(?!\\()|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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*(\\()",
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<18>?)+>)?(?![\\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)+)?(\\()",
+ "end": "(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()|(?=(?|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -5091,111 +4810,110 @@
}
]
},
- "29": {
+ "20": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#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": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
"30": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "comment.block.cpp"
},
"31": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "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": {
+ "33": {
"name": "punctuation.definition.function.pointer.dereference.cpp"
},
- "43": {
+ "34": {
"name": "variable.parameter.pointer.function.cpp"
},
- "44": {
+ "35": {
"name": "punctuation.definition.begin.bracket.square.cpp"
},
- "45": {
+ "36": {
"patterns": [
{
"include": "#evaluation_context"
}
]
},
- "46": {
+ "37": {
"name": "punctuation.definition.end.bracket.square.cpp"
},
- "47": {
+ "38": {
"name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
},
- "48": {
+ "39": {
"name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
}
},
- "end": "(\\))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=[{=,);]|\\n)(?!\\()|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- }
- },
- "include": {
- "match": "(?:^)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((#)\\s*((?:include|include_next))\\b)\\s*(?:(?:(?:((<)[^>]*(>?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=\\/\\/)))|((\\\")[^\\\"]*(\\\"?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=\\/\\/))))|(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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}))*)*((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=(?:\\/\\/|;)))))|((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- ]
- },
- "31": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "32": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "33": {
- "name": "comment.block.cpp"
- },
- "34": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- }
- },
- "name": "meta.preprocessor.include.cpp"
- },
"inheritance_context": {
"patterns": [
{
@@ -5527,7 +5024,7 @@
"name": "punctuation.separator.delimiter.comma.inheritance.cpp"
},
{
- "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))",
+ "match": "(?<=protected|virtual|private|public|,|:)(?:(?:\\s)+)?(?!(?:(?:(?:protected)|(?:private)|(?:public))|virtual))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<12>?)+>)?(?![\\w<:.]))",
"captures": {
"1": {
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"5": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
},
"6": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"7": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "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"
- }
- ]
- }
+ "12": {}
}
}
]
},
- "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"
- }
- ]
- }
- }
- },
- "invalid_comment_end": {
- "match": "\\*\\/",
- "name": "invalid.illegal.unexpected.punctuation.definition.comment.end.cpp"
- },
- "label": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- }
- },
"lambdas": {
- "begin": "((?:(?<=[^\\s]|^)(?])|(?<=\\Wreturn|^return))\\s*(\\[(?!\\[| *+\"| *+\\d))((?>(?:[^\\[\\]]|((?(?:(?>[^\\[\\]]*)\\g<4>?)+)\\]))*))(\\](?!\\[)))",
+ "begin": "(?:(?<=[^\\s]|^)(?])|(?<=\\Wreturn|^return))(?:(?:\\s)+)?(\\[(?!\\[| *+\"| *+\\d))((?:[^\\[\\]]|((??)++\\]))*+)(\\](?!((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))[\\[\\];]))",
+ "end": "(?<=[;}])|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?=\\]|\\z|$)|(,))|(\\=))",
+ "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"
@@ -5815,7 +5251,7 @@
"2": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -5850,26 +5286,52 @@
}
]
},
- "5": {
+ "3": {},
+ "4": {
"name": "punctuation.definition.capture.end.lambda.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
}
},
- "end": "(?<=})|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*line\\b)",
+ "begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?line\\b",
+ "end": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*define\\b)\\s*((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?define\\b)(?:(?:\\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(?!uint_least64_t[^(?-mix:\\w)]|uint_least16_t[^(?-mix:\\w)]|uint_least32_t[^(?-mix:\\w)]|int_least16_t[^(?-mix:\\w)]|uint_fast64_t[^(?-mix:\\w)]|uint_fast32_t[^(?-mix:\\w)]|uint_fast16_t[^(?-mix:\\w)]|uint_least8_t[^(?-mix:\\w)]|int_least64_t[^(?-mix:\\w)]|int_least32_t[^(?-mix:\\w)]|int_fast32_t[^(?-mix:\\w)]|int_fast16_t[^(?-mix:\\w)]|int_least8_t[^(?-mix:\\w)]|uint_fast8_t[^(?-mix:\\w)]|int_fast64_t[^(?-mix:\\w)]|int_fast8_t[^(?-mix:\\w)]|suseconds_t[^(?-mix:\\w)]|useconds_t[^(?-mix:\\w)]|in_addr_t[^(?-mix:\\w)]|uintmax_t[^(?-mix:\\w)]|uintmax_t[^(?-mix:\\w)]|uintptr_t[^(?-mix:\\w)]|blksize_t[^(?-mix:\\w)]|in_port_t[^(?-mix:\\w)]|intmax_t[^(?-mix:\\w)]|unsigned[^(?-mix:\\w)]|blkcnt_t[^(?-mix:\\w)]|uint32_t[^(?-mix:\\w)]|u_quad_t[^(?-mix:\\w)]|uint16_t[^(?-mix:\\w)]|intmax_t[^(?-mix:\\w)]|uint64_t[^(?-mix:\\w)]|intptr_t[^(?-mix:\\w)]|swblk_t[^(?-mix:\\w)]|wchar_t[^(?-mix:\\w)]|u_short[^(?-mix:\\w)]|qaddr_t[^(?-mix:\\w)]|caddr_t[^(?-mix:\\w)]|daddr_t[^(?-mix:\\w)]|fixpt_t[^(?-mix:\\w)]|nlink_t[^(?-mix:\\w)]|segsz_t[^(?-mix:\\w)]|clock_t[^(?-mix:\\w)]|ssize_t[^(?-mix:\\w)]|int16_t[^(?-mix:\\w)]|int32_t[^(?-mix:\\w)]|int64_t[^(?-mix:\\w)]|uint8_t[^(?-mix:\\w)]|int8_t[^(?-mix:\\w)]|mode_t[^(?-mix:\\w)]|quad_t[^(?-mix:\\w)]|ushort[^(?-mix:\\w)]|u_long[^(?-mix:\\w)]|u_char[^(?-mix:\\w)]|double[^(?-mix:\\w)]|size_t[^(?-mix:\\w)]|signed[^(?-mix:\\w)]|time_t[^(?-mix:\\w)]|key_t[^(?-mix:\\w)]|ino_t[^(?-mix:\\w)]|gid_t[^(?-mix:\\w)]|dev_t[^(?-mix:\\w)]|div_t[^(?-mix:\\w)]|float[^(?-mix:\\w)]|u_int[^(?-mix:\\w)]|uid_t[^(?-mix:\\w)]|short[^(?-mix:\\w)]|off_t[^(?-mix:\\w)]|pid_t[^(?-mix:\\w)]|id_t[^(?-mix:\\w)]|bool[^(?-mix:\\w)]|char[^(?-mix:\\w)]|id_t[^(?-mix:\\w)]|uint[^(?-mix:\\w)]|void[^(?-mix:\\w)]|long[^(?-mix:\\w)]|auto[^(?-mix:\\w)]|int[^(?-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*(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": "(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- }
- },
- "memory_operators": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- }
- },
"method_access": {
- "begin": "(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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*(\\()",
+ "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)+)?(\\()",
+ "end": "\\)|(?=(?|->\\*))\\s*(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?\\*|->)))",
+ "match": "(?<=(?:\\.\\*|\\.|->|->\\*))(?:(?:\\s)+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -6350,12 +5615,12 @@
}
},
{
- "match": "(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?\\*|->)))",
+ "match": "(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -6392,7 +5657,7 @@
}
},
{
- "include": "#member_access"
+ "include": "source.cpp#member_access"
},
{
"include": "#method_access"
@@ -6406,9 +5671,8 @@
"name": "punctuation.section.arguments.begin.bracket.round.function.member.cpp"
}
},
- "end": "(\\))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((import))\\s*(?:(?:(?:((<)[^>]*(>?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=\\/\\/)))|((\\\")[^\\\"]*(\\\"?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=\\/\\/))))|(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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}))*)*((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=(?:\\/\\/|;)))))|((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=(?:\\/\\/|;))))\\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": "keyword.control.directive.import.cpp"
- },
- "7": {
- "name": "string.quoted.other.lt-gt.include.cpp"
- },
- "8": {
- "name": "punctuation.definition.string.begin.cpp"
- },
- "9": {
- "name": "punctuation.definition.string.end.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": "string.quoted.double.include.cpp"
- },
- "15": {
- "name": "punctuation.definition.string.begin.cpp"
- },
- "16": {
- "name": "punctuation.definition.string.end.cpp"
- },
- "17": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "18": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "19": {
- "name": "comment.block.cpp"
- },
- "20": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "21": {
- "name": "entity.name.other.preprocessor.macro.include.cpp"
- },
- "22": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "23": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "24": {
- "name": "comment.block.cpp"
- },
- "25": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "26": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "27": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "28": {
- "name": "comment.block.cpp"
- },
- "29": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.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": "punctuation.terminator.statement.cpp"
- }
- },
- "name": "meta.preprocessor.import.cpp"
- },
"ms_attributes": {
- "name": "support.other.attribute.cpp",
- "begin": "(__declspec\\()",
+ "begin": "__declspec\\(",
+ "end": "\\)|(?=(?(?:(?>[^<>]*)\\g<9>?)+)>)\\s*)?::)*\\s*+)\\s*((?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?(?:(?>[^<>]*)\\g<5>?)+)>)\\s*)?::)*\\s*+)\\s*((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<4>?)+>)(?:\\s)*+)?::)*\\s*+)(?:(?:\\s)+)?((?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?::)*)(?:(?:((?:delete\\[\\]|delete|new\\[\\]|<=>|<<=|new|>>=|\\->\\*|\\/=|%=|&=|>=|\\|=|\\+\\+|\\-\\-|\\(\\)|\\[\\]|\\->|\\+\\+|<<|>>|\\-\\-|<=|\\^=|==|!=|&&|\\|\\||\\+=|\\-=|\\*=|,|\\+|\\-|!|~|\\*|&|\\*|\\/|%|\\+|\\-|<|>|&|\\^|\\||=))|((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:\\[\\])?)))|(\"\")((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\<|\\())",
+ "begin": "(?:(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<55>?)+>)?(?![\\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)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)(operator)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)(?:(?:((?:(?:delete\\[\\])|(?:delete)|(?:new\\[\\])|(?:<=>)|(?:<<=)|(?:new)|(?:>>=)|(?:\\->\\*)|(?:\\/=)|(?:%=)|(?:&=)|(?:>=)|(?:\\|=)|(?:\\+\\+)|(?:\\-\\-)|(?:\\(\\))|(?:\\[\\])|(?:\\->)|(?:\\+\\+)|(?:<<)|(?:>>)|(?:\\-\\-)|(?:<=)|(?:\\^=)|(?:==)|(?:!=)|(?:&&)|(?:\\|\\|)|(?:\\+=)|(?:\\-=)|(?:\\*=)|,|(?:\\+)|(?:\\-)|!|~|(?:\\*)|&|(?:\\*)|(?:\\/)|%|(?:\\+)|(?:\\-)|<|>|&|(?:\\^)|(?:\\|)|=))|((?(?:\\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)))(?=\\<|\\()",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -7366,20 +6103,20 @@
}
]
},
- "30": {
+ "20": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
- "31": {
+ "21": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "32": {
+ "22": {
"name": "comment.block.cpp"
},
- "33": {
+ "23": {
"patterns": [
{
"match": "\\*\\/",
@@ -7391,135 +6128,135 @@
}
]
},
- "34": {
+ "24": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
- "35": {
+ "25": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "36": {
+ "26": {
"name": "comment.block.cpp"
},
+ "27": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "30": {
+ "name": "comment.block.cpp"
+ },
+ "31": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "32": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "33": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "34": {
+ "name": "comment.block.cpp"
+ },
+ "35": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "36": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
"37": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "source.cpp#inline_comment"
}
]
},
"38": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "39": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "40": {
+ "39": {
"name": "comment.block.cpp"
},
+ "40": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
"41": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "source.cpp#inline_comment"
}
]
},
"42": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"43": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "comment.block.cpp"
},
"44": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "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": "::",
@@ -7534,31 +6271,31 @@
}
]
},
- "57": {
- "name": "meta.template.call.cpp",
+ "46": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "59": {
+ "47": {},
+ "48": {
"name": "keyword.other.operator.overload.cpp"
},
- "60": {
+ "49": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
- "61": {
+ "50": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "62": {
+ "51": {
"name": "comment.block.cpp"
},
- "63": {
+ "52": {
"patterns": [
{
"match": "\\*\\/",
@@ -7570,7 +6307,7 @@
}
]
},
- "64": {
+ "53": {
"patterns": [
{
"match": "::",
@@ -7585,33 +6322,33 @@
}
]
},
- "66": {
- "name": "meta.template.call.cpp",
+ "54": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "68": {
+ "55": {},
+ "56": {
"name": "entity.name.operator.cpp"
},
- "69": {
+ "57": {
"name": "entity.name.operator.type.cpp"
},
- "70": {
+ "58": {
"patterns": [
{
"match": "\\*",
"name": "entity.name.operator.type.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -7642,20 +6379,20 @@
}
]
},
- "71": {
+ "59": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
- "72": {
+ "60": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "73": {
+ "61": {
"name": "comment.block.cpp"
},
- "74": {
+ "62": {
"patterns": [
{
"match": "\\*\\/",
@@ -7667,104 +6404,104 @@
}
]
},
- "75": {
+ "63": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
- "76": {
+ "64": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "77": {
+ "65": {
"name": "comment.block.cpp"
},
+ "66": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "67": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "68": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "69": {
+ "name": "comment.block.cpp"
+ },
+ "70": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "71": {
+ "name": "entity.name.operator.type.array.cpp"
+ },
+ "72": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
+ "73": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "74": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "75": {
+ "name": "comment.block.cpp"
+ },
+ "76": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "77": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
"78": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "source.cpp#inline_comment"
}
]
},
"79": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"80": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "comment.block.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": "\\*\\/",
@@ -7777,17 +6514,19 @@
]
}
},
- "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\w)",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\w)",
+ "end": "(?:(?=\\))|(,))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))+)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=,|\\)|=)",
+ "match": "((?:((?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))+)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\s)*+(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=,|\\)|=)",
"captures": {
"1": {
"patterns": [
@@ -7998,7 +6994,7 @@
"3": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -8023,7 +7019,7 @@
"7": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -8046,159 +7042,34 @@
]
},
"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": {
+ "12": {
"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": {
+ "13": {
"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": {
+ "14": {
"name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
},
- "35": {
+ "15": {
"name": "entity.name.type.parameter.cpp"
},
- "36": {
+ "16": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
- "37": {
+ "17": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "38": {
+ "18": {
"name": "comment.block.cpp"
},
- "39": {
+ "19": {
"patterns": [
{
"match": "\\*\\/",
@@ -8216,15 +7087,16 @@
"include": "#storage_types"
},
{
- "include": "#scope_resolution_parameter_inner_generated"
+ "include": "source.cpp#scope_resolution_parameter_inner_generated"
},
{
- "match": "(?:struct|class|union|enum)",
+ "match": "(?:(?:struct)|(?:class)|(?:union)|(?:enum))",
"name": "storage.type.$0.cpp"
},
{
"begin": "(?<==)",
"end": "(?:(?=\\))|(,))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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}))*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\)|,|\\[|=|\\n)",
+ "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"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -8273,7 +7146,7 @@
"6": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -8301,19 +7174,19 @@
"include": "#attributes_context"
},
{
- "name": "meta.bracket.square.array.cpp",
- "begin": "(\\[)",
+ "begin": "\\[",
+ "end": "\\]|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*)",
+ "match": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*))",
"captures": {
"0": {
"patterns": [
@@ -8337,12 +7210,12 @@
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -8376,7 +7249,7 @@
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -8401,7 +7274,7 @@
"5": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -8427,528 +7300,14 @@
}
]
},
- "parameter_class": {
- "match": "(class)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:\\[((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\]((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:\\[((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\]((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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_or_maybe_value": {
- "name": "meta.parameter.cpp",
- "begin": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\w)",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\w)",
+ "end": "(?:(?=\\))|(,))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))+)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=,|\\)|=)",
+ "match": "((?:((?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))+)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\s)*+(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=,|\\)|=)",
"captures": {
"1": {
"patterns": [
@@ -9015,7 +7374,7 @@
"3": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -9040,7 +7399,7 @@
"7": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -9063,159 +7422,34 @@
]
},
"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": {
+ "12": {
"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": {
+ "13": {
"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": {
+ "14": {
"name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
},
- "35": {
+ "15": {
"name": "entity.name.type.parameter.cpp"
},
- "36": {
+ "16": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
- "37": {
+ "17": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "38": {
+ "18": {
"name": "comment.block.cpp"
},
- "39": {
+ "19": {
"patterns": [
{
"match": "\\*\\/",
@@ -9236,15 +7470,16 @@
"include": "#function_call"
},
{
- "include": "#scope_resolution_parameter_inner_generated"
+ "include": "source.cpp#scope_resolution_parameter_inner_generated"
},
{
- "match": "(?:struct|class|union|enum)",
+ "match": "(?:(?:struct)|(?:class)|(?:union)|(?:enum))",
"name": "storage.type.$0.cpp"
},
{
"begin": "(?<==)",
"end": "(?:(?=\\))|(,))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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}))*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=(?:\\)|,|\\[|=|\\/\\/|(?:\\n|$)))",
+ "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"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -9290,7 +7525,7 @@
"6": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -9318,19 +7553,19 @@
"include": "#attributes_context"
},
{
- "name": "meta.bracket.square.array.cpp",
- "begin": "(\\[)",
+ "begin": "\\[",
+ "end": "\\]|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*)",
+ "match": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*))",
"captures": {
"0": {
"patterns": [
@@ -9354,12 +7589,12 @@
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -9393,7 +7628,7 @@
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -9418,7 +7653,7 @@
"5": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -9447,537 +7682,23 @@
}
]
},
- "parameter_struct": {
- "match": "(struct)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:\\[((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\]((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:\\[((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\]((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- ]
- }
- }
- },
"parentheses": {
- "name": "meta.parens.cpp",
- "begin": "(\\()",
+ "begin": "\\(",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*pragma\\b)",
+ "begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?pragma\\b",
+ "end": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*pragma\\s+mark)\\s+(.*)",
- "captures": {
- "1": {
- "name": "keyword.control.directive.pragma.pragma-mark.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.definition.directive.cpp"
- },
- "7": {
- "name": "entity.name.tag.pragma-mark.cpp"
- }
- },
- "name": "meta.preprocessor.pragma.cpp"
- },
- "predefined_macros": {
- "patterns": [
- {
- "match": "\\b(__cplusplus|__DATE__|__FILE__|__LINE__|__STDC__|__STDC_HOSTED__|__STDC_NO_COMPLEX__|__STDC_VERSION__|__STDCPP_THREADS__|__TIME__|NDEBUG|__OBJC__|__ASSEMBLER__|__ATOM__|__AVX__|__AVX2__|_CHAR_UNSIGNED|__CLR_VER|_CONTROL_FLOW_GUARD|__COUNTER__|__cplusplus_cli|__cplusplus_winrt|_CPPRTTI|_CPPUNWIND|_DEBUG|_DLL|__FUNCDNAME__|__FUNCSIG__|__FUNCTION__|_INTEGRAL_MAX_BITS|__INTELLISENSE__|_ISO_VOLATILE|_KERNEL_MODE|_M_AMD64|_M_ARM|_M_ARM_ARMV7VE|_M_ARM_FP|_M_ARM64|_M_CEE|_M_CEE_PURE|_M_CEE_SAFE|_M_FP_EXCEPT|_M_FP_FAST|_M_FP_PRECISE|_M_FP_STRICT|_M_IX86|_M_IX86_FP|_M_X64|_MANAGED|_MSC_BUILD|_MSC_EXTENSIONS|_MSC_FULL_VER|_MSC_VER|_MSVC_LANG|__MSVC_RUNTIME_CHECKS|_MT|_NATIVE_WCHAR_T_DEFINED|_OPENMP|_PREFAST|__TIMESTAMP__|_VC_NO_DEFAULTLIB|_WCHAR_T_DEFINED|_WIN32|_WIN64|_WINRT_DLL|_ATL_VER|_MFC_VER|__GFORTRAN__|__GNUC__|__GNUC_MINOR__|__GNUC_PATCHLEVEL__|__GNUG__|__STRICT_ANSI__|__BASE_FILE__|__INCLUDE_LEVEL__|__ELF__|__VERSION__|__OPTIMIZE__|__OPTIMIZE_SIZE__|__NO_INLINE__|__GNUC_STDC_INLINE__|__CHAR_UNSIGNED__|__WCHAR_UNSIGNED__|__REGISTER_PREFIX__|__REGISTER_PREFIX__|__SIZE_TYPE__|__PTRDIFF_TYPE__|__WCHAR_TYPE__|__WINT_TYPE__|__INTMAX_TYPE__|__UINTMAX_TYPE__|__SIG_ATOMIC_TYPE__|__INT8_TYPE__|__INT16_TYPE__|__INT32_TYPE__|__INT64_TYPE__|__UINT8_TYPE__|__UINT16_TYPE__|__UINT32_TYPE__|__UINT64_TYPE__|__INT_LEAST8_TYPE__|__INT_LEAST16_TYPE__|__INT_LEAST32_TYPE__|__INT_LEAST64_TYPE__|__UINT_LEAST8_TYPE__|__UINT_LEAST16_TYPE__|__UINT_LEAST32_TYPE__|__UINT_LEAST64_TYPE__|__INT_FAST8_TYPE__|__INT_FAST16_TYPE__|__INT_FAST32_TYPE__|__INT_FAST64_TYPE__|__UINT_FAST8_TYPE__|__UINT_FAST16_TYPE__|__UINT_FAST32_TYPE__|__UINT_FAST64_TYPE__|__INTPTR_TYPE__|__UINTPTR_TYPE__|__CHAR_BIT__|__SCHAR_MAX__|__WCHAR_MAX__|__SHRT_MAX__|__INT_MAX__|__LONG_MAX__|__LONG_LONG_MAX__|__WINT_MAX__|__SIZE_MAX__|__PTRDIFF_MAX__|__INTMAX_MAX__|__UINTMAX_MAX__|__SIG_ATOMIC_MAX__|__INT8_MAX__|__INT16_MAX__|__INT32_MAX__|__INT64_MAX__|__UINT8_MAX__|__UINT16_MAX__|__UINT32_MAX__|__UINT64_MAX__|__INT_LEAST8_MAX__|__INT_LEAST16_MAX__|__INT_LEAST32_MAX__|__INT_LEAST64_MAX__|__UINT_LEAST8_MAX__|__UINT_LEAST16_MAX__|__UINT_LEAST32_MAX__|__UINT_LEAST64_MAX__|__INT_FAST8_MAX__|__INT_FAST16_MAX__|__INT_FAST32_MAX__|__INT_FAST64_MAX__|__UINT_FAST8_MAX__|__UINT_FAST16_MAX__|__UINT_FAST32_MAX__|__UINT_FAST64_MAX__|__INTPTR_MAX__|__UINTPTR_MAX__|__WCHAR_MIN__|__WINT_MIN__|__SIG_ATOMIC_MIN__|__SCHAR_WIDTH__|__SHRT_WIDTH__|__INT_WIDTH__|__LONG_WIDTH__|__LONG_LONG_WIDTH__|__PTRDIFF_WIDTH__|__SIG_ATOMIC_WIDTH__|__SIZE_WIDTH__|__WCHAR_WIDTH__|__WINT_WIDTH__|__INT_LEAST8_WIDTH__|__INT_LEAST16_WIDTH__|__INT_LEAST32_WIDTH__|__INT_LEAST64_WIDTH__|__INT_FAST8_WIDTH__|__INT_FAST16_WIDTH__|__INT_FAST32_WIDTH__|__INT_FAST64_WIDTH__|__INTPTR_WIDTH__|__INTMAX_WIDTH__|__SIZEOF_INT__|__SIZEOF_LONG__|__SIZEOF_LONG_LONG__|__SIZEOF_SHORT__|__SIZEOF_POINTER__|__SIZEOF_FLOAT__|__SIZEOF_DOUBLE__|__SIZEOF_LONG_DOUBLE__|__SIZEOF_SIZE_T__|__SIZEOF_WCHAR_T__|__SIZEOF_WINT_T__|__SIZEOF_PTRDIFF_T__|__BYTE_ORDER__|__ORDER_LITTLE_ENDIAN__|__ORDER_BIG_ENDIAN__|__ORDER_PDP_ENDIAN__|__FLOAT_WORD_ORDER__|__DEPRECATED|__EXCEPTIONS|__GXX_RTTI|__USING_SJLJ_EXCEPTIONS__|__GXX_EXPERIMENTAL_CXX0X__|__GXX_WEAK__|__NEXT_RUNTIME__|__LP64__|_LP64|__SSP__|__SSP_ALL__|__SSP_STRONG__|__SSP_EXPLICIT__|__SANITIZE_ADDRESS__|__SANITIZE_THREAD__|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16|__HAVE_SPECULATION_SAFE_VALUE|__GCC_HAVE_DWARF2_CFI_ASM|__FP_FAST_FMA|__FP_FAST_FMAF|__FP_FAST_FMAL|__FP_FAST_FMAF16|__FP_FAST_FMAF32|__FP_FAST_FMAF64|__FP_FAST_FMAF128|__FP_FAST_FMAF32X|__FP_FAST_FMAF64X|__FP_FAST_FMAF128X|__GCC_IEC_559|__GCC_IEC_559_COMPLEX|__NO_MATH_ERRNO__|__has_builtin|__has_feature|__has_extension|__has_cpp_attribute|__has_c_attribute|__has_attribute|__has_declspec_attribute|__is_identifier|__has_include|__has_include_next|__has_warning|__BASE_FILE__|__FILE_NAME__|__clang__|__clang_major__|__clang_minor__|__clang_patchlevel__|__clang_version__|__fp16|_Float16)\\b",
- "captures": {
- "1": {
- "name": "entity.name.other.preprocessor.macro.predefined.$1.cpp"
- }
- }
- },
- {
- "match": "\\b__([A-Z_]+)__\\b",
- "name": "entity.name.other.preprocessor.macro.predefined.probably.$1.cpp"
+ "include": "source.cpp#line_continuation_character"
}
]
},
@@ -10142,30 +7775,31 @@
"include": "#comments"
},
{
- "include": "#language_constants"
+ "include": "source.cpp#language_constants"
},
{
- "include": "#string_context_c"
+ "include": "#string_context"
},
{
- "include": "#preprocessor_number_literal"
+ "include": "source.cpp#d9bc4796b0b_preprocessor_number_literal"
},
{
"include": "#operators"
},
{
- "include": "#predefined_macros"
+ "include": "source.cpp#predefined_macros"
},
{
- "include": "#macro_name"
+ "include": "source.cpp#macro_name"
},
{
- "include": "#line_continuation_character"
+ "include": "source.cpp#line_continuation_character"
}
]
},
"preprocessor_conditional_defined": {
"begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*((?:(?:ifndef|ifdef)|if)))",
+ "begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?:(?:ifndef|ifdef)|if))",
+ "end": "^(?!\\s*+#\\s*(?:else|endif))|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?>[^<>]*)\\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_function_call": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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_function_definition_operator_overload": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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"
- }
- }
- },
- "scope_resolution_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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_namespace_alias": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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_block": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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_namespace_using": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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_parameter": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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_template_call": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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"
- }
- }
- },
- "semicolon": {
- "match": ";",
- "name": "punctuation.terminator.statement.cpp"
- },
- "simple_type": {
- "match": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?",
- "captures": {
- "1": {
- "name": "meta.qualified_type.cpp",
- "patterns": [
- {
- "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- ]
- }
- }
- },
- "single_line_macro": {
- "match": "^((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))#define.*(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "(\\bsizeof\\.\\.\\.)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.struct.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "source.cpp#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -12252,134 +8531,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "source.cpp#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- ]
- }
- }
- },
"switch_conditional_parentheses": {
- "name": "meta.conditional.switch.cpp",
- "begin": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?>[^<>]*)\\g<1>?)+)>)\\s*",
- "captures": {
- "0": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- }
- }
- },
"template_call_range": {
- "name": "meta.template.call.cpp",
- "begin": "(<)",
+ "begin": "<",
+ "end": ">|(?=(?)|(?=(?|(?=(?)|(?=(?|(?=(?)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- }
- },
"template_definition_context": {
"patterns": [
{
- "include": "#scope_resolution_template_definition_inner_generated"
+ "include": "source.cpp#scope_resolution_template_definition_inner_generated"
},
{
- "include": "#template_definition_argument"
+ "include": "source.cpp#template_definition_argument"
},
{
- "include": "#template_argument_defaulted"
+ "include": "source.cpp#template_argument_defaulted"
},
{
- "include": "#template_call_innards"
+ "include": "source.cpp#template_call_innards"
},
{
"include": "#evaluation_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"
- }
- }
- },
"ternary_operator": {
- "applyEndPatternLast": true,
- "begin": "(\\?)",
+ "begin": "\\?",
+ "end": ":|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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*((?:(?:(?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))|(.*(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- },
- "type_casting_operators": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "source.cpp#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -13759,134 +9200,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "source.cpp#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -13998,7 +9345,7 @@
"2": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -14023,7 +9370,7 @@
"6": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -14048,7 +9395,7 @@
"10": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -14085,47 +9432,67 @@
]
},
"typedef_function_pointer": {
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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*(\\()",
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<18>?)+>)?(?![\\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)+)?(\\()",
+ "end": "(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()|(?=(?|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -14304,111 +9652,110 @@
}
]
},
- "29": {
+ "20": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#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": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
"30": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "comment.block.cpp"
},
"31": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "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": {
+ "33": {
"name": "punctuation.definition.function.pointer.dereference.cpp"
},
- "43": {
+ "34": {
"name": "entity.name.type.alias.cpp entity.name.type.pointer.function.cpp"
},
- "44": {
+ "35": {
"name": "punctuation.definition.begin.bracket.square.cpp"
},
- "45": {
+ "36": {
"patterns": [
{
"include": "#evaluation_context"
}
]
},
- "46": {
+ "37": {
"name": "punctuation.definition.end.bracket.square.cpp"
},
- "47": {
+ "38": {
"name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
},
- "48": {
+ "39": {
"name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
}
},
- "end": "(\\))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=[{=,);]|\\n)(?!\\()|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.struct.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "source.cpp#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -14587,134 +10005,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "source.cpp#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -14826,7 +10150,7 @@
"2": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -14851,7 +10175,7 @@
"6": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -14876,7 +10200,7 @@
"10": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -14913,101 +10237,205 @@
]
},
"typedef_union": {
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.union.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "source.cpp#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -15019,134 +10447,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "source.cpp#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -15258,7 +10592,7 @@
"2": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -15283,7 +10617,7 @@
"6": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -15308,7 +10642,7 @@
"10": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -15345,8 +10679,8 @@
]
},
"typeid_operator": {
- "contentName": "meta.arguments.operator.typeid.cpp",
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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": {
+ "union_block": {
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
},
{
- "include": "#attributes_context"
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.union.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#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.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#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"
+ }
+ ]
+ }
+ }
},
{
- "include": "#function_type"
- },
- {
- "include": "#storage_types"
- },
- {
- "include": "#number_literal"
- },
- {
- "include": "#string_context"
- },
- {
- "include": "#comma"
- },
- {
- "include": "#scope_resolution_inner_generated"
- },
- {
- "include": "#template_call_range"
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
},
{
"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": "entity.name.type.cpp"
- }
- ]
- },
- "11": {
- "patterns": [
- {
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
}
]
},
"12": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -15523,7 +10930,7 @@
"16": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "source.cpp#inline_comment"
}
]
},
@@ -15545,367 +10952,10 @@
}
]
},
- "21": {
- "patterns": [
- {
- "include": "#scope_resolution_inner_generated"
- }
- ]
- },
- "22": {
- "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
- },
- "24": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- },
- "26": {
- "name": "entity.name.scope-resolution.cpp"
- },
- "27": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- },
- "29": {
- "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.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": "entity.name.type.cpp"
- },
- "35": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- }
- }
- },
- "undef": {
- "match": "((?:^)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*undef\\b)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
- "beginCaptures": {
- "1": {
- "name": "meta.head.union.cpp"
- },
- "3": {
- "name": "storage.type.$3.cpp"
- },
- "4": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "5": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "6": {
- "name": "comment.block.cpp"
- },
- "7": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "8": {
- "patterns": [
- {
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
- }
- ]
- },
- "9": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "10": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "11": {
- "name": "comment.block.cpp"
- },
- "12": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "16": {
- "name": "comment.block.cpp"
- },
- "17": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "18": {
- "patterns": [
- {
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
- }
- ]
- },
- "19": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))|(?=(?|\\?\\?>)|(?=(?|\\?\\?>|(?=(?|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)|(?=(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
- }
- ]
- }
- }
- },
- "using_name": {
- "match": "(using)\\s+(?!namespace\\b)",
- "captures": {
- "1": {
- "name": "keyword.other.using.directive.cpp"
- }
- }
- },
"using_namespace": {
- "name": "meta.using-namespace.cpp",
- "begin": "(?(?:(?>[^<>]*)\\g<7>?)+)>)\\s*)?::)*\\s*+)?((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<6>?)+>)(?:\\s)*+)?::)*\\s*+)?((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(((?:protected|private|public))\\s*(:))",
+ "match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(((?:(?:protected)|(?:private)|(?:public)))(?:(?:\\s)+)?(:))",
"captures": {
"1": {
"patterns": [
@@ -105,45 +105,55 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
- "name": "storage.type.modifier.access.control.$6.cpp"
+ "3": {
+ "name": "storage.type.modifier.access.control.$4.cpp"
},
- "7": {
+ "4": {},
+ "5": {
"name": "punctuation.separator.colon.access.control.cpp"
}
}
},
"alignas_attribute": {
- "name": "support.other.attribute.cpp",
- "begin": "(alignas\\()",
+ "begin": "alignas\\(",
+ "end": "\\)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.attribute.begin.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.attribute.end.cpp"
}
},
+ "name": "support.other.attribute.cpp",
"patterns": [
{
"include": "#attributes_context"
@@ -151,6 +161,8 @@
{
"begin": "\\(",
"end": "\\)",
+ "beginCaptures": {},
+ "endCaptures": {},
"patterns": [
{
"include": "#attributes_context"
@@ -161,7 +173,7 @@
]
},
{
- "match": "(using)\\s+((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"name": "keyword.operator.functionlike.cpp keyword.operator.alignas.cpp"
@@ -228,12 +240,12 @@
"name": "punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.operator.alignas.cpp"
}
},
+ "contentName": "meta.arguments.operator.alignas",
"patterns": [
{
"include": "#evaluation_context"
@@ -241,8 +253,8 @@
]
},
"alignof_operator": {
- "contentName": "meta.arguments.operator.alignof.cpp",
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"name": "keyword.operator.functionlike.cpp keyword.operator.alignof.cpp"
@@ -276,12 +288,12 @@
"name": "punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.operator.alignof.cpp"
}
},
+ "contentName": "meta.arguments.operator.alignof",
"patterns": [
{
"include": "#evaluation_context"
@@ -289,96 +301,221 @@
]
},
"assembly": {
- "name": "meta.asm.cpp",
- "begin": "(\\b(?:__asm__|asm)\\b)\\s*((?:volatile)?)\\s*(\\()",
+ "begin": "(\\b(?:__asm__|asm)\\b)(?:(?:\\s)+)?((?:volatile)?)",
+ "end": "(?!\\G)",
"beginCaptures": {
"1": {
"name": "storage.type.asm.cpp"
},
"2": {
"name": "storage.modifier.cpp"
- },
- "3": {
- "name": "punctuation.section.parens.begin.bracket.round.assembly.cpp"
- }
- },
- "end": "(\\))",
- "endCaptures": {
- "1": {
- "name": "punctuation.section.parens.end.bracket.round.assembly.cpp"
}
},
+ "endCaptures": {},
+ "name": "meta.asm.cpp",
"patterns": [
{
- "name": "string.quoted.double.cpp",
- "contentName": "meta.embedded.assembly.cpp",
- "begin": "(R?)(\")",
- "beginCaptures": {
+ "match": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\n)|$)",
+ "captures": {
"1": {
- "name": "meta.encoding.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"2": {
- "name": "punctuation.definition.string.begin.assembly.cpp"
- }
- },
- "end": "(\")",
- "endCaptures": {
- "1": {
- "name": "punctuation.definition.string.end.assembly.cpp"
- }
- },
- "patterns": [
- {
- "include": "source.asm"
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- {
- "include": "source.x86"
+ "3": {
+ "name": "comment.block.cpp"
},
- {
- "include": "source.x86_64"
- },
- {
- "include": "source.arm"
- },
- {
- "include": "#backslash_escapes"
- },
- {
- "include": "#string_escaped_char"
- },
- {
- "match": "(?=not)possible"
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
}
- ]
- },
- {
- "begin": "(\\()",
- "beginCaptures": {
- "1": {
- "name": "punctuation.section.parens.begin.bracket.round.assembly.inner.cpp"
- }
- },
- "end": "(\\))",
- "endCaptures": {
- "1": {
- "name": "punctuation.section.parens.end.bracket.round.assembly.inner.cpp"
- }
- },
- "patterns": [
- {
- "include": "#evaluation_context"
- }
- ]
- },
- {
- "match": ":",
- "name": "punctuation.separator.delimiter.colon.assembly.cpp"
+ }
},
{
"include": "#comments_context"
},
{
"include": "#comments"
+ },
+ {
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.assembly.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"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.assembly.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(R?)(\")",
+ "end": "\"",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.encoding.cpp"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.assembly.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.assembly.cpp"
+ }
+ },
+ "name": "string.quoted.double.cpp",
+ "contentName": "meta.embedded.assembly",
+ "patterns": [
+ {
+ "include": "source.asm"
+ },
+ {
+ "include": "source.x86"
+ },
+ {
+ "include": "source.x86_64"
+ },
+ {
+ "include": "source.arm"
+ },
+ {
+ "include": "#backslash_escapes"
+ },
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.assembly.inner.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.assembly.inner.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)))\\]",
+ "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.other.asm.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.delimiter.colon.assembly.cpp"
+ },
+ {
+ "include": "#comments_context"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
}
]
},
@@ -403,23 +540,23 @@
]
},
"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.cpp"
+ "match": "(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?] |\n[0-3][0-7]{,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"
},
"block": {
- "name": "meta.block.cpp",
- "begin": "({)",
+ "begin": "{",
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.cpp"
}
},
- "end": "(}|(?=\\s*#\\s*(?:elif|else|endif)\\b))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.cpp"
}
},
+ "name": "meta.block.cpp",
"patterns": [
{
"include": "#function_body_context"
@@ -427,192 +564,42 @@
]
},
"block_comment": {
- "name": "comment.block.cpp",
"begin": "\\s*+(\\/\\*)",
+ "end": "\\*\\/",
"beginCaptures": {
"1": {
"name": "punctuation.definition.comment.begin.cpp"
}
},
- "end": "(\\*\\/)",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.comment.end.cpp"
}
- }
+ },
+ "name": "comment.block.cpp"
},
"builtin_storage_type_initilizer": {
- "begin": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "(?:\\s)*+(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.class.cpp"
},
- "3": {
- "name": "storage.type.$3.cpp"
+ "1": {
+ "name": "storage.type.$1.cpp"
},
- "4": {
+ "2": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "5": {
+ "3": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "6": {
+ "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": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
"7": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"8": {
- "patterns": [
- {
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
- }
- ]
- },
- "9": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "10": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "11": {
+ "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": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.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.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -768,134 +858,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
"endCaptures": {
"1": {
"name": "punctuation.terminator.statement.cpp"
@@ -904,16 +895,18 @@
"name": "punctuation.terminator.statement.cpp"
}
},
+ "name": "meta.block.class.cpp",
"patterns": [
{
- "name": "meta.head.class.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.class.cpp"
}
},
+ "name": "meta.head.class.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -927,14 +920,15 @@
]
},
{
- "name": "meta.body.class.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.class.cpp"
}
},
+ "name": "meta.body.class.cpp",
"patterns": [
{
"include": "#function_pointer"
@@ -954,9 +948,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.class.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -966,7 +962,7 @@
]
},
"class_declare": {
- "match": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\S)(?![:{])",
+ "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)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
"captures": {
"1": {
"name": "storage.type.class.declare.cpp"
@@ -979,34 +975,43 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "entity.name.type.class.cpp"
},
- "7": {
+ "5": {
"patterns": [
{
"match": "\\*",
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -1042,6 +1047,40 @@
}
]
},
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
"8": {
"patterns": [
{
@@ -1050,98 +1089,100 @@
]
},
"9": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"10": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"11": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"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": {
+ "13": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "22": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "23": {
- "name": "comment.block.cpp"
- },
- "24": {
+ "14": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
@@ -1158,14 +1199,15 @@
"comments": {
"patterns": [
{
- "name": "comment.line.double-slash.documentation.cpp",
- "begin": "(?:^)(?>\\s*)(\\/\\/[!\\/]+)",
+ "begin": "^(?:(?:\\s)+)?+(\\/\\/[!\\/]+)",
+ "end": "(?<=\\n)(?\\s*)\\/\\*[!*]+(?:(?:\\n|$)|(?=\\s)))",
+ "begin": "(?:(?:\\s)+)?+\\/\\*[!*]+(?:(?:(?:\\n)|$)|(?=\\s))",
+ "end": "[!*]*\\*\\/",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.comment.begin.documentation.cpp"
}
},
- "end": "([!*]*\\*\\/)",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.comment.end.documentation.cpp"
}
},
+ "name": "comment.block.documentation.cpp",
"patterns": [
{
"match": "(?<=[\\s*!\\/])[\\\\@](?:callergraph|callgraph|else|endif|f\\$|f\\[|f\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\$|\\#|<|>|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1355,7 +1413,7 @@
}
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1366,7 +1424,7 @@
}
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))(?:\\s)+(\\S+)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
@@ -1385,22 +1443,30 @@
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "((?<=[\\s*!\\/])[\\\\@]param)\\s+(\\b\\w+\\b)",
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:(?:\\s)+)?(?:in|out)(?:(?:\\s)+)?)+)\\])?(?:\\s)+(\\b\\w+\\b)",
"captures": {
"1": {
"name": "storage.type.class.doxygen.cpp"
},
"2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.cpp"
+ }
+ ]
+ },
+ "3": {
"name": "variable.parameter.cpp"
}
}
},
{
- "match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
- "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
"name": "storage.type.class.doxygen.cpp"
},
{
@@ -1424,26 +1490,26 @@
]
},
"constructor_inline": {
- "name": "meta.function.definition.special.constructor.cpp",
- "begin": "(^((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?:constexpr|explicit|mutable|virtual|inline|friend)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?|\\?\\?>)|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.function.definition.special.constructor.cpp"
},
- "2": {
+ "1": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "3": {
+ "2": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "4": {
+ "3": {
"name": "comment.block.cpp"
},
- "5": {
+ "4": {
"patterns": [
{
"match": "\\*\\/",
@@ -1455,52 +1521,52 @@
}
]
},
+ "5": {
+ "patterns": [
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ }
+ ]
+ },
"6": {
"patterns": [
{
- "include": "#functional_specifiers_pre_parameters"
+ "include": "#inline_comment"
}
]
},
"7": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "8": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "9": {
+ "8": {
"name": "comment.block.cpp"
},
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
"10": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"11": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"12": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "13": {
"name": "comment.block.cpp"
},
- "14": {
+ "13": {
"patterns": [
{
"match": "\\*\\/",
@@ -1512,23 +1578,23 @@
}
]
},
- "15": {
+ "14": {
"name": "storage.type.modifier.calling-convention.cpp"
},
- "16": {
+ "15": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "17": {
+ "16": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "18": {
+ "17": {
"name": "comment.block.cpp"
},
- "19": {
+ "18": {
"patterns": [
{
"match": "\\*\\/",
@@ -1540,83 +1606,82 @@
}
]
},
- "20": {
+ "19": {
"name": "entity.name.function.constructor.cpp entity.name.function.definition.special.constructor.cpp"
}
},
- "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "endCaptures": {},
+ "name": "meta.function.definition.special.constructor.cpp",
"patterns": [
{
- "name": "meta.head.function.definition.special.constructor.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"
}
},
+ "name": "meta.head.function.definition.special.constructor.cpp",
"patterns": [
{
"include": "#ever_present_context"
},
{
- "patterns": [
- {
- "match": "(\\=)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
+ "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": "(:)",
+ "begin": ":",
+ "end": "(?=\\{)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.separator.initializers.cpp"
}
},
- "end": "(?=\\{)",
+ "endCaptures": {},
"patterns": [
{
- "contentName": "meta.parameter.initialization.cpp",
- "begin": "((?(?:(?>[^<>]*)\\g<3>?)+)>)\\s*)?(\\()",
+ "begin": "((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"name": "entity.name.function.call.initializer.cpp"
@@ -1629,16 +1694,17 @@
}
]
},
+ "3": {},
"4": {
"name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
}
},
+ "contentName": "meta.parameter.initialization",
"patterns": [
{
"include": "#evaluation_context"
@@ -1646,8 +1712,8 @@
]
},
{
- "contentName": "meta.parameter.initialization.cpp",
"begin": "((?|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
}
},
+ "name": "meta.body.function.definition.special.constructor.cpp",
"patterns": [
{
"include": "#function_body_context"
@@ -1720,9 +1796,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.function.definition.special.constructor.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -1732,26 +1810,26 @@
]
},
"constructor_root": {
- "name": "meta.function.definition.special.constructor.cpp",
- "begin": "(\\s*+((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?::)*)(((?>(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))::((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\16((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\()))",
+ "begin": "\\s*+((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)(((?>(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))::((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\14((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.function.definition.special.constructor.cpp"
},
- "2": {
+ "1": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
"3": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "4": {
"name": "comment.block.cpp"
},
- "5": {
+ "4": {
"patterns": [
{
"match": "\\*\\/",
@@ -1763,23 +1841,23 @@
}
]
},
- "6": {
+ "5": {
"name": "storage.type.modifier.calling-convention.cpp"
},
- "7": {
+ "6": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "8": {
+ "7": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "9": {
+ "8": {
"name": "comment.block.cpp"
},
- "10": {
+ "9": {
"patterns": [
{
"match": "\\*\\/",
@@ -1791,7 +1869,7 @@
}
]
},
- "11": {
+ "10": {
"patterns": [
{
"match": "::",
@@ -1806,15 +1884,15 @@
}
]
},
- "13": {
- "name": "meta.template.call.cpp",
+ "11": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "15": {
+ "12": {},
+ "13": {
"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}))*(?=:)",
@@ -1830,45 +1908,46 @@
}
]
},
- "17": {
+ "14": {},
+ "15": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
"18": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
},
"19": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"20": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"21": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "22": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "23": {
"name": "comment.block.cpp"
},
- "24": {
+ "22": {
"patterns": [
{
"match": "\\*\\/",
@@ -1880,20 +1959,20 @@
}
]
},
- "25": {
+ "23": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "26": {
+ "24": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "27": {
+ "25": {
"name": "comment.block.cpp"
},
- "28": {
+ "26": {
"patterns": [
{
"match": "\\*\\/",
@@ -1906,79 +1985,78 @@
]
}
},
- "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "endCaptures": {},
+ "name": "meta.function.definition.special.constructor.cpp",
"patterns": [
{
- "name": "meta.head.function.definition.special.constructor.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"
}
},
+ "name": "meta.head.function.definition.special.constructor.cpp",
"patterns": [
{
"include": "#ever_present_context"
},
{
- "patterns": [
- {
- "match": "(\\=)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
+ "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": "(:)",
+ "begin": ":",
+ "end": "(?=\\{)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.separator.initializers.cpp"
}
},
- "end": "(?=\\{)",
+ "endCaptures": {},
"patterns": [
{
- "contentName": "meta.parameter.initialization.cpp",
- "begin": "((?(?:(?>[^<>]*)\\g<3>?)+)>)\\s*)?(\\()",
+ "begin": "((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"name": "entity.name.function.call.initializer.cpp"
@@ -1991,16 +2069,17 @@
}
]
},
+ "3": {},
"4": {
"name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
}
},
+ "contentName": "meta.parameter.initialization",
"patterns": [
{
"include": "#evaluation_context"
@@ -2008,8 +2087,8 @@
]
},
{
- "contentName": "meta.parameter.initialization.cpp",
"begin": "((?|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
}
},
+ "name": "meta.body.function.definition.special.constructor.cpp",
"patterns": [
{
"include": "#function_body_context"
@@ -2082,9 +2171,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.function.definition.special.constructor.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -2094,7 +2185,7 @@
]
},
"control_flow_keywords": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
- "name": "keyword.control.$5.cpp"
+ "3": {
+ "name": "keyword.control.$3.cpp"
}
}
},
"cpp_attributes": {
- "name": "support.other.attribute.cpp",
- "begin": "(\\[\\[)",
+ "begin": "\\[\\[",
+ "end": "\\]\\]",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.attribute.begin.cpp"
}
},
- "end": "(\\]\\])",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.attribute.end.cpp"
}
},
+ "name": "support.other.attribute.cpp",
"patterns": [
{
"include": "#attributes_context"
@@ -2147,6 +2247,8 @@
{
"begin": "\\(",
"end": "\\)",
+ "beginCaptures": {},
+ "endCaptures": {},
"patterns": [
{
"include": "#attributes_context"
@@ -2157,7 +2259,7 @@
]
},
{
- "match": "(using)\\s+((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\{)",
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<18>?)+>)?(?![\\w<:.]))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\{)",
+ "end": "\\}",
"beginCaptures": {
"1": {
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -2289,109 +2409,90 @@
}
]
},
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((import))(?:(?:\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/)))|((\\\")[^\\\"]*((?:\\\")?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/))))|(((?:((?:(?>(?:\\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)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;)))))|((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;))))(?:(?:\\s)+)?(;?)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.directive.import.cpp"
+ },
+ "5": {
+ "name": "string.quoted.other.lt-gt.include.cpp"
+ },
+ "6": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "name": "string.quoted.double.include.cpp"
+ },
+ "11": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "12": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.other.preprocessor.macro.include.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "22": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.preprocessor.import.cpp"
+ },
+ "d9bc4796b0b_preprocessor_number_literal": {
+ "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"name": "keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp"
@@ -2437,12 +3030,12 @@
"name": "punctuation.section.arguments.begin.bracket.round.decltype.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.decltype.cpp"
}
},
+ "contentName": "meta.arguments.decltype",
"patterns": [
{
"include": "#evaluation_context"
@@ -2450,8 +3043,8 @@
]
},
"decltype_specifier": {
- "contentName": "meta.arguments.decltype.cpp",
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"name": "keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp"
@@ -2485,12 +3078,12 @@
"name": "punctuation.section.arguments.begin.bracket.round.decltype.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.decltype.cpp"
}
},
+ "contentName": "meta.arguments.decltype",
"patterns": [
{
"include": "#evaluation_context"
@@ -2498,8 +3091,8 @@
]
},
"default_statement": {
- "name": "meta.conditional.case.cpp",
- "begin": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?:constexpr|explicit|mutable|virtual|inline|friend)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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)))((?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)(~(?|\\?\\?>)|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.function.definition.special.member.destructor.cpp"
},
- "2": {
+ "1": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "3": {
+ "2": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "4": {
+ "3": {
"name": "comment.block.cpp"
},
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
"5": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"6": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"7": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "8": {
"name": "comment.block.cpp"
},
- "9": {
+ "8": {
"patterns": [
{
"match": "\\*\\/",
@@ -2602,23 +3195,23 @@
}
]
},
- "10": {
+ "9": {
"name": "storage.type.modifier.calling-convention.cpp"
},
- "11": {
+ "10": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "12": {
+ "11": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "13": {
+ "12": {
"name": "comment.block.cpp"
},
- "14": {
+ "13": {
"patterns": [
{
"match": "\\*\\/",
@@ -2630,27 +3223,27 @@
}
]
},
- "15": {
+ "14": {
"patterns": [
{
"include": "#functional_specifiers_pre_parameters"
}
]
},
- "16": {
+ "15": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "17": {
+ "16": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "18": {
+ "17": {
"name": "comment.block.cpp"
},
- "19": {
+ "18": {
"patterns": [
{
"match": "\\*\\/",
@@ -2662,81 +3255,88 @@
}
]
},
- "20": {
+ "19": {
"name": "entity.name.function.destructor.cpp entity.name.function.definition.special.member.destructor.cpp"
}
},
- "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "endCaptures": {},
+ "name": "meta.function.definition.special.member.destructor.cpp",
"patterns": [
{
- "name": "meta.head.function.definition.special.member.destructor.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"
}
},
+ "name": "meta.head.function.definition.special.member.destructor.cpp",
"patterns": [
{
"include": "#ever_present_context"
},
{
- "patterns": [
- {
- "match": "(\\=)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
+ "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": "(\\()",
+ "begin": "\\(",
+ "end": "\\)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
}
+ },
+ "contentName": "meta.function.definition.parameters.special.member.destructor",
+ "patterns": []
+ },
+ {
+ "match": "((?:(?:final)|(?:override)))+",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.wordlike.cpp keyword.operator.$1.cpp"
+ }
}
},
{
@@ -2745,14 +3345,15 @@
]
},
{
- "name": "meta.body.function.definition.special.member.destructor.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
}
},
+ "name": "meta.body.function.definition.special.member.destructor.cpp",
"patterns": [
{
"include": "#function_body_context"
@@ -2760,9 +3361,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.function.definition.special.member.destructor.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -2772,26 +3375,26 @@
]
},
"destructor_root": {
- "name": "meta.function.definition.special.member.destructor.cpp",
- "begin": "(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?::)*)(((?>(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))::((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))~\\16((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\()))",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)(((?>(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))::((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))~\\14((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.function.definition.special.member.destructor.cpp"
},
- "2": {
+ "1": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
"3": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "4": {
"name": "comment.block.cpp"
},
- "5": {
+ "4": {
"patterns": [
{
"match": "\\*\\/",
@@ -2803,23 +3406,23 @@
}
]
},
- "6": {
+ "5": {
"name": "storage.type.modifier.calling-convention.cpp"
},
- "7": {
+ "6": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "8": {
+ "7": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "9": {
+ "8": {
"name": "comment.block.cpp"
},
- "10": {
+ "9": {
"patterns": [
{
"match": "\\*\\/",
@@ -2831,7 +3434,7 @@
}
]
},
- "11": {
+ "10": {
"patterns": [
{
"match": "::",
@@ -2846,15 +3449,15 @@
}
]
},
- "13": {
- "name": "meta.template.call.cpp",
+ "11": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "15": {
+ "12": {},
+ "13": {
"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}))*(?=:)",
@@ -2870,45 +3473,46 @@
}
]
},
- "17": {
+ "14": {},
+ "15": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
"18": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
},
"19": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"20": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"21": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "22": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "23": {
"name": "comment.block.cpp"
},
- "24": {
+ "22": {
"patterns": [
{
"match": "\\*\\/",
@@ -2920,20 +3524,20 @@
}
]
},
- "25": {
+ "23": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "26": {
+ "24": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "27": {
+ "25": {
"name": "comment.block.cpp"
},
- "28": {
+ "26": {
"patterns": [
{
"match": "\\*\\/",
@@ -2946,77 +3550,84 @@
]
}
},
- "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "endCaptures": {},
+ "name": "meta.function.definition.special.member.destructor.cpp",
"patterns": [
{
- "name": "meta.head.function.definition.special.member.destructor.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"
}
},
+ "name": "meta.head.function.definition.special.member.destructor.cpp",
"patterns": [
{
"include": "#ever_present_context"
},
{
- "patterns": [
- {
- "match": "(\\=)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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"
+ "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": "(\\()",
+ "begin": "\\(",
+ "end": "\\)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
}
+ },
+ "contentName": "meta.function.definition.parameters.special.member.destructor",
+ "patterns": []
+ },
+ {
+ "match": "((?:(?:final)|(?:override)))+",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.wordlike.cpp keyword.operator.$1.cpp"
+ }
}
},
{
@@ -3025,14 +3636,15 @@
]
},
{
- "name": "meta.body.function.definition.special.member.destructor.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
}
},
+ "name": "meta.body.function.definition.special.member.destructor.cpp",
"patterns": [
{
"include": "#function_body_context"
@@ -3040,9 +3652,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.function.definition.special.member.destructor.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -3052,8 +3666,8 @@
]
},
"diagnostic": {
- "name": "meta.preprocessor.diagnostic.$reference(directive).cpp",
- "begin": "((?:^)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*((?:error|warning)))\\b\\s*",
+ "begin": "(^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?:error|warning)))\\b(?:(?:\\s)+)?",
+ "end": "(?[#;\\/=*C~]+)(?![#;\\/=*C~]))\\s*.+\\s*\\8\\s*(?:\\n|$)))|(^\\s*((\\/\\*)\\s*?((?>[#;\\/=*C~]+)(?![#;\\/=*C~]))\\s*.+\\s*\\8\\s*\\*\\/)))",
+ "match": "(?:(^(?:(?:\\s)+)?((\\/\\/)(?:(?:\\s)+)?((?:[#;\\/=*C~]+)++(?![#;\\/=*C~]))(?:(?:\\s)+)?.+(?:(?:\\s)+)?\\4(?:(?:\\s)+)?(?:\\n|$)))|(^(?:(?:\\s)+)?((\\/\\*)(?:(?:\\s)+)?((?:[#;\\/=*C~]+)++(?![#;\\/=*C~]))(?:(?:\\s)+)?.+(?:(?:\\s)+)?\\8(?:(?:\\s)+)?\\*\\/)))",
"captures": {
"1": {
"name": "meta.toc-list.banner.double-slash.cpp"
@@ -3174,23 +3792,23 @@
}
},
"empty_square_brackets": {
- "name": "storage.modifier.array.bracket.square.cpp",
- "match": "(?-mix:(?-mix:(?(?:(?>[^<>]*)\\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*((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?(::))?(?:(?:\\s)+)?((?|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.enum.cpp"
},
- "2": {
+ "1": {
"name": "storage.type.enum.cpp"
},
- "3": {
- "name": "storage.type.enum.enum-key.$3.cpp"
+ "2": {
+ "name": "storage.type.enum.enum-key.$2.cpp"
},
- "4": {
+ "3": {
"patterns": [
{
"include": "#attributes_context"
@@ -3200,22 +3818,33 @@
}
]
},
- "5": {
+ "4": {
"name": "entity.name.type.enum.cpp"
},
- "6": {
+ "5": {
"name": "punctuation.separator.colon.type-specifier.cpp"
},
- "8": {
+ "6": {
"patterns": [
{
"include": "#scope_resolution_inner_generated"
}
]
},
- "9": {
+ "7": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
},
+ "8": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {},
+ "10": {
+ "name": "entity.name.scope-resolution.cpp"
+ },
"11": {
"name": "meta.template.call.cpp",
"patterns": [
@@ -3224,25 +3853,14 @@
}
]
},
+ "12": {},
"13": {
- "name": "entity.name.scope-resolution.cpp"
- },
- "14": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- },
- "16": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
},
- "17": {
- "name": "storage.type.integral.$17.cpp"
+ "14": {
+ "name": "storage.type.integral.$14.cpp"
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
"endCaptures": {
"1": {
"name": "punctuation.terminator.statement.cpp"
@@ -3251,16 +3869,18 @@
"name": "punctuation.terminator.statement.cpp"
}
},
+ "name": "meta.block.enum.cpp",
"patterns": [
{
- "name": "meta.head.enum.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.enum.cpp"
}
},
+ "name": "meta.head.enum.cpp",
"patterns": [
{
"include": "$self"
@@ -3268,14 +3888,15 @@
]
},
{
- "name": "meta.body.enum.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.enum.cpp"
}
},
+ "name": "meta.body.enum.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -3295,9 +3916,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.enum.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -3307,7 +3930,7 @@
]
},
"enum_declare": {
- "match": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\S)(?![:{])",
+ "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)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
"captures": {
"1": {
"name": "storage.type.enum.declare.cpp"
@@ -3320,34 +3943,43 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "entity.name.type.enum.cpp"
},
- "7": {
+ "5": {
"patterns": [
{
"match": "\\*",
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -3383,6 +4015,40 @@
}
]
},
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
"8": {
"patterns": [
{
@@ -3391,105 +4057,107 @@
]
},
"9": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"10": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"11": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"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": {
+ "13": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "22": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "23": {
- "name": "comment.block.cpp"
- },
- "24": {
+ "14": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
}
},
"enumerator_list": {
- "match": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
- "name": "keyword.control.exception.$5.cpp"
+ "3": {
+ "name": "keyword.control.exception.$3.cpp"
}
}
},
"extern_block": {
- "name": "meta.block.extern.cpp",
- "begin": "(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(extern)(?=\\s*\\\"))",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(extern)(?=\\s*\\\")",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.extern.cpp"
},
- "2": {
+ "1": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "3": {
+ "2": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "4": {
+ "3": {
"name": "comment.block.cpp"
},
- "5": {
+ "4": {
"patterns": [
{
"match": "\\*\\/",
@@ -3726,11 +4394,10 @@
}
]
},
- "6": {
+ "5": {
"name": "storage.type.extern.cpp"
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
"endCaptures": {
"1": {
"name": "punctuation.terminator.statement.cpp"
@@ -3739,16 +4406,18 @@
"name": "punctuation.terminator.statement.cpp"
}
},
+ "name": "meta.block.extern.cpp",
"patterns": [
{
- "name": "meta.head.extern.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.extern.cpp"
}
},
+ "name": "meta.head.extern.cpp",
"patterns": [
{
"include": "$self"
@@ -3756,14 +4425,15 @@
]
},
{
- "name": "meta.body.extern.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.extern.cpp"
}
},
+ "name": "meta.body.extern.cpp",
"patterns": [
{
"include": "$self"
@@ -3771,9 +4441,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.extern.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -3812,7 +4484,7 @@
"include": "#typedef_union"
},
{
- "include": "#typedef_keyword"
+ "include": "#misc_keywords"
},
{
"include": "#standard_declares"
@@ -3859,7 +4531,8 @@
]
},
"function_call": {
- "begin": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(((?(?:(?>[^<>]*)\\g<12>?)+)>)\\s*)?(\\()",
+ "begin": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)(?:\\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<11>?)+>)(?:\\s)*+)?(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"patterns": [
@@ -3871,31 +4544,31 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.function.call.cpp"
},
- "7": {
+ "6": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "8": {
+ "7": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "9": {
+ "8": {
"name": "comment.block.cpp"
},
- "10": {
+ "9": {
"patterns": [
{
"match": "\\*\\/",
@@ -3907,7 +4580,7 @@
}
]
},
- "11": {
+ "10": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -3915,13 +4588,13 @@
}
]
},
- "13": {
+ "11": {},
+ "12": {
"name": "punctuation.section.arguments.begin.bracket.round.function.call.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.function.call.cpp"
}
},
@@ -3932,26 +4605,26 @@
]
},
"function_definition": {
- "name": "meta.function.definition.cpp",
- "begin": "((?:(?:^|\\G|(?<=;|\\}))|(?<=>))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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<70>?)+)>)\\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<70>?)+)>)\\s*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<70>?)+)>)\\s*)?(?![\\w<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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<70>?)+)>)\\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(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\())",
+ "begin": "(?:(?:^|\\G|(?<=;|\\}))|(?<=>))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<60>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<60>?)+>)?(?![\\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)))((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<60>?)+>)(?:\\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)))(?=\\()",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.function.definition.cpp"
},
- "2": {
+ "1": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "3": {
+ "2": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "4": {
+ "3": {
"name": "comment.block.cpp"
},
- "5": {
+ "4": {
"patterns": [
{
"match": "\\*\\/",
@@ -3963,38 +4636,48 @@
}
]
},
- "6": {
+ "5": {
"name": "storage.type.template.cpp"
},
- "7": {
+ "6": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "8": {
+ "7": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "9": {
+ "8": {
"name": "comment.block.cpp"
},
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
"10": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ "include": "#attributes_context"
},
{
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#number_literal"
}
]
},
"11": {
"patterns": [
{
- "match": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))",
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
"captures": {
"1": {
"name": "storage.modifier.$1.cpp"
@@ -4029,7 +4712,7 @@
]
},
"12": {
- "name": "storage.modifier.$1.cpp"
+ "name": "storage.modifier.$12.cpp"
},
"13": {
"patterns": [
@@ -4060,15 +4743,16 @@
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -4153,52 +4854,43 @@
}
]
},
+ "27": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -4264,45 +4946,95 @@
}
]
},
- "45": {
+ "36": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "46": {
+ "37": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "47": {
+ "38": {
"name": "comment.block.cpp"
},
+ "39": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "40": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "41": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "42": {
+ "name": "comment.block.cpp"
+ },
+ "43": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.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": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "49": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "50": {
+ "49": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "51": {
+ "50": {
"name": "comment.block.cpp"
},
- "52": {
+ "51": {
"patterns": [
{
"match": "\\*\\/",
@@ -4314,6 +5046,9 @@
}
]
},
+ "52": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
"53": {
"patterns": [
{
@@ -4342,30 +5077,23 @@
"57": {
"patterns": [
{
- "include": "#inline_comment"
+ "include": "#scope_resolution_function_definition_inner_generated"
}
]
},
"58": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
},
"59": {
- "name": "comment.block.cpp"
- },
- "60": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#template_call_range"
}
]
},
+ "60": {},
"61": {
- "name": "storage.type.modifier.calling-convention.cpp"
+ "name": "entity.name.function.definition.cpp"
},
"62": {
"patterns": [
@@ -4391,83 +5119,39 @@
"name": "comment.block.cpp"
}
]
- },
- "66": {
- "patterns": [
- {
- "include": "#scope_resolution_function_definition_inner_generated"
- }
- ]
- },
- "67": {
- "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
- },
- "69": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- },
- "71": {
- "name": "entity.name.function.definition.cpp"
- },
- "72": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "73": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "74": {
- "name": "comment.block.cpp"
- },
- "75": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
}
},
- "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "endCaptures": {},
+ "name": "meta.function.definition.cpp",
"patterns": [
{
- "name": "meta.head.function.definition.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.function.definition.cpp"
}
},
+ "name": "meta.head.function.definition.cpp",
"patterns": [
{
"include": "#ever_present_context"
},
{
- "contentName": "meta.function.definition.parameters.cpp",
- "begin": "(\\()",
+ "begin": "\\(",
+ "end": "\\)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parameters.begin.bracket.round.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parameters.end.bracket.round.cpp"
}
},
+ "contentName": "meta.function.definition.parameters",
"patterns": [
{
"include": "#ever_present_context"
@@ -4483,20 +5167,218 @@
}
]
},
+ {
+ "match": "(?<=^|\\))(?:(?:\\s)+)?(->)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<23>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<23>?)+>)?(?![\\w<:.]))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.function.return-type.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": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "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": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.function.definition.cpp"
}
},
+ "name": "meta.body.function.definition.cpp",
"patterns": [
{
"include": "#function_body_context"
@@ -4504,9 +5386,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.function.definition.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -4529,21 +5413,23 @@
]
},
"function_pointer": {
- "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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*(\\()",
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<18>?)+>)?(?![\\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)+)?(\\()",
+ "end": "(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()",
"beginCaptures": {
"1": {
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -4628,52 +5531,43 @@
}
]
},
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -4739,111 +5623,110 @@
}
]
},
- "29": {
+ "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": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
"30": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "comment.block.cpp"
},
"31": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "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": {
+ "33": {
"name": "punctuation.definition.function.pointer.dereference.cpp"
},
- "43": {
+ "34": {
"name": "variable.other.definition.pointer.function.cpp"
},
- "44": {
+ "35": {
"name": "punctuation.definition.begin.bracket.square.cpp"
},
- "45": {
+ "36": {
"patterns": [
{
"include": "#evaluation_context"
}
]
},
- "46": {
+ "37": {
"name": "punctuation.definition.end.bracket.square.cpp"
},
- "47": {
+ "38": {
"name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
},
- "48": {
+ "39": {
"name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
}
},
- "end": "(\\))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=[{=,);]|\\n)(?!\\()",
"endCaptures": {
"1": {
"name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
@@ -4881,21 +5764,23 @@
]
},
"function_pointer_parameter": {
- "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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*(\\()",
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<18>?)+>)?(?![\\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)+)?(\\()",
+ "end": "(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()",
"beginCaptures": {
"1": {
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -4980,52 +5882,43 @@
}
]
},
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -5091,111 +5974,110 @@
}
]
},
- "29": {
+ "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": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
"30": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "comment.block.cpp"
},
"31": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "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": {
+ "33": {
"name": "punctuation.definition.function.pointer.dereference.cpp"
},
- "43": {
+ "34": {
"name": "variable.parameter.pointer.function.cpp"
},
- "44": {
+ "35": {
"name": "punctuation.definition.begin.bracket.square.cpp"
},
- "45": {
+ "36": {
"patterns": [
{
"include": "#evaluation_context"
}
]
},
- "46": {
+ "37": {
"name": "punctuation.definition.end.bracket.square.cpp"
},
- "47": {
+ "38": {
"name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
},
- "48": {
+ "39": {
"name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
}
},
- "end": "(\\))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=[{=,);]|\\n)(?!\\()",
"endCaptures": {
"1": {
"name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
@@ -5233,23 +6115,23 @@
]
},
"functional_specifiers_pre_parameters": {
- "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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}))*)",
+ "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}))*)",
"captures": {
"1": {
"name": "keyword.control.goto.cpp"
@@ -5312,30 +6196,42 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "entity.name.label.call.cpp"
}
}
},
+ "identifier": {
+ "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}))*"
+ },
"include": {
- "match": "(?:^)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((#)\\s*((?:include|include_next))\\b)\\s*(?:(?:(?:((<)[^>]*(>?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=\\/\\/)))|((\\\")[^\\\"]*(\\\"?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=\\/\\/))))|(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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}))*)*((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=(?:\\/\\/|;)))))|((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=(?:\\/\\/|;))))",
+ "match": "^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((#)(?:(?:\\s)+)?((?:include|include_next))\\b)(?:(?:\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/)))|((\\\")[^\\\"]*((?:\\\")?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/))))|(((?:((?:(?>(?:\\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)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;)))))|((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;))))",
"captures": {
"1": {
"patterns": [
@@ -5345,172 +6241,226 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
- "name": "keyword.control.directive.$7.cpp"
+ "3": {
+ "name": "keyword.control.directive.$5.cpp"
},
- "6": {
+ "4": {
"name": "punctuation.definition.directive.cpp"
},
- "8": {
+ "6": {
"name": "string.quoted.other.lt-gt.include.cpp"
},
- "9": {
+ "7": {
"name": "punctuation.definition.string.begin.cpp"
},
- "10": {
+ "8": {
"name": "punctuation.definition.string.end.cpp"
},
- "11": {
+ "9": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
+ "10": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "11": {
+ "name": "string.quoted.double.include.cpp"
+ },
"12": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "punctuation.definition.string.begin.cpp"
},
"13": {
- "name": "comment.block.cpp"
+ "name": "punctuation.definition.string.end.cpp"
},
"14": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"15": {
- "name": "string.quoted.double.include.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"16": {
- "name": "punctuation.definition.string.begin.cpp"
+ "name": "entity.name.other.preprocessor.macro.include.cpp"
},
"17": {
- "name": "punctuation.definition.string.end.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"18": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"19": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"20": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"21": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"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"
- }
- ]
- },
- "31": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "32": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "33": {
- "name": "comment.block.cpp"
- },
- "34": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
@@ -5527,7 +6477,7 @@
"name": "punctuation.separator.delimiter.comma.inheritance.cpp"
},
{
- "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))",
+ "match": "(?<=protected|virtual|private|public|,|:)(?:(?:\\s)+)?(?!(?:(?:(?:protected)|(?:private)|(?:public))|virtual))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<12>?)+>)?(?![\\w<:.]))",
"captures": {
"1": {
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -5592,122 +6560,147 @@
]
},
"4": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"5": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"6": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"7": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "25": {
- "name": "entity.name.type.cpp"
- },
- "26": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- }
+ "12": {}
}
}
]
},
+ "inline_builtin_storage_type": {
+ "match": "(?:\\s)*+(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/))",
+ "match": "(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/))",
"captures": {
"1": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
@@ -5734,7 +6727,7 @@
"name": "invalid.illegal.unexpected.punctuation.definition.comment.end.cpp"
},
"label": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)",
+ "match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:)",
"captures": {
"1": {
"patterns": [
@@ -5744,70 +6737,89 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
+ "3": {
"name": "entity.name.label.cpp"
},
- "6": {
+ "4": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "7": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "8": {
- "name": "comment.block.cpp"
- },
- "9": {
+ "5": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "10": {
+ "6": {
"name": "punctuation.separator.label.cpp"
}
}
},
"lambdas": {
- "begin": "((?:(?<=[^\\s]|^)(?])|(?<=\\Wreturn|^return))\\s*(\\[(?!\\[| *+\"| *+\\d))((?>(?:[^\\[\\]]|((?(?:(?>[^\\[\\]]*)\\g<4>?)+)\\]))*))(\\](?!\\[)))",
+ "begin": "(?:(?<=[^\\s]|^)(?])|(?<=\\Wreturn|^return))(?:(?:\\s)+)?(\\[(?!\\[| *+\"| *+\\d))((?:[^\\[\\]]|((??)++\\]))*+)(\\](?!((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))[\\[\\];]))",
+ "end": "(?<=[;}])",
"beginCaptures": {
- "2": {
+ "1": {
"name": "punctuation.definition.capture.begin.lambda.cpp"
},
- "3": {
+ "2": {
"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}))*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?=\\]|\\z|$)|(,))|(\\=))",
+ "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"
@@ -5850,26 +6862,52 @@
}
]
},
- "5": {
+ "3": {},
+ "4": {
"name": "punctuation.definition.capture.end.lambda.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"
+ }
+ ]
}
},
- "end": "(?<=})",
+ "endCaptures": {},
"patterns": [
{
- "name": "meta.function.definition.parameters.lambda.cpp",
- "begin": "(\\()",
+ "begin": "\\(",
+ "end": "\\)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.parameters.begin.lambda.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.parameters.end.lambda.cpp"
}
},
+ "name": "meta.function.definition.parameters.lambda.cpp",
"patterns": [
{
"include": "#function_parameter_context"
@@ -5877,7 +6915,7 @@
]
},
{
- "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*line\\b)",
+ "begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?line\\b",
+ "end": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*define\\b)\\s*((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?define\\b)(?:(?:\\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(?!uint_least64_t[^(?-mix:\\w)]|uint_least16_t[^(?-mix:\\w)]|uint_least32_t[^(?-mix:\\w)]|int_least16_t[^(?-mix:\\w)]|uint_fast64_t[^(?-mix:\\w)]|uint_fast32_t[^(?-mix:\\w)]|uint_fast16_t[^(?-mix:\\w)]|uint_least8_t[^(?-mix:\\w)]|int_least64_t[^(?-mix:\\w)]|int_least32_t[^(?-mix:\\w)]|int_fast32_t[^(?-mix:\\w)]|int_fast16_t[^(?-mix:\\w)]|int_least8_t[^(?-mix:\\w)]|uint_fast8_t[^(?-mix:\\w)]|int_fast64_t[^(?-mix:\\w)]|int_fast8_t[^(?-mix:\\w)]|suseconds_t[^(?-mix:\\w)]|useconds_t[^(?-mix:\\w)]|in_addr_t[^(?-mix:\\w)]|uintmax_t[^(?-mix:\\w)]|uintmax_t[^(?-mix:\\w)]|uintptr_t[^(?-mix:\\w)]|blksize_t[^(?-mix:\\w)]|in_port_t[^(?-mix:\\w)]|intmax_t[^(?-mix:\\w)]|unsigned[^(?-mix:\\w)]|blkcnt_t[^(?-mix:\\w)]|uint32_t[^(?-mix:\\w)]|u_quad_t[^(?-mix:\\w)]|uint16_t[^(?-mix:\\w)]|intmax_t[^(?-mix:\\w)]|uint64_t[^(?-mix:\\w)]|intptr_t[^(?-mix:\\w)]|swblk_t[^(?-mix:\\w)]|wchar_t[^(?-mix:\\w)]|u_short[^(?-mix:\\w)]|qaddr_t[^(?-mix:\\w)]|caddr_t[^(?-mix:\\w)]|daddr_t[^(?-mix:\\w)]|fixpt_t[^(?-mix:\\w)]|nlink_t[^(?-mix:\\w)]|segsz_t[^(?-mix:\\w)]|clock_t[^(?-mix:\\w)]|ssize_t[^(?-mix:\\w)]|int16_t[^(?-mix:\\w)]|int32_t[^(?-mix:\\w)]|int64_t[^(?-mix:\\w)]|uint8_t[^(?-mix:\\w)]|int8_t[^(?-mix:\\w)]|mode_t[^(?-mix:\\w)]|quad_t[^(?-mix:\\w)]|ushort[^(?-mix:\\w)]|u_long[^(?-mix:\\w)]|u_char[^(?-mix:\\w)]|double[^(?-mix:\\w)]|size_t[^(?-mix:\\w)]|signed[^(?-mix:\\w)]|time_t[^(?-mix:\\w)]|key_t[^(?-mix:\\w)]|ino_t[^(?-mix:\\w)]|gid_t[^(?-mix:\\w)]|dev_t[^(?-mix:\\w)]|div_t[^(?-mix:\\w)]|float[^(?-mix:\\w)]|u_int[^(?-mix:\\w)]|uid_t[^(?-mix:\\w)]|short[^(?-mix:\\w)]|off_t[^(?-mix:\\w)]|pid_t[^(?-mix:\\w)]|id_t[^(?-mix:\\w)]|bool[^(?-mix:\\w)]|char[^(?-mix:\\w)]|id_t[^(?-mix:\\w)]|uint[^(?-mix:\\w)]|void[^(?-mix:\\w)]|long[^(?-mix:\\w)]|auto[^(?-mix:\\w)]|int[^(?-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(?!\\())",
+ "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(?!uint_least32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_least16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_least64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_least32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_least64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_fast32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_fast64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_least8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_fast16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_least16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_fast16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_least8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint_fast8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_fast64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_fast32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int_fast8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|suseconds_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|useconds_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|in_addr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uintmax_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uintmax_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uintmax_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|in_port_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uintptr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|blksize_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|u_quad_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|intmax_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|intmax_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|unsigned[^Pattern.new(\n match: \\/\\w\\/,\n)]|blkcnt_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|intptr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|swblk_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|wchar_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|u_short[^Pattern.new(\n match: \\/\\w\\/,\n)]|qaddr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|caddr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|daddr_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|fixpt_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|nlink_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|segsz_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|clock_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|ssize_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int16_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int32_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int64_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int8_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|mode_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|quad_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|ushort[^Pattern.new(\n match: \\/\\w\\/,\n)]|u_long[^Pattern.new(\n match: \\/\\w\\/,\n)]|u_char[^Pattern.new(\n match: \\/\\w\\/,\n)]|double[^Pattern.new(\n match: \\/\\w\\/,\n)]|signed[^Pattern.new(\n match: \\/\\w\\/,\n)]|time_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|size_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|key_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|div_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|ino_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uid_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|gid_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|off_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|pid_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|float[^Pattern.new(\n match: \\/\\w\\/,\n)]|dev_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|u_int[^Pattern.new(\n match: \\/\\w\\/,\n)]|short[^Pattern.new(\n match: \\/\\w\\/,\n)]|bool[^Pattern.new(\n match: \\/\\w\\/,\n)]|id_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|uint[^Pattern.new(\n match: \\/\\w\\/,\n)]|long[^Pattern.new(\n match: \\/\\w\\/,\n)]|char[^Pattern.new(\n match: \\/\\w\\/,\n)]|void[^Pattern.new(\n match: \\/\\w\\/,\n)]|auto[^Pattern.new(\n match: \\/\\w\\/,\n)]|id_t[^Pattern.new(\n match: \\/\\w\\/,\n)]|int[^Pattern.new(\n match: \\/\\w\\/,\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}))*\\b(?!\\())",
"captures": {
"1": {
"patterns": [
@@ -6092,39 +7132,48 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
+ "3": {
"name": "variable.language.this.cpp"
},
- "6": {
+ "4": {
"name": "variable.other.object.access.cpp"
},
- "7": {
+ "5": {
"name": "punctuation.separator.dot-access.cpp"
},
- "8": {
+ "6": {
"name": "punctuation.separator.pointer-access.cpp"
},
- "9": {
+ "7": {
"patterns": [
{
- "match": "(?<=(?:\\.\\*|\\.|->|->\\*))\\s*(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?\\*|->)))",
+ "match": "(?<=(?:\\.\\*|\\.|->|->\\*))(?:(?:\\s)+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))",
"captures": {
"1": {
"patterns": [
@@ -6166,7 +7215,7 @@
}
},
{
- "match": "(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?\\*|->)))",
+ "match": "(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))",
"captures": {
"1": {
"patterns": [
@@ -6215,13 +7264,13 @@
}
]
},
- "10": {
+ "8": {
"name": "variable.other.property.cpp"
}
}
},
"memory_operators": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?:(delete)\\s*(\\[\\])|(delete))|(new))(?!\\w))",
+ "match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(delete)(?:(?:\\s)+)?(\\[\\])|(delete))|(new))(?!\\w))",
"captures": {
"1": {
"patterns": [
@@ -6231,42 +7280,52 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
+ "3": {
"name": "keyword.operator.wordlike.cpp"
},
- "6": {
+ "4": {
"name": "keyword.operator.delete.array.cpp"
},
- "7": {
+ "5": {
"name": "keyword.operator.delete.array.bracket.cpp"
},
- "8": {
+ "6": {
"name": "keyword.operator.delete.cpp"
},
- "9": {
+ "7": {
"name": "keyword.operator.new.cpp"
}
}
},
"method_access": {
- "begin": "(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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*(\\()",
+ "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)+)?(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"patterns": [
@@ -6308,7 +7367,7 @@
"9": {
"patterns": [
{
- "match": "(?<=(?:\\.\\*|\\.|->|->\\*))\\s*(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?\\*|->)))",
+ "match": "(?<=(?:\\.\\*|\\.|->|->\\*))(?:(?:\\s)+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))",
"captures": {
"1": {
"patterns": [
@@ -6350,7 +7409,7 @@
}
},
{
- "match": "(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?\\*|->)))",
+ "match": "(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?\\*|->)))",
"captures": {
"1": {
"patterns": [
@@ -6406,9 +7465,8 @@
"name": "punctuation.section.arguments.begin.bracket.round.function.member.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.function.member.cpp"
}
},
@@ -6418,12 +7476,8 @@
}
]
},
- "misc_storage_modifiers": {
- "match": "\\b(?:export|mutable|typename|thread_local|register|restrict|static|volatile|inline)\\b",
- "name": "storage.modifier.$0.cpp"
- },
- "module_import": {
- "match": "(?:^)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((import))\\s*(?:(?:(?:((<)[^>]*(>?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=\\/\\/)))|((\\\")[^\\\"]*(\\\"?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=\\/\\/))))|(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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}))*)*((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=(?:\\/\\/|;)))))|((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:\\n|$)|(?=(?:\\/\\/|;))))\\s*(;?)",
+ "misc_keywords": {
+ "match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"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.import.cpp"
- },
- "7": {
- "name": "string.quoted.other.lt-gt.include.cpp"
- },
- "8": {
- "name": "punctuation.definition.string.begin.cpp"
- },
- "9": {
- "name": "punctuation.definition.string.end.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": "string.quoted.double.include.cpp"
- },
- "15": {
- "name": "punctuation.definition.string.begin.cpp"
- },
- "16": {
- "name": "punctuation.definition.string.end.cpp"
- },
- "17": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "18": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "19": {
- "name": "comment.block.cpp"
- },
- "20": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "21": {
- "name": "entity.name.other.preprocessor.macro.include.cpp"
- },
- "22": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "23": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "24": {
- "name": "comment.block.cpp"
- },
- "25": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "26": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "27": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "28": {
- "name": "comment.block.cpp"
- },
- "29": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.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": "punctuation.terminator.statement.cpp"
+ "name": "keyword.other.$3.cpp"
}
- },
- "name": "meta.preprocessor.import.cpp"
+ }
},
"ms_attributes": {
- "name": "support.other.attribute.cpp",
- "begin": "(__declspec\\()",
+ "begin": "__declspec\\(",
+ "end": "\\)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.attribute.begin.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.attribute.end.cpp"
}
},
+ "name": "support.other.attribute.cpp",
"patterns": [
{
"include": "#attributes_context"
@@ -6626,6 +7539,8 @@
{
"begin": "\\(",
"end": "\\)",
+ "beginCaptures": {},
+ "endCaptures": {},
"patterns": [
{
"include": "#attributes_context"
@@ -6636,7 +7551,7 @@
]
},
{
- "match": "(using)\\s+((?(?:(?>[^<>]*)\\g<9>?)+)>)\\s*)?::)*\\s*+)\\s*((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<8>?)+>)(?:\\s)*+)?::)*\\s*+)(?:(?:\\s)+)?((?|\\?\\?>)|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.namespace.cpp"
},
- "2": {
+ "1": {
"name": "keyword.other.namespace.definition.cpp storage.type.namespace.definition.cpp"
}
},
- "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "endCaptures": {},
+ "name": "meta.block.namespace.cpp",
"patterns": [
{
- "name": "meta.head.namespace.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.namespace.cpp"
}
},
+ "name": "meta.head.namespace.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -6739,7 +7655,7 @@
"include": "#attributes_context"
},
{
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<4>?)+>)(?:\\s)*+)?::)*\\s*+)(?:(?:\\s)+)?((?|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.namespace.cpp"
}
},
+ "name": "meta.body.namespace.cpp",
"patterns": [
{
"include": "$self"
@@ -6788,9 +7705,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.namespace.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -6800,8 +7719,8 @@
]
},
"noexcept_operator": {
- "contentName": "meta.arguments.operator.noexcept.cpp",
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"name": "keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp"
@@ -6835,51 +7754,18 @@
"name": "punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp"
}
},
+ "contentName": "meta.arguments.operator.noexcept",
"patterns": [
{
"include": "#evaluation_context"
}
]
},
- "non_primitive_types": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?::)*)(?:(?:((?:delete\\[\\]|delete|new\\[\\]|<=>|<<=|new|>>=|\\->\\*|\\/=|%=|&=|>=|\\|=|\\+\\+|\\-\\-|\\(\\)|\\[\\]|\\->|\\+\\+|<<|>>|\\-\\-|<=|\\^=|==|!=|&&|\\|\\||\\+=|\\-=|\\*=|,|\\+|\\-|!|~|\\*|&|\\*|\\/|%|\\+|\\-|<|>|&|\\^|\\||=))|((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:\\[\\])?)))|(\"\")((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\<|\\())",
+ "begin": "(?:(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<55>?)+>)?(?![\\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)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)(operator)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)(?:(?:((?:(?:delete\\[\\])|(?:delete)|(?:new\\[\\])|(?:<=>)|(?:<<=)|(?:new)|(?:>>=)|(?:\\->\\*)|(?:\\/=)|(?:%=)|(?:&=)|(?:>=)|(?:\\|=)|(?:\\+\\+)|(?:\\-\\-)|(?:\\(\\))|(?:\\[\\])|(?:\\->)|(?:\\+\\+)|(?:<<)|(?:>>)|(?:\\-\\-)|(?:<=)|(?:\\^=)|(?:==)|(?:!=)|(?:&&)|(?:\\|\\|)|(?:\\+=)|(?:\\-=)|(?:\\*=)|,|(?:\\+)|(?:\\-)|!|~|(?:\\*)|&|(?:\\*)|(?:\\/)|%|(?:\\+)|(?:\\-)|<|>|&|(?:\\^)|(?:\\|)|=))|((?(?:\\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)))(?=\\<|\\()",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.function.definition.special.operator-overload.cpp"
},
- "2": {
+ "1": {
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -7195,7 +8101,7 @@
}
]
},
- "3": {
+ "2": {
"patterns": [
{
"include": "#attributes_context"
@@ -7205,102 +8111,93 @@
}
]
},
- "4": {
+ "3": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "5": {
+ "4": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "6": {
+ "5": {
"name": "comment.block.cpp"
},
+ "6": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
"7": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"8": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "9": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "10": {
+ "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": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
},
{
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -7366,20 +8253,20 @@
}
]
},
- "30": {
+ "20": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "31": {
+ "21": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "32": {
+ "22": {
"name": "comment.block.cpp"
},
- "33": {
+ "23": {
"patterns": [
{
"match": "\\*\\/",
@@ -7391,135 +8278,135 @@
}
]
},
- "34": {
+ "24": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "35": {
+ "25": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "36": {
+ "26": {
"name": "comment.block.cpp"
},
+ "27": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "30": {
+ "name": "comment.block.cpp"
+ },
+ "31": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "32": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "33": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "34": {
+ "name": "comment.block.cpp"
+ },
+ "35": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "36": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
"37": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"38": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "39": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "40": {
+ "39": {
"name": "comment.block.cpp"
},
+ "40": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
"41": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"42": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"43": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "comment.block.cpp"
},
"44": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "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": "::",
@@ -7534,31 +8421,31 @@
}
]
},
- "57": {
- "name": "meta.template.call.cpp",
+ "46": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "59": {
+ "47": {},
+ "48": {
"name": "keyword.other.operator.overload.cpp"
},
- "60": {
+ "49": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "61": {
+ "50": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "62": {
+ "51": {
"name": "comment.block.cpp"
},
- "63": {
+ "52": {
"patterns": [
{
"match": "\\*\\/",
@@ -7570,7 +8457,7 @@
}
]
},
- "64": {
+ "53": {
"patterns": [
{
"match": "::",
@@ -7585,28 +8472,28 @@
}
]
},
- "66": {
- "name": "meta.template.call.cpp",
+ "54": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "68": {
+ "55": {},
+ "56": {
"name": "entity.name.operator.cpp"
},
- "69": {
+ "57": {
"name": "entity.name.operator.type.cpp"
},
- "70": {
+ "58": {
"patterns": [
{
"match": "\\*",
"name": "entity.name.operator.type.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -7642,20 +8529,20 @@
}
]
},
- "71": {
+ "59": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "72": {
+ "60": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "73": {
+ "61": {
"name": "comment.block.cpp"
},
- "74": {
+ "62": {
"patterns": [
{
"match": "\\*\\/",
@@ -7667,104 +8554,104 @@
}
]
},
- "75": {
+ "63": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "76": {
+ "64": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "77": {
+ "65": {
"name": "comment.block.cpp"
},
+ "66": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "67": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "68": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "69": {
+ "name": "comment.block.cpp"
+ },
+ "70": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "71": {
+ "name": "entity.name.operator.type.array.cpp"
+ },
+ "72": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
+ "73": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "74": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "75": {
+ "name": "comment.block.cpp"
+ },
+ "76": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "77": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
"78": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"79": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
"80": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "comment.block.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": "\\*\\/",
@@ -7777,17 +8664,19 @@
]
}
},
- "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "endCaptures": {},
+ "name": "meta.function.definition.special.operator-overload.cpp",
"patterns": [
{
- "name": "meta.head.function.definition.special.operator-overload.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp"
}
},
+ "name": "meta.head.function.definition.special.operator-overload.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -7796,19 +8685,19 @@
"include": "#template_call_range"
},
{
- "contentName": "meta.function.definition.parameters.special.operator-overload.cpp",
- "begin": "(\\()",
+ "begin": "\\(",
+ "end": "\\)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp"
}
},
+ "contentName": "meta.function.definition.parameters.special.operator-overload",
"patterns": [
{
"include": "#function_parameter_context"
@@ -7827,14 +8716,15 @@
]
},
{
- "name": "meta.body.function.definition.special.operator-overload.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp"
}
},
+ "name": "meta.body.function.definition.special.operator-overload.cpp",
"patterns": [
{
"include": "#function_body_context"
@@ -7842,9 +8732,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.function.definition.special.operator-overload.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -7856,22 +8748,292 @@
"operators": {
"patterns": [
{
- "include": "#sizeof_operator"
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
+ "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"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.sizeof",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
},
{
- "include": "#alignof_operator"
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
+ "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"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.alignof",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
},
{
- "include": "#alignas_operator"
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
+ "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"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.alignas",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
},
{
- "include": "#typeid_operator"
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
+ "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"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.typeid",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
},
{
- "include": "#noexcept_operator"
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
+ "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"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.noexcept",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
},
{
- "include": "#sizeof_variadic_operator"
+ "begin": "(\\bsizeof\\.\\.\\.)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.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.variadic.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.sizeof.variadic",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
},
{
"match": "--",
@@ -7920,22 +9082,1326 @@
"over_qualified_types": {
"patterns": [
{
- "include": "#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": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.struct.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "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": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
},
{
- "include": "#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": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.enum.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "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": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
},
{
- "include": "#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": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.union.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "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": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
},
{
- "include": "#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": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.class.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "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": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
}
]
},
"parameter": {
- "name": "meta.parameter.cpp",
- "begin": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\w)",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\w)",
+ "end": "(?:(?=\\))|(,))",
"beginCaptures": {
"1": {
"patterns": [
@@ -7963,12 +10429,12 @@
]
}
},
- "end": "(?:(?=\\))|(,))",
"endCaptures": {
"1": {
"name": "punctuation.separator.delimiter.comma.cpp"
}
},
+ "name": "meta.parameter.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -7983,7 +10449,7 @@
"include": "#vararg_ellipses"
},
{
- "match": "((?:((?:volatile|register|restrict|static|extern|const))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))+)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=,|\\)|=)",
+ "match": "((?:((?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))+)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\s)*+(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=,|\\)|=)",
"captures": {
"1": {
"patterns": [
@@ -8046,159 +10512,34 @@
]
},
"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": {
+ "12": {
"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": {
+ "13": {
"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": {
+ "14": {
"name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
},
- "35": {
+ "15": {
"name": "entity.name.type.parameter.cpp"
},
- "36": {
+ "16": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "37": {
+ "17": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "38": {
+ "18": {
"name": "comment.block.cpp"
},
- "39": {
+ "19": {
"patterns": [
{
"match": "\\*\\/",
@@ -8219,12 +10560,13 @@
"include": "#scope_resolution_parameter_inner_generated"
},
{
- "match": "(?:struct|class|union|enum)",
+ "match": "(?:(?:struct)|(?:class)|(?:union)|(?:enum))",
"name": "storage.type.$0.cpp"
},
{
"begin": "(?<==)",
"end": "(?:(?=\\))|(,))",
+ "beginCaptures": {},
"endCaptures": {
"1": {
"name": "punctuation.separator.delimiter.comma.cpp"
@@ -8237,10 +10579,11 @@
]
},
{
- "include": "#assignment_operator"
+ "match": "\\=",
+ "name": "keyword.operator.assignment.cpp"
},
{
- "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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}))*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\)|,|\\[|=|\\n)",
+ "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": [
@@ -8301,19 +10644,19 @@
"include": "#attributes_context"
},
{
- "name": "meta.bracket.square.array.cpp",
- "begin": "(\\[)",
+ "begin": "\\[",
+ "end": "\\]",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.begin.bracket.square.array.type.cpp"
}
},
- "end": "(\\])",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.end.bracket.square.array.type.cpp"
}
},
+ "name": "meta.bracket.square.array.cpp",
"patterns": [
{
"include": "#evaluation_context"
@@ -8328,7 +10671,7 @@
"include": "#template_call_range"
},
{
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*)",
+ "match": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*))",
"captures": {
"0": {
"patterns": [
@@ -8337,7 +10680,7 @@
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -8428,7 +10771,7 @@
]
},
"parameter_class": {
- "match": "(class)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:\\[((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\]((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?=,|\\)|\\n)",
+ "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"
@@ -8441,59 +10784,77 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "entity.name.type.class.parameter.cpp"
},
- "7": {
+ "5": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "8": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "9": {
- "name": "comment.block.cpp"
- },
- "10": {
+ "6": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "11": {
+ "7": {
"patterns": [
{
"match": "\\*",
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -8529,6 +10890,74 @@
}
]
},
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
"12": {
"patterns": [
{
@@ -8537,155 +10966,141 @@
]
},
"13": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"14": {
- "name": "comment.block.cpp"
+ "name": "variable.other.object.declare.cpp"
},
"15": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"16": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"17": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"18": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"19": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
}
},
"parameter_enum": {
- "match": "(enum)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:\\[((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\]((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?=,|\\)|\\n)",
+ "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"
@@ -8698,59 +11113,77 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "entity.name.type.enum.parameter.cpp"
},
- "7": {
+ "5": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "8": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "9": {
- "name": "comment.block.cpp"
- },
- "10": {
+ "6": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "11": {
+ "7": {
"patterns": [
{
"match": "\\*",
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -8786,6 +11219,74 @@
}
]
},
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
"12": {
"patterns": [
{
@@ -8794,156 +11295,142 @@
]
},
"13": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"14": {
- "name": "comment.block.cpp"
+ "name": "variable.other.object.declare.cpp"
},
"15": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"16": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"17": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"18": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"19": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
}
},
"parameter_or_maybe_value": {
- "name": "meta.parameter.cpp",
- "begin": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\w)",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\w)",
+ "end": "(?:(?=\\))|(,))",
"beginCaptures": {
"1": {
"patterns": [
@@ -8971,12 +11458,12 @@
]
}
},
- "end": "(?:(?=\\))|(,))",
"endCaptures": {
"1": {
"name": "punctuation.separator.delimiter.comma.cpp"
}
},
+ "name": "meta.parameter.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -9000,7 +11487,7 @@
"include": "#vararg_ellipses"
},
{
- "match": "((?:((?:volatile|register|restrict|static|extern|const))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))+)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=,|\\)|=)",
+ "match": "((?:((?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))+)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\s)*+(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=,|\\)|=)",
"captures": {
"1": {
"patterns": [
@@ -9063,159 +11550,34 @@
]
},
"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": {
+ "12": {
"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": {
+ "13": {
"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": {
+ "14": {
"name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
},
- "35": {
+ "15": {
"name": "entity.name.type.parameter.cpp"
},
- "36": {
+ "16": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "37": {
+ "17": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "38": {
+ "18": {
"name": "comment.block.cpp"
},
- "39": {
+ "19": {
"patterns": [
{
"match": "\\*\\/",
@@ -9239,12 +11601,13 @@
"include": "#scope_resolution_parameter_inner_generated"
},
{
- "match": "(?:struct|class|union|enum)",
+ "match": "(?:(?:struct)|(?:class)|(?:union)|(?:enum))",
"name": "storage.type.$0.cpp"
},
{
"begin": "(?<==)",
"end": "(?:(?=\\))|(,))",
+ "beginCaptures": {},
"endCaptures": {
"1": {
"name": "punctuation.separator.delimiter.comma.cpp"
@@ -9257,7 +11620,7 @@
]
},
{
- "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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}))*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=(?:\\)|,|\\[|=|\\/\\/|(?:\\n|$)))",
+ "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": [
@@ -9318,19 +11681,19 @@
"include": "#attributes_context"
},
{
- "name": "meta.bracket.square.array.cpp",
- "begin": "(\\[)",
+ "begin": "\\[",
+ "end": "\\]",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.begin.bracket.square.array.type.cpp"
}
},
- "end": "(\\])",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.end.bracket.square.array.type.cpp"
}
},
+ "name": "meta.bracket.square.array.cpp",
"patterns": [
{
"include": "#evaluation_context"
@@ -9345,7 +11708,7 @@
"include": "#template_call_range"
},
{
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*)",
+ "match": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*))",
"captures": {
"0": {
"patterns": [
@@ -9354,7 +11717,7 @@
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -9448,7 +11811,7 @@
]
},
"parameter_struct": {
- "match": "(struct)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:\\[((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\]((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?=,|\\)|\\n)",
+ "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"
@@ -9461,59 +11824,77 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "entity.name.type.struct.parameter.cpp"
},
- "7": {
+ "5": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "8": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "9": {
- "name": "comment.block.cpp"
- },
- "10": {
+ "6": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "11": {
+ "7": {
"patterns": [
{
"match": "\\*",
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -9549,6 +11930,74 @@
}
]
},
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
"12": {
"patterns": [
{
@@ -9557,155 +12006,141 @@
]
},
"13": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"14": {
- "name": "comment.block.cpp"
+ "name": "variable.other.object.declare.cpp"
},
"15": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"16": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"17": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"18": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"19": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
}
},
"parameter_union": {
- "match": "(union)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:\\[((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\]((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?=,|\\)|\\n)",
+ "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"
@@ -9718,59 +12153,77 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "entity.name.type.union.parameter.cpp"
},
- "7": {
+ "5": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "8": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "9": {
- "name": "comment.block.cpp"
- },
- "10": {
+ "6": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "11": {
+ "7": {
"patterns": [
{
"match": "\\*",
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -9806,6 +12259,74 @@
}
]
},
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
"12": {
"patterns": [
{
@@ -9814,167 +12335,153 @@
]
},
"13": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"14": {
- "name": "comment.block.cpp"
+ "name": "variable.other.object.declare.cpp"
},
"15": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"16": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"17": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"18": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"19": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
}
},
"parentheses": {
- "name": "meta.parens.cpp",
- "begin": "(\\()",
+ "begin": "\\(",
+ "end": "\\)",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parens.begin.bracket.round.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parens.end.bracket.round.cpp"
}
},
+ "name": "meta.parens.cpp",
"patterns": [
{
"include": "#over_qualified_types"
@@ -9988,60 +12495,27 @@
}
]
},
- "posix_reserved_types": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*pragma\\b)",
+ "begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?pragma\\b",
+ "end": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*pragma\\s+mark)\\s+(.*)",
+ "match": "(^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?pragma(?:\\s)+mark)(?:\\s)+(.*)",
"captures": {
"1": {
"name": "keyword.control.directive.pragma.pragma-mark.cpp"
@@ -10091,27 +12566,36 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "punctuation.definition.directive.cpp"
},
- "7": {
+ "5": {
"name": "entity.name.tag.pragma-mark.cpp"
}
},
@@ -10145,10 +12629,10 @@
"include": "#language_constants"
},
{
- "include": "#string_context_c"
+ "include": "#string_context"
},
{
- "include": "#preprocessor_number_literal"
+ "include": "#d9bc4796b0b_preprocessor_number_literal"
},
{
"include": "#operators"
@@ -10166,6 +12650,7 @@
},
"preprocessor_conditional_defined": {
"begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*((?:(?:ifndef|ifdef)|if)))",
+ "begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?:(?:ifndef|ifdef)|if))",
+ "end": "^(?!\\s*+#\\s*(?:else|endif))",
"beginCaptures": {
- "1": {
- "name": "keyword.control.directive.conditional.$7.cpp"
+ "0": {
+ "name": "keyword.control.directive.conditional.$6.cpp"
},
- "2": {
+ "1": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "3": {
+ "2": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "4": {
+ "3": {
"name": "comment.block.cpp"
},
- "5": {
+ "4": {
"patterns": [
{
"match": "\\*\\/",
@@ -10232,16 +12717,19 @@
}
]
},
- "6": {
+ "5": {
"name": "punctuation.definition.directive.cpp"
- }
+ },
+ "6": {}
},
- "end": "(?:^)(?!\\s*+#\\s*(?:else|endif))",
+ "endCaptures": {},
"patterns": [
{
- "name": "meta.preprocessor.conditional.cpp",
"begin": "\\G(?<=ifndef|ifdef|if)",
"end": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
+ "3": {
"name": "punctuation.definition.directive.cpp"
}
},
- "name": "keyword.control.directive.$6.cpp"
+ "name": "keyword.control.directive.$4.cpp"
},
- "preprocessor_number_literal": {
- "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.])",
+ "match": "\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<11>?)+>)?(?![\\w<:.])",
"captures": {
"0": {
- "name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -10664,120 +12896,127 @@
]
},
"3": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"4": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"5": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"6": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
- }
+ },
+ "name": "meta.qualified_type.cpp"
},
"qualifiers_and_specifiers_post_parameters": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"3": {
- "name": "comment.block.cpp"
+ "name": "storage.modifier.specifier.functional.post-parameters.$3.cpp"
},
"4": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"5": {
- "name": "storage.modifier.specifier.functional.post-parameters.$5.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
}
}
},
"scope_resolution": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*+",
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
"captures": {
"0": {
"patterns": [
@@ -10822,8 +13104,7 @@
"1": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
},
- "3": {
- "name": "meta.template.call.cpp",
+ "2": {
"patterns": [
{
"include": "#template_call_range"
@@ -10833,7 +13114,7 @@
}
},
"scope_resolution_function_call": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*+",
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
"captures": {
"0": {
"patterns": [
@@ -10845,8 +13126,7 @@
"1": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
},
- "3": {
- "name": "meta.template.call.cpp",
+ "2": {
"patterns": [
{
"include": "#template_call_range"
@@ -10856,7 +13136,7 @@
}
},
"scope_resolution_function_call_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::)",
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
"captures": {
"1": {
"patterns": [
@@ -10868,18 +13148,18 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.scope-resolution.function.call.cpp"
},
- "7": {
+ "6": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -10887,13 +13167,14 @@
}
]
},
- "9": {
+ "7": {},
+ "8": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
}
}
},
"scope_resolution_function_definition": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*+",
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
"captures": {
"0": {
"patterns": [
@@ -10905,8 +13186,7 @@
"1": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
},
- "3": {
- "name": "meta.template.call.cpp",
+ "2": {
"patterns": [
{
"include": "#template_call_range"
@@ -10916,7 +13196,7 @@
}
},
"scope_resolution_function_definition_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::)",
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
"captures": {
"1": {
"patterns": [
@@ -10928,18 +13208,18 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.scope-resolution.function.definition.cpp"
},
- "7": {
+ "6": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -10947,13 +13227,14 @@
}
]
},
- "9": {
+ "7": {},
+ "8": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
}
}
},
"scope_resolution_function_definition_operator_overload": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*+",
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
"captures": {
"0": {
"patterns": [
@@ -10965,8 +13246,7 @@
"1": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
},
- "3": {
- "name": "meta.template.call.cpp",
+ "2": {
"patterns": [
{
"include": "#template_call_range"
@@ -10976,7 +13256,7 @@
}
},
"scope_resolution_function_definition_operator_overload_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::)",
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
"captures": {
"1": {
"patterns": [
@@ -10988,18 +13268,18 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.scope-resolution.function.definition.operator-overload.cpp"
},
- "7": {
+ "6": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -11007,13 +13287,14 @@
}
]
},
- "9": {
+ "7": {},
+ "8": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
}
}
},
"scope_resolution_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::)",
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
"captures": {
"1": {
"patterns": [
@@ -11025,18 +13306,18 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.scope-resolution.cpp"
},
- "7": {
+ "6": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -11044,13 +13325,14 @@
}
]
},
- "9": {
+ "7": {},
+ "8": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
}
}
},
"scope_resolution_namespace_alias": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*+",
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
"captures": {
"0": {
"patterns": [
@@ -11062,8 +13344,7 @@
"1": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
},
- "3": {
- "name": "meta.template.call.cpp",
+ "2": {
"patterns": [
{
"include": "#template_call_range"
@@ -11073,7 +13354,7 @@
}
},
"scope_resolution_namespace_alias_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::)",
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
"captures": {
"1": {
"patterns": [
@@ -11085,18 +13366,18 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.scope-resolution.namespace.alias.cpp"
},
- "7": {
+ "6": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -11104,13 +13385,14 @@
}
]
},
- "9": {
+ "7": {},
+ "8": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
}
}
},
"scope_resolution_namespace_block": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*+",
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
"captures": {
"0": {
"patterns": [
@@ -11122,8 +13404,7 @@
"1": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
},
- "3": {
- "name": "meta.template.call.cpp",
+ "2": {
"patterns": [
{
"include": "#template_call_range"
@@ -11133,7 +13414,7 @@
}
},
"scope_resolution_namespace_block_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::)",
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
"captures": {
"1": {
"patterns": [
@@ -11145,18 +13426,18 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.scope-resolution.namespace.block.cpp"
},
- "7": {
+ "6": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -11164,13 +13445,14 @@
}
]
},
- "9": {
+ "7": {},
+ "8": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
}
}
},
"scope_resolution_namespace_using": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*+",
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
"captures": {
"0": {
"patterns": [
@@ -11182,8 +13464,7 @@
"1": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
},
- "3": {
- "name": "meta.template.call.cpp",
+ "2": {
"patterns": [
{
"include": "#template_call_range"
@@ -11193,7 +13474,7 @@
}
},
"scope_resolution_namespace_using_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::)",
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
"captures": {
"1": {
"patterns": [
@@ -11205,18 +13486,18 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.scope-resolution.namespace.using.cpp"
},
- "7": {
+ "6": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -11224,13 +13505,14 @@
}
]
},
- "9": {
+ "7": {},
+ "8": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
}
}
},
"scope_resolution_parameter": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*+",
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
"captures": {
"0": {
"patterns": [
@@ -11242,8 +13524,7 @@
"1": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
},
- "3": {
- "name": "meta.template.call.cpp",
+ "2": {
"patterns": [
{
"include": "#template_call_range"
@@ -11253,7 +13534,7 @@
}
},
"scope_resolution_parameter_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::)",
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
"captures": {
"1": {
"patterns": [
@@ -11265,18 +13546,18 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.scope-resolution.parameter.cpp"
},
- "7": {
+ "6": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -11284,13 +13565,14 @@
}
]
},
- "9": {
+ "7": {},
+ "8": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
}
}
},
"scope_resolution_template_call": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*+",
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
"captures": {
"0": {
"patterns": [
@@ -11302,8 +13584,7 @@
"1": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
},
- "3": {
- "name": "meta.template.call.cpp",
+ "2": {
"patterns": [
{
"include": "#template_call_range"
@@ -11313,7 +13594,7 @@
}
},
"scope_resolution_template_call_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::)",
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
"captures": {
"1": {
"patterns": [
@@ -11325,18 +13606,18 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.scope-resolution.template.call.cpp"
},
- "7": {
+ "6": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -11344,13 +13625,14 @@
}
]
},
- "9": {
+ "7": {},
+ "8": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
}
}
},
"scope_resolution_template_definition": {
- "match": "(::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*+",
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
"captures": {
"0": {
"patterns": [
@@ -11362,8 +13644,7 @@
"1": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
},
- "3": {
- "name": "meta.template.call.cpp",
+ "2": {
"patterns": [
{
"include": "#template_call_range"
@@ -11373,7 +13654,7 @@
}
},
"scope_resolution_template_definition_inner_generated": {
- "match": "((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::)",
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
"captures": {
"1": {
"patterns": [
@@ -11385,18 +13666,18 @@
"2": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
},
- "4": {
- "name": "meta.template.call.cpp",
+ "3": {
"patterns": [
{
"include": "#template_call_range"
}
]
},
- "6": {
+ "4": {},
+ "5": {
"name": "entity.name.scope-resolution.template.definition.cpp"
},
- "7": {
+ "6": {
"name": "meta.template.call.cpp",
"patterns": [
{
@@ -11404,7 +13685,8 @@
}
]
},
- "9": {
+ "7": {},
+ "8": {
"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
}
}
@@ -11414,21 +13696,22 @@
"name": "punctuation.terminator.statement.cpp"
},
"simple_type": {
- "match": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?",
+ "match": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<12>?)+>)?(?![\\w<:.]))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?",
"captures": {
"1": {
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -11471,124 +13771,132 @@
]
},
"4": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"5": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"6": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"7": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "25": {
- "name": "entity.name.type.cpp"
- },
- "26": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- },
- "28": {
+ "12": {},
+ "13": {
"patterns": [
{
"match": "\\*",
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -11624,60 +13932,78 @@
}
]
},
- "29": {
+ "14": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "30": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "31": {
- "name": "comment.block.cpp"
- },
- "32": {
+ "15": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "33": {
+ "16": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "34": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "35": {
- "name": "comment.block.cpp"
- },
- "36": {
+ "17": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
}
},
"single_line_macro": {
- "match": "^((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))#define.*(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))#define.*(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
}
},
"sizeof_operator": {
- "contentName": "meta.arguments.operator.sizeof.cpp",
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp"
@@ -11752,12 +14087,12 @@
"name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp"
}
},
+ "contentName": "meta.arguments.operator.sizeof",
"patterns": [
{
"include": "#evaluation_context"
@@ -11765,8 +14100,8 @@
]
},
"sizeof_variadic_operator": {
- "contentName": "meta.arguments.operator.sizeof.variadic.cpp",
- "begin": "(\\bsizeof\\.\\.\\.)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "(\\bsizeof\\.\\.\\.)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp"
@@ -11800,12 +14135,12 @@
"name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp"
}
},
+ "contentName": "meta.arguments.operator.sizeof.variadic",
"patterns": [
{
"include": "#evaluation_context"
@@ -11813,20 +14148,20 @@
]
},
"square_brackets": {
- "name": "meta.bracket.square.access.cpp",
+ "name": "meta.bracket.square.access",
"begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",
"beginCaptures": {
"1": {
- "name": "variable.other.object.cpp"
+ "name": "variable.other.object"
},
"2": {
- "name": "punctuation.definition.begin.bracket.square.cpp"
+ "name": "punctuation.definition.begin.bracket.square"
}
},
"end": "\\]",
"endCaptures": {
"0": {
- "name": "punctuation.definition.end.bracket.square.cpp"
+ "name": "punctuation.definition.end.bracket.square"
}
},
"patterns": [
@@ -11838,21 +14173,918 @@
"standard_declares": {
"patterns": [
{
- "include": "#struct_declare"
+ "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)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.struct.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.struct.cpp"
+ },
+ "5": {
+ "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"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
},
{
- "include": "#union_declare"
+ "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)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.union.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.union.cpp"
+ },
+ "5": {
+ "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"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
},
{
- "include": "#enum_declare"
+ "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)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.enum.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.enum.cpp"
+ },
+ "5": {
+ "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"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
},
{
- "include": "#class_declare"
+ "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)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.class.cpp"
+ },
+ "5": {
+ "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"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
}
]
},
"static_assert": {
- "begin": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"patterns": [
@@ -11911,22 +15143,22 @@
"name": "punctuation.section.arguments.begin.bracket.round.static_assert.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.static_assert.cpp"
}
},
"patterns": [
{
- "name": "meta.static_assert.message.cpp",
- "begin": "(,)\\s*(?=(?:L|u8|u|U\\s*\\\")?)",
+ "begin": "(,)(?:(?:\\s)+)?(?=(?:L|u8|u|U(?:(?:\\s)+)?\\\")?)",
+ "end": "(?=\\))",
"beginCaptures": {
"1": {
"name": "punctuation.separator.delimiter.comma.cpp"
}
},
- "end": "(?=\\))",
+ "endCaptures": {},
+ "name": "meta.static_assert.message.cpp",
"patterns": [
{
"include": "#string_context"
@@ -11938,8 +15170,47 @@
}
]
},
+ "std_space": {
+ "match": "(?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "1": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
"storage_specifiers": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
- "name": "storage.modifier.specifier.$5.cpp"
+ "3": {
+ "name": "storage.modifier.specifier.$3.cpp"
}
}
},
@@ -11977,16 +15257,7 @@
"include": "#storage_specifiers"
},
{
- "include": "#primitive_types"
- },
- {
- "include": "#non_primitive_types"
- },
- {
- "include": "#pthread_types"
- },
- {
- "include": "#posix_reserved_types"
+ "include": "#inline_builtin_storage_type"
},
{
"include": "#decltype"
@@ -11999,22 +15270,22 @@
"string_context": {
"patterns": [
{
- "name": "string.quoted.double.cpp",
- "begin": "(((?:u|u8|U|L)?)\")",
+ "begin": "((?:u|u8|U|L)?)\"",
+ "end": "\"",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.string.begin.cpp"
},
- "2": {
+ "1": {
"name": "meta.encoding.cpp"
}
},
- "end": "(\")",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.definition.string.end.cpp"
}
},
+ "name": "string.quoted.double.cpp",
"patterns": [
{
"match": "(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8})",
@@ -12029,8 +15300,15 @@
"name": "constant.character.escape.cpp"
},
{
- "match": "\\\\x[0-9a-fA-F]{2,2}",
- "name": "constant.character.escape.cpp"
+ "match": "(?:(\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\x[0-9a-fA-F]*|\\\\x)))",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.cpp"
+ },
+ "2": {
+ "name": "invalid.illegal.unknown-escape.cpp"
+ }
+ }
},
{
"include": "#string_escapes_context_c"
@@ -12038,23 +15316,34 @@
]
},
{
- "name": "string.quoted.single.cpp",
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.struct.cpp"
},
- "3": {
- "name": "storage.type.$3.cpp"
+ "1": {
+ "name": "storage.type.$1.cpp"
},
- "4": {
+ "2": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "5": {
+ "3": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "6": {
+ "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": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
"7": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"8": {
- "patterns": [
- {
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
- }
- ]
- },
- "9": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "10": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "11": {
+ "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": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.struct.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.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -12252,134 +15664,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
"endCaptures": {
"1": {
"name": "punctuation.terminator.statement.cpp"
@@ -12388,16 +15701,18 @@
"name": "punctuation.terminator.statement.cpp"
}
},
+ "name": "meta.block.struct.cpp",
"patterns": [
{
- "name": "meta.head.struct.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
}
},
+ "name": "meta.head.struct.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -12411,14 +15726,15 @@
]
},
{
- "name": "meta.body.struct.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.struct.cpp"
}
},
+ "name": "meta.body.struct.cpp",
"patterns": [
{
"include": "#function_pointer"
@@ -12438,9 +15754,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.struct.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -12450,7 +15768,7 @@
]
},
"struct_declare": {
- "match": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\S)(?![:{])",
+ "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)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
"captures": {
"1": {
"name": "storage.type.struct.declare.cpp"
@@ -12463,34 +15781,43 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "entity.name.type.struct.cpp"
},
- "7": {
+ "5": {
"patterns": [
{
"match": "\\*",
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -12526,6 +15853,40 @@
}
]
},
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
"8": {
"patterns": [
{
@@ -12534,106 +15895,108 @@
]
},
"9": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"10": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"11": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"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": {
+ "13": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "22": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "23": {
- "name": "comment.block.cpp"
- },
- "24": {
+ "14": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
}
},
"switch_conditional_parentheses": {
- "name": "meta.conditional.switch.cpp",
- "begin": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"patterns": [
@@ -12664,12 +16027,12 @@
"name": "punctuation.section.parens.begin.bracket.round.conditional.switch.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.parens.end.bracket.round.conditional.switch.cpp"
}
},
+ "name": "meta.conditional.switch.cpp",
"patterns": [
{
"include": "#evaluation_context"
@@ -12680,26 +16043,26 @@
]
},
"switch_statement": {
- "name": "meta.block.switch.cpp",
- "begin": "(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?|\\?\\?>)|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.switch.cpp"
},
- "2": {
+ "1": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "3": {
+ "2": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "4": {
+ "3": {
"name": "comment.block.cpp"
},
- "5": {
+ "4": {
"patterns": [
{
"match": "\\*\\/",
@@ -12711,21 +16074,23 @@
}
]
},
- "6": {
+ "5": {
"name": "keyword.control.switch.cpp"
}
},
- "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "endCaptures": {},
+ "name": "meta.block.switch.cpp",
"patterns": [
{
- "name": "meta.head.switch.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.switch.cpp"
}
},
+ "name": "meta.head.switch.cpp",
"patterns": [
{
"include": "#switch_conditional_parentheses"
@@ -12736,14 +16101,15 @@
]
},
{
- "name": "meta.body.switch.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.switch.cpp"
}
},
+ "name": "meta.body.switch.cpp",
"patterns": [
{
"include": "#default_statement"
@@ -12760,9 +16126,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.switch.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -12772,7 +16140,7 @@
]
},
"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*([=])",
+ "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"
@@ -12820,32 +16188,32 @@
]
},
"template_call_innards": {
- "match": "((?(?:(?>[^<>]*)\\g<1>?)+)>)\\s*",
+ "match": "((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<1>?)+>)(?:\\s)*+",
"captures": {
"0": {
- "name": "meta.template.call.cpp",
"patterns": [
{
"include": "#template_call_range"
}
]
}
- }
+ },
+ "name": "meta.template.call.cpp"
},
"template_call_range": {
- "name": "meta.template.call.cpp",
- "begin": "(<)",
+ "begin": "<",
+ "end": ">",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
}
},
- "end": "(>)",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.angle-brackets.end.template.call.cpp"
}
},
+ "name": "meta.template.call.cpp",
"patterns": [
{
"include": "#template_call_context"
@@ -12853,8 +16221,8 @@
]
},
"template_definition": {
- "name": "meta.template.definition.cpp",
- "begin": "(?",
"beginCaptures": {
"1": {
"name": "storage.type.template.cpp"
@@ -12863,23 +16231,23 @@
"name": "punctuation.section.angle-brackets.start.template.definition.cpp"
}
},
- "end": "(>)",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.angle-brackets.end.template.definition.cpp"
}
},
+ "name": "meta.template.definition.cpp",
"patterns": [
{
- "begin": "((?<=\\w)\\s*<)",
+ "begin": "(?<=\\w)(?:(?:\\s)+)?<",
+ "end": ">",
"beginCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
}
},
- "end": "(>)",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
}
},
@@ -12895,7 +16263,7 @@
]
},
"template_definition_argument": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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*(?:(,)|(?=>|$))",
+ "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": [
@@ -12905,27 +16273,36 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
- "name": "storage.type.template.argument.$5.cpp"
+ "3": {
+ "name": "storage.type.template.argument.$3.cpp"
},
- "6": {
+ "4": {
"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}))*",
@@ -12933,19 +16310,19 @@
}
]
},
- "7": {
+ "5": {
"name": "entity.name.type.template.cpp"
},
- "8": {
+ "6": {
"name": "storage.type.template.cpp"
},
- "9": {
+ "7": {
"name": "punctuation.vararg-ellipses.template.definition.cpp"
},
- "10": {
+ "8": {
"name": "entity.name.type.template.cpp"
},
- "11": {
+ "9": {
"name": "punctuation.separator.delimiter.comma.template.argument.cpp"
}
}
@@ -12970,7 +16347,7 @@
]
},
"template_isolated_definition": {
- "match": "(?\\s*$)",
+ "match": "(?(?:(?:\\s)+)?$)",
"captures": {
"1": {
"name": "storage.type.template.cpp"
@@ -12992,16 +16369,15 @@
}
},
"ternary_operator": {
- "applyEndPatternLast": true,
- "begin": "(\\?)",
+ "begin": "\\?",
+ "end": ":",
"beginCaptures": {
- "1": {
+ "0": {
"name": "keyword.operator.ternary.cpp"
}
},
- "end": "(:)",
"endCaptures": {
- "1": {
+ "0": {
"name": "keyword.operator.ternary.cpp"
}
},
@@ -13060,9 +16436,6 @@
{
"include": "#storage_types"
},
- {
- "include": "#misc_storage_modifiers"
- },
{
"include": "#lambdas"
},
@@ -13081,19 +16454,17 @@
{
"include": "#square_brackets"
},
- {
- "include": "#empty_square_brackets"
- },
{
"include": "#semicolon"
},
{
"include": "#comma"
}
- ]
+ ],
+ "applyEndPatternLast": 1
},
"the_this_keyword": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
+ "3": {
"name": "variable.language.this.cpp"
}
}
},
"type_alias": {
- "match": "(using)\\s*(?!namespace)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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*((?:(?:(?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)(?:(?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))|(.*(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:(\\[)(\\w*)(\\])\\s*)?\\s*(?:(;)|\\n)",
+ "match": "(using)(?:(?:\\s)+)?(?!namespace)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<29>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<29>?)+>)?(?![\\w<:.]))(?:(?:\\s)+)?(\\=)(?:(?:\\s)+)?((?:typename)?)(?:(?:\\s)+)?((?:(?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<29>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<29>?)+>)?(?![\\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"
@@ -13135,15 +16515,16 @@
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -13186,79 +16584,260 @@
]
},
"5": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "6": {
- "name": "comment.block.cpp"
- },
- "7": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "8": {
+ "6": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "9": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "7": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
- "10": {
- "name": "comment.block.cpp"
+ "8": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"14": {
- "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "15": {
+ "name": "keyword.other.typename.cpp"
},
"16": {
- "name": "meta.template.call.cpp",
"patterns": [
{
- "include": "#template_call_range"
+ "include": "#storage_specifiers"
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"18": {
- "name": "entity.name.scope-resolution.cpp"
- },
- "19": {
- "name": "meta.template.call.cpp",
+ "name": "meta.qualified_type.cpp",
"patterns": [
{
- "include": "#template_call_range"
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
}
]
},
"21": {
- "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"22": {
"patterns": [
@@ -13268,213 +16847,89 @@
]
},
"23": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"24": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"30": {
- "name": "keyword.other.typename.cpp"
- },
- "31": {
- "patterns": [
- {
- "include": "#storage_specifiers"
- }
- ]
- },
- "32": {
- "name": "meta.qualified_type.cpp",
- "patterns": [
- {
- "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -13525,102 +16980,129 @@
}
]
},
- "61": {
+ "32": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "62": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "63": {
- "name": "comment.block.cpp"
- },
- "64": {
+ "33": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "65": {
+ "34": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "66": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "67": {
- "name": "comment.block.cpp"
- },
- "68": {
+ "35": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "69": {
+ "36": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "70": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "71": {
- "name": "comment.block.cpp"
- },
- "72": {
+ "37": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "73": {
+ "38": {
"name": "punctuation.definition.begin.bracket.square.cpp"
},
- "74": {
+ "39": {
"patterns": [
{
"include": "#evaluation_context"
}
]
},
- "75": {
+ "40": {
"name": "punctuation.definition.end.bracket.square.cpp"
},
- "76": {
+ "41": {
"name": "punctuation.terminator.statement.cpp"
}
},
"name": "meta.declaration.type.alias.cpp"
},
"type_casting_operators": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "5": {
- "name": "keyword.operator.wordlike.cpp keyword.operator.cast.$5.cpp"
+ "3": {
+ "name": "keyword.operator.wordlike.cpp keyword.operator.cast.$3.cpp"
}
}
},
"typedef_class": {
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.class.cpp"
},
- "3": {
- "name": "storage.type.$3.cpp"
+ "1": {
+ "name": "storage.type.$1.cpp"
},
- "4": {
+ "2": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "5": {
+ "3": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "6": {
+ "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": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
"7": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"8": {
- "patterns": [
- {
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
- }
- ]
- },
- "9": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "10": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "11": {
+ "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": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.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.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -13759,134 +17354,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
"endCaptures": {
"1": {
"name": "punctuation.terminator.statement.cpp"
@@ -13895,16 +17391,18 @@
"name": "punctuation.terminator.statement.cpp"
}
},
+ "name": "meta.block.class.cpp",
"patterns": [
{
- "name": "meta.head.class.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.class.cpp"
}
},
+ "name": "meta.head.class.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -13918,14 +17416,15 @@
]
},
{
- "name": "meta.body.class.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.class.cpp"
}
},
+ "name": "meta.body.class.cpp",
"patterns": [
{
"include": "#function_pointer"
@@ -13945,12 +17444,14 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.class.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
- "match": "(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -14085,30 +17586,33 @@
]
},
"typedef_function_pointer": {
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\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*(\\()",
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<18>?)+>)?(?![\\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)+)?(\\()",
+ "end": "(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()",
"beginCaptures": {
"1": {
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -14193,52 +17714,43 @@
}
]
},
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -14304,111 +17806,110 @@
}
]
},
- "29": {
+ "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": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
+ }
+ ]
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
"30": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "name": "comment.block.cpp"
},
"31": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "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": {
+ "33": {
"name": "punctuation.definition.function.pointer.dereference.cpp"
},
- "43": {
+ "34": {
"name": "entity.name.type.alias.cpp entity.name.type.pointer.function.cpp"
},
- "44": {
+ "35": {
"name": "punctuation.definition.begin.bracket.square.cpp"
},
- "45": {
+ "36": {
"patterns": [
{
"include": "#evaluation_context"
}
]
},
- "46": {
+ "37": {
"name": "punctuation.definition.end.bracket.square.cpp"
},
- "47": {
+ "38": {
"name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
},
- "48": {
+ "39": {
"name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
}
},
- "end": "(\\))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=[{=,);]|\\n)(?!\\()",
"endCaptures": {
"1": {
"name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
@@ -14447,135 +17948,206 @@
}
]
},
- "typedef_keyword": {
- "match": "((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.struct.cpp"
},
- "3": {
- "name": "storage.type.$3.cpp"
+ "1": {
+ "name": "storage.type.$1.cpp"
},
- "4": {
+ "2": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "5": {
+ "3": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "6": {
+ "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": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
"7": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"8": {
- "patterns": [
- {
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
- }
- ]
- },
- "9": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "10": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "11": {
+ "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": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.struct.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.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -14587,134 +18159,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
"endCaptures": {
"1": {
"name": "punctuation.terminator.statement.cpp"
@@ -14723,16 +18196,18 @@
"name": "punctuation.terminator.statement.cpp"
}
},
+ "name": "meta.block.struct.cpp",
"patterns": [
{
- "name": "meta.head.struct.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
}
},
+ "name": "meta.head.struct.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -14746,14 +18221,15 @@
]
},
{
- "name": "meta.body.struct.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.struct.cpp"
}
},
+ "name": "meta.body.struct.cpp",
"patterns": [
{
"include": "#function_pointer"
@@ -14773,12 +18249,14 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.struct.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
- "match": "(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -14913,101 +18391,205 @@
]
},
"typedef_union": {
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.union.cpp"
},
- "3": {
- "name": "storage.type.$3.cpp"
+ "1": {
+ "name": "storage.type.$1.cpp"
},
- "4": {
+ "2": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "5": {
+ "3": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "6": {
+ "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": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
"7": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"8": {
- "patterns": [
- {
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
- }
- ]
- },
- "9": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "10": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "11": {
+ "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": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.union.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.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -15019,134 +18601,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
"endCaptures": {
"1": {
"name": "punctuation.terminator.statement.cpp"
@@ -15155,16 +18638,18 @@
"name": "punctuation.terminator.statement.cpp"
}
},
+ "name": "meta.block.union.cpp",
"patterns": [
{
- "name": "meta.head.union.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.union.cpp"
}
},
+ "name": "meta.head.union.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -15178,14 +18663,15 @@
]
},
{
- "name": "meta.body.union.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.union.cpp"
}
},
+ "name": "meta.body.union.cpp",
"patterns": [
{
"include": "#function_pointer"
@@ -15205,12 +18691,14 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.union.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
- "match": "(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -15345,8 +18833,8 @@
]
},
"typeid_operator": {
- "contentName": "meta.arguments.operator.typeid.cpp",
- "begin": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
+ "end": "\\)",
"beginCaptures": {
"1": {
"name": "keyword.operator.functionlike.cpp keyword.operator.typeid.cpp"
@@ -15380,12 +18868,12 @@
"name": "punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp"
}
},
- "end": "(\\))",
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.arguments.end.bracket.round.operator.typeid.cpp"
}
},
+ "contentName": "meta.arguments.operator.typeid",
"patterns": [
{
"include": "#evaluation_context"
@@ -15393,7 +18881,7 @@
]
},
"typename": {
- "match": "(((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?:(?:(?:unsigned|signed|short|long)|(?:struct|class|union|enum))((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(((::)?(?:((?-mix:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_cancel|atomic_commit|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|consteval|constexpr|protected|namespace|co_return|constexpr|constexpr|continue|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|co_await|template|volatile|register|restrict|reflexpr|alignof|private|default|mutable|include|concept|__asm__|defined|_Pragma|alignas|typedef|warning|virtual|mutable|struct|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|static|extern|inline|friend|public|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|while|compl|bitor|const|union|ifdef|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|asm|try|for|new|and|xor|not|do|or|if|if)\\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*)?(::))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?!(?:transaction_safe_dynamic|__has_cpp_attribute|transaction_safe|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|dynamic_cast|thread_local|synchronized|static_cast|const_cast|constexpr|consteval|protected|constexpr|co_return|namespace|constexpr|noexcept|typename|decltype|template|operator|noexcept|co_yield|co_await|continue|volatile|register|restrict|explicit|override|volatile|reflexpr|noexcept|requires|default|typedef|nullptr|alignof|mutable|concept|virtual|defined|__asm__|include|_Pragma|mutable|warning|private|alignas|module|switch|not_eq|bitand|and_eq|ifndef|return|sizeof|xor_eq|export|static|delete|public|define|extern|inline|import|pragma|friend|typeid|const|compl|bitor|throw|or_eq|while|catch|break|false|final|const|endif|ifdef|undef|error|using|audit|axiom|line|else|elif|true|NULL|case|goto|else|this|new|asm|not|and|xor|try|for|if|do|or|if)\\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<:.]))",
+ "match": "(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<17>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\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<17>?)+>)?(?![\\w<:.]))",
"captures": {
"1": {
"name": "storage.modifier.cpp"
@@ -15406,61 +18894,80 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "7": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "8": {
- "name": "comment.block.cpp"
- },
- "9": {
+ "5": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "10": {
+ "6": {
"name": "meta.qualified_type.cpp",
"patterns": [
{
- "match": "(?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_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}))*",
@@ -15485,7 +19009,7 @@
}
]
},
- "11": {
+ "7": {
"patterns": [
{
"include": "#attributes_context"
@@ -15495,128 +19019,136 @@
}
]
},
- "12": {
+ "8": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
+ "9": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "match": "(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "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"
- }
- ]
- },
- "21": {
- "patterns": [
- {
- "include": "#scope_resolution_inner_generated"
- }
- ]
- },
- "22": {
- "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
- },
- "24": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- },
- "26": {
- "name": "entity.name.scope-resolution.cpp"
- },
- "27": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- },
- "29": {
- "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.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": "entity.name.type.cpp"
- },
- "35": {
- "name": "meta.template.call.cpp",
- "patterns": [
- {
- "include": "#template_call_range"
- }
- ]
- }
+ "17": {}
}
},
"undef": {
- "match": "((?:^)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(#)\\s*undef\\b)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?undef\\b)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "punctuation.definition.directive.cpp"
},
- "7": {
+ "5": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "8": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "9": {
- "name": "comment.block.cpp"
- },
- "10": {
+ "6": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "11": {
+ "7": {
"name": "entity.name.function.preprocessor.cpp"
}
},
"name": "meta.preprocessor.undef.cpp"
},
"union_block": {
- "name": "meta.block.union.cpp",
- "begin": "((((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(DLLEXPORT)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\(\\(.*?\\)\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?:(?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(final)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))?(?:((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(:)((?>[^{]*)))?))",
+ "begin": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
"beginCaptures": {
- "1": {
+ "0": {
"name": "meta.head.union.cpp"
},
- "3": {
- "name": "storage.type.$3.cpp"
+ "1": {
+ "name": "storage.type.$1.cpp"
},
- "4": {
+ "2": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "5": {
+ "3": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "6": {
+ "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": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
"7": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"8": {
- "patterns": [
- {
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
- }
- ]
- },
- "9": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "10": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "11": {
+ "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": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.union.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.final.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"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
"12": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "include": "#inline_comment"
}
]
},
"13": {
- "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
- },
- "14": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "15": {
"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
},
- "16": {
+ "14": {
"name": "comment.block.cpp"
},
- "17": {
+ "15": {
"patterns": [
{
"match": "\\*\\/",
@@ -15778,134 +19431,35 @@
}
]
},
- "18": {
+ "16": {
"patterns": [
{
- "include": "#attributes_context"
- },
- {
- "include": "#number_literal"
+ "include": "#inline_comment"
}
]
},
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
"19": {
"patterns": [
{
- "include": "#inline_comment"
+ "match": "\\*\\/",
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.cpp"
}
]
},
"20": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "21": {
- "name": "comment.block.cpp"
- },
- "22": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "23": {
- "name": "entity.name.type.$3.cpp"
- },
- "24": {
- "patterns": [
- {
- "include": "#inline_comment"
- }
- ]
- },
- "25": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "26": {
- "name": "comment.block.cpp"
- },
- "27": {
- "patterns": [
- {
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
- }
- ]
- },
- "28": {
- "name": "storage.type.modifier.final.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": {
"name": "punctuation.separator.colon.inheritance.cpp"
- },
- "38": {
- "patterns": [
- {
- "include": "#inheritance_context"
- }
- ]
}
},
- "end": "(?:(?:(?<=\\}|%>|\\?\\?>)\\s*(;)|(;))|(?=[;>\\[\\]=]))",
"endCaptures": {
"1": {
"name": "punctuation.terminator.statement.cpp"
@@ -15914,16 +19468,18 @@
"name": "punctuation.terminator.statement.cpp"
}
},
+ "name": "meta.block.union.cpp",
"patterns": [
{
- "name": "meta.head.union.cpp",
"begin": "\\G ?",
- "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.begin.bracket.curly.union.cpp"
}
},
+ "name": "meta.head.union.cpp",
"patterns": [
{
"include": "#ever_present_context"
@@ -15937,14 +19493,15 @@
]
},
{
- "name": "meta.body.union.cpp",
"begin": "(?<=\\{|<%|\\?\\?<)",
- "end": "(\\}|%>|\\?\\?>)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
"endCaptures": {
- "1": {
+ "0": {
"name": "punctuation.section.block.end.bracket.curly.union.cpp"
}
},
+ "name": "meta.body.union.cpp",
"patterns": [
{
"include": "#function_pointer"
@@ -15964,9 +19521,11 @@
]
},
{
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
"name": "meta.tail.union.cpp",
- "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
- "end": "[\\s\\n]*(?=;)",
"patterns": [
{
"include": "$self"
@@ -15976,7 +19535,7 @@
]
},
"union_declare": {
- "match": "((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))?(?:(?:\\&|\\*)((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))))*(?:\\&|\\*))?((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(?=\\S)(?![:{])",
+ "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)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
"captures": {
"1": {
"name": "storage.type.union.declare.cpp"
@@ -15989,34 +19548,43 @@
]
},
"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"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
- "6": {
+ "4": {
"name": "entity.name.type.union.cpp"
},
- "7": {
+ "5": {
"patterns": [
{
"match": "\\*",
"name": "storage.modifier.pointer.cpp"
},
{
- "match": "(?:\\&((?>(?:(?:(?>(?(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))){2,}\\&",
+ "match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
"captures": {
"1": {
"patterns": [
@@ -16052,6 +19620,40 @@
}
]
},
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
"8": {
"patterns": [
{
@@ -16060,105 +19662,107 @@
]
},
"9": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ "patterns": [
+ {
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
+ }
+ ]
},
"10": {
- "name": "comment.block.cpp"
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
},
"11": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
},
"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": {
+ "13": {
"patterns": [
{
"include": "#inline_comment"
}
]
},
- "22": {
- "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
- },
- "23": {
- "name": "comment.block.cpp"
- },
- "24": {
+ "14": {
"patterns": [
{
- "match": "\\*\\/",
- "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
- },
- {
- "match": "\\*",
- "name": "comment.block.cpp"
+ "match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
+ "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"
+ }
+ ]
+ }
+ }
}
]
}
}
},
"using_name": {
- "match": "(using)\\s+(?!namespace\\b)",
+ "match": "(using)(?:\\s)+(?!namespace\\b)",
"captures": {
"1": {
"name": "keyword.other.using.directive.cpp"
@@ -16166,8 +19770,8 @@
}
},
"using_namespace": {
- "name": "meta.using-namespace.cpp",
- "begin": "(?(?:(?>[^<>]*)\\g<7>?)+)>)\\s*)?::)*\\s*+)?((?]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<6>?)+>)(?:\\s)*+)?::)*\\s*+)?((?",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.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": "pugi",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp entity.name.scope-resolution.template.call.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.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": "xml_node",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.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": "std",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp entity.name.scope-resolution.template.call.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.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": "less",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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": "std",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp entity.name.scope-resolution.template.call.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.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": "basic_string",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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": "char",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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": ">",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.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": "std",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp entity.name.scope-resolution.template.call.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.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": "allocator",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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": "std",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp entity.name.scope-resolution.template.call.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.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": "pair",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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": "const",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp storage.modifier.specifier.const.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"
- }
- },
- {
- "c": " ",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.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": "std",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp entity.name.scope-resolution.template.call.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.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": "basic_string",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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": "char",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.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": "pugi",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp entity.name.scope-resolution.template.call.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.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": "xml_node",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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": ">",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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": ">",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.cpp meta.template.call.cpp meta.qualified_type.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.template.call.cpp meta.template.call.cpp meta.qualified_type.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": ">",
- "t": "source.cpp meta.template.call.cpp meta.template.call.cpp meta.qualified_type.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.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": ">",
- "t": "source.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 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": "type dnode",
+ "c": "std::tuple_element<0, std::pair, pugi::xml_node, std::less >, std::allocator, pugi::xml_node> > > > >::type dnode",
"t": "source.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
@@ -869,29 +11,7 @@
}
},
{
- "c": "std",
- "t": "source.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 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": "_Rb_tree_iterator",
+ "c": "std::_Rb_tree_iterator, pugi::xml_node, std::less >, std::allocator, pugi::xml_node> > > > > > dnode_it = dnodes_.find(uid.position)",
"t": "source.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
@@ -900,1028 +20,5 @@
"light_vs": "default: #000000",
"hc_black": "default: #FFFFFF"
}
- },
- {
- "c": "<",
- "t": "source.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": "std",
- "t": "source.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 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": "pair",
- "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 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": "const",
- "t": "source.cpp storage.modifier.specifier.const.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"
- }
- },
- {
- "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": "long",
- "t": "source.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 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": " ",
- "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": "std",
- "t": "source.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 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": "pair",
- "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 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": "pugi",
- "t": "source.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 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": "xml_node",
- "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 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": " ",
- "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": "std",
- "t": "source.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 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": "map",
- "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 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": "std",
- "t": "source.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 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": "basic_string",
- "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 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": "char",
- "t": "source.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 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 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": " ",
- "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": "pugi",
- "t": "source.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 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": "xml_node",
- "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 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": " ",
- "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": "std",
- "t": "source.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 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": "less",
- "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 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": "std",
- "t": "source.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 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": "basic_string",
- "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 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": "char",
- "t": "source.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 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",
- "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 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 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": " ",
- "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": "std",
- "t": "source.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 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": "allocator",
- "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 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": "std",
- "t": "source.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 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": "pair",
- "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 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": "const",
- "t": "source.cpp storage.modifier.specifier.const.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"
- }
- },
- {
- "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": "std",
- "t": "source.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 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": "basic_string",
- "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 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": "char",
- "t": "source.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 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 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": " ",
- "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": "pugi",
- "t": "source.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 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": "xml_node",
- "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 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",
- "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 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",
- "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 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",
- "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 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",
- "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 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",
- "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 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": " dnode_it ",
- "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 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",
- "r": {
- "dark_plus": "default: #D4D4D4",
- "light_plus": "default: #000000",
- "dark_vs": "default: #D4D4D4",
- "light_vs": "default: #000000",
- "hc_black": "default: #FFFFFF"
- }
- },
- {
- "c": "dnodes_",
- "t": "source.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 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": "find",
- "t": "source.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 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": "uid",
- "t": "source.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 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": "position",
- "t": "source.cpp variable.other.property.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 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"
- }
}
]
\ No newline at end of file
diff --git a/extensions/cpp/test/colorize-results/test_cc.json b/extensions/cpp/test/colorize-results/test_cc.json
index 324b231bb1b..cb2fb192e1d 100644
--- a/extensions/cpp/test/colorize-results/test_cc.json
+++ b/extensions/cpp/test/colorize-results/test_cc.json
@@ -122,7 +122,7 @@
},
{
"c": "%d",
- "t": "source.cpp string.quoted.double.cpp constant.other.placeholder.cpp",
+ "t": "source.cpp string.quoted.double.cpp constant.other.placeholder",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -430,7 +430,7 @@
},
{
"c": "%d",
- "t": "source.cpp string.quoted.double.cpp constant.other.placeholder.cpp",
+ "t": "source.cpp string.quoted.double.cpp constant.other.placeholder",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -474,7 +474,7 @@
},
{
"c": "user_candidate",
- "t": "source.cpp meta.bracket.square.access.cpp variable.other.object.cpp",
+ "t": "source.cpp meta.bracket.square.access variable.other.object",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
@@ -485,7 +485,7 @@
},
{
"c": "[",
- "t": "source.cpp meta.bracket.square.access.cpp punctuation.definition.begin.bracket.square.cpp",
+ "t": "source.cpp meta.bracket.square.access punctuation.definition.begin.bracket.square",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -496,7 +496,7 @@
},
{
"c": "i",
- "t": "source.cpp meta.bracket.square.access.cpp",
+ "t": "source.cpp meta.bracket.square.access",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -507,7 +507,7 @@
},
{
"c": "]",
- "t": "source.cpp meta.bracket.square.access.cpp punctuation.definition.end.bracket.square.cpp",
+ "t": "source.cpp meta.bracket.square.access punctuation.definition.end.bracket.square",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -727,7 +727,7 @@
},
{
"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",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp entity.name.type.parameter.cpp",
"r": {
"dark_plus": "entity.name.type: #4EC9B0",
"light_plus": "entity.name.type: #267F99",
@@ -738,7 +738,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -749,7 +749,7 @@
},
{
"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",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp variable.parameter.cpp",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
@@ -1464,7 +1464,7 @@
},
{
"c": "%s",
- "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp constant.other.placeholder.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp constant.other.placeholder",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1486,7 +1486,7 @@
},
{
"c": "%s",
- "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp constant.other.placeholder.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp string.quoted.double.cpp constant.other.placeholder",
"r": {
"dark_plus": "string: #CE9178",
"light_plus": "string: #A31515",
@@ -1805,7 +1805,7 @@
},
{
"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",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.asm.cpp string.quoted.double.cpp meta.embedded.assembly",
"r": {
"dark_plus": "meta.embedded.assembly: #CE9178",
"light_plus": "meta.embedded.assembly: #A31515",
@@ -1979,4 +1979,4 @@
"hc_black": "default: #FFFFFF"
}
}
-]
+]
\ No newline at end of file
diff --git a/extensions/cpp/test/colorize-results/test_cpp.json b/extensions/cpp/test/colorize-results/test_cpp.json
index 10f6041bb00..7752bbfa606 100644
--- a/extensions/cpp/test/colorize-results/test_cpp.json
+++ b/extensions/cpp/test/colorize-results/test_cpp.json
@@ -287,7 +287,7 @@
},
{
"c": "Rectangle",
- "t": "source.cpp meta.block.class.cpp meta.head.class.cpp entity.name.type.class.cpp",
+ "t": "source.cpp meta.block.class.cpp entity.name.type.class.cpp",
"r": {
"dark_plus": "entity.name.type: #4EC9B0",
"light_plus": "entity.name.type: #267F99",
@@ -298,7 +298,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.block.class.cpp meta.head.class.cpp",
+ "t": "source.cpp meta.block.class.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -485,7 +485,7 @@
},
{
"c": "int",
- "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",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -496,7 +496,7 @@
},
{
"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",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -507,7 +507,7 @@
},
{
"c": "int",
- "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",
+ "t": "source.cpp meta.block.class.cpp meta.body.class.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -793,7 +793,7 @@
},
{
"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",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -804,7 +804,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -815,7 +815,7 @@
},
{
"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",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp variable.parameter.cpp",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
@@ -826,7 +826,7 @@
},
{
"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",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp punctuation.separator.delimiter.comma.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -837,7 +837,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -848,7 +848,7 @@
},
{
"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",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -859,7 +859,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters.cpp meta.parameter.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -870,7 +870,7 @@
},
{
"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",
+ "t": "source.cpp meta.function.definition.cpp meta.head.function.definition.cpp meta.function.definition.parameters meta.parameter.cpp variable.parameter.cpp",
"r": {
"dark_plus": "variable: #9CDCFE",
"light_plus": "variable: #001080",
@@ -1123,7 +1123,7 @@
},
{
"c": "long",
- "t": "source.cpp meta.function.definition.special.operator-overload.cpp meta.head.function.definition.special.operator-overload.cpp meta.function.definition.parameters.special.operator-overload.cpp meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
+ "t": "source.cpp meta.function.definition.special.operator-overload.cpp meta.head.function.definition.special.operator-overload.cpp meta.function.definition.parameters.special.operator-overload meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -1134,7 +1134,7 @@
},
{
"c": " ",
- "t": "source.cpp meta.function.definition.special.operator-overload.cpp meta.head.function.definition.special.operator-overload.cpp meta.function.definition.parameters.special.operator-overload.cpp meta.parameter.cpp",
+ "t": "source.cpp meta.function.definition.special.operator-overload.cpp meta.head.function.definition.special.operator-overload.cpp meta.function.definition.parameters.special.operator-overload meta.parameter.cpp",
"r": {
"dark_plus": "default: #D4D4D4",
"light_plus": "default: #000000",
@@ -1145,7 +1145,7 @@
},
{
"c": "double",
- "t": "source.cpp meta.function.definition.special.operator-overload.cpp meta.head.function.definition.special.operator-overload.cpp meta.function.definition.parameters.special.operator-overload.cpp meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
+ "t": "source.cpp meta.function.definition.special.operator-overload.cpp meta.head.function.definition.special.operator-overload.cpp meta.function.definition.parameters.special.operator-overload meta.parameter.cpp storage.type.primitive.cpp storage.type.built-in.primitive.cpp",
"r": {
"dark_plus": "storage.type: #569CD6",
"light_plus": "storage.type: #0000FF",
@@ -1519,7 +1519,7 @@
},
{
"c": "movl %a %b",
- "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.asm.cpp string.quoted.double.cpp meta.embedded.assembly.cpp",
+ "t": "source.cpp meta.function.definition.cpp meta.body.function.definition.cpp meta.asm.cpp string.quoted.double.cpp meta.embedded.assembly",
"r": {
"dark_plus": "meta.embedded.assembly: #CE9178",
"light_plus": "meta.embedded.assembly: #A31515",
diff --git a/extensions/css-language-features/.vscode/launch.json b/extensions/css-language-features/.vscode/launch.json
index 4f7166e6dce..8fccefff468 100644
--- a/extensions/css-language-features/.vscode/launch.json
+++ b/extensions/css-language-features/.vscode/launch.json
@@ -1,14 +1,5 @@
{
"version": "0.2.0",
- "compounds": [
- {
- "name": "Debug Extension and Language Server",
- "configurations": [
- "Launch Extension",
- "Attach Language Server"
- ]
- }
- ],
"configurations": [
{
"name": "Launch Extension",
@@ -41,19 +32,6 @@
]
},
{
- "name": "Attach Language Server",
- "type": "node",
- "request": "attach",
- "protocol": "inspector",
- "port": 6044,
- "sourceMaps": true,
- "outFiles": [
- "${workspaceFolder}/server/out/**/*.js"
- ],
- "smartStep": true,
- "restart": true
- },
- {
"name": "Server Unit Tests",
"type": "node",
"request": "launch",
@@ -74,4 +52,4 @@
]
}
]
-}
\ No newline at end of file
+}
diff --git a/extensions/css-language-features/.vscodeignore b/extensions/css-language-features/.vscodeignore
index fa38a471362..a08d9b8dec7 100644
--- a/extensions/css-language-features/.vscodeignore
+++ b/extensions/css-language-features/.vscodeignore
@@ -16,4 +16,6 @@ server/.npmignore
yarn.lock
server/extension.webpack.config.js
extension.webpack.config.js
-CONTRIBUTING.md
\ No newline at end of file
+server/extension-browser.webpack.config.js
+extension-browser.webpack.config.js
+CONTRIBUTING.md
diff --git a/extensions/css-language-features/CONTRIBUTING.md b/extensions/css-language-features/CONTRIBUTING.md
index 38843f2fbaa..be9c9854b00 100644
--- a/extensions/css-language-features/CONTRIBUTING.md
+++ b/extensions/css-language-features/CONTRIBUTING.md
@@ -1,13 +1,13 @@
## Setup
-- Clone [Microsoft/vscode](https://github.com/microsoft/vscode)
+- Clone [microsoft/vscode](https://github.com/microsoft/vscode)
- Run `yarn` at `/`, this will install
- Dependencies for `/extension/css-language-features/`
- Dependencies for `/extension/css-language-features/server/`
- devDependencies such as `gulp`
- Open `/extensions/css-language-features/` as the workspace in VS Code
-- Run the [`Launch Extension`](https://github.com/Microsoft/vscode/blob/master/extensions/css-language-features/.vscode/launch.json) debug target in the Debug View. This will:
+- Run the [`Launch Extension`](https://github.com/microsoft/vscode/blob/master/extensions/css-language-features/.vscode/launch.json) debug target in the Debug View. This will:
- Launch the `preLaunchTask` task to compile the extension
- Launch a new VS Code instance with the `css-language-features` extension loaded
- You should see a notification saying the development version of `css-language-features` overwrites the bundled version of `css-language-features`
@@ -16,15 +16,15 @@
### Contribute to vscode-css-languageservice
-[Microsoft/vscode-css-languageservice](https://github.com/Microsoft/vscode-css-languageservice) contains the language smarts for CSS/SCSS/Less.
+[microsoft/vscode-css-languageservice](https://github.com/microsoft/vscode-css-languageservice) contains the language smarts for CSS/SCSS/Less.
This extension wraps the css language service into a Language Server for VS Code.
-If you want to fix CSS/SCSS/Less issues or make improvements, you should make changes at [Microsoft/vscode-css-languageservice](https://github.com/Microsoft/vscode-css-languageservice).
+If you want to fix CSS/SCSS/Less issues or make improvements, you should make changes at [microsoft/vscode-css-languageservice](https://github.com/microsoft/vscode-css-languageservice).
However, within this extension, you can run a development version of `vscode-css-languageservice` to debug code or test language features interactively:
#### Linking `vscode-css-languageservice` in `css-language-features/server/`
-- Clone [Microsoft/vscode-css-languageservice](https://github.com/Microsoft/vscode-css-languageservice)
+- Clone [microsoft/vscode-css-languageservice](https://github.com/microsoft/vscode-css-languageservice)
- Run `yarn` in `vscode-css-languageservice`
- Run `yarn link` in `vscode-css-languageservice`. This will compile and link `vscode-css-languageservice`
- In `css-language-features/server/`, run `yarn link vscode-css-languageservice`
diff --git a/extensions/css-language-features/README.md b/extensions/css-language-features/README.md
index 5a3fad4948b..e3430c6a178 100644
--- a/extensions/css-language-features/README.md
+++ b/extensions/css-language-features/README.md
@@ -6,4 +6,4 @@
See [CSS, SCSS and Less in VS Code](https://code.visualstudio.com/docs/languages/css) to learn about the features of this extension.
-Please read the [CONTRIBUTING.md](https://github.com/Microsoft/vscode/blob/master/extensions/css-language-features/CONTRIBUTING.md) file to learn how to contribute to this extension.
\ No newline at end of file
+Please read the [CONTRIBUTING.md](https://github.com/microsoft/vscode/blob/master/extensions/css-language-features/CONTRIBUTING.md) file to learn how to contribute to this extension.
diff --git a/extensions/css-language-features/client/src/browser/cssClientMain.ts b/extensions/css-language-features/client/src/browser/cssClientMain.ts
index 8b1d7205fcd..2a5e3e1f2c2 100644
--- a/extensions/css-language-features/client/src/browser/cssClientMain.ts
+++ b/extensions/css-language-features/client/src/browser/cssClientMain.ts
@@ -3,7 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-import { ExtensionContext } from 'vscode';
+import { ExtensionContext, Uri } from 'vscode';
import { LanguageClientOptions } from 'vscode-languageclient';
import { startClient, LanguageClientConstructor } from '../cssClient';
import { LanguageClient } from 'vscode-languageclient/browser';
@@ -17,9 +17,9 @@ declare const TextDecoder: {
// this method is called when vs code is activated
export function activate(context: ExtensionContext) {
- const serverMain = context.asAbsolutePath('server/dist/browser/cssServerMain.js');
+ const serverMain = Uri.joinPath(context.extensionUri, 'server/dist/browser/cssServerMain.js');
try {
- const worker = new Worker(serverMain);
+ const worker = new Worker(serverMain.toString());
const newLanguageClient: LanguageClientConstructor = (id: string, name: string, clientOptions: LanguageClientOptions) => {
return new LanguageClient(id, name, clientOptions, worker);
};
diff --git a/extensions/css-language-features/client/src/browser/vscodeNlsShim.ts b/extensions/css-language-features/client/src/browser/vscodeNlsShim.ts
deleted file mode 100644
index b4943fe0ee1..00000000000
--- a/extensions/css-language-features/client/src/browser/vscodeNlsShim.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-
-export interface Options {
- locale?: string;
- cacheLanguageResolution?: boolean;
-}
-export interface LocalizeInfo {
- key: string;
- comment: string[];
-}
-export interface LocalizeFunc {
- (info: LocalizeInfo, message: string, ...args: any[]): string;
- (key: string, message: string, ...args: any[]): string;
-}
-export interface LoadFunc {
- (file?: string): LocalizeFunc;
-}
-
-function format(message: string, args: any[]): string {
- let result: string;
-
- if (args.length === 0) {
- result = message;
- } else {
- result = message.replace(/\{(\d+)\}/g, (match, rest) => {
- let index = rest[0];
- return typeof args[index] !== 'undefined' ? args[index] : match;
- });
- }
- return result;
-}
-
-function localize(_key: string | LocalizeInfo, message: string, ...args: any[]): string {
- return format(message, args);
-}
-
-export function loadMessageBundle(_file?: string): LocalizeFunc {
- return localize;
-}
-
-export function config(_opt?: Options | string): LoadFunc {
- return loadMessageBundle;
-}
diff --git a/extensions/css-language-features/client/src/customData.ts b/extensions/css-language-features/client/src/customData.ts
index 50540528d63..24b56f12b06 100644
--- a/extensions/css-language-features/client/src/customData.ts
+++ b/extensions/css-language-features/client/src/customData.ts
@@ -76,17 +76,13 @@ function getCustomDataPathsInAllWorkspaces(): string[] {
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.customData && Array.isArray(contributes.css.customData)) {
- const relativePaths: string[] = contributes.css.customData;
- relativePaths.forEach(rp => {
+ const customData = extension.packageJSON?.contributes?.css?.customData;
+ if (Array.isArray(customData)) {
+ for (const rp of customData) {
dataPaths.push(joinPath(extension.extensionUri, rp).toString());
- });
+ }
}
}
-
return dataPaths;
}
diff --git a/extensions/css-language-features/client/src/node/cssClientMain.ts b/extensions/css-language-features/client/src/node/cssClientMain.ts
index 350e0de02d5..b88838d8912 100644
--- a/extensions/css-language-features/client/src/node/cssClientMain.ts
+++ b/extensions/css-language-features/client/src/node/cssClientMain.ts
@@ -11,17 +11,13 @@ import { TextDecoder } from 'util';
// this method is called when vs code is activated
export function activate(context: ExtensionContext) {
+ const clientMain = extensions.getExtension('vscode.css-language-features')?.packageJSON?.main || '';
- const clientMain = extensions.getExtension('vscode.css-language-features')?.packageJSON?.main;
- const serverMain = clientMain?.replace('client', 'server').replace('cssClientMain', 'cssServerMain');
- if (!serverMain) {
- throw new Error('Unable to compute CSS server module path. Client: ' + clientMain);
- }
-
+ const serverMain = `./server/${clientMain.indexOf('/dist/') !== -1 ? 'dist' : 'out'}/node/cssServerMain`;
const serverModule = context.asAbsolutePath(serverMain);
// The debug options for the server
- const debugOptions = { execArgv: ['--nolazy', '--inspect=6044'] };
+ const debugOptions = { execArgv: ['--nolazy', '--inspect=' + (7000 + Math.round(Math.random() * 999))] };
// If the extension is launch in debug mode the debug server options are use
// Otherwise the run options are used
diff --git a/extensions/css-language-features/extension-browser.webpack.config.js b/extensions/css-language-features/extension-browser.webpack.config.js
index 0cf30ec5dc0..cb2e13c7ed3 100644
--- a/extensions/css-language-features/extension-browser.webpack.config.js
+++ b/extensions/css-language-features/extension-browser.webpack.config.js
@@ -7,17 +7,10 @@
'use strict';
-const withDefaults = require('../shared.webpack.config');
+const withBrowserDefaults = require('../shared.webpack.config').browser;
const path = require('path');
-const webpack = require('webpack');
-const vscodeNlsReplacement = new webpack.NormalModuleReplacementPlugin(
- /vscode\-nls\/lib\/main\.js/,
- path.join(__dirname, 'client/out/browser/vscodeNlsShim.js')
-);
-
-const clientConfig = withDefaults({
- target: 'webworker',
+module.exports = withBrowserDefaults({
context: path.join(__dirname, 'client'),
entry: {
extension: './src/browser/cssClientMain.ts'
@@ -27,22 +20,3 @@ const clientConfig = withDefaults({
path: path.join(__dirname, 'client', 'dist', 'browser')
}
});
-clientConfig.plugins[1] = vscodeNlsReplacement; // replace nls bundler
-clientConfig.module.rules[0].use.shift(); // remove nls loader
-
-const serverConfig = withDefaults({
- target: 'webworker',
- context: path.join(__dirname, 'server'),
- entry: {
- extension: './src/browser/cssServerMain.ts',
- },
- output: {
- filename: 'cssServerMain.js',
- path: path.join(__dirname, 'server', 'dist', 'browser'),
- libraryTarget: 'var'
- }
-});
-serverConfig.plugins[1] = vscodeNlsReplacement; // replace nls bundler
-serverConfig.module.rules[0].use.shift(); // remove nls loader
-
-module.exports = [clientConfig, serverConfig];
diff --git a/extensions/css-language-features/package.json b/extensions/css-language-features/package.json
index 4d44ee6d7d5..29f056e4137 100644
--- a/extensions/css-language-features/package.json
+++ b/extensions/css-language-features/package.json
@@ -798,7 +798,7 @@
"jsonValidation": [
{
"fileMatch": "*.css-data.json",
- "url": "https://raw.githubusercontent.com/Microsoft/vscode-css-languageservice/master/docs/customData.schema.json"
+ "url": "https://raw.githubusercontent.com/microsoft/vscode-css-languageservice/master/docs/customData.schema.json"
},
{
"fileMatch": "package.json",
@@ -807,7 +807,7 @@
]
},
"dependencies": {
- "vscode-languageclient": "7.0.0-next.4",
+ "vscode-languageclient": "7.0.0-next.5.1",
"vscode-nls": "^4.1.2"
},
"devDependencies": {
diff --git a/extensions/css-language-features/package.nls.json b/extensions/css-language-features/package.nls.json
index 1517384b652..7f2ffb5c1d9 100644
--- a/extensions/css-language-features/package.nls.json
+++ b/extensions/css-language-features/package.nls.json
@@ -2,7 +2,7 @@
"displayName": "CSS Language Features",
"description": "Provides rich language support for CSS, LESS and SCSS files.",
"css.title": "CSS",
- "css.customData.desc": "A list of relative file paths pointing to JSON files following the [custom data format](https://github.com/Microsoft/vscode-css-languageservice/blob/master/docs/customData.md).\n\nVS Code loads custom data on startup to enhance its CSS support for the custom CSS properties, at directives, pseudo classes and pseudo elements you specify in the JSON files.\n\nThe file paths are relative to workspace and only workspace folder settings are considered.",
+ "css.customData.desc": "A list of relative file paths pointing to JSON files following the [custom data format](https://github.com/microsoft/vscode-css-languageservice/blob/master/docs/customData.md).\n\nVS Code loads custom data on startup to enhance its CSS support for the custom CSS properties, at directives, pseudo classes and pseudo elements you specify in the JSON files.\n\nThe file paths are relative to workspace and only workspace folder settings are considered.",
"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.completion.completePropertyWithSemicolon.desc": "Insert semicolon at end of line when completing CSS properties",
"css.lint.argumentsInColorFunction.desc": "Invalid number of parameters.",
diff --git a/extensions/css-language-features/schemas/package.schema.json b/extensions/css-language-features/schemas/package.schema.json
index cf4193008ec..831149caa9e 100644
--- a/extensions/css-language-features/schemas/package.schema.json
+++ b/extensions/css-language-features/schemas/package.schema.json
@@ -8,7 +8,7 @@
"properties": {
"css.customData": {
"type": "array",
- "markdownDescription": "A list of relative file paths pointing to JSON files following the [custom data format](https://github.com/Microsoft/vscode-css-languageservice/blob/master/docs/customData.md).\n\nVS Code loads custom data on startup to enhance its CSS support for the custom CSS properties, at directives, pseudo classes and pseudo elements you specify in the JSON files.\n\nThe file paths are relative to workspace and only workspace folder settings are considered.",
+ "markdownDescription": "A list of relative file paths pointing to JSON files following the [custom data format](https://github.com/microsoft/vscode-css-languageservice/blob/master/docs/customData.md).\n\nVS Code loads custom data on startup to enhance its CSS support for the custom CSS properties, at directives, pseudo classes and pseudo elements you specify in the JSON files.\n\nThe file paths are relative to workspace and only workspace folder settings are considered.",
"items": {
"type": "string",
"description": "Relative path to a CSS custom data file"
diff --git a/extensions/css-language-features/server/extension-browser.webpack.config.js b/extensions/css-language-features/server/extension-browser.webpack.config.js
new file mode 100644
index 00000000000..38816259ddf
--- /dev/null
+++ b/extensions/css-language-features/server/extension-browser.webpack.config.js
@@ -0,0 +1,23 @@
+/*---------------------------------------------------------------------------------------------
+ * 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 withBrowserDefaults = require('../../shared.webpack.config').browser;
+const path = require('path');
+
+module.exports = withBrowserDefaults({
+ context: __dirname,
+ entry: {
+ extension: './src/browser/cssServerMain.ts',
+ },
+ output: {
+ filename: 'cssServerMain.js',
+ path: path.join(__dirname, 'dist', 'browser'),
+ libraryTarget: 'var'
+ }
+});
diff --git a/extensions/css-language-features/server/package.json b/extensions/css-language-features/server/package.json
index 247b276dace..f249a512a5a 100644
--- a/extensions/css-language-features/server/package.json
+++ b/extensions/css-language-features/server/package.json
@@ -10,7 +10,7 @@
"main": "./out/node/cssServerMain",
"browser": "./dist/browser/cssServerMain",
"dependencies": {
- "vscode-css-languageservice": "4.3.0-next.2",
+ "vscode-css-languageservice": "^4.3.5",
"vscode-languageserver": "7.0.0-next.3",
"vscode-uri": "^2.1.2"
},
diff --git a/extensions/css-language-features/server/src/cssServer.ts b/extensions/css-language-features/server/src/cssServer.ts
index 42a88c9a5dc..0b30955bd3f 100644
--- a/extensions/css-language-features/server/src/cssServer.ts
+++ b/extensions/css-language-features/server/src/cssServer.ts
@@ -5,7 +5,7 @@
import {
Connection, TextDocuments, InitializeParams, InitializeResult, ServerCapabilities, ConfigurationRequest, WorkspaceFolder, TextDocumentSyncKind, NotificationType
-} from 'vscode-languageserver/lib/common/api';
+} from 'vscode-languageserver';
import { URI } from 'vscode-uri';
import { getCSSLanguageService, getSCSSLanguageService, getLESSLanguageService, LanguageSettings, LanguageService, Stylesheet, TextDocument, Position } from 'vscode-css-languageservice';
import { getLanguageModelCache } from './languageModelCache';
@@ -67,7 +67,7 @@ export function startServer(connection: Connection, runtime: RuntimeEnvironment)
}
}
- requestService = getRequestService(params.initializationOptions.handledSchemas || ['file'], connection, runtime);
+ requestService = getRequestService(params.initializationOptions?.handledSchemas || ['file'], connection, runtime);
function getClientCapability(name: string, def: T) {
const keys = name.split('.');
diff --git a/extensions/css-language-features/server/src/customData.ts b/extensions/css-language-features/server/src/customData.ts
index 724dbf9de3f..ccfc706452c 100644
--- a/extensions/css-language-features/server/src/customData.ts
+++ b/extensions/css-language-features/server/src/customData.ts
@@ -29,7 +29,7 @@ function parseCSSData(source: string): ICSSDataProvider {
}
return newCSSDataProvider({
- version: 1,
+ version: rawData.version || 1,
properties: rawData.properties || [],
atDirectives: rawData.atDirectives || [],
pseudoClasses: rawData.pseudoClasses || [],
diff --git a/extensions/css-language-features/server/src/requests.ts b/extensions/css-language-features/server/src/requests.ts
index 6e708421d2b..79f166c2d40 100644
--- a/extensions/css-language-features/server/src/requests.ts
+++ b/extensions/css-language-features/server/src/requests.ts
@@ -113,9 +113,26 @@ export function basename(uri: string) {
return uri.substr(lastIndexOfSlash + 1);
}
+
const Slash = '/'.charCodeAt(0);
const Dot = '.'.charCodeAt(0);
+export function extname(uri: string) {
+ for (let i = uri.length - 1; i >= 0; i--) {
+ const ch = uri.charCodeAt(i);
+ if (ch === Dot) {
+ if (i > 0 && uri.charCodeAt(i - 1) !== Slash) {
+ return uri.substr(i);
+ } else {
+ break;
+ }
+ } else if (ch === Slash) {
+ break;
+ }
+ }
+ return '';
+}
+
export function isAbsolutePath(path: string) {
return path.charCodeAt(0) === Slash;
}
diff --git a/extensions/css-language-features/server/src/test/requests.test.ts b/extensions/css-language-features/server/src/test/requests.test.ts
index bbec8842ea9..3f287fefed0 100644
--- a/extensions/css-language-features/server/src/test/requests.test.ts
+++ b/extensions/css-language-features/server/src/test/requests.test.ts
@@ -4,8 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import 'mocha';
import * as assert from 'assert';
-import { joinPath, normalizePath, resolvePath } from '../requests';
-
+import { joinPath, normalizePath, resolvePath, extname } from '../requests';
suite('requests', () => {
test('join', async function () {
@@ -51,4 +50,13 @@ suite('requests', () => {
assertNormalize('..', '');
assertNormalize('/..', '/');
});
+
+ test('extname', async function () {
+ function assertExtName(input: string, expected: string) {
+ assert.equal(extname(input), expected, input);
+ }
+ assertExtName('foo://a/foo/bar', '');
+ assertExtName('foo://a/foo/bar.foo', '.foo');
+ assertExtName('foo://a/foo/.foo', '');
+ });
});
diff --git a/extensions/css-language-features/server/test/index.js b/extensions/css-language-features/server/test/index.js
index 4e9960494a2..4ab853bd503 100644
--- a/extensions/css-language-features/server/test/index.js
+++ b/extensions/css-language-features/server/test/index.js
@@ -21,7 +21,7 @@ if (process.env.BUILD_ARTIFACTSTAGINGDIRECTORY) {
reporterEnabled: 'spec, mocha-junit-reporter',
mochaJunitReporterReporterOptions: {
testsuitesTitle: `${suite} ${process.platform}`,
- mochaFile: path.join(process.env.BUILD_ARTIFACTSTAGINGDIRECTORY, `test-results/${process.platform}-${suite.toLowerCase().replace(/[^\w]/g, '-')}-results.xml`)
+ mochaFile: path.join(process.env.BUILD_ARTIFACTSTAGINGDIRECTORY, `test-results/${process.platform}-${process.arch}-${suite.toLowerCase().replace(/[^\w]/g, '-')}-results.xml`)
}
};
}
diff --git a/extensions/css-language-features/server/yarn.lock b/extensions/css-language-features/server/yarn.lock
index 2c75c197770..2d2ffcf8e83 100644
--- a/extensions/css-language-features/server/yarn.lock
+++ b/extensions/css-language-features/server/yarn.lock
@@ -414,15 +414,10 @@ locate-path@^3.0.0:
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.15:
- version "4.17.15"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
- integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+lodash@^4.16.4, lodash@^4.17.15:
+ version "4.17.19"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b"
+ integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==
log-symbols@3.0.0:
version "3.0.0"
@@ -701,14 +696,14 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
-vscode-css-languageservice@4.3.0-next.2:
- version "4.3.0-next.2"
- resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.3.0-next.2.tgz#a7a1289d8d68ddcdee55d4f18b12a455acaf5962"
- integrity sha512-4h/s/N7wt6If/5EUNMtfAbwWwImH6EvveqZMf9SmQdMMMqekZkRLA68E98hGzuzI13rHEiLckwlAC+RNLq6FXg==
+vscode-css-languageservice@^4.3.5:
+ version "4.3.5"
+ resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.3.5.tgz#92f8817057dee7c381df2289aad539c7b553548a"
+ integrity sha512-g9Pjxt9T32jhY0nTOo7WRFm0As27IfdaAxcFa8c7Rml1ZqBn3XXbkExjzxY7sBWYm7I1Tp4dK6UHXHoUQHGwig==
dependencies:
vscode-languageserver-textdocument "^1.0.1"
vscode-languageserver-types "3.16.0-next.2"
- vscode-nls "^4.1.2"
+ vscode-nls "^5.0.0"
vscode-uri "^2.1.2"
vscode-jsonrpc@6.0.0-next.2:
@@ -741,10 +736,10 @@ vscode-languageserver@7.0.0-next.3:
dependencies:
vscode-languageserver-protocol "3.16.0-next.4"
-vscode-nls@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.2.tgz#ca8bf8bb82a0987b32801f9fddfdd2fb9fd3c167"
- integrity sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==
+vscode-nls@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840"
+ integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==
vscode-uri@^2.1.2:
version "2.1.2"
@@ -794,7 +789,7 @@ y18n@^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.1.2, yargs-parser@^13.1.2:
+yargs-parser@13.1.2, yargs-parser@^13.1.1, yargs-parser@^13.1.2:
version "13.1.2"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
@@ -802,14 +797,6 @@ yargs-parser@13.1.2, yargs-parser@^13.1.2:
camelcase "^5.0.0"
decamelize "^1.2.0"
-yargs-parser@^13.1.1:
- 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.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f"
diff --git a/extensions/css-language-features/yarn.lock b/extensions/css-language-features/yarn.lock
index d970cf8ce1f..241dd5e9437 100644
--- a/extensions/css-language-features/yarn.lock
+++ b/extensions/css-language-features/yarn.lock
@@ -640,10 +640,10 @@ vscode-jsonrpc@6.0.0-next.2:
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0-next.2.tgz#3d73f86d812304cb91b9fb1efee40ec60b09ed7f"
integrity sha512-dKQXRYNUY6BHALQJBJlyZyv9oWlYpbJ2vVoQNNVNPLAYQ3hzNp4zy+iSo7zGx1BPXByArJQDWTKLQh8dz3dnNw==
-vscode-languageclient@7.0.0-next.4:
- version "7.0.0-next.4"
- resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-7.0.0-next.4.tgz#b4586b7800eba0a301484a6690c6c2d924976e1d"
- integrity sha512-Iu12KwG+CloQJK1Dp7+nZrLpwhRA/ZacffVL0Tyf9ASTa9+Hb0cNn6FXaSSYwNsfeOYCM8SVYubEQZSXfF7E9g==
+vscode-languageclient@7.0.0-next.5.1:
+ version "7.0.0-next.5.1"
+ resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-7.0.0-next.5.1.tgz#ed93f14e4c2cdccedf15002c7bf8ef9cb638f36c"
+ integrity sha512-OONvbk3IFpubwF8/Y5uPQaq5J5CEskpeET3SfK4iGlv5OUK+44JawH/SEW5wXuEPpfdMLEMZLuGLU5v5d7N7PQ==
dependencies:
semver "^6.3.0"
vscode-languageserver-protocol "3.16.0-next.4"
diff --git a/extensions/debug-auto-launch/.vscode/launch.json b/extensions/debug-auto-launch/.vscode/launch.json
new file mode 100644
index 00000000000..1c3d9e9661b
--- /dev/null
+++ b/extensions/debug-auto-launch/.vscode/launch.json
@@ -0,0 +1,20 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Extension",
+ "type": "extensionHost",
+ "request": "launch",
+ "skipFiles": ["/**"],
+ "args": [
+ "--extensionDevelopmentPath=${workspaceFolder}",
+ ],
+ "outFiles": [
+ "${workspaceFolder}/out/**/*.js",
+ ],
+ }
+ ]
+}
diff --git a/extensions/debug-auto-launch/package.json b/extensions/debug-auto-launch/package.json
index 07568c77081..f0dc778263e 100644
--- a/extensions/debug-auto-launch/package.json
+++ b/extensions/debug-auto-launch/package.json
@@ -17,27 +17,6 @@
"watch": "gulp watch-extension:debug-auto-launch"
},
"contributes": {
- "configuration": {
- "title": "Node debug",
- "properties": {
- "debug.node.autoAttach": {
- "scope": "window",
- "type": "string",
- "enum": [
- "disabled",
- "on",
- "off"
- ],
- "enumDescriptions": [
- "%debug.node.autoAttach.disabled.description%",
- "%debug.node.autoAttach.on.description%",
- "%debug.node.autoAttach.off.description%"
- ],
- "description": "%debug.node.autoAttach.description%",
- "default": "disabled"
- }
- }
- },
"commands": [
{
"command": "extension.node-debug.toggleAutoAttach",
@@ -51,5 +30,11 @@
},
"devDependencies": {
"@types/node": "^12.11.7"
+ },
+ "prettier": {
+ "printWidth": 100,
+ "trailingComma": "all",
+ "singleQuote": true,
+ "arrowParens": "avoid"
}
}
diff --git a/extensions/debug-auto-launch/package.nls.json b/extensions/debug-auto-launch/package.nls.json
index 030ac5a20a9..ba9f80dfe8b 100644
--- a/extensions/debug-auto-launch/package.nls.json
+++ b/extensions/debug-auto-launch/package.nls.json
@@ -1,11 +1,5 @@
{
"displayName": "Node Debug Auto-attach",
"description": "Helper for auto-attach feature when node-debug extensions are not active.",
-
- "debug.node.autoAttach.description": "Automatically attach node debugger when node.js was launched in debug mode from integrated terminal.",
- "debug.node.autoAttach.disabled.description": "Auto attach is disabled and not shown in status bar.",
- "debug.node.autoAttach.on.description": "Auto attach is active.",
- "debug.node.autoAttach.off.description": "Auto attach is inactive.",
-
"toggle.auto.attach": "Toggle Auto Attach"
-}
\ No newline at end of file
+}
diff --git a/extensions/debug-auto-launch/src/extension.ts b/extensions/debug-auto-launch/src/extension.ts
index 05ee2476a66..5ae907a9dbe 100644
--- a/extensions/debug-auto-launch/src/extension.ts
+++ b/extensions/debug-auto-launch/src/extension.ts
@@ -3,105 +3,169 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
+import { promises as fs } from 'fs';
+import { createServer, Server } from 'net';
import * as vscode from 'vscode';
import * as nls from 'vscode-nls';
-import { createServer, Server } from 'net';
const localize = nls.loadMessageBundle();
-const ON_TEXT = localize('status.text.auto.attach.on', 'Auto Attach: On');
-const OFF_TEXT = localize('status.text.auto.attach.off', 'Auto Attach: Off');
+const TEXT_ALWAYS = localize('status.text.auto.attach.always', 'Auto Attach: Always');
+const TEXT_SMART = localize('status.text.auto.attach.smart', 'Auto Attach: Smart');
+const TEXT_WITH_FLAG = localize('status.text.auto.attach.withFlag', 'Auto Attach: With Flag');
+const TEXT_STATE_LABEL = {
+ [State.Disabled]: localize('debug.javascript.autoAttach.disabled.label', 'Disabled'),
+ [State.Always]: localize('debug.javascript.autoAttach.always.label', 'Always'),
+ [State.Smart]: localize('debug.javascript.autoAttach.smart.label', 'Smart'),
+ [State.OnlyWithFlag]: localize(
+ 'debug.javascript.autoAttach.onlyWithFlag.label',
+ 'Only With Flag',
+ ),
+};
+const TEXT_STATE_DESCRIPTION = {
+ [State.Disabled]: localize(
+ 'debug.javascript.autoAttach.disabled.description',
+ 'Auto attach is disabled and not shown in status bar',
+ ),
+ [State.Always]: localize(
+ 'debug.javascript.autoAttach.always.description',
+ 'Auto attach to every Node.js process launched in the terminal',
+ ),
+ [State.Smart]: localize(
+ 'debug.javascript.autoAttach.smart.description',
+ "Auto attach when running scripts that aren't in a node_modules folder",
+ ),
+ [State.OnlyWithFlag]: localize(
+ 'debug.javascript.autoAttach.onlyWithFlag.description',
+ 'Only auto attach when the `--inspect` flag is given',
+ ),
+};
+const TEXT_TOGGLE_WORKSPACE = localize('scope.workspace', 'Toggle auto attach in this workspace');
+const TEXT_TOGGLE_GLOBAL = localize('scope.global', 'Toggle auto attach on this machine');
const TOGGLE_COMMAND = 'extension.node-debug.toggleAutoAttach';
-const JS_DEBUG_SETTINGS = 'debug.javascript';
-const JS_DEBUG_USEPREVIEW = 'usePreview';
-const JS_DEBUG_IPC_KEY = 'jsDebugIpcState';
-const NODE_DEBUG_SETTINGS = 'debug.node';
-const NODE_DEBUG_USEV3 = 'useV3';
-const AUTO_ATTACH_SETTING = 'autoAttach';
+const STORAGE_IPC = 'jsDebugIpcState';
-type AUTO_ATTACH_VALUES = 'disabled' | 'on' | 'off';
+const SETTING_SECTION = 'debug.javascript';
+const SETTING_STATE = 'autoAttachFilter';
+
+/**
+ * settings that, when changed, should cause us to refresh the state vars
+ */
+const SETTINGS_CAUSE_REFRESH = new Set(
+ ['autoAttachSmartPattern', SETTING_STATE].map(s => `${SETTING_SECTION}.${s}`),
+);
const enum State {
- Disabled,
- Off,
- OnWithJsDebug,
- OnWithNodeDebug,
+ Disabled = 'disabled',
+ OnlyWithFlag = 'onlyWithFlag',
+ Smart = 'smart',
+ Always = 'always',
}
-// on activation this feature is always disabled...
-let currentState = Promise.resolve({ state: State.Disabled, transitionData: null as unknown });
+let currentState: Promise<{ context: vscode.ExtensionContext; state: State | null }>;
let statusItem: vscode.StatusBarItem | undefined; // and there is no status bar item
+let server: Promise | undefined; // auto attach server
export function activate(context: vscode.ExtensionContext): void {
- context.subscriptions.push(vscode.commands.registerCommand(TOGGLE_COMMAND, toggleAutoAttachSetting));
-
- // settings that can result in the "state" being changed--on/off/disable or useV3 toggles
- const effectualConfigurationSettings = [
- `${NODE_DEBUG_SETTINGS}.${AUTO_ATTACH_SETTING}`,
- `${NODE_DEBUG_SETTINGS}.${NODE_DEBUG_USEV3}`,
- `${JS_DEBUG_SETTINGS}.${JS_DEBUG_USEPREVIEW}`,
- ];
+ currentState = Promise.resolve({ context, state: null });
context.subscriptions.push(
- vscode.workspace.onDidChangeConfiguration((e) => {
- if (effectualConfigurationSettings.some(setting => e.affectsConfiguration(setting))) {
- updateAutoAttach(context);
- }
- })
+ vscode.commands.registerCommand(TOGGLE_COMMAND, toggleAutoAttachSetting),
);
- updateAutoAttach(context);
+ context.subscriptions.push(
+ vscode.workspace.onDidChangeConfiguration(e => {
+ // Whenever a setting is changed, disable auto attach, and re-enable
+ // it (if necessary) to refresh variables.
+ if (
+ e.affectsConfiguration(`${SETTING_SECTION}.${SETTING_STATE}`) ||
+ [...SETTINGS_CAUSE_REFRESH].some(setting => e.affectsConfiguration(setting))
+ ) {
+ updateAutoAttach(State.Disabled);
+ updateAutoAttach(readCurrentState());
+ }
+ }),
+ );
+
+ updateAutoAttach(readCurrentState());
}
export async function deactivate(): Promise {
- const { state, transitionData } = await currentState;
- await transitions[state].exit?.(transitionData);
+ await destroyAttachServer();
}
-function toggleAutoAttachSetting() {
- const conf = vscode.workspace.getConfiguration(NODE_DEBUG_SETTINGS);
- if (conf) {
- let value = conf.get(AUTO_ATTACH_SETTING);
- if (value === 'on') {
- value = 'off';
- } else {
- value = 'on';
- }
+function getDefaultScope(info: ReturnType) {
+ if (!info) {
+ return vscode.ConfigurationTarget.Global;
+ } else if (info.workspaceFolderValue) {
+ return vscode.ConfigurationTarget.WorkspaceFolder;
+ } else if (info.workspaceValue) {
+ return vscode.ConfigurationTarget.Workspace;
+ } else if (info.globalValue) {
+ return vscode.ConfigurationTarget.Global;
+ }
- const info = conf.inspect(AUTO_ATTACH_SETTING);
- let target: vscode.ConfigurationTarget = vscode.ConfigurationTarget.Global;
- if (info) {
- if (info.workspaceFolderValue) {
- target = vscode.ConfigurationTarget.WorkspaceFolder;
- } else if (info.workspaceValue) {
- target = vscode.ConfigurationTarget.Workspace;
- } else if (info.globalValue) {
- target = vscode.ConfigurationTarget.Global;
- } else if (info.defaultValue) {
- // setting not yet used: store setting in workspace
- if (vscode.workspace.workspaceFolders) {
- target = vscode.ConfigurationTarget.Workspace;
- }
- }
- }
- conf.update(AUTO_ATTACH_SETTING, value, target);
+ return vscode.ConfigurationTarget.Global;
+}
+
+type PickResult = { state: State } | { scope: vscode.ConfigurationTarget } | undefined;
+
+async function toggleAutoAttachSetting(scope?: vscode.ConfigurationTarget): Promise {
+ const section = vscode.workspace.getConfiguration(SETTING_SECTION);
+ scope = scope || getDefaultScope(section.inspect(SETTING_STATE));
+
+ const isGlobalScope = scope === vscode.ConfigurationTarget.Global;
+ const quickPick = vscode.window.createQuickPick();
+ const current = readCurrentState();
+
+ quickPick.items = [State.Always, State.Smart, State.OnlyWithFlag, State.Disabled].map(state => ({
+ state,
+ label: TEXT_STATE_LABEL[state],
+ description: TEXT_STATE_DESCRIPTION[state],
+ alwaysShow: true,
+ }));
+
+ quickPick.activeItems = quickPick.items.filter(i => i.state === current);
+ quickPick.title = isGlobalScope ? TEXT_TOGGLE_GLOBAL : TEXT_TOGGLE_WORKSPACE;
+ quickPick.buttons = [
+ {
+ iconPath: new vscode.ThemeIcon(isGlobalScope ? 'folder' : 'globe'),
+ tooltip: isGlobalScope ? TEXT_TOGGLE_WORKSPACE : TEXT_TOGGLE_GLOBAL,
+ },
+ ];
+
+ quickPick.show();
+
+ const result = await new Promise(resolve => {
+ quickPick.onDidAccept(() => resolve(quickPick.selectedItems[0]));
+ quickPick.onDidHide(() => resolve(undefined));
+ quickPick.onDidTriggerButton(() => {
+ resolve({
+ scope: isGlobalScope
+ ? vscode.ConfigurationTarget.Workspace
+ : vscode.ConfigurationTarget.Global,
+ });
+ });
+ });
+
+ quickPick.dispose();
+
+ if (!result) {
+ return;
+ }
+
+ if ('scope' in result) {
+ return await toggleAutoAttachSetting(result.scope);
+ }
+
+ if ('state' in result) {
+ section.update(SETTING_STATE, result.state, scope);
}
}
function readCurrentState(): State {
- const nodeConfig = vscode.workspace.getConfiguration(NODE_DEBUG_SETTINGS);
- const autoAttachState = nodeConfig.get(AUTO_ATTACH_SETTING);
- switch (autoAttachState) {
- case 'off':
- return State.Off;
- case 'on':
- const jsDebugConfig = vscode.workspace.getConfiguration(JS_DEBUG_SETTINGS);
- const useV3 = nodeConfig.get(NODE_DEBUG_USEV3) || jsDebugConfig.get(JS_DEBUG_USEPREVIEW);
- return useV3 ? State.OnWithJsDebug : State.OnWithNodeDebug;
- case 'disabled':
- default:
- return State.Disabled;
- }
+ const section = vscode.workspace.getConfiguration(SETTING_SECTION);
+ return section.get(SETTING_STATE) ?? State.Disabled;
}
/**
@@ -113,7 +177,7 @@ function ensureStatusBarExists(context: vscode.ExtensionContext) {
statusItem.command = TOGGLE_COMMAND;
statusItem.tooltip = localize(
'status.tooltip.auto.attach',
- 'Automatically attach to node.js processes in debug mode'
+ 'Automatically attach to node.js processes in debug mode',
);
statusItem.show();
context.subscriptions.push(statusItem);
@@ -124,101 +188,126 @@ function ensureStatusBarExists(context: vscode.ExtensionContext) {
return statusItem;
}
+async function clearJsDebugAttachState(context: vscode.ExtensionContext) {
+ await context.workspaceState.update(STORAGE_IPC, undefined);
+ await vscode.commands.executeCommand('extension.js-debug.clearAutoAttachVariables');
+ await destroyAttachServer();
+}
+
+/**
+ * Turns auto attach on, and returns the server auto attach is listening on
+ * if it's successful.
+ */
+async function createAttachServer(context: vscode.ExtensionContext) {
+ const ipcAddress = await getIpcAddress(context);
+ if (!ipcAddress) {
+ return undefined;
+ }
+
+ server = createServerInner(ipcAddress).catch(err => {
+ console.error(err);
+ return undefined;
+ });
+
+ return await server;
+}
+
+const createServerInner = async (ipcAddress: string) => {
+ try {
+ return await createServerInstance(ipcAddress);
+ } catch (e) {
+ // On unix/linux, the file can 'leak' if the process exits unexpectedly.
+ // If we see this, try to delete the file and then listen again.
+ await fs.unlink(ipcAddress).catch(() => undefined);
+ return await createServerInstance(ipcAddress);
+ }
+};
+
+const createServerInstance = (ipcAddress: string) =>
+ new Promise((resolve, reject) => {
+ const s = createServer(socket => {
+ let data: Buffer[] = [];
+ socket.on('data', async chunk => {
+ if (chunk[chunk.length - 1] !== 0) {
+ // terminated with NUL byte
+ data.push(chunk);
+ return;
+ }
+
+ data.push(chunk.slice(0, -1));
+
+ try {
+ await vscode.commands.executeCommand(
+ 'extension.js-debug.autoAttachToProcess',
+ JSON.parse(Buffer.concat(data).toString()),
+ );
+ socket.write(Buffer.from([0]));
+ } catch (err) {
+ socket.write(Buffer.from([1]));
+ console.error(err);
+ }
+ });
+ })
+ .on('error', reject)
+ .listen(ipcAddress, () => resolve(s));
+ });
+
+/**
+ * Destroys the auto-attach server, if it's running.
+ */
+async function destroyAttachServer() {
+ const instance = await server;
+ if (instance) {
+ await new Promise(r => instance.close(r));
+ }
+}
+
interface CachedIpcState {
ipcAddress: string;
jsDebugPath: string;
-}
-
-interface StateTransition {
- exit?(stateData: StateData): Promise | void;
- enter?(context: vscode.ExtensionContext): Promise | StateData;
+ settingsValue: string;
}
/**
* Map of logic that happens when auto attach states are entered and exited.
* All state transitions are queued and run in order; promises are awaited.
*/
-const transitions: { [S in State]: StateTransition } = {
- [State.Disabled]: {
- async enter(context) {
- statusItem?.hide();
-
- // If there was js-debug state set, clear it and clear any environment variables
- if (context.workspaceState.get(JS_DEBUG_IPC_KEY)) {
- await context.workspaceState.update(JS_DEBUG_IPC_KEY, undefined);
- await vscode.commands.executeCommand('extension.js-debug.clearAutoAttachVariables');
- }
- },
+const transitions: { [S in State]: (context: vscode.ExtensionContext) => Promise } = {
+ async [State.Disabled](context) {
+ await clearJsDebugAttachState(context);
+ statusItem?.hide();
},
- [State.Off]: {
- enter(context) {
- const statusItem = ensureStatusBarExists(context);
- statusItem.text = OFF_TEXT;
- },
+ async [State.OnlyWithFlag](context) {
+ await createAttachServer(context);
+ const statusItem = ensureStatusBarExists(context);
+ statusItem.text = TEXT_WITH_FLAG;
},
- [State.OnWithNodeDebug]: {
- async enter(context) {
- const statusItem = ensureStatusBarExists(context);
- const vscode_pid = process.env['VSCODE_PID'];
- const rootPid = vscode_pid ? parseInt(vscode_pid) : 0;
- await vscode.commands.executeCommand('extension.node-debug.startAutoAttach', rootPid);
- statusItem.text = ON_TEXT;
- },
-
- async exit() {
- await vscode.commands.executeCommand('extension.node-debug.stopAutoAttach');
- },
+ async [State.Smart](context) {
+ await createAttachServer(context);
+ const statusItem = ensureStatusBarExists(context);
+ statusItem.text = TEXT_SMART;
},
- [State.OnWithJsDebug]: {
- async enter(context) {
- const ipcAddress = await getIpcAddress(context);
- const server = await new Promise((resolve, reject) => {
- const s = createServer((socket) => {
- let data: Buffer[] = [];
- socket.on('data', (chunk) => data.push(chunk));
- socket.on('end', () =>
- vscode.commands.executeCommand(
- 'extension.js-debug.autoAttachToProcess',
- JSON.parse(Buffer.concat(data).toString())
- )
- );
- })
- .on('error', reject)
- .listen(ipcAddress, () => resolve(s));
- });
-
- const statusItem = ensureStatusBarExists(context);
- statusItem.text = ON_TEXT;
- return server;
- },
-
- async exit(server: Server) {
- // we don't need to clear the environment variables--the bootloader will
- // no-op if the debug server is closed. This prevents having to reload
- // terminals if users want to turn it back on.
- await new Promise((resolve) => server.close(resolve));
- },
+ async [State.Always](context) {
+ await createAttachServer(context);
+ const statusItem = ensureStatusBarExists(context);
+ statusItem.text = TEXT_ALWAYS;
},
};
/**
* Updates the auto attach feature based on the user or workspace setting
*/
-function updateAutoAttach(context: vscode.ExtensionContext) {
- const newState = readCurrentState();
-
- currentState = currentState.then(async ({ state: oldState, transitionData }) => {
+function updateAutoAttach(newState: State) {
+ currentState = currentState.then(async ({ context, state: oldState }) => {
if (newState === oldState) {
- return { state: oldState, transitionData };
+ return { context, state: oldState };
}
- await transitions[oldState].exit?.(transitionData);
- const newData = await transitions[newState].enter?.(context);
-
- return { state: newState, transitionData: newData };
+ await transitions[newState](context);
+ return { context, state: newState };
});
}
@@ -230,24 +319,45 @@ async function getIpcAddress(context: vscode.ExtensionContext) {
// Iff the `cachedData` is present, the js-debug registered environment
// variables for this workspace--cachedData is set after successfully
// invoking the attachment command.
- const cachedIpc = context.workspaceState.get(JS_DEBUG_IPC_KEY);
+ const cachedIpc = context.workspaceState.get(STORAGE_IPC);
// We invalidate the IPC data if the js-debug path changes, since that
// indicates the extension was updated or reinstalled and the
// environment variables will have been lost.
// todo: make a way in the API to read environment data directly without activating js-debug?
- const jsDebugPath = vscode.extensions.getExtension('ms-vscode.js-debug-nightly')?.extensionPath
- || vscode.extensions.getExtension('ms-vscode.js-debug')?.extensionPath;
+ const jsDebugPath =
+ vscode.extensions.getExtension('ms-vscode.js-debug-nightly')?.extensionPath ||
+ vscode.extensions.getExtension('ms-vscode.js-debug')?.extensionPath;
- if (cachedIpc && cachedIpc.jsDebugPath === jsDebugPath) {
+ const settingsValue = getJsDebugSettingKey();
+ if (cachedIpc?.jsDebugPath === jsDebugPath && cachedIpc?.settingsValue === settingsValue) {
return cachedIpc.ipcAddress;
}
- const result = await vscode.commands.executeCommand<{ ipcAddress: string; }>(
- 'extension.js-debug.setAutoAttachVariables'
+ const result = await vscode.commands.executeCommand<{ ipcAddress: string }>(
+ 'extension.js-debug.setAutoAttachVariables',
+ cachedIpc?.ipcAddress,
);
+ if (!result) {
+ return;
+ }
+
+ const ipcAddress = result.ipcAddress;
+ await context.workspaceState.update(STORAGE_IPC, {
+ ipcAddress,
+ jsDebugPath,
+ settingsValue,
+ } as CachedIpcState);
- const ipcAddress = result!.ipcAddress;
- await context.workspaceState.update(JS_DEBUG_IPC_KEY, { ipcAddress, jsDebugPath });
return ipcAddress;
}
+
+function getJsDebugSettingKey() {
+ let o: { [key: string]: unknown } = {};
+ const config = vscode.workspace.getConfiguration(SETTING_SECTION);
+ for (const setting of SETTINGS_CAUSE_REFRESH) {
+ o[setting] = config.get(setting);
+ }
+
+ return JSON.stringify(o);
+}
diff --git a/extensions/debug-server-ready/package.json b/extensions/debug-server-ready/package.json
index abb9a683eba..1116990646f 100644
--- a/extensions/debug-server-ready/package.json
+++ b/extensions/debug-server-ready/package.json
@@ -39,8 +39,7 @@
"openExternally"
],
"enumDescriptions": [
- "%debug.server.ready.action.openExternally.description%",
- "%debug.server.ready.action.debugWithChrome.description%"
+ "%debug.server.ready.action.openExternally.description%"
],
"markdownDescription": "%debug.server.ready.action.description%",
"default": "openExternally"
@@ -71,7 +70,6 @@
"debugWithChrome"
],
"enumDescriptions": [
- "%debug.server.ready.action.openExternally.description%",
"%debug.server.ready.action.debugWithChrome.description%"
],
"markdownDescription": "%debug.server.ready.action.description%",
@@ -93,6 +91,39 @@
"default": "${workspaceFolder}"
}
}
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "markdownDescription": "%debug.server.ready.serverReadyAction.description%",
+ "default": {
+ "action": "startDebugging",
+ "name": ""
+ },
+ "required": ["name"],
+ "properties": {
+ "action": {
+ "type": "string",
+ "enum": [
+ "startDebugging"
+ ],
+ "enumDescriptions": [
+ "%debug.server.ready.action.startDebugging.description%"
+ ],
+ "markdownDescription": "%debug.server.ready.action.description%",
+ "default": "startDebugging"
+ },
+ "pattern": {
+ "type": "string",
+ "markdownDescription": "%debug.server.ready.pattern.description%",
+ "default": "listening on port ([0-9]+)"
+ },
+ "name": {
+ "type": "string",
+ "markdownDescription": "%debug.server.ready.debugConfigName.description%",
+ "default": "Launch Browser"
+ }
+ }
}
]
}
diff --git a/extensions/debug-server-ready/package.nls.json b/extensions/debug-server-ready/package.nls.json
index e9d2705cfc9..c5212d7ee02 100644
--- a/extensions/debug-server-ready/package.nls.json
+++ b/extensions/debug-server-ready/package.nls.json
@@ -6,7 +6,9 @@
"debug.server.ready.action.description": "What to do with the URI when the server is ready.",
"debug.server.ready.action.openExternally.description": "Open URI externally with the default application.",
"debug.server.ready.action.debugWithChrome.description": "Start debugging with the 'Debugger for Chrome'.",
+ "debug.server.ready.action.startDebugging.description": "Run another launch configuration.",
"debug.server.ready.pattern.description": "Server is ready if this pattern appears on the debug console. The first capture group must include a URI or a port number.",
"debug.server.ready.uriFormat.description": "A format string used when constructing the URI from a port number. The first '%s' is substituted with the port number.",
- "debug.server.ready.webRoot.description": "Value passed to the debug configuration for the 'Debugger for Chrome'."
+ "debug.server.ready.webRoot.description": "Value passed to the debug configuration for the 'Debugger for Chrome'.",
+ "debug.server.ready.debugConfigName.description": "Name of the launch configuration to run."
}
diff --git a/extensions/debug-server-ready/src/extension.ts b/extensions/debug-server-ready/src/extension.ts
index 91e996d665b..19fc67322eb 100644
--- a/extensions/debug-server-ready/src/extension.ts
+++ b/extensions/debug-server-ready/src/extension.ts
@@ -16,9 +16,10 @@ const WEB_ROOT = '${workspaceFolder}';
interface ServerReadyAction {
pattern: string;
- action?: 'openExternally' | 'debugWithChrome';
+ action?: 'openExternally' | 'debugWithChrome' | 'startDebugging';
uriFormat?: string;
webRoot?: string;
+ name?: string;
}
class ServerReadyDetector extends vscode.Disposable {
@@ -146,18 +147,17 @@ class ServerReadyDetector extends vscode.Disposable {
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);
- }
+ vscode.debug.startDebugging(session.workspaceFolder, {
+ type: 'pwa-chrome',
+ name: 'Chrome Debug',
+ request: 'launch',
+ url: uri,
+ webRoot: args.webRoot || WEB_ROOT
+ });
+ break;
+
+ case 'startDebugging':
+ vscode.debug.startDebugging(session.workspaceFolder, args.name || 'unspecified');
break;
default:
diff --git a/extensions/docker/package.json b/extensions/docker/package.json
index c1b91dc283d..a1cc782d213 100644
--- a/extensions/docker/package.json
+++ b/extensions/docker/package.json
@@ -14,7 +14,8 @@
"id": "dockerfile",
"extensions": [ ".dockerfile", ".containerfile" ],
"filenames": [ "Dockerfile", "Containerfile" ],
- "aliases": [ "Dockerfile", "Containerfile" ],
+ "filenamePatterns": [ "Dockerfile.*", "Containerfile.*" ],
+ "aliases": [ "Docker", "Dockerfile", "Containerfile" ],
"configuration": "./language-configuration.json"
}],
"grammars": [{
diff --git a/extensions/emmet/.vscodeignore b/extensions/emmet/.vscodeignore
index 573d91ebe6b..8180a27356e 100644
--- a/extensions/emmet/.vscodeignore
+++ b/extensions/emmet/.vscodeignore
@@ -3,7 +3,8 @@ src/**
out/**
tsconfig.json
extension.webpack.config.js
+extension-browser.webpack.config.js
CONTRIBUTING.md
cgmanifest.json
yarn.lock
-.vscode
\ No newline at end of file
+.vscode
diff --git a/extensions/emmet/CONTRIBUTING.md b/extensions/emmet/CONTRIBUTING.md
index c6c334828c3..f8757a530be 100644
--- a/extensions/emmet/CONTRIBUTING.md
+++ b/extensions/emmet/CONTRIBUTING.md
@@ -2,7 +2,7 @@
Read the basics about extension authoring from [Extending Visual Studio Code](https://code.visualstudio.com/docs/extensions/overview)
-- Read [Build and Run VS Code from Source](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#build-and-run-from-source) to get a local dev set up running for VS Code
+- Read [Build and Run VS Code from Source](https://github.com/microsoft/vscode/wiki/How-to-Contribute#build-and-run-from-source) to get a local dev set up running for VS Code
- Open the `extensions/emmet` folder in the vscode repo in VS Code
- Press F5 to start debugging
@@ -10,5 +10,5 @@ Read the basics about extension authoring from [Extending Visual Studio Code](ht
Tests for Emmet extension are run as integration tests as part of VS Code.
-- Read [Build and Run VS Code from Source](https://github.com/Microsoft/vscode/wiki/How-to-Contribute#build-and-run-from-source) to get a local dev set up running for VS Code
-- Run `./scripts/test-integration.sh` to run all the integrations tests that include the Emmet tests.
\ No newline at end of file
+- Read [Build and Run VS Code from Source](https://github.com/microsoft/vscode/wiki/How-to-Contribute#build-and-run-from-source) to get a local dev set up running for VS Code
+- Run `./scripts/test-integration.sh` to run all the integrations tests that include the Emmet tests.
diff --git a/extensions/emmet/README.md b/extensions/emmet/README.md
index b755345f787..e3a28931166 100644
--- a/extensions/emmet/README.md
+++ b/extensions/emmet/README.md
@@ -6,4 +6,4 @@
See [Emmet in Visual Studio Code](https://code.visualstudio.com/docs/editor/emmet) to learn about the features of this extension.
-Please read the [CONTRIBUTING.md](https://github.com/Microsoft/vscode/blob/master/extensions/emmet/CONTRIBUTING.md) file to learn how to contribute to this extension.
\ No newline at end of file
+Please read the [CONTRIBUTING.md](https://github.com/microsoft/vscode/blob/master/extensions/emmet/CONTRIBUTING.md) file to learn how to contribute to this extension.
diff --git a/src/vs/code/electron-browser/issue/issueReporter.js b/extensions/emmet/extension-browser.webpack.config.js
similarity index 56%
rename from src/vs/code/electron-browser/issue/issueReporter.js
rename to extensions/emmet/extension-browser.webpack.config.js
index 5d11dd15ae4..9fc8e4817a5 100644
--- a/src/vs/code/electron-browser/issue/issueReporter.js
+++ b/extensions/emmet/extension-browser.webpack.config.js
@@ -4,10 +4,19 @@
*--------------------------------------------------------------------------------------------*/
//@ts-check
+
'use strict';
-const bootstrapWindow = require('../../../../bootstrap-window');
+const withBrowserDefaults
+ = require('../shared.webpack.config').browser;
+
+module.exports = withBrowserDefaults({
+ context: __dirname,
+ entry: {
+ extension: './src/browser/emmetBrowserMain.ts'
+ },
+ output: {
+ filename: 'emmetBrowserMain.js'
+ }
+});
-bootstrapWindow.load(['vs/code/electron-browser/issue/issueReporterMain'], function (issueReporter, configuration) {
- issueReporter.startup(configuration);
-}, { forceEnableDeveloperKeybindings: true, disallowReloadKeybinding: true });
diff --git a/extensions/emmet/extension.webpack.config.js b/extensions/emmet/extension.webpack.config.js
index d5064ef4517..1176314bb1b 100644
--- a/extensions/emmet/extension.webpack.config.js
+++ b/extensions/emmet/extension.webpack.config.js
@@ -7,14 +7,17 @@
'use strict';
+const path = require('path');
+
const withDefaults = require('../shared.webpack.config');
module.exports = withDefaults({
context: __dirname,
entry: {
- extension: './src/extension.ts',
- },
- externals: {
- 'vscode-emmet-helper': 'commonjs vscode-emmet-helper',
+ extension: './src/node/emmetNodeMain.ts',
},
+ output: {
+ path: path.join(__dirname, 'dist', 'node'),
+ filename: 'emmetNodeMain.js'
+ }
});
diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json
index fc149b28e54..fbb17884ad9 100644
--- a/extensions/emmet/package.json
+++ b/extensions/emmet/package.json
@@ -14,7 +14,7 @@
],
"repository": {
"type": "git",
- "url": "https://github.com/Microsoft/vscode-emmet"
+ "url": "https://github.com/microsoft/vscode-emmet"
},
"activationEvents": [
"*",
@@ -24,7 +24,8 @@
"onLanguage:scss",
"onLanguage:less"
],
- "main": "./out/extension",
+ "main": "./out/node/emmetNodeMain",
+ "browser": "./dist/browser/emmetBrowserMain",
"contributes": {
"configuration": {
"type": "object",
@@ -49,6 +50,9 @@
},
"emmet.includeLanguages": {
"type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
"default": {},
"markdownDescription": "%emmetIncludeLanguages%"
},
@@ -343,96 +347,74 @@
"menus": {
"commandPalette": [
{
- "command": "editor.emmet.action.wrapIndividualLinesWithAbbreviation",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.wrapIndividualLinesWithAbbreviation"
},
{
- "command": "editor.emmet.action.wrapWithAbbreviation",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.wrapWithAbbreviation"
},
{
- "command": "editor.emmet.action.removeTag",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.removeTag"
},
{
- "command": "editor.emmet.action.updateTag",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.updateTag"
},
{
- "command": "editor.emmet.action.matchTag",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.matchTag"
},
{
- "command": "editor.emmet.action.balanceIn",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.balanceIn"
},
{
- "command": "editor.emmet.action.balanceOut",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.balanceOut"
},
{
- "command": "editor.emmet.action.prevEditPoint",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.prevEditPoint"
},
{
- "command": "editor.emmet.action.nextEditPoint",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.nextEditPoint"
},
{
- "command": "editor.emmet.action.mergeLines",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.mergeLines"
},
{
- "command": "editor.emmet.action.selectPrevItem",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.selectPrevItem"
},
{
- "command": "editor.emmet.action.selectNextItem",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.selectNextItem"
},
{
- "command": "editor.emmet.action.splitJoinTag",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.splitJoinTag"
},
{
- "command": "editor.emmet.action.toggleComment",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.toggleComment"
},
{
- "command": "editor.emmet.action.evaluateMathExpression",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.evaluateMathExpression"
},
{
"command": "editor.emmet.action.updateImageSize",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "when": "resourceScheme =~ /^file$/"
},
{
- "command": "editor.emmet.action.incrementNumberByOneTenth",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.incrementNumberByOneTenth"
},
{
- "command": "editor.emmet.action.incrementNumberByOne",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.incrementNumberByOne"
},
{
- "command": "editor.emmet.action.incrementNumberByTen",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.incrementNumberByTen"
},
{
- "command": "editor.emmet.action.decrementNumberByOneTenth",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.decrementNumberByOneTenth"
},
{
- "command": "editor.emmet.action.decrementNumberByOne",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.decrementNumberByOne"
},
{
- "command": "editor.emmet.action.decrementNumberByTen",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.decrementNumberByTen"
},
{
- "command": "editor.emmet.action.reflectCSSValue",
- "when": "resourceScheme =~ /^untitled$|^file$/"
+ "command": "editor.emmet.action.reflectCSSValue"
}
]
}
@@ -453,7 +435,7 @@
"@emmetio/html-matcher": "^0.3.3",
"@emmetio/math-expression": "^0.1.1",
"image-size": "^0.5.2",
- "vscode-emmet-helper": "^1.2.17",
+ "vscode-emmet-helper": "~2.0.0",
"vscode-html-languageservice": "^3.0.3"
}
}
diff --git a/extensions/emmet/src/abbreviationActions.ts b/extensions/emmet/src/abbreviationActions.ts
index 53c724570aa..16dc7b61d6d 100644
--- a/extensions/emmet/src/abbreviationActions.ts
+++ b/extensions/emmet/src/abbreviationActions.ts
@@ -5,7 +5,7 @@
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';
+import { getEmmetHelper, getNode, getInnerRange, getMappingForIncludedLanguages, parseDocument, validate, getEmmetConfiguration, isStyleSheet, getEmmetMode, parsePartialStylesheet, isStyleAttribute, getEmbeddedCssNodeIfAny, allowedMimeTypesInScriptTag, toLSTextDocument } from './util';
const trimRegex = /[\u00a0]*[\d#\-\*\u2022]+\.?/;
const hexColorRegex = /^#[\da-fA-F]{0,6}$/;
@@ -66,7 +66,7 @@ function doWrapping(individualLines: boolean, args: any) {
const helper = getEmmetHelper();
// Fetch general information for the succesive expansions. i.e. the ranges to replace and its contents
- let rangesToReplace: PreviewRangesWithContent[] = editor.selections.sort((a: vscode.Selection, b: vscode.Selection) => { return a.start.compareTo(b.start); }).map(selection => {
+ const rangesToReplace: PreviewRangesWithContent[] = editor.selections.sort((a: vscode.Selection, b: vscode.Selection) => { return a.start.compareTo(b.start); }).map(selection => {
let rangeToReplace: vscode.Range = selection.isReversed ? new vscode.Range(selection.active, selection.anchor) : selection;
if (!rangeToReplace.isSingleLine && rangeToReplace.end.character === 0) {
const previousLine = rangeToReplace.end.line - 1;
@@ -88,7 +88,7 @@ function doWrapping(individualLines: boolean, args: any) {
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);
+ const textToReplace = editor.document.getText(rangeToReplace);
if (individualLines) {
textToWrapInPreview = textToReplace.split('\n').map(x => x.trim());
} else {
@@ -144,7 +144,7 @@ function doWrapping(individualLines: boolean, args: any) {
const oldPreviewLines = oldPreviewRange.end.line - oldPreviewRange.start.line + 1;
const newLinesInserted = expandedTextLines.length - oldPreviewLines;
- let newPreviewLineStart = oldPreviewRange.start.line + totalLinesInserted;
+ const newPreviewLineStart = oldPreviewRange.start.line + totalLinesInserted;
let newPreviewStart = oldPreviewRange.start.character;
const newPreviewLineEnd = oldPreviewRange.end.line + totalLinesInserted + newLinesInserted;
let newPreviewEnd = expandedTextLines[expandedTextLines.length - 1].length;
@@ -177,19 +177,19 @@ function doWrapping(individualLines: boolean, args: any) {
return inPreview ? revertPreview().then(() => { return false; }) : Promise.resolve(inPreview);
}
- let extractedResults = helper.extractAbbreviationFromText(inputAbbreviation);
+ const extractedResults = helper.extractAbbreviationFromText(inputAbbreviation);
if (!extractedResults) {
return Promise.resolve(inPreview);
} else if (extractedResults.abbreviation !== inputAbbreviation) {
// Not clear what should we do in this case. Warn the user? How?
}
- let { abbreviation, filter } = extractedResults;
+ const { abbreviation, filter } = extractedResults;
if (definitive) {
const revertPromise = inPreview ? revertPreview() : Promise.resolve();
return revertPromise.then(() => {
const expandAbbrList: ExpandAbbreviationInput[] = rangesToReplace.map(rangesAndContent => {
- let rangeToReplace = rangesAndContent.originalRange;
+ const rangeToReplace = rangesAndContent.originalRange;
let textToWrap: string[];
if (individualLines) {
textToWrap = rangesAndContent.textToWrapInPreview;
@@ -270,16 +270,17 @@ export function expandEmmetAbbreviation(args: any): Thenable {
+ const getAbbreviation = (document: vscode.TextDocument, selection: vscode.Selection, position: vscode.Position, syntax: string): [vscode.Range | null, string, string] => {
+ position = document.validatePosition(position);
let rangeToReplace: vscode.Range = selection;
let abbr = document.getText(rangeToReplace);
if (!rangeToReplace.isEmpty) {
- let extractedResults = helper.extractAbbreviationFromText(abbr);
+ const extractedResults = helper.extractAbbreviationFromText(abbr);
if (extractedResults) {
return [rangeToReplace, extractedResults.abbreviation, extractedResults.filter];
}
@@ -292,23 +293,23 @@ export function expandEmmetAbbreviation(args: any): Thenable explicitly
// else we will end up with <
if (syntax === 'html') {
- let matches = textTillPosition.match(/<(\w+)$/);
+ const matches = textTillPosition.match(/<(\w+)$/);
if (matches) {
abbr = matches[1];
rangeToReplace = new vscode.Range(position.translate(0, -(abbr.length + 1)), position);
return [rangeToReplace, abbr, ''];
}
}
- let extractedResults = helper.extractAbbreviation(editor.document, position, false);
+ const extractedResults = helper.extractAbbreviation(toLSTextDocument(editor.document), position, { lookAhead: false });
if (!extractedResults) {
return [null, '', ''];
}
- let { abbreviationRange, abbreviation, filter } = extractedResults;
+ const { abbreviationRange, abbreviation, filter } = extractedResults;
return [new vscode.Range(abbreviationRange.start.line, abbreviationRange.start.character, abbreviationRange.end.line, abbreviationRange.end.character), abbreviation, filter];
};
- let selectionsInReverseOrder = editor.selections.slice(0);
+ const selectionsInReverseOrder = editor.selections.slice(0);
selectionsInReverseOrder.sort((a, b) => {
const posA = a.isReversed ? a.anchor : a.active;
const posB = b.isReversed ? b.anchor : b.active;
@@ -321,7 +322,7 @@ export function expandEmmetAbbreviation(args: any): Thenable 1000) {
rootNode = parsePartialStylesheet(editor.document, editor.selection.isReversed ? editor.selection.anchor : editor.selection.active);
} else {
@@ -332,8 +333,8 @@ export function expandEmmetAbbreviation(args: any): Thenable {
- let position = selection.isReversed ? selection.anchor : selection.active;
- let [rangeToReplace, abbreviation, filter] = getAbbreviation(editor.document, selection, position, syntax);
+ const position = selection.isReversed ? selection.anchor : selection.active;
+ const [rangeToReplace, abbreviation, filter] = getAbbreviation(editor.document, selection, position, syntax);
if (!rangeToReplace) {
return;
}
@@ -402,7 +403,7 @@ export function isValidLocationForEmmetAbbreviation(document: vscode.TextDocumen
return true;
}
- // Fix for https://github.com/Microsoft/vscode/issues/34162
+ // Fix for https://github.com/microsoft/vscode/issues/34162
// Other than sass, stylus, we can make use of the terminator tokens to validate position
if (syntax !== 'sass' && syntax !== 'stylus' && currentNode.type === 'property') {
@@ -446,7 +447,7 @@ export function isValidLocationForEmmetAbbreviation(document: vscode.TextDocumen
return true;
}
- // Workaround for https://github.com/Microsoft/vscode/30188
+ // Workaround for https://github.com/microsoft/vscode/30188
// The line above the rule selector is considered as part of the selector by the css-parser
// But we should assume it is a valid location for css properties under the parent rule
if (currentCssNode.parent
@@ -487,12 +488,12 @@ export function isValidLocationForEmmetAbbreviation(document: vscode.TextDocumen
const innerRange = getInnerRange(currentHtmlNode);
- // Fix for https://github.com/Microsoft/vscode/issues/28829
+ // Fix for https://github.com/microsoft/vscode/issues/28829
if (!innerRange || !innerRange.contains(position)) {
return false;
}
- // Fix for https://github.com/Microsoft/vscode/issues/35128
+ // Fix for https://github.com/microsoft/vscode/issues/35128
// Find the position up till where we will backtrack looking for unescaped < or >
// to decide if current position is valid for emmet expansion
start = innerRange.start;
@@ -535,7 +536,7 @@ export function isValidLocationForEmmetAbbreviation(document: vscode.TextDocumen
i--;
continue;
}
- // Fix for https://github.com/Microsoft/vscode/issues/55411
+ // Fix for https://github.com/microsoft/vscode/issues/55411
// A space is not a valid character right after < in a tag name.
if (/\s/.test(char) && textToBackTrack[i] === startAngle) {
i--;
@@ -577,7 +578,7 @@ function expandAbbreviationInRange(editor: vscode.TextEditor, expandAbbrList: Ex
// Snippet to replace at multiple cursors are not the same
// `editor.insertSnippet` will have to be called for each instance separately
// We will not be able to maintain multiple cursors after snippet insertion
- let insertPromises: Thenable[] = [];
+ const insertPromises: Thenable[] = [];
if (!insertSameSnippet) {
expandAbbrList.sort((a: ExpandAbbreviationInput, b: ExpandAbbreviationInput) => { return b.rangeToReplace.start.compareTo(a.rangeToReplace.start); }).forEach((expandAbbrInput: ExpandAbbreviationInput) => {
let expandedText = expandAbbr(expandAbbrInput);
@@ -595,8 +596,8 @@ function expandAbbreviationInRange(editor: vscode.TextEditor, expandAbbrList: Ex
// We can pass all ranges to `editor.insertSnippet` in a single call so that
// all cursors are maintained after snippet insertion
const anyExpandAbbrInput = expandAbbrList[0];
- let expandedText = expandAbbr(anyExpandAbbrInput);
- let allRanges = expandAbbrList.map(value => {
+ const expandedText = expandAbbr(anyExpandAbbrInput);
+ const allRanges = expandAbbrList.map(value => {
return new vscode.Range(value.rangeToReplace.start.line, value.rangeToReplace.start.character, value.rangeToReplace.end.line, value.rangeToReplace.end.character);
});
if (expandedText) {
@@ -605,10 +606,29 @@ function expandAbbreviationInRange(editor: vscode.TextEditor, expandAbbrList: Ex
return Promise.resolve(false);
}
+/*
+* Walks the tree rooted at root and apply function fn on each node.
+* if fn return false at any node, the further processing of tree is stopped.
+*/
+function walk(root: any, fn: ((node: any) => boolean)): boolean {
+ let ctx = root;
+ while (ctx) {
+
+ const next = ctx.next;
+ if (fn(ctx) === false || walk(ctx.firstChild, fn) === false) {
+ return false;
+ }
+
+ ctx = next;
+ }
+
+ return true;
+}
+
/**
* Expands abbreviation as detailed in given input.
*/
-function expandAbbr(input: ExpandAbbreviationInput): string {
+function expandAbbr(input: ExpandAbbreviationInput): string | undefined {
const helper = getEmmetHelper();
const expandOptions = helper.getExpandOptions(input.syntax, getEmmetConfiguration(input.syntax), input.filter);
@@ -620,7 +640,7 @@ function expandAbbr(input: ExpandAbbreviationInput): string {
}
expandOptions['text'] = input.textToWrap;
- // Below fixes https://github.com/Microsoft/vscode/issues/29898
+ // Below fixes https://github.com/microsoft/vscode/issues/29898
// With this, Emmet formats inline elements as block elements
// ensuring the wrapped multi line text does not get merged to a single line
if (!input.rangeToReplace.isSingleLine) {
@@ -633,7 +653,7 @@ function expandAbbr(input: ExpandAbbreviationInput): string {
// Expand the abbreviation
if (input.textToWrap) {
- let parsedAbbr = helper.parseAbbreviation(input.abbreviation, expandOptions);
+ const parsedAbbr = helper.parseAbbreviation(input.abbreviation, expandOptions);
if (input.rangeToReplace.isSingleLine && input.textToWrap.length === 1) {
// Fetch rightmost element in the parsed abbreviation (i.e the element that will contain the wrapped text).
@@ -647,6 +667,18 @@ function expandAbbr(input: ExpandAbbreviationInput): string {
wrappingNode.value = '\n\t' + wrappingNode.value + '\n';
}
}
+
+ // Below fixes https://github.com/microsoft/vscode/issues/78219
+ // walk the tree and remove tags for empty values
+ walk(parsedAbbr, node => {
+ if (node.name !== null && node.value === '' && !node.isSelfClosing && node.children.length === 0) {
+ node.name = '';
+ node.value = '\n';
+ }
+
+ return true;
+ });
+
expandedText = helper.expandAbbreviation(parsedAbbr, expandOptions);
// All $anyword would have been escaped by the emmet helper.
// Remove the escaping backslash from $TM_SELECTED_TEXT so that VS Code Snippet controller can treat it as a variable
diff --git a/src/typings/lib.array-ext.d.ts b/extensions/emmet/src/browser/emmetBrowserMain.ts
similarity index 58%
rename from src/typings/lib.array-ext.d.ts
rename to extensions/emmet/src/browser/emmetBrowserMain.ts
index 5a77b70a9f2..6ab165aa792 100644
--- a/src/typings/lib.array-ext.d.ts
+++ b/extensions/emmet/src/browser/emmetBrowserMain.ts
@@ -3,9 +3,9 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-interface ArrayConstructor {
- isArray(arg: ReadonlyArray | null | undefined): arg is ReadonlyArray;
- isArray(arg: Array | null | undefined): arg is Array;
- isArray(arg: any): arg is Array;
- isArray(arg: any): arg is Array;
-}
\ No newline at end of file
+import * as vscode from 'vscode';
+import { activateEmmetExtension } from '../emmetCommon';
+
+export function activate(context: vscode.ExtensionContext) {
+ activateEmmetExtension(context);
+}
diff --git a/extensions/emmet/src/defaultCompletionProvider.ts b/extensions/emmet/src/defaultCompletionProvider.ts
index d58e2c62a6c..9ac469af615 100644
--- a/extensions/emmet/src/defaultCompletionProvider.ts
+++ b/extensions/emmet/src/defaultCompletionProvider.ts
@@ -6,8 +6,8 @@
import * as vscode from 'vscode';
import { Node, Stylesheet } from 'EmmetNode';
import { isValidLocationForEmmetAbbreviation, getSyntaxFromArgs } from './abbreviationActions';
-import { getEmmetHelper, getMappingForIncludedLanguages, parsePartialStylesheet, getEmmetConfiguration, getEmmetMode, isStyleSheet, parseDocument, getNode, allowedMimeTypesInScriptTag, trimQuotes } from './util';
-import { getLanguageService, TextDocument, TokenType } from 'vscode-html-languageservice';
+import { getEmmetHelper, getMappingForIncludedLanguages, parsePartialStylesheet, getEmmetConfiguration, getEmmetMode, isStyleSheet, parseDocument, getNode, allowedMimeTypesInScriptTag, trimQuotes, toLSTextDocument } from './util';
+import { getLanguageService, TokenType, Range as LSRange } from 'vscode-html-languageservice';
export class DefaultCompletionItemProvider implements vscode.CompletionItemProvider {
@@ -50,19 +50,24 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
const mappedLanguages = getMappingForIncludedLanguages();
const isSyntaxMapped = mappedLanguages[document.languageId] ? true : false;
- let syntax = getEmmetMode((isSyntaxMapped ? mappedLanguages[document.languageId] : document.languageId), excludedLanguages);
+ let emmetMode = getEmmetMode((isSyntaxMapped ? mappedLanguages[document.languageId] : document.languageId), excludedLanguages);
- if (!syntax
+ if (!emmetMode
|| emmetConfig['showExpandedAbbreviation'] === 'never'
- || ((isSyntaxMapped || syntax === 'jsx') && emmetConfig['showExpandedAbbreviation'] !== 'always')) {
+ || ((isSyntaxMapped || emmetMode === 'jsx') && emmetConfig['showExpandedAbbreviation'] !== 'always')) {
return;
}
+ let syntax = emmetMode;
+
const helper = getEmmetHelper();
let validateLocation = syntax === 'html' || syntax === 'jsx' || syntax === 'xml';
let rootNode: Node | undefined = undefined;
let currentNode: Node | null = null;
+ const lsDoc = toLSTextDocument(document);
+ position = document.validatePosition(position);
+
if (document.languageId === 'html') {
if (context.triggerKind === vscode.CompletionTriggerKind.TriggerForIncompleteCompletions) {
switch (this.lastCompletionType) {
@@ -79,7 +84,7 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
}
if (validateLocation) {
- 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);
@@ -132,7 +137,10 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
}
}
- const extractAbbreviationResults = helper.extractAbbreviation(document, position, !isStyleSheet(syntax));
+ const expandOptions = isStyleSheet(syntax) ?
+ { lookAhead: false, syntax: 'stylesheet' } :
+ { lookAhead: true, syntax: 'markup' };
+ const extractAbbreviationResults = helper.extractAbbreviation(lsDoc, position, expandOptions);
if (!extractAbbreviationResults || !helper.isAbbreviationValid(syntax, extractAbbreviationResults.abbreviation)) {
return;
}
@@ -149,13 +157,13 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
- if (validateLocation && !isValidLocationForEmmetAbbreviation(document, rootNode, currentNode, syntax, position, extractAbbreviationResults.abbreviationRange)) {
+ if (validateLocation && !isValidLocationForEmmetAbbreviation(document, rootNode, currentNode, syntax, position, toRange(extractAbbreviationResults.abbreviationRange))) {
return;
}
let noiseCheckPromise: Thenable = Promise.resolve();
- // Fix for https://github.com/Microsoft/vscode/issues/32647
+ // Fix for https://github.com/microsoft/vscode/issues/32647
// Check for document symbols in js/ts/jsx/tsx and avoid triggering emmet for abbreviations of the form symbolName.sometext
// Presence of > or * or + in the abbreviation denotes valid abbreviation that should trigger emmet
if (!isStyleSheet(syntax) && (document.languageId === 'javascript' || document.languageId === 'javascriptreact' || document.languageId === 'typescript' || document.languageId === 'typescriptreact')) {
@@ -174,7 +182,7 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
return;
}
- let result = helper.doComplete(document, position, syntax, getEmmetConfiguration(syntax!));
+ let result = helper.doComplete(toLSTextDocument(document), position, syntax, getEmmetConfiguration(syntax!));
// https://github.com/microsoft/vscode/issues/86941
if (result && result.items && result.items.length === 1) {
@@ -207,3 +215,7 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi
});
}
}
+
+function toRange(lsRange: LSRange) {
+ return new vscode.Range(lsRange.start.line, lsRange.start.character, lsRange.end.line, lsRange.end.character);
+}
diff --git a/extensions/emmet/src/extension.ts b/extensions/emmet/src/emmetCommon.ts
similarity index 94%
rename from extensions/emmet/src/extension.ts
rename to extensions/emmet/src/emmetCommon.ts
index 4fe40db638b..b508b2a9fc8 100644
--- a/extensions/emmet/src/extension.ts
+++ b/extensions/emmet/src/emmetCommon.ts
@@ -17,11 +17,10 @@ import { fetchEditPoint } from './editPoint';
import { fetchSelectItem } from './selectItem';
import { evaluateMathExpression } from './evaluateMathExpression';
import { incrementDecrement } from './incrementDecrement';
-import { LANGUAGE_MODES, getMappingForIncludedLanguages, updateEmmetExtensionsPath } from './util';
-import { updateImageSize } from './updateImageSize';
+import { LANGUAGE_MODES, getMappingForIncludedLanguages, updateEmmetExtensionsPath, getPathBaseName } from './util';
import { reflectCssValue } from './reflectCssValue';
-export function activate(context: vscode.ExtensionContext) {
+export function activateEmmetExtension(context: vscode.ExtensionContext) {
registerCompletionProviders(context);
context.subscriptions.push(vscode.commands.registerCommand('editor.emmet.action.wrapWithAbbreviation', (args) => {
@@ -121,10 +120,6 @@ export function activate(context: vscode.ExtensionContext) {
return incrementDecrement(-10);
}));
- context.subscriptions.push(vscode.commands.registerCommand('editor.emmet.action.updateImageSize', () => {
- return updateImageSize();
- }));
-
context.subscriptions.push(vscode.commands.registerCommand('editor.emmet.action.reflectCSSValue', () => {
return reflectCssValue();
}));
@@ -139,6 +134,13 @@ export function activate(context: vscode.ExtensionContext) {
updateEmmetExtensionsPath();
}
}));
+
+ context.subscriptions.push(vscode.workspace.onDidSaveTextDocument((e) => {
+ const basefileName: string = getPathBaseName(e.fileName);
+ if (basefileName.startsWith('snippets') && basefileName.endsWith('.json')) {
+ updateEmmetExtensionsPath(true);
+ }
+ }));
}
/**
diff --git a/extensions/emmet/src/node/emmetNodeMain.ts b/extensions/emmet/src/node/emmetNodeMain.ts
new file mode 100644
index 00000000000..a0b403c68c5
--- /dev/null
+++ b/extensions/emmet/src/node/emmetNodeMain.ts
@@ -0,0 +1,19 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as vscode from 'vscode';
+import { homedir } from 'os';
+
+import { activateEmmetExtension } from '../emmetCommon';
+import { setHomeDir } from '../util';
+
+export function activate(context: vscode.ExtensionContext) {
+ context.subscriptions.push(vscode.commands.registerCommand('editor.emmet.action.updateImageSize', () => {
+ return import('../updateImageSize').then(uis => uis.updateImageSize());
+ }));
+
+ setHomeDir(vscode.Uri.file(homedir()));
+ activateEmmetExtension(context);
+}
diff --git a/extensions/emmet/src/selectItemHTML.ts b/extensions/emmet/src/selectItemHTML.ts
index fb9bedb6dbb..4af29cd7110 100644
--- a/extensions/emmet/src/selectItemHTML.ts
+++ b/extensions/emmet/src/selectItemHTML.ts
@@ -4,9 +4,8 @@
*--------------------------------------------------------------------------------------------*/
import * as vscode from 'vscode';
-import { getDeepestNode, findNextWord, findPrevWord, getHtmlNode } from './util';
+import { getDeepestNode, findNextWord, findPrevWord, getHtmlNode, isNumber } from './util';
import { HtmlNode } from 'EmmetNode';
-import { isNumber } from 'util';
export function nextItemHTML(selectionStart: vscode.Position, selectionEnd: vscode.Position, editor: vscode.TextEditor, rootNode: HtmlNode): vscode.Selection | undefined {
let currentNode = getHtmlNode(editor.document, rootNode, selectionEnd, false);
@@ -209,4 +208,4 @@ function getPrevAttribute(selectionStart: vscode.Position, selectionEnd: vscode.
}
return;
-}
\ 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 cedf3244903..7577cd6a718 100644
--- a/extensions/emmet/src/test/abbreviationAction.test.ts
+++ b/extensions/emmet/src/test/abbreviationAction.test.ts
@@ -61,7 +61,7 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
return withRandomFileEditor('img', 'html', async (editor, _doc) => {
editor.selection = new Selection(0, 3, 0, 3);
await expandEmmetAbbreviation(null);
- assert.equal(editor.document.getText(), '
');
+ assert.strictEqual(editor.document.getText(), '
');
return Promise.resolve();
});
});
@@ -72,14 +72,14 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
const cancelSrc = new CancellationTokenSource();
const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke });
if (!completionPromise) {
- assert.equal(!completionPromise, false, `Got unexpected undefined instead of a completion promise`);
+ assert.strictEqual(!completionPromise, false, `Got unexpected undefined instead of a completion promise`);
return Promise.resolve();
}
const completionList = await completionPromise;
- assert.equal(completionList && completionList.items && completionList.items.length > 0, true);
+ assert.strictEqual(completionList && completionList.items && completionList.items.length > 0, true);
if (completionList) {
- assert.equal(completionList.items[0].label, 'img');
- assert.equal(((completionList.items[0].documentation) || '').replace(/\|/g, ''), '
');
+ assert.strictEqual(completionList.items[0].label, 'img');
+ assert.strictEqual(((completionList.items[0].documentation) || '').replace(/\|/g, ''), '
');
}
return Promise.resolve();
});
@@ -161,7 +161,7 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
return withRandomFileEditor(htmlContents, 'html', async (editor, _doc) => {
editor.selection = new Selection(2, 4, 2, 4);
await expandEmmetAbbreviation(null);
- assert.equal(editor.document.getText(), htmlContents);
+ assert.strictEqual(editor.document.getText(), htmlContents);
return Promise.resolve();
});
});
@@ -171,7 +171,7 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
editor.selection = new Selection(2, 4, 2, 4);
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`);
+ assert.strictEqual(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`);
return Promise.resolve();
});
});
@@ -180,7 +180,7 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
return withRandomFileEditor(htmlContents, 'html', async (editor, _doc) => {
editor.selection = new Selection(9, 8, 9, 8);
await expandEmmetAbbreviation(null);
- assert.equal(editor.document.getText(), htmlContents);
+ assert.strictEqual(editor.document.getText(), htmlContents);
return Promise.resolve();
});
});
@@ -190,7 +190,7 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
editor.selection = new Selection(9, 8, 9, 8);
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`);
+ assert.strictEqual(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`);
return Promise.resolve();
});
});
@@ -200,7 +200,7 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
return withRandomFileEditor(fileContents, 'html', async (editor, _doc) => {
editor.selection = new Selection(0, 6, 0, 6);
await expandEmmetAbbreviation(null);
- assert.equal(editor.document.getText(), fileContents);
+ assert.strictEqual(editor.document.getText(), fileContents);
return Promise.resolve();
});
});
@@ -211,7 +211,7 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
editor.selection = new Selection(0, 6, 0, 6);
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`);
+ assert.strictEqual(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`);
return Promise.resolve();
});
});
@@ -219,12 +219,12 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
test('Expand css when inside style tag (HTML)', () => {
return withRandomFileEditor(htmlContents, 'html', async (editor, _doc) => {
editor.selection = new Selection(13, 16, 13, 19);
- let expandPromise = expandEmmetAbbreviation({ language: 'css' });
+ const expandPromise = expandEmmetAbbreviation({ language: 'css' });
if (!expandPromise) {
return Promise.resolve();
}
await expandPromise;
- assert.equal(editor.document.getText(), htmlContents.replace('m10', 'margin: 10px;'));
+ assert.strictEqual(editor.document.getText(), htmlContents.replace('m10', 'margin: 10px;'));
return Promise.resolve();
});
});
@@ -238,19 +238,19 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
const cancelSrc = new CancellationTokenSource();
const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke });
if (!completionPromise) {
- assert.equal(1, 2, `Problem with expanding m10`);
+ assert.strictEqual(1, 2, `Problem with expanding m10`);
return Promise.resolve();
}
const completionList = await completionPromise;
if (!completionList || !completionList.items || !completionList.items.length) {
- assert.equal(1, 2, `Problem with expanding m10`);
+ assert.strictEqual(1, 2, `Problem with expanding m10`);
return Promise.resolve();
}
const emmetCompletionItem = completionList.items[0];
- assert.equal(emmetCompletionItem.label, expandedText, `Label of completion item doesnt match.`);
- assert.equal(((emmetCompletionItem.documentation) || '').replace(/\|/g, ''), expandedText, `Docs of completion item doesnt match.`);
- assert.equal(emmetCompletionItem.filterText, abbreviation, `FilterText of completion item doesnt match.`);
+ assert.strictEqual(emmetCompletionItem.label, expandedText, `Label of completion item doesnt match.`);
+ assert.strictEqual(((emmetCompletionItem.documentation) || '').replace(/\|/g, ''), expandedText, `Docs of completion item doesnt match.`);
+ assert.strictEqual(emmetCompletionItem.filterText, abbreviation, `FilterText of completion item doesnt match.`);
return Promise.resolve();
});
});
@@ -259,7 +259,7 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
return withRandomFileEditor(htmlContents, 'html', async (editor, _doc) => {
editor.selection = new Selection(13, 14, 13, 14);
await expandEmmetAbbreviation(null);
- assert.equal(editor.document.getText(), htmlContents);
+ assert.strictEqual(editor.document.getText(), htmlContents);
return Promise.resolve();
});
});
@@ -268,12 +268,12 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
const styleAttributeContent = '';
return withRandomFileEditor(styleAttributeContent, 'html', async (editor, _doc) => {
editor.selection = new Selection(0, 15, 0, 15);
- let expandPromise = expandEmmetAbbreviation(null);
+ const expandPromise = expandEmmetAbbreviation(null);
if (!expandPromise) {
return Promise.resolve();
}
await expandPromise;
- assert.equal(editor.document.getText(), styleAttributeContent.replace('m10', 'margin: 10px;'));
+ assert.strictEqual(editor.document.getText(), styleAttributeContent.replace('m10', 'margin: 10px;'));
return Promise.resolve();
});
});
@@ -287,19 +287,19 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
const cancelSrc = new CancellationTokenSource();
const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke });
if (!completionPromise) {
- assert.equal(1, 2, `Problem with expanding m10`);
+ assert.strictEqual(1, 2, `Problem with expanding m10`);
return Promise.resolve();
}
const completionList = await completionPromise;
if (!completionList || !completionList.items || !completionList.items.length) {
- assert.equal(1, 2, `Problem with expanding m10`);
+ assert.strictEqual(1, 2, `Problem with expanding m10`);
return Promise.resolve();
}
const emmetCompletionItem = completionList.items[0];
- assert.equal(emmetCompletionItem.label, expandedText, `Label of completion item doesnt match.`);
- assert.equal(((emmetCompletionItem.documentation) || '').replace(/\|/g, ''), expandedText, `Docs of completion item doesnt match.`);
- assert.equal(emmetCompletionItem.filterText, abbreviation, `FilterText of completion item doesnt match.`);
+ assert.strictEqual(emmetCompletionItem.label, expandedText, `Label of completion item doesnt match.`);
+ assert.strictEqual(((emmetCompletionItem.documentation) || '').replace(/\|/g, ''), expandedText, `Docs of completion item doesnt match.`);
+ assert.strictEqual(emmetCompletionItem.filterText, abbreviation, `FilterText of completion item doesnt match.`);
return Promise.resolve();
});
});
@@ -307,12 +307,12 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
test('Expand html when inside script tag with html type (HTML)', () => {
return withRandomFileEditor(htmlContents, 'html', async (editor, _doc) => {
editor.selection = new Selection(21, 12, 21, 12);
- let expandPromise = expandEmmetAbbreviation(null);
+ const expandPromise = expandEmmetAbbreviation(null);
if (!expandPromise) {
return Promise.resolve();
}
await expandPromise;
- assert.equal(editor.document.getText(), htmlContents.replace('span.hello', ''));
+ assert.strictEqual(editor.document.getText(), htmlContents.replace('span.hello', ''));
return Promise.resolve();
});
});
@@ -326,18 +326,18 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
const cancelSrc = new CancellationTokenSource();
const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke });
if (!completionPromise) {
- assert.equal(1, 2, `Problem with expanding span.hello`);
+ assert.strictEqual(1, 2, `Problem with expanding span.hello`);
return Promise.resolve();
}
const completionList = await completionPromise;
if (!completionList || !completionList.items || !completionList.items.length) {
- assert.equal(1, 2, `Problem with expanding span.hello`);
+ assert.strictEqual(1, 2, `Problem with expanding span.hello`);
return Promise.resolve();
}
const emmetCompletionItem = completionList.items[0];
- assert.equal(emmetCompletionItem.label, abbreviation, `Label of completion item doesnt match.`);
- assert.equal(((emmetCompletionItem.documentation) || '').replace(/\|/g, ''), expandedText, `Docs of completion item doesnt match.`);
+ assert.strictEqual(emmetCompletionItem.label, abbreviation, `Label of completion item doesnt match.`);
+ assert.strictEqual(((emmetCompletionItem.documentation) || '').replace(/\|/g, ''), expandedText, `Docs of completion item doesnt match.`);
return Promise.resolve();
});
});
@@ -346,7 +346,7 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
return withRandomFileEditor(htmlContents, 'html', async (editor, _doc) => {
editor.selection = new Selection(24, 12, 24, 12);
await expandEmmetAbbreviation(null);
- assert.equal(editor.document.getText(), htmlContents);
+ assert.strictEqual(editor.document.getText(), htmlContents);
return Promise.resolve();
});
});
@@ -356,7 +356,7 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
editor.selection = new Selection(24, 12, 24, 12);
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`);
+ assert.strictEqual(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`);
return Promise.resolve();
});
});
@@ -365,12 +365,12 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
await workspace.getConfiguration('emmet').update('includeLanguages', { 'javascript': 'html' }, ConfigurationTarget.Global);
await withRandomFileEditor(htmlContents, 'html', async (editor, _doc) => {
editor.selection = new Selection(24, 10, 24, 10);
- let expandPromise = expandEmmetAbbreviation(null);
+ const expandPromise = expandEmmetAbbreviation(null);
if (!expandPromise) {
return Promise.resolve();
}
await expandPromise;
- assert.equal(editor.document.getText(), htmlContents.replace('span.bye', ''));
+ assert.strictEqual(editor.document.getText(), htmlContents.replace('span.bye', ''));
});
return workspace.getConfiguration('emmet').update('includeLanguages', oldValueForInlcudeLanguages || {}, ConfigurationTarget.Global);
});
@@ -384,17 +384,17 @@ suite('Tests for Expand Abbreviations (HTML)', () => {
const cancelSrc = new CancellationTokenSource();
const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke });
if (!completionPromise) {
- assert.equal(1, 2, `Problem with expanding span.bye`);
+ assert.strictEqual(1, 2, `Problem with expanding span.bye`);
return Promise.resolve();
}
const completionList = await completionPromise;
if (!completionList || !completionList.items || !completionList.items.length) {
- assert.equal(1, 2, `Problem with expanding span.bye`);
+ assert.strictEqual(1, 2, `Problem with expanding span.bye`);
return Promise.resolve();
}
const emmetCompletionItem = completionList.items[0];
- assert.equal(emmetCompletionItem.label, abbreviation, `Label of completion item (${emmetCompletionItem.label}) doesnt match.`);
- assert.equal(((emmetCompletionItem.documentation) || '').replace(/\|/g, ''), expandedText, `Docs of completion item doesnt match.`);
+ assert.strictEqual(emmetCompletionItem.label, abbreviation, `Label of completion item (${emmetCompletionItem.label}) doesnt match.`);
+ assert.strictEqual(((emmetCompletionItem.documentation) || '').replace(/\|/g, ''), expandedText, `Docs of completion item doesnt match.`);
return Promise.resolve();
});
return workspace.getConfiguration('emmet').update('includeLanguages', oldValueForInlcudeLanguages || {}, ConfigurationTarget.Global);
@@ -433,7 +433,7 @@ suite('Tests for jsx, xml and xsl', () => {
return withRandomFileEditor('ul.nav', 'javascriptreact', async (editor, _doc) => {
editor.selection = new Selection(0, 6, 0, 6);
await expandEmmetAbbreviation({ language: 'javascriptreact' });
- assert.equal(editor.document.getText(), '');
+ assert.strictEqual(editor.document.getText(), '');
return Promise.resolve();
});
});
@@ -442,7 +442,7 @@ suite('Tests for jsx, xml and xsl', () => {
return withRandomFileEditor('img', 'javascriptreact', async (editor, _doc) => {
editor.selection = new Selection(0, 6, 0, 6);
await expandEmmetAbbreviation({ language: 'javascriptreact' });
- assert.equal(editor.document.getText(), '
');
+ assert.strictEqual(editor.document.getText(), '
');
return Promise.resolve();
});
});
@@ -452,7 +452,7 @@ suite('Tests for jsx, xml and xsl', () => {
return withRandomFileEditor('img', 'javascriptreact', async (editor, _doc) => {
editor.selection = new Selection(0, 6, 0, 6);
await expandEmmetAbbreviation({ language: 'javascriptreact' });
- assert.equal(editor.document.getText(), '
');
+ assert.strictEqual(editor.document.getText(), '
');
return workspace.getConfiguration('emmet').update('syntaxProfiles', oldValueForSyntaxProfiles ? oldValueForSyntaxProfiles.globalValue : undefined, ConfigurationTarget.Global);
});
});
@@ -461,7 +461,7 @@ suite('Tests for jsx, xml and xsl', () => {
return withRandomFileEditor('img', 'xml', async (editor, _doc) => {
editor.selection = new Selection(0, 6, 0, 6);
await expandEmmetAbbreviation({ language: 'xml' });
- assert.equal(editor.document.getText(), '
');
+ assert.strictEqual(editor.document.getText(), '
');
return Promise.resolve();
});
});
@@ -470,7 +470,7 @@ suite('Tests for jsx, xml and xsl', () => {
return withRandomFileEditor('img', 'html', async (editor, _doc) => {
editor.selection = new Selection(0, 6, 0, 6);
await expandEmmetAbbreviation({ language: 'html' });
- assert.equal(editor.document.getText(), '
');
+ assert.strictEqual(editor.document.getText(), '
');
return Promise.resolve();
});
});
@@ -479,7 +479,7 @@ suite('Tests for jsx, xml and xsl', () => {
return withRandomFileEditor('if (foo < 10) { span.bar', 'javascriptreact', async (editor, _doc) => {
editor.selection = new Selection(0, 27, 0, 27);
await expandEmmetAbbreviation({ language: 'javascriptreact' });
- assert.equal(editor.document.getText(), 'if (foo < 10) { ');
+ assert.strictEqual(editor.document.getText(), 'if (foo < 10) { ');
return Promise.resolve();
});
});
@@ -505,15 +505,15 @@ suite('Tests for jsx, xml and xsl', () => {
function testExpandAbbreviation(syntax: string, selection: Selection, abbreviation: string, expandedText: string, shouldFail?: boolean): Thenable {
return withRandomFileEditor(htmlContents, syntax, async (editor, _doc) => {
editor.selection = selection;
- let expandPromise = expandEmmetAbbreviation(null);
+ const expandPromise = expandEmmetAbbreviation(null);
if (!expandPromise) {
if (!shouldFail) {
- assert.equal(1, 2, `Problem with expanding ${abbreviation} to ${expandedText}`);
+ assert.strictEqual(1, 2, `Problem with expanding ${abbreviation} to ${expandedText}`);
}
return Promise.resolve();
}
await expandPromise;
- assert.equal(editor.document.getText(), htmlContents.replace(abbreviation, expandedText));
+ assert.strictEqual(editor.document.getText(), htmlContents.replace(abbreviation, expandedText));
return Promise.resolve();
});
}
@@ -525,7 +525,7 @@ function testHtmlCompletionProvider(selection: Selection, abbreviation: string,
const completionPromise = completionProvider.provideCompletionItems(editor.document, editor.selection.active, cancelSrc.token, { triggerKind: CompletionTriggerKind.Invoke });
if (!completionPromise) {
if (!shouldFail) {
- assert.equal(1, 2, `Problem with expanding ${abbreviation} to ${expandedText}`);
+ assert.strictEqual(1, 2, `Problem with expanding ${abbreviation} to ${expandedText}`);
}
return Promise.resolve();
}
@@ -533,13 +533,13 @@ function testHtmlCompletionProvider(selection: Selection, abbreviation: string,
const completionList = await completionPromise;
if (!completionList || !completionList.items || !completionList.items.length) {
if (!shouldFail) {
- assert.equal(1, 2, `Problem with expanding ${abbreviation} to ${expandedText}`);
+ assert.strictEqual(1, 2, `Problem with expanding ${abbreviation} to ${expandedText}`);
}
return Promise.resolve();
}
const emmetCompletionItem = completionList.items[0];
- assert.equal(emmetCompletionItem.label, abbreviation, `Label of completion item doesnt match.`);
- assert.equal(((emmetCompletionItem.documentation) || '').replace(/\|/g, ''), expandedText, `Docs of completion item doesnt match.`);
+ assert.strictEqual(emmetCompletionItem.label, abbreviation, `Label of completion item doesnt match.`);
+ assert.strictEqual(((emmetCompletionItem.documentation) || '').replace(/\|/g, ''), expandedText, `Docs of completion item doesnt match.`);
return Promise.resolve();
});
}
@@ -549,7 +549,7 @@ function testNoCompletion(syntax: string, fileContents: string, selection: Selec
editor.selection = selection;
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`);
+ assert.strictEqual(!completionPromise, true, `Got unexpected comapletion promise instead of undefined`);
return Promise.resolve();
});
}
diff --git a/extensions/emmet/src/test/index.ts b/extensions/emmet/src/test/index.ts
index f3aeb0fefc1..3aeda9dfa42 100644
--- a/extensions/emmet/src/test/index.ts
+++ b/extensions/emmet/src/test/index.ts
@@ -6,21 +6,31 @@
const path = require('path');
const testRunner = require('vscode/lib/testrunner');
-const suite = 'Integration Emmet Tests';
-
const options: any = {
ui: 'tdd',
useColors: (!process.env.BUILD_ARTIFACTSTAGINGDIRECTORY && process.platform !== 'win32'),
timeout: 60000
};
+// These integration tests is being run in multiple environments (electron, web, remote)
+// so we need to set the suite name based on the environment as the suite name is used
+// for the test results file name
+let suite = '';
+if (process.env.VSCODE_BROWSER) {
+ suite = `${process.env.VSCODE_BROWSER} Browser Integration Emmet Tests`;
+} else if (process.env.REMOTE_VSCODE) {
+ suite = 'Remote Integration Emmet Tests';
+} else {
+ suite = 'Integration Emmet Tests';
+}
+
if (process.env.BUILD_ARTIFACTSTAGINGDIRECTORY) {
options.reporter = 'mocha-multi-reporters';
options.reporterOptions = {
reporterEnabled: 'spec, mocha-junit-reporter',
mochaJunitReporterReporterOptions: {
testsuitesTitle: `${suite} ${process.platform}`,
- mochaFile: path.join(process.env.BUILD_ARTIFACTSTAGINGDIRECTORY, `test-results/${process.platform}-${suite.toLowerCase().replace(/[^\w]/g, '-')}-results.xml`)
+ mochaFile: path.join(process.env.BUILD_ARTIFACTSTAGINGDIRECTORY, `test-results/${process.platform}-${process.arch}-${suite.toLowerCase().replace(/[^\w]/g, '-')}-results.xml`)
}
};
}
diff --git a/extensions/emmet/src/test/updateImageSize.test.ts b/extensions/emmet/src/test/updateImageSize.test.ts
index ccf3d880925..63452786a0f 100644
--- a/extensions/emmet/src/test/updateImageSize.test.ts
+++ b/extensions/emmet/src/test/updateImageSize.test.ts
@@ -17,14 +17,14 @@
// .one {
// margin: 10px;
// padding: 10px;
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// }
// .two {
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// height: 42px;
// }
// .three {
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// width: 42px;
// }
// `;
@@ -32,17 +32,17 @@
// .one {
// margin: 10px;
// padding: 10px;
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// width: 32px;
// height: 32px;
// }
// .two {
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// width: 32px;
// height: 32px;
// }
// .three {
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// height: 32px;
// width: 32px;
// }
@@ -68,14 +68,14 @@
// .one {
// margin: 10px;
// padding: 10px;
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// }
// .two {
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// height: 42px;
// }
// .three {
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// width: 42px;
// }
//
@@ -87,17 +87,17 @@
// .one {
// margin: 10px;
// padding: 10px;
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// width: 32px;
// height: 32px;
// }
// .two {
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// width: 32px;
// height: 32px;
// }
// .three {
- // background-image: url(https://github.com/Microsoft/vscode/blob/master/resources/linux/code.png);
+ // background-image: url(https://github.com/microsoft/vscode/blob/master/resources/linux/code.png);
// height: 32px;
// width: 32px;
// }
@@ -121,16 +121,16 @@
// test('update image size in img tag in html file with multiple cursors', () => {
// const htmlwithimgtag = `
//
- //
- //
- //
+ //
+ //
+ //
//
// `;
// const expectedContents = `
//
- //
- //
- //
+ //
+ //
+ //
//
// `;
// return withRandomFileEditor(htmlwithimgtag, 'html', (editor, doc) => {
diff --git a/extensions/emmet/src/util.ts b/extensions/emmet/src/util.ts
index 49cc45cd630..f2b72548a5f 100644
--- a/extensions/emmet/src/util.ts
+++ b/extensions/emmet/src/util.ts
@@ -8,10 +8,20 @@ import parse from '@emmetio/html-matcher';
import parseStylesheet from '@emmetio/css-parser';
import { Node, HtmlNode, CssToken, Property, Rule, Stylesheet } from 'EmmetNode';
import { DocumentStreamReader } from './bufferStream';
+import * as EmmetHelper from 'vscode-emmet-helper';
+import { TextDocument as LSTextDocument } from 'vscode-html-languageservice';
-let _emmetHelper: any;
+let _emmetHelper: typeof EmmetHelper;
let _currentExtensionsPath: string | undefined = undefined;
+let _homeDir: vscode.Uri | undefined;
+
+
+export function setHomeDir(homeDir: vscode.Uri) {
+ _homeDir = homeDir;
+}
+
+
export function getEmmetHelper() {
// Lazy load vscode-emmet-helper instead of importing it
// directly to reduce the start-up time of the extension
@@ -25,18 +35,19 @@ export function getEmmetHelper() {
/**
* Update Emmet Helper to use user snippets from the extensionsPath setting
*/
-export function updateEmmetExtensionsPath() {
+export function updateEmmetExtensionsPath(forceRefresh: boolean = false) {
if (!_emmetHelper) {
return;
}
let extensionsPath = vscode.workspace.getConfiguration('emmet')['extensionsPath'];
- if (_currentExtensionsPath !== extensionsPath) {
+ if (forceRefresh || _currentExtensionsPath !== extensionsPath) {
_currentExtensionsPath = extensionsPath;
- if (!vscode.workspace.workspaceFolders) {
+ if (!vscode.workspace.workspaceFolders || vscode.workspace.workspaceFolders.length === 0) {
return;
} else {
- const rootPath = vscode.workspace.workspaceFolders[0].uri.fsPath;
- _emmetHelper.updateExtensionsPath(extensionsPath, rootPath).then(null, (err: string) => vscode.window.showErrorMessage(err));
+ const rootPath = vscode.workspace.workspaceFolders[0].uri;
+ const fileSystem = vscode.workspace.fs;
+ _emmetHelper.updateExtensionsPath(extensionsPath, fileSystem, rootPath, _homeDir).then(null, (err: string) => vscode.window.showErrorMessage(err));
}
}
}
@@ -628,3 +639,17 @@ export function trimQuotes(s: string) {
return s;
}
+
+export function isNumber(obj: any): obj is number {
+ return typeof obj === 'number';
+}
+
+export function toLSTextDocument(doc: vscode.TextDocument): LSTextDocument {
+ return LSTextDocument.create(doc.uri.toString(), doc.languageId, doc.version, doc.getText());
+}
+
+export function getPathBaseName(path: string): string {
+ const pathAfterSlashSplit = path.split('/').pop();
+ const pathAfterBackslashSplit = pathAfterSlashSplit ? pathAfterSlashSplit.split('\\').pop() : '';
+ return pathAfterBackslashSplit ?? '';
+}
diff --git a/extensions/emmet/yarn.lock b/extensions/emmet/yarn.lock
index 37e06ecb522..bb19fbcd08a 100644
--- a/extensions/emmet/yarn.lock
+++ b/extensions/emmet/yarn.lock
@@ -2,6 +2,20 @@
# yarn lockfile v1
+"@emmetio/abbreviation@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@emmetio/abbreviation/-/abbreviation-2.0.2.tgz#e26d55d78c00cdeb2ef983e902c7ad55ed0b648d"
+ integrity sha512-kpWg6jyR1YEj/yWceruvDj/fe1BhXqA0tGH3Z2ZiPFo8SDMH4JHg6FChqon5x0CCfLf4zVswrQa0gcZ4XtdRBQ==
+ dependencies:
+ "@emmetio/scanner" "^1.0.0"
+
+"@emmetio/css-abbreviation@^2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@emmetio/css-abbreviation/-/css-abbreviation-2.1.2.tgz#4a5d96f2576dd827a2c1a060374ffa8a5408cc1c"
+ integrity sha512-CvYTzJltVpLqJaCZ1Qn97LVAKsl2Uwl2fzir1EX/WuMY3xWxgc3BWRCheL6k65km6GyDrLVl6RhrrNb/pxOiAQ==
+ dependencies:
+ "@emmetio/scanner" "^1.0.0"
+
"@emmetio/css-parser@ramya-rao-a/css-parser#vscode":
version "0.4.0"
resolved "https://codeload.github.com/ramya-rao-a/css-parser/tar.gz/370c480ac103bd17c7bcfb34bf5d577dc40d3660"
@@ -9,11 +23,6 @@
"@emmetio/stream-reader" "^2.2.0"
"@emmetio/stream-reader-utils" "^0.1.0"
-"@emmetio/extract-abbreviation@0.1.6":
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/@emmetio/extract-abbreviation/-/extract-abbreviation-0.1.6.tgz#e4a9856c1057f0aff7d443b8536477c243abe28c"
- integrity sha512-Ce3xE2JvTSEbASFbRbA1gAIcMcZWdS2yUYRaQbeM0nbOzaZrUYfa3ePtcriYRZOZmr+CkKA+zbjhvTpIOAYVcw==
-
"@emmetio/html-matcher@^0.3.3":
version "0.3.3"
resolved "https://registry.yarnpkg.com/@emmetio/html-matcher/-/html-matcher-0.3.3.tgz#0bbdadc0882e185950f03737dc6dbf8f7bd90728"
@@ -30,6 +39,11 @@
"@emmetio/stream-reader" "^2.0.1"
"@emmetio/stream-reader-utils" "^0.1.0"
+"@emmetio/scanner@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@emmetio/scanner/-/scanner-1.0.0.tgz#065b2af6233fe7474d44823e3deb89724af42b5f"
+ integrity sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==
+
"@emmetio/stream-reader-utils@^0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz#244cb02c77ec2e74f78a9bd318218abc9c500a61"
@@ -41,25 +55,32 @@
integrity sha1-Rs/+oRmgoAMxKiHC2bVijLX81EI=
"@types/node@^12.11.7":
- version "12.11.7"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.7.tgz#57682a9771a3f7b09c2497f28129a0462966524a"
- integrity sha512-JNbGaHFCLwgHn/iCckiGSOZ1XYHsKFwREtzPwSGCVld1SGhOlmZw2D4ZI94HQCrBHbADzW9m4LER/8olJTRGHA==
+ version "12.19.2"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.2.tgz#9565ed5c72ba96038fc3add643edd5e7820598e7"
+ integrity sha512-SRH6QM0IMOBBFmDiJ75vlhcbUEYEquvSuhsVW9ijG20JvdFTfOrB1p6ddZxz5y/JNnbf+9HoHhjhOVSX2hsJyA==
-ajv@^5.1.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda"
- integrity sha1-RBT/dKUIecII7l/cgm4ywwNUnto=
+ajv@^6.12.3:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
dependencies:
- co "^4.6.0"
- fast-deep-equal "^1.0.0"
+ fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
- json-schema-traverse "^0.3.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
amdefine@>=0.0.4:
version "1.0.1"
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
+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@^0.2.0, ansi-regex@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
@@ -85,6 +106,11 @@ ansi-styles@^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:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
+ integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
+
arr-diff@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
@@ -130,39 +156,31 @@ arrify@^1.0.0:
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
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=
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
+ integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
+ dependencies:
+ safer-buffer "~2.1.0"
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
-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=
-
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=
-
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
-aws4@^1.2.1, aws4@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
- integrity sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=
+aws4@^1.8.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428"
+ integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==
balanced-match@^1.0.0:
version "1.0.0"
@@ -170,9 +188,9 @@ balanced-match@^1.0.0:
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=
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+ integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
dependencies:
tweetnacl "^0.14.3"
@@ -188,31 +206,10 @@ block-stream@*:
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"
-
-boom@4.x.x:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31"
- integrity sha1-T4owBctKfjiJ90kDD9JbluAdLjE=
- dependencies:
- hoek "4.x.x"
-
-boom@5.x.x:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02"
- integrity sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==
- dependencies:
- hoek "4.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"
- integrity sha1-wHshHHyVLsH479Uad+8NHTmQopI=
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
@@ -231,11 +228,6 @@ buffer-crc32@~0.2.3:
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
-builtin-modules@^1.0.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
- integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
-
camelcase-keys@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
@@ -249,11 +241,6 @@ camelcase@^2.0.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
-caseless@~0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
- integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c=
-
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -270,7 +257,7 @@ chalk@^0.5.0:
strip-ansi "^0.3.0"
supports-color "^0.2.0"
-chalk@^1.0.0, chalk@^1.1.1:
+chalk@^1.0.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
@@ -281,7 +268,7 @@ chalk@^1.0.0, chalk@^1.1.1:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-charenc@~0.0.1:
+charenc@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
@@ -307,28 +294,28 @@ clone@^0.2.0:
integrity sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=
clone@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f"
- integrity sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
cloneable-readable@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117"
- integrity sha1-pikNQT8hemEjL5XkWP84QYz7ARc=
+ 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 "^1.0.6"
- through2 "^2.0.1"
+ process-nextick-args "^2.0.0"
+ readable-stream "^2.3.5"
-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=
+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==
-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=
+combined-stream@^1.0.6, combined-stream@~1.0.6:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
@@ -342,45 +329,28 @@ commander@2.3.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873"
integrity sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=
-commander@^2.9.0:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
- integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==
-
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=
convert-source-map@^1.1.1:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
- integrity sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
+ integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
+ dependencies:
+ safe-buffer "~5.1.1"
core-util-is@1.0.2, 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=
-crypt@~0.0.1:
+crypt@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=
-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"
-
-cryptiles@3.x.x:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
- integrity sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=
- dependencies:
- boom "5.x.x"
-
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@@ -423,11 +393,11 @@ debug@^2.2.0:
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==
+ 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"
decamelize@^1.1.2:
version "1.2.0"
@@ -458,15 +428,15 @@ duplexer2@0.0.2:
dependencies:
readable-stream "~1.1.9"
-duplexer@~0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
- integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+duplexer@^0.1.1, duplexer@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
duplexify@^3.2.0:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd"
- integrity sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
dependencies:
end-of-stream "^1.0.0"
inherits "^2.0.1"
@@ -474,23 +444,32 @@ duplexify@^3.2.0:
stream-shift "^1.0.0"
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=
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
dependencies:
jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
+emmet@^2.1.5:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/emmet/-/emmet-2.1.6.tgz#425e0bcef6bf6e5eb758610f3e8d49f86a6fe877"
+ integrity sha512-kfJMlze+k8jpX5CUx7xPYS83DxRNXuh8rQ98rQKnnf+wfo/KD+BG6pmpnEp5a7a1DWM9xmllKuOPfC7MeRmepQ==
+ dependencies:
+ "@emmetio/abbreviation" "^2.0.2"
+ "@emmetio/css-abbreviation" "^2.1.2"
end-of-stream@^1.0.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206"
- integrity sha1-epDYM+/abPpurA9JSduw+tOmMgY=
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
dependencies:
once "^1.4.0"
error-ex@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
- integrity sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
dependencies:
is-arrayish "^0.2.1"
@@ -504,9 +483,9 @@ escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-event-stream@^3.3.1, event-stream@~3.3.4:
+event-stream@3.3.4:
version "3.3.4"
- resolved "https://registry.npmjs.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
+ resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=
dependencies:
duplexer "~0.1.1"
@@ -517,6 +496,19 @@ event-stream@^3.3.1, event-stream@~3.3.4:
stream-combiner "~0.0.4"
through "~2.3.1"
+event-stream@^3.3.1:
+ version "3.3.5"
+ resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.5.tgz#e5dd8989543630d94c6cf4d657120341fa31636b"
+ integrity sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==
+ dependencies:
+ duplexer "^0.1.1"
+ from "^0.1.7"
+ map-stream "0.0.7"
+ pause-stream "^0.0.11"
+ split "^1.0.1"
+ stream-combiner "^0.2.2"
+ through "^2.3.8"
+
event-stream@~3.1.5:
version "3.1.7"
resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.1.7.tgz#b4c540012d0fe1498420f3d8946008db6393c37a"
@@ -551,10 +543,10 @@ extend-shallow@^2.0.1:
dependencies:
is-extendable "^0.1.0"
-extend@^3.0.0, extend@~3.0.0, extend@~3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
- integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=
+extend@^3.0.0, extend@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
extglob@^0.3.1:
version "0.3.2"
@@ -563,33 +555,40 @@ extglob@^0.3.1:
dependencies:
is-extglob "^1.0.0"
-extsprintf@1.3.0, extsprintf@^1.2.0:
+extsprintf@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
+extsprintf@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+ integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
+
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=
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7"
+ integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==
dependencies:
- chalk "^1.1.1"
+ ansi-gray "^0.1.1"
+ color-support "^1.1.3"
+ parse-node-version "^1.0.0"
time-stamp "^1.0.0"
-fast-deep-equal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
- integrity sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
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=
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-fd-slicer@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
- integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=
+fd-slicer@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
+ integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
dependencies:
pend "~1.2.0"
@@ -599,13 +598,13 @@ filename-regex@^2.0.0:
integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=
fill-range@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
- integrity sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
+ integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==
dependencies:
is-number "^2.1.0"
isobject "^2.0.0"
- randomatic "^1.1.3"
+ randomatic "^3.0.0"
repeat-element "^1.1.2"
repeat-string "^1.5.2"
@@ -639,25 +638,16 @@ forever-agent@~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=
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
dependencies:
asynckit "^0.4.0"
- combined-stream "^1.0.5"
+ combined-stream "^1.0.6"
mime-types "^2.1.12"
-form-data@~2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf"
- integrity sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.5"
- mime-types "^2.1.12"
-
-from@~0:
+from@^0.1.7, from@~0:
version "0.1.7"
resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=
@@ -677,17 +667,10 @@ fstream@~0.1.28:
mkdirp "0.5"
rimraf "2"
-generate-function@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
- integrity sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=
-
-generate-object-property@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
- integrity sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=
- dependencies:
- is-property "^1.0.0"
+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-stdin@^4.0.1:
version "4.0.1"
@@ -757,10 +740,10 @@ glob@^5.0.15, glob@^5.0.3:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.0.5:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
+glob@^7.1.3:
+ version "7.1.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@@ -770,23 +753,23 @@ glob@^7.0.5:
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=
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f"
+ integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==
dependencies:
sparkles "^1.0.0"
graceful-fs@^4.0.0, 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=
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
+ integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
graceful-fs@~3.0.2:
- version "3.0.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818"
- integrity sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=
+ version "3.0.12"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.12.tgz#0034947ce9ed695ec8ab0b854bc919e82b1ffaef"
+ integrity sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==
dependencies:
- natives "^1.1.0"
+ natives "^1.1.3"
growl@1.9.2:
version "1.9.2"
@@ -820,13 +803,13 @@ gulp-gunzip@0.0.3:
vinyl "~0.4.6"
gulp-remote-src@^0.4.0:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/gulp-remote-src/-/gulp-remote-src-0.4.3.tgz#5728cfd643433dd4845ddef0969f0f971a2ab4a1"
- integrity sha1-VyjP1kNDPdSEXd7wlp8PlxoqtKE=
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/gulp-remote-src/-/gulp-remote-src-0.4.4.tgz#4a4d18fac0ffedde94a7855953de90db00a1d1b1"
+ integrity sha512-mo7lGgZmNXyTbcUzfjSnUVkx1pnqqiwv/pPaIrYdTO77hq0WNTxXLAzQdoYOnyJ0mfVLNmNl9AGqWLiAzTPMMA==
dependencies:
- event-stream "~3.3.4"
+ event-stream "3.3.4"
node.extend "~1.1.2"
- request "~2.79.0"
+ request "^2.88.0"
through2 "~2.0.3"
vinyl "~2.0.1"
@@ -842,11 +825,11 @@ gulp-sourcemaps@1.6.0:
vinyl "^1.0.0"
gulp-symdest@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/gulp-symdest/-/gulp-symdest-1.1.0.tgz#c165320732d192ce56fd94271ffa123234bf2ae0"
- integrity sha1-wWUyBzLRks5W/ZQnH/oSMjS/KuA=
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/gulp-symdest/-/gulp-symdest-1.1.1.tgz#b0a6df3d43a0537165946ab8e38c1b7080a66fac"
+ integrity sha512-UHd3MokfIN7SrFdsbV5uZTwzBpL0ZSTu7iq98fuDqBGZ0dlHxgbQBJwfd6qjCW83snkQ3Hz9IY4sMRMz2iTq7w==
dependencies:
- event-stream "^3.3.1"
+ event-stream "3.3.4"
mkdirp "^0.5.1"
queue "^3.1.0"
vinyl-fs "^2.4.3"
@@ -925,22 +908,12 @@ har-schema@^2.0.0:
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-har-validator@~2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
- integrity sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=
+har-validator@~5.1.3:
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
+ integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
dependencies:
- chalk "^1.1.1"
- commander "^2.9.0"
- is-my-json-valid "^2.12.4"
- pinkie-promise "^2.0.0"
-
-har-validator@~5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd"
- integrity sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=
- dependencies:
- ajv "^5.1.0"
+ ajv "^6.12.3"
har-schema "^2.0.0"
has-ansi@^0.1.0:
@@ -964,49 +937,17 @@ has-gulplog@^0.1.0:
dependencies:
sparkles "^1.0.0"
-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@^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:
- boom "2.x.x"
- cryptiles "2.x.x"
- hoek "2.x.x"
- sntp "1.x.x"
-
-hawk@~6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038"
- integrity sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==
- dependencies:
- boom "4.x.x"
- cryptiles "3.x.x"
- hoek "4.x.x"
- sntp "2.x.x"
-
-hoek@2.x.x:
- version "2.16.3"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
- integrity sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=
-
-hoek@4.x.x:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d"
- integrity sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==
+ function-bind "^1.1.1"
hosted-git-info@^2.1.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
- integrity sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==
-
-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=
- dependencies:
- assert-plus "^0.2.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
+ version "2.8.8"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
+ integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
http-signature@~1.2.0:
version "1.2.0"
@@ -1038,26 +979,26 @@ inflight@^1.0.4:
wrappy "1"
inherits@2, inherits@^2.0.1, inherits@~2.0.0, 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=
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-is-buffer@^1.1.5, is-buffer@~1.1.1:
+is-buffer@^1.1.5, is-buffer@~1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-is-builtin-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
- integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
+is-core-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d"
+ integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==
dependencies:
- builtin-modules "^1.0.0"
+ has "^1.0.3"
is-dotfile@^1.0.0:
version "1.0.3"
@@ -1087,11 +1028,9 @@ is-extglob@^2.1.0:
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-finite@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
- integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
- dependencies:
- number-is-nan "^1.0.0"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
+ integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
is-glob@^2.0.0, is-glob@^2.0.1:
version "2.0.1"
@@ -1107,16 +1046,6 @@ is-glob@^3.1.0:
dependencies:
is-extglob "^2.1.0"
-is-my-json-valid@^2.12.4:
- version "2.16.1"
- resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11"
- integrity sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==
- dependencies:
- generate-function "^2.0.0"
- generate-object-property "^1.1.0"
- jsonpointer "^4.0.0"
- xtend "^4.0.0"
-
is-number@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
@@ -1124,12 +1053,10 @@ is-number@^2.1.0:
dependencies:
kind-of "^3.0.2"
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
- dependencies:
- kind-of "^3.0.2"
+is-number@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+ integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
is-obj@^1.0.0:
version "1.0.1"
@@ -1146,11 +1073,6 @@ is-primitive@^2.0.0:
resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
-is-property@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
- integrity sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=
-
is-stream@^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"
@@ -1171,10 +1093,10 @@ is-valid-glob@^0.3.0:
resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe"
integrity sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=
-is@^3.1.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/is/-/is-3.2.1.tgz#d0ac2ad55eb7b0bec926a5266f6c662aaa83dca5"
- integrity sha1-0Kwq1V63sL7JJqUmb2xmKqqD3KU=
+is@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/is/-/is-3.3.0.tgz#61cff6dd3c4193db94a3d62582072b44e5645d79"
+ integrity sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==
isarray@0.0.1:
version "0.0.1"
@@ -1211,42 +1133,30 @@ jsbn@~0.1.0:
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-json-schema-traverse@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
- integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
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.0:
+json-stable-stringify-without-jsonify@^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"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
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=
-jsonc-parser@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-1.0.0.tgz#ddcc864ae708e60a7a6dd36daea00172fa8d9272"
- integrity sha1-3cyGSucI5gp6bdNtrqABcvqNknI=
-
-jsonify@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
- integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
-
-jsonpointer@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
- integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk=
+jsonc-parser@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342"
+ integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==
jsprim@^1.2.2:
version "1.4.1"
@@ -1265,12 +1175,10 @@ kind-of@^3.0.2:
dependencies:
is-buffer "^1.1.5"
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
- dependencies:
- is-buffer "^1.1.5"
+kind-of@^6.0.0:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
lazystream@^1.0.0:
version "1.0.0"
@@ -1503,9 +1411,9 @@ lodash.values@~2.4.1:
lodash.keys "~2.4.1"
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==
+ version "4.17.20"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+ integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
loud-rejection@^1.0.0:
version "1.6.0"
@@ -1525,19 +1433,29 @@ map-obj@^1.0.0, map-obj@^1.0.1:
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+map-stream@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8"
+ integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=
+
map-stream@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=
+math-random@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c"
+ integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==
+
md5@^2.1.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
- integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f"
+ integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==
dependencies:
- charenc "~0.0.1"
- crypt "~0.0.1"
- is-buffer "~1.1.1"
+ charenc "0.0.2"
+ crypt "0.0.2"
+ is-buffer "~1.1.6"
meow@^3.3.0:
version "3.7.0"
@@ -1581,17 +1499,17 @@ micromatch@^2.3.7:
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-db@1.44.0:
+ version "1.44.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
+ integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
-mime-types@^2.1.12, mime-types@~2.1.17, 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=
+mime-types@^2.1.12, mime-types@~2.1.19:
+ version "2.1.27"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
+ integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
dependencies:
- mime-db "~1.30.0"
+ mime-db "1.44.0"
minimatch@0.3:
version "0.3.0"
@@ -1614,21 +1532,28 @@ minimist@0.0.8:
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
minimist@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.0.tgz#4dffe525dae2b864c66c2e23c6271d7afdecefce"
- integrity sha1-Tf/lJdriuGTGbC4jxicdev3s784=
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz#827ba4e7593464e7c221e8c5bed930904ee2c455"
+ integrity sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg==
-minimist@^1.1.0, minimist@^1.1.3:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
- integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
mkdirp@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=
-mkdirp@0.5, mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
+mkdirp@0.5, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
+ dependencies:
+ minimist "^1.2.5"
+
+mkdirp@0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
@@ -1636,9 +1561,9 @@ mkdirp@0.5, mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
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=
+ version "1.23.3"
+ resolved "https://registry.yarnpkg.com/mocha-junit-reporter/-/mocha-junit-reporter-1.23.3.tgz#941e219dd759ed732f8641e165918aa8b167c981"
+ integrity sha512-ed8LqbRj1RxZfjt/oC9t12sfrWsjZ3gNnbhV1nuj9R/Jb5/P3Xb4duv2eCfCDMYH+fEu0mqca7m4wsiVjsxsvA==
dependencies:
debug "^2.2.0"
md5 "^2.1.0"
@@ -1680,6 +1605,11 @@ ms@2.0.0:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+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==
+
multimatch@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b"
@@ -1697,25 +1627,26 @@ multipipe@^0.1.0, multipipe@^0.1.2:
dependencies:
duplexer2 "0.0.2"
-natives@^1.1.0:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.4.tgz#2f0f224fc9a7dd53407c7667c84cf8dbe773de58"
- integrity sha512-Q29yeg9aFKwhLVdkTAejM/HvYG0Y1Am1+HUkFQGn5k2j8GS+v60TVmZh6nujpEAj/qql+wGUrlryO8bF+b1jEg==
+natives@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb"
+ integrity sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==
node.extend@~1.1.2:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.6.tgz#a7b882c82d6c93a4863a5504bd5de8ec86258b96"
- integrity sha1-p7iCyC1sk6SGOlUEvV3o7IYli5Y=
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.8.tgz#0aab3e63789f4e6d68b42bc00073ad1881243cf0"
+ integrity sha512-L/dvEBwyg3UowwqOUTyDsGBU6kjBQOpOhshio9V3i3BMPv5YUb9+mWNN8MK0IbWqT0AqaTSONZf0aTuMMahWgA==
dependencies:
- is "^3.1.0"
+ has "^1.0.3"
+ is "^3.2.1"
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
- integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
dependencies:
hosted-git-info "^2.1.4"
- is-builtin-module "^1.0.0"
+ resolve "^1.10.0"
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
@@ -1726,15 +1657,10 @@ normalize-path@^2.0.1:
dependencies:
remove-trailing-separator "^1.0.1"
-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=
-
-oauth-sign@~0.8.1, oauth-sign@~0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
- integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
object-assign@^3.0.0:
version "3.0.0"
@@ -1791,6 +1717,11 @@ parse-json@^2.2.0:
dependencies:
error-ex "^1.2.0"
+parse-node-version@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
path-dirname@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
@@ -1808,6 +1739,11 @@ path-is-absolute@^1.0.0:
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+path-parse@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
path-type@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
@@ -1817,7 +1753,7 @@ path-type@^1.0.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
-pause-stream@0.0.11:
+pause-stream@0.0.11, pause-stream@^0.0.11:
version "0.0.11"
resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=
@@ -1856,25 +1792,25 @@ preserve@^0.2.0:
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
-process-nextick-args@^1.0.6, 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=
+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==
-punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
- integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+psl@^1.1.28:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+ integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
-qs@~6.3.0:
- version "6.3.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
- integrity sha1-51vV9uJoEioqDgvaYwslUMFmUCw=
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-qs@~6.5.1:
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
- integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==
+qs@~6.5.2:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+ integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
queue@^3.0.10, queue@^3.1.0:
version "3.1.0"
@@ -1883,13 +1819,14 @@ queue@^3.0.10, queue@^3.1.0:
dependencies:
inherits "~2.0.0"
-randomatic@^1.1.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
- integrity sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==
+randomatic@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed"
+ integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==
dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
+ is-number "^4.0.0"
+ kind-of "^6.0.0"
+ math-random "^1.0.1"
read-pkg-up@^1.0.1:
version "1.0.1"
@@ -1918,17 +1855,17 @@ read-pkg@^1.0.0:
isarray "0.0.1"
string_decoder "~0.10.x"
-readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.5:
- 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==
+readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.3.5, readable-stream@~2.3.6:
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
- process-nextick-args "~1.0.6"
+ process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
- string_decoder "~1.0.3"
+ string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@~1.1.9:
@@ -1962,9 +1899,9 @@ remove-trailing-separator@^1.0.1:
integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
repeat-element@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
- integrity sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+ integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
repeat-string@^1.5.2:
version "1.6.1"
@@ -1984,80 +1921,70 @@ replace-ext@0.0.1:
integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=
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=
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a"
+ integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==
-request@^2.67.0:
- version "2.83.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
- integrity sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==
+request@^2.67.0, request@^2.88.0:
+ version "2.88.2"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
+ integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
dependencies:
aws-sign2 "~0.7.0"
- aws4 "^1.6.0"
+ aws4 "^1.8.0"
caseless "~0.12.0"
- combined-stream "~1.0.5"
- extend "~3.0.1"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
forever-agent "~0.6.1"
- form-data "~2.3.1"
- har-validator "~5.0.3"
- hawk "~6.0.2"
+ form-data "~2.3.2"
+ har-validator "~5.1.3"
http-signature "~1.2.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
- mime-types "~2.1.17"
- oauth-sign "~0.8.2"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
performance-now "^2.1.0"
- qs "~6.5.1"
- safe-buffer "^5.1.1"
- stringstream "~0.0.5"
- tough-cookie "~2.3.3"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.5.0"
tunnel-agent "^0.6.0"
- uuid "^3.1.0"
+ uuid "^3.3.2"
-request@~2.79.0:
- version "2.79.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de"
- integrity sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=
+resolve@^1.10.0:
+ version "1.18.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130"
+ integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==
dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- caseless "~0.11.0"
- combined-stream "~1.0.5"
- extend "~3.0.0"
- forever-agent "~0.6.1"
- form-data "~2.1.1"
- har-validator "~2.0.6"
- 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"
- qs "~6.3.0"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "~0.4.1"
- uuid "^3.0.0"
+ is-core-module "^2.0.0"
+ path-parse "^1.0.6"
rimraf@2:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
- integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
- glob "^7.0.5"
+ glob "^7.1.3"
-safe-buffer@^5.0.1, safe-buffer@^5.1.1, 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-buffer@^5.0.1, safe-buffer@^5.1.2:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
"semver@2 || 3 || 4 || 5", semver@^5.1.0:
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
- integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
sigmund@~1.0.0:
version "1.0.1"
@@ -2065,23 +1992,9 @@ sigmund@~1.0.0:
integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
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=
-
-sntp@1.x.x:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
- integrity sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=
- dependencies:
- hoek "2.x.x"
-
-sntp@2.x.x:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8"
- integrity sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==
- dependencies:
- hoek "4.x.x"
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+ integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
source-map-support@^0.3.2:
version "0.3.3"
@@ -2098,26 +2011,35 @@ source-map@0.1.32:
amdefine ">=0.0.4"
sparkles@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3"
- integrity sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c"
+ integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==
-spdx-correct@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
- integrity sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=
+spdx-correct@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
dependencies:
- spdx-license-ids "^1.0.2"
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
-spdx-expression-parse@~1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
- integrity sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=
+spdx-exceptions@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
-spdx-license-ids@^1.0.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
- integrity sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce"
+ integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==
split@0.2:
version "0.2.10"
@@ -2133,19 +2055,26 @@ split@0.3:
dependencies:
through "2"
+split@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9"
+ integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==
+ dependencies:
+ through "2"
+
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=
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
+ integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
- dashdash "^1.12.0"
- getpass "^0.1.1"
- optionalDependencies:
bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
tweetnacl "~0.14.0"
stat-mode@^0.2.0:
@@ -2153,6 +2082,14 @@ stat-mode@^0.2.0:
resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502"
integrity sha1-5sgLYjEj19gM8TLOU480YokHJQI=
+stream-combiner@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858"
+ integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=
+ dependencies:
+ duplexer "~0.1.1"
+ through "~2.3.4"
+
stream-combiner@~0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
@@ -2161,14 +2098,14 @@ stream-combiner@~0.0.4:
duplexer "~0.1.1"
stream-shift@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
- integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
streamfilter@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/streamfilter/-/streamfilter-1.0.5.tgz#87507111beb8e298451717b511cfed8f002abf53"
- integrity sha1-h1BxEb644phFFxe1Ec/tjwAqv1M=
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/streamfilter/-/streamfilter-1.0.7.tgz#ae3e64522aa5a35c061fd17f67620c7653c643c9"
+ integrity sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==
dependencies:
readable-stream "^2.0.2"
@@ -2182,18 +2119,13 @@ string_decoder@~0.10.x:
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"
- integrity sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==
+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"
-stringstream@~0.0.4, stringstream@~0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
- integrity sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=
-
strip-ansi@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220"
@@ -2269,6 +2201,14 @@ through2-filter@^2.0.0:
through2 "~2.0.0"
xtend "~4.0.0"
+through2-filter@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"
+ integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==
+ dependencies:
+ through2 "~2.0.0"
+ xtend "~4.0.0"
+
through2@^0.5.0:
version "0.5.1"
resolved "https://registry.yarnpkg.com/through2/-/through2-0.5.1.tgz#dfdd012eb9c700e2323fd334f38ac622ab372da7"
@@ -2277,7 +2217,7 @@ through2@^0.5.0:
readable-stream "~1.0.17"
xtend "~3.0.0"
-through2@^0.6.0, through2@^0.6.1, through2@^0.6.3, through2@~0.6.5:
+through2@^0.6.0, through2@^0.6.3, through2@~0.6.5:
version "0.6.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48"
integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=
@@ -2285,12 +2225,12 @@ through2@^0.6.0, through2@^0.6.1, through2@^0.6.3, through2@~0.6.5:
readable-stream ">=1.0.33-1 <1.1.0-0"
xtend ">=4.0.0 <4.1.0-0"
-through2@^2.0.0, through2@^2.0.1, through2@~2.0.0, through2@~2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
- integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=
+through2@^2.0.0, through2@^2.0.3, through2@~2.0.0, through2@~2.0.3:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
dependencies:
- readable-stream "^2.1.5"
+ readable-stream "~2.3.6"
xtend "~4.0.1"
through2@~0.4.1:
@@ -2301,7 +2241,7 @@ through2@~0.4.1:
readable-stream "~1.0.17"
xtend "~2.1.1"
-through@2, through@~2.3, through@~2.3.1:
+through@2, through@^2.3.8, through@~2.3, through@~2.3.1, through@~2.3.4:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
@@ -2323,12 +2263,13 @@ to-iso-string@0.0.2:
resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1"
integrity sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=
-tough-cookie@~2.3.0, tough-cookie@~2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
- integrity sha1-C2GKVWW23qkL80JdBNVe3EdadWE=
+tough-cookie@~2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
dependencies:
- punycode "^1.4.1"
+ psl "^1.1.28"
+ punycode "^2.1.1"
trim-newlines@^1.0.0:
version "1.0.0"
@@ -2342,33 +2283,35 @@ tunnel-agent@^0.6.0:
dependencies:
safe-buffer "^5.0.1"
-tunnel-agent@~0.4.1:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
- integrity sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=
-
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=
unique-stream@^2.0.2:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369"
- integrity sha1-WqADz76Uxf+GbE59ZouxxNuts2k=
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac"
+ integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==
dependencies:
- json-stable-stringify "^1.0.0"
- through2-filter "^2.0.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ through2-filter "^3.0.0"
+
+uri-js@^4.2.2:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602"
+ integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==
+ dependencies:
+ punycode "^2.1.0"
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, uuid@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
- integrity sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==
+uuid@^3.3.2:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
vali-date@^1.0.0:
version "1.0.0"
@@ -2376,12 +2319,12 @@ vali-date@^1.0.0:
integrity sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=
validate-npm-package-license@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
- integrity sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
dependencies:
- spdx-correct "~1.0.0"
- spdx-expression-parse "~1.0.0"
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
verror@1.10.0:
version "1.10.0"
@@ -2416,11 +2359,11 @@ vinyl-fs@^2.0.0, vinyl-fs@^2.4.3:
vinyl "^1.0.0"
vinyl-source-stream@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/vinyl-source-stream/-/vinyl-source-stream-1.1.0.tgz#44cbe5108205279deb0c5653c094a2887938b1ab"
- integrity sha1-RMvlEIIFJ53rDFZTwJSiiHk4sas=
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vinyl-source-stream/-/vinyl-source-stream-1.1.2.tgz#62b53a135610a896e98ca96bee3a87f008a8e780"
+ integrity sha1-YrU6E1YQqJbpjKlr7jqH8Aio54A=
dependencies:
- through2 "^0.6.1"
+ through2 "^2.0.3"
vinyl "^0.4.3"
vinyl@^0.2.1:
@@ -2469,43 +2412,51 @@ vinyl@~2.0.1:
remove-trailing-separator "^1.0.1"
replace-ext "^1.0.0"
-vscode-emmet-helper@^1.2.17:
- version "1.2.17"
- resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-1.2.17.tgz#f0c6bfcebc4285d081fb2618e6e5b9a08c567afa"
- integrity sha512-X4pzcrJ8dE7M3ArFuySF5fgipKDd/EauXkiJwtjBIVRWpVNq0tF9+lNCyuC7iDUwP3Oq7ow/TGssD3GdG96Jow==
+vscode-emmet-helper@~2.0.0:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/vscode-emmet-helper/-/vscode-emmet-helper-2.0.8.tgz#7c3cf8027d1a75d29625e029d516da7bc56c1fdb"
+ integrity sha512-Wyf+b5pua+13eZSHCpmob1x915x/od4z6lIia9T2N4v7+CUYNxDisBu3/ShIM3qg3YiYvTCOm+Yx/CLd2khcVw==
dependencies:
- "@emmetio/extract-abbreviation" "0.1.6"
- jsonc-parser "^1.0.0"
- vscode-languageserver-types "^3.6.0-next.1"
+ emmet "^2.1.5"
+ jsonc-parser "^2.3.0"
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "^3.15.1"
+ vscode-uri "^2.1.2"
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==
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.1.4.tgz#0316dff77ee38dc176f40560cbf55e4f64f4f433"
+ integrity sha512-3M+bm+hNvwQcScVe5/ok9BXvctOiGJ4nlOkkFf+WKSDrYNkarZ/RByKOa1/iylbvZxJUPzbeziembWPe/dMvhw==
dependencies:
- vscode-languageserver-types "^3.15.0-next.2"
- vscode-nls "^4.1.1"
- vscode-uri "^2.0.3"
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-languageserver-types "3.16.0-next.2"
+ vscode-nls "^5.0.0"
+ vscode-uri "^2.1.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-textdocument@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz#178168e87efad6171b372add1dea34f53e5d330f"
+ integrity sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==
-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-languageserver-types@3.16.0-next.2:
+ version "3.16.0-next.2"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz#940bd15c992295a65eae8ab6b8568a1e8daa3083"
+ integrity sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==
-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-languageserver-types@^3.15.1:
+ version "3.15.1"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de"
+ integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==
-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-nls@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840"
+ integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==
+
+vscode-uri@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c"
+ integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==
vscode@1.0.1:
version "1.0.1"
@@ -2536,10 +2487,10 @@ xml@^1.0.0:
resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5"
integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=
-"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
- integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0, xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
xtend@~2.1.1:
version "2.1.2"
@@ -2554,16 +2505,16 @@ xtend@~3.0.0:
integrity sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=
yauzl@^2.2.1:
- version "2.9.1"
- resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.9.1.tgz#a81981ea70a57946133883f029c5821a89359a7f"
- integrity sha1-qBmB6nCleUYTOIPwKcWCGok1mn8=
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
+ integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
dependencies:
buffer-crc32 "~0.2.3"
- fd-slicer "~1.0.1"
+ fd-slicer "~1.1.0"
yazl@^2.2.1:
- version "2.4.3"
- resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.4.3.tgz#ec26e5cc87d5601b9df8432dbdd3cd2e5173a071"
- integrity sha1-7CblzIfVYBud+EMtvdPNLlFzoHE=
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35"
+ integrity sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==
dependencies:
buffer-crc32 "~0.2.3"
diff --git a/extensions/extension-editing/.vscodeignore b/extensions/extension-editing/.vscodeignore
index 9d384dd9061..de8e6dc5913 100644
--- a/extensions/extension-editing/.vscodeignore
+++ b/extensions/extension-editing/.vscodeignore
@@ -3,4 +3,5 @@ src/**
tsconfig.json
out/**
extension.webpack.config.js
-yarn.lock
\ No newline at end of file
+extension-browser.webpack.config.js
+yarn.lock
diff --git a/extensions/extension-editing/extension-browser.webpack.config.js b/extensions/extension-editing/extension-browser.webpack.config.js
new file mode 100644
index 00000000000..1018f45a81a
--- /dev/null
+++ b/extensions/extension-editing/extension-browser.webpack.config.js
@@ -0,0 +1,21 @@
+/*---------------------------------------------------------------------------------------------
+ * 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 withBrowserDefaults = require('../shared.webpack.config').browser;
+
+module.exports = withBrowserDefaults({
+ context: __dirname,
+ entry: {
+ extension: './src/extensionEditingBrowserMain.ts'
+ },
+ output: {
+ filename: 'extensionEditingBrowserMain.js'
+ }
+});
+
diff --git a/extensions/extension-editing/extension.webpack.config.js b/extensions/extension-editing/extension.webpack.config.js
index 40996d0caf5..82c41507169 100644
--- a/extensions/extension-editing/extension.webpack.config.js
+++ b/extensions/extension-editing/extension.webpack.config.js
@@ -12,7 +12,10 @@ const withDefaults = require('../shared.webpack.config');
module.exports = withDefaults({
context: __dirname,
entry: {
- extension: './src/extension.ts',
+ extension: './src/extensionEditingMain.ts',
+ },
+ output: {
+ filename: 'extensionEditingMain.js'
},
externals: {
'../../../product.json': 'commonjs ../../../product.json',
diff --git a/extensions/extension-editing/package.json b/extensions/extension-editing/package.json
index 75d77925b0d..bdd02d870a9 100644
--- a/extensions/extension-editing/package.json
+++ b/extensions/extension-editing/package.json
@@ -13,7 +13,8 @@
"onLanguage:markdown",
"onLanguage:typescript"
],
- "main": "./out/extension",
+ "main": "./out/extensionEditingMain",
+ "browser": "./dist/browser/extensionEditingBrowserMain",
"scripts": {
"compile": "gulp compile-extension:extension-editing",
"watch": "gulp watch-extension:extension-editing"
diff --git a/extensions/extension-editing/src/extensionEditingBrowserMain.ts b/extensions/extension-editing/src/extensionEditingBrowserMain.ts
new file mode 100644
index 00000000000..16f4d5e7d0b
--- /dev/null
+++ b/extensions/extension-editing/src/extensionEditingBrowserMain.ts
@@ -0,0 +1,21 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import * as vscode from 'vscode';
+import { PackageDocument } from './packageDocumentHelper';
+
+export function activate(context: vscode.ExtensionContext) {
+ //package.json suggestions
+ context.subscriptions.push(registerPackageDocumentCompletions());
+
+}
+
+function registerPackageDocumentCompletions(): vscode.Disposable {
+ return vscode.languages.registerCompletionItemProvider({ language: 'json', pattern: '**/package.json' }, {
+ provideCompletionItems(document, position, token) {
+ return new PackageDocument(document).provideCompletionItems(position, token);
+ }
+ });
+}
diff --git a/extensions/extension-editing/src/extension.ts b/extensions/extension-editing/src/extensionEditingMain.ts
similarity index 100%
rename from extensions/extension-editing/src/extension.ts
rename to extensions/extension-editing/src/extensionEditingMain.ts
diff --git a/extensions/extension-editing/src/extensionLinter.ts b/extensions/extension-editing/src/extensionLinter.ts
index b8514daface..3434bfbb4dc 100644
--- a/extensions/extension-editing/src/extensionLinter.ts
+++ b/extensions/extension-editing/src/extensionLinter.ts
@@ -16,6 +16,11 @@ import { languages, workspace, Disposable, TextDocument, Uri, Diagnostic, Range,
const product = JSON.parse(fs.readFileSync(path.join(env.appRoot, 'product.json'), { encoding: 'utf-8' }));
const allowedBadgeProviders: string[] = (product.extensionAllowedBadgeProviders || []).map((s: string) => s.toLowerCase());
+const allowedBadgeProvidersRegex: RegExp[] = (product.extensionAllowedBadgeProvidersRegex || []).map((r: string) => new RegExp(r));
+
+function isTrustedSVGSource(uri: Uri): boolean {
+ return allowedBadgeProviders.includes(uri.authority.toLowerCase()) || allowedBadgeProvidersRegex.some(r => r.test(uri.toString()));
+}
const httpsRequired = localize('httpsRequired', "Images must use the HTTPS protocol.");
const svgsNotValid = localize('svgsNotValid', "SVGs are not a valid image source.");
@@ -321,7 +326,7 @@ export class ExtensionLinter {
diagnostics.push(new Diagnostic(range, message, DiagnosticSeverity.Warning));
}
- if (endsWith(uri.path.toLowerCase(), '.svg') && allowedBadgeProviders.indexOf(uri.authority.toLowerCase()) === -1) {
+ if (endsWith(uri.path.toLowerCase(), '.svg') && !isTrustedSVGSource(uri)) {
const range = new Range(document.positionAt(begin), document.positionAt(end));
diagnostics.push(new Diagnostic(range, svgsNotValid, DiagnosticSeverity.Warning));
}
diff --git a/extensions/git/build/update-emoji.js b/extensions/git/build/update-emoji.js
new file mode 100644
index 00000000000..fadadb6e7d3
--- /dev/null
+++ b/extensions/git/build/update-emoji.js
@@ -0,0 +1,101 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+/* eslint-disable @typescript-eslint/no-var-requires */
+const fs = require('fs');
+const https = require('https');
+const path = require('path');
+
+async function generate() {
+ /**
+ * @type {Map}
+ */
+ const shortcodeMap = new Map();
+
+ // Get emoji data from https://github.com/milesj/emojibase
+ // https://github.com/milesj/emojibase/
+
+ const files = ['github.raw.json'] //, 'emojibase.raw.json']; //, 'iamcal.raw.json', 'joypixels.raw.json'];
+
+ for (const file of files) {
+ await download(
+ `https://raw.githubusercontent.com/milesj/emojibase/master/packages/data/en/shortcodes/${file}`,
+ file,
+ );
+
+ /**
+ * @type {Record}}
+ */
+ // eslint-disable-next-line import/no-dynamic-require
+ const data = require(path.join(process.cwd(), file));
+ for (const [emojis, codes] of Object.entries(data)) {
+ const emoji = emojis
+ .split('-')
+ .map(c => String.fromCodePoint(parseInt(c, 16)))
+ .join('');
+ for (const code of Array.isArray(codes) ? codes : [codes]) {
+ if (shortcodeMap.has(code)) {
+ // console.warn(`${file}: ${code}`);
+ continue;
+ }
+ shortcodeMap.set(code, emoji);
+ }
+ }
+
+ fs.unlink(file, () => { });
+ }
+
+ // Get gitmoji data from https://github.com/carloscuesta/gitmoji
+ // https://github.com/carloscuesta/gitmoji/blob/master/src/data/gitmojis.json
+ await download(
+ 'https://raw.githubusercontent.com/carloscuesta/gitmoji/master/src/data/gitmojis.json',
+ 'gitmojis.json',
+ );
+
+ /**
+ * @type {({ code: string; emoji: string })[]}
+ */
+ // eslint-disable-next-line import/no-dynamic-require
+ const gitmojis = require(path.join(process.cwd(), 'gitmojis.json')).gitmojis;
+ for (const emoji of gitmojis) {
+ if (emoji.code.startsWith(':') && emoji.code.endsWith(':')) {
+ emoji.code = emoji.code.substring(1, emoji.code.length - 2);
+ }
+
+ if (shortcodeMap.has(emoji.code)) {
+ // console.warn(`GitHub: ${emoji.code}`);
+ continue;
+ }
+ shortcodeMap.set(emoji.code, emoji.emoji);
+ }
+
+ fs.unlink('gitmojis.json', () => { });
+
+ // Sort the emojis for easier diff checking
+ const list = [...shortcodeMap.entries()];
+ list.sort();
+
+ const map = list.reduce((m, [key, value]) => {
+ m[key] = value;
+ return m;
+ }, Object.create(null));
+
+ fs.writeFileSync(path.join(process.cwd(), 'resources/emojis.json'), JSON.stringify(map), 'utf8');
+}
+
+function download(url, destination) {
+ return new Promise(resolve => {
+ const stream = fs.createWriteStream(destination);
+ https.get(url, rsp => {
+ rsp.pipe(stream);
+ stream.on('finish', () => {
+ stream.close();
+ resolve();
+ });
+ });
+ });
+}
+
+void generate();
diff --git a/extensions/git/package.json b/extensions/git/package.json
index d33bafbad5f..bf64cbad47d 100644
--- a/extensions/git/package.json
+++ b/extensions/git/package.json
@@ -14,13 +14,15 @@
"Other"
],
"activationEvents": [
- "*"
+ "*",
+ "onFileSystem:git"
],
"main": "./out/main",
"icon": "resources/icons/git.png",
"scripts": {
"compile": "gulp compile-extension:git",
"watch": "gulp watch-extension:git",
+ "update-emoji": "node ./build/update-emoji.js",
"update-grammar": "node ./build/update-grammars.js",
"test": "mocha"
},
@@ -36,6 +38,11 @@
"title": "%command.clone%",
"category": "Git"
},
+ {
+ "command": "git.cloneRecursive",
+ "title": "%command.cloneRecursive%",
+ "category": "Git"
+ },
{
"command": "git.init",
"title": "%command.init%",
@@ -174,6 +181,12 @@
"category": "Git",
"icon": "$(discard)"
},
+ {
+ "command": "git.rename",
+ "title": "%command.rename%",
+ "category": "Git",
+ "icon": "$(discard)"
+ },
{
"command": "git.commit",
"title": "%command.commit%",
@@ -215,6 +228,47 @@
"title": "%command.commitAllAmend%",
"category": "Git"
},
+ {
+ "command": "git.commitNoVerify",
+ "title": "%command.commitNoVerify%",
+ "category": "Git",
+ "icon": "$(check)"
+ },
+ {
+ "command": "git.commitStagedNoVerify",
+ "title": "%command.commitStagedNoVerify%",
+ "category": "Git"
+ },
+ {
+ "command": "git.commitEmptyNoVerify",
+ "title": "%command.commitEmptyNoVerify%",
+ "category": "Git"
+ },
+ {
+ "command": "git.commitStagedSignedNoVerify",
+ "title": "%command.commitStagedSignedNoVerify%",
+ "category": "Git"
+ },
+ {
+ "command": "git.commitStagedAmendNoVerify",
+ "title": "%command.commitStagedAmendNoVerify%",
+ "category": "Git"
+ },
+ {
+ "command": "git.commitAllNoVerify",
+ "title": "%command.commitAllNoVerify%",
+ "category": "Git"
+ },
+ {
+ "command": "git.commitAllSignedNoVerify",
+ "title": "%command.commitAllSignedNoVerify%",
+ "category": "Git"
+ },
+ {
+ "command": "git.commitAllAmendNoVerify",
+ "title": "%command.commitAllAmendNoVerify%",
+ "category": "Git"
+ },
{
"command": "git.restoreCommitTemplate",
"title": "%command.restoreCommitTemplate%",
@@ -230,6 +284,11 @@
"title": "%command.checkout%",
"category": "Git"
},
+ {
+ "command": "git.checkoutDetached",
+ "title": "%command.checkoutDetached%",
+ "category": "Git"
+ },
{
"command": "git.branch",
"title": "%command.branch%",
@@ -255,6 +314,11 @@
"title": "%command.merge%",
"category": "Git"
},
+ {
+ "command": "git.rebase",
+ "title": "%command.rebase%",
+ "category": "Git"
+ },
{
"command": "git.createTag",
"title": "%command.createTag%",
@@ -315,6 +379,11 @@
"title": "%command.pushToForce%",
"category": "Git"
},
+ {
+ "command": "git.pushTags",
+ "title": "%command.pushTags%",
+ "category": "Git"
+ },
{
"command": "git.pushWithTags",
"title": "%command.pushFollowTags%",
@@ -431,8 +500,8 @@
},
{
"command": "git.unstageSelectedRanges",
- "key": "ctrl+k ctrl+u",
- "mac": "cmd+k cmd+u",
+ "key": "ctrl+k ctrl+n",
+ "mac": "cmd+k cmd+n",
"when": "isInDiffEditor"
},
{
@@ -452,6 +521,10 @@
"command": "git.clone",
"when": "config.git.enabled && !git.missing"
},
+ {
+ "command": "git.cloneRecursive",
+ "when": "config.git.enabled && !git.missing"
+ },
{
"command": "git.init",
"when": "config.git.enabled && !git.missing"
@@ -548,6 +621,10 @@
"command": "git.cleanAllUntracked",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
},
+ {
+ "command": "git.rename",
+ "when": "false"
+ },
{
"command": "git.commit",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
@@ -580,6 +657,42 @@
"command": "git.commitAllAmend",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
},
+ {
+ "command": "git.rebaseAbort",
+ "when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0 && gitRebaseInProgress"
+ },
+ {
+ "command": "git.commitNoVerify",
+ "when": "config.git.enabled && !git.missing && config.git.allowNoVerifyCommit && gitOpenRepositoryCount != 0"
+ },
+ {
+ "command": "git.commitStagedNoVerify",
+ "when": "config.git.enabled && !git.missing && config.git.allowNoVerifyCommit && gitOpenRepositoryCount != 0"
+ },
+ {
+ "command": "git.commitEmptyNoVerify",
+ "when": "config.git.enabled && !git.missing && config.git.allowNoVerifyCommit && gitOpenRepositoryCount != 0"
+ },
+ {
+ "command": "git.commitStagedSignedNoVerify",
+ "when": "config.git.enabled && !git.missing && config.git.allowNoVerifyCommit && gitOpenRepositoryCount != 0"
+ },
+ {
+ "command": "git.commitStagedAmendNoVerify",
+ "when": "config.git.enabled && !git.missing && config.git.allowNoVerifyCommit && gitOpenRepositoryCount != 0"
+ },
+ {
+ "command": "git.commitAllNoVerify",
+ "when": "config.git.enabled && !git.missing && config.git.allowNoVerifyCommit && gitOpenRepositoryCount != 0"
+ },
+ {
+ "command": "git.commitAllSignedNoVerify",
+ "when": "config.git.enabled && !git.missing && config.git.allowNoVerifyCommit && gitOpenRepositoryCount != 0"
+ },
+ {
+ "command": "git.commitAllAmendNoVerify",
+ "when": "config.git.enabled && !git.missing && config.git.allowNoVerifyCommit && gitOpenRepositoryCount != 0"
+ },
{
"command": "git.restoreCommitTemplate",
"when": "false"
@@ -628,6 +741,10 @@
"command": "git.merge",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
},
+ {
+ "command": "git.rebase",
+ "when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
+ },
{
"command": "git.createTag",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
@@ -672,6 +789,10 @@
"command": "git.pushWithTagsForce",
"when": "config.git.enabled && !git.missing && config.git.allowForcePush && gitOpenRepositoryCount != 0"
},
+ {
+ "command": "git.pushTags",
+ "when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
+ },
{
"command": "git.addRemote",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
@@ -752,149 +873,64 @@
"group": "navigation",
"when": "scmProvider == git"
},
- {
- "command": "git.sync",
- "group": "1_sync",
- "when": "scmProvider == git"
- },
- {
- "command": "git.syncRebase",
- "group": "1_sync",
- "when": "scmProvider == git && gitState == idle"
- },
{
"command": "git.pull",
- "group": "1_sync",
- "when": "scmProvider == git"
- },
- {
- "command": "git.pullRebase",
- "group": "1_sync",
- "when": "scmProvider == git"
- },
- {
- "command": "git.pullFrom",
- "group": "1_sync",
+ "group": "1_header@1",
"when": "scmProvider == git"
},
{
"command": "git.push",
- "group": "1_sync",
+ "group": "1_header@2",
"when": "scmProvider == git"
},
{
- "command": "git.pushForce",
- "group": "1_sync",
- "when": "scmProvider == git && config.git.allowForcePush"
- },
- {
- "command": "git.pushTo",
- "group": "1_sync",
+ "command": "git.clone",
+ "group": "1_header@3",
"when": "scmProvider == git"
},
- {
- "command": "git.pushToForce",
- "group": "1_sync",
- "when": "scmProvider == git && config.git.allowForcePush"
- },
{
"command": "git.checkout",
- "group": "2_branch",
+ "group": "1_header@4",
"when": "scmProvider == git"
},
{
- "command": "git.publish",
- "group": "2_branch",
+ "submenu": "git.commit",
+ "group": "2_main@1",
"when": "scmProvider == git"
},
{
- "command": "git.commitStaged",
- "group": "4_commit",
+ "submenu": "git.changes",
+ "group": "2_main@2",
"when": "scmProvider == git"
},
{
- "command": "git.commitStagedSigned",
- "group": "4_commit",
+ "submenu": "git.pullpush",
+ "group": "2_main@3",
"when": "scmProvider == git"
},
{
- "command": "git.commitStagedAmend",
- "group": "4_commit",
+ "submenu": "git.branch",
+ "group": "2_main@4",
"when": "scmProvider == git"
},
{
- "command": "git.commitAll",
- "group": "4_commit",
+ "submenu": "git.remotes",
+ "group": "2_main@5",
"when": "scmProvider == git"
},
{
- "command": "git.commitAllSigned",
- "group": "4_commit",
+ "submenu": "git.stash",
+ "group": "2_main@6",
"when": "scmProvider == git"
},
{
- "command": "git.commitAllAmend",
- "group": "4_commit",
- "when": "scmProvider == git"
- },
- {
- "command": "git.undoCommit",
- "group": "4_commit",
- "when": "scmProvider == git"
- },
- {
- "command": "git.stageAll",
- "group": "5_stage",
- "when": "scmProvider == git"
- },
- {
- "command": "git.unstageAll",
- "group": "5_stage",
- "when": "scmProvider == git"
- },
- {
- "command": "git.cleanAll",
- "group": "5_stage",
- "when": "scmProvider == git"
- },
- {
- "command": "git.stashIncludeUntracked",
- "group": "6_stash",
- "when": "scmProvider == git"
- },
- {
- "command": "git.stash",
- "group": "6_stash",
- "when": "scmProvider == git"
- },
- {
- "command": "git.stashPop",
- "group": "6_stash",
- "when": "scmProvider == git"
- },
- {
- "command": "git.stashPopLatest",
- "group": "6_stash",
- "when": "scmProvider == git"
- },
- {
- "command": "git.stashApply",
- "group": "6_stash",
- "when": "scmProvider == git"
- },
- {
- "command": "git.stashApplyLatest",
- "group": "6_stash",
- "when": "scmProvider == git"
- },
- {
- "command": "git.stashDrop",
- "group": "6_stash",
+ "submenu": "git.tags",
+ "group": "2_main@7",
"when": "scmProvider == git"
},
{
"command": "git.showOutput",
- "group": "7_repository",
+ "group": "3_footer",
"when": "scmProvider == git"
}
],
@@ -1306,8 +1342,270 @@
"group": "5_copy@2",
"when": "config.git.enabled && !git.missing && timelineItem =~ /git:file:commit\\b/"
}
+ ],
+ "explorer/context": [
+ {
+ "submenu": "git.explorer",
+ "group": "7_git",
+ "when": "config.git.enabled && !git.missing && !explorerResourceIsRoot"
+ }
+ ],
+ "git.explorer": [
+ {
+ "command": "git.rename"
+ }
+ ],
+ "git.commit": [
+ {
+ "command": "git.commit",
+ "group": "1_commit@1"
+ },
+ {
+ "command": "git.commitStaged",
+ "group": "1_commit@2"
+ },
+ {
+ "command": "git.commitAll",
+ "group": "1_commit@3"
+ },
+ {
+ "command": "git.undoCommit",
+ "group": "1_commit@4"
+ },
+ {
+ "command": "git.rebaseAbort",
+ "group": "1_commit@5"
+ },
+ {
+ "command": "git.commitNoVerify",
+ "group": "1_commit@6",
+ "when": "config.git.allowNoVerifyCommit"
+ },
+ {
+ "command": "git.commitStagedNoVerify",
+ "group": "1_commit@7",
+ "when": "config.git.allowNoVerifyCommit"
+ },
+ {
+ "command": "git.commitAllNoVerify",
+ "group": "1_commit@8",
+ "when": "config.git.allowNoVerifyCommit"
+ },
+ {
+ "command": "git.commitStagedAmend",
+ "group": "2_amend@1"
+ },
+ {
+ "command": "git.commitAllAmend",
+ "group": "2_amend@2"
+ },
+ {
+ "command": "git.commitStagedAmendNoVerify",
+ "group": "2_amend@3",
+ "when": "config.git.allowNoVerifyCommit"
+ },
+ {
+ "command": "git.commitAllAmendNoVerify",
+ "group": "2_amend@4",
+ "when": "config.git.allowNoVerifyCommit"
+ },
+ {
+ "command": "git.commitStagedSigned",
+ "group": "3_signoff@1"
+ },
+ {
+ "command": "git.commitAllSigned",
+ "group": "3_signoff@2"
+ },
+ {
+ "command": "git.commitStagedSignedNoVerify",
+ "group": "3_signoff@3",
+ "when": "config.git.allowNoVerifyCommit"
+ },
+ {
+ "command": "git.commitAllSignedNoVerify",
+ "group": "3_signoff@4",
+ "when": "config.git.allowNoVerifyCommit"
+ }
+ ],
+ "git.changes": [
+ {
+ "command": "git.stageAll",
+ "group": "changes@1"
+ },
+ {
+ "command": "git.unstageAll",
+ "group": "changes@2"
+ },
+ {
+ "command": "git.cleanAll",
+ "group": "changes@3"
+ }
+ ],
+ "git.pullpush": [
+ {
+ "command": "git.sync",
+ "group": "1_sync@1"
+ },
+ {
+ "command": "git.syncRebase",
+ "when": "gitState == idle",
+ "group": "1_sync@2"
+ },
+ {
+ "command": "git.pull",
+ "group": "2_pull@1"
+ },
+ {
+ "command": "git.pullRebase",
+ "group": "2_pull@2"
+ },
+ {
+ "command": "git.pullFrom",
+ "group": "2_pull@3"
+ },
+ {
+ "command": "git.push",
+ "group": "3_push@1"
+ },
+ {
+ "command": "git.pushForce",
+ "when": "config.git.allowForcePush",
+ "group": "3_push@2"
+ },
+ {
+ "command": "git.pushTo",
+ "group": "3_push@3"
+ },
+ {
+ "command": "git.pushToForce",
+ "when": "config.git.allowForcePush",
+ "group": "3_push@4"
+ },
+ {
+ "command": "git.fetch",
+ "group": "4_fetch@1"
+ },
+ {
+ "command": "git.fetchPrune",
+ "group": "4_fetch@2"
+ },
+ {
+ "command": "git.fetchAll",
+ "group": "4_fetch@3"
+ }
+ ],
+ "git.branch": [
+ {
+ "command": "git.merge",
+ "group": "branch@1"
+ },
+ {
+ "command": "git.rebase",
+ "group": "branch@2"
+ },
+ {
+ "command": "git.branch",
+ "group": "branch@3"
+ },
+ {
+ "command": "git.branchFrom",
+ "group": "branch@4"
+ },
+ {
+ "command": "git.renameBranch",
+ "group": "branch@5"
+ },
+ {
+ "command": "git.publish",
+ "group": "branch@6"
+ }
+ ],
+ "git.remotes": [
+ {
+ "command": "git.addRemote",
+ "group": "remote@1"
+ },
+ {
+ "command": "git.removeRemote",
+ "group": "remote@2"
+ }
+ ],
+ "git.stash": [
+ {
+ "command": "git.stash",
+ "group": "stash@1"
+ },
+ {
+ "command": "git.stashIncludeUntracked",
+ "group": "stash@2"
+ },
+ {
+ "command": "git.stashApplyLatest",
+ "group": "stash@3"
+ },
+ {
+ "command": "git.stashApply",
+ "group": "stash@4"
+ },
+ {
+ "command": "git.stashPopLatest",
+ "group": "stash@5"
+ },
+ {
+ "command": "git.stashPop",
+ "group": "stash@6"
+ },
+ {
+ "command": "git.stashDrop",
+ "group": "stash@7"
+ }
+ ],
+ "git.tags": [
+ {
+ "command": "git.createTag",
+ "group": "tags@1"
+ },
+ {
+ "command": "git.deleteTag",
+ "group": "tags@2"
+ }
]
},
+ "submenus": [
+ {
+ "id": "git.explorer",
+ "label": "%submenu.explorer%"
+ },
+ {
+ "id": "git.commit",
+ "label": "%submenu.commit%"
+ },
+ {
+ "id": "git.changes",
+ "label": "%submenu.changes%"
+ },
+ {
+ "id": "git.pullpush",
+ "label": "%submenu.pullpush%"
+ },
+ {
+ "id": "git.branch",
+ "label": "%submenu.branch%"
+ },
+ {
+ "id": "git.remotes",
+ "label": "%submenu.remotes%"
+ },
+ {
+ "id": "git.stash",
+ "label": "%submenu.stash%"
+ },
+ {
+ "id": "git.tags",
+ "label": "%submenu.tags%"
+ }
+ ],
"configuration": {
"title": "Git",
"properties": {
@@ -1320,7 +1618,8 @@
"git.path": {
"type": [
"string",
- "null"
+ "null",
+ "array"
],
"markdownDescription": "%config.path%",
"default": null,
@@ -1398,21 +1697,27 @@
"scope": "resource"
},
"git.checkoutType": {
- "type": "string",
- "enum": [
- "all",
- "local",
- "tags",
- "remote"
- ],
- "enumDescriptions": [
- "%config.checkoutType.all%",
- "%config.checkoutType.local%",
- "%config.checkoutType.tags%",
- "%config.checkoutType.remote%"
- ],
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "local",
+ "tags",
+ "remote"
+ ],
+ "enumDescriptions": [
+ "%config.checkoutType.local%",
+ "%config.checkoutType.tags%",
+ "%config.checkoutType.remote%"
+ ]
+ },
+ "uniqueItems": true,
"markdownDescription": "%config.checkoutType%",
- "default": "all"
+ "default": [
+ "local",
+ "remote",
+ "tags"
+ ]
},
"git.ignoreLegacyWarning": {
"type": "boolean",
@@ -1424,6 +1729,11 @@
"description": "%config.ignoreMissingGitWarning%",
"default": false
},
+ "git.ignoreWindowsGit27Warning": {
+ "type": "boolean",
+ "description": "%config.ignoreWindowsGit27Warning%",
+ "default": false
+ },
"git.ignoreLimitWarning": {
"type": "boolean",
"description": "%config.ignoreLimitWarning%",
@@ -1435,6 +1745,7 @@
"null"
],
"default": null,
+ "scope": "machine",
"description": "%config.defaultCloneDirectory%"
},
"git.enableSmartCommit": {
@@ -1486,6 +1797,28 @@
"description": "%config.enableStatusBarSync%",
"scope": "resource"
},
+ "git.followTagsWhenSync": {
+ "type": "boolean",
+ "scope": "resource",
+ "default": false,
+ "description": "%config.followTagsWhenSync%"
+ },
+ "git.promptToSaveFilesBeforeStash": {
+ "type": "string",
+ "enum": [
+ "always",
+ "staged",
+ "never"
+ ],
+ "enumDescriptions": [
+ "%config.promptToSaveFilesBeforeStash.always%",
+ "%config.promptToSaveFilesBeforeStash.staged%",
+ "%config.promptToSaveFilesBeforeStash.never%"
+ ],
+ "scope": "resource",
+ "default": "always",
+ "description": "%config.promptToSaveFilesBeforeStash%"
+ },
"git.promptToSaveFilesBeforeCommit": {
"type": "string",
"enum": [
@@ -1518,6 +1851,23 @@
"scope": "resource",
"default": "none"
},
+ "git.openAfterClone": {
+ "type": "string",
+ "enum": [
+ "always",
+ "alwaysNewWindow",
+ "whenNoFolderOpen",
+ "prompt"
+ ],
+ "enumDescriptions": [
+ "%config.openAfterClone.always%",
+ "%config.openAfterClone.alwaysNewWindow%",
+ "%config.openAfterClone.whenNoFolderOpen%",
+ "%config.openAfterClone.prompt%"
+ ],
+ "default": "prompt",
+ "description": "%config.openAfterClone%"
+ },
"git.showInlineOpenFileAction": {
"type": "boolean",
"default": true,
@@ -1575,6 +1925,12 @@
"default": false,
"description": "%config.alwaysSignOff%"
},
+ "git.ignoreSubmodules": {
+ "type": "boolean",
+ "scope": "resource",
+ "default": false,
+ "description": "%config.ignoreSubmodules%"
+ },
"git.ignoredRepositories": {
"type": "array",
"items": {
@@ -1611,6 +1967,12 @@
"default": false,
"description": "%config.fetchOnPull%"
},
+ "git.pruneOnFetch": {
+ "type": "boolean",
+ "scope": "resource",
+ "default": false,
+ "description": "%config.pruneOnFetch%"
+ },
"git.pullTags": {
"type": "boolean",
"scope": "resource",
@@ -1638,6 +2000,16 @@
"default": true,
"description": "%config.confirmForcePush%"
},
+ "git.allowNoVerifyCommit": {
+ "type": "boolean",
+ "default": false,
+ "description": "%config.allowNoVerifyCommit%"
+ },
+ "git.confirmNoVerifyCommit": {
+ "type": "boolean",
+ "default": true,
+ "description": "%config.confirmNoVerifyCommit%"
+ },
"git.openDiffOnClick": {
"type": "boolean",
"scope": "resource",
@@ -1689,6 +2061,25 @@
},
"git.githubAuthentication": {
"deprecationMessage": "This setting is now deprecated, please use `github.gitAuthentication` instead."
+ },
+ "git.timeline.date": {
+ "enum": [
+ "committed",
+ "authored"
+ ],
+ "enumDescriptions": [
+ "%config.timeline.date.committed%",
+ "%config.timeline.date.authored%"
+ ],
+ "default": "committed",
+ "description": "%config.timeline.date%",
+ "scope": "window"
+ },
+ "git.timeline.showAuthor": {
+ "type": "boolean",
+ "default": true,
+ "description": "%config.timeline.showAuthor%",
+ "scope": "window"
}
}
},
@@ -1738,6 +2129,24 @@
"highContrast": "#A7A8A9"
}
},
+ {
+ "id": "gitDecoration.stageModifiedResourceForeground",
+ "description": "%colors.stageModified%",
+ "defaults": {
+ "light": "#895503",
+ "dark": "#E2C08D",
+ "highContrast": "#E2C08D"
+ }
+ },
+ {
+ "id": "gitDecoration.stageDeletedResourceForeground",
+ "description": "%colors.stageDeleted%",
+ "defaults": {
+ "light": "#ad0707",
+ "dark": "#c74e39",
+ "highContrast": "#c74e39"
+ }
+ },
{
"id": "gitDecoration.conflictingResourceForeground",
"description": "%colors.conflict%",
@@ -1788,8 +2197,8 @@
"diff"
],
"extensions": [
- ".patch",
".diff",
+ ".patch",
".rej"
],
"configuration": "./languages/diff.language-configuration.json"
@@ -1800,7 +2209,7 @@
"Ignore",
"ignore"
],
- "filenames": [
+ "extensions": [
".gitignore_global",
".gitignore"
],
@@ -1833,7 +2242,11 @@
"[git-commit]": {
"editor.rulers": [
72
- ]
+ ],
+ "workbench.editor.restoreViewState": false
+ },
+ "[git-rebase]": {
+ "workbench.editor.restoreViewState": false
}
},
"viewsWelcome": [
@@ -1850,35 +2263,40 @@
{
"view": "scm",
"contents": "%view.workbench.scm.empty%",
- "when": "config.git.enabled && git.state == initialized && workbenchState == empty"
+ "when": "config.git.enabled && git.state == initialized && workbenchState == empty",
+ "group": "2_open@1"
},
{
"view": "scm",
"contents": "%view.workbench.scm.folder%",
- "when": "config.git.enabled && git.state == initialized && workbenchState == folder"
+ "when": "config.git.enabled && git.state == initialized && workbenchState == folder",
+ "group": "5_scm@1"
},
{
"view": "scm",
"contents": "%view.workbench.scm.workspace%",
- "when": "config.git.enabled && git.state == initialized && workbenchState == workspace && workspaceFolderCount != 0"
+ "when": "config.git.enabled && git.state == initialized && workbenchState == workspace && workspaceFolderCount != 0",
+ "group": "5_scm@1"
},
{
"view": "scm",
"contents": "%view.workbench.scm.emptyWorkspace%",
- "when": "config.git.enabled && git.state == initialized && workbenchState == workspace && workspaceFolderCount == 0"
+ "when": "config.git.enabled && git.state == initialized && workbenchState == workspace && workspaceFolderCount == 0",
+ "group": "2_open@1"
},
{
"view": "explorer",
"contents": "%view.workbench.cloneRepository%",
- "when": "config.git.enabled"
+ "when": "config.git.enabled && git.state == initialized",
+ "group": "5_scm@1"
}
]
},
"dependencies": {
"byline": "^5.0.0",
"file-type": "^7.2.0",
- "iconv-lite": "^0.4.24",
- "jschardet": "2.1.1",
+ "iconv-lite-umd": "0.6.8",
+ "jschardet": "2.2.1",
"vscode-extension-telemetry": "0.1.1",
"vscode-nls": "^4.0.0",
"vscode-uri": "^2.0.0",
diff --git a/extensions/git/package.nls.json b/extensions/git/package.nls.json
index be817e22df1..68bef77a393 100644
--- a/extensions/git/package.nls.json
+++ b/extensions/git/package.nls.json
@@ -3,6 +3,7 @@
"description": "Git SCM Integration",
"command.setLogLevel": "Set Log Level...",
"command.clone": "Clone",
+ "command.cloneRecursive": "Clone (Recursive)",
"command.init": "Initialize Repository",
"command.openRepository": "Open Repository",
"command.close": "Close Repository",
@@ -22,6 +23,7 @@
"command.unstage": "Unstage Changes",
"command.unstageAll": "Unstage All Changes",
"command.unstageSelectedRanges": "Unstage Selected Ranges",
+ "command.rename": "Rename",
"command.clean": "Discard Changes",
"command.cleanAll": "Discard All Changes",
"command.cleanAllTracked": "Discard All Tracked Changes",
@@ -34,14 +36,24 @@
"command.commitAll": "Commit All",
"command.commitAllSigned": "Commit All (Signed Off)",
"command.commitAllAmend": "Commit All (Amend)",
+ "command.commitNoVerify": "Commit (No Verify)",
+ "command.commitStagedNoVerify": "Commit Staged (No Verify)",
+ "command.commitEmptyNoVerify": "Commit Empty (No Verify)",
+ "command.commitStagedSignedNoVerify": "Commit Staged (Signed Off, No Verify)",
+ "command.commitStagedAmendNoVerify": "Commit Staged (Amend, No Verify)",
+ "command.commitAllNoVerify": "Commit All (No Verify)",
+ "command.commitAllSignedNoVerify": "Commit All (Signed Off, No Verify)",
+ "command.commitAllAmendNoVerify": "Commit All (Amend, No Verify)",
"command.restoreCommitTemplate": "Restore Commit Template",
"command.undoCommit": "Undo Last Commit",
"command.checkout": "Checkout to...",
+ "command.checkoutDetached": "Checkout to (Detached)...",
"command.branch": "Create Branch...",
"command.branchFrom": "Create Branch From...",
"command.deleteBranch": "Delete Branch...",
"command.renameBranch": "Rename Branch...",
"command.merge": "Merge Branch...",
+ "command.rebase": "Rebase Branch...",
"command.createTag": "Create Tag",
"command.deleteTag": "Delete Tag",
"command.fetch": "Fetch",
@@ -56,6 +68,7 @@
"command.pushToForce": "Push to... (Force)",
"command.pushFollowTags": "Push (Follow Tags)",
"command.pushFollowTagsForce": "Push (Follow Tags, Force)",
+ "command.pushTags": "Push Tags",
"command.addRemote": "Add Remote...",
"command.removeRemote": "Remove Remote",
"command.sync": "Sync",
@@ -76,7 +89,7 @@
"command.timelineCopyCommitId": "Copy Commit ID",
"command.timelineCopyCommitMessage": "Copy Commit Message",
"config.enabled": "Whether git is enabled.",
- "config.path": "Path and filename of the git executable, e.g. `C:\\Program Files\\Git\\bin\\git.exe` (Windows).",
+ "config.path": "Path and filename of the git executable, e.g. `C:\\Program Files\\Git\\bin\\git.exe` (Windows). This can also be an array of string values containing multiple paths to look up.",
"config.autoRepositoryDetection": "Configures when repositories should be automatically detected.",
"config.autoRepositoryDetection.true": "Scan for both subfolders of the current opened folder and parent folders of open files.",
"config.autoRepositoryDetection.false": "Disable automatic repository scanning.",
@@ -90,15 +103,15 @@
"config.countBadge.all": "Count all changes.",
"config.countBadge.tracked": "Count only tracked changes.",
"config.countBadge.off": "Turn off counter.",
- "config.checkoutType": "Controls what type of branches are listed when running `Checkout to...`.",
- "config.checkoutType.all": "Show all references.",
- "config.checkoutType.local": "Show only local branches.",
- "config.checkoutType.tags": "Show only tags.",
- "config.checkoutType.remote": "Show only remote branches.",
+ "config.checkoutType": "Controls what type of git refs are listed when running `Checkout to...`.",
+ "config.checkoutType.local": "Local branches",
+ "config.checkoutType.tags": "Tags",
+ "config.checkoutType.remote": "Remote branches",
"config.branchValidationRegex": "A regular expression to validate new branch names.",
"config.branchWhitespaceChar": "The character to replace whitespace in new branch names.",
"config.ignoreLegacyWarning": "Ignores the legacy Git warning.",
"config.ignoreMissingGitWarning": "Ignores the warning when Git is missing.",
+ "config.ignoreWindowsGit27Warning": "Ignores the warning when Git 2.25 - 2.26 is installed on Windows.",
"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.",
@@ -106,10 +119,15 @@
"config.smartCommitChanges.all": "Automatically stage all changes.",
"config.smartCommitChanges.tracked": "Automatically stage tracked changes only.",
"config.suggestSmartCommit": "Suggests to enable smart commit (commit all changes when there are no staged changes).",
- "config.enableCommitSigning": "Enables commit signing with GPG.",
+ "config.enableCommitSigning": "Enables commit signing with GPG or X.509.",
"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.",
"config.enableStatusBarSync": "Controls whether the Git Sync command appears in the status bar.",
+ "config.followTagsWhenSync": "Follow push all tags when running the sync command.",
+ "config.promptToSaveFilesBeforeStash": "Controls whether Git should check for unsaved files before stashing changes.",
+ "config.promptToSaveFilesBeforeStash.always": "Check for any unsaved files.",
+ "config.promptToSaveFilesBeforeStash.staged": "Check only for unsaved staged files.",
+ "config.promptToSaveFilesBeforeStash.never": "Disable this check.",
"config.promptToSaveFilesBeforeCommit": "Controls whether Git should check for unsaved files before committing.",
"config.promptToSaveFilesBeforeCommit.always": "Check for any unsaved files.",
"config.promptToSaveFilesBeforeCommit.staged": "Check only for unsaved staged files.",
@@ -118,6 +136,11 @@
"config.postCommitCommand.none": "Don't run any command after a commit.",
"config.postCommitCommand.push": "Run 'Git Push' after a successful commit.",
"config.postCommitCommand.sync": "Run 'Git Sync' after a successful commit.",
+ "config.openAfterClone": "Controls whether to open a repository automatically after cloning.",
+ "config.openAfterClone.always": "Always open in current window.",
+ "config.openAfterClone.alwaysNewWindow": "Always open in a new window.",
+ "config.openAfterClone.whenNoFolderOpen": "Only open in current window when no folder is opened.",
+ "config.openAfterClone.prompt": "Always prompt for action.",
"config.showInlineOpenFileAction": "Controls whether to show an inline Open File action in the Git changes view.",
"config.showPushSuccessNotification": "Controls whether to show a notification when a push is successful.",
"config.inputValidation": "Controls when to show commit message input validation.",
@@ -127,6 +150,7 @@
"config.detectSubmodulesLimit": "Controls the limit of git submodules detected.",
"config.alwaysShowStagedChangesResourceGroup": "Always show the Staged Changes resource group.",
"config.alwaysSignOff": "Controls the signoff flag for all commits.",
+ "config.ignoreSubmodules": "Ignore modifications to submodules in the file tree.",
"config.ignoredRepositories": "List of git repositories to ignore.",
"config.scanRepositories": "List of paths to search for git repositories in.",
"config.showProgress": "Controls whether git actions should show progress.",
@@ -134,10 +158,13 @@
"config.confirmEmptyCommits": "Always confirm the creation of empty commits for the 'Git: Commit Empty' command.",
"config.fetchOnPull": "When enabled, fetch all branches when pulling. Otherwise, fetch just the current one.",
"config.pullTags": "Fetch all tags when pulling.",
+ "config.pruneOnFetch": "Prune when fetching.",
"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.allowNoVerifyCommit": "Controls whether commits without running pre-commit and commit-msg hooks are allowed.",
+ "config.confirmNoVerifyCommit": "Controls whether to ask for confirmation before commiting without verification.",
"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.",
"config.branchSortOrder": "Controls the sort order for branches.",
@@ -147,8 +174,24 @@
"config.untrackedChanges.hidden": "Untracked changes are hidden and excluded from several actions.",
"config.showCommitInput": "Controls whether to show the commit input in the Git source control panel.",
"config.terminalAuthentication": "Controls whether to enable VS Code to be the authentication handler for git processes spawned in the integrated terminal. Note: terminals need to be restarted to pick up a change in this setting.",
+ "config.timeline.showAuthor": "Controls whether to show the commit author in the Timeline view",
+ "config.timeline.date": "Controls which date to use for items in the Timeline view",
+ "config.timeline.date.committed": "Use the committed date",
+ "config.timeline.date.authored": "Use the authored date",
+ "submenu.explorer": "Git",
+ "submenu.commit": "Commit",
+ "submenu.commit.amend": "Amend",
+ "submenu.commit.signoff": "Sign Off",
+ "submenu.changes": "Changes",
+ "submenu.pullpush": "Pull, Push",
+ "submenu.branch": "Branch",
+ "submenu.remotes": "Remote",
+ "submenu.stash": "Stash",
+ "submenu.tags": "Tags",
"colors.added": "Color for added resources.",
"colors.modified": "Color for modified resources.",
+ "colors.stageModified": "Color for modified resources which have been staged.",
+ "colors.stageDeleted": "Color for deleted resources which have been staged.",
"colors.deleted": "Color for deleted resources.",
"colors.untracked": "Color for untracked resources.",
"colors.ignored": "Color for ignored resources.",
@@ -157,8 +200,8 @@
"view.workbench.scm.missing": "A valid git installation was not detected, more details can be found in the [git output](command:git.showOutput).\nPlease [install git](https://git-scm.com/), or learn more about how to use git and source control in VS Code in [our docs](https://aka.ms/vscode-scm).\nIf you're using a different version control system, you can [search the Marketplace](command:workbench.extensions.search?%22%40category%3A%5C%22scm%20providers%5C%22%22) for additional extensions.",
"view.workbench.scm.disabled": "If you would like to use git features, please enable git in your [settings](command:workbench.action.openSettings?%5B%22git.enabled%22%5D).\nTo learn more about how to use git and source control in VS Code [read our docs](https://aka.ms/vscode-scm).",
"view.workbench.scm.empty": "In order to use git features, you can open a folder containing a git repository or clone from a URL.\n[Open Folder](command:vscode.openFolder)\n[Clone Repository](command:git.clone)\nTo learn more about how to use git and source control in VS Code [read our docs](https://aka.ms/vscode-scm).",
- "view.workbench.scm.folder": "The folder currently open doesn't have a git repository.\n[Initialize Repository](command:git.init?%5Btrue%5D)\nTo learn more about how to use git and source control in VS Code [read our docs](https://aka.ms/vscode-scm).",
- "view.workbench.scm.workspace": "The workspace currently open doesn't have any folders containing git repositories.\n[Initialize Repository](command:git.init)\nTo learn more about how to use git and source control in VS Code [read our docs](https://aka.ms/vscode-scm).",
+ "view.workbench.scm.folder": "The folder currently open doesn't have a git repository. You can initialize a repository which will enable source control features powered by git.\n[Initialize Repository](command:git.init?%5Btrue%5D)\nTo learn more about how to use git and source control in VS Code [read our docs](https://aka.ms/vscode-scm).",
+ "view.workbench.scm.workspace": "The workspace currently open doesn't have any folders containing git repositories. You can initialize a repository on a folder which will enable source control features powered by git.\n[Initialize Repository](command:git.init)\nTo learn more about how to use git and source control in VS Code [read our docs](https://aka.ms/vscode-scm).",
"view.workbench.scm.emptyWorkspace": "The workspace currently open doesn't have any folders containing git repositories.\n[Add Folder to Workspace](command:workbench.action.addRootFolder)\nTo learn more about how to use git and source control in VS Code [read our docs](https://aka.ms/vscode-scm).",
"view.workbench.cloneRepository": "You can also clone a repository from a URL. To learn more about how to use git and source control in VS Code [read our docs](https://aka.ms/vscode-scm).\n[Clone Repository](command:git.clone)"
}
diff --git a/extensions/git/resources/emojis.json b/extensions/git/resources/emojis.json
new file mode 100644
index 00000000000..84556dcda5b
--- /dev/null
+++ b/extensions/git/resources/emojis.json
@@ -0,0 +1 @@
+{"100":"💯","1234":"🔢","+1":"ðŸ‘","-1":"👎","1st_place_medal":"🥇","2nd_place_medal":"🥈","3rd_place_medal":"🥉","8ball":"🎱","a":"🅰","ab":"🆎","abacus":"🧮","abc":"🔤","abcd":"🔡","accept":"🉑","adhesive_bandage":"🩹","adult":"🧑","aerial_tramway":"🚡","afghanistan":"🇦🇫","airplane":"✈","aland_islands":"🇦🇽","alarm_clock":"â°","albania":"🇦🇱","alembi":"âš—","alembic":"âš—","algeria":"🇩🇿","alie":"👽","alien":"👽","ambulanc":"🚑","ambulance":"🚑","american_samoa":"🇦🇸","amphora":"ðŸº","anchor":"âš“","andorra":"🇦🇩","angel":"👼","anger":"💢","angola":"🇦🇴","angry":"😠","anguilla":"🇦🇮","anguished":"😧","ant":"ðŸœ","antarctica":"🇦🇶","antigua_barbuda":"🇦🇬","apple":"ðŸŽ","aquarius":"â™’","ar":"🎨","argentina":"🇦🇷","aries":"♈","armenia":"🇦🇲","arrow_backward":"â—€","arrow_double_down":"â¬","arrow_double_up":"â«","arrow_dow":"⬇ï¸","arrow_down":"⬇","arrow_down_small":"🔽","arrow_forward":"â–¶","arrow_heading_down":"⤵","arrow_heading_up":"⤴","arrow_left":"⬅","arrow_lower_left":"↙","arrow_lower_right":"↘","arrow_right":"âž¡","arrow_right_hook":"↪","arrow_u":"⬆ï¸","arrow_up":"⬆","arrow_up_down":"↕","arrow_up_small":"🔼","arrow_upper_left":"↖","arrow_upper_right":"↗","arrows_clockwise":"🔃","arrows_counterclockwise":"🔄","art":"🎨","articulated_lorry":"🚛","artificial_satellite":"🛰","artist":"🧑â€ðŸŽ¨","aruba":"🇦🇼","ascension_island":"🇦🇨","asterisk":"*ï¸âƒ£","astonished":"😲","astronaut":"🧑â€ðŸš€","athletic_shoe":"👟","atm":"ðŸ§","atom_symbol":"âš›","australia":"🇦🇺","austria":"🇦🇹","auto_rickshaw":"🛺","avocado":"🥑","axe":"🪓","azerbaijan":"🇦🇿","b":"🅱","baby":"👶","baby_bottle":"ðŸ¼","baby_chick":"ðŸ¤","baby_symbol":"🚼","back":"🔙","bacon":"🥓","badger":"🦡","badminton":"ðŸ¸","bagel":"🥯","baggage_claim":"🛄","baguette_bread":"🥖","bahamas":"🇧🇸","bahrain":"🇧ðŸ‡","balance_scale":"âš–","bald_man":"👨â€ðŸ¦²","bald_woman":"👩â€ðŸ¦²","ballet_shoes":"🩰","balloon":"🎈","ballot_box":"🗳","ballot_box_with_check":"☑","bamboo":"ðŸŽ","banana":"ðŸŒ","bangbang":"‼","bangladesh":"🇧🇩","banjo":"🪕","bank":"ðŸ¦","bar_chart":"📊","barbados":"🇧🇧","barber":"💈","baseball":"âš¾","basket":"🧺","basketball":"ðŸ€","basketball_man":"⛹ï¸â€â™‚ï¸","basketball_woman":"⛹ï¸â€â™€ï¸","bat":"🦇","bath":"🛀","bathtub":"ðŸ›","battery":"🔋","beach_umbrella":"ðŸ–","bear":"ðŸ»","bearded_person":"🧔","bed":"ðŸ›","bee":"ðŸ","beer":"ðŸº","beers":"ðŸ»","beetle":"ðŸž","beginner":"🔰","belarus":"🇧🇾","belgium":"🇧🇪","belize":"🇧🇿","bell":"🔔","bellhop_bell":"🛎","benin":"🇧🇯","bent":"ðŸ±","bento":"ðŸ±","bermuda":"🇧🇲","beverage_box":"🧃","bhutan":"🇧🇹","bicyclist":"🚴","bike":"🚲","biking_man":"🚴â€â™‚ï¸","biking_woman":"🚴â€â™€ï¸","bikini":"👙","billed_cap":"🧢","biohazard":"☣","bird":"ðŸ¦","birthday":"🎂","black_circle":"âš«","black_flag":"ðŸ´","black_heart":"🖤","black_joker":"ðŸƒ","black_large_square":"⬛","black_medium_small_square":"â—¾","black_medium_square":"â—¼","black_nib":"✒","black_small_square":"â–ª","black_square_button":"🔲","blond_haired_man":"👱â€â™‚ï¸","blond_haired_person":"👱","blond_haired_woman":"👱â€â™€ï¸","blonde_woman":"👱â€â™€ï¸","blossom":"🌼","blowfish":"ðŸ¡","blue_book":"📘","blue_car":"🚙","blue_heart":"💙","blue_square":"🟦","blush":"😊","boar":"ðŸ—","boat":"⛵","bolivia":"🇧🇴","bomb":"💣","bone":"🦴","boo":"💥","book":"📖","bookmar":"🔖","bookmark":"🔖","bookmark_tabs":"📑","books":"📚","boom":"💥","boot":"👢","bosnia_herzegovina":"🇧🇦","botswana":"🇧🇼","bouncing_ball_man":"⛹ï¸â€â™‚ï¸","bouncing_ball_person":"⛹","bouncing_ball_woman":"⛹ï¸â€â™€ï¸","bouquet":"ðŸ’","bouvet_island":"🇧🇻","bow":"🙇","bow_and_arrow":"ðŸ¹","bowing_man":"🙇â€â™‚ï¸","bowing_woman":"🙇â€â™€ï¸","bowl_with_spoon":"🥣","bowling":"🎳","boxing_glove":"🥊","boy":"👦","brain":"🧠","brazil":"🇧🇷","bread":"ðŸž","breast_feeding":"🤱","bricks":"🧱","bride_with_veil":"👰","bridge_at_night":"🌉","briefcase":"💼","british_indian_ocean_territory":"🇮🇴","british_virgin_islands":"🇻🇬","broccoli":"🥦","broken_heart":"💔","broom":"🧹","brown_circle":"🟤","brown_heart":"🤎","brown_square":"🟫","brunei":"🇧🇳","bu":"ðŸ›","bug":"ðŸ›","building_constructio":"ðŸ—","building_construction":"ðŸ—","bul":"💡","bulb":"💡","bulgaria":"🇧🇬","bullettrain_front":"🚅","bullettrain_side":"🚄","burkina_faso":"🇧🇫","burrito":"🌯","burundi":"🇧🇮","bus":"🚌","business_suit_levitating":"🕴","busstop":"ðŸš","bust_in_silhouette":"👤","busts_in_silhouett":"👥","busts_in_silhouette":"👥","butter":"🧈","butterfly":"🦋","cactus":"🌵","cake":"ðŸ°","calendar":"📆","call_me_hand":"🤙","calling":"📲","cambodia":"🇰ðŸ‡","camel":"ðŸ«","camera":"📷","camera_flas":"📸","camera_flash":"📸","cameroon":"🇨🇲","camping":"ðŸ•","canada":"🇨🇦","canary_islands":"🇮🇨","cancer":"♋","candle":"🕯","candy":"ðŸ¬","canned_food":"🥫","canoe":"🛶","cape_verde":"🇨🇻","capital_abcd":"🔠","capricorn":"♑","car":"🚗","card_file_bo":"🗃","card_file_box":"🗃","card_index":"📇","card_index_dividers":"🗂","caribbean_netherlands":"🇧🇶","carousel_horse":"🎠","carrot":"🥕","cartwheeling":"🤸","cat":"ðŸ±","cat2":"ðŸˆ","cayman_islands":"🇰🇾","cd":"💿","central_african_republic":"🇨🇫","ceuta_melilla":"🇪🇦","chad":"🇹🇩","chains":"⛓","chair":"🪑","champagne":"ðŸ¾","chart":"💹","chart_with_downwards_trend":"📉","chart_with_upwards_tren":"📈","chart_with_upwards_trend":"📈","checkered_flag":"ðŸ","cheese":"🧀","cherries":"ðŸ’","cherry_blossom":"🌸","chess_pawn":"♟","chestnut":"🌰","chicken":"ðŸ”","child":"🧒","children_crossin":"🚸","children_crossing":"🚸","chile":"🇨🇱","chipmunk":"ðŸ¿","chocolate_bar":"ðŸ«","chopsticks":"🥢","christmas_island":"🇨🇽","christmas_tree":"🎄","church":"⛪","cinema":"🎦","circus_tent":"🎪","city_sunrise":"🌇","city_sunset":"🌆","cityscape":"ðŸ™","cl":"🆑","clamp":"🗜","clap":"ðŸ‘","clapper":"🎬","classical_building":"ðŸ›","climbing":"🧗","climbing_man":"🧗â€â™‚ï¸","climbing_woman":"🧗â€â™€ï¸","clinking_glasses":"🥂","clipboard":"📋","clipperton_island":"🇨🇵","clock1":"ðŸ•","clock10":"🕙","clock1030":"🕥","clock11":"🕚","clock1130":"🕦","clock12":"🕛","clock1230":"🕧","clock130":"🕜","clock2":"🕑","clock230":"ðŸ•","clock3":"🕒","clock330":"🕞","clock4":"🕓","clock430":"🕟","clock5":"🕔","clock530":"🕠","clock6":"🕕","clock630":"🕡","clock7":"🕖","clock730":"🕢","clock8":"🕗","clock830":"🕣","clock9":"🕘","clock930":"🕤","closed_book":"📕","closed_lock_with_key":"ðŸ”","closed_umbrella":"🌂","cloud":"â˜","cloud_with_lightning":"🌩","cloud_with_lightning_and_rain":"⛈","cloud_with_rain":"🌧","cloud_with_snow":"🌨","clown_fac":"🤡","clown_face":"🤡","clubs":"♣","cn":"🇨🇳","coat":"🧥","cocktail":"ðŸ¸","coconut":"🥥","cocos_islands":"🇨🇨","coffee":"☕","coffin":"âš°","cold_face":"🥶","cold_sweat":"😰","collision":"💥","colombia":"🇨🇴","comet":"☄","comoros":"🇰🇲","compass":"ðŸ§","computer":"💻","computer_mouse":"🖱","confetti_ball":"🎊","confounded":"😖","confused":"😕","congo_brazzaville":"🇨🇬","congo_kinshasa":"🇨🇩","congratulations":"㊗","constructio":"🚧","construction":"🚧","construction_worke":"👷","construction_worker":"👷","construction_worker_man":"👷â€â™‚ï¸","construction_worker_woman":"👷â€â™€ï¸","control_knobs":"🎛","convenience_store":"ðŸª","cook":"🧑â€ðŸ³","cook_islands":"🇨🇰","cookie":"ðŸª","cool":"🆒","cop":"👮","copyright":"©","corn":"🌽","costa_rica":"🇨🇷","cote_divoire":"🇨🇮","couch_and_lamp":"🛋","couple":"👫","couple_with_heart":"💑","couple_with_heart_man_man":"👨â€â¤ï¸â€ðŸ‘¨","couple_with_heart_woman_man":"👩â€â¤ï¸â€ðŸ‘¨","couple_with_heart_woman_woman":"👩â€â¤ï¸â€ðŸ‘©","couplekiss":"ðŸ’","couplekiss_man_man":"👨â€â¤ï¸â€ðŸ’‹â€ðŸ‘¨","couplekiss_man_woman":"👩â€â¤ï¸â€ðŸ’‹â€ðŸ‘¨","couplekiss_woman_woman":"👩â€â¤ï¸â€ðŸ’‹â€ðŸ‘©","cow":"ðŸ®","cow2":"ðŸ„","cowboy_hat_face":"🤠","crab":"🦀","crayon":"ðŸ–","credit_card":"💳","crescent_moon":"🌙","cricket":"🦗","cricket_game":"ðŸ","croatia":"ðŸ‡ðŸ‡·","crocodile":"ðŸŠ","croissant":"ðŸ¥","crossed_fingers":"🤞","crossed_flags":"🎌","crossed_swords":"âš”","crown":"👑","cry":"😢","crying_cat_face":"😿","crystal_ball":"🔮","cuba":"🇨🇺","cucumber":"🥒","cup_with_straw":"🥤","cupcake":"ðŸ§","cupid":"💘","curacao":"🇨🇼","curling_stone":"🥌","curly_haired_man":"👨â€ðŸ¦±","curly_haired_woman":"👩â€ðŸ¦±","curly_loop":"âž°","currency_exchange":"💱","curry":"ðŸ›","cursing_face":"🤬","custard":"ðŸ®","customs":"🛃","cut_of_meat":"🥩","cyclone":"🌀","cyprus":"🇨🇾","czech_republic":"🇨🇿","dagger":"🗡","dancer":"💃","dancers":"👯","dancing_men":"👯â€â™‚ï¸","dancing_women":"👯â€â™€ï¸","dango":"ðŸ¡","dark_sunglasses":"🕶","dart":"🎯","dash":"💨","date":"📅","de":"🇩🇪","deaf_man":"ðŸ§â€â™‚ï¸","deaf_person":"ðŸ§","deaf_woman":"ðŸ§â€â™€ï¸","deciduous_tree":"🌳","deer":"🦌","denmark":"🇩🇰","department_store":"ðŸ¬","derelict_house":"ðŸš","desert":"ðŸœ","desert_island":"ðŸ","desktop_computer":"🖥","detective":"🕵","diamond_shape_with_a_dot_inside":"💠","diamonds":"♦","diego_garcia":"🇩🇬","disappointed":"😞","disappointed_relieved":"😥","diving_mask":"🤿","diya_lamp":"🪔","dizz":"💫","dizzy":"💫","dizzy_face":"😵","djibouti":"🇩🇯","dna":"🧬","do_not_litter":"🚯","dog":"ðŸ¶","dog2":"ðŸ•","dollar":"💵","dolls":"🎎","dolphin":"ðŸ¬","dominica":"🇩🇲","dominican_republic":"🇩🇴","door":"🚪","doughnut":"ðŸ©","dove":"🕊","dragon":"ðŸ‰","dragon_face":"ðŸ²","dress":"👗","dromedary_camel":"ðŸª","drooling_face":"🤤","drop_of_blood":"🩸","droplet":"💧","drum":"ðŸ¥","duck":"🦆","dumpling":"🥟","dvd":"📀","e-mail":"📧","eagle":"🦅","ear":"👂","ear_of_rice":"🌾","ear_with_hearing_aid":"🦻","earth_africa":"ðŸŒ","earth_americas":"🌎","earth_asia":"ðŸŒ","ecuador":"🇪🇨","eg":"🥚","egg":"🥚","eggplant":"ðŸ†","egypt":"🇪🇬","eight":"8ï¸âƒ£","eight_pointed_black_star":"✴","eight_spoked_asterisk":"✳","eject_button":"â","el_salvador":"🇸🇻","electric_plug":"🔌","elephant":"ðŸ˜","elf":"ðŸ§","elf_man":"ðŸ§â€â™‚ï¸","elf_woman":"ðŸ§â€â™€ï¸","email":"✉","end":"🔚","england":"ðŸ´ó §ó ¢ó ¥ó ®ó §ó ¿","envelope":"✉","envelope_with_arrow":"📩","equatorial_guinea":"🇬🇶","eritrea":"🇪🇷","es":"🇪🇸","estonia":"🇪🇪","ethiopia":"🇪🇹","eu":"🇪🇺","euro":"💶","european_castle":"ðŸ°","european_post_office":"ðŸ¤","european_union":"🇪🇺","evergreen_tree":"🌲","exclamation":"â—","exploding_head":"🤯","expressionless":"😑","eye":"ðŸ‘","eye_speech_bubble":"ðŸ‘ï¸â€ðŸ—¨ï¸","eyeglasses":"👓","eyes":"👀","face_with_head_bandage":"🤕","face_with_thermometer":"🤒","facepalm":"🤦","facepunch":"👊","factory":"ðŸ","factory_worker":"🧑â€ðŸ","fairy":"🧚","fairy_man":"🧚â€â™‚ï¸","fairy_woman":"🧚â€â™€ï¸","falafel":"🧆","falkland_islands":"🇫🇰","fallen_leaf":"ðŸ‚","family":"👪","family_man_boy":"👨â€ðŸ‘¦","family_man_boy_boy":"👨â€ðŸ‘¦â€ðŸ‘¦","family_man_girl":"👨â€ðŸ‘§","family_man_girl_boy":"👨â€ðŸ‘§â€ðŸ‘¦","family_man_girl_girl":"👨â€ðŸ‘§â€ðŸ‘§","family_man_man_boy":"👨â€ðŸ‘¨â€ðŸ‘¦","family_man_man_boy_boy":"👨â€ðŸ‘¨â€ðŸ‘¦â€ðŸ‘¦","family_man_man_girl":"👨â€ðŸ‘¨â€ðŸ‘§","family_man_man_girl_boy":"👨â€ðŸ‘¨â€ðŸ‘§â€ðŸ‘¦","family_man_man_girl_girl":"👨â€ðŸ‘¨â€ðŸ‘§â€ðŸ‘§","family_man_woman_boy":"👨â€ðŸ‘©â€ðŸ‘¦","family_man_woman_boy_boy":"👨â€ðŸ‘©â€ðŸ‘¦â€ðŸ‘¦","family_man_woman_girl":"👨â€ðŸ‘©â€ðŸ‘§","family_man_woman_girl_boy":"👨â€ðŸ‘©â€ðŸ‘§â€ðŸ‘¦","family_man_woman_girl_girl":"👨â€ðŸ‘©â€ðŸ‘§â€ðŸ‘§","family_woman_boy":"👩â€ðŸ‘¦","family_woman_boy_boy":"👩â€ðŸ‘¦â€ðŸ‘¦","family_woman_girl":"👩â€ðŸ‘§","family_woman_girl_boy":"👩â€ðŸ‘§â€ðŸ‘¦","family_woman_girl_girl":"👩â€ðŸ‘§â€ðŸ‘§","family_woman_woman_boy":"👩â€ðŸ‘©â€ðŸ‘¦","family_woman_woman_boy_boy":"👩â€ðŸ‘©â€ðŸ‘¦â€ðŸ‘¦","family_woman_woman_girl":"👩â€ðŸ‘©â€ðŸ‘§","family_woman_woman_girl_boy":"👩â€ðŸ‘©â€ðŸ‘§â€ðŸ‘¦","family_woman_woman_girl_girl":"👩â€ðŸ‘©â€ðŸ‘§â€ðŸ‘§","farmer":"🧑â€ðŸŒ¾","faroe_islands":"🇫🇴","fast_forward":"â©","fax":"📠","fearful":"😨","feet":"ðŸ¾","female_detective":"🕵ï¸â€â™€ï¸","female_sign":"♀","ferris_wheel":"🎡","ferry":"â›´","field_hockey":"ðŸ‘","fiji":"🇫🇯","file_cabinet":"🗄","file_folder":"ðŸ“","film_projector":"📽","film_strip":"🎞","finland":"🇫🇮","fir":"🔥","fire":"🔥","fire_engine":"🚒","fire_extinguisher":"🧯","firecracker":"🧨","firefighter":"🧑â€ðŸš’","fireworks":"🎆","first_quarter_moon":"🌓","first_quarter_moon_with_face":"🌛","fish":"ðŸŸ","fish_cake":"ðŸ¥","fishing_pole_and_fish":"🎣","fist":"✊","fist_left":"🤛","fist_oncoming":"👊","fist_raised":"✊","fist_right":"🤜","five":"5ï¸âƒ£","flags":"ðŸŽ","flamingo":"🦩","flashlight":"🔦","flat_shoe":"🥿","fleur_de_lis":"âšœ","flight_arrival":"🛬","flight_departure":"🛫","flipper":"ðŸ¬","floppy_disk":"💾","flower_playing_cards":"🎴","flushed":"😳","flying_disc":"ðŸ¥","flying_saucer":"🛸","fog":"🌫","foggy":"ðŸŒ","foot":"🦶","football":"ðŸˆ","footprints":"👣","fork_and_knife":"ðŸ´","fortune_cookie":"🥠","fountain":"⛲","fountain_pen":"🖋","four":"4ï¸âƒ£","four_leaf_clover":"ðŸ€","fox_face":"🦊","fr":"🇫🇷","framed_picture":"🖼","free":"🆓","french_guiana":"🇬🇫","french_polynesia":"🇵🇫","french_southern_territories":"🇹🇫","fried_egg":"ðŸ³","fried_shrimp":"ðŸ¤","fries":"ðŸŸ","frog":"ðŸ¸","frowning":"😦","frowning_face":"☹","frowning_man":"ðŸ™â€â™‚ï¸","frowning_person":"ðŸ™","frowning_woman":"ðŸ™â€â™€ï¸","fu":"🖕","fuelpump":"⛽","full_moon":"🌕","full_moon_with_face":"ðŸŒ","funeral_urn":"âš±","gabon":"🇬🇦","gambia":"🇬🇲","game_die":"🎲","garlic":"🧄","gb":"🇬🇧","gear":"âš™","gem":"💎","gemini":"♊","genie":"🧞","genie_man":"🧞â€â™‚ï¸","genie_woman":"🧞â€â™€ï¸","georgia":"🇬🇪","ghana":"🇬ðŸ‡","ghost":"👻","gibraltar":"🇬🇮","gift":"ðŸŽ","gift_heart":"ðŸ’","giraffe":"🦒","girl":"👧","globe_with_meridian":"ðŸŒ","globe_with_meridians":"ðŸŒ","gloves":"🧤","goal_ne":"🥅","goal_net":"🥅","goat":"ðŸ","goggles":"🥽","golf":"⛳","golfing":"ðŸŒ","golfing_man":"ðŸŒï¸â€â™‚ï¸","golfing_woman":"ðŸŒï¸â€â™€ï¸","gorilla":"ðŸ¦","grapes":"ðŸ‡","greece":"🇬🇷","green_apple":"ðŸ","green_book":"📗","green_circle":"🟢","green_hear":"💚","green_heart":"💚","green_salad":"🥗","green_square":"🟩","greenland":"🇬🇱","grenada":"🇬🇩","grey_exclamation":"â•","grey_question":"â”","grimacing":"😬","grin":"ðŸ˜","grinning":"😀","guadeloupe":"🇬🇵","guam":"🇬🇺","guard":"💂","guardsman":"💂â€â™‚ï¸","guardswoman":"💂â€â™€ï¸","guatemala":"🇬🇹","guernsey":"🇬🇬","guide_dog":"🦮","guinea":"🇬🇳","guinea_bissau":"🇬🇼","guitar":"🎸","gun":"🔫","guyana":"🇬🇾","haircut":"💇","haircut_man":"💇â€â™‚ï¸","haircut_woman":"💇â€â™€ï¸","haiti":"ðŸ‡ðŸ‡¹","hamburger":"ðŸ”","hamme":"🔨","hammer":"🔨","hammer_and_pick":"âš’","hammer_and_wrench":"🛠","hamster":"ðŸ¹","hand":"✋","hand_over_mouth":"ðŸ¤","handbag":"👜","handball_person":"🤾","handshake":"ðŸ¤","hankey":"💩","hash":"#ï¸âƒ£","hatched_chick":"ðŸ¥","hatching_chick":"ðŸ£","headphones":"🎧","health_worker":"🧑â€âš•ï¸","hear_no_evil":"🙉","heard_mcdonald_islands":"ðŸ‡ðŸ‡²","heart":"â¤","heart_decoration":"💟","heart_eyes":"ðŸ˜","heart_eyes_cat":"😻","heartbeat":"💓","heartpulse":"💗","hearts":"♥","heavy_check_mark":"✔","heavy_division_sign":"âž—","heavy_dollar_sign":"💲","heavy_exclamation_mark":"â—","heavy_heart_exclamation":"â£","heavy_minus_sig":"âž–","heavy_minus_sign":"âž–","heavy_multiplication_x":"✖","heavy_plus_sig":"âž•","heavy_plus_sign":"âž•","hedgehog":"🦔","helicopter":"ðŸš","herb":"🌿","hibiscus":"🌺","high_brightness":"🔆","high_heel":"👠","hiking_boot":"🥾","hindu_temple":"🛕","hippopotamus":"🦛","hocho":"🔪","hole":"🕳","honduras":"ðŸ‡ðŸ‡³","honey_pot":"ðŸ¯","honeybee":"ðŸ","hong_kong":"ðŸ‡ðŸ‡°","horse":"ðŸ´","horse_racing":"ðŸ‡","hospital":"ðŸ¥","hot_face":"🥵","hot_pepper":"🌶","hotdog":"ðŸŒ","hotel":"ðŸ¨","hotsprings":"♨","hourglass":"⌛","hourglass_flowing_sand":"â³","house":"ðŸ ","house_with_garden":"ðŸ¡","houses":"ðŸ˜","hugs":"🤗","hungary":"ðŸ‡ðŸ‡º","hushed":"😯","ice_cream":"ðŸ¨","ice_cube":"🧊","ice_hockey":"ðŸ’","ice_skate":"⛸","icecream":"ðŸ¦","iceland":"🇮🇸","id":"🆔","ideograph_advantage":"ðŸ‰","imp":"👿","inbox_tray":"📥","incoming_envelope":"📨","india":"🇮🇳","indonesia":"🇮🇩","infinity":"♾","information_desk_person":"ðŸ’","information_source":"ℹ","innocent":"😇","interrobang":"â‰","iphon":"📱","iphone":"📱","iran":"🇮🇷","iraq":"🇮🇶","ireland":"🇮🇪","isle_of_man":"🇮🇲","israel":"🇮🇱","it":"🇮🇹","izakaya_lantern":"ðŸ®","jack_o_lantern":"🎃","jamaica":"🇯🇲","japan":"🗾","japanese_castle":"ðŸ¯","japanese_goblin":"👺","japanese_ogre":"👹","jeans":"👖","jersey":"🇯🇪","jigsaw":"🧩","jordan":"🇯🇴","joy":"😂","joy_cat":"😹","joystick":"🕹","jp":"🇯🇵","judge":"🧑â€âš–ï¸","juggling_person":"🤹","kaaba":"🕋","kangaroo":"🦘","kazakhstan":"🇰🇿","kenya":"🇰🇪","key":"🔑","keyboard":"⌨","keycap_ten":"🔟","kick_scooter":"🛴","kimono":"👘","kiribati":"🇰🇮","kiss":"💋","kissing":"😗","kissing_cat":"😽","kissing_closed_eyes":"😚","kissing_heart":"😘","kissing_smiling_eyes":"😙","kite":"ðŸª","kiwi_fruit":"ðŸ¥","kneeling_man":"🧎â€â™‚ï¸","kneeling_person":"🧎","kneeling_woman":"🧎â€â™€ï¸","knife":"🔪","koala":"ðŸ¨","koko":"ðŸˆ","kosovo":"🇽🇰","kr":"🇰🇷","kuwait":"🇰🇼","kyrgyzstan":"🇰🇬","lab_coat":"🥼","labe":"ðŸ·ï¸","label":"ðŸ·","lacrosse":"ðŸ¥","lantern":"ðŸ®","laos":"🇱🇦","large_blue_circle":"🔵","large_blue_diamond":"🔷","large_orange_diamond":"🔶","last_quarter_moon":"🌗","last_quarter_moon_with_face":"🌜","latin_cross":"âœ","latvia":"🇱🇻","laughing":"😆","leafy_green":"🥬","leaves":"ðŸƒ","lebanon":"🇱🇧","ledger":"📒","left_luggage":"🛅","left_right_arrow":"↔","left_speech_bubble":"🗨","leftwards_arrow_with_hook":"↩","leg":"🦵","lemon":"ðŸ‹","leo":"♌","leopard":"ðŸ†","lesotho":"🇱🇸","level_slider":"🎚","liberia":"🇱🇷","libra":"♎","libya":"🇱🇾","liechtenstein":"🇱🇮","light_rail":"🚈","link":"🔗","lion":"ðŸ¦","lips":"👄","lipstic":"💄","lipstick":"💄","lithuania":"🇱🇹","lizard":"🦎","llama":"🦙","lobster":"🦞","loc":"🔒","lock":"🔒","lock_with_ink_pen":"ðŸ”","lollipop":"ðŸ","loop":"âž¿","lotion_bottle":"🧴","lotus_position":"🧘","lotus_position_man":"🧘â€â™‚ï¸","lotus_position_woman":"🧘â€â™€ï¸","loud_soun":"🔊","loud_sound":"🔊","loudspeaker":"📢","love_hotel":"ðŸ©","love_letter":"💌","love_you_gesture":"🤟","low_brightness":"🔅","luggage":"🧳","luxembourg":"🇱🇺","lying_face":"🤥","m":"â“‚","ma":"ðŸ”","macau":"🇲🇴","macedonia":"🇲🇰","madagascar":"🇲🇬","mag":"ðŸ”","mag_right":"🔎","mage":"🧙","mage_man":"🧙â€â™‚ï¸","mage_woman":"🧙â€â™€ï¸","magnet":"🧲","mahjong":"🀄","mailbox":"📫","mailbox_closed":"📪","mailbox_with_mail":"📬","mailbox_with_no_mail":"ðŸ“","malawi":"🇲🇼","malaysia":"🇲🇾","maldives":"🇲🇻","male_detective":"🕵ï¸â€â™‚ï¸","male_sign":"♂","mali":"🇲🇱","malta":"🇲🇹","man":"👨","man_artist":"👨â€ðŸŽ¨","man_astronaut":"👨â€ðŸš€","man_cartwheeling":"🤸â€â™‚ï¸","man_cook":"👨â€ðŸ³","man_dancing":"🕺","man_facepalming":"🤦â€â™‚ï¸","man_factory_worker":"👨â€ðŸ","man_farmer":"👨â€ðŸŒ¾","man_firefighter":"👨â€ðŸš’","man_health_worker":"👨â€âš•ï¸","man_in_manual_wheelchair":"👨â€ðŸ¦½","man_in_motorized_wheelchair":"👨â€ðŸ¦¼","man_in_tuxedo":"🤵","man_judge":"👨â€âš–ï¸","man_juggling":"🤹â€â™‚ï¸","man_mechanic":"👨â€ðŸ”§","man_office_worker":"👨â€ðŸ’¼","man_pilot":"👨â€âœˆï¸","man_playing_handball":"🤾â€â™‚ï¸","man_playing_water_polo":"🤽â€â™‚ï¸","man_scientist":"👨â€ðŸ”¬","man_shrugging":"🤷â€â™‚ï¸","man_singer":"👨â€ðŸŽ¤","man_student":"👨â€ðŸŽ“","man_teacher":"👨â€ðŸ«","man_technologist":"👨â€ðŸ’»","man_with_gua_pi_mao":"👲","man_with_probing_cane":"👨â€ðŸ¦¯","man_with_turban":"👳â€â™‚ï¸","mandarin":"ðŸŠ","mango":"ðŸ¥","mans_shoe":"👞","mantelpiece_clock":"🕰","manual_wheelchair":"🦽","maple_leaf":"ðŸ","marshall_islands":"🇲ðŸ‡","martial_arts_uniform":"🥋","martinique":"🇲🇶","mask":"😷","massage":"💆","massage_man":"💆â€â™‚ï¸","massage_woman":"💆â€â™€ï¸","mate":"🧉","mauritania":"🇲🇷","mauritius":"🇲🇺","mayotte":"🇾🇹","meat_on_bone":"ðŸ–","mechanic":"🧑â€ðŸ”§","mechanical_arm":"🦾","mechanical_leg":"🦿","medal_military":"🎖","medal_sports":"ðŸ…","medical_symbol":"âš•","mega":"📣","melon":"ðŸˆ","mem":"ðŸ“","memo":"ðŸ“","men_wrestling":"🤼â€â™‚ï¸","menorah":"🕎","mens":"🚹","mermaid":"🧜â€â™€ï¸","merman":"🧜â€â™‚ï¸","merperson":"🧜","metal":"🤘","metro":"🚇","mexico":"🇲🇽","microbe":"🦠","micronesia":"🇫🇲","microphone":"🎤","microscope":"🔬","middle_finger":"🖕","milk_glass":"🥛","milky_way":"🌌","minibus":"ðŸš","minidisc":"💽","mobile_phone_off":"📴","moldova":"🇲🇩","monaco":"🇲🇨","money_mouth_face":"🤑","money_with_wings":"💸","moneybag":"💰","mongolia":"🇲🇳","monkey":"ðŸ’","monkey_face":"ðŸµ","monocle_face":"ðŸ§","monorail":"ðŸš","montenegro":"🇲🇪","montserrat":"🇲🇸","moon":"🌔","moon_cake":"🥮","morocco":"🇲🇦","mortar_board":"🎓","mosque":"🕌","mosquito":"🦟","motor_boat":"🛥","motor_scooter":"🛵","motorcycle":"ðŸ","motorized_wheelchair":"🦼","motorway":"🛣","mount_fuji":"🗻","mountain":"â›°","mountain_bicyclist":"🚵","mountain_biking_man":"🚵â€â™‚ï¸","mountain_biking_woman":"🚵â€â™€ï¸","mountain_cableway":"🚠","mountain_railway":"🚞","mountain_snow":"ðŸ”","mouse":"ðŸ","mouse2":"ðŸ","movie_camera":"🎥","moyai":"🗿","mozambique":"🇲🇿","mrs_claus":"🤶","muscle":"💪","mushroom":"ðŸ„","musical_keyboard":"🎹","musical_note":"🎵","musical_score":"🎼","mut":"🔇","mute":"🔇","myanmar":"🇲🇲","nail_care":"💅","name_badge":"📛","namibia":"🇳🇦","national_park":"ðŸž","nauru":"🇳🇷","nauseated_face":"🤢","nazar_amulet":"🧿","necktie":"👔","negative_squared_cross_mark":"âŽ","nepal":"🇳🇵","nerd_face":"🤓","netherlands":"🇳🇱","neutral_face":"ðŸ˜","new":"🆕","new_caledonia":"🇳🇨","new_moon":"🌑","new_moon_with_face":"🌚","new_zealand":"🇳🇿","newspaper":"📰","newspaper_roll":"🗞","next_track_button":"â","ng":"🆖","ng_man":"🙅â€â™‚ï¸","ng_woman":"🙅â€â™€ï¸","nicaragua":"🇳🇮","niger":"🇳🇪","nigeria":"🇳🇬","night_with_stars":"🌃","nine":"9ï¸âƒ£","niue":"🇳🇺","no_bell":"🔕","no_bicycles":"🚳","no_entry":"â›”","no_entry_sign":"🚫","no_good":"🙅","no_good_man":"🙅â€â™‚ï¸","no_good_woman":"🙅â€â™€ï¸","no_mobile_phones":"📵","no_mouth":"😶","no_pedestrians":"🚷","no_smoking":"ðŸš","non-potable_water":"🚱","norfolk_island":"🇳🇫","north_korea":"🇰🇵","northern_mariana_islands":"🇲🇵","norway":"🇳🇴","nose":"👃","notebook":"📓","notebook_with_decorative_cover":"📔","notes":"🎶","nut_and_bolt":"🔩","o":"â•","o2":"🅾","ocean":"🌊","octopus":"ðŸ™","oden":"ðŸ¢","office":"ðŸ¢","office_worker":"🧑â€ðŸ’¼","oil_drum":"🛢","ok":"🆗","ok_hand":"👌","ok_man":"🙆â€â™‚ï¸","ok_person":"🙆","ok_woman":"🙆â€â™€ï¸","old_key":"ðŸ—","older_adult":"🧓","older_man":"👴","older_woman":"👵","om":"🕉","oman":"🇴🇲","on":"🔛","oncoming_automobile":"🚘","oncoming_bus":"ðŸš","oncoming_police_car":"🚔","oncoming_taxi":"🚖","one":"1ï¸âƒ£","one_piece_swimsuit":"🩱","onion":"🧅","open_book":"📖","open_file_folder":"📂","open_hands":"ðŸ‘","open_mouth":"😮","open_umbrella":"☂","ophiuchus":"⛎","orange":"ðŸŠ","orange_book":"📙","orange_circle":"🟠","orange_heart":"🧡","orange_square":"🟧","orangutan":"🦧","orthodox_cross":"☦","otter":"🦦","outbox_tray":"📤","owl":"🦉","ox":"ðŸ‚","oyster":"🦪","packag":"📦","package":"📦","page_facing_u":"📄","page_facing_up":"📄","page_with_curl":"📃","pager":"📟","paintbrush":"🖌","pakistan":"🇵🇰","palau":"🇵🇼","palestinian_territories":"🇵🇸","palm_tree":"🌴","palms_up_together":"🤲","panama":"🇵🇦","pancakes":"🥞","panda_face":"ðŸ¼","paperclip":"📎","paperclips":"🖇","papua_new_guinea":"🇵🇬","parachute":"🪂","paraguay":"🇵🇾","parasol_on_ground":"â›±","parking":"🅿","parrot":"🦜","part_alternation_mark":"〽","partly_sunny":"â›…","partying_face":"🥳","passenger_ship":"🛳","passport_control":"🛂","pause_button":"â¸","paw_prints":"ðŸ¾","peace_symbol":"☮","peach":"ðŸ‘","peacock":"🦚","peanuts":"🥜","pear":"ðŸ","pen":"🖊","pencil":"ðŸ“","pencil2":"âœ","penguin":"ðŸ§","pensive":"😔","people_holding_hands":"🧑â€ðŸ¤â€ðŸ§‘","performing_arts":"ðŸŽ","persevere":"😣","person_bald":"🧑â€ðŸ¦²","person_curly_hair":"🧑â€ðŸ¦±","person_fencing":"🤺","person_in_manual_wheelchair":"🧑â€ðŸ¦½","person_in_motorized_wheelchair":"🧑â€ðŸ¦¼","person_red_hair":"🧑â€ðŸ¦°","person_white_hair":"🧑â€ðŸ¦³","person_with_probing_cane":"🧑â€ðŸ¦¯","person_with_turban":"👳","peru":"🇵🇪","petri_dish":"🧫","philippines":"🇵ðŸ‡","phone":"☎","pick":"â›","pie":"🥧","pig":"ðŸ·","pig2":"ðŸ–","pig_nose":"ðŸ½","pill":"💊","pilot":"🧑â€âœˆï¸","pinching_hand":"ðŸ¤","pineapple":"ðŸ","ping_pong":"ðŸ“","pirate_flag":"ðŸ´â€â˜ ï¸","pisces":"♓","pitcairn_islands":"🇵🇳","pizza":"ðŸ•","place_of_worship":"ðŸ›","plate_with_cutlery":"ðŸ½","play_or_pause_button":"â¯","pleading_face":"🥺","point_down":"👇","point_left":"👈","point_right":"👉","point_up":"â˜","point_up_2":"👆","poland":"🇵🇱","police_car":"🚓","police_officer":"👮","policeman":"👮â€â™‚ï¸","policewoman":"👮â€â™€ï¸","poo":"💩","poodle":"ðŸ©","poop":"💩","popcorn":"ðŸ¿","portugal":"🇵🇹","post_office":"ðŸ£","postal_horn":"📯","postbox":"📮","potable_water":"🚰","potato":"🥔","pouch":"ðŸ‘","poultry_leg":"ðŸ—","pound":"💷","pout":"😡","pouting_cat":"😾","pouting_face":"🙎","pouting_man":"🙎â€â™‚ï¸","pouting_woman":"🙎â€â™€ï¸","pray":"ðŸ™","prayer_beads":"📿","pregnant_woman":"🤰","pretzel":"🥨","previous_track_button":"â®","prince":"🤴","princess":"👸","printer":"🖨","probing_cane":"🦯","puerto_rico":"🇵🇷","punch":"👊","purple_circle":"🟣","purple_heart":"💜","purple_square":"🟪","purse":"👛","pushpi":"📌","pushpin":"📌","put_litter_in_its_place":"🚮","qatar":"🇶🇦","question":"â“","rabbit":"ðŸ°","rabbit2":"ðŸ‡","raccoon":"ðŸ¦","racehorse":"ðŸŽ","racing_car":"ðŸŽ","radio":"📻","radio_button":"🔘","radioactive":"☢","rage":"😡","railway_car":"🚃","railway_track":"🛤","rainbow":"🌈","rainbow_flag":"ðŸ³ï¸â€ðŸŒˆ","raised_back_of_hand":"🤚","raised_eyebrow":"🤨","raised_hand":"✋","raised_hand_with_fingers_splayed":"ðŸ–","raised_hands":"🙌","raising_hand":"🙋","raising_hand_man":"🙋â€â™‚ï¸","raising_hand_woman":"🙋â€â™€ï¸","ram":"ðŸ","ramen":"ðŸœ","rat":"ðŸ€","razor":"🪒","receipt":"🧾","record_button":"âº","recycl":"â™»ï¸","recycle":"â™»","red_car":"🚗","red_circle":"🔴","red_envelope":"🧧","red_haired_man":"👨â€ðŸ¦°","red_haired_woman":"👩â€ðŸ¦°","red_square":"🟥","registered":"®","relaxed":"☺","relieved":"😌","reminder_ribbon":"🎗","repeat":"ðŸ”","repeat_one":"🔂","rescue_worker_helmet":"⛑","restroom":"🚻","reunion":"🇷🇪","revolving_hearts":"💞","rewin":"âª","rewind":"âª","rhinoceros":"ðŸ¦","ribbon":"🎀","rice":"ðŸš","rice_ball":"ðŸ™","rice_cracker":"ðŸ˜","rice_scene":"🎑","right_anger_bubble":"🗯","ring":"ðŸ’","ringed_planet":"ðŸª","robot":"🤖","rocke":"🚀","rocket":"🚀","rofl":"🤣","roll_eyes":"🙄","roll_of_paper":"🧻","roller_coaster":"🎢","romania":"🇷🇴","rooster":"ðŸ“","rose":"🌹","rosette":"ðŸµ","rotating_ligh":"🚨","rotating_light":"🚨","round_pushpin":"ðŸ“","rowboat":"🚣","rowing_man":"🚣â€â™‚ï¸","rowing_woman":"🚣â€â™€ï¸","ru":"🇷🇺","rugby_football":"ðŸ‰","runner":"ðŸƒ","running":"ðŸƒ","running_man":"ðŸƒâ€â™‚ï¸","running_shirt_with_sash":"🎽","running_woman":"ðŸƒâ€â™€ï¸","rwanda":"🇷🇼","sa":"🈂","safety_pin":"🧷","safety_vest":"🦺","sagittarius":"â™","sailboat":"⛵","sake":"ðŸ¶","salt":"🧂","samoa":"🇼🇸","san_marino":"🇸🇲","sandal":"👡","sandwich":"🥪","santa":"🎅","sao_tome_principe":"🇸🇹","sari":"🥻","sassy_man":"ðŸ’â€â™‚ï¸","sassy_woman":"ðŸ’â€â™€ï¸","satellite":"📡","satisfied":"😆","saudi_arabia":"🇸🇦","sauna_man":"🧖â€â™‚ï¸","sauna_person":"🧖","sauna_woman":"🧖â€â™€ï¸","sauropod":"🦕","saxophone":"🎷","scarf":"🧣","school":"ðŸ«","school_satchel":"🎒","scientist":"🧑â€ðŸ”¬","scissors":"✂","scorpion":"🦂","scorpius":"â™","scotland":"ðŸ´ó §ó ¢ó ³ó £ó ´ó ¿","scream":"😱","scream_cat":"🙀","scroll":"📜","seat":"💺","secret":"㊙","see_no_evi":"🙈","see_no_evil":"🙈","seedlin":"🌱","seedling":"🌱","selfie":"🤳","senegal":"🇸🇳","serbia":"🇷🇸","service_dog":"ðŸ•â€ðŸ¦º","seven":"7ï¸âƒ£","seychelles":"🇸🇨","shallow_pan_of_food":"🥘","shamrock":"☘","shark":"🦈","shaved_ice":"ðŸ§","sheep":"ðŸ‘","shell":"ðŸš","shield":"🛡","shinto_shrine":"⛩","ship":"🚢","shirt":"👕","shit":"💩","shoe":"👞","shopping":"ðŸ›","shopping_cart":"🛒","shorts":"🩳","shower":"🚿","shrimp":"ðŸ¦","shrug":"🤷","shushing_face":"🤫","sierra_leone":"🇸🇱","signal_strength":"📶","singapore":"🇸🇬","singer":"🧑â€ðŸŽ¤","sint_maarten":"🇸🇽","six":"6ï¸âƒ£","six_pointed_star":"🔯","skateboard":"🛹","ski":"🎿","skier":"â›·","skull":"💀","skull_and_crossbones":"☠","skunk":"🦨","sled":"🛷","sleeping":"😴","sleeping_bed":"🛌","sleepy":"😪","slightly_frowning_face":"ðŸ™","slightly_smiling_face":"🙂","slot_machine":"🎰","sloth":"🦥","slovakia":"🇸🇰","slovenia":"🇸🇮","small_airplane":"🛩","small_blue_diamond":"🔹","small_orange_diamond":"🔸","small_red_triangle":"🔺","small_red_triangle_down":"🔻","smile":"😄","smile_cat":"😸","smiley":"😃","smiley_cat":"😺","smiling_face_with_three_hearts":"🥰","smiling_imp":"😈","smirk":"ðŸ˜","smirk_cat":"😼","smoking":"🚬","snail":"ðŸŒ","snake":"ðŸ","sneezing_face":"🤧","snowboarder":"ðŸ‚","snowflake":"â„","snowman":"⛄","snowman_with_snow":"☃","soap":"🧼","sob":"ðŸ˜","soccer":"âš½","socks":"🧦","softball":"🥎","solomon_islands":"🇸🇧","somalia":"🇸🇴","soon":"🔜","sos":"🆘","sound":"🔉","south_africa":"🇿🇦","south_georgia_south_sandwich_islands":"🇬🇸","south_sudan":"🇸🇸","space_invader":"👾","spades":"â™ ","spaghetti":"ðŸ","sparkle":"â‡","sparkler":"🎇","sparkles":"✨","sparkling_heart":"💖","speak_no_evil":"🙊","speaker":"🔈","speaking_head":"🗣","speech_balloo":"💬","speech_balloon":"💬","speedboat":"🚤","spider":"🕷","spider_web":"🕸","spiral_calendar":"🗓","spiral_notepad":"🗒","sponge":"🧽","spoon":"🥄","squid":"🦑","sri_lanka":"🇱🇰","st_barthelemy":"🇧🇱","st_helena":"🇸ðŸ‡","st_kitts_nevis":"🇰🇳","st_lucia":"🇱🇨","st_martin":"🇲🇫","st_pierre_miquelon":"🇵🇲","st_vincent_grenadines":"🇻🇨","stadium":"ðŸŸ","standing_man":"ðŸ§â€â™‚ï¸","standing_person":"ðŸ§","standing_woman":"ðŸ§â€â™€ï¸","star":"â","star2":"🌟","star_and_crescent":"☪","star_of_david":"✡","star_struck":"🤩","stars":"🌠","station":"🚉","statue_of_liberty":"🗽","steam_locomotive":"🚂","stethoscope":"🩺","stew":"ðŸ²","stop_button":"â¹","stop_sign":"🛑","stopwatch":"â±","straight_ruler":"ðŸ“","strawberry":"ðŸ“","stuck_out_tongue":"😛","stuck_out_tongue_closed_eyes":"ðŸ˜","stuck_out_tongue_winking_eye":"😜","student":"🧑â€ðŸŽ“","studio_microphone":"🎙","stuffed_flatbread":"🥙","sudan":"🇸🇩","sun_behind_large_cloud":"🌥","sun_behind_rain_cloud":"🌦","sun_behind_small_cloud":"🌤","sun_with_face":"🌞","sunflower":"🌻","sunglasses":"😎","sunny":"☀","sunrise":"🌅","sunrise_over_mountains":"🌄","superhero":"🦸","superhero_man":"🦸â€â™‚ï¸","superhero_woman":"🦸â€â™€ï¸","supervillain":"🦹","supervillain_man":"🦹â€â™‚ï¸","supervillain_woman":"🦹â€â™€ï¸","surfer":"ðŸ„","surfing_man":"ðŸ„â€â™‚ï¸","surfing_woman":"ðŸ„â€â™€ï¸","suriname":"🇸🇷","sushi":"ðŸ£","suspension_railway":"🚟","svalbard_jan_mayen":"🇸🇯","swan":"🦢","swaziland":"🇸🇿","sweat":"😓","sweat_drops":"💦","sweat_smile":"😅","sweden":"🇸🇪","sweet_potato":"ðŸ ","swim_brief":"🩲","swimmer":"ðŸŠ","swimming_man":"ðŸŠâ€â™‚ï¸","swimming_woman":"ðŸŠâ€â™€ï¸","switzerland":"🇨ðŸ‡","symbols":"🔣","synagogue":"ðŸ•","syria":"🇸🇾","syringe":"💉","t-rex":"🦖","taco":"🌮","tad":"🎉","tada":"🎉","taiwan":"🇹🇼","tajikistan":"🇹🇯","takeout_box":"🥡","tanabata_tree":"🎋","tangerine":"ðŸŠ","tanzania":"🇹🇿","taurus":"♉","taxi":"🚕","tea":"ðŸµ","teacher":"🧑â€ðŸ«","technologist":"🧑â€ðŸ’»","teddy_bear":"🧸","telephone":"☎","telephone_receiver":"📞","telescope":"ðŸ”","tennis":"🎾","tent":"⛺","test_tube":"🧪","thailand":"🇹ðŸ‡","thermometer":"🌡","thinking":"🤔","thought_balloon":"ðŸ’","thread":"🧵","three":"3ï¸âƒ£","thumbsdown":"👎","thumbsup":"ðŸ‘","ticket":"🎫","tickets":"🎟","tiger":"ðŸ¯","tiger2":"ðŸ…","timer_clock":"â²","timor_leste":"🇹🇱","tipping_hand_man":"ðŸ’â€â™‚ï¸","tipping_hand_person":"ðŸ’","tipping_hand_woman":"ðŸ’â€â™€ï¸","tired_face":"😫","tm":"â„¢","togo":"🇹🇬","toilet":"🚽","tokelau":"🇹🇰","tokyo_tower":"🗼","tomato":"ðŸ…","tonga":"🇹🇴","tongue":"👅","toolbox":"🧰","tooth":"🦷","top":"ðŸ”","tophat":"🎩","tornado":"🌪","tr":"🇹🇷","trackball":"🖲","tractor":"🚜","traffic_light":"🚥","train":"🚋","train2":"🚆","tram":"🚊","triangular_flag_on_pos":"🚩","triangular_flag_on_post":"🚩","triangular_ruler":"ðŸ“","trident":"🔱","trinidad_tobago":"🇹🇹","tristan_da_cunha":"🇹🇦","triumph":"😤","trolleybus":"🚎","trophy":"ðŸ†","tropical_drink":"ðŸ¹","tropical_fish":"ðŸ ","truc":"🚚","truck":"🚚","trumpet":"🎺","tshirt":"👕","tulip":"🌷","tumbler_glass":"🥃","tunisia":"🇹🇳","turkey":"🦃","turkmenistan":"🇹🇲","turks_caicos_islands":"🇹🇨","turtle":"ðŸ¢","tuvalu":"🇹🇻","tv":"📺","twisted_rightwards_arrow":"🔀","twisted_rightwards_arrows":"🔀","two":"2ï¸âƒ£","two_hearts":"💕","two_men_holding_hands":"👬","two_women_holding_hands":"ðŸ‘","u5272":"🈹","u5408":"🈴","u55b6":"🈺","u6307":"🈯","u6708":"🈷","u6709":"🈶","u6e80":"🈵","u7121":"🈚","u7533":"🈸","u7981":"🈲","u7a7a":"🈳","uganda":"🇺🇬","uk":"🇬🇧","ukraine":"🇺🇦","umbrella":"☔","unamused":"😒","underage":"🔞","unicorn":"🦄","united_arab_emirates":"🇦🇪","united_nations":"🇺🇳","unlock":"🔓","up":"🆙","upside_down_face":"🙃","uruguay":"🇺🇾","us":"🇺🇸","us_outlying_islands":"🇺🇲","us_virgin_islands":"🇻🇮","uzbekistan":"🇺🇿","v":"✌","vampire":"🧛","vampire_man":"🧛â€â™‚ï¸","vampire_woman":"🧛â€â™€ï¸","vanuatu":"🇻🇺","vatican_city":"🇻🇦","venezuela":"🇻🇪","vertical_traffic_light":"🚦","vhs":"📼","vibration_mode":"📳","video_camera":"📹","video_game":"🎮","vietnam":"🇻🇳","violin":"🎻","virgo":"â™","volcano":"🌋","volleyball":"ðŸ","vomiting_face":"🤮","vs":"🆚","vulcan_salute":"🖖","waffle":"🧇","wales":"ðŸ´ó §ó ¢ó ·ó ¬ó ³ó ¿","walking":"🚶","walking_man":"🚶â€â™‚ï¸","walking_woman":"🚶â€â™€ï¸","wallis_futuna":"🇼🇫","waning_crescent_moon":"🌘","waning_gibbous_moon":"🌖","warning":"âš ","wastebaske":"🗑","wastebasket":"🗑","watch":"⌚","water_buffalo":"ðŸƒ","water_polo":"🤽","watermelon":"ðŸ‰","wave":"👋","wavy_dash":"〰","waxing_crescent_moon":"🌒","waxing_gibbous_moon":"🌔","wc":"🚾","weary":"😩","wedding":"💒","weight_lifting":"ðŸ‹","weight_lifting_man":"ðŸ‹ï¸â€â™‚ï¸","weight_lifting_woman":"ðŸ‹ï¸â€â™€ï¸","western_sahara":"🇪ðŸ‡","whale":"ðŸ³","whale2":"ðŸ‹","wheel_of_dharma":"☸","wheelchai":"♿ï¸","wheelchair":"♿","white_check_mar":"✅","white_check_mark":"✅","white_circle":"⚪","white_flag":"ðŸ³","white_flower":"💮","white_haired_man":"👨â€ðŸ¦³","white_haired_woman":"👩â€ðŸ¦³","white_heart":"ðŸ¤","white_large_square":"⬜","white_medium_small_square":"â—½","white_medium_square":"â—»","white_small_square":"â–«","white_square_button":"🔳","wilted_flower":"🥀","wind_chime":"ðŸŽ","wind_face":"🌬","wine_glass":"ðŸ·","wink":"😉","wolf":"ðŸº","woman":"👩","woman_artist":"👩â€ðŸŽ¨","woman_astronaut":"👩â€ðŸš€","woman_cartwheeling":"🤸â€â™€ï¸","woman_cook":"👩â€ðŸ³","woman_dancing":"💃","woman_facepalming":"🤦â€â™€ï¸","woman_factory_worker":"👩â€ðŸ","woman_farmer":"👩â€ðŸŒ¾","woman_firefighter":"👩â€ðŸš’","woman_health_worker":"👩â€âš•ï¸","woman_in_manual_wheelchair":"👩â€ðŸ¦½","woman_in_motorized_wheelchair":"👩â€ðŸ¦¼","woman_judge":"👩â€âš–ï¸","woman_juggling":"🤹â€â™€ï¸","woman_mechanic":"👩â€ðŸ”§","woman_office_worker":"👩â€ðŸ’¼","woman_pilot":"👩â€âœˆï¸","woman_playing_handball":"🤾â€â™€ï¸","woman_playing_water_polo":"🤽â€â™€ï¸","woman_scientist":"👩â€ðŸ”¬","woman_shrugging":"🤷â€â™€ï¸","woman_singer":"👩â€ðŸŽ¤","woman_student":"👩â€ðŸŽ“","woman_teacher":"👩â€ðŸ«","woman_technologist":"👩â€ðŸ’»","woman_with_headscarf":"🧕","woman_with_probing_cane":"👩â€ðŸ¦¯","woman_with_turban":"👳â€â™€ï¸","womans_clothes":"👚","womans_hat":"👒","women_wrestling":"🤼â€â™€ï¸","womens":"🚺","woozy_face":"🥴","world_map":"🗺","worried":"😟","wrenc":"🔧","wrench":"🔧","wrestling":"🤼","writing_hand":"âœ","x":"âŒ","yarn":"🧶","yawning_face":"🥱","yellow_circle":"🟡","yellow_heart":"💛","yellow_square":"🟨","yemen":"🇾🇪","yen":"💴","yin_yang":"☯","yo_yo":"🪀","yum":"😋","za":"âš¡ï¸","zambia":"🇿🇲","zany_face":"🤪","zap":"âš¡","zebra":"🦓","zero":"0ï¸âƒ£","zimbabwe":"🇿🇼","zipper_mouth_face":"ðŸ¤","zombie":"🧟","zombie_man":"🧟â€â™‚ï¸","zombie_woman":"🧟â€â™€ï¸","zzz":"💤"}
\ No newline at end of file
diff --git a/extensions/git/src/api/api1.ts b/extensions/git/src/api/api1.ts
index a6d2cd4b3d3..8bcdba44112 100644
--- a/extensions/git/src/api/api1.ts
+++ b/extensions/git/src/api/api1.ts
@@ -5,10 +5,12 @@
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, LogOptions, APIState, CommitOptions, GitExtension, RefType, RemoteSourceProvider, CredentialsProvider, BranchQuery } from './git';
+import { InputBox, Git, API, Repository, Remote, RepositoryState, Branch, Ref, Submodule, Commit, Change, RepositoryUIState, Status, LogOptions, APIState, CommitOptions, RefType, RemoteSourceProvider, CredentialsProvider, BranchQuery, PushErrorHandler } from './git';
import { Event, SourceControlInputBox, Uri, SourceControl, Disposable, commands } from 'vscode';
import { mapEvent } from '../util';
import { toGitUri } from '../uri';
+import { pickRemoteSource, PickRemoteSourceOptions } from '../remoteSource';
+import { GitExtensionImpl } from './extension';
class ApiInputBox implements InputBox {
set value(value: string) { this._inputBox.value = value; }
@@ -271,6 +273,10 @@ export class ApiImpl implements API {
return this._model.registerCredentialsProvider(provider);
}
+ registerPushErrorHandler(handler: PushErrorHandler): Disposable {
+ return this._model.registerPushErrorHandler(handler);
+ }
+
constructor(private _model: Model) { }
}
@@ -308,41 +314,51 @@ function getStatus(status: Status): string {
return 'UNKNOWN';
}
-export function registerAPICommands(extension: GitExtension): Disposable {
- return Disposable.from(
- commands.registerCommand('git.api.getRepositories', () => {
- const api = extension.getAPI(1);
- return api.repositories.map(r => r.rootUri.toString());
- }),
+export function registerAPICommands(extension: GitExtensionImpl): Disposable {
+ const disposables: Disposable[] = [];
- commands.registerCommand('git.api.getRepositoryState', (uri: string) => {
- const api = extension.getAPI(1);
- const repository = api.getRepository(Uri.parse(uri));
+ disposables.push(commands.registerCommand('git.api.getRepositories', () => {
+ const api = extension.getAPI(1);
+ return api.repositories.map(r => r.rootUri.toString());
+ }));
- if (!repository) {
- return null;
- }
+ disposables.push(commands.registerCommand('git.api.getRepositoryState', (uri: string) => {
+ const api = extension.getAPI(1);
+ const repository = api.getRepository(Uri.parse(uri));
- const state = repository.state;
+ if (!repository) {
+ return null;
+ }
- const ref = (ref: Ref | undefined) => (ref && { ...ref, type: getRefType(ref.type) });
- const change = (change: Change) => ({
- uri: change.uri.toString(),
- originalUri: change.originalUri.toString(),
- renameUri: change.renameUri?.toString(),
- status: getStatus(change.status)
- });
+ const state = repository.state;
- return {
- HEAD: ref(state.HEAD),
- refs: state.refs.map(ref),
- remotes: state.remotes,
- submodules: state.submodules,
- rebaseCommit: state.rebaseCommit,
- mergeChanges: state.mergeChanges.map(change),
- indexChanges: state.indexChanges.map(change),
- workingTreeChanges: state.workingTreeChanges.map(change)
- };
- })
- );
+ const ref = (ref: Ref | undefined) => (ref && { ...ref, type: getRefType(ref.type) });
+ const change = (change: Change) => ({
+ uri: change.uri.toString(),
+ originalUri: change.originalUri.toString(),
+ renameUri: change.renameUri?.toString(),
+ status: getStatus(change.status)
+ });
+
+ return {
+ HEAD: ref(state.HEAD),
+ refs: state.refs.map(ref),
+ remotes: state.remotes,
+ submodules: state.submodules,
+ rebaseCommit: state.rebaseCommit,
+ mergeChanges: state.mergeChanges.map(change),
+ indexChanges: state.indexChanges.map(change),
+ workingTreeChanges: state.workingTreeChanges.map(change)
+ };
+ }));
+
+ disposables.push(commands.registerCommand('git.api.getRemoteSources', (opts?: PickRemoteSourceOptions) => {
+ if (!extension.model) {
+ return;
+ }
+
+ return pickRemoteSource(extension.model, opts);
+ }));
+
+ return Disposable.from(...disposables);
}
diff --git a/extensions/git/src/api/extension.ts b/extensions/git/src/api/extension.ts
index 8d7dc611e62..bfedc0cc909 100644
--- a/extensions/git/src/api/extension.ts
+++ b/extensions/git/src/api/extension.ts
@@ -7,7 +7,6 @@ import { Model } from '../model';
import { GitExtension, Repository, API } from './git';
import { ApiRepository, ApiImpl } from './api1';
import { Event, EventEmitter } from 'vscode';
-import { latchEvent } from '../util';
export function deprecated(_target: any, key: string, descriptor: any): void {
if (typeof descriptor.value !== 'function') {
@@ -26,17 +25,27 @@ export class GitExtensionImpl implements GitExtension {
enabled: boolean = false;
private _onDidChangeEnablement = new EventEmitter();
- readonly onDidChangeEnablement: Event = latchEvent(this._onDidChangeEnablement.event);
+ readonly onDidChangeEnablement: Event = this._onDidChangeEnablement.event;
private _model: Model | undefined = undefined;
set model(model: Model | undefined) {
this._model = model;
- this.enabled = !!model;
+ const enabled = !!model;
+
+ if (this.enabled === enabled) {
+ return;
+ }
+
+ this.enabled = enabled;
this._onDidChangeEnablement.fire(this.enabled);
}
+ get model(): Model | undefined {
+ return this._model;
+ }
+
constructor(model?: Model) {
if (model) {
this.enabled = true;
@@ -73,4 +82,4 @@ export class GitExtensionImpl implements GitExtension {
return new ApiImpl(this._model);
}
-}
\ No newline at end of file
+}
diff --git a/extensions/git/src/api/git.d.ts b/extensions/git/src/api/git.d.ts
index 7d915d01ce3..f63b0b12c3c 100644
--- a/extensions/git/src/api/git.d.ts
+++ b/extensions/git/src/api/git.d.ts
@@ -130,10 +130,13 @@ export interface CommitOptions {
signoff?: boolean;
signCommit?: boolean;
empty?: boolean;
+ noVerify?: boolean;
}
export interface BranchQuery {
readonly remote?: boolean;
+ readonly pattern?: string;
+ readonly count?: number;
readonly contains?: string;
}
@@ -221,6 +224,10 @@ export interface CredentialsProvider {
getCredentials(host: Uri): ProviderResult;
}
+export interface PushErrorHandler {
+ handlePushError(repository: Repository, remote: Remote, refspec: string, error: Error & { gitErrorCode: GitErrorCodes }): Promise;
+}
+
export type APIState = 'uninitialized' | 'initialized';
export interface API {
@@ -237,6 +244,7 @@ export interface API {
registerRemoteSourceProvider(provider: RemoteSourceProvider): Disposable;
registerCredentialsProvider(provider: CredentialsProvider): Disposable;
+ registerPushErrorHandler(handler: PushErrorHandler): Disposable;
}
export interface GitExtension {
@@ -274,6 +282,7 @@ export const enum GitErrorCodes {
CantOpenResource = 'CantOpenResource',
GitNotFound = 'GitNotFound',
CantCreatePipe = 'CantCreatePipe',
+ PermissionDenied = 'PermissionDenied',
CantAccessRemote = 'CantAccessRemote',
RepositoryNotFound = 'RepositoryNotFound',
RepositoryIsLocked = 'RepositoryIsLocked',
diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts
index e60dc39e6a6..737a32e6c8b 100644
--- a/extensions/git/src/commands.ts
+++ b/extensions/git/src/commands.ts
@@ -6,10 +6,10 @@
import { lstat, Stats } from 'fs';
import * as os from 'os';
import * as path from 'path';
-import { commands, Disposable, LineChange, MessageOptions, OutputChannel, Position, ProgressLocation, QuickPickItem, Range, SourceControlResourceState, TextDocumentShowOptions, TextEditor, Uri, ViewColumn, window, workspace, WorkspaceEdit, WorkspaceFolder, TimelineItem, env, QuickPick } from 'vscode';
+import { commands, Disposable, LineChange, MessageOptions, OutputChannel, Position, ProgressLocation, QuickPickItem, Range, SourceControlResourceState, TextDocumentShowOptions, TextEditor, Uri, ViewColumn, window, workspace, WorkspaceEdit, WorkspaceFolder, TimelineItem, env, Selection, TextDocumentContentProvider } from 'vscode';
import TelemetryReporter from 'vscode-extension-telemetry';
import * as nls from 'vscode-nls';
-import { Branch, GitErrorCodes, Ref, RefType, Status, CommitOptions, RemoteSourceProvider, RemoteSource } from './api/git';
+import { Branch, GitErrorCodes, Ref, RefType, Status, CommitOptions, RemoteSourceProvider } from './api/git';
import { ForcePushMode, Git, Stash } from './git';
import { Model } from './model';
import { Repository, Resource, ResourceGroupType } from './repository';
@@ -18,8 +18,8 @@ import { fromGitUri, toGitUri, isGitUri } from './uri';
import { grep, isDescendant, pathEquals } from './util';
import { Log, LogLevel } from './log';
import { GitTimelineItem } from './timelineProvider';
-import { throttle, debounce } from './decorators';
import { ApiRepository } from './api/api1';
+import { pickRemoteSource } from './remoteSource';
const localize = nls.loadMessageBundle();
@@ -31,14 +31,14 @@ class CheckoutItem implements QuickPickItem {
constructor(protected ref: Ref) { }
- async run(repository: Repository): Promise {
+ async run(repository: Repository, opts?: { detached?: boolean }): Promise {
const ref = this.ref.name;
if (!ref) {
return;
}
- await repository.checkout(ref);
+ await repository.checkout(ref, opts);
}
}
@@ -99,32 +99,36 @@ class MergeItem implements QuickPickItem {
}
}
-class CreateBranchItem implements QuickPickItem {
+class RebaseItem implements QuickPickItem {
- constructor(private cc: CommandCenter) { }
+ get label(): string { return this.ref.name || ''; }
+ description: string = '';
- get label(): string { return '$(plus) ' + localize('create branch', 'Create new branch...'); }
- get description(): string { return ''; }
-
- get alwaysShow(): boolean { return true; }
+ constructor(readonly ref: Ref) { }
async run(repository: Repository): Promise {
- await this.cc.branch(repository);
+ if (this.ref?.name) {
+ await repository.rebase(this.ref.name);
+ }
}
}
+class CreateBranchItem implements QuickPickItem {
+ get label(): string { return '$(plus) ' + localize('create branch', 'Create new branch...'); }
+ get description(): string { return ''; }
+ get alwaysShow(): boolean { return true; }
+}
+
class CreateBranchFromItem implements QuickPickItem {
-
- constructor(private cc: CommandCenter) { }
-
get label(): string { return '$(plus) ' + localize('create branch from', 'Create new branch from...'); }
get description(): string { return ''; }
-
get alwaysShow(): boolean { return true; }
+}
- async run(repository: Repository): Promise {
- await this.cc.branch(repository);
- }
+class CheckoutDetachedItem implements QuickPickItem {
+ get label(): string { return '$(debug-disconnect) ' + localize('checkout detached', 'Checkout detached...'); }
+ get description(): string { return ''; }
+ get alwaysShow(): boolean { return true; }
}
class HEADItem implements QuickPickItem {
@@ -203,18 +207,53 @@ async function categorizeResourceByResolution(resources: Resource[]): Promise<{
function createCheckoutItems(repository: Repository): CheckoutItem[] {
const config = workspace.getConfiguration('git');
- const checkoutType = config.get('checkoutType') || 'all';
- const includeTags = checkoutType === 'all' || checkoutType === 'tags';
- const includeRemotes = checkoutType === 'all' || checkoutType === 'remote';
+ const checkoutTypeConfig = config.get('checkoutType');
+ let checkoutTypes: string[];
- const heads = repository.refs.filter(ref => ref.type === RefType.Head)
- .map(ref => new CheckoutItem(ref));
- const tags = (includeTags ? repository.refs.filter(ref => ref.type === RefType.Tag) : [])
- .map(ref => new CheckoutTagItem(ref));
- const remoteHeads = (includeRemotes ? repository.refs.filter(ref => ref.type === RefType.RemoteHead) : [])
- .map(ref => new CheckoutRemoteHeadItem(ref));
+ if (checkoutTypeConfig === 'all' || !checkoutTypeConfig || checkoutTypeConfig.length === 0) {
+ checkoutTypes = ['local', 'remote', 'tags'];
+ } else if (typeof checkoutTypeConfig === 'string') {
+ checkoutTypes = [checkoutTypeConfig];
+ } else {
+ checkoutTypes = checkoutTypeConfig;
+ }
- return [...heads, ...tags, ...remoteHeads];
+ const processors = checkoutTypes.map(getCheckoutProcessor)
+ .filter(p => !!p) as CheckoutProcessor[];
+
+ for (const ref of repository.refs) {
+ for (const processor of processors) {
+ processor.onRef(ref);
+ }
+ }
+
+ return processors.reduce((r, p) => r.concat(...p.items), []);
+}
+
+class CheckoutProcessor {
+
+ private refs: Ref[] = [];
+ get items(): CheckoutItem[] { return this.refs.map(r => new this.ctor(r)); }
+ constructor(private type: RefType, private ctor: { new(ref: Ref): CheckoutItem }) { }
+
+ onRef(ref: Ref): void {
+ if (ref.type === this.type) {
+ this.refs.push(ref);
+ }
+ }
+}
+
+function getCheckoutProcessor(type: string): CheckoutProcessor | undefined {
+ switch (type) {
+ case 'local':
+ return new CheckoutProcessor(RefType.Head, CheckoutItem);
+ case 'remote':
+ return new CheckoutProcessor(RefType.RemoteHead, CheckoutRemoteHeadItem);
+ case 'tags':
+ return new CheckoutProcessor(RefType.Tag, CheckoutTagItem);
+ }
+
+ return undefined;
}
function sanitizeRemoteName(name: string) {
@@ -232,6 +271,7 @@ enum PushType {
Push,
PushTo,
PushFollowTags,
+ PushTags
}
interface PushOptions {
@@ -240,75 +280,27 @@ interface PushOptions {
silent?: boolean;
}
-async function getQuickPickResult(quickpick: QuickPick): Promise {
- const result = await new Promise(c => {
- quickpick.onDidAccept(() => c(quickpick.selectedItems[0]));
- quickpick.onDidHide(() => c(undefined));
- quickpick.show();
- });
+class CommandErrorOutputTextDocumentContentProvider implements TextDocumentContentProvider {
- quickpick.hide();
- return result;
-}
+ private items = new Map();
-class RemoteSourceProviderQuickPick {
-
- private quickpick: QuickPick;
-
- constructor(private provider: RemoteSourceProvider) {
- this.quickpick = window.createQuickPick();
- this.quickpick.ignoreFocusOut = true;
-
- if (provider.supportsQuery) {
- this.quickpick.placeholder = localize('type to search', "Repository name (type to search)");
- this.quickpick.onDidChangeValue(this.onDidChangeValue, this);
- } else {
- this.quickpick.placeholder = localize('type to filter', "Repository name");
- }
+ set(uri: Uri, contents: string): void {
+ this.items.set(uri.path, contents);
}
- @debounce(300)
- onDidChangeValue(): void {
- this.query();
+ delete(uri: Uri): void {
+ this.items.delete(uri.path);
}
- @throttle
- async query(): Promise {
- this.quickpick.busy = true;
-
- try {
- const remoteSources = await this.provider.getRemoteSources(this.quickpick.value) || [];
-
- if (remoteSources.length === 0) {
- this.quickpick.items = [{
- label: localize('none found', "No remote repositories found."),
- alwaysShow: true
- }];
- } else {
- this.quickpick.items = remoteSources.map(remoteSource => ({
- label: remoteSource.name,
- description: remoteSource.description || (typeof remoteSource.url === 'string' ? remoteSource.url : remoteSource.url[0]),
- remoteSource
- }));
- }
- } catch (err) {
- this.quickpick.items = [{ label: localize('error', "$(error) Error: {0}", err.message), alwaysShow: true }];
- console.error(err);
- } finally {
- this.quickpick.busy = false;
- }
- }
-
- async pick(): Promise {
- this.query();
- const result = await getQuickPickResult(this.quickpick);
- return result?.remoteSource;
+ provideTextDocumentContent(uri: Uri): string | undefined {
+ return this.items.get(uri.path);
}
}
export class CommandCenter {
private disposables: Disposable[];
+ private commandErrors = new CommandErrorOutputTextDocumentContentProvider();
constructor(
private git: Git,
@@ -325,6 +317,8 @@ export class CommandCenter {
return commands.registerCommand(commandId, command);
}
});
+
+ this.disposables.push(workspace.registerTextDocumentContentProvider('git-output', this.commandErrors));
}
@command('git.setLogLevel')
@@ -399,7 +393,9 @@ export class CommandCenter {
right = toGitUri(resource.resourceUri, resource.resourceGroupType === ResourceGroupType.Index ? 'index' : 'wt', { submoduleOf: repository.root });
}
} else {
- if (resource.type !== Status.DELETED_BY_THEM) {
+ if (resource.type === Status.DELETED_BY_US || resource.type === Status.DELETED_BY_THEM) {
+ left = toGitUri(resource.resourceUri, '~1');
+ } else {
left = this.getLeftResource(resource);
}
@@ -524,54 +520,12 @@ export class CommandCenter {
}
}
- @command('git.clone')
- async clone(url?: string, parentPath?: string): Promise {
- if (!url) {
- const quickpick = window.createQuickPick<(QuickPickItem & { provider?: RemoteSourceProvider, url?: string })>();
- quickpick.ignoreFocusOut = true;
-
- const providers = this.model.getRemoteProviders()
- .map(provider => ({ label: (provider.icon ? `$(${provider.icon}) ` : '') + localize('clonefrom', "Clone from {0}", provider.name), alwaysShow: true, provider }));
-
- quickpick.placeholder = providers.length === 0
- ? localize('provide url', "Provide repository URL")
- : localize('provide url or pick', "Provide repository URL or pick a repository source.");
-
- const updatePicks = (value?: string) => {
- if (value) {
- quickpick.items = [{
- label: localize('repourl', "Clone from URL"),
- description: value,
- alwaysShow: true,
- url: value
- },
- ...providers];
- } else {
- quickpick.items = providers;
- }
- };
-
- quickpick.onDidChangeValue(updatePicks);
- updatePicks();
-
- const result = await getQuickPickResult(quickpick);
-
- if (result) {
- if (result.url) {
- url = result.url;
- } else if (result.provider) {
- const quickpick = new RemoteSourceProviderQuickPick(result.provider);
- const remote = await quickpick.pick();
-
- if (remote) {
- if (typeof remote.url === 'string') {
- url = remote.url;
- } else if (remote.url.length > 0) {
- url = await window.showQuickPick(remote.url, { ignoreFocusOut: true, placeHolder: localize('pick url', "Choose a URL to clone from.") });
- }
- }
- }
- }
+ async cloneRepository(url?: string, parentPath?: string, options: { recursive?: boolean } = {}): Promise {
+ if (!url || typeof url !== 'string') {
+ url = await pickRemoteSource(this.model, {
+ providerLabel: provider => localize('clonefrom', "Clone from {0}", provider.name),
+ urlLabel: localize('repourl', "Clone from URL")
+ });
}
if (!url) {
@@ -622,39 +576,58 @@ export class CommandCenter {
const repositoryPath = await window.withProgress(
opts,
- (progress, token) => this.git.clone(url!, parentPath!, progress, token)
+ (progress, token) => this.git.clone(url!, { parentPath: parentPath!, progress, recursive: options.recursive }, token)
);
- let message = localize('proposeopen', "Would you like to open the cloned repository?");
- const open = localize('openrepo', "Open");
- const openNewWindow = localize('openreponew', "Open in New Window");
- const choices = [open, openNewWindow];
+ const config = workspace.getConfiguration('git');
+ const openAfterClone = config.get<'always' | 'alwaysNewWindow' | 'whenNoFolderOpen' | 'prompt'>('openAfterClone');
- const addToWorkspace = localize('add', "Add to Workspace");
- if (workspace.workspaceFolders) {
- message = localize('proposeopen2', "Would you like to open the cloned repository, or add it to the current workspace?");
- choices.push(addToWorkspace);
+ enum PostCloneAction { Open, OpenNewWindow, AddToWorkspace }
+ let action: PostCloneAction | undefined = undefined;
+
+ if (openAfterClone === 'always') {
+ action = PostCloneAction.Open;
+ } else if (openAfterClone === 'alwaysNewWindow') {
+ action = PostCloneAction.OpenNewWindow;
+ } else if (openAfterClone === 'whenNoFolderOpen' && !workspace.workspaceFolders) {
+ action = PostCloneAction.Open;
}
- const result = await window.showInformationMessage(message, ...choices);
+ if (action === undefined) {
+ let message = localize('proposeopen', "Would you like to open the cloned repository?");
+ 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) {
+ message = localize('proposeopen2', "Would you like to open the cloned repository, or add it to the current workspace?");
+ choices.push(addToWorkspace);
+ }
+
+ const result = await window.showInformationMessage(message, ...choices);
+
+ action = result === open ? PostCloneAction.Open
+ : result === openNewWindow ? PostCloneAction.OpenNewWindow
+ : result === addToWorkspace ? PostCloneAction.AddToWorkspace : undefined;
+ }
- const openFolder = result === open;
/* __GDPR__
"clone" : {
"outcome" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"openFolder": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth", "isMeasurement": true }
}
*/
- this.telemetryReporter.sendTelemetryEvent('clone', { outcome: 'success' }, { openFolder: openFolder ? 1 : 0 });
+ this.telemetryReporter.sendTelemetryEvent('clone', { outcome: 'success' }, { openFolder: action === PostCloneAction.Open || action === PostCloneAction.OpenNewWindow ? 1 : 0 });
const uri = Uri.file(repositoryPath);
- if (openFolder) {
- commands.executeCommand('vscode.openFolder', uri);
- } else if (result === addToWorkspace) {
+ if (action === PostCloneAction.Open) {
+ commands.executeCommand('vscode.openFolder', uri, { forceReuseWindow: true });
+ } else if (action === PostCloneAction.AddToWorkspace) {
workspace.updateWorkspaceFolders(workspace.workspaceFolders!.length, 0, { uri });
- } else if (result === openNewWindow) {
- commands.executeCommand('vscode.openFolder', uri, true);
+ } else if (action === PostCloneAction.OpenNewWindow) {
+ commands.executeCommand('vscode.openFolder', uri, { forceNewWindow: true });
}
} catch (err) {
if (/already exists and is not an empty directory/.test(err && err.stderr || '')) {
@@ -679,6 +652,16 @@ export class CommandCenter {
}
}
+ @command('git.clone')
+ async clone(url?: string, parentPath?: string): Promise {
+ this.cloneRepository(url, parentPath);
+ }
+
+ @command('git.cloneRecursive')
+ async cloneRecursive(url?: string, parentPath?: string): Promise {
+ this.cloneRepository(url, parentPath, { recursive: true });
+ }
+
@command('git.init')
async init(skipFolderPrompt = false): Promise {
let repositoryPath: string | undefined = undefined;
@@ -845,7 +828,7 @@ export class CommandCenter {
try {
document = await workspace.openTextDocument(uri);
} catch (error) {
- await commands.executeCommand('vscode.open', uri, opts);
+ await commands.executeCommand('vscode.open', uri, opts);
continue;
}
@@ -858,7 +841,7 @@ export class CommandCenter {
const editor = await window.showTextDocument(document, opts);
editor.revealRange(previousVisibleRanges[0]);
} else {
- await window.showTextDocument(document, opts);
+ await commands.executeCommand('vscode.open', uri, opts);
}
}
}
@@ -937,6 +920,27 @@ export class CommandCenter {
}
}
+ @command('git.rename', { repository: true })
+ async rename(repository: Repository, fromUri: Uri): Promise {
+ if (!fromUri) {
+ return;
+ }
+
+ const from = path.relative(repository.root, fromUri.path);
+ let to = await window.showInputBox({
+ value: from,
+ valueSelection: [from.length - path.basename(from).length, from.length]
+ });
+
+ to = to?.trim();
+
+ if (!to) {
+ return;
+ }
+
+ await repository.move(from, to);
+ }
+
@command('git.stage')
async stage(...resourceStates: SourceControlResourceState[]): Promise {
this.outputChannel.appendLine(`git.stage ${resourceStates.length}`);
@@ -1109,6 +1113,9 @@ export class CommandCenter {
}
await this._stageChanges(textEditor, [changes[index]]);
+
+ const firstStagedLine = changes[index].modifiedStartLineNumber - 1;
+ textEditor.selections = [new Selection(firstStagedLine, 0, firstStagedLine, 0)];
}
@command('git.stageSelectedRanges', { diff: true })
@@ -1156,6 +1163,9 @@ export class CommandCenter {
}
await this._revertChanges(textEditor, [...changes.slice(0, index), ...changes.slice(index + 1)]);
+
+ const firstStagedLine = changes[index].modifiedStartLineNumber - 1;
+ textEditor.selections = [new Selection(firstStagedLine, 0, firstStagedLine, 0)];
}
@command('git.revertSelectedRanges', { diff: true })
@@ -1177,7 +1187,9 @@ export class CommandCenter {
return;
}
+ const selectionsBeforeRevert = textEditor.selections;
await this._revertChanges(textEditor, selectedChanges);
+ textEditor.selections = selectionsBeforeRevert;
}
private async _revertChanges(textEditor: TextEditor, changes: LineChange[]): Promise {
@@ -1190,7 +1202,6 @@ export class CommandCenter {
const originalUri = toGitUri(modifiedUri, '~');
const originalDocument = await workspace.openTextDocument(originalUri);
- const selectionsBeforeRevert = textEditor.selections;
const visibleRangesBeforeRevert = textEditor.visibleRanges;
const result = applyLineChanges(originalDocument, modifiedDocument, changes);
@@ -1200,7 +1211,6 @@ export class CommandCenter {
await modifiedDocument.save();
- textEditor.selections = selectionsBeforeRevert;
textEditor.revealRange(visibleRangesBeforeRevert[0]);
}
@@ -1299,7 +1309,7 @@ export class CommandCenter {
if (scmResources.length === 1) {
if (untrackedCount > 0) {
- 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));
+ message = localize('confirm delete', "Are you sure you want to DELETE {0}?\nThis is IRREVERSIBLE!\nThis file will be FOREVER LOST if you proceed.", path.basename(scmResources[0].resourceUri.fsPath));
yes = localize('delete file', "Delete file");
} else {
if (scmResources[0].type === Status.DELETED) {
@@ -1404,7 +1414,7 @@ export class CommandCenter {
private async _cleanTrackedChanges(repository: Repository, resources: Resource[]): Promise {
const message = resources.length === 1
? localize('confirm discard all single', "Are you sure you want to discard changes in {0}?", path.basename(resources[0].resourceUri.fsPath))
- : localize('confirm discard all', "Are you sure you want to discard ALL changes in {0} files?\nThis is IRREVERSIBLE!\nYour current working set will be FOREVER LOST.", resources.length);
+ : localize('confirm discard all', "Are you sure you want to discard ALL changes in {0} files?\nThis is IRREVERSIBLE!\nYour current working set will be FOREVER LOST if you proceed.", resources.length);
const yes = resources.length === 1
? localize('discardAll multiple', "Discard 1 File")
: localize('discardAll', "Discard All {0} Files", resources.length);
@@ -1418,7 +1428,7 @@ export class CommandCenter {
}
private async _cleanUntrackedChange(repository: Repository, resource: Resource): Promise {
- const message = localize('confirm delete', "Are you sure you want to DELETE {0}?\nThis is IRREVERSIBLE!\nThis file will be FOREVER LOST.", path.basename(resource.resourceUri.fsPath));
+ const message = localize('confirm delete', "Are you sure you want to DELETE {0}?\nThis is IRREVERSIBLE!\nThis file will be FOREVER LOST if you proceed.", path.basename(resource.resourceUri.fsPath));
const yes = localize('delete file', "Delete file");
const pick = await window.showWarningMessage(message, { modal: true }, yes);
@@ -1430,7 +1440,7 @@ export class CommandCenter {
}
private async _cleanUntrackedChanges(repository: Repository, resources: Resource[]): Promise {
- const message = localize('confirm delete multiple', "Are you sure you want to DELETE {0} files?", resources.length);
+ const message = localize('confirm delete multiple', "Are you sure you want to DELETE {0} files?\nThis is IRREVERSIBLE!\nThese files will be FOREVER LOST if you proceed.", resources.length);
const yes = localize('delete files', "Delete Files");
const pick = await window.showWarningMessage(message, { modal: true }, yes);
@@ -1496,7 +1506,7 @@ export class CommandCenter {
}
// 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 message = localize('no staged changes', "There are no staged changes to commit.\n\nWould you like to stage all your changes and commit them directly?");
const yes = localize('yes', "Yes");
const always = localize('always', "Always");
const never = localize('never', "Never");
@@ -1536,10 +1546,38 @@ export class CommandCenter {
// no staged changes and no tracked unstaged changes
|| (noStagedChanges && smartCommitChanges === 'tracked' && repository.workingTreeGroup.resourceStates.every(r => r.type === Status.UNTRACKED))
)
+ // amend allows changing only the commit message
+ && !opts.amend
&& !opts.empty
) {
- window.showInformationMessage(localize('no changes', "There are no changes to commit."));
- return false;
+ const commitAnyway = localize('commit anyway', "Create Empty Commit");
+ const answer = await window.showInformationMessage(localize('no changes', "There are no changes to commit."), commitAnyway);
+
+ if (answer !== commitAnyway) {
+ return false;
+ }
+
+ opts.empty = true;
+ }
+
+ if (opts.noVerify) {
+ if (!config.get('allowNoVerifyCommit')) {
+ await window.showErrorMessage(localize('no verify commit not allowed', "Commits without verification are not allowed, please enable them with the 'git.allowNoVerifyCommit' setting."));
+ return false;
+ }
+
+ if (config.get('confirmNoVerifyCommit')) {
+ const message = localize('confirm no verify commit', "You are about to commit your changes without verification, this skips pre-commit hooks and can be undesirable.\n\nAre you sure to continue?");
+ const yes = localize('ok', "OK");
+ const neverAgain = localize('never ask again', "OK, Don't Ask Again");
+ const pick = await window.showWarningMessage(message, { modal: true }, yes, neverAgain);
+
+ if (pick === neverAgain) {
+ config.update('confirmNoVerifyCommit', false, true);
+ } else if (pick !== yes) {
+ return false;
+ }
+ }
}
const message = await getCommitMessage();
@@ -1646,8 +1684,7 @@ export class CommandCenter {
await this.commitWithAnyInput(repository, { all: true, amend: true });
}
- @command('git.commitEmpty', { repository: true })
- async commitEmpty(repository: Repository): Promise {
+ private async _commitEmpty(repository: Repository, noVerify?: boolean): Promise {
const root = Uri.file(repository.root);
const config = workspace.getConfiguration('git', root);
const shouldPrompt = config.get('confirmEmptyCommits') === true;
@@ -1665,7 +1702,52 @@ export class CommandCenter {
}
}
- await this.commitWithAnyInput(repository, { empty: true });
+ await this.commitWithAnyInput(repository, { empty: true, noVerify });
+ }
+
+ @command('git.commitEmpty', { repository: true })
+ async commitEmpty(repository: Repository): Promise {
+ await this._commitEmpty(repository);
+ }
+
+ @command('git.commitNoVerify', { repository: true })
+ async commitNoVerify(repository: Repository): Promise {
+ await this.commitWithAnyInput(repository, { noVerify: true });
+ }
+
+ @command('git.commitStagedNoVerify', { repository: true })
+ async commitStagedNoVerify(repository: Repository): Promise {
+ await this.commitWithAnyInput(repository, { all: false, noVerify: true });
+ }
+
+ @command('git.commitStagedSignedNoVerify', { repository: true })
+ async commitStagedSignedNoVerify(repository: Repository): Promise {
+ await this.commitWithAnyInput(repository, { all: false, signoff: true, noVerify: true });
+ }
+
+ @command('git.commitStagedAmendNoVerify', { repository: true })
+ async commitStagedAmendNoVerify(repository: Repository): Promise {
+ await this.commitWithAnyInput(repository, { all: false, amend: true, noVerify: true });
+ }
+
+ @command('git.commitAllNoVerify', { repository: true })
+ async commitAllNoVerify(repository: Repository): Promise {
+ await this.commitWithAnyInput(repository, { all: true, noVerify: true });
+ }
+
+ @command('git.commitAllSignedNoVerify', { repository: true })
+ async commitAllSignedNoVerify(repository: Repository): Promise {
+ await this.commitWithAnyInput(repository, { all: true, signoff: true, noVerify: true });
+ }
+
+ @command('git.commitAllAmendNoVerify', { repository: true })
+ async commitAllAmendNoVerify(repository: Repository): Promise {
+ await this.commitWithAnyInput(repository, { all: true, amend: true, noVerify: true });
+ }
+
+ @command('git.commitEmptyNoVerify', { repository: true })
+ async commitEmptyNoVerify(repository: Repository): Promise {
+ await this._commitEmpty(repository, true);
}
@command('git.restoreCommitTemplate', { repository: true })
@@ -1704,20 +1786,38 @@ export class CommandCenter {
}
@command('git.checkout', { repository: true })
- async checkout(repository: Repository, treeish: string): Promise {
- if (typeof treeish === 'string') {
- await repository.checkout(treeish);
+ async checkout(repository: Repository, treeish?: string): Promise {
+ return this._checkout(repository, { treeish });
+ }
+
+ @command('git.checkoutDetached', { repository: true })
+ async checkoutDetached(repository: Repository, treeish?: string): Promise {
+ return this._checkout(repository, { detached: true, treeish });
+ }
+
+ private async _checkout(repository: Repository, opts?: { detached?: boolean, treeish?: string }): Promise {
+ if (typeof opts?.treeish === 'string') {
+ await repository.checkout(opts?.treeish, opts);
return true;
}
- 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 createBranch = new CreateBranchItem();
+ const createBranchFrom = new CreateBranchFromItem();
+ const checkoutDetached = new CheckoutDetachedItem();
+ const picks: QuickPickItem[] = [];
+
+ if (!opts?.detached) {
+ picks.push(createBranch, createBranchFrom, checkoutDetached);
+ }
+
+ picks.push(...createCheckoutItems(repository));
const quickpick = window.createQuickPick();
quickpick.items = picks;
- quickpick.placeholder = placeHolder;
+ quickpick.placeholder = opts?.detached
+ ? localize('select a ref to checkout detached', 'Select a ref to checkout in detached mode')
+ : localize('select a ref to checkout', 'Select a ref to checkout');
+
quickpick.show();
const choice = await new Promise(c => quickpick.onDidAccept(() => c(quickpick.activeItems[0])));
@@ -1731,8 +1831,31 @@ export class CommandCenter {
await this._branch(repository, quickpick.value);
} else if (choice === createBranchFrom) {
await this._branch(repository, quickpick.value, true);
+ } else if (choice === checkoutDetached) {
+ return this._checkout(repository, { detached: true });
} else {
- await (choice as CheckoutItem).run(repository);
+ const item = choice as CheckoutItem;
+
+ try {
+ await item.run(repository, opts);
+ } catch (err) {
+ if (err.gitErrorCode !== GitErrorCodes.DirtyWorkTree) {
+ throw err;
+ }
+
+ const force = localize('force', "Force Checkout");
+ const stash = localize('stashcheckout', "Stash & Checkout");
+ const choice = await window.showWarningMessage(localize('local changes', "Your local changes would be overwritten by checkout."), { modal: true }, force, stash);
+
+ if (choice === force) {
+ await this.cleanAll(repository);
+ await item.run(repository, opts);
+ } else if (choice === stash) {
+ await this.stash(repository);
+ await item.run(repository, opts);
+ await this.stashPopLatest(repository);
+ }
+ }
}
return true;
@@ -1885,6 +2008,44 @@ export class CommandCenter {
await choice.run(repository);
}
+ @command('git.rebase', { repository: true })
+ async rebase(repository: Repository): Promise {
+ const config = workspace.getConfiguration('git');
+ const checkoutType = config.get('checkoutType') || 'all';
+ const includeRemotes = checkoutType === 'all' || checkoutType === 'remote';
+
+ const heads = repository.refs.filter(ref => ref.type === RefType.Head)
+ .filter(ref => ref.name !== repository.HEAD?.name)
+ .filter(ref => ref.name || ref.commit);
+
+ const remoteHeads = (includeRemotes ? repository.refs.filter(ref => ref.type === RefType.RemoteHead) : [])
+ .filter(ref => ref.name || ref.commit);
+
+ const picks = [...heads, ...remoteHeads]
+ .map(ref => new RebaseItem(ref));
+
+ // set upstream branch as first
+ if (repository.HEAD?.upstream) {
+ const upstreamName = `${repository.HEAD?.upstream.remote}/${repository.HEAD?.upstream.name}`;
+ const index = picks.findIndex(e => e.ref.name === upstreamName);
+
+ if (index > -1) {
+ const [ref] = picks.splice(index, 1);
+ ref.description = '(upstream)';
+ picks.unshift(ref);
+ }
+ }
+
+ const placeHolder = localize('select a branch to rebase onto', 'Select a branch to rebase onto');
+ const choice = await window.showQuickPick(picks, { placeHolder });
+
+ if (!choice) {
+ return;
+ }
+
+ await choice.run(repository);
+ }
+
@command('git.createTag', { repository: true })
async createTag(repository: Repository): Promise {
const inputTagName = await window.showInputBox({
@@ -1904,8 +2065,7 @@ export class CommandCenter {
});
const name = inputTagName.replace(/^\.|\/\.|\.\.|~|\^|:|\/$|\.lock$|\.lock\/|\\|\*|\s|^\s*$|\.$/g, '-');
- const message = inputMessage || name;
- await repository.tag(name, message);
+ await repository.tag(name, inputMessage);
}
@command('git.deleteTag', { repository: true })
@@ -2063,6 +2223,10 @@ export class CommandCenter {
return;
}
+ if (pushOptions.pushType === PushType.PushTags) {
+ await repository.pushTags(undefined, forcePushMode);
+ }
+
if (!repository.HEAD || !repository.HEAD.name) {
if (!pushOptions.silent) {
window.showWarningMessage(localize('nobranch', "Please check out a branch to push to a remote."));
@@ -2144,54 +2308,17 @@ export class CommandCenter {
await this._push(repository, { pushType: PushType.PushTo, forcePush: true });
}
+ @command('git.pushTags', { repository: true })
+ async pushTags(repository: Repository): Promise {
+ await this._push(repository, { pushType: PushType.PushTags });
+ }
+
@command('git.addRemote', { repository: true })
async addRemote(repository: Repository): Promise {
- const quickpick = window.createQuickPick<(QuickPickItem & { provider?: RemoteSourceProvider, url?: string })>();
- quickpick.ignoreFocusOut = true;
-
- const providers = this.model.getRemoteProviders()
- .map(provider => ({ label: (provider.icon ? `$(${provider.icon}) ` : '') + localize('addfrom', "Add remote from {0}", provider.name), alwaysShow: true, provider }));
-
- quickpick.placeholder = providers.length === 0
- ? localize('provide url', "Provide repository URL")
- : localize('provide url or pick', "Provide repository URL or pick a repository source.");
-
- const updatePicks = (value?: string) => {
- if (value) {
- quickpick.items = [{
- label: localize('addFrom', "Add remote from URL"),
- description: value,
- alwaysShow: true,
- url: value
- },
- ...providers];
- } else {
- quickpick.items = providers;
- }
- };
-
- quickpick.onDidChangeValue(updatePicks);
- updatePicks();
-
- const result = await getQuickPickResult(quickpick);
- let url: string | undefined;
-
- if (result) {
- if (result.url) {
- url = result.url;
- } else if (result.provider) {
- const quickpick = new RemoteSourceProviderQuickPick(result.provider);
- const remote = await quickpick.pick();
-
- if (remote) {
- if (typeof remote.url === 'string') {
- url = remote.url;
- } else if (remote.url.length > 0) {
- url = await window.showQuickPick(remote.url, { ignoreFocusOut: true, placeHolder: localize('pick url', "Choose a URL to clone from.") });
- }
- }
- }
- }
+ const url = await pickRemoteSource(this.model, {
+ providerLabel: provider => localize('addfrom', "Add remote from {0}", provider.name),
+ urlLabel: localize('addFrom', "Add remote from URL")
+ });
if (!url) {
return;
@@ -2219,6 +2346,7 @@ export class CommandCenter {
}
await repository.addRemote(name, url);
+ await repository.fetch(name);
return name;
}
@@ -2432,6 +2560,34 @@ export class CommandCenter {
return;
}
+ const config = workspace.getConfiguration('git', Uri.file(repository.root));
+ const promptToSaveFilesBeforeStashing = config.get<'always' | 'staged' | 'never'>('promptToSaveFilesBeforeStash');
+
+ if (promptToSaveFilesBeforeStashing !== 'never') {
+ let documents = workspace.textDocuments
+ .filter(d => !d.isUntitled && d.isDirty && isDescendant(repository.root, d.uri.fsPath));
+
+ if (promptToSaveFilesBeforeStashing === 'staged' || repository.indexGroup.resourceStates.length > 0) {
+ documents = documents
+ .filter(d => repository.indexGroup.resourceStates.some(s => pathEquals(s.resourceUri.fsPath, d.uri.fsPath)));
+ }
+
+ if (documents.length > 0) {
+ const message = documents.length === 1
+ ? localize('unsaved stash files single', "The following file has unsaved changes which won't be included in the stash if you proceed: {0}.\n\nWould you like to save it before stashing?", path.basename(documents[0].uri.fsPath))
+ : localize('unsaved stash files', "There are {0} unsaved files.\n\nWould you like to save them before stashing?", documents.length);
+ const saveAndStash = localize('save and stash', "Save All & Stash");
+ const stash = localize('stash', "Stash Anyway");
+ const pick = await window.showWarningMessage(message, { modal: true }, saveAndStash, stash);
+
+ if (pick === saveAndStash) {
+ await Promise.all(documents.map(d => d.save()));
+ } else if (pick !== stash) {
+ return; // do not stash on cancel
+ }
+ }
+ }
+
const message = await this.getStashMessage();
if (typeof message === 'undefined') {
@@ -2515,6 +2671,16 @@ export class CommandCenter {
return;
}
+ // request confirmation for the operation
+ const yes = localize('yes', "Yes");
+ const result = await window.showWarningMessage(
+ localize('sure drop', "Are you sure you want to drop the stash: {0}?", stash.description),
+ yes
+ );
+ if (result !== yes) {
+ return;
+ }
+
await repository.dropStash(stash.index);
}
@@ -2533,8 +2699,7 @@ export class CommandCenter {
@command('git.timeline.openDiff', { repository: false })
async timelineOpenDiff(item: TimelineItem, uri: Uri | undefined, _source: string) {
- // eslint-disable-next-line eqeqeq
- if (uri == null || !GitTimelineItem.is(item)) {
+ if (uri === undefined || uri === null || !GitTimelineItem.is(item)) {
return undefined;
}
@@ -2579,7 +2744,11 @@ export class CommandCenter {
@command('git.rebaseAbort', { repository: true })
async rebaseAbort(repository: Repository): Promise {
- await repository.rebaseAbort();
+ if (repository.rebaseCommit) {
+ await repository.rebaseAbort();
+ } else {
+ await window.showInformationMessage(localize('no rebase', "No rebase in progress."));
+ }
}
private createCommand(id: string, key: string, method: Function, options: CommandOptions): (...args: any[]) => any {
@@ -2630,6 +2799,31 @@ export class CommandCenter {
const outputChannel = this.outputChannel as OutputChannel;
choices.set(openOutputChannelChoice, () => outputChannel.show());
+ const showCommandOutputChoice = localize('show command output', "Show Command Output");
+ if (err.stderr) {
+ choices.set(showCommandOutputChoice, async () => {
+ const timestamp = new Date().getTime();
+ const uri = Uri.parse(`git-output:/git-error-${timestamp}`);
+
+ let command = 'git';
+
+ if (err.gitArgs) {
+ command = `${command} ${err.gitArgs.join(' ')}`;
+ } else if (err.gitCommand) {
+ command = `${command} ${err.gitCommand}`;
+ }
+
+ this.commandErrors.set(uri, `> ${command}\n${err.stderr}`);
+
+ try {
+ const doc = await workspace.openTextDocument(uri);
+ await window.showTextDocument(doc);
+ } finally {
+ this.commandErrors.delete(uri);
+ }
+ });
+ }
+
switch (err.gitErrorCode) {
case GitErrorCodes.DirtyWorkTree:
message = localize('clean repo', "Please clean your repository working tree before checkout.");
diff --git a/extensions/git/src/decorationProvider.ts b/extensions/git/src/decorationProvider.ts
index 12883fe46d4..a4fbf0ad459 100644
--- a/extensions/git/src/decorationProvider.ts
+++ b/extensions/git/src/decorationProvider.ts
@@ -3,25 +3,25 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
-import { window, workspace, Uri, Disposable, Event, EventEmitter, Decoration, DecorationProvider, ThemeColor } from 'vscode';
+import { window, workspace, Uri, Disposable, Event, EventEmitter, FileDecoration, FileDecorationProvider, ThemeColor } from 'vscode';
import * as path from 'path';
import { Repository, GitResourceGroup } from './repository';
import { Model } from './model';
import { debounce } from './decorators';
-import { filterEvent, dispose, anyEvent, fireEvent } from './util';
+import { filterEvent, dispose, anyEvent, fireEvent, PromiseSource } from './util';
import { GitErrorCodes, Status } from './api/git';
-type Callback = { resolve: (status: boolean) => void, reject: (err: any) => void };
+class GitIgnoreDecorationProvider implements FileDecorationProvider {
-class GitIgnoreDecorationProvider implements DecorationProvider {
+ private static Decoration: FileDecoration = { color: new ThemeColor('gitDecoration.ignoredResourceForeground') };
- readonly onDidChangeDecorations: Event;
- private queue = new Map; }>();
+ readonly onDidChange: Event;
+ private queue = new Map>; }>();
private disposables: Disposable[] = [];
constructor(private model: Model) {
- this.onDidChangeDecorations = fireEvent(anyEvent(
- filterEvent(workspace.onDidSaveTextDocument, e => e.fileName.endsWith('.gitignore')),
+ this.onDidChange = fireEvent(anyEvent(
+ filterEvent(workspace.onDidSaveTextDocument, e => /\.gitignore$|\.git\/info\/exclude$/.test(e.uri.path)),
model.onDidOpenRepository,
model.onDidCloseRepository
));
@@ -29,32 +29,29 @@ class GitIgnoreDecorationProvider implements DecorationProvider {
this.disposables.push(window.registerDecorationProvider(this));
}
- provideDecoration(uri: Uri): Promise {
+ async provideFileDecoration(uri: Uri): Promise {
const repository = this.model.getRepository(uri);
if (!repository) {
- return Promise.resolve(undefined);
+ return;
}
let queueItem = this.queue.get(repository.root);
if (!queueItem) {
- queueItem = { repository, queue: new Map() };
+ queueItem = { repository, queue: new Map>() };
this.queue.set(repository.root, queueItem);
}
- return new Promise((resolve, reject) => {
- queueItem!.queue.set(uri.fsPath, { resolve, reject });
+ let promiseSource = queueItem.queue.get(uri.fsPath);
+
+ if (!promiseSource) {
+ promiseSource = new PromiseSource();
+ queueItem!.queue.set(uri.fsPath, promiseSource);
this.checkIgnoreSoon();
- }).then(ignored => {
- if (ignored) {
- return {
- priority: 3,
- color: new ThemeColor('gitDecoration.ignoredResourceForeground')
- };
- }
- return undefined;
- });
+ }
+
+ return await promiseSource.promise;
}
@debounce(500)
@@ -66,16 +63,16 @@ class GitIgnoreDecorationProvider implements DecorationProvider {
const paths = [...item.queue.keys()];
item.repository.checkIgnore(paths).then(ignoreSet => {
- for (const [key, value] of item.queue.entries()) {
- value.resolve(ignoreSet.has(key));
+ for (const [path, promiseSource] of item.queue.entries()) {
+ promiseSource.resolve(ignoreSet.has(path) ? GitIgnoreDecorationProvider.Decoration : undefined);
}
}, err => {
if (err.gitErrorCode !== GitErrorCodes.IsInSubmodule) {
console.error(err);
}
- for (const [, value] of item.queue.entries()) {
- value.reject(err);
+ for (const [, promiseSource] of item.queue.entries()) {
+ promiseSource.reject(err);
}
});
}
@@ -87,19 +84,19 @@ class GitIgnoreDecorationProvider implements DecorationProvider {
}
}
-class GitDecorationProvider implements DecorationProvider {
+class GitDecorationProvider implements FileDecorationProvider {
- private static SubmoduleDecorationData: Decoration = {
- title: 'Submodule',
- letter: 'S',
+ private static SubmoduleDecorationData: FileDecoration = {
+ tooltip: 'Submodule',
+ badge: 'S',
color: new ThemeColor('gitDecoration.submoduleResourceForeground')
};
private readonly _onDidChangeDecorations = new EventEmitter();
- readonly onDidChangeDecorations: Event = this._onDidChangeDecorations.event;
+ readonly onDidChange: Event = this._onDidChangeDecorations.event;
private disposables: Disposable[] = [];
- private decorations = new Map();
+ private decorations = new Map();
constructor(private repository: Repository) {
this.disposables.push(
@@ -109,7 +106,7 @@ class GitDecorationProvider implements DecorationProvider {
}
private onDidRunGitStatus(): void {
- let newDecorations = new Map();
+ let newDecorations = new Map();
this.collectSubmoduleDecorationData(newDecorations);
this.collectDecorationData(this.repository.indexGroup, newDecorations);
@@ -122,7 +119,7 @@ class GitDecorationProvider implements DecorationProvider {
this._onDidChangeDecorations.fire([...uris.values()].map(value => Uri.parse(value, true)));
}
- private collectDecorationData(group: GitResourceGroup, bucket: Map): void {
+ private collectDecorationData(group: GitResourceGroup, bucket: Map): void {
for (const r of group.resourceStates) {
const decoration = r.resourceDecoration;
@@ -137,13 +134,13 @@ class GitDecorationProvider implements DecorationProvider {
}
}
- private collectSubmoduleDecorationData(bucket: Map): void {
+ private collectSubmoduleDecorationData(bucket: Map): void {
for (const submodule of this.repository.submodules) {
bucket.set(Uri.file(path.join(this.repository.root, submodule.path)).toString(), GitDecorationProvider.SubmoduleDecorationData);
}
}
- provideDecoration(uri: Uri): Decoration | undefined {
+ provideFileDecoration(uri: Uri): FileDecoration | undefined {
return this.decorations.get(uri.toString());
}
diff --git a/extensions/git/src/emoji.ts b/extensions/git/src/emoji.ts
new file mode 100644
index 00000000000..bd686b0160d
--- /dev/null
+++ b/extensions/git/src/emoji.ts
@@ -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';
+import { workspace, Uri } from 'vscode';
+import { getExtensionContext } from './main';
+import { TextDecoder } from 'util';
+
+const emojiRegex = /:([-+_a-z0-9]+):/g;
+
+let emojiMap: Record | undefined;
+let emojiMapPromise: Promise | undefined;
+
+export async function ensureEmojis() {
+ if (emojiMap === undefined) {
+ if (emojiMapPromise === undefined) {
+ emojiMapPromise = loadEmojiMap();
+ }
+ await emojiMapPromise;
+ }
+}
+
+async function loadEmojiMap() {
+ const context = getExtensionContext();
+ const uri = (Uri as any).joinPath(context.extensionUri, 'resources', 'emojis.json');
+ emojiMap = JSON.parse(new TextDecoder('utf8').decode(await workspace.fs.readFile(uri)));
+}
+
+export function emojify(message: string) {
+ if (emojiMap === undefined) {
+ return message;
+ }
+
+ return message.replace(emojiRegex, (s, code) => {
+ return emojiMap?.[code] || s;
+ });
+}
diff --git a/extensions/git/src/fileSystemProvider.ts b/extensions/git/src/fileSystemProvider.ts
index 1168906dc30..42cae2db643 100644
--- a/extensions/git/src/fileSystemProvider.ts
+++ b/extensions/git/src/fileSystemProvider.ts
@@ -133,6 +133,8 @@ export class GitFileSystemProvider implements FileSystemProvider {
}
async stat(uri: Uri): Promise {
+ await this.model.isInitialized;
+
const { submoduleOf, path, ref } = fromGitUri(uri);
const repository = submoduleOf ? this.model.getRepository(submoduleOf) : this.model.getRepository(uri);
if (!repository) {
@@ -158,6 +160,8 @@ export class GitFileSystemProvider implements FileSystemProvider {
}
async readFile(uri: Uri): Promise {
+ await this.model.isInitialized;
+
const { path, ref, submoduleOf } = fromGitUri(uri);
if (submoduleOf) {
diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts
index b95e7009d10..de04c24872b 100644
--- a/extensions/git/src/git.ts
+++ b/extensions/git/src/git.ts
@@ -9,11 +9,10 @@ import * as os from 'os';
import * as cp from 'child_process';
import * as which from 'which';
import { EventEmitter } from 'events';
-import iconv = require('iconv-lite');
+import * as iconv from 'iconv-lite-umd';
import * as filetype from 'file-type';
import { assign, groupBy, IDisposable, toDisposable, dispose, mkdirp, readBytes, detectUnicodeEncoding, Encoding, onceEvent, splitInChunks, Limiter } from './util';
import { CancellationToken, Progress, Uri } from 'vscode';
-import { URI } from 'vscode-uri';
import { detectEncoding } from './encoding';
import { Ref, RefType, Branch, Remote, GitErrorCodes, LogOptions, Change, Status, CommitOptions, BranchQuery } from './api/git';
import * as byline from 'byline';
@@ -139,18 +138,28 @@ function findGitWin32(onLookup: (path: string) => void): Promise {
.then(undefined, () => findGitWin32InPath(onLookup));
}
-export function findGit(hint: string | undefined, onLookup: (path: string) => void): Promise {
- const first = hint ? findSpecificGit(hint, onLookup) : Promise.reject(null);
+export async function findGit(hint: string | string[] | undefined, onLookup: (path: string) => void): Promise {
+ const hints = Array.isArray(hint) ? hint : hint ? [hint] : [];
- return first
- .then(undefined, () => {
- switch (process.platform) {
- case 'darwin': return findGitDarwin(onLookup);
- case 'win32': return findGitWin32(onLookup);
- default: return findSpecificGit('git', onLookup);
- }
- })
- .then(null, () => Promise.reject(new Error('Git installation not found.')));
+ for (const hint of hints) {
+ try {
+ return await findSpecificGit(hint, onLookup);
+ } catch {
+ // noop
+ }
+ }
+
+ try {
+ switch (process.platform) {
+ case 'darwin': return await findGitDarwin(onLookup);
+ case 'win32': return await findGitWin32(onLookup);
+ default: return await findSpecificGit('git', onLookup);
+ }
+ } catch {
+ // noop
+ }
+
+ throw new Error('Git installation not found.');
}
export interface IExecutionResult {
@@ -251,6 +260,7 @@ export interface IGitErrorData {
exitCode?: number;
gitErrorCode?: string;
gitCommand?: string;
+ gitArgs?: string[];
}
export class GitError {
@@ -262,6 +272,7 @@ export class GitError {
exitCode?: number;
gitErrorCode?: string;
gitCommand?: string;
+ gitArgs?: string[];
constructor(data: IGitErrorData) {
if (data.error) {
@@ -278,6 +289,7 @@ export class GitError {
this.exitCode = data.exitCode;
this.gitErrorCode = data.gitErrorCode;
this.gitCommand = data.gitCommand;
+ this.gitArgs = data.gitArgs;
}
toString(): string {
@@ -341,6 +353,12 @@ function sanitizePath(path: string): string {
const COMMIT_FORMAT = '%H%n%aN%n%aE%n%at%n%ct%n%P%n%B';
+export interface ICloneOptions {
+ readonly parentPath: string;
+ readonly progress: Progress<{ increment: number }>;
+ readonly recursive?: boolean;
+}
+
export class Git {
readonly path: string;
@@ -363,18 +381,18 @@ export class Git {
return;
}
- async clone(url: string, parentPath: string, progress: Progress<{ increment: number }>, cancellationToken?: CancellationToken): Promise {
+ async clone(url: string, options: ICloneOptions, cancellationToken?: CancellationToken): Promise {
let baseFolderName = decodeURI(url).replace(/[\/]+$/, '').replace(/^.*[\/\\]/, '').replace(/\.git$/, '') || 'repository';
let folderName = baseFolderName;
- let folderPath = path.join(parentPath, folderName);
+ let folderPath = path.join(options.parentPath, folderName);
let count = 1;
while (count < 20 && await new Promise(c => exists(folderPath, c))) {
folderName = `${baseFolderName}-${count++}`;
- folderPath = path.join(parentPath, folderName);
+ folderPath = path.join(options.parentPath, folderName);
}
- await mkdirp(parentPath);
+ await mkdirp(options.parentPath);
const onSpawn = (child: cp.ChildProcess) => {
const decoder = new StringDecoder('utf8');
@@ -398,14 +416,18 @@ export class Git {
}
if (totalProgress !== previousProgress) {
- progress.report({ increment: totalProgress - previousProgress });
+ options.progress.report({ increment: totalProgress - previousProgress });
previousProgress = totalProgress;
}
});
};
try {
- await this.exec(parentPath, ['clone', url.includes(' ') ? encodeURI(url) : url, folderPath, '--progress'], { cancellationToken, onSpawn });
+ let command = ['clone', url.includes(' ') ? encodeURI(url) : url, folderPath, '--progress'];
+ if (options.recursive) {
+ command.push('--recursive');
+ }
+ await this.exec(options.parentPath, command, { cancellationToken, onSpawn });
} catch (err) {
if (err.stderr) {
err.stderr = err.stderr.replace(/^Cloning.+$/m, '').trim();
@@ -419,10 +441,10 @@ export class Git {
}
async getRepositoryRoot(repositoryPath: string): Promise {
- const result = await this.exec(repositoryPath, ['rev-parse', '--show-toplevel']);
+ const result = await this.exec(repositoryPath, ['rev-parse', '--show-toplevel'], { log: false });
// Keep trailing spaces which are part of the directory name
- const repoPath = path.normalize(result.stdout.trimLeft().replace(/(\r\n|\r|\n)+$/, ''));
+ const repoPath = path.normalize(result.stdout.trimLeft().replace(/[\r\n]+$/, ''));
if (isWindows) {
// On Git 2.25+ if you call `rev-parse --show-toplevel` on a mapped drive, instead of getting the mapped drive path back, you get the UNC path for the mapped drive.
@@ -435,10 +457,9 @@ export class Git {
const [, letter] = match;
try {
- const networkPath = await new Promise(resolve =>
+ const networkPath = await new Promise(resolve =>
realpath.native(`${letter}:`, { encoding: 'utf8' }, (err, resolvedPath) =>
- // eslint-disable-next-line eqeqeq
- resolve(err != null ? undefined : resolvedPath),
+ resolve(err !== null ? undefined : resolvedPath),
),
);
if (networkPath !== undefined) {
@@ -517,7 +538,8 @@ export class Git {
stderr: result.stderr,
exitCode: result.exitCode,
gitErrorCode: getGitErrorCode(result.stderr),
- gitCommand: args[0]
+ gitCommand: args[0],
+ gitArgs: args
}));
}
@@ -670,7 +692,7 @@ export function parseGitmodules(raw: string): Submodule[] {
return;
}
- const propertyMatch = /^\s*(\w+)\s+=\s+(.*)$/.exec(line);
+ const propertyMatch = /^\s*(\w+)\s*=\s*(.*)$/.exec(line);
if (!propertyMatch) {
return;
@@ -905,7 +927,7 @@ export class Repository {
}
async buffer(object: string): Promise {
- const child = this.stream(['show', object]);
+ const child = this.stream(['show', '--textconv', object]);
if (!child.stdout) {
return Promise.reject('Can\'t open file from git');
@@ -978,7 +1000,7 @@ export class Repository {
}
async detectObjectType(object: string): Promise<{ mimetype: string, encoding?: string }> {
- const child = await this.stream(['show', object]);
+ const child = await this.stream(['show', '--textconv', object]);
const buffer = await readBytes(child.stdout!, 4100);
try {
@@ -1146,7 +1168,7 @@ export class Repository {
break;
}
- const originalUri = URI.file(path.isAbsolute(resourcePath) ? resourcePath : path.join(this.repositoryRoot, resourcePath));
+ 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.
@@ -1174,7 +1196,7 @@ export class Repository {
break;
}
- const uri = URI.file(path.isAbsolute(newPath) ? newPath : path.join(this.repositoryRoot, newPath));
+ const uri = Uri.file(path.isAbsolute(newPath) ? newPath : path.join(this.repositoryRoot, newPath));
result.push({
uri,
renameUri: uri,
@@ -1224,7 +1246,7 @@ export class Repository {
}
if (paths && paths.length) {
- for (const chunk of splitInChunks(paths, MAX_CLI_LENGTH)) {
+ for (const chunk of splitInChunks(paths.map(sanitizePath), MAX_CLI_LENGTH)) {
await this.run([...args, '--', ...chunk]);
}
} else {
@@ -1277,13 +1299,17 @@ export class Repository {
await this.run(['update-index', add, '--cacheinfo', mode, hash, path]);
}
- async checkout(treeish: string, paths: string[], opts: { track?: boolean } = Object.create(null)): Promise {
+ async checkout(treeish: string, paths: string[], opts: { track?: boolean, detached?: boolean } = Object.create(null)): Promise {
const args = ['checkout', '-q'];
if (opts.track) {
args.push('--track');
}
+ if (opts.detached) {
+ args.push('--detach');
+ }
+
if (treeish) {
args.push(treeish);
}
@@ -1299,6 +1325,7 @@ export class Repository {
} catch (err) {
if (/Please,? commit your changes or stash them/.test(err.stderr || '')) {
err.gitErrorCode = GitErrorCodes.DirtyWorkTree;
+ err.gitTreeish = treeish;
}
throw err;
@@ -1323,10 +1350,15 @@ export class Repository {
if (opts.signCommit) {
args.push('-S');
}
+
if (opts.empty) {
args.push('--allow-empty');
}
+ if (opts.noVerify) {
+ args.push('--no-verify');
+ }
+
try {
await this.run(args, { input: message || '' });
} catch (commitErr) {
@@ -1391,6 +1423,11 @@ export class Repository {
await this.run(args);
}
+ async move(from: string, to: string): Promise {
+ const args = ['mv', from, to];
+ await this.run(args);
+ }
+
async setBranchUpstream(name: string, upstream: string): Promise {
const args = ['branch', '--set-upstream-to', upstream, name];
await this.run(args);
@@ -1441,7 +1478,7 @@ export class Repository {
const args = ['clean', '-f', '-q'];
for (const paths of groups) {
- for (const chunk of splitInChunks(paths, MAX_CLI_LENGTH)) {
+ for (const chunk of splitInChunks(paths.map(sanitizePath), MAX_CLI_LENGTH)) {
promises.push(limiter.queue(() => this.run([...args, '--', ...chunk])));
}
}
@@ -1481,7 +1518,7 @@ export class Repository {
try {
if (paths && paths.length > 0) {
- for (const chunk of splitInChunks(paths, MAX_CLI_LENGTH)) {
+ for (const chunk of splitInChunks(paths.map(sanitizePath), MAX_CLI_LENGTH)) {
await this.run([...args, '--', ...chunk]);
}
} else {
@@ -1596,7 +1633,25 @@ export class Repository {
}
}
- async push(remote?: string, name?: string, setUpstream: boolean = false, tags = false, forcePushMode?: ForcePushMode): Promise {
+ async rebase(branch: string, options: PullOptions = {}): Promise {
+ const args = ['rebase'];
+
+ args.push(branch);
+
+ try {
+ await this.run(args, options);
+ } catch (err) {
+ if (/^CONFLICT \([^)]+\): \b/m.test(err.stdout || '')) {
+ err.gitErrorCode = GitErrorCodes.Conflict;
+ } else if (/cannot rebase onto multiple branches/i.test(err.stderr || '')) {
+ err.gitErrorCode = GitErrorCodes.CantRebaseMultipleBranches;
+ }
+
+ throw err;
+ }
+ }
+
+ async push(remote?: string, name?: string, setUpstream: boolean = false, followTags = false, forcePushMode?: ForcePushMode, tags = false): Promise {
const args = ['push'];
if (forcePushMode === ForcePushMode.ForceWithLease) {
@@ -1609,10 +1664,14 @@ export class Repository {
args.push('-u');
}
- if (tags) {
+ if (followTags) {
args.push('--follow-tags');
}
+ if (tags) {
+ args.push('--tags');
+ }
+
if (remote) {
args.push(remote);
}
@@ -1630,6 +1689,8 @@ export class Repository {
err.gitErrorCode = GitErrorCodes.RemoteConnectionError;
} else if (/^fatal: The current branch .* has no upstream branch/.test(err.stderr || '')) {
err.gitErrorCode = GitErrorCodes.NoUpstreamBranch;
+ } else if (/Permission.*denied/.test(err.stderr || '')) {
+ err.gitErrorCode = GitErrorCodes.PermissionDenied;
}
throw err;
@@ -1720,11 +1781,17 @@ export class Repository {
}
}
- getStatus(limit = 5000): Promise<{ status: IFileStatus[]; didHitLimit: boolean; }> {
+ getStatus(opts?: { limit?: number, ignoreSubmodules?: boolean }): Promise<{ status: IFileStatus[]; didHitLimit: boolean; }> {
return new Promise<{ status: IFileStatus[]; didHitLimit: boolean; }>((c, e) => {
const parser = new GitStatusParser();
const env = { GIT_OPTIONAL_LOCKS: '0' };
- const child = this.stream(['status', '-z', '-u'], { env });
+ const args = ['status', '-z', '-u'];
+
+ if (opts?.ignoreSubmodules) {
+ args.push('--ignore-submodules');
+ }
+
+ const child = this.stream(args, { env });
const onExit = (exitCode: number) => {
if (exitCode !== 0) {
@@ -1734,13 +1801,15 @@ export class Repository {
stderr,
exitCode,
gitErrorCode: getGitErrorCode(stderr),
- gitCommand: 'status'
+ gitCommand: 'status',
+ gitArgs: args
}));
}
c({ status: parser.status, didHitLimit: false });
};
+ const limit = opts?.limit ?? 5000;
const onStdoutData = (raw: string) => {
parser.update(raw);
@@ -1793,13 +1862,23 @@ export class Repository {
.map(([ref]) => ({ name: ref, type: RefType.Head } as Branch));
}
- async getRefs(opts?: { sort?: 'alphabetically' | 'committerdate', contains?: string }): Promise[ {
- const args = ['for-each-ref', '--format', '%(refname) %(objectname)'];
+ async getRefs(opts?: { sort?: 'alphabetically' | 'committerdate', contains?: string, pattern?: string, count?: number }): Promise][ {
+ const args = ['for-each-ref'];
+
+ if (opts?.count) {
+ args.push(`--count=${opts.count}`);
+ }
if (opts && opts.sort && opts.sort !== 'alphabetically') {
args.push('--sort', `-${opts.sort}`);
}
+ args.push('--format', '%(refname) %(objectname) %(*objectname)');
+
+ if (opts?.pattern) {
+ args.push(opts.pattern);
+ }
+
if (opts?.contains) {
args.push('--contains', opts.contains);
}
@@ -1809,12 +1888,12 @@ export class Repository {
const fn = (line: string): Ref | null => {
let match: RegExpExecArray | null;
- if (match = /^refs\/heads\/([^ ]+) ([0-9a-f]{40})$/.exec(line)) {
+ if (match = /^refs\/heads\/([^ ]+) ([0-9a-f]{40}) ([0-9a-f]{40})?$/.exec(line)) {
return { name: match[1], commit: match[2], type: RefType.Head };
- } else if (match = /^refs\/remotes\/([^/]+)\/([^ ]+) ([0-9a-f]{40})$/.exec(line)) {
+ } else if (match = /^refs\/remotes\/([^/]+)\/([^ ]+) ([0-9a-f]{40}) ([0-9a-f]{40})?$/.exec(line)) {
return { name: `${match[1]}/${match[2]}`, commit: match[3], type: RefType.RemoteHead, remote: match[1] };
- } else if (match = /^refs\/tags\/([^ ]+) ([0-9a-f]{40})$/.exec(line)) {
- return { name: match[1], commit: match[2], type: RefType.Tag };
+ } else if (match = /^refs\/tags\/([^ ]+) ([0-9a-f]{40}) ([0-9a-f]{40})?$/.exec(line)) {
+ return { name: match[1], commit: match[3] ?? match[2], type: RefType.Tag };
}
return null;
@@ -1863,7 +1942,7 @@ export class Repository {
remote.pushUrl = url;
}
- // https://github.com/Microsoft/vscode/issues/45271
+ // https://github.com/microsoft/vscode/issues/45271
remote.isReadOnly = remote.pushUrl === undefined || remote.pushUrl === 'no_push';
}
@@ -1922,7 +2001,7 @@ export class Repository {
}
async getBranches(query: BranchQuery): Promise][ {
- const refs = await this.getRefs({ contains: query.contains });
+ const refs = await this.getRefs({ contains: query.contains, pattern: query.pattern ? `refs/${query.pattern}` : undefined, count: query.count });
return refs.filter(value => (value.type !== RefType.Tag) && (query.remote || !value.remote));
}
@@ -1931,6 +2010,17 @@ export class Repository {
return message.replace(/^\s*#.*$\n?/gm, '').trim();
}
+ async getSquashMessage(): Promise {
+ const squashMsgPath = path.join(this.repositoryRoot, '.git', 'SQUASH_MSG');
+
+ try {
+ const raw = await fs.readFile(squashMsgPath, 'utf8');
+ return this.stripCommitMessageComments(raw);
+ } catch {
+ return undefined;
+ }
+ }
+
async getMergeMessage(): Promise {
const mergeMsgPath = path.join(this.repositoryRoot, '.git', 'MERGE_MSG');
diff --git a/extensions/git/src/main.ts b/extensions/git/src/main.ts
index 5210aaa70f0..b9b525203db 100644
--- a/extensions/git/src/main.ts
+++ b/extensions/git/src/main.ts
@@ -33,7 +33,7 @@ export async function deactivate(): Promise {
}
async function createModel(context: ExtensionContext, outputChannel: OutputChannel, telemetryReporter: TelemetryReporter, disposables: Disposable[]): Promise {
- const pathHint = workspace.getConfiguration('git').get('path');
+ const pathHint = workspace.getConfiguration('git').get('path');
const info = await findGit(pathHint, path => outputChannel.appendLine(localize('looking', "Looking for git in: {0}", path)));
const askpass = await Askpass.create(outputChannel, context.storagePath);
@@ -74,7 +74,7 @@ async function createModel(context: ExtensionContext, outputChannel: OutputChann
new GitTimelineProvider(model)
);
- await checkGitVersion(info);
+ checkGitVersion(info);
return model;
}
@@ -127,7 +127,7 @@ async function warnAboutMissingGit(): Promise {
}
}
-export async function _activate(context: ExtensionContext): Promise {
+export async function _activate(context: ExtensionContext): Promise {
const disposables: Disposable[] = [];
context.subscriptions.push(new Disposable(() => Disposable.from(...disposables).dispose()));
@@ -169,13 +169,20 @@ export async function _activate(context: ExtensionContext): Promise {
+ _context = context;
+
const result = await _activate(context);
context.subscriptions.push(registerAPICommands(result));
return result;
}
-async function checkGitVersion(info: IGit): Promise {
+async function checkGitv1(info: IGit): Promise {
const config = workspace.getConfiguration('git');
const shouldIgnore = config.get('ignoreLegacyWarning') === true;
@@ -202,3 +209,38 @@ async function checkGitVersion(info: IGit): Promise {
await config.update('ignoreLegacyWarning', true, true);
}
}
+
+async function checkGitWindows(info: IGit): Promise {
+ if (!/^2\.(25|26)\./.test(info.version)) {
+ return;
+ }
+
+ const config = workspace.getConfiguration('git');
+ const shouldIgnore = config.get('ignoreWindowsGit27Warning') === true;
+
+ if (shouldIgnore) {
+ return;
+ }
+
+ const update = localize('updateGit', "Update Git");
+ const neverShowAgain = localize('neverShowAgain', "Don't Show Again");
+ const choice = await window.showWarningMessage(
+ localize('git2526', "There are known issues with the installed Git {0}. Please update to Git >= 2.27 for the git features to work correctly.", info.version),
+ update,
+ neverShowAgain
+ );
+
+ if (choice === update) {
+ commands.executeCommand('vscode.open', Uri.parse('https://git-scm.com/'));
+ } else if (choice === neverShowAgain) {
+ await config.update('ignoreWindowsGit27Warning', true, true);
+ }
+}
+
+async function checkGitVersion(info: IGit): Promise {
+ await checkGitv1(info);
+
+ if (process.platform === 'win32') {
+ await checkGitWindows(info);
+ }
+}
diff --git a/extensions/git/src/model.ts b/extensions/git/src/model.ts
index 5d33d16ae83..5b4b10c91f0 100644
--- a/extensions/git/src/model.ts
+++ b/extensions/git/src/model.ts
@@ -6,15 +6,16 @@
import { workspace, WorkspaceFoldersChangeEvent, Uri, window, Event, EventEmitter, QuickPickItem, Disposable, SourceControl, SourceControlResourceGroup, TextEditor, Memento, OutputChannel, commands } from 'vscode';
import { Repository, RepositoryState } from './repository';
import { memoize, sequentialize, debounce } from './decorators';
-import { dispose, anyEvent, filterEvent, isDescendant, firstIndex, pathEquals, toDisposable } from './util';
+import { dispose, anyEvent, filterEvent, isDescendant, pathEquals, toDisposable, eventToPromise } from './util';
import { Git } from './git';
import * as path from 'path';
import * as fs from 'fs';
import * as nls from 'vscode-nls';
import { fromGitUri } from './uri';
-import { APIState as State, RemoteSourceProvider, CredentialsProvider } from './api/git';
+import { APIState as State, RemoteSourceProvider, CredentialsProvider, PushErrorHandler } from './api/git';
import { Askpass } from './askpass';
import { IRemoteSourceProviderRegistry } from './remoteProvider';
+import { IPushErrorHandlerRegistry } from './pushError';
const localize = nls.loadMessageBundle();
@@ -46,7 +47,7 @@ interface OpenRepository extends Disposable {
repository: Repository;
}
-export class Model implements IRemoteSourceProviderRegistry {
+export class Model implements IRemoteSourceProviderRegistry, IPushErrorHandlerRegistry {
private _onDidOpenRepository = new EventEmitter();
readonly onDidOpenRepository: Event = this._onDidOpenRepository.event;
@@ -77,6 +78,15 @@ export class Model implements IRemoteSourceProviderRegistry {
commands.executeCommand('setContext', 'git.state', state);
}
+ @memoize
+ get isInitialized(): Promise {
+ if (this._state === 'initialized') {
+ return Promise.resolve();
+ }
+
+ return eventToPromise(filterEvent(this.onDidChangeState, s => s === 'initialized')) as Promise;
+ }
+
private remoteSourceProviders = new Set();
private _onDidAddRemoteSourceProvider = new EventEmitter();
@@ -85,6 +95,8 @@ export class Model implements IRemoteSourceProviderRegistry {
private _onDidRemoveRemoteSourceProvider = new EventEmitter();
readonly onDidRemoveRemoteSourceProvider = this._onDidRemoveRemoteSourceProvider.event;
+ private pushErrorHandlers = new Set();
+
private disposables: Disposable[] = [];
constructor(readonly git: Git, private readonly askpass: Askpass, private globalState: Memento, private outputChannel: OutputChannel) {
@@ -148,6 +160,13 @@ export class Model implements IRemoteSourceProviderRegistry {
}
private onPossibleGitRepositoryChange(uri: Uri): void {
+ const config = workspace.getConfiguration('git');
+ const autoRepositoryDetection = config.get('autoRepositoryDetection');
+
+ if (autoRepositoryDetection === false) {
+ return;
+ }
+
this.eventuallyScanPossibleGitRepository(uri.fsPath.replace(/\.git.*$/, ''));
}
@@ -241,7 +260,7 @@ export class Model implements IRemoteSourceProviderRegistry {
// This can happen whenever `path` has the wrong case sensitivity in
// case insensitive file systems
- // https://github.com/Microsoft/vscode/issues/33498
+ // https://github.com/microsoft/vscode/issues/33498
const repositoryRoot = Uri.file(rawRoot).fsPath;
if (this.getRepository(repositoryRoot)) {
@@ -253,7 +272,7 @@ export class Model implements IRemoteSourceProviderRegistry {
}
const dotGit = await this.git.getRepositoryDotGit(repositoryRoot);
- const repository = new Repository(this.git.open(repositoryRoot, dotGit), this, this.globalState, this.outputChannel);
+ const repository = new Repository(this.git.open(repositoryRoot, dotGit), this, this, this.globalState, this.outputChannel);
this.open(repository);
await repository.status();
@@ -353,7 +372,7 @@ export class Model implements IRemoteSourceProviderRegistry {
const picks = this.openRepositories.map((e, index) => new RepositoryPick(e.repository, index));
const active = window.activeTextEditor;
const repository = active && this.getRepository(active.document.fileName);
- const index = firstIndex(picks, pick => pick.repository === repository);
+ const index = picks.findIndex(pick => pick.repository === repository);
// Move repository pick containing the active text editor to appear first
if (index > -1) {
@@ -469,6 +488,15 @@ export class Model implements IRemoteSourceProviderRegistry {
return [...this.remoteSourceProviders.values()];
}
+ registerPushErrorHandler(handler: PushErrorHandler): Disposable {
+ this.pushErrorHandlers.add(handler);
+ return toDisposable(() => this.pushErrorHandlers.delete(handler));
+ }
+
+ getPushErrorHandlers(): PushErrorHandler[] {
+ return [...this.pushErrorHandlers];
+ }
+
dispose(): void {
const openRepositories = [...this.openRepositories];
openRepositories.forEach(r => r.dispose());
diff --git a/extensions/git/src/protocolHandler.ts b/extensions/git/src/protocolHandler.ts
index 33f71b6aa8e..2b1a204c603 100644
--- a/extensions/git/src/protocolHandler.ts
+++ b/extensions/git/src/protocolHandler.ts
@@ -34,4 +34,4 @@ export class GitProtocolHandler implements UriHandler {
dispose(): void {
this.disposables = dispose(this.disposables);
}
-}
\ No newline at end of file
+}
diff --git a/extensions/git/src/pushError.ts b/extensions/git/src/pushError.ts
new file mode 100644
index 00000000000..6222923ff68
--- /dev/null
+++ b/extensions/git/src/pushError.ts
@@ -0,0 +1,12 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import { Disposable } from 'vscode';
+import { PushErrorHandler } from './api/git';
+
+export interface IPushErrorHandlerRegistry {
+ registerPushErrorHandler(provider: PushErrorHandler): Disposable;
+ getPushErrorHandlers(): PushErrorHandler[];
+}
diff --git a/extensions/git/src/remoteSource.ts b/extensions/git/src/remoteSource.ts
new file mode 100644
index 00000000000..b736f606e67
--- /dev/null
+++ b/extensions/git/src/remoteSource.ts
@@ -0,0 +1,133 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+import { QuickPickItem, window, QuickPick } from 'vscode';
+import * as nls from 'vscode-nls';
+import { RemoteSourceProvider, RemoteSource } from './api/git';
+import { Model } from './model';
+import { throttle, debounce } from './decorators';
+
+const localize = nls.loadMessageBundle();
+
+async function getQuickPickResult(quickpick: QuickPick): Promise {
+ const result = await new Promise(c => {
+ quickpick.onDidAccept(() => c(quickpick.selectedItems[0]));
+ quickpick.onDidHide(() => c(undefined));
+ quickpick.show();
+ });
+
+ quickpick.hide();
+ return result;
+}
+
+class RemoteSourceProviderQuickPick {
+
+ private quickpick: QuickPick;
+
+ constructor(private provider: RemoteSourceProvider) {
+ this.quickpick = window.createQuickPick();
+ this.quickpick.ignoreFocusOut = true;
+
+ if (provider.supportsQuery) {
+ this.quickpick.placeholder = localize('type to search', "Repository name (type to search)");
+ this.quickpick.onDidChangeValue(this.onDidChangeValue, this);
+ } else {
+ this.quickpick.placeholder = localize('type to filter', "Repository name");
+ }
+ }
+
+ @debounce(300)
+ private onDidChangeValue(): void {
+ this.query();
+ }
+
+ @throttle
+ private async query(): Promise {
+ this.quickpick.busy = true;
+
+ try {
+ const remoteSources = await this.provider.getRemoteSources(this.quickpick.value) || [];
+
+ if (remoteSources.length === 0) {
+ this.quickpick.items = [{
+ label: localize('none found', "No remote repositories found."),
+ alwaysShow: true
+ }];
+ } else {
+ this.quickpick.items = remoteSources.map(remoteSource => ({
+ label: remoteSource.name,
+ description: remoteSource.description || (typeof remoteSource.url === 'string' ? remoteSource.url : remoteSource.url[0]),
+ remoteSource
+ }));
+ }
+ } catch (err) {
+ this.quickpick.items = [{ label: localize('error', "$(error) Error: {0}", err.message), alwaysShow: true }];
+ console.error(err);
+ } finally {
+ this.quickpick.busy = false;
+ }
+ }
+
+ async pick(): Promise {
+ this.query();
+ const result = await getQuickPickResult(this.quickpick);
+ return result?.remoteSource;
+ }
+}
+
+export interface PickRemoteSourceOptions {
+ readonly providerLabel?: (provider: RemoteSourceProvider) => string;
+ readonly urlLabel?: string;
+}
+
+export async function pickRemoteSource(model: Model, options: PickRemoteSourceOptions = {}): Promise {
+ const quickpick = window.createQuickPick<(QuickPickItem & { provider?: RemoteSourceProvider, url?: string })>();
+ quickpick.ignoreFocusOut = true;
+
+ const providers = model.getRemoteProviders()
+ .map(provider => ({ label: (provider.icon ? `$(${provider.icon}) ` : '') + (options.providerLabel ? options.providerLabel(provider) : provider.name), alwaysShow: true, provider }));
+
+ quickpick.placeholder = providers.length === 0
+ ? localize('provide url', "Provide repository URL")
+ : localize('provide url or pick', "Provide repository URL or pick a repository source.");
+
+ const updatePicks = (value?: string) => {
+ if (value) {
+ quickpick.items = [{
+ label: options.urlLabel ?? localize('url', "URL"),
+ description: value,
+ alwaysShow: true,
+ url: value
+ },
+ ...providers];
+ } else {
+ quickpick.items = providers;
+ }
+ };
+
+ quickpick.onDidChangeValue(updatePicks);
+ updatePicks();
+
+ const result = await getQuickPickResult(quickpick);
+
+ if (result) {
+ if (result.url) {
+ return result.url;
+ } else if (result.provider) {
+ const quickpick = new RemoteSourceProviderQuickPick(result.provider);
+ const remote = await quickpick.pick();
+
+ if (remote) {
+ if (typeof remote.url === 'string') {
+ return remote.url;
+ } else if (remote.url.length > 0) {
+ return await window.showQuickPick(remote.url, { ignoreFocusOut: true, placeHolder: localize('pick url', "Choose a URL to clone from.") });
+ }
+ }
+ }
+ }
+
+ return undefined;
+}
diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts
index 577eff4fd7c..fddf502a38f 100644
--- a/extensions/git/src/repository.ts
+++ b/extensions/git/src/repository.ts
@@ -5,7 +5,7 @@
import * as fs from 'fs';
import * as path from 'path';
-import { CancellationToken, Command, Disposable, Event, EventEmitter, Memento, OutputChannel, ProgressLocation, ProgressOptions, scm, SourceControl, SourceControlInputBox, SourceControlInputBoxValidation, SourceControlInputBoxValidationType, SourceControlResourceDecorations, SourceControlResourceGroup, SourceControlResourceState, ThemeColor, Uri, window, workspace, WorkspaceEdit, Decoration } from 'vscode';
+import { CancellationToken, Command, Disposable, Event, EventEmitter, Memento, OutputChannel, ProgressLocation, ProgressOptions, scm, SourceControl, SourceControlInputBox, SourceControlInputBoxValidation, SourceControlInputBoxValidationType, SourceControlResourceDecorations, SourceControlResourceGroup, SourceControlResourceState, ThemeColor, Uri, window, workspace, WorkspaceEdit, FileDecoration, commands } from 'vscode';
import * as nls from 'vscode-nls';
import { Branch, Change, GitErrorCodes, LogOptions, Ref, RefType, Remote, Status, CommitOptions, BranchQuery } from './api/git';
import { AutoFetcher } from './autofetch';
@@ -17,6 +17,8 @@ import { anyEvent, combinedDisposable, debounceEvent, dispose, EmptyDisposable,
import { IFileWatcher, watch } from './watch';
import { Log, LogLevel } from './log';
import { IRemoteSourceProviderRegistry } from './remoteProvider';
+import { IPushErrorHandlerRegistry } from './pushError';
+import { ApiRepository } from './api/api1';
const timeout = (millis: number) => new Promise(c => setTimeout(c, millis));
@@ -203,9 +205,11 @@ export class Resource implements SourceControlResourceState {
get color(): ThemeColor {
switch (this.type) {
case Status.INDEX_MODIFIED:
+ return new ThemeColor('gitDecoration.stageModifiedResourceForeground');
case Status.MODIFIED:
return new ThemeColor('gitDecoration.modifiedResourceForeground');
case Status.INDEX_DELETED:
+ return new ThemeColor('gitDecoration.stageDeletedResourceForeground');
case Status.DELETED:
return new ThemeColor('gitDecoration.deletedResourceForeground');
case Status.INDEX_ADDED:
@@ -251,14 +255,10 @@ export class Resource implements SourceControlResourceState {
}
}
- get resourceDecoration(): Decoration {
- return {
- bubble: this.type !== Status.DELETED && this.type !== Status.INDEX_DELETED,
- title: this.tooltip,
- letter: this.letter,
- color: this.color,
- priority: this.priority
- };
+ get resourceDecoration(): FileDecoration {
+ const res = new FileDecoration(this.letter, this.tooltip, this.color);
+ res.propagate = this.type !== Status.DELETED && this.type !== Status.INDEX_DELETED;
+ return res;
}
constructor(
@@ -300,6 +300,7 @@ export const enum Operation {
RenameBranch = 'RenameBranch',
DeleteRef = 'DeleteRef',
Merge = 'Merge',
+ Rebase = 'Rebase',
Ignore = 'Ignore',
Tag = 'Tag',
DeleteTag = 'DeleteTag',
@@ -314,6 +315,8 @@ export const enum Operation {
Blame = 'Blame',
Log = 'Log',
LogFile = 'LogFile',
+
+ Move = 'Move'
}
function isReadOnly(operation: Operation): boolean {
@@ -537,7 +540,7 @@ class DotGitWatcher implements IFileWatcher {
upstreamWatcher.event(this.emitter.fire, this.emitter, this.transientDisposables);
} catch (err) {
if (Log.logLevel <= LogLevel.Error) {
- this.outputChannel.appendLine(`Failed to watch ref '${upstreamPath}', is most likely packed.\n${err.stack || err}`);
+ this.outputChannel.appendLine(`Warning: Failed to watch ref '${upstreamPath}', is most likely packed.`);
}
}
}
@@ -642,6 +645,7 @@ export class Repository implements Disposable {
}
this._rebaseCommit = rebaseCommit;
+ commands.executeCommand('setContext', 'gitRebaseInProgress', !!this._rebaseCommit);
}
get rebaseCommit(): Commit | undefined {
@@ -683,6 +687,7 @@ export class Repository implements Disposable {
constructor(
private readonly repository: BaseRepository,
remoteSourceProviderRegistry: IRemoteSourceProviderRegistry,
+ private pushErrorHandlerRegistry: IPushErrorHandlerRegistry,
globalState: Memento,
outputChannel: OutputChannel
) {
@@ -729,10 +734,10 @@ export class Repository implements Disposable {
this.updateInputBoxPlaceholder();
this.disposables.push(this.onDidRunGitStatus(() => this.updateInputBoxPlaceholder()));
- 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._untrackedGroup = this._sourceControl.createResourceGroup('untracked', localize('untracked changes', "UNTRACKED 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"));
+ this._untrackedGroup = this._sourceControl.createResourceGroup('untracked', localize('untracked changes', "Untracked Changes"));
const updateIndexGroupVisibility = () => {
const config = workspace.getConfiguration('git', root);
@@ -743,11 +748,11 @@ export class Repository implements Disposable {
onConfigListener(updateIndexGroupVisibility, this, this.disposables);
updateIndexGroupVisibility();
- const onConfigListenerForBranchSortOrder = filterEvent(workspace.onDidChangeConfiguration, e => e.affectsConfiguration('git.branchSortOrder', root));
- onConfigListenerForBranchSortOrder(this.updateModelState, this, this.disposables);
-
- const onConfigListenerForUntracked = filterEvent(workspace.onDidChangeConfiguration, e => e.affectsConfiguration('git.untrackedChanges', root));
- onConfigListenerForUntracked(this.updateModelState, this, this.disposables);
+ filterEvent(workspace.onDidChangeConfiguration, e =>
+ e.affectsConfiguration('git.branchSortOrder', root)
+ || e.affectsConfiguration('git.untrackedChanges', root)
+ || e.affectsConfiguration('git.ignoreSubmodules', root)
+ )(this.updateModelState, this, this.disposables);
const updateInputBoxVisibility = () => {
const config = workspace.getConfiguration('git', root);
@@ -768,7 +773,7 @@ export class Repository implements Disposable {
this.disposables.push(new AutoFetcher(this, globalState));
- // https://github.com/Microsoft/vscode/issues/39039
+ // https://github.com/microsoft/vscode/issues/39039
const onSuccessfulPush = filterEvent(this.onDidRunOperation, e => e.operation === Operation.Push && !e.error);
onSuccessfulPush(() => {
const gitConfig = workspace.getConfiguration('git');
@@ -861,14 +866,20 @@ export class Repository implements Disposable {
return;
}
+ const path = uri.path;
+
+ if (this.mergeGroup.resourceStates.some(r => r.resourceUri.path === path)) {
+ return undefined;
+ }
+
return toGitUri(uri, '', { replaceFileExtension: true });
}
async getInputTemplate(): Promise {
- const mergeMessage = await this.repository.getMergeMessage();
+ const commitMessage = (await Promise.all([this.repository.getMergeMessage(), this.repository.getSquashMessage()])).find(msg => !!msg);
- if (mergeMessage) {
- return mergeMessage;
+ if (commitMessage) {
+ return commitMessage;
}
return await this.repository.getCommitTemplate();
@@ -1050,6 +1061,10 @@ export class Repository implements Disposable {
await this.run(Operation.RenameBranch, () => this.repository.renameBranch(name));
}
+ async move(from: string, to: string): Promise {
+ await this.run(Operation.Move, () => this.repository.move(from, to));
+ }
+
async getBranch(name: string): Promise {
return await this.run(Operation.GetBranch, () => this.repository.getBranch(name));
}
@@ -1066,6 +1081,10 @@ export class Repository implements Disposable {
await this.run(Operation.Merge, () => this.repository.merge(ref));
}
+ async rebase(branch: string): Promise {
+ await this.run(Operation.Rebase, () => this.repository.rebase(branch));
+ }
+
async tag(name: string, message?: string): Promise {
await this.run(Operation.Tag, () => this.repository.tag(name, message));
}
@@ -1074,8 +1093,8 @@ export class Repository implements Disposable {
await this.run(Operation.DeleteTag, () => this.repository.deleteTag(name));
}
- async checkout(treeish: string): Promise]