Compare commits
88
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bdbac5714b | ||
|
|
4d01799159 | ||
|
|
d41ba04e26 | ||
|
|
592661994a | ||
|
|
98055e0aa8 | ||
|
|
7a7c1f421b | ||
|
|
82c66b05d3 | ||
|
|
08baa1d0d2 | ||
|
|
9d19aa858f | ||
|
|
0ec5075a0f | ||
|
|
578d879123 | ||
|
|
38848fa7bb | ||
|
|
31c2411fff | ||
|
|
58fe69ef79 | ||
|
|
a678db0da3 | ||
|
|
61aeb27b5c | ||
|
|
2ab211ff5a | ||
|
|
9e1fee5b77 | ||
|
|
7777353275 | ||
|
|
e11604fb12 | ||
|
|
7ea89afb30 | ||
|
|
62f57a7b38 | ||
|
|
9152b019f8 | ||
|
|
b02a2f85a4 | ||
|
|
130bb59612 | ||
|
|
f2480fd882 | ||
|
|
646df4df6e | ||
|
|
36e17520ea | ||
|
|
c238b1de0b | ||
|
|
5fd0548c00 | ||
|
|
c12be38b72 | ||
|
|
74ca0fe21a | ||
|
|
2d23836183 | ||
|
|
cd22e17227 | ||
|
|
2d5e77cb3d | ||
|
|
0040d0c786 | ||
|
|
35408d570f | ||
|
|
dc28a69f41 | ||
|
|
4927fafbe4 | ||
|
|
b17d9bd94d | ||
|
|
7c6aa892b4 | ||
|
|
03e0332738 | ||
|
|
dde8653da5 | ||
|
|
72d590a1b7 | ||
|
|
154f56e4c7 | ||
|
|
0c7a60dcae | ||
|
|
95717b4eb4 | ||
|
|
2587d00a47 | ||
|
|
77c1a14635 | ||
|
|
07a4927c41 | ||
|
|
5f0a3f4ce0 | ||
|
|
56a2bbe6c5 | ||
|
|
5351c00667 | ||
|
|
397f4e5ade | ||
|
|
0f754f7437 | ||
|
|
dc614ca3a7 | ||
|
|
4774d95296 | ||
|
|
9e662ff980 | ||
|
|
eb013a19c1 | ||
|
|
0a4fff20e8 | ||
|
|
f9c3768009 | ||
|
|
0108beae75 | ||
|
|
0e4228b3b7 | ||
|
|
7df19266de | ||
|
|
db3a96f9f7 | ||
|
|
7187b34384 | ||
|
|
eb76b09387 | ||
|
|
42c703ed74 | ||
|
|
e799b285f4 | ||
|
|
61eed95a5a | ||
|
|
4549dff7c4 | ||
|
|
4b2a1e1b63 | ||
|
|
57cf069d65 | ||
|
|
7e02d995ea | ||
|
|
6f40e5bc24 | ||
|
|
24d299fcff | ||
|
|
bbf1ad3caf | ||
|
|
d686c15de1 | ||
|
|
44a962969d | ||
|
|
894e101363 | ||
|
|
4aa35c9681 | ||
|
|
300d65a9d5 | ||
|
|
3203386c6e | ||
|
|
dd1902a8dc | ||
|
|
03ee07113a | ||
|
|
8e68bbba5d | ||
|
|
fe18c4af95 | ||
|
|
53dd88fd19 |
@@ -1,3 +1,7 @@
|
||||
registry=https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/
|
||||
# Disable postinstall scripts for supply chain security. Allowlist exceptions with npm trust: https://docs.npmjs.com/cli/v11/commands/npm-trust
|
||||
ignore-scripts=true
|
||||
|
||||
min-release-age=7
|
||||
audit=true
|
||||
audit-level=high
|
||||
|
||||
Generated
+47
-23
@@ -2764,16 +2764,29 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.16.0",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/axios/-/axios-1.16.0.tgz",
|
||||
"integrity": "sha1-+OXdkxzvKl+MMiFtV4Ttovh1Drc=",
|
||||
"version": "1.18.1",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/axios/-/axios-1.18.1.tgz",
|
||||
"integrity": "sha1-1j+YY7zYk4gVyG+eKr04AYnZbf4=",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.16.0",
|
||||
"form-data": "^4.0.5",
|
||||
"https-proxy-agent": "^5.0.1",
|
||||
"proxy-from-env": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/axios/node_modules/agent-base": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/agent-base/-/agent-base-6.0.2.tgz",
|
||||
"integrity": "sha1-Sf/1hXfP7j83F2/qtMIuAPhtf3c=",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"debug": "4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/axios/node_modules/form-data": {
|
||||
"version": "4.0.6",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/form-data/-/form-data-4.0.6.tgz",
|
||||
@@ -2790,6 +2803,19 @@
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/axios/node_modules/https-proxy-agent": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
|
||||
"integrity": "sha1-xZ7yJKBP6LdU89sAY6Jeow0ABdY=",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"agent-base": "6",
|
||||
"debug": "4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
@@ -2846,9 +2872,9 @@
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "1.1.13",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.13.tgz",
|
||||
"integrity": "sha1-03h1wB3J7/mI3UnREqV8tntU7+Y=",
|
||||
"version": "1.1.18",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.18.tgz",
|
||||
"integrity": "sha1-POdNiYhRNr4VNTQfjD1EJcKaXKs=",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -3117,7 +3143,6 @@
|
||||
"version": "4.4.3",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/debug/-/debug-4.4.3.tgz",
|
||||
"integrity": "sha1-xq5DLZvZZiWC/OCHCbA4xY6ePWo=",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ms": "^2.1.3"
|
||||
@@ -3898,9 +3923,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/glob/node_modules/brace-expansion": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.0.3.tgz",
|
||||
"integrity": "sha1-BJMzi91Y4xmxA5xnz37kOYksAdk=",
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.1.4.tgz",
|
||||
"integrity": "sha1-WJ2rEcABjQNmvmTNi/Esjb7MgyY=",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -4156,9 +4181,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/ip-address": {
|
||||
"version": "10.2.0",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ip-address/-/ip-address-10.2.0.tgz",
|
||||
"integrity": "sha1-gF/BeLIMUYvUyFSLJP4wiS1/MgY=",
|
||||
"version": "10.3.1",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ip-address/-/ip-address-10.3.1.tgz",
|
||||
"integrity": "sha1-kp+WKdFyT34bdIXOiXUvNnUzahA=",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -4277,9 +4302,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/js-yaml/-/js-yaml-4.2.0.tgz",
|
||||
"integrity": "sha1-K9noVoLdkb1GmvuAnYFgQ7PUlSQ=",
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/js-yaml/-/js-yaml-4.3.1.tgz",
|
||||
"integrity": "sha1-ASFsAB1n9I4s1WDXCMevIQkKOEg=",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
@@ -4526,9 +4551,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/mocha/node_modules/brace-expansion": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.0.3.tgz",
|
||||
"integrity": "sha1-BJMzi91Y4xmxA5xnz37kOYksAdk=",
|
||||
"version": "2.1.4",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.1.4.tgz",
|
||||
"integrity": "sha1-WJ2rEcABjQNmvmTNi/Esjb7MgyY=",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -4629,7 +4654,6 @@
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/natural-compare": {
|
||||
@@ -5439,9 +5463,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "6.27.0",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/undici/-/undici-6.27.0.tgz",
|
||||
"integrity": "sha1-Qfnkj3xaQNJzdsqurYyan8e8qcQ=",
|
||||
"version": "6.28.0",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/undici/-/undici-6.28.0.tgz",
|
||||
"integrity": "sha1-nw44V0T+9QIdZZbFvM14P2EZPBw=",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18.17"
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
groups:
|
||||
github-actions:
|
||||
patterns: ["*"]
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
cooldown:
|
||||
default-days: 7
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Add Comment
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -23,3 +23,4 @@ jobs:
|
||||
platform: mac
|
||||
checkout-ref: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.target-ref || github.ref }}
|
||||
yarn-args: --network-timeout 100000
|
||||
|
||||
|
||||
@@ -59,11 +59,11 @@ jobs:
|
||||
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
uses: github/codeql-action/init@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
build-mode: ${{ matrix.build-mode }}
|
||||
@@ -91,7 +91,7 @@ jobs:
|
||||
exit 1
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
uses: github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Run Reopener
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Add Comment
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Run Reopener
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -25,19 +25,29 @@ jobs:
|
||||
runs-on: ${{ inputs.runner-env }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
ref: ${{ inputs.checkout-ref }}
|
||||
|
||||
- name: Use Node.js 24
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version: 24
|
||||
|
||||
- name: Validate Yarn lockfile
|
||||
run: yarn test-yarn-lock && yarn verify-yarn-lock
|
||||
working-directory: Extension
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn install ${{ inputs.yarn-args }}
|
||||
working-directory: Extension
|
||||
|
||||
- name: Install gdb (linux)
|
||||
if: ${{ inputs.platform == 'linux' }}
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y gdb
|
||||
|
||||
- name: Compile Sources
|
||||
run: yarn run compile
|
||||
working-directory: Extension
|
||||
@@ -50,53 +60,46 @@ jobs:
|
||||
run: yarn test
|
||||
working-directory: Extension
|
||||
|
||||
# These tests don't require the binary.
|
||||
# On Linux, it is failing (before the tests actually run) with: Test run terminated with signal SIGSEGV.
|
||||
# But it works on Linux during the E2E test.
|
||||
- name: Run SingleRootProject tests
|
||||
if: ${{ inputs.platform != 'linux' }}
|
||||
run: yarn test --scenario=SingleRootProject --skipCheckBinaries
|
||||
- name: Acquire Native Binaries
|
||||
run: yarn install-and-copy-binaries-for-test
|
||||
working-directory: Extension
|
||||
|
||||
# NOTE : We can't run the test that require the native binary files
|
||||
# yet -- there will be an update soon that allows the tester to
|
||||
# acquire them on-the-fly
|
||||
# - name: Run languageServer integration tests
|
||||
# if: ${{ inputs.platform == 'windows' }}
|
||||
# run: yarn test --scenario=SingleRootProject
|
||||
# working-directory: Extension
|
||||
- name: Run languageServer integration tests (Windows)
|
||||
if: ${{ inputs.platform == 'windows' }}
|
||||
run: yarn test --scenario=SingleRootProject
|
||||
working-directory: Extension
|
||||
|
||||
# - name: Run E2E IntelliSense features tests
|
||||
# if: ${{ inputs.platform == 'windows' }}
|
||||
# run: yarn test --scenario=MultirootDeadlockTest
|
||||
# working-directory: Extension
|
||||
- name: Run E2E IntelliSense features tests (Windows)
|
||||
if: ${{ inputs.platform == 'windows' }}
|
||||
run: yarn test --scenario=MultirootDeadlockTest
|
||||
working-directory: Extension
|
||||
|
||||
# - name: Run E2E IntelliSense features tests
|
||||
# if: ${{ inputs.platform == 'windows' }}
|
||||
# run: yarn test --scenario=RunWithoutDebugging
|
||||
# working-directory: Extension
|
||||
- name: Run RunWithoutDebugging tests (Windows)
|
||||
if: ${{ inputs.platform == 'windows' }}
|
||||
run: yarn test --scenario=RunWithoutDebugging
|
||||
working-directory: Extension
|
||||
|
||||
# NOTE: For mac/linux run the tests with xvfb-action for UI support.
|
||||
# Another way to start xvfb https://github.com/microsoft/vscode-test/blob/master/sample/azure-pipelines.yml
|
||||
|
||||
# - name: Run languageServer integration tests (xvfb)
|
||||
# if: ${{ inputs.platform == 'mac' || inputs.platform == 'linux' }}
|
||||
# uses: coactions/setup-xvfb@v1
|
||||
# with:
|
||||
# run: yarn test --scenario=SingleRootProject
|
||||
# working-directory: Extension
|
||||
- name: Run languageServer integration tests (linux/macOS)
|
||||
if: ${{ inputs.platform == 'mac' || inputs.platform == 'linux' }}
|
||||
uses: coactions/setup-xvfb@b6b4fcfb9f5a895edadc3bc76318fae0ac17c8b3 # v1.0.1
|
||||
with:
|
||||
run: yarn test --scenario=SingleRootProject
|
||||
working-directory: Extension
|
||||
|
||||
# - name: Run E2E IntelliSense features tests (xvfb)
|
||||
# if: ${{ inputs.platform == 'mac' || inputs.platform == 'linux' }}
|
||||
# uses: coactions/setup-xvfb@v1
|
||||
# with:
|
||||
# run: yarn test --scenario=MultirootDeadlockTest
|
||||
# working-directory: Extension
|
||||
- name: Run E2E IntelliSense features tests (linux/macOS)
|
||||
if: ${{ inputs.platform == 'mac' || inputs.platform == 'linux' }}
|
||||
uses: coactions/setup-xvfb@b6b4fcfb9f5a895edadc3bc76318fae0ac17c8b3 # v1.0.1
|
||||
with:
|
||||
run: yarn test --scenario=MultirootDeadlockTest
|
||||
working-directory: Extension
|
||||
|
||||
# - name: Run E2E IntelliSense features tests (xvfb)
|
||||
# if: ${{ inputs.platform == 'mac' || inputs.platform == 'linux' }}
|
||||
# uses: coactions/setup-xvfb@v1
|
||||
# with:
|
||||
# run: yarn test --scenario=RunWithoutDebugging
|
||||
# working-directory: Extension
|
||||
- name: Run RunWithoutDebugging tests (linux/macOS)
|
||||
if: ${{ inputs.platform == 'mac' || inputs.platform == 'linux' }}
|
||||
uses: coactions/setup-xvfb@b6b4fcfb9f5a895edadc3bc76318fae0ac17c8b3 # v1.0.1
|
||||
with:
|
||||
run: yarn test --scenario=RunWithoutDebugging --scenario-arg=skipExternalConsole
|
||||
working-directory: Extension
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Run Locker
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
|
||||
@@ -13,3 +13,5 @@ OneLocBuild
|
||||
|
||||
# ignore imported localization xlf directory
|
||||
vscode-translations-import
|
||||
|
||||
.vscode/settings.json
|
||||
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
- script: mkdir $(Build.ArtifactStagingDirectory)\vsix
|
||||
displayName: Create Staging Directory
|
||||
|
||||
- script: npm install --no-save --ignore-scripts=false --include=optional --force @vscode/[email protected].1
|
||||
- script: npm install --no-save --ignore-scripts=false --include=optional --force @vscode/[email protected].2
|
||||
displayName: Install vsce
|
||||
workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
$aadToken = az account get-access-token --query accessToken --resource $(AzureGuid) -o tsv
|
||||
Write-Host "##vso[task.setvariable variable=AAD_TOKEN;issecret=true]$aadToken"
|
||||
|
||||
- script: npm install --no-save --ignore-scripts=false --include=optional --force @vscode/[email protected].1
|
||||
- script: npm install --no-save --ignore-scripts=false --include=optional --force @vscode/[email protected].2
|
||||
displayName: Install vsce
|
||||
|
||||
- script: npm rebuild @vscode/vsce-sign --ignore-scripts=false
|
||||
|
||||
+10
-13
@@ -21,21 +21,18 @@
|
||||
|
||||
## String Localization
|
||||
|
||||
* VS Code's built-in [l10n](https://code.visualstudio.com/api/references/vscode-api#l10n) support is used to localize strings in TypeScript code. The English string itself is the key, so no separate setup or import is required beyond `vscode`:
|
||||
* [vscode-nls](https://github.com/microsoft/vscode-nls) is used to localize strings in TypeScript code. To use [vscode-nls](https://github.com/microsoft/vscode-nls), the source file must contain:
|
||||
```typescript
|
||||
import * as vscode from 'vscode';
|
||||
```
|
||||
* For each user-facing string, wrap the string in a call to `vscode.l10n.t`:
|
||||
```typescript
|
||||
const readmeMessage: string = vscode.l10n.t("Please refer to {0} for troubleshooting information. Issues can be created at {1}", readmePath, "https://github.com/Microsoft/vscode-cpptools/issues");
|
||||
```
|
||||
* The first parameter is the string to localize, and it must be a string literal. Tokens such as {0} and {1} are supported in the localizable string, with replacement values passed as additional parameters (these may be strings, numbers, or booleans).
|
||||
* When a translator needs a hint about how to translate a string, use the object form, which takes a required `comment` and an optional `args` array:
|
||||
```typescript
|
||||
const message: string = vscode.l10n.t({ message: "Add '{0}'", args: [code], comment: ["{0} is C++ code to add, such as '#include <string>'"] });
|
||||
```
|
||||
* At build time, [@vscode/l10n-dev](https://github.com/microsoft/vscode-l10n) scans the source for these calls and produces `./l10n/bundle.l10n.json` (and per-language `./l10n/bundle.l10n.<language>.json` files). The `"l10n": "./l10n"` field in [**package.json**](Extension/package.json) tells VS Code where to load them. VS Code loads the bundle for the active display language, so the strings are not read synchronously at extension startup.
|
||||
import * as nls from 'vscode-nls';
|
||||
|
||||
nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })();
|
||||
const localize: nls.LocalizeFunc = nls.loadMessageBundle();
|
||||
```
|
||||
* For each user-facing string, wrap the string in a call to localize:
|
||||
```typescript
|
||||
const readmeMessage: string = localize("refer.read.me", "Please refer to {0} for troubleshooting information. Issues can be created at {1}", readmePath, "https://github.com/Microsoft/vscode-cpptools/issues");
|
||||
```
|
||||
* The first parameter to localize should be a unique key for that string, not used by any other call to localize() in the file unless representing the same string. The second parameter is the string to localize. Both of these parameters must be string literals. Tokens such as {0} and {1} are supported in the localizable string, with replacement values passed as additional parameters to localize().
|
||||
|
||||
## Contributor License Agreement
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ These steps will allow you to debug the TypeScript code that is part of the Micr
|
||||
Prerequisite steps:
|
||||
* Clone the release branch of [this](https://github.com/Microsoft/vscode-cpptools) repository.
|
||||
* git clone -b release https://github.com/Microsoft/vscode-cpptools
|
||||
* Install [node](https://nodejs.org).
|
||||
* Install the [required Node.js version](../Extension/readme.developer.md#required-tools).
|
||||
* Install [yarn](https://yarnpkg.com).
|
||||
* From a command line, run the following commands from the **Extension** folder in the root of the repository:
|
||||
* `yarn install` will install the dependencies needed to build the extension.
|
||||
|
||||
+10
-4
@@ -9,11 +9,18 @@ dist
|
||||
server
|
||||
debugAdapters
|
||||
LLVM
|
||||
bin/assert_dialog.sh
|
||||
bin/binaryVersion.json
|
||||
bin/cpptools*
|
||||
bin/edge_cli
|
||||
bin/isense_driver
|
||||
bin/libc.so
|
||||
bin/LICENSE.txt
|
||||
bin/scout_driver
|
||||
bin/unittests
|
||||
bin/vcpkgsrvtest
|
||||
bin/*.dll
|
||||
bin/.vs
|
||||
bin/LICENSE.txt
|
||||
|
||||
# ignore lock files
|
||||
install.lock
|
||||
@@ -24,10 +31,9 @@ install.lock
|
||||
# ignore vscode test
|
||||
.vscode-test/
|
||||
|
||||
# ignore generated localization files
|
||||
# ignore generated localization file
|
||||
**/nls.*.json
|
||||
**/*.nls.*.json
|
||||
l10n/bundle.l10n.json
|
||||
l10n/bundle.l10n.*.json
|
||||
|
||||
# ignore generate native header
|
||||
localized_string_ids.h
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
registry=https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/
|
||||
# Disable postinstall scripts for supply chain security. Allowlist exceptions with npm trust: https://docs.npmjs.com/cli/v11/commands/npm-trust
|
||||
ignore-scripts=true
|
||||
|
||||
min-release-age=7
|
||||
audit=true
|
||||
audit-level=high
|
||||
|
||||
@@ -20,9 +20,18 @@ import { verbose } from '../src/Utility/Text/streams';
|
||||
export const $root = resolve(`${__dirname}/..`);
|
||||
export let $cmd = 'main';
|
||||
export let $scenario = '';
|
||||
export const $scenarioArgs: string[] = [];
|
||||
|
||||
// loop through the args and pick out --scenario=... and remove it from the $args and set $scenario
|
||||
process.argv.slice(2).filter(each => !(each.startsWith('--scenario=') && ($scenario = each.substring('--scenario='.length))));
|
||||
// parse out the scenario arguments.
|
||||
process.argv.slice(2).reduce<string[]>((acc, arg) => {
|
||||
if (arg.startsWith('--scenario-arg=')) {
|
||||
acc.push(arg.substring('--scenario-arg='.length));
|
||||
}
|
||||
return acc;
|
||||
}, $scenarioArgs);
|
||||
|
||||
export const $args = process.argv.slice(2).filter(each => !each.startsWith('--'));
|
||||
export const $switches = process.argv.slice(2).filter(each => each.startsWith('--'));
|
||||
|
||||
@@ -305,7 +314,7 @@ export async function checkPrep() {
|
||||
failing = !await assertAnyFolder('dist/walkthrough') && (quiet || warn(`The walkthrough files are not in place.`)) || failing;
|
||||
failing = !await assertAnyFolder('dist/html') && (quiet || warn(`The html files are not in place.`)) || failing;
|
||||
failing = !await assertAnyFolder('dist/schema') && (quiet || warn(`The schema files are not in place.`)) || failing;
|
||||
failing = !await assertAnyFile('l10n/bundle.l10n.json') && (quiet || warn(`The extension localization bundle '${$root}/l10n/bundle.l10n.json' is missing.`)) || failing;
|
||||
failing = !await assertAnyFile('dist/nls.metadata.json') && (quiet || warn(`The extension translation file '${$root}/dist/nls.metadata.json is missing.`)) || failing;
|
||||
failing = await checkDTS() || failing;
|
||||
|
||||
if (!failing) {
|
||||
@@ -317,7 +326,7 @@ export async function checkPrep() {
|
||||
export async function checkCompiled() {
|
||||
let failing = false;
|
||||
failing = await checkDTS() || failing;
|
||||
failing = !await assertAnyFile('dist/src/main.js') && (quiet || warn(`The extension entry point '${$root}/dist/src/main.js' is missing.`)) || failing;
|
||||
failing = !await assertAnyFile('dist/src/main.js') && (quiet || warn(`The extension entry point '${$root}/dist/src/main.js is missing.`)) || failing;
|
||||
|
||||
if (!failing) {
|
||||
verbose('Compiled files appear to be in place.');
|
||||
@@ -327,8 +336,8 @@ export async function checkCompiled() {
|
||||
|
||||
export async function checkDTS() {
|
||||
let failing = false;
|
||||
failing = !await assertAnyFile('vscode.d.ts') && (quiet || warn(`The VSCode import file '${$root}/dist/src/vscode.d.ts' is missing.`)) || failing;
|
||||
failing = !await assertAnyFile('vscode.proposed.terminalDataWriteEvent.d.ts') && (quiet || warn(`The VSCode import file '${$root}/dist/src/vscode.proposed.terminalDataWriteEvent.d.ts' is missing.`)) || failing;
|
||||
failing = !await assertAnyFile('vscode.d.ts') && (quiet || warn(`The VSCode import file '${$root}/dist/src/vscode.d.ts is missing.`)) || failing;
|
||||
failing = !await assertAnyFile('vscode.proposed.terminalDataWriteEvent.d.ts') && (quiet || warn(`The VSCode import file '${$root}/dist/src/vscode.proposed.terminalDataWriteEvent.d.ts is missing.`)) || failing;
|
||||
|
||||
if (!failing) {
|
||||
verbose('VSCode d.ts files appear to be in place.');
|
||||
|
||||
@@ -5,8 +5,9 @@
|
||||
|
||||
import { cp, readdir, rm, stat } from 'node:fs/promises';
|
||||
import { homedir } from 'node:os';
|
||||
import { join } from 'node:path';
|
||||
import { $args, $root, green, heading, note } from './common';
|
||||
import { basename, join } from 'node:path';
|
||||
import { verbose } from '../src/Utility/Text/streams';
|
||||
import { $args, $root, Git, green, heading, note, warn } from './common';
|
||||
|
||||
const extensionPrefix = 'ms-vscode.cpptools-';
|
||||
const foldersToCopy = ['bin', 'debugAdapters', 'LLVM'] as const;
|
||||
@@ -73,17 +74,47 @@ async function getInstalledExtensions(root: string): Promise<InstalledExtension[
|
||||
}
|
||||
}
|
||||
|
||||
async function findLatestInstalledExtension(providedPath?: string): Promise<string> {
|
||||
if (providedPath) {
|
||||
return providedPath;
|
||||
async function findExtensionsFolder(root: string): Promise<string | undefined> {
|
||||
try {
|
||||
const entries = await readdir(root, { withFileTypes: true });
|
||||
for (const entry of entries) {
|
||||
if (entry.isDirectory()) {
|
||||
if (entry.name === 'extensions') {
|
||||
const extensionEntries = await readdir(join(root, entry.name), { withFileTypes: true });
|
||||
for (const extensionEntry of extensionEntries) {
|
||||
if (extensionEntry.isDirectory() && extensionEntry.name.startsWith(extensionPrefix)) {
|
||||
return join(root, entry.name);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const result = await findExtensionsFolder(join(root, entry.name));
|
||||
if (result) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
// Ignore errors (permission denied, etc.)
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
async function findLatestInstalledExtension(providedPath?: string): Promise<string> {
|
||||
const searchRoots: string[] = [
|
||||
join(homedir(), '.vscode', 'extensions'),
|
||||
join(homedir(), '.vscode-insiders', 'extensions'),
|
||||
join(homedir(), '.vscode-server', 'extensions'),
|
||||
join(homedir(), '.vscode-server-insiders', 'extensions')
|
||||
];
|
||||
if (providedPath) {
|
||||
// find a folder called 'extensions' recursively under the provided path and add it to the front of the search roots
|
||||
const extensionsFolderPath = await findExtensionsFolder(providedPath);
|
||||
if (extensionsFolderPath) {
|
||||
verbose(`Found extensions folder under provided path: ${extensionsFolderPath}`);
|
||||
searchRoots.unshift(extensionsFolderPath);
|
||||
}
|
||||
}
|
||||
|
||||
const installed: InstalledExtension[] = (await Promise.all(searchRoots.map(each => getInstalledExtensions(each)))).flat();
|
||||
if (!installed.length) {
|
||||
@@ -94,7 +125,34 @@ async function findLatestInstalledExtension(providedPath?: string): Promise<stri
|
||||
return installed[0].path;
|
||||
}
|
||||
|
||||
export async function main(sourcePath = $args[0]) {
|
||||
/**
|
||||
* A few files inside the copied folders are checked into the repo (for example bin/cpp.hint and
|
||||
* bin/messages/**). The copy overwrites them with the installed extension's versions, which can differ
|
||||
* in line endings or content and then show up as spurious local modifications. Restore any tracked files
|
||||
* that the copy changed so only the untracked binaries remain in the working tree.
|
||||
*/
|
||||
async function restoreTrackedFiles(): Promise<void> {
|
||||
const modified = await Git('ls-files', '--modified', '--', ...foldersToCopy);
|
||||
if (modified.code) {
|
||||
warn(`Unable to determine which tracked files to restore: ${modified.error.all().join('\n')}`);
|
||||
return;
|
||||
}
|
||||
|
||||
const files = modified.stdio.all().map(line => line.trim()).filter(line => line.length > 0);
|
||||
if (!files.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const restored = await Git('checkout', '--', ...files);
|
||||
if (restored.code) {
|
||||
warn(`Unable to restore tracked files after copy: ${restored.error.all().join('\n')}`);
|
||||
return;
|
||||
}
|
||||
|
||||
note(`Restored ${files.length} tracked ${files.length === 1 ? 'file' : 'files'} overwritten by the copy.`);
|
||||
}
|
||||
|
||||
export async function main(sourcePath = $args[0]): Promise<string | undefined> {
|
||||
console.log(heading('Copy installed extension binaries'));
|
||||
|
||||
const installedExtensionPath: string = await findLatestInstalledExtension(sourcePath);
|
||||
@@ -110,4 +168,9 @@ export async function main(sourcePath = $args[0]) {
|
||||
}
|
||||
|
||||
note(`Copied installed binaries into ${$root}`);
|
||||
|
||||
await restoreTrackedFiles();
|
||||
|
||||
const installedVersion = tryParseVersion(basename(installedExtensionPath));
|
||||
return installedVersion?.join('.');
|
||||
}
|
||||
|
||||
@@ -47,22 +47,23 @@ export async function main() {
|
||||
}
|
||||
typeScriptSwitchContent += ` case ${stringIndex}:\n`;
|
||||
if (numArgs !== 0) {
|
||||
const stringArgsList: string[] = [];
|
||||
for (let i = 0; i < numArgs; i++) {
|
||||
stringArgsList.push(`stringArgs[${i}]`);
|
||||
}
|
||||
typeScriptSwitchContent += ` if (stringArgs) {\n`;
|
||||
if (hintValue) {
|
||||
typeScriptSwitchContent += ` message = l10n.t({ message: ${JSON.stringify(stringValue)}, args: [${stringArgsList.join(", ")}], comment: [${JSON.stringify(hintValue)}] });\n break;\n }\n`;
|
||||
typeScriptSwitchContent += ` message = localize({ key: ${JSON.stringify(property)}, comment: [${JSON.stringify(hintValue)}] }, ${JSON.stringify(stringValue)}`;
|
||||
} else {
|
||||
typeScriptSwitchContent += ` message = l10n.t(${JSON.stringify(stringValue)}, ${stringArgsList.join(", ")});\n break;\n }\n`;
|
||||
typeScriptSwitchContent += ` message = localize(${JSON.stringify(property)}, ${JSON.stringify(stringValue)}`;
|
||||
}
|
||||
for (let i = 0; i < numArgs; i++) {
|
||||
typeScriptSwitchContent += `, stringArgs[${i}]`;
|
||||
}
|
||||
typeScriptSwitchContent += `);\n break;\n }\n`;
|
||||
}
|
||||
if (hintValue) {
|
||||
typeScriptSwitchContent += ` message = l10n.t({ message: ${JSON.stringify(stringValue)}, comment: [${JSON.stringify(hintValue)}] });\n break;\n`;
|
||||
typeScriptSwitchContent += ` message = localize({ key: ${JSON.stringify(property)}, comment: [${JSON.stringify(hintValue)}] }, ${JSON.stringify(stringValue)}`;
|
||||
} else {
|
||||
typeScriptSwitchContent += ` message = l10n.t(${JSON.stringify(stringValue)});\n break;\n`;
|
||||
typeScriptSwitchContent += ` message = localize(${JSON.stringify(property)}, ${JSON.stringify(stringValue)}`;
|
||||
}
|
||||
typeScriptSwitchContent += `);\n break;\n`;
|
||||
}
|
||||
++stringIndex;
|
||||
}
|
||||
@@ -80,7 +81,10 @@ export async function main() {
|
||||
|
||||
'use strict';
|
||||
|
||||
import { l10n } from 'vscode';
|
||||
import * as nls from 'vscode-nls';
|
||||
|
||||
nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })();
|
||||
const localize: nls.LocalizeFunc = nls.loadMessageBundle();
|
||||
|
||||
export const localizedStringCount: number = ${stringIndex};
|
||||
|
||||
|
||||
@@ -85,8 +85,13 @@ function replaceReferences(definitions: any, objects: any): any {
|
||||
objects[key].anyOf = replaceReferences(definitions, objects[key].anyOf);
|
||||
}
|
||||
|
||||
// Recursively replace references if this object has properties.
|
||||
if (objects[key].hasOwnProperty('type') && objects[key].type === 'object' && objects[key].properties !== null) {
|
||||
// Handle 'oneOf' with references
|
||||
if (objects[key].hasOwnProperty('oneOf')) {
|
||||
objects[key].oneOf = replaceReferences(definitions, objects[key].oneOf);
|
||||
}
|
||||
|
||||
// Recursively replace references if this schema node has properties.
|
||||
if (objects[key].hasOwnProperty('properties') && objects[key].properties !== null) {
|
||||
objects[key].properties = replaceReferences(definitions, objects[key].properties);
|
||||
objects[key].properties = updateDefaults(objects[key].properties, objects[key].default);
|
||||
}
|
||||
@@ -117,11 +122,13 @@ function mergeReferences(baseDefinitions: any, additionalDefinitions: any): void
|
||||
export async function main() {
|
||||
const packageJSON: any = JSON.parse(await read(resolve($root, 'package.json')));
|
||||
const schemaJSON: any = JSON.parse(await read(resolve($root, 'tools/OptionsSchema.json')));
|
||||
const taskDefinitionsJSON: any = JSON.parse(await read(resolve($root, 'tools/TaskDefinitionsSchema.json')));
|
||||
const symbolSettingsJSON: any = JSON.parse(await read(resolve($root, 'tools/VSSymbolSettings.json')));
|
||||
|
||||
mergeReferences(schemaJSON.definitions, symbolSettingsJSON.definitions);
|
||||
|
||||
schemaJSON.definitions = replaceReferences(schemaJSON.definitions, schemaJSON.definitions);
|
||||
taskDefinitionsJSON.definitions = replaceReferences(taskDefinitionsJSON.definitions, taskDefinitionsJSON.definitions);
|
||||
|
||||
// Hard Code adding in configurationAttributes launch and attach.
|
||||
// cppdbg
|
||||
@@ -132,6 +139,9 @@ export async function main() {
|
||||
packageJSON.contributes.debuggers[1].configurationAttributes.launch = schemaJSON.definitions.CppvsdbgLaunchOptions;
|
||||
packageJSON.contributes.debuggers[1].configurationAttributes.attach = schemaJSON.definitions.CppvsdbgAttachOptions;
|
||||
|
||||
// task definitions
|
||||
packageJSON.contributes.taskDefinitions = [taskDefinitionsJSON.definitions.CppBuildTaskDefinition];
|
||||
|
||||
let content: string = JSON.stringify(packageJSON, null, 4);
|
||||
|
||||
// We use '\u200b' (unicode zero-length space character) to break VS Code's URL detection regex for URLs that are examples. This process will
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
import * as fs from "fs";
|
||||
import * as path from 'path';
|
||||
import { parseString } from 'xml2js';
|
||||
import { mkdir, write } from './common';
|
||||
import { glob, mkdir, write } from './common';
|
||||
|
||||
export async function main() {
|
||||
|
||||
@@ -45,11 +45,16 @@ export async function main() {
|
||||
|
||||
const locFolderNames = fs.readdirSync(localizeRepoPath).filter(f => fs.lstatSync(path.join(localizeRepoPath, f)).isDirectory());
|
||||
for (const locFolderName of locFolderNames) {
|
||||
const lclPath = path.join(localizeRepoPath, locFolderName, "vc/vc/cpfeui.dll.lcl");
|
||||
const languageInfo = languages.find(l => l.folderName === locFolderName);
|
||||
if (!languageInfo) {
|
||||
return;
|
||||
}
|
||||
const localePath = path.join(localizeRepoPath, locFolderName);
|
||||
const lclPaths = await glob("vc/vc/cpfeui.dll.lcl", { cwd: localePath, nocase: true, nodir: true });
|
||||
if (lclPaths.length !== 1) {
|
||||
throw new Error(`Expected one cpfeui.dll.lcl under '${localePath}', found ${lclPaths.length}.`);
|
||||
}
|
||||
const lclPath = path.join(localePath, lclPaths[0]);
|
||||
const languageId = languageInfo.id;
|
||||
const outputLanguageFolder = path.join(cpptoolsRepoPath, "Extension/bin/messages", languageId);
|
||||
const outputPath = path.join(outputLanguageFolder, "messages.json");
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All Rights Reserved.
|
||||
* See 'LICENSE' in the project root for license information.
|
||||
* ------------------------------------------------------------------------------------------ */
|
||||
|
||||
import { runVSCodeCommand } from '@vscode/test-electron';
|
||||
import { writeFile } from 'node:fs/promises';
|
||||
import { join } from 'node:path';
|
||||
import { $root, error, heading, note, warn } from './common';
|
||||
import * as copy from './copyExtensionBinaries';
|
||||
import { install, isolated, options } from "./vscode";
|
||||
|
||||
export async function main() {
|
||||
console.log(heading(`Install VS Code`));
|
||||
const vscode = await install();
|
||||
if (!vscode) {
|
||||
error('Failed to install VS Code');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(heading('Install latest C/C++ Extension'));
|
||||
const result = await runVSCodeCommand([...vscode.args ?? [], '--install-extension', 'ms-vscode.cpptools', '--pre-release'], options);
|
||||
if (result.stdout) {
|
||||
console.log(result.stdout.toString());
|
||||
}
|
||||
if (result.stderr) {
|
||||
// runVSCodeCommand resolves only when the command succeeds (it throws on a non-zero exit), so stderr here is
|
||||
// non-fatal output such as Node deprecation warnings and must not be reported as an error.
|
||||
warn(result.stderr.toString());
|
||||
}
|
||||
|
||||
const binaryVersion = await copy.main(isolated);
|
||||
if (binaryVersion) {
|
||||
await writeFile(join($root, 'bin', 'binaryVersion.json'), JSON.stringify({ version: binaryVersion }));
|
||||
note(`Wrote binary version ${binaryVersion} to bin/binaryVersion.json`);
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ import { filepath } from '../src/Utility/Filesystem/filepath';
|
||||
import { is } from '../src/Utility/System/guards';
|
||||
import { verbose } from '../src/Utility/Text/streams';
|
||||
import { getTestInfo } from '../test/common/selectTests';
|
||||
import { $args, $root, $scenario, assertAnyFile, assertAnyFolder, brightGreen, checkBinaries, cmdSwitch, cyan, error, gray, green, readJson, red, writeJson } from './common';
|
||||
import { $args, $root, $scenario, $scenarioArgs, assertAnyFile, assertAnyFolder, brightGreen, checkBinaries, cmdSwitch, cyan, error, gray, green, readJson, red, writeJson } from './common';
|
||||
import { install, isolated, options } from './vscode';
|
||||
|
||||
export { install, reset } from './vscode';
|
||||
@@ -27,6 +27,7 @@ const filters = [
|
||||
/^Unexpected token A/,
|
||||
/Cannot register 'cmake.cmakePath'/,
|
||||
/\[DEP0005\] DeprecationWarning/,
|
||||
/\[DEP0169\] DeprecationWarning/,
|
||||
/--trace-deprecation/,
|
||||
/Iconv-lite warning/,
|
||||
/^Extension '/,
|
||||
@@ -90,7 +91,8 @@ async function scenarioTests(assets: string, name: string, workspace: string) {
|
||||
extensionTestsPath: resolve($root, 'dist/test/common/selectTests'),
|
||||
launchArgs: workspace ? [...options.launchArgs, workspace] : options.launchArgs,
|
||||
extensionTestsEnv: {
|
||||
SCENARIO: assets
|
||||
SCENARIO: assets,
|
||||
SCENARIO_ARGS: $scenarioArgs.join(',')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import process from 'node:process';
|
||||
import { fileURLToPath, pathToFileURL } from 'node:url';
|
||||
|
||||
const dependencySections = ['dependencies', 'devDependencies', 'optionalDependencies'];
|
||||
|
||||
function parseLockfileKey(key) {
|
||||
const selectors = [];
|
||||
let selectorStart = 0;
|
||||
let quoted = false;
|
||||
let escaped = false;
|
||||
|
||||
for (let index = 0; index < key.length; index++) {
|
||||
const character = key[index];
|
||||
if (escaped) {
|
||||
escaped = false;
|
||||
} else if (character === '\\' && quoted) {
|
||||
escaped = true;
|
||||
} else if (character === '"') {
|
||||
quoted = !quoted;
|
||||
} else if (character === ',' && !quoted) {
|
||||
selectors.push(key.slice(selectorStart, index));
|
||||
selectorStart = index + 1;
|
||||
}
|
||||
}
|
||||
selectors.push(key.slice(selectorStart));
|
||||
|
||||
return selectors.map(selector => {
|
||||
const trimmedSelector = selector.trim();
|
||||
return trimmedSelector.startsWith('"') ? JSON.parse(trimmedSelector) : trimmedSelector;
|
||||
});
|
||||
}
|
||||
|
||||
function parseLockfileSelectors(lockfile) {
|
||||
const selectors = new Set();
|
||||
for (const line of lockfile.split(/\r?\n/)) {
|
||||
if (/^[^\s#].*:\s*$/.test(line)) {
|
||||
for (const selector of parseLockfileKey(line.replace(/:\s*$/, ''))) {
|
||||
selectors.add(selector);
|
||||
}
|
||||
}
|
||||
}
|
||||
return selectors;
|
||||
}
|
||||
|
||||
function getResolutionPackageName(pattern) {
|
||||
const segments = pattern.split('/');
|
||||
const packageName = segments.at(-1);
|
||||
const scope = segments.at(-2);
|
||||
return scope?.startsWith('@') ? `${scope}/${packageName}` : packageName;
|
||||
}
|
||||
|
||||
function getExpectedSelectors(manifest) {
|
||||
const selectors = [];
|
||||
for (const section of dependencySections) {
|
||||
for (const [packageName, range] of Object.entries(manifest[section] ?? {})) {
|
||||
selectors.push(`${packageName}@${range}`);
|
||||
}
|
||||
}
|
||||
for (const [pattern, range] of Object.entries(manifest.resolutions ?? {})) {
|
||||
selectors.push(`${getResolutionPackageName(pattern)}@${range}`);
|
||||
}
|
||||
return selectors;
|
||||
}
|
||||
|
||||
function findMissingSelectors(manifest, lockfile) {
|
||||
const lockfileSelectors = parseLockfileSelectors(lockfile);
|
||||
return getExpectedSelectors(manifest)
|
||||
.filter(selector => !lockfileSelectors.has(selector))
|
||||
.sort();
|
||||
}
|
||||
|
||||
function validateYarnLock(packageJsonPath, yarnLockPath) {
|
||||
const manifest = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
||||
const lockfile = fs.readFileSync(yarnLockPath, 'utf8');
|
||||
const missingSelectors = findMissingSelectors(manifest, lockfile);
|
||||
if (missingSelectors.length > 0) {
|
||||
throw new Error(`yarn.lock is missing selectors required by package.json:\n${missingSelectors.map(selector => ` ${selector}`).join('\n')}\nRun yarn install to update yarn.lock.`);
|
||||
}
|
||||
}
|
||||
|
||||
const invokedUrl = process.argv[1] ? pathToFileURL(path.resolve(process.argv[1])).href : undefined;
|
||||
if (invokedUrl === import.meta.url) {
|
||||
const extensionRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
||||
const packageJsonPath = process.argv[2] ?? path.join(extensionRoot, 'package.json');
|
||||
const yarnLockPath = process.argv[3] ?? path.join(extensionRoot, 'yarn.lock');
|
||||
|
||||
try {
|
||||
validateYarnLock(packageJsonPath, yarnLockPath);
|
||||
} catch (error) {
|
||||
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
|
||||
process.exitCode = 1;
|
||||
}
|
||||
}
|
||||
|
||||
export { findMissingSelectors, getExpectedSelectors, parseLockfileSelectors, validateYarnLock };
|
||||
@@ -0,0 +1,41 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import { findMissingSelectors } from './verifyYarnLock.mjs';
|
||||
|
||||
test('reports a stale resolution selector', () => {
|
||||
const manifest = { resolutions: { 'fast-uri': '^3.1.5' } };
|
||||
const lockfile = `fast-uri@^3.0.1, fast-uri@^3.1.4:
|
||||
version "3.1.5"
|
||||
`;
|
||||
|
||||
assert.deepEqual(findMissingSelectors(manifest, lockfile), ['fast-uri@^3.1.5']);
|
||||
});
|
||||
|
||||
test('accepts direct, scoped, and nested resolution selectors', () => {
|
||||
const manifest = {
|
||||
dependencies: { '@scope/direct': '^1.0.0' },
|
||||
devDependencies: { 'gulp-typescript': '^5.0.1' },
|
||||
resolutions: {
|
||||
'@scope/resolved': '^2.0.0',
|
||||
'gulp-typescript/**/glob-parent': '^5.1.2',
|
||||
'parent/**/@nested/package': '~3.0.0'
|
||||
}
|
||||
};
|
||||
const lockfile = `"@nested/package@~3.0.0":
|
||||
version "3.0.1"
|
||||
|
||||
"@scope/direct@^1.0.0":
|
||||
version "1.0.0"
|
||||
|
||||
"@scope/resolved@^2.0.0":
|
||||
version "2.0.0"
|
||||
|
||||
glob-parent@^3.1.0, glob-parent@^5.1.2:
|
||||
version "5.1.2"
|
||||
|
||||
gulp-typescript@^5.0.1:
|
||||
version "5.0.1"
|
||||
`;
|
||||
|
||||
assert.deepEqual(findMissingSelectors(manifest, lockfile), []);
|
||||
});
|
||||
@@ -4,20 +4,24 @@
|
||||
* ------------------------------------------------------------------------------------------ */
|
||||
|
||||
import { downloadAndUnzipVSCode, resolveCliArgsFromVSCodeExecutablePath } from '@vscode/test-electron';
|
||||
import { createHash } from 'crypto';
|
||||
import { tmpdir } from 'os';
|
||||
import { resolve } from 'path';
|
||||
import { verbose } from '../src/Utility/Text/streams';
|
||||
import { mkdir, readJson, rimraf, write } from './common';
|
||||
import { getVSCodeTestIsolate } from './vscodeTestPath';
|
||||
|
||||
export const isolated = resolve(tmpdir(), '.vscode-test', createHash('sha256').update(__dirname).digest('hex').substring(0, 6));
|
||||
export const isolated = getVSCodeTestIsolate(__dirname);
|
||||
export const extensionsDir = resolve(isolated, 'extensions');
|
||||
export const userDir = resolve(isolated, 'user-data');
|
||||
export const settings = resolve(userDir, "User", 'settings.json');
|
||||
|
||||
// Pin the test VS Code build to a known-good stable release for deterministic CI instead of
|
||||
// always pulling latest. Launching macOS 1.110+ builds requires @vscode/test-electron >= 3.1.0.
|
||||
export const testVSCodeVersion = '1.131.0';
|
||||
|
||||
export const options = {
|
||||
version: testVSCodeVersion,
|
||||
cachePath: `${isolated}/cache`,
|
||||
launchArgs: ['--no-sandbox', '--disable-updates', '--skip-welcome', '--skip-release-notes', `--extensions-dir=${extensionsDir}`, `--user-data-dir=${userDir}`, '--disable-workspace-trust']
|
||||
launchArgs: ['--no-sandbox', '--disable-updates', '--skip-welcome', '--skip-release-notes', '--disable-extensions', `--extensions-dir=${extensionsDir}`, `--user-data-dir=${userDir}`, '--disable-workspace-trust']
|
||||
};
|
||||
|
||||
export async function install() {
|
||||
@@ -34,9 +38,9 @@ export async function install() {
|
||||
args.push(`--extensions-dir=${extensionsDir}`, `--user-data-dir=${userDir}`);
|
||||
|
||||
// install the appropriate extensions
|
||||
// spawnSync(cli, [...args, '--install-extension', 'ms-vscode.cpptools'], { encoding: 'utf-8', stdio: 'ignore' });
|
||||
// spawnSync(cli, [...args, '--install-extension', 'twxs.cmake'], { encoding: 'utf-8', stdio: 'ignore' });
|
||||
// spawnSync(cli, [...args, '--install-extension', 'ms-vscode.cmake-tools'], { encoding: 'utf-8', stdio: 'ignore' });
|
||||
// runVSCodeCommand([...args, '--install-extension', 'ms-vscode.cpptools'], options);
|
||||
// runVSCodeCommand([...args, '--install-extension', 'twxs.cmake'], options);
|
||||
// runVSCodeCommand([...args, '--install-extension', 'ms-vscode.cmake-tools'], options);
|
||||
const settingsJson = await readJson(settings, {});
|
||||
if (!settingsJson["workbench.colorTheme"]) {
|
||||
settingsJson["workbench.colorTheme"] = "Tomorrow Night Blue";
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All Rights Reserved.
|
||||
* See 'LICENSE' in the project root for license information.
|
||||
* ------------------------------------------------------------------------------------------ */
|
||||
|
||||
import { createHash } from 'crypto';
|
||||
import { homedir } from 'os';
|
||||
import { posix, win32 } from 'path';
|
||||
|
||||
function isFullyQualifiedPath(value: string, platform: NodeJS.Platform): boolean {
|
||||
const path = platform === 'win32' ? win32 : posix;
|
||||
return path.isAbsolute(value) && (platform !== 'win32' || path.parse(value).root.length > 1);
|
||||
}
|
||||
|
||||
export function getVSCodeTestIsolate(
|
||||
scriptDirectory: string,
|
||||
platform: NodeJS.Platform = process.platform,
|
||||
environment: NodeJS.ProcessEnv = process.env,
|
||||
homeDirectory: string = homedir()): string {
|
||||
const path = platform === 'win32' ? win32 : posix;
|
||||
const override = environment.CPPTOOLS_VSCODE_TEST_ROOT;
|
||||
let root: string;
|
||||
|
||||
if (override) {
|
||||
if (!isFullyQualifiedPath(override, platform)) {
|
||||
throw new Error('CPPTOOLS_VSCODE_TEST_ROOT must be a fully qualified absolute path.');
|
||||
}
|
||||
root = override;
|
||||
} else {
|
||||
switch (platform) {
|
||||
case 'win32': {
|
||||
const localAppData = environment.LOCALAPPDATA;
|
||||
const cacheDirectory = localAppData && isFullyQualifiedPath(localAppData, platform) ? localAppData : path.resolve(homeDirectory, 'AppData', 'Local');
|
||||
root = path.resolve(cacheDirectory, 'Microsoft', 'vscode-cpptools', 'vscode-test');
|
||||
break;
|
||||
}
|
||||
case 'darwin':
|
||||
root = path.resolve(homeDirectory, 'Library', 'Caches', 'vscode-cpptools', 'vscode-test');
|
||||
break;
|
||||
default: {
|
||||
const xdgCacheHome = environment.XDG_CACHE_HOME;
|
||||
const cacheDirectory = xdgCacheHome && isFullyQualifiedPath(xdgCacheHome, platform) ? xdgCacheHome : path.resolve(homeDirectory, '.cache');
|
||||
root = path.resolve(cacheDirectory, 'vscode-cpptools', 'vscode-test');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const worktreeHash = createHash('sha256').update(scriptDirectory).digest('hex').substring(0, 6);
|
||||
return path.resolve(root, worktreeHash);
|
||||
}
|
||||
Vendored
+25
@@ -22,6 +22,31 @@
|
||||
// you can use a watch task as a prelaunch task and it works like you'd want it to.
|
||||
"preLaunchTask": "watch"
|
||||
},
|
||||
{
|
||||
// debugs the extension with sanitizer (TSan/ASan/UBSan) reports captured to files.
|
||||
// Requires a sanitizer build of the cpptools language server. Each process writes
|
||||
// ${userHome}/cpptools-sanitizer-logs/<sanitizer>.<pid> (see readme.developer.md).
|
||||
"name": "Run Extension (capture sanitizer logs)",
|
||||
"type": "extensionHost",
|
||||
"request": "launch",
|
||||
"env": {
|
||||
"CPPTOOLS_SANITIZER_LOG_DIR": "${userHome}/cpptools-sanitizer-logs"
|
||||
},
|
||||
"args": [
|
||||
"--no-sandbox",
|
||||
"--disable-updates",
|
||||
"--skip-welcome",
|
||||
"--skip-release-notes",
|
||||
"--disable-workspace-trust",
|
||||
"--extensionDevelopmentPath=${workspaceFolder}",
|
||||
],
|
||||
"sourceMaps": true,
|
||||
"outFiles": [
|
||||
"${workspaceFolder}/dist/**"
|
||||
],
|
||||
// you can use a watch task as a prelaunch task and it works like you'd want it to.
|
||||
"preLaunchTask": "watch"
|
||||
},
|
||||
{
|
||||
// debugs the extension (selecting the workspace)
|
||||
"name": "Run Extension-Select Workspace",
|
||||
|
||||
Vendored
+3
-1
@@ -27,12 +27,14 @@
|
||||
"editor.formatOnSave": true,
|
||||
"editor.defaultFormatter": "vscode.json-language-features",
|
||||
"editor.tabSize": 4,
|
||||
"files.insertFinalNewline": false
|
||||
"editor.detectIndentation": true,
|
||||
"files.insertFinalNewline": true
|
||||
},
|
||||
"[jsonc]": {
|
||||
"editor.formatOnSave": true,
|
||||
"editor.defaultFormatter": "vscode.json-language-features",
|
||||
"editor.tabSize": 4,
|
||||
"editor.detectIndentation": true,
|
||||
"files.insertFinalNewline": true
|
||||
},
|
||||
"[typescript]": {
|
||||
|
||||
+1
-1
@@ -28,4 +28,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,4 +7,4 @@
|
||||
"devDependencies": {
|
||||
"yarn": "1.22.22"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+33
-14
@@ -1,36 +1,55 @@
|
||||
# C/C++ for Visual Studio Code Changelog
|
||||
|
||||
## Version 1.33.2: June 26, 2026
|
||||
### Bug Fixes
|
||||
* Fix a regression with 'Find All References' with functions that exist in both C and C++ files. [#14546](https://github.com/microsoft/vscode-cpptools/issues/14546)
|
||||
* Fix some regression crashes.
|
||||
|
||||
## Version 1.33.1: June 23, 2026
|
||||
### Bug Fixes
|
||||
* Fix 'Find All References' dropping valid references when a template parameter type has a typedef alias in only one translation unit. [#14344](https://github.com/microsoft/vscode-cpptools/issues/14344)
|
||||
* Fix a crash regression on file open.
|
||||
* Fix IntelliSense incorrectly resolving `#include` files through a symbolic link after the target directory was deleted from disk.
|
||||
* Fix "tag parsing finished" status randomly getting reported too soon after a 'Reset IntelliSense Database' command.
|
||||
|
||||
## Version 1.33.0: June 22, 2026
|
||||
## Version 1.33.8: August 17, 2026
|
||||
### New Feature
|
||||
* Unification of tag parsing with the VS implementation. In particular, it's now done using multiple parallel `cpptools-srv2` processes. [PR #14426](https://github.com/microsoft/vscode-cpptools/pull/14426)
|
||||
|
||||
### Enhancements
|
||||
* Allow platform overrides in `cppbuild` tasks. [#11601](https://github.com/microsoft/vscode-cpptools/issues/11601)
|
||||
* Add the `debuginfod` launch option to the `cppdbg` debugger schema. [#14458](https://github.com/microsoft/vscode-cpptools/issues/14458), [#14460](https://github.com/microsoft/vscode-cpptools/issues/14460), [PR #14471](https://github.com/microsoft/vscode-cpptools/pull/14471), [PR #14506](https://github.com/microsoft/vscode-cpptools/pull/14506), [MIEngine#1562](https://github.com/microsoft/MIEngine/issues/1562)
|
||||
* Add the `ignoreRunWithoutDebuggingWarnings` property to allow 'Run without debugging' warnings to be suppressed. [#14515](https://github.com/microsoft/vscode-cpptools/issues/14515)
|
||||
* Various localization updates.
|
||||
|
||||
### Bug Fixes
|
||||
* Fix the wording for the `#include` errors detected message. [#8227](https://github.com/microsoft/vscode-cpptools/issues/8227)
|
||||
* Fix an incorrect `invalid type conversion` IntelliSense error. [#11294](https://github.com/microsoft/vscode-cpptools/issues/11294)
|
||||
* Fix include completion (with recursive includes) still suggesting headers from a deleted folder. [#12636](https://github.com/microsoft/vscode-cpptools/issues/12636)
|
||||
* Fix a spurious recursive includes (`**`) debug console log warning for paths merged from `c_cpp_properties.json` when `C_Cpp.mergeConfigurations` is enabled. [#14125](https://github.com/microsoft/vscode-cpptools/issues/14125)
|
||||
* Thanks for the contribution. [@owevertonguedes (Weverton Guedes)](https://github.com/owevertonguedes) [PR #14620](https://github.com/microsoft/vscode-cpptools/pull/14620)
|
||||
* Fix 'Find All References' dropping valid references when a template parameter type has a typedef alias in only one translation unit. [#14344](https://github.com/microsoft/vscode-cpptools/issues/14344)
|
||||
* Fix the remote process picker `ps` command not working with some shells. [#14442](https://github.com/microsoft/vscode-cpptools/issues/14442)
|
||||
* Thanks for the contribution. [@HuzaifaAbdulRehman](https://github.com/HuzaifaAbdulRehman) [PR #14592](https://github.com/microsoft/vscode-cpptools/pull/14592)
|
||||
* Fix a spurious IntelliSense error with class template argument deduction (CTAD). [#14453](https://github.com/microsoft/vscode-cpptools/issues/14453), [#14459](https://github.com/microsoft/vscode-cpptools/issues/14459), [#14504](https://github.com/microsoft/vscode-cpptools/issues/14504)
|
||||
* Add `important` to `C_Cpp.doxygen.sectionTags`. [PR #14473](https://github.com/microsoft/vscode-cpptools/pull/14473)
|
||||
* Update the minimum supported VS Code version to 1.77. [PR #14502](https://github.com/microsoft/vscode-cpptools/pull/14502)
|
||||
* Fix issues with the debugger `launch.json` schema. [PR #14523](https://github.com/microsoft/vscode-cpptools/pull/14523)
|
||||
* Fix `[[no_unique_address]]` empty-base layout `sizeof` being computed too large. [#14524](https://github.com/microsoft/vscode-cpptools/issues/14524)
|
||||
* Fix `${env:VAR}` and `${env.VAR}` not expanding to an empty string when the environment variable is unset, to match VS Code's behavior. [PR #14535](https://github.com/microsoft/vscode-cpptools/pull/14535)
|
||||
* Thanks for the contribution. [@notable-equivalent](https://github.com/notable-equivalent)
|
||||
* Fix C/C++ debug data-tips on members of a dereferenced expression. [PR #14540](https://github.com/microsoft/vscode-cpptools/pull/14540)
|
||||
* Thanks for the contribution. [@tieo](https://github.com/tieo)
|
||||
* Fix Windows backslash paths being mangled when adding an SSH target. [PR #14554](https://github.com/microsoft/vscode-cpptools/pull/14554)
|
||||
* Fix 'Run C/C++ File' not running the program in PowerShell when terminal shell integration is unavailable. [#14583](https://github.com/microsoft/vscode-cpptools/issues/14583)
|
||||
* Thanks for the contribution. [@owevertonguedes (Weverton Guedes)](https://github.com/owevertonguedes) [PR #14585](https://github.com/microsoft/vscode-cpptools/pull/14585)
|
||||
* Fix the build tools walkthrough for Visual Studio 2026. [PR #14589](https://github.com/microsoft/vscode-cpptools/pull/14589)
|
||||
* Fix custom configurations being discarded when `C_Cpp.mergeConfigurations` is enabled and a provider supplies the file `uri` as a `vscode.Uri`. [#14621](https://github.com/microsoft/vscode-cpptools/issues/14621)
|
||||
* Thanks for the contribution. [@owevertonguedes (Weverton Guedes)](https://github.com/owevertonguedes) [PR #14624](https://github.com/microsoft/vscode-cpptools/pull/14624)
|
||||
* Fix a tag parser crash when a UTF-8 string literal is concatenated with a narrow string literal containing an invalid multibyte sequence.
|
||||
* Fix IntelliSense incorrectly resolving `#include` files through a symbolic link after the target directory was deleted from disk.
|
||||
* Fix potential browse database corruption when the same workspace is opened by multiple processes on Linux and macOS.
|
||||
* Fix crashes when reading files saved in certain multibyte encodings such as GB18030 or EUC-JP.
|
||||
* Fix empty database folders being created in every folder of a multi-root workspace.
|
||||
* Fix the `C_Cpp.refactoring.includeHeader` setting not honoring `always`.
|
||||
* Fix spurious IntelliSense error on `std::variant` brace-initialization.
|
||||
* Fix several potential deadlocks and data races in the language server.
|
||||
* Fix an incorrect file path in an error message on Windows.
|
||||
* Reduce memory usage to help avoid out-of-memory crashes.
|
||||
* Fix stale diagnostics after editing visible headers.
|
||||
* Fix several crashes in the recursive include cache.
|
||||
* Fix an incorrect `#include` casing error on Linux.
|
||||
* Various other fixes found internally.
|
||||
* Various localization updates.
|
||||
* Fix an IntelliSense crash.
|
||||
* Update dependencies.
|
||||
|
||||
## Version 1.32.2: April 28, 2026
|
||||
### New Feature
|
||||
|
||||
+124
-750
@@ -1362,58 +1362,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
asynckit 0.4.0 - MIT
|
||||
https://github.com/alexindigo/asynckit#readme
|
||||
|
||||
Copyright (c) 2016 Alex Indigo
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Alex Indigo
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
axios 1.16.0 - MIT
|
||||
https://axios-http.com/
|
||||
|
||||
Copyright (c) 2014-present, Facebook, Inc.
|
||||
Copyright (c) 2026 Matt Zabriskie and contributors
|
||||
Copyright (c) 2014-present Matt Zabriskie & Collaborators
|
||||
|
||||
# Copyright (c) 2014-present Matt Zabriskie & Collaborators
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -1478,41 +1426,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
benchmark 1.0.0 - MIT
|
||||
http://benchmarkjs.com/
|
||||
|
||||
copyright Robert Kieffer <http://broofa.com/>
|
||||
Copyright 2010-2012 Mathias Bynens <http://mths.be/>
|
||||
Copyright 2010-2012 Mathias Bynens <http://mathiasbynens.be/>
|
||||
|
||||
Copyright 2010-2012 Mathias Bynens <http://mathiasbynens.be/>
|
||||
Based on JSLitmus.js, copyright Robert Kieffer <http://broofa.com/>
|
||||
Modified by John-David Dalton <http://allyoucanleet.com/>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -1570,6 +1483,70 @@ 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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
brace-expansion 1.1.18 - MIT
|
||||
https://github.com/juliangruber/brace-expansion
|
||||
|
||||
Copyright (c) 2013 Julian Gruber <[email protected]>
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2013 Julian Gruber <[email protected]>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
brace-expansion 2.1.4 - MIT
|
||||
https://github.com/juliangruber/brace-expansion
|
||||
|
||||
Copyright (c) 2013 Julian Gruber <[email protected]>
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2013 Julian Gruber <[email protected]>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -1603,38 +1580,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
call-bind-apply-helpers 1.0.2 - MIT
|
||||
https://github.com/ljharb/call-bind-apply-helpers#readme
|
||||
|
||||
Copyright (c) 2024 Jordan Harband
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Jordan Harband
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -1668,36 +1613,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
combined-stream 1.0.8 - MIT
|
||||
https://github.com/felixge/node-combined-stream
|
||||
|
||||
Copyright (c) 2011 Debuggable Limited <[email protected]>
|
||||
|
||||
Copyright (c) 2011 Debuggable Limited <[email protected]>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -1789,68 +1704,6 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
delayed-stream 1.0.0 - MIT
|
||||
https://github.com/felixge/node-delayed-stream
|
||||
|
||||
Copyright (c) 2011 Debuggable Limited <[email protected]>
|
||||
|
||||
Copyright (c) 2011 Debuggable Limited <[email protected]>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
dunder-proto 1.0.1 - MIT
|
||||
https://github.com/es-shims/dunder-proto#readme
|
||||
|
||||
Copyright (c) 2024 ECMAScript Shims
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 ECMAScript Shims
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -1893,134 +1746,6 @@ 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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
es-define-property 1.0.1 - MIT
|
||||
https://github.com/ljharb/es-define-property#readme
|
||||
|
||||
Copyright (c) 2024 Jordan Harband
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Jordan Harband
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
es-errors 1.3.0 - MIT
|
||||
https://github.com/ljharb/es-errors#readme
|
||||
|
||||
Copyright (c) 2024 Jordan Harband
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Jordan Harband
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
es-object-atoms 1.1.1 - MIT
|
||||
https://github.com/ljharb/es-object-atoms#readme
|
||||
|
||||
Copyright (c) 2024 Jordan Harband
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 Jordan Harband
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
es-set-tostringtag 2.1.0 - MIT
|
||||
https://github.com/es-shims/es-set-tostringtag#readme
|
||||
|
||||
Copyright (c) 2022 ECMAScript Shims
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 ECMAScript Shims
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -2086,35 +1811,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
follow-redirects 1.16.0 - MIT
|
||||
https://github.com/follow-redirects/follow-redirects
|
||||
|
||||
Copyright 2014-present Olivier Lalonde <[email protected]> , James Talmage <[email protected]> , Ruben Verborgh
|
||||
|
||||
Copyright 2014–present Olivier Lalonde <[email protected]>, James Talmage <[email protected]>, Ruben Verborgh
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -2149,197 +1845,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
function-bind 1.1.2 - MIT
|
||||
https://github.com/Raynos/function-bind
|
||||
|
||||
Copyright (c) 2013 Raynos
|
||||
|
||||
Copyright (c) 2013 Raynos.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
get-intrinsic 1.3.0 - MIT
|
||||
https://github.com/ljharb/get-intrinsic#readme
|
||||
|
||||
Copyright (c) 2020 Jordan Harband
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Jordan Harband
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
get-proto 1.0.1 - MIT
|
||||
https://github.com/ljharb/get-proto#readme
|
||||
|
||||
Copyright (c) 2025 Jordan Harband
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Jordan Harband
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
gopd 1.2.0 - MIT
|
||||
https://github.com/ljharb/gopd#readme
|
||||
|
||||
Copyright (c) 2022 Jordan Harband
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 Jordan Harband
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
has-symbols 1.1.0 - MIT
|
||||
https://github.com/ljharb/has-symbols#readme
|
||||
|
||||
Copyright (c) 2016 Jordan Harband
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016 Jordan Harband
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
has-tostringtag 1.0.2 - MIT
|
||||
https://github.com/inspect-js/has-tostringtag#readme
|
||||
|
||||
Copyright (c) 2021 Inspect JS
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Inspect JS
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -2527,38 +2032,6 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
math-intrinsics 1.1.0 - MIT
|
||||
https://github.com/es-shims/math-intrinsics#readme
|
||||
|
||||
Copyright (c) 2024 ECMAScript Shims
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 ECMAScript Shims
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -2625,80 +2098,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
mime-db 1.52.0 - MIT
|
||||
https://github.com/jshttp/mime-db#readme
|
||||
|
||||
Copyright (c) 2014 Jonathan Ong
|
||||
Copyright (c) 2015-2022 Douglas Christopher Wilson
|
||||
Copyright (c) 2014 Jonathan Ong <[email protected]>
|
||||
Copyright (c) 2015-2022 Douglas Christopher Wilson <[email protected]>
|
||||
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2014 Jonathan Ong <[email protected]>
|
||||
Copyright (c) 2015-2022 Douglas Christopher Wilson <[email protected]>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
mime-types 2.1.35 - MIT
|
||||
https://github.com/jshttp/mime-types#readme
|
||||
|
||||
Copyright (c) 2014 Jonathan Ong
|
||||
Copyright (c) 2015 Douglas Christopher Wilson
|
||||
Copyright (c) 2014 Jonathan Ong <[email protected]>
|
||||
Copyright (c) 2015 Douglas Christopher Wilson <[email protected]>
|
||||
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2014 Jonathan Ong <[email protected]>
|
||||
Copyright (c) 2015 Douglas Christopher Wilson <[email protected]>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -3080,37 +2479,6 @@ 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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
proxy-from-env 2.1.0 - MIT
|
||||
https://github.com/Rob--W/proxy-from-env#readme
|
||||
|
||||
Copyright (c) 2016-2018 Rob Wu <[email protected]>
|
||||
|
||||
The MIT License
|
||||
|
||||
Copyright (C) 2016-2018 Rob Wu <[email protected]>
|
||||
|
||||
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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -3241,40 +2609,6 @@ 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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
shell-quote 1.8.4 - MIT
|
||||
https://github.com/ljharb/shell-quote
|
||||
|
||||
Copyright (c) 2013 James Halliday ([email protected])
|
||||
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2013 James Halliday ([email protected])
|
||||
|
||||
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.
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -3307,6 +2641,36 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
tas-client 0.2.33 - MIT
|
||||
https://github.com/microsoft/tas-client
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -3391,26 +2755,6 @@ 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.
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
uuid 14.0.0 - MIT
|
||||
https://github.com/uuidjs/uuid#readme
|
||||
|
||||
Copyright (c) 2010-2020 Robert Kieffer and other contributors
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2010-2020 Robert Kieffer and other contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
@@ -3528,6 +2872,36 @@ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CON
|
||||
OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
vscode-tas-client 0.1.84 - MIT
|
||||
https://github.com/microsoft/tas-client
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 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.
|
||||
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
@@ -2810,7 +2810,7 @@
|
||||
"Nejde vyhodnotit hodnotu nekompletní položky %t.",
|
||||
"Systém ignoroval návratovou hodnotu z rutiny deklarované pomocí atributu nodiscard.",
|
||||
"Systém ignoroval typ návratové hodnoty s atributem nodiscard.",
|
||||
"Atribut nodiscard neplatí pro destruktory nebo rutiny s návratovým typem void.",
|
||||
"Atribut nodiscard neplatí pro destruktory nebo rutiny s návratovým typem void.",
|
||||
"Atribut fallthrough platí jenom pro příkazy null.",
|
||||
"Atribut fallthrough se může vyskytovat jenom uvnitř příkazu switch.",
|
||||
"Příkaz fallthrough musí předcházet návěstí větve příkazu switch nebo výchozí hodnotě.",
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"Přiřazení k anachronizmu this není kompatibilní s režimem C++11.",
|
||||
"Došlo k neznámé chybě. Soubor PCH IntelliSense se nevygeneroval.",
|
||||
"Nejméně jednu ze vzdálených cest nejde namapovat na stávající místní cesty. Funkce IntelliSense možná nebude fungovat zcela podle očekávání.",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"Die Zuweisung zum this-Anachronismus ist mit dem C++11-Modus nicht kompatibel.",
|
||||
"Unbekannter Fehler. Es wurde keine IntelliSense PCH-Datei generiert.",
|
||||
"Mindestens ein Remotepfad kann vorhandenen lokalen Pfaden nicht zugeordnet werden. Die IntelliSense-Funktionen werden ggf. beeinträchtigt.",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
@@ -3748,4 +3748,4 @@
|
||||
"%nd wurde zuvor ohne explizite Enumerationsbasis deklariert",
|
||||
"Fehlender „typename“ entspricht hier nicht dem Standard.",
|
||||
"Die abgekürzte Funktionsvorlagensyntax entspricht nicht dem Standard für Deduktionsleitfäden."
|
||||
]
|
||||
]
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"la asignación al anacronismo \"this\" no es compatible con el modo C++11",
|
||||
"error desconocido. No se generó un archivo IntelliSense PCH.",
|
||||
"No se pueden asignar una o varias rutas remotas a las rutas locales actuales. La experiencia con IntelliSense puede degradarse.",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
@@ -3748,4 +3748,4 @@
|
||||
"%nd se declaró previamente sin una base explícita de enumeración",
|
||||
"falta 'typename' no estándar aquí",
|
||||
"La sintaxis abreviada de las plantillas de funciones no es estándar para las guías de deducción"
|
||||
]
|
||||
]
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"l'assignation à l'anachronisme 'this' n'est pas compatible avec le mode C++11",
|
||||
"une erreur inconnue s'est produite. Aucun fichier PCH IntelliSense n'a été généré.",
|
||||
"Impossible de mapper un ou plusieurs chemins distants à des chemins locaux existants. L'expérience IntelliSense risque d'être dégradée.",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"l'assegnazione all'anacronismo 'this' non è compatibile con la modalità C++11",
|
||||
"si è verificato un errore sconosciuto. Non è stato generato alcun file PCH IntelliSense.",
|
||||
"Non è possibile eseguire il mapping di uno o più percorsi remoti a percorsi locali esistenti. L'operazione potrebbe influire negativamente sull'esperienza IntelliSense.",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"'this' への代入 (旧形式) は C++11 モードと互換性がありません",
|
||||
"不明なエラーが発生しました。IntelliSense PCH ファイルは生成されませんでした。",
|
||||
"1 つ以上のリモート パスを既存のローカル パスにマップできません。IntelliSense の機能が低下する可能性があります。",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
@@ -3705,7 +3705,7 @@
|
||||
"<constructor-call>",
|
||||
"<NULL expression>",
|
||||
"<error>",
|
||||
"<NULL routine>",
|
||||
"<NULL ルーチン>",
|
||||
"<default>",
|
||||
"パラメーター #",
|
||||
" (1 つ上のレベル)",
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"'this'에 대한 할당(오래된 구문)은 C++11 모드와 호환되지 않습니다.",
|
||||
"알 수 없는 오류가 발생했습니다. IntelliSense PCH 파일이 생성되지 않았습니다.",
|
||||
"하나 이상의 원격 경로를 기존 로컬 경로에 매핑할 수 없습니다. IntelliSense 성능이 저하될 수 있습니다.",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
@@ -3705,7 +3705,7 @@
|
||||
"<constructor-call>",
|
||||
"<NULL expression>",
|
||||
"<error>",
|
||||
"<NULL routine>",
|
||||
"<NULL 루틴>",
|
||||
"<default>",
|
||||
"parameter #",
|
||||
" (한 수준 위로)",
|
||||
|
||||
@@ -2739,7 +2739,7 @@
|
||||
"wyrażenie niedozwolone w kontekście, którego nie obliczono",
|
||||
null,
|
||||
null,
|
||||
"wyrażenie „return” jest niedozwolone w koprocedurze (zamiast tego użyj wyrażenia „co_return”)",
|
||||
"instrukcja „return” jest niedozwolona w koprocedurze (użyj zamiast niej instrukcji „co_return”)",
|
||||
"wyrażenie „co_return” jest dozwolone tylko w koprocedurach",
|
||||
"nie można porównać wartości zmiennoprzecinkowych",
|
||||
"nie można porównać wartości wskaźników, ponieważ nie wskazują na ten sam kompletny obiekt lub wskazują na podobiekty o różnej dostępności",
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"przypisanie do przestarzałej konstrukcji „this” nie jest zgodne z trybem C++11",
|
||||
"wystąpił nieznany błąd. Nie wygenerowano pliku PCH funkcji IntelliSense.",
|
||||
"Nie można zamapować co najmniej jednej ścieżki zdalnej na istniejące ścieżki lokalne. Może to mieć negatywny wpływ na działanie funkcji IntelliSense.",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
@@ -3177,7 +3177,7 @@
|
||||
"brak instrukcji co_return, podczas gdy %t nie ma elementu „return_void” na końcu %n",
|
||||
"nie znaleziono wariantu nothrow globalnego elementu „operator new” dla alokacji stanu koprocedury",
|
||||
"nie znaleziono zdatnego do użycia elementu „operator delete” dla cofania alokacji koprocedury",
|
||||
"funkcja constexpr nie może być kokprocedurą",
|
||||
"funkcja constexpr nie może być koprocedurą",
|
||||
"argument operacji dla tego wyrażenia %s jest rozpoznawany jako niebędący klasą typ %t",
|
||||
"wyrażenie co_await jest niedozwolone w inicjatorze statycznym",
|
||||
"wyrażenie co_await wywołujące funkcję %n musi być niezwracalne",
|
||||
@@ -3705,7 +3705,7 @@
|
||||
"<constructor-call>",
|
||||
"<NULL expression>",
|
||||
"<error>",
|
||||
"<NULL routine>",
|
||||
"<procedura NULL>",
|
||||
"<default>",
|
||||
"parametr #",
|
||||
" (jeden poziom wyżej)",
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"a atribuição ao anacronismo 'this' não é compatível com o modo C++11",
|
||||
"erro desconhecido. Não foi gerado um arquivo PCH do IntelliSense.",
|
||||
"Um ou mais caminhos remotos não podem ser mapeados para os caminhos locais existentes. A experiência do IntelliSense pode ser degradada.",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"назначение устаревшему элементу this несовместимо с режимом C++11",
|
||||
"произошла неизвестная ошибка. PCH-файл IntelliSense не был создан.",
|
||||
"Один или несколько удаленных путей не могут быть сопоставлены с существующими локальными путями. Использование IntelliSense может быть ограничено.",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"'this' anakronizmine yönelik atama C++11 modu ile uyumlu değil",
|
||||
"bilinmeyen bir hata oluştu. IntelliSense PCH dosyası oluşturulmadı.",
|
||||
"Bir veya daha fazla uzak yol, mevcut yerel yollarla eşlenemiyor. IntelliSense deneyimi bozulabilir.",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"对 \"this\" 计时错误的赋值与 C++11 模式不兼容",
|
||||
"出现了未知错误。未生成 IntelliSense PCH 文件。",
|
||||
"一个或多个远程路径无法映射到现有本地路径。IntelliSense 体验可能会降级。",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
|
||||
@@ -2999,7 +2999,7 @@
|
||||
"'this' 用法已過時,且這種指派與 C++11 模式不相容",
|
||||
"發生未知的錯誤。未產生 IntelliSense PCH 檔案。",
|
||||
"有一或多個遠端路徑無法對應到現有的本機路徑。IntelliSense 的效能可能會變差。",
|
||||
null,
|
||||
"too many nested user-defined conversions (possible cycle of converting routines)",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
|
||||
@@ -300,4 +300,4 @@
|
||||
"version"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
|
||||
+149
-141
@@ -8,11 +8,15 @@
|
||||
const gulp = require('gulp');
|
||||
|
||||
const fs = require('fs');
|
||||
const { getL10nJson, getL10nXlf, getL10nFilesFromXlf } = require('@vscode/l10n-dev');
|
||||
const fastGlob = require('fast-glob');
|
||||
const nls = require('vscode-nls-dev');
|
||||
const path = require('path');
|
||||
const minimist = require('minimist');
|
||||
const es = require('event-stream');
|
||||
const sourcemaps = require('gulp-sourcemaps');
|
||||
const ts = require('gulp-typescript');
|
||||
const typescript = require('typescript');
|
||||
const tsProject = ts.createProject('./tsconfig.json', { typescript });
|
||||
const filter = require('gulp-filter');
|
||||
const vinyl = require('vinyl');
|
||||
const parse5 = require('parse5');
|
||||
const traverse = require('parse5-traverse');
|
||||
@@ -119,6 +123,47 @@ const traverseHtml = (contents, nodeCallback, attributeCallback, isFragment) =>
|
||||
return htmlTree;
|
||||
};
|
||||
|
||||
// Traverses the HTML document looking for node and attributes containing data-loc-id, to localize
|
||||
// Outputs *.nls.json files containing strings to localize.
|
||||
const processHtmlFiles = () => {
|
||||
return es.through(function (file) {
|
||||
let localizationJsonContents = {};
|
||||
let localizationMetadataContents = {
|
||||
messages: [],
|
||||
keys: [],
|
||||
filePath: removePathPrefix(file.path, file.cwd)
|
||||
};
|
||||
let nodeCallback = (locId, locHint, node) => {
|
||||
let subNodeCount = 0;
|
||||
let text = "";
|
||||
node.childNodes.forEach((childNode) => {
|
||||
if (childNode.nodeName == "#text") {
|
||||
text += childNode.value;
|
||||
} else {
|
||||
text += `{${subNodeCount++}}`;
|
||||
}
|
||||
});
|
||||
localizationJsonContents[locId] = text;
|
||||
localizationMetadataContents.keys.push(locHint ? { key: locId, comment: [locHint] } : locId);
|
||||
localizationMetadataContents.messages.push(text);
|
||||
};
|
||||
let attributeCallback = (locId, locHint, attribute) => {
|
||||
localizationJsonContents[locId] = attribute.value;
|
||||
localizationMetadataContents.keys.push(locHint ? { key: locId, comment: [locHint] } : locId);
|
||||
localizationMetadataContents.messages.push(attribute.value);
|
||||
};
|
||||
traverseHtml(file.contents.toString(), nodeCallback, attributeCallback, false);
|
||||
this.queue(new vinyl({
|
||||
path: path.join(file.path + '.nls.json'),
|
||||
contents: Buffer.from(JSON.stringify(localizationJsonContents, null, '\t'), 'utf8')
|
||||
}));
|
||||
this.queue(new vinyl({
|
||||
path: path.join(file.path + '.nls.metadata.json'),
|
||||
contents: Buffer.from(JSON.stringify(localizationMetadataContents, null, '\t'), 'utf8')
|
||||
}));
|
||||
});
|
||||
};
|
||||
|
||||
// descriptionCallback(path, value, parent) is invoked for attributes
|
||||
const traverseJson = (jsonTree, descriptionCallback, prefixPath) => {
|
||||
for (let fieldName in jsonTree) {
|
||||
@@ -136,107 +181,74 @@ const traverseJson = (jsonTree, descriptionCallback, prefixPath) => {
|
||||
}
|
||||
};
|
||||
|
||||
// ****************************
|
||||
// @vscode/l10n-dev helpers
|
||||
//
|
||||
// Localization is built around VS Code's l10n support (vscode.l10n.t at runtime and the
|
||||
// "l10n" field in package.json). The helpers below collect the English strings from each
|
||||
// source kind into the @vscode/l10n-dev "l10n JSON" format ({ key: string | { message, comment } }).
|
||||
// The XLF round-trip (translations-export / translations-import) targets the same Microsoft
|
||||
// localization (MLCP) pipeline that vscode-nls-dev previously fed.
|
||||
// ****************************
|
||||
|
||||
// Collect TS source strings (vscode.l10n.t call sites) as a single l10n JSON object.
|
||||
const collectSourceL10n = async () => {
|
||||
const files = await fastGlob('src/**/*.ts', { cwd: __dirname });
|
||||
const fileContents = files.map((relativePath) => ({
|
||||
extension: '.ts',
|
||||
contents: fs.readFileSync(path.join(__dirname, relativePath)).toString()
|
||||
}));
|
||||
return getL10nJson(fileContents);
|
||||
};
|
||||
|
||||
// Collect HTML strings (data-loc-id attributes) as one l10n JSON section per file.
|
||||
// Returns [{ name, contents }] where name is the relative file path (used as the XLF unit name).
|
||||
const collectHtmlL10n = () => {
|
||||
const results = [];
|
||||
const files = fastGlob.sync([...htmlFilesPatterns, ...walkthroughHtmlFilesPatterns], { cwd: __dirname });
|
||||
for (const relativePath of files) {
|
||||
const fileContents = fs.readFileSync(path.join(__dirname, relativePath)).toString();
|
||||
const contents = {};
|
||||
const nodeCallback = (locId, locHint, node) => {
|
||||
let subNodeCount = 0;
|
||||
let text = "";
|
||||
node.childNodes.forEach((childNode) => {
|
||||
if (childNode.nodeName == "#text") {
|
||||
text += childNode.value;
|
||||
} else {
|
||||
text += `{${subNodeCount++}}`;
|
||||
}
|
||||
});
|
||||
contents[locId] = locHint ? { message: text, comment: [locHint] } : text;
|
||||
// Traverses schema json files looking for "description" fields to localized.
|
||||
// The path to the "description" field is used to create a localization key.
|
||||
const processJsonSchemaFiles = () => {
|
||||
return es.through(function (file) {
|
||||
let jsonTree = JSON.parse(file.contents.toString());
|
||||
let localizationJsonContents = {};
|
||||
let filePath = removePathPrefix(file.path, file.cwd);
|
||||
let localizationMetadataContents = {
|
||||
messages: [],
|
||||
keys: [],
|
||||
filePath: filePath
|
||||
};
|
||||
const attributeCallback = (locId, locHint, attribute) => {
|
||||
contents[locId] = locHint ? { message: attribute.value, comment: [locHint] } : attribute.value;
|
||||
};
|
||||
traverseHtml(fileContents, nodeCallback, attributeCallback, false);
|
||||
if (Object.keys(contents).length > 0) {
|
||||
results.push({ name: relativePath.replace(/\\/g, '/'), contents });
|
||||
}
|
||||
}
|
||||
return results;
|
||||
};
|
||||
|
||||
// Collect JSON schema description strings as one l10n JSON section per file.
|
||||
const collectJsonSchemaL10n = () => {
|
||||
const results = [];
|
||||
const files = fastGlob.sync(jsonSchemaFilesPatterns, { cwd: __dirname });
|
||||
for (const relativePath of files) {
|
||||
const jsonTree = JSON.parse(fs.readFileSync(path.join(__dirname, relativePath)).toString());
|
||||
const filePath = relativePath.replace(/\\/g, '/');
|
||||
const contents = {};
|
||||
const descriptionCallback = (descPath, value, parent) => {
|
||||
const locId = filePath + "." + descPath;
|
||||
contents[locId] = parent.descriptionHint ? { message: value, comment: [parent.descriptionHint] } : value;
|
||||
let descriptionCallback = (path, value, parent) => {
|
||||
let locId = filePath + "." + path;
|
||||
let locHint = parent.descriptionHint;
|
||||
localizationJsonContents[locId] = value;
|
||||
localizationMetadataContents.keys.push(locHint ? { key: locId, comment: [locHint] } : locId);
|
||||
localizationMetadataContents.messages.push(value);
|
||||
};
|
||||
traverseJson(jsonTree, descriptionCallback, "");
|
||||
if (Object.keys(contents).length > 0) {
|
||||
results.push({ name: filePath, contents });
|
||||
}
|
||||
}
|
||||
return results;
|
||||
this.queue(new vinyl({
|
||||
path: path.join(file.path + '.nls.json'),
|
||||
contents: Buffer.from(JSON.stringify(localizationJsonContents, null, '\t'), 'utf8')
|
||||
}));
|
||||
this.queue(new vinyl({
|
||||
path: path.join(file.path + '.nls.metadata.json'),
|
||||
contents: Buffer.from(JSON.stringify(localizationMetadataContents, null, '\t'), 'utf8')
|
||||
}));
|
||||
});
|
||||
};
|
||||
|
||||
// Maps an imported XLF unit name back to the i18n file it should be written to.
|
||||
const importedSectionToI18nPath = (folderName, name) => {
|
||||
if (name === 'bundle') {
|
||||
return path.join('i18n', folderName, 'bundle.l10n.json');
|
||||
}
|
||||
if (name === 'package') {
|
||||
return path.join('i18n', folderName, 'package.i18n.json');
|
||||
}
|
||||
// HTML / JSON schema sections are keyed by their relative source path.
|
||||
return path.join('i18n', folderName, name + '.i18n.json');
|
||||
};
|
||||
gulp.task("translations-export", (done) => {
|
||||
|
||||
gulp.task("translations-export", async () => {
|
||||
// Build a single XLF containing every English string: TS source, package.json, HTML, and JSON schema.
|
||||
const l10nContents = new Map();
|
||||
l10nContents.set('bundle', await collectSourceL10n());
|
||||
l10nContents.set('package', JSON.parse(fs.readFileSync(path.join(__dirname, 'package.nls.json')).toString()));
|
||||
for (const { name, contents } of collectHtmlL10n()) {
|
||||
l10nContents.set(name, contents);
|
||||
}
|
||||
for (const { name, contents } of collectJsonSchemaL10n()) {
|
||||
l10nContents.set(name, contents);
|
||||
}
|
||||
// Transpile the TS to JS, and let vscode-nls-dev scan the files for calls to localize.
|
||||
let jsStream = tsProject.src()
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(tsProject()).js
|
||||
.pipe(nls.createMetaDataFiles());
|
||||
|
||||
const xlf = getL10nXlf(l10nContents);
|
||||
// Match the layout the loc handoff/upload path expects (and that translations-import reads back):
|
||||
// ../vscode-extensions-localization-export/<project>/<extension>.xlf
|
||||
const exportDir = path.join(__dirname, "..", `${translationProjectName}-localization-export`, translationProjectName);
|
||||
fs.mkdirSync(exportDir, { recursive: true });
|
||||
fs.writeFileSync(path.join(exportDir, `${translationExtensionName}.xlf`), xlf);
|
||||
// Scan html files for tags with the data-loc-id attribute
|
||||
let htmlStream = gulp.src([...htmlFilesPatterns, ...walkthroughHtmlFilesPatterns])
|
||||
.pipe(processHtmlFiles());
|
||||
|
||||
let jsonSchemaStream = gulp.src(jsonSchemaFilesPatterns)
|
||||
.pipe(processJsonSchemaFiles());
|
||||
|
||||
// Merge files from all source streams
|
||||
es.merge(jsStream, htmlStream, jsonSchemaStream)
|
||||
|
||||
// Filter down to only the files we need
|
||||
.pipe(filter(['**/*.nls.json', '**/*.nls.metadata.json']))
|
||||
|
||||
// Consoldate them into nls.metadata.json, which the xlf is built from.
|
||||
.pipe(nls.bundleMetaDataFiles('ms-vscode.cpptools', '.'))
|
||||
|
||||
// filter down to just the resulting metadata files
|
||||
.pipe(filter(['**/nls.metadata.header.json', '**/nls.metadata.json']))
|
||||
|
||||
// Add package.nls.json, used to localized package.json
|
||||
.pipe(gulp.src(["package.nls.json"]))
|
||||
|
||||
// package.nls.json and nls.metadata.json are used to generate the xlf file
|
||||
// Does not re-queue any files to the stream. Outputs only the XLF file
|
||||
.pipe(nls.createXlfFiles(translationProjectName, translationExtensionName))
|
||||
.pipe(gulp.dest(path.join("..", `${translationProjectName}-localization-export`)))
|
||||
.pipe(es.wait(() => {
|
||||
done();
|
||||
}));
|
||||
});
|
||||
|
||||
|
||||
@@ -247,27 +259,35 @@ gulp.task("translations-export", async () => {
|
||||
// ****************************
|
||||
|
||||
// Imports translations from raw localized MLCP strings to VS Code .i18n.json files
|
||||
gulp.task("translations-import", async () => {
|
||||
const options = minimist(process.argv.slice(2), {
|
||||
gulp.task("translations-import", (done) => {
|
||||
let options = minimist(process.argv.slice(2), {
|
||||
string: "location",
|
||||
default: {
|
||||
location: "../vscode-translations-import"
|
||||
}
|
||||
});
|
||||
for (const language of languages) {
|
||||
const id = language.transifexId || language.id;
|
||||
const xlfPath = path.join(options.location, id, translationProjectName, `${translationExtensionName}.xlf`);
|
||||
if (!fs.existsSync(xlfPath)) {
|
||||
continue;
|
||||
}
|
||||
const importedFiles = await getL10nFilesFromXlf(fs.readFileSync(xlfPath).toString());
|
||||
for (const importedFile of importedFiles) {
|
||||
// importedFile.name is the XLF unit name we assigned during export.
|
||||
const outputPath = path.join(__dirname, importedSectionToI18nPath(language.folderName, importedFile.name));
|
||||
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
||||
fs.writeFileSync(outputPath, JSON.stringify(importedFile.messages, null, '\t'));
|
||||
}
|
||||
}
|
||||
es.merge(languages.map((language) => {
|
||||
let id = language.transifexId || language.id;
|
||||
return gulp.src(path.join(options.location, id, translationProjectName, `${translationExtensionName}.xlf`))
|
||||
.pipe(nls.prepareJsonFiles())
|
||||
.pipe(es.map((file, cb) => {
|
||||
// vscode-nls-dev emits .i18n.json files without a trailing newline. Append one so the
|
||||
// checked-in files match the repo convention (files.insertFinalNewline for [json]) and
|
||||
// don't produce churn the next time they're opened and saved in VS Code.
|
||||
if (file.isBuffer()) {
|
||||
const contents = file.contents;
|
||||
if (contents.length > 0 && contents[contents.length - 1] !== 0x0A) {
|
||||
file.contents = Buffer.concat([contents, Buffer.from("\n")]);
|
||||
}
|
||||
}
|
||||
cb(null, file);
|
||||
}))
|
||||
.pipe(gulp.dest(path.join("./i18n", language.folderName)))
|
||||
.pipe(es.wait()); // This is required or it gives `this.pipeTo.end is not a function`.
|
||||
}))
|
||||
.pipe(es.wait(() => {
|
||||
done();
|
||||
}));
|
||||
});
|
||||
|
||||
// ****************************
|
||||
@@ -277,37 +297,25 @@ gulp.task("translations-import", async () => {
|
||||
|
||||
// Generate package.nls.*.json files from: ./i18n/*/package.i18n.json
|
||||
// Outputs to root path, as these nls files need to be along side package.json
|
||||
const generateAdditionalLocFiles = async () => {
|
||||
const englishPackage = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.nls.json')).toString());
|
||||
for (const language of languages) {
|
||||
const i18nPackage = path.join(__dirname, 'i18n', language.folderName, 'package.i18n.json');
|
||||
if (!fs.existsSync(i18nPackage)) {
|
||||
continue;
|
||||
}
|
||||
const translated = jsonc.parse(fs.readFileSync(i18nPackage).toString());
|
||||
// Start from the English strings so any untranslated keys fall back to English.
|
||||
const merged = { ...englishPackage, ...translated };
|
||||
fs.writeFileSync(path.join(__dirname, `package.nls.${language.id}.json`), JSON.stringify(merged, null, '\t'));
|
||||
}
|
||||
const generateAdditionalLocFiles = () => {
|
||||
return gulp.src(['package.nls.json'])
|
||||
.pipe(nls.createAdditionalLanguageFiles(languages, 'i18n'))
|
||||
.pipe(gulp.dest('.'));
|
||||
};
|
||||
|
||||
// Generates ./l10n/bundle.l10n.json (English) and ./l10n/bundle.l10n.<language_id>.json.
|
||||
// VS Code loads these at runtime based on the "l10n" field in package.json.
|
||||
const generateSrcLocBundle = async () => {
|
||||
const l10nDir = path.join(__dirname, 'l10n');
|
||||
fs.mkdirSync(l10nDir, { recursive: true });
|
||||
|
||||
// English bundle, extracted from the vscode.l10n.t call sites.
|
||||
const englishBundle = await collectSourceL10n();
|
||||
fs.writeFileSync(path.join(l10nDir, 'bundle.l10n.json'), JSON.stringify(englishBundle, null, '\t'));
|
||||
|
||||
// Per-language bundles, copied from the translated bundles produced by translations-import.
|
||||
for (const language of languages) {
|
||||
const translatedBundle = path.join(__dirname, 'i18n', language.folderName, 'bundle.l10n.json');
|
||||
if (fs.existsSync(translatedBundle)) {
|
||||
fs.copyFileSync(translatedBundle, path.join(l10nDir, `bundle.l10n.${language.id}.json`));
|
||||
}
|
||||
}
|
||||
// Generates ./dist/nls.bundle.<language_id>.json from files in ./i18n/** *//<src_path>/<filename>.i18n.json
|
||||
// Localized strings are read from these files at runtime.
|
||||
const generateSrcLocBundle = () => {
|
||||
// Transpile the TS to JS, and let vscode-nls-dev scan the files for calls to localize.
|
||||
return tsProject.src()
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(tsProject()).js
|
||||
.pipe(nls.createMetaDataFiles())
|
||||
.pipe(nls.createAdditionalLanguageFiles(languages, "i18n"))
|
||||
.pipe(nls.bundleMetaDataFiles('ms-vscode.cpptools', 'dist'))
|
||||
.pipe(nls.bundleLanguageFiles())
|
||||
.pipe(filter(['**/nls.bundle.*.json', '**/nls.metadata.header.json', '**/nls.metadata.json']))
|
||||
.pipe(gulp.dest('dist'));
|
||||
};
|
||||
|
||||
const generateLocalizedHtmlFilesImpl = (file, relativePath, language, isFragment) => {
|
||||
|
||||
@@ -18,4 +18,4 @@
|
||||
"reinstall.extension.text7": "然后通过 VS Code 中的市场 UI 重新安装。",
|
||||
"reinstall.extension.text8": "如果 VS Code 无法部署扩展的正确版本,则可以 {0} 并使用 VS Code 中市场 UI 内 \"...\" 菜单下的 \"从 VSIX... 安装\" 选项安装系统的正确 VSIX。",
|
||||
"download.vsix.link.title": "已从 VS Code 市场网站下载"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,745 +0,0 @@
|
||||
{
|
||||
"Failed to parse json file, possibly due to comments or trailing commas.": "未能分析 json 文件,可能是因注释或尾部逗号所致。",
|
||||
"The C/C++ extension is still installing. See the output window for more information.": "C/C++ 扩展仍在安装。请查看输出窗口获取详细信息。",
|
||||
"Please refer to {0} for troubleshooting information. Issues can be created at {1}": "请参阅 {0} 了解疑难解答信息。可在 {1} 处创建问题",
|
||||
"Process exited with code {0}": "已退出进程,代码为 {0}",
|
||||
"Process executed successfully.": "已成功执行进程。",
|
||||
"Killing process {0}": "正在终止进程 {0}",
|
||||
"Warning: Expected file {0} is missing.": "警告: 缺少预期的文件 {0}。",
|
||||
"Warning: Debugging has not been tested for this platform.": "警告: 尚未为此平台测试调试。",
|
||||
"Reload the workspace for the settings change to take effect.": "重新加载工作区以使设置更改生效。",
|
||||
"Reload": "重新加载",
|
||||
"Custom configuration provider '{0}' registered": "已注册自定义配置提供程序“{0}”",
|
||||
"Reached max string expansion recursion. Possible circular reference.": "已达到最大字符串扩展递归。可能存在循环引用。",
|
||||
"Invalid variable reference {0} in string: {1}.": "字符串: {1} 中的变量引用 {0} 无效。",
|
||||
"Environment variable {0} not found": "找不到环境变量 {0}",
|
||||
"Commands are not supported for string: {0}.": "字符串: {0} 不支持命令。",
|
||||
"Exception while executing command {0} for string: {1} {2}.": "执行字符串: {1} {2} 的命令 {0} 时出现异常。",
|
||||
"C/C++ Diagnostics": "C/C++ 诊断",
|
||||
"C/C++ Crash Call Stacks": "C/C++ 故障调用堆栈",
|
||||
"A C/C++ extension process has crashed. The crashing process name, date/time, signal, and call stack are below -- it would be helpful to include that in a bug report at {0}./{0} is a URL.": "C/C++ 扩展进程已崩溃。崩溃进程名称、日期/时间、信号和调用堆栈如下 - 将它包含在 {0} 处的 bug 报告中会很有帮助。",
|
||||
"{0}: SSH": "{0}: SSH",
|
||||
"C/C++ Debug Protocol": "C/C++ 调试协议",
|
||||
"C/C++ Configuration Warnings": "C/C++ 配置警告",
|
||||
"Versions of the C/C++ extension more recent than {0} require at least macOS version {1}.": "C/C++ 扩展的版本比 {0} 更新的版本至少需要 macOS 版本 {1}。",
|
||||
"intelliSenseEngine is disabled": "已禁用 intelliSenseEngine",
|
||||
"More Info": "详细信息",
|
||||
"Ignore": "忽略",
|
||||
"The C/C++ extension installed does not match your system.": "已安装的 C/C++ 扩展与系统不匹配。",
|
||||
"The C/C++ extension installed is compatible with but does not match your system.": "已安装的 C/C++ 扩展与系统兼容,但与系统不匹配。",
|
||||
"Searching include path...": "正在搜索包含路径...",
|
||||
"Include file not found in browse.path.": "在 browse.path 中未找到包含文件。",
|
||||
"Edit \"browse.path\" setting": "编辑 \"browse.path\" 设置",
|
||||
"Add to \"includePath\": {0}": "添加到 \"includePath\": {0}",
|
||||
"Add '{0}'/{0} is C++ code to add, such as '#include <string>'": "添加“{0}”",
|
||||
"Edit \"includePath\" setting": "编辑 \"includePath\" 设置",
|
||||
"Disable error squiggles": "禁用错误波形曲线",
|
||||
"Enable all error squiggles": "启用所有错误波形曲线",
|
||||
"#include errors detected. Please update your includePath. Squiggles are disabled for this translation unit ({0}).": "检测到 #include 错误。请更新 includePath。已为此翻译单元({0})禁用波形曲线。",
|
||||
"#include errors detected. Please update your includePath. IntelliSense features for this translation unit ({0}) will be provided by the Tag Parser.": "检测到 #include 错误。请更新 includePath。此翻译单元({0})的 IntelliSense 功能将由标记分析器提供。",
|
||||
"#include errors detected. Consider updating your compile_commands.json or includePath. IntelliSense features for this translation unit ({0}) will be provided by the Tag Parser.": "检测到 #include 错误。请考虑更新 compile_commands.json 或 includePath。此翻译单元({0})的 IntelliSense 功能将由标记分析器提供。",
|
||||
"\"{0}\" could not be parsed. 'includePath' from c_cpp_properties.json in folder '{1}' will be used instead.": "无法分析“{0}”。将改用来自文件夹“{1}”中的 c_cpp_properties.json 的 \"includePath\"。",
|
||||
"\"{0}\" could not be found. 'includePath' from c_cpp_properties.json in folder '{1}' will be used instead.": "找不到“{0}”。将改用文件夹“{1}”中来自 c_cpp_properties.json 的 \"includePath\"。",
|
||||
"\"{0}\" not found in \"{1}\". 'includePath' from c_cpp_properties.json in folder '{2}' will be used for this file instead.": "在“{1}”中未找到“{0}”。此文件将改用文件夹“{2}”中来自 c_cpp_properties.json 的 \"includePath\"。",
|
||||
"The IntelliSense database was successfully reset.": "已成功重置 IntelliSense 数据库。",
|
||||
"Failed to send response to client: {0}": "未能将响应发送到客户端: {0}",
|
||||
"Failed to read response from server: {0}": "未能从服务器读取响应: {0}",
|
||||
"Failed to send request to server: {0}": "未能将请求发送到服务器: {0}",
|
||||
"Unexpected error while waiting for requests: {0}": "等待请求时出现意外错误: {0}",
|
||||
"{0} errored with: {1}": "{0} 出错: {1}",
|
||||
"Failed to open the file {0}": "未能打开文件 {0}",
|
||||
"Failed to query default include paths and defines for {0}.": "未能查询 {0} 的默认包含路径和定义。",
|
||||
"Failed calling {0}": "未能调用 {0}",
|
||||
"Quick info operation failed: {0}": "快速信息操作失败: {0}",
|
||||
"Failed to create IntelliSense client: {0}": "未能创建 IntelliSense 客户端: {0}",
|
||||
"Failed to spawn IntelliSense process: {0}": "未能生成 IntelliSense 进程: {0}",
|
||||
"Error calling browse_engine_update_thread.join(): {0}": "调用 browse_engine_update_thread.join() 时出错: {0}",
|
||||
"This file ({0}) is already opened in the editor but with a different casing. IntelliSense features will be disabled on this copy of the file.": "此文件({0})已在编辑器中打开,但大小写不同。将对此文件的副本禁用 IntelliSense 功能。",
|
||||
"IntelliSense client has disconnected from the server - {0}": "IntelliSense 客户端已与服务器断开连接 - {0}",
|
||||
"Formatting failed:": "格式化失败:",
|
||||
"Unable to add file to database, error = {0}: {1}": "无法将文件添加到数据库,错误 = {0}: {1}",
|
||||
"Failed to reset timestamp during abort, error = {0}: {1}": "未能在中止期间重置时间戳,错误 = {0}: {1}",
|
||||
"Unable to update timestamp, error = {0}: {1}": "无法更新时间戳,错误 = {0}: {1}",
|
||||
"Unable to finalize updates for file, error = {0}: {1}": "无法完成文件的更新,错误 = {0}: {1}",
|
||||
"{0} is not a directory (st_mode={1})": "{0} 不是目录(st_mode={1})",
|
||||
"Unable to retrieve file system information for {0}. error = {1}": "无法检索 {0} 的文件系统信息。错误 = {1}",
|
||||
"{0} is not a directory": "{0} 不是目录",
|
||||
"File discovery was aborted": "已中止文件发现",
|
||||
"Aborting tag parse of {0} and dependencies": "正在中止 {0} 和依赖项的标记分析",
|
||||
"Aborting tag parse at root": "正在终止根位置的标记分析",
|
||||
"Unable to retrieve DB records to reset timestamps: error = {0}": "无法检索数据库记录以重置时间戳: 错误 = {0}",
|
||||
"Failed to reset timestamp for {0}: error = {1}": "未能为 {0} 重置时间戳: 错误 = {1}",
|
||||
"No suitable compiler found. Please set the \"compilerPath\" in c_cpp_properties.json.": "未找到合适的编译器。请在 c_cpp_properties.json 中设置 \"compilerPath\"。",
|
||||
"Compiler include path not found: {0}": "未找到编译器包含路径: {0}",
|
||||
"IntelliSense engine is not responding. Using the Tag Parser instead.": "IntelliSense 引擎未响应。改为使用标记分析器。",
|
||||
"Tag Parser will be used for IntelliSense operations in: {0}": "标记分析器将用于以下项中的 IntelliSense 操作: {0}",
|
||||
"Error squiggles will be disabled in: {0}": "将在以下项中禁用错误波形曲线: {0}",
|
||||
"Processing folder (non-recursive): {0}": "正在处理文件夹(非递归): {0}",
|
||||
"Processing folder (recursive): {0}": "正在处理文件夹(递归): {0}",
|
||||
"File exclude: {0}": "文件排除: {0}",
|
||||
"Search exclude: {0}": "搜索排除: {0}",
|
||||
"Discovering files: {0} file(s) processed": "正在发现文件: 已处理 {0} 个文件",
|
||||
"{0} file(s) removed from database": "已从数据库中删除 {0} 个文件",
|
||||
"Parsing: {0} files(s) processed": "正在分析: 已处理 {0} 个文件",
|
||||
"Shutting down IntelliSense server: {0}": "正在关闭 IntelliSense 服务器: {0}",
|
||||
"Resetting IntelliSense server: {0}": "正在重置 IntelliSense 服务器: {0}",
|
||||
"Code browsing service initialized": "已初始化代码浏览服务",
|
||||
"Folder: {0} will be indexed": "文件夹 {0} 将编入索引",
|
||||
"Populate include completion cache.": "填充包含完成缓存。",
|
||||
"Discovering files...": "正在发现文件...",
|
||||
"Done discovering files.": "“发现文件”操作已完成。",
|
||||
"Parsing open files...": "正在分析打开的文件...",
|
||||
"Done parsing open files.": "“分析打开的文件”操作已完成。",
|
||||
"Parsing remaining files...": "正在分析剩余的文件...",
|
||||
"Done parsing remaining files.": "“分析剩余文件”操作已完成。",
|
||||
"Using configuration: \"{0}\"": "使用配置:“{0}”",
|
||||
"{0} include path suggestion(s) discovered.": "已发现 {0} 个包含路径建议。",
|
||||
"Checking for syntax errors: {0}": "正在检查语法错误: {0}",
|
||||
"IntelliSense Engine = {0}.": "IntelliSense 引擎 = {0}。",
|
||||
"The extension will use the Tag Parser for IntelliSense when #includes don't resolve.": "当 #includes 不解析时,扩展将为 IntelliSense 使用标记分析器。",
|
||||
"Autocomplete is enabled.": "已启用自动完成。",
|
||||
"Autocomplete is disabled.": "已禁用自动完成。",
|
||||
"Hover is enabled.": "悬停已启用。",
|
||||
"Hover is disabled.": "悬停已禁用。",
|
||||
"Enhanced Colorization is enabled.": "已启用增强的着色。",
|
||||
"Error squiggles are disabled.": "已禁用错误波形曲线。",
|
||||
"Error squiggles are enabled.": "已启用错误波形曲线。",
|
||||
"Error squiggles are enabled if all header dependencies are resolved.": "如果已解决所有标头依赖项,则启用错误波形曲线。",
|
||||
"Replaced placeholder file record": "已替换占位符文件记录",
|
||||
"tag parsing file: {0}": "标记分析文件: {0}",
|
||||
"tag parsing error (this can be ignored unless symbols can't be found):": "标记分析错误(除非找不到符号,否则可以忽略此错误):",
|
||||
"Reset time stamp for {0}": "重置 {0} 的时间戳",
|
||||
"Failed to remove file: {0}": "未能删除文件: {0}",
|
||||
"Regex parse error - vscode pattern: {0}, regex: {1}, error message: {2}": "Regex 分析错误 - vscode 模式: {0},regex: {1},错误消息: {2}",
|
||||
"terminating child process: {0}": "正在终止子进程: {0}",
|
||||
"still alive, killing...": "仍处于活动状态,正在中止...",
|
||||
"giving up": "放弃",
|
||||
"not exited yet. Will sleep for {0} milliseconds and try again.": "尚未退出。将休眠 {0} 毫秒,然后重试。",
|
||||
"Failed to spawn process. Error: {0} ({1})": "未能生成进程。错误: {0}({1})",
|
||||
"Offering completion": "提供完成",
|
||||
"Attempting to get defaults from compiler found on the machine: '{0}'": "正在尝试从计算机上找到的编译器获取默认值:“{0}”",
|
||||
"Unable to resolve include path: {0}": "无法解析包含路径: {0}",
|
||||
"Error searching for IntelliSense client: {0}": "搜索 IntelliSense 客户端时出错: {0}",
|
||||
"IntelliSense client not available, using Tag Parser for quick info.": "IntelliSense 客户端不可用,请使用标记分析器获取快速信息。",
|
||||
"using Tag Parser for quick info": "使用标记分析器获取快速信息",
|
||||
"Closing the communication channel.": "正在关闭通信信道。",
|
||||
"sending compilation args for {0}": "正在为 {0} 发送编译参数",
|
||||
"include: {0}": "包括: {0}",
|
||||
"framework: {0}": "框架: {0}",
|
||||
"define: {0}": "定义: {0}",
|
||||
"preinclude: {0}": "预包含: {0}",
|
||||
"other: {0}": "其他: {0}",
|
||||
"sending {0} changes to server": "正在向服务器发送 {0} 项更改",
|
||||
"Invalid opened file instance. Ignoring IntelliSense message for file {0}.": "打开的文件实例无效。忽略文件 {0} 的 IntelliSense 消息。",
|
||||
"idle loop: reparsing the active document": "空闲环路: 重新分析活动文档",
|
||||
"IntelliSense client is currently disconnected": "IntelliSense 客户端当前已断开连接",
|
||||
"Request canceled: {0}": "已取消请求: {0}",
|
||||
"IntelliSense client not available, using Tag Parser for go to definition.": "IntelliSense 客户端不可用,请使用标记分析器转到定义。",
|
||||
"Error squiggle count: {0}": "错误波形曲线计数: {0}",
|
||||
"Queueing IntelliSense update for files in translation unit of: {0}": "正在为以下项的翻译单元中文件的 IntelliSense 更新进行排队: {0}",
|
||||
"Formatting document: {0}": "正在格式化文档: {0}",
|
||||
"Formatting input:": "正在格式化输入:",
|
||||
"Formatting raw output:": "正在格式化原始输出:",
|
||||
"Formatting diffed output before cursor:": "正在格式化游标前执行了 dif 操作的输出:",
|
||||
"Formatting diffed output after cursor:": "正在格式化游标后执行了 dif 操作的输出:",
|
||||
"Formatting diffed output:": "正在格式化执行了 dif 操作的输出:",
|
||||
"Disable inactive region colorization": "禁用非活动区域着色",
|
||||
"Error limit exceeded, {0} error(s) not reported.": "已超出错误限额,{0} 个错误未报告。",
|
||||
"#include errors detected. Consider updating your compile_commands.json or includePath. Squiggles are disabled for this translation unit ({0}).": "检测到 #include 错误。请考虑更新 compile_commands.json 或 includePath。已为此翻译单元({0})禁用波形曲线。",
|
||||
"The IntelliSense database could not be reset. To manually reset, close all VS Code instances and then delete this file: {0}": "无法重置 IntelliSense 数据库。若要手动重置,请关闭所有 VS Code 实例,然后删除此文件: {0}",
|
||||
"Formatting failed. See the output window for details.": "格式化失败。请查看输出窗口获取详细信息。",
|
||||
"Populating include completion cache.": "正在填充包含完成缓存。",
|
||||
"Discovering files: {0}": "正在发现文件: {0}",
|
||||
"Parsing open files": "正在分析打开的文件",
|
||||
"Tag parser initializing": "标记分析器正在初始化",
|
||||
"Workspace parsing paused": "已暂停工作区分析",
|
||||
"Parsing workspace files: {0}": "正在分析工作区文件: {0}",
|
||||
"Discovering files: {0} / {1} ({2}%)": "正在发现文件: {0}/{1} ({2}%)",
|
||||
"Parsing workspace files: {0} / {1} ({2}%)": "正在分析工作区文件: {0} / {1} ({2}%)",
|
||||
"Can't find or run process_name": "找不到或无法运行 process_name",
|
||||
"Child exec failed {0}": "子 exec 失败 {0}",
|
||||
"Could not communicate with child process!": "无法与子进程通信!",
|
||||
"{0} failed": "{0} 个操作失败",
|
||||
"Failed to set {0} flag": "未能设置 {0} 标志",
|
||||
"Unable to create {0}!": "无法创建 {0}!",
|
||||
"Failed to set stdin {0} flag": "未能设置 stdin {0} 标志",
|
||||
"Failed to set stdout {0} flag": "未能设置 stdout {0} 标记",
|
||||
"Failed to set stderr {0} flag": "未能设置 stderr {0} 标志",
|
||||
"Unable to start child process!": "无法启动子进程!",
|
||||
"Timed out attempting to communicate with process!": "尝试与进程通信时超时!",
|
||||
"Process has failed to run": "进程未能运行",
|
||||
"Specified compiler was not found: {0}": "未找到指定的编译器: {0}",
|
||||
"Config data invalid, {0}": "配置数据无效,{0}",
|
||||
"CMake executable not found at {0}": "在 {0} 找不到 CMake 可执行文件",
|
||||
"No args provider": "无参数提供程序",
|
||||
"Invalid file path {0}": "文件路径 {0} 无效",
|
||||
"Can't create IntelliSense client for {0}": "无法为 {0} 创建 IntelliSense 客户端",
|
||||
"declaration": "声明",
|
||||
"type alias": "类型别名",
|
||||
"Compiler does not support 64-bit. Falling back to 32-bit intelliSenseMode.": "编译器不支持 64 位。正在回退到 32 位 intelliSenseMode。",
|
||||
"Compiler does not support 32-bit. Falling back to 64-bit intelliSenseMode.": "编译器不支持 32 位。正在回退到 64 位 intelliSenseMode。",
|
||||
"Failed to query compiler. Falling back to 32-bit intelliSenseMode.": "未能查询编译器。正在回退到 32 位 intelliSenseMode。",
|
||||
"Failed to query compiler. Falling back to 64-bit intelliSenseMode.": "未能查询编译器。正在回退到 64 位 intelliSenseMode。",
|
||||
"Failed to query compiler. Falling back to no bitness.": "未能查询编译器。正在回退到无位数。",
|
||||
"IntelliSense client creation aborted: {0}": "已中止创建 IntelliSense 客户端: {0}",
|
||||
"#include errors detected based on information provided by the configurationProvider setting. IntelliSense features for this translation unit ({0}) will be provided by the Tag Parser.": "基于 configurationProvider 设置提供的信息检测到 #include 错误。此翻译单元({0})的 IntelliSense 功能将由标记分析器提供。",
|
||||
"#include errors detected based on information provided by the configurationProvider setting. Squiggles are disabled for this translation unit ({0}).": "基于 configurationProvider 设置提供的信息检测到 #include 错误。已针对此翻译单元({0})禁用波形曲线。",
|
||||
"preprocessor keyword/Refers to C/C++ processor keywords": "预处理器关键字",
|
||||
"C keyword": "C 关键字",
|
||||
"C++ keyword": "C++ 关键字",
|
||||
"+1 overload/Refers to 'overloaded' function in C++. This is part of a description indicating there is 1 additional overload of a specified function.": "还有 1 个重载",
|
||||
"+%d overloads/Refers to 'overloaded' functions in C++. This is part of a description indicating there are N additional overloads of a specified function. %d is replaced with that number.": "还有 %d 个重载",
|
||||
"+1 specialization/Refers to a C++ template specialization. This is part of a description indicating there is 1 additional specialization of a function.": "还有 1 个专业化",
|
||||
"+%d specializations/Refers to C++ template specializations. This is part of a description indicating there are N additional specializations of a function. %d is replaced with that number.": "还有 %d 个专业化",
|
||||
"Note: IntelliSense is not fully configured. Use the 'Select IntelliSense Configuration...' command to finish configuration.": "注意: 未完全配置 IntelliSense。使用“选择 IntelliSense 配置”命令完成配置。",
|
||||
"Select an IntelliSense configuration to locate system headers": "选择 IntelliSense 配置以查找系统标头",
|
||||
"Expands to:": "扩展到:",
|
||||
"Attention:": "注意:",
|
||||
"Author:": "作者:",
|
||||
"Authors:": "作者:",
|
||||
"Bug:": "Bug:",
|
||||
"Copyright:": "版权所有:",
|
||||
"Deprecated:": "已弃用:",
|
||||
"Date:": "日期:",
|
||||
"Details:": "详细信息:",
|
||||
"Exceptions:/This label is for describing the exceptions thrown by a function. Usage example: Exception: std::out_of_range parameter is out of range.": "异常:",
|
||||
"Invariant:": "不变量:",
|
||||
"File:": "文件:",
|
||||
"Note:": "备注:",
|
||||
"Parameters:": "参数:",
|
||||
"Precondition:": "前置条件:",
|
||||
"Postcondition:": "后置条件:",
|
||||
"Remark:": "注解:",
|
||||
"Remarks:": "注解:",
|
||||
"Result:": "结果:",
|
||||
"Return:": "返回:",
|
||||
"Returns:/This label is for the return value description for a function. Usage example: 'Returns: Area of a shape.'": "返回:",
|
||||
"See also:": "另请参阅:",
|
||||
"Since:": "开始日期:",
|
||||
"Template Parameters:": "模板参数:",
|
||||
"Test:": "测试:",
|
||||
"TODO:": "TODO:",
|
||||
"Version:": "版本:",
|
||||
"Warning:": "警告:",
|
||||
"Compiler query command line: {0}": "编译器查询命令行: {0}",
|
||||
"Attempting to get defaults from C compiler in \"compilerPath\" property: '{0}'": "正在尝试从 \"compilerPath\" 属性中的 C 编译器获取默认值:“{0}”",
|
||||
"Attempting to get defaults from C++ compiler in \"compilerPath\" property: '{0}'": "正在尝试从 \"compilerPath\" 属性中的 C++ 编译器获取默认值:“{0}”",
|
||||
"Attempting to get defaults from C compiler in compile_commands.json file: '{0}'": "正在尝试从 compile_commands.json 文件中的 C 编译器获取默认值:“{0}”",
|
||||
"Attempting to get defaults from C++ compiler in compile_commands.json file: '{0}'": "正在尝试从 compile_commands.json 文件中的 C++ 编译器获取默认值:“{0}”",
|
||||
"For C source files, IntelliSenseMode was changed from \"{0}\" to \"{1}\".": "对于 C 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”。",
|
||||
"For C++ source files, IntelliSenseMode was changed from \"{0}\" to \"{1}\".": "对于 C++ 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”。",
|
||||
"For C source files, the cStandard was changed from \"{0}\" to \"{1}\".": "对于 C 源文件,cStandard 已从“{0}”更改为“{1}”。",
|
||||
"For C++ source files, the cppStandard was changed from \"{0}\" to \"{1}\".": "对于 C++ 源文件,cppStandard 已从“{0}”更改为“{1}”。",
|
||||
"For C source files, IntelliSenseMode was changed from \"{0}\" to \"{1}\" and cStandard was changed from \"{2}\" to \"{3}\".": "对于 C 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”,cStandard 已从“{2}”更改为“{3}”。",
|
||||
"For C++ source files, IntelliSenseMode was changed from \"{0}\" to \"{1}\" and cppStandard changed from \"{2}\" to \"{3}\".": "对于 C++ 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”,cppStandard 已从“{2}”更改为“{3}”。",
|
||||
"For C source files, IntelliSenseMode was changed from \"{0}\" to \"{1}\" based on compiler args and querying compilerPath: \"{2}\"": "对于 C 源文件,IntelliSenseMode 已根据编译器参数和查询 compilerPath 从“{0}”更改为“{1}”:“{2}”",
|
||||
"For C++ source files, IntelliSenseMode was changed from \"{0}\" to \"{1}\" based on compiler args and querying compilerPath: \"{2}\"": "对于 C++ 源文件,IntelliSenseMode 已根据编译器参数和查询 compilerPath 从“{0}”更改为“{1}”:“{2}”",
|
||||
"For C source files, the cStandard was changed from \"{0}\" to \"{1}\" based on compiler args and querying compilerPath: \"{2}\"": "对于 C 源文件,cStandard 已根据编译器参数和查询 compilerPath 从“{0}”更改为“{1}”:“{2}”",
|
||||
"For C++ source files, the cppStandard was changed from \"{0}\" to \"{1}\" based on compiler args and querying compilerPath: \"{2}\"": "对于 C++ 源文件,cppStandard 已根据编译器参数和查询 compilerPath 从“{0}”更改为“{1}”:“{2}”",
|
||||
"For C source files, IntelliSenseMode was changed from \"{0}\" to \"{1}\" and cStandard was changed from \"{2}\" to \"{3}\" based on compiler args and querying compilerPath: \"{4}\"": "对于 C 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”,cStandard 已根据编译器参数和查询 compilerPath 从“{2}”更改为“{3}”:“{4}”",
|
||||
"For C++ source files, IntelliSenseMode was changed from \"{0}\" to \"{1}\" and cppStandard changed from \"{2}\" to \"{3}\" based on compiler args and querying compilerPath: \"{4}\"": "对于 C++ 源文件,IntelliSenseMode 已从“{0}”更改为“{1}”,cppStandard 已根据编译器参数和查询 compilerPath 从“{2}”更改为“{3}”:“{4}”",
|
||||
"Unable to resolve configuration with compilerPath \"{0}\". Using \"{1}\" instead.": "无法使用 compilerPath“{0}”解析配置。 请改用“{1}”。",
|
||||
"Unable to resolve configuration with compilerPath: \"{0}\"": "无法使用 compilerPath 解析配置:“{0}”",
|
||||
"Skipping query of compiler due to explicitly empty compilerPath": "由于 compilerPath 明确为空,因此正在跳过对编译器的查询",
|
||||
"MSVC intelliSenseMode specified. Configuring for compiler cl.exe.": "已指定 MSVC intelliSenseMode。正在针对编译器 cl.exe 进行配置。",
|
||||
"Unable to configure for compiler cl.exe.": "无法针对编译器 cl.exe 进行配置。",
|
||||
"Querying compiler's default target using command line: \"{0}\" {1}": "正在使用命令行查询编译器的目标:“{0}”{1}",
|
||||
"Compiler returned default target value: {0}": "编译器返回的默认目标值: {0}",
|
||||
"Querying compiler for default C language standard using command line: {0}": "正在使用命令行查询默认 C 语言标准的编译器: {0}",
|
||||
"Querying compiler for default C++ language standard using command line: {0}": "正在使用命令行查询默认 C++ 语言标准的编译器: {0}",
|
||||
"Detected language standard version: {0}": "检测到的语言标准版本: {0}",
|
||||
"Unhandled default compiler target value detected: {0}": "检测到未处理的默认编译器目标值: {0}",
|
||||
"Unhandled target argument value detected: {0}": "检测到未处理的目标参数值: {0}",
|
||||
"Shutting down IntelliSense server: {0}. Memory usage is {1} MB and has exceeded the {2} MB limit.": "正在关闭 IntelliSense 服务器: {0}。内存使用量为 {1} MB,已超过 {2} MB 的限制。",
|
||||
"Failed to query compiler at path \"{0}\" for default standard versions. Compiler querying is disabled for this compiler.": "未能在路径 \"{0}\" 处查询编译器以获得默认标准版本。已对此编译器禁用编译器查询。",
|
||||
"Compiler query returned an unrecognized language standard version. The latest supported version will be used instead.": "编译器查询返回了无法识别的语言标准版本。将改用受支持的最新版本。",
|
||||
"IntelliSense process crash detected.": "检测到 IntelliSense 进程崩溃。",
|
||||
"IntelliSense process crash detected: {0}/`{0}` will be substituted with `<feature name>`.": "检测到 IntelliSense 进程崩溃: {0}",
|
||||
"Return values:/This label is for the return values description for a function. Usage example: 'Return values: 1 if key is found. 2 if input can't be read. 3 if input is empty.'": "返回值:",
|
||||
"Unable to locate nvcc compiler: {0}": "找不到 nvcc 编译器: {0}",
|
||||
"Unable to locate nvcc host compiler: {0}": "找不到 nvcc 主机编译器: {0}",
|
||||
"Invoking nvcc with command line: {0}": "正在使用命令行调用 nvcc: {0}",
|
||||
"Unable to find host compile command in output of nvcc.": "在 nvcc 的输出中找不到主机编译命令。",
|
||||
"Unable to locate forced include: {0}": "找不到 forced include: {0}",
|
||||
"Inline macro/'Inline' is a command and not an adjective, i.e. like 'Expand macro'.": "内联宏",
|
||||
"Unable to access browse database. ({0})": "无法访问浏览数据库。({0})",
|
||||
"IntelliSenseMode was changed because it didn't match the detected compiler. Consider setting \"compilerPath\" instead. Set \"compilerPath\" to \"\" to disable detection of system includes and defines.": "IntelliSenseMode 已更改,因为它与检测到的编译器不匹配。请考虑改为设置 \"compilerPath\"。将 \"compilerPath\" 设为 \"\" 以禁用系统包含和定义的检测。",
|
||||
"Remove all code analysis problems": "删除所有代码分析问题",
|
||||
"(Multiple locations)": "(多个位置)",
|
||||
"Folder": "文件夹",
|
||||
"File": "文件",
|
||||
"Compiler returned default language standard version: {0}. Since this version is old, will try to use newer version {1} as default.": "编译器返回默认语言标准版本:{0}。由于此版本是旧版本,因此将尝试使用较新版本 {1} 作为默认版本。",
|
||||
"Unexpected output from clang-tidy: {0}. Expected: {1}.": "来自 clang-tidy 的意外输出:{0}。应为:{1}。",
|
||||
"Generate Doxygen comment": "生成 Doxygen 注释",
|
||||
"Create declaration of '{0}' in {1}/{0} is the name of a C/C++ function, {1} is a file name.": "在 {1} 中创建“{0}”声明",
|
||||
"Create definition of '{0}' in {1}/{0} is the name of a C/C++ function, {1} is a file name.": "在 {1} 中创建“{0}”定义",
|
||||
"Function definition for '{0}' not found./{0} is the name of a C/C++ function.": "找不到“{0}”的函数定义。",
|
||||
"Attributes/'Attributes' is a C++ specifier.": "属性",
|
||||
"Bases/'Bases' are a C++ class type.": "基项",
|
||||
"Classes": "类",
|
||||
"CoClasses": "组件类",
|
||||
"Delegates": "委托",
|
||||
"Enums": "枚举",
|
||||
"Events": "活动",
|
||||
"Functions": "函数",
|
||||
"Import directives": "Import 指令",
|
||||
"ImportLib statements": "ImportLib 语句",
|
||||
"Import statements": "导入语句",
|
||||
"Include directives": "Include 指令",
|
||||
"Interfaces": "接口",
|
||||
"Libraries": "库",
|
||||
"Macros": "宏",
|
||||
"Maps": "地图",
|
||||
"Map entries": "映射项",
|
||||
"Miscellaneous": "杂项",
|
||||
"Namespaces": "命名空间",
|
||||
"Parameters": "参数",
|
||||
"Properties": "属性",
|
||||
"Structs": "结构",
|
||||
"TODO: insert return statement here": "TODO: 在此处插入 return 语句",
|
||||
"Typedefs": "Typedef",
|
||||
"Unions": "联合",
|
||||
"Using aliases": "Using 别名",
|
||||
"Using directives": "Using 指令",
|
||||
"Variables": "变量",
|
||||
"Automatic add function": "自动添加函数",
|
||||
"vsCMFunctionVirtual is redundant and must not be specified when with vsCMFunctionComMethod./Do not localize 'vsCMFunctionVirtual' and 'vsCMFunctionComMethod', they are code implementation.": "在与 vsCMFunctionComMethod 一起使用时,vsCMFunctionVirtual 是多余的,并且不可指定。",
|
||||
"vsCMFunctionComMethod cannot be static./Do not localize 'vsCMFunctionComMethod', it is code implementation.": "vsCMFunctionComMethod 不能是静态的。",
|
||||
"Invalid C/C++ file: '%s'./%s is the invalid file.": "无效的 C/C++ 文件: \"%s\"。",
|
||||
"File name too long: '%s'./%s is the file that has a long name.": "文件名太长: \"%s\"。",
|
||||
"Cannot create file '%s'./%s is the file that could not be created.": "无法创建文件 \"%s\"。",
|
||||
"Cannot access directory or file '%s' for writing./%s is the directory or file that could not be accessed for writing.": "无法访问目录或文件 \"%s\" 以进行写入。",
|
||||
"Invalid file path: '%s'./%s is the file that has an invalid path.": "文件路径 \"%s\" 无效。",
|
||||
"File '%s' was not found./%s is the file that was not found.": "找不到文件“%s”。",
|
||||
"Create Declaration / Definition failed: %s/The operation 'Create Declaration / Definition' on a function was not successful. %s is the error info that has a period at the end of the string.": "创建声明/定义失败: %s",
|
||||
"Unable to create function '%s'. Creating defaulted or deleted functions is not supported./%s is the function that could not be created.": "无法创建函数 \"%s\" 。不支持创建默认函数或已删除的函数。",
|
||||
"Unable to create function '%s'./%s is the function that could not be created.": "无法创建函数'%s'。",
|
||||
"Unable to find an unambiguous location for function '%s'./%s is the function for the unambiguous location.": "无法找到函数“%s”的明确位置。",
|
||||
"Could not find class or namespace '%s'./%s is the class or namespace code that could not be found.": "找不到类或命名空间'%s'。",
|
||||
"The operation is not supported for '%s'./%s is the function that is not supported for an operation that involves automatically generating code.": "此操作不支持“%s”。",
|
||||
"Unknown error.": "未知错误。",
|
||||
"Please run the 'Select IntelliSense Configuration...' command to locate your system headers.": "请运行“选择 IntelliSense 配置...”命令以定位系统标头。",
|
||||
"Copy declaration of '{0}'/{0} is the name of a C/C++ function.": "复制 '{0}' 的声明",
|
||||
"Copy definition of '{0}'/{0} is the name of a C/C++ function.": "复制 '{0}' 的定义",
|
||||
"Copying Declaration / Definition to clipboard failed: %s/The operation 'Copy Declaration / Definition' on a function was not successful. %s is the error info that has a period at the end of the string.": "将声明/定义复制到剪贴板失败: %s",
|
||||
"Extract to function": "提取到函数",
|
||||
"Extract to free function": "提取到自由函数",
|
||||
"Extract to member function in '{0}'/{0} is the name of the struct or class the member function belongs to, e.g. 'class Foo'.": "提取到“{0}”中的成员函数",
|
||||
"The selected text is not inside a function.": "所选文本不在函数内。",
|
||||
"The selected text cannot span different functions.": "所选文本不能跨越不同的函数。",
|
||||
"Variable '%s' is declared in the selected region and then used below it.": "变量\"%s\"在选中区域中声明,然后在它下方使用。",
|
||||
"Preprocessor macro '%s' is used below the selected region.": "预处理器宏“%s”在所选区域的下方使用。",
|
||||
"The selected region spans an inactive preprocessor block.": "所选的区域跨越不活动的预处理程序块。",
|
||||
"The selected region does not contain any code that can be extracted.": "所选的区域不包含任何可以被提取的代码。",
|
||||
"The selected region is not entirely within the function's body.": "所选区域不完全在函数的主体内。",
|
||||
"The selection contains IntelliSense errors.": "所选内容包含 IntelliSense 错误。",
|
||||
"'%s' is not declared within the selected code, but is being modified. C code cannot pass arguments by reference./%s is the name of a variable.": "“%s”未在所选代码内声明,但正在被修改。C 代码不能通过引用传递参数。",
|
||||
"The function would have to return a value by reference. C code cannot return references.": "函数必须通过引用返回一个值。C 代码不能返回引用。",
|
||||
"Jumps between the selected code and the surrounding code are present.": "所选代码和外层代码之间的存在跳跃。",
|
||||
"In the selected code, some control paths exit without setting the return value. This is supported only for scalar, numeric, and pointer return types.": "在所选代码中,一些控制路径退出而没有设置返回值。这只受标量、数字、和指针返回类型支持。",
|
||||
"Expand selection (to enable 'Extract to function')": "展开选择(以启用“提取到函数”)",
|
||||
"\"{0}\" not found in compile_commands.json files. 'includePath' from c_cpp_properties.json in folder '{1}' will be used for this file instead.": "在 compile_commands.json 文件中找不到 \"{0}\"。此文件将改用文件夹“{1}”中的 c_cpp_properties.json 中包含的 \"includePath\"。",
|
||||
"Generate Copilot summary": "生成 Copilot 摘要",
|
||||
"Unable to index files from non-existent folder: {0}": "无法为不存在的文件夹 {0} 中的文件编制索引",
|
||||
"The C/C++ extension may be used only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server, and successor Microsoft products and services to develop and test your applications./{Locked=\"C/C++\"} {Locked=\"Visual Studio\"} {Locked=\"Mac\"} {Locked=\"Visual Studio Code\"} {Locked=\"Azure DevOps\"} {Locked=\"Team Foundation Server\"}": "C/C++ 扩展只能用于 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 以及后续的 Microsoft 产品和服务,以开发和测试您的应用程序。",
|
||||
"Microsoft C++ Language Server/{Locked=\"Microsoft\"} {Locked=\"C++\"}": "Microsoft C++ 语言服务器",
|
||||
"Usage: {0} [options]/{0} is the executable name. {Locked=\"{0}\"}": "使用情况: {0} [选项]",
|
||||
"Options:": "选项:",
|
||||
"Show this help message and exit.": "显示此帮助消息并退出。",
|
||||
"Show version information and exit.": "显示版本信息并退出。",
|
||||
"Permanently accept the End User License Agreement (EULA)./{Locked=\"EULA\"}": "永久接受最终用户许可协议(EULA)。",
|
||||
"Do not redirect stderr to /dev/null (useful for debugging)./{Locked=\"stderr\"} {Locked=\"/dev/null\"}": "不将 stderr 重定向到 /dev/null (对调试有用)。",
|
||||
"Initiate interactive login (GitHub Copilot subscription required)./{Locked=\"GitHub Copilot\"}": "启动交互式登录(需要 GitHub Copilot 订阅)。",
|
||||
"Force the login process, even if already authenticated.": "即使已完成身份验证,也强制启动登录流程。",
|
||||
"Allow storing credentials in plaintext if a secure keychain is unavailable.": "如果安全密钥链不可用,允许以明文存储凭据。",
|
||||
"Specify the directory for log files (default: system temp directory).": "指定日志文件的目录(默认值: 系统临时目录)。",
|
||||
"Set the logging verbosity from 0 (Errors only) to 9 (Verbose).": "将日志详细级别从 0 (仅错误)设置为 9 (详细)。",
|
||||
"Specify the parameter as an absolute path, or relative to the workspace root or its .github folder./{Locked=\".github\"}": "将参数指定为绝对路径,或相对于工作区根目录或其 .github 文件夹的路径。",
|
||||
"Disable sending telemetry data.": "禁用发送遥测数据。",
|
||||
"To authenticate with GitHub, please copy the code {0} and then visit {1}. Waiting for authorization.../{0} is the user code to enter. {1} is the verification URL to visit. {Locked=\"GitHub\"} {Locked=\"{0}\"} {Locked=\"{1}\"}": "若要通过 GitHub 进行身份验证,请复制代码 {0},然后访问 {1}。正在等待授权...",
|
||||
"Timed out waiting for authorization.": "等待授权超时。",
|
||||
"Successfully authenticated with GitHub./{Locked=\"GitHub\"}": "已成功通过 GitHub 身份验证。",
|
||||
"GitHub authentication succeeded but tokens could not be saved./{Locked=\"GitHub\"}": "GitHub 身份验证成功,但无法保存令牌。",
|
||||
"Keyring error: {0}/{Locked=\"{0}\"}": "Keyring 错误: {0}",
|
||||
"The keyring collection is locked. Unlock it or restart gnome-keyring-daemon./{Locked=\"gnome-keyring-daemon\"}": "keyring 集合已锁定。请解锁或重启 gnome-keyring-daemon。",
|
||||
"No keyring service is available. Install and start gnome-keyring: sudo apt install gnome-keyring/{Locked=\"gnome-keyring\"} {Locked=\"sudo apt install gnome-keyring\"}": "没有可用的 keyring 服务。安装并启动 gnome-keyring: sudo apt install gnome-keyring",
|
||||
"Or allow plaintext storage by passing --login --allow-plaintext-secret-storage./{Locked=\"--login\"} {Locked=\"--allow-plaintext-secret-storage\"}": "或通过传递 --login --allow-plaintext-secret-storage 允许明文存储。",
|
||||
"The device code has expired. Please try again.": "设备代码已过期。请重试。",
|
||||
"Authorization was denied by the user.": "用户拒绝了授权。",
|
||||
"Unexpected error during polling: {0}/{Locked=\"{0}\"}": "轮询期间发生意外错误: {0}",
|
||||
"GitHub login failed. Try running with --login from the command line to log in./{Locked=\"GitHub\"} {Locked=\"--login\"}": "GitHub 登录失败。尝试从命令行使用 --login 运行以登录。",
|
||||
"EULA must be accepted to proceed. Run with --accept-eula./{Locked=\"EULA\"} {Locked=\"--accept-eula\"}": "必须接受 EULA 才能继续。请使用 --accept-eula 运行。",
|
||||
"Already authenticated with GitHub. Use --force-login to re-authenticate./{Locked=\"GitHub\"} {Locked=\"--force-login\"}": "已通过 GitHub 身份验证。使用 --force-login 重新进行身份验证。",
|
||||
"Initialization failed: Unsupported config version. Only version 1 is supported.": "初始化失败: 配置版本不受支持。仅支持版本 1。",
|
||||
"Initialization failed: Config file '{0}' not found./{Locked=\"{0}\"}": "初始化失败: 未找到配置文件“{0}”。",
|
||||
"Initialization failed: Unable to parse config file '{0}'. Verify the JSON format. Error: {1}/{Locked=\"JSON\"} {Locked=\"{0}\"} {Locked=\"{1}\"}": "初始化失败: 无法解析配置文件“{0}”。请验证 JSON 格式。错误: {1}",
|
||||
"Initialization failed: 'repositoryPath' is not configured or invalid./{Locked=\"repositoryPath\"}": "初始化失败: \"repositoryPath\" 未配置或无效。",
|
||||
"Initialization failed: 'compileCommands' or 'cppProperties' must be configured./{Locked=\"compileCommands\"} {Locked=\"cppProperties\"}": "初始化失败: 必须配置 \"compileCommands\" 或 \"cppProperties\"。",
|
||||
"Initialization failed: 'compileCommands' and 'cppProperties' cannot both be configured./{Locked=\"compileCommands\"} {Locked=\"cppProperties\"}": "初始化失败: 不能同时配置 \"compileCommands\" 和 \"cppProperties\"。",
|
||||
"Initialization failed: 'compileCommands' path not found: '{0}'./{Locked=\"compileCommands\"} {Locked=\"{0}\"}": "初始化失败: 未找到 \"compileCommands\" 路径:“{0}”。",
|
||||
"Initialization failed: 'cppProperties' path not found: '{0}'./{Locked=\"cppProperties\"} {Locked=\"{0}\"}": "初始化失败: 未找到 \"cppProperties\" 路径:“{0}”。",
|
||||
"Initialization failed: Unable to parse file specified by 'cppProperties': '{0}'. Verify the JSON format. Error: {1}/{Locked=\"JSON\"} {Locked=\"cppProperties\"} {Locked=\"{0}\"} {Locked=\"{1}\"}": "初始化失败: 无法解析 \"cppProperties\" 指定的文件:“{0}”。请验证 JSON 格式。错误: {1}",
|
||||
"Initialization failed: Unable to read configuration from 'cppProperties' file: '{0}'. Verify the schema./{Locked=\"cppProperties\"} {Locked=\"{0}\"}": "初始化失败: 无法从 \"cppProperties\" 文件读取配置:“{0}”。请验证架构。",
|
||||
"Initialization failed: '{0}' does not contain a valid 'configurations' array./{Locked=\"configurations\"} {Locked=\"{0}\"}": "初始化失败:“{0}”不包含有效的 \"configurations\" 数组。",
|
||||
"Initialization failed: Configuration '{0}' was not found in 'cppProperties' file: '{1}'./{Locked=\"cppProperties\"} {Locked=\"{0}\"} {Locked=\"{1}\"}": "初始化失败: 在 \"cppProperties\" 文件中找不到配置“{0}”:“{1}”。",
|
||||
"Initialization failed: LSP config paths cache is missing.": "初始化失败: 缺少 LSP 配置路径缓存。",
|
||||
"libcurl not found ({0}). libcurl is required for authentication and telemetry./{Locked=\"libcurl\"} {Locked=\"{0}\"}": "未找到 libcurl ({0})。身份验证和遥测需要 libcurl。",
|
||||
"libcurl should be available on macOS by default. If missing, install via: brew install curl/{Locked=\"libcurl\"} {Locked=\"macOS\"} {Locked=\"brew install curl\"}": "macOS 默认应已提供 libcurl。如果缺失,请通过以下命令安装: brew install curl",
|
||||
"Install libcurl: sudo apt install libcurl4 (Debian/Ubuntu) or sudo dnf install libcurl (Fedora/RHEL)./{Locked=\"libcurl\"} {Locked=\"sudo apt install libcurl4\"} {Locked=\"sudo dnf install libcurl\"} {Locked=\"Debian\"} {Locked=\"Ubuntu\"} {Locked=\"Fedora\"} {Locked=\"RHEL\"}": "安装 libcurl: sudo apt install libcurl4 (Debian/Ubuntu)或 sudo dnf install libcurl (Fedora/RHEL)。",
|
||||
"libcurl loaded but required symbols are missing. This may indicate a very old or incompatible libcurl version. The language server cannot operate without a compatible libcurl./{Locked=\"libcurl\"}": "已加载 libcurl,但缺少必需的符号。这可能表示 libcurl 版本太旧或不兼容。没有兼容的 libcurl,语言服务器无法运行。",
|
||||
"libsecret-1.so.0 not found ({0}). libsecret is required for secure credential storage. Install libsecret: sudo apt install libsecret-1-0 (Debian/Ubuntu) or sudo dnf install libsecret (Fedora/RHEL)./{Locked=\"libsecret-1.so.0\"} {Locked=\"libsecret\"} {Locked=\"sudo apt install libsecret-1-0\"} {Locked=\"sudo dnf install libsecret\"} {Locked=\"Debian\"} {Locked=\"Ubuntu\"} {Locked=\"Fedora\"} {Locked=\"RHEL\"} {Locked=\"{0}\"}": "未找到 libsecret-1.so.0 ({0})。安全凭据存储需要 libsecret。安装 libsecret: sudo apt install libsecret-1-0 (Debian/Ubuntu)或 sudo dnf install libsecret (Fedora/RHEL)。",
|
||||
"libsecret loaded but required symbols are missing. The language server cannot operate without a compatible libsecret./{Locked=\"libsecret\"}": "已加载 libsecret,但缺少必需的符号。没有兼容的 libsecret,语言服务器无法运行。",
|
||||
"Failed to disable telemetry.": "禁用遥测失败。",
|
||||
"Method not found: {0}/{0} is the LSP method name. {Locked=\"{0}\"}": "未找到方法: {0}",
|
||||
"Unable to process IntelliSense for a file with the same canonicalized path as an existing file. URI: {0}, canonicalized path: {1}/{Locked=\"IntelliSense\"} {Locked=\"URI\"} {Locked=\"{0}\"} {Locked=\"{1}\"}": "无法为与现有文件具有相同规范化路径的文件处理 IntelliSense。URI: {0},规范化路径: {1}",
|
||||
"Initializing": "正在初始化",
|
||||
"Initializing ({0} of {1})": "正在初始化({0}/{1})",
|
||||
"Initializing ({0} of {1}): {2}": "正在初始化({0}/{1}): {2}",
|
||||
"Initializing {0}": "正在初始化 {0}",
|
||||
"Initializing projects": "正在初始化项目",
|
||||
"Initializing projects ({0} of {1})": "正在初始化项目({0}/{1})",
|
||||
"Initializing projects ({0} of {1}): {2}": "正在初始化项目({0}/{1}): {2}",
|
||||
"Initializing projects {0}": "正在初始化项目 {0}",
|
||||
"Checking for out of date files": "正在检查过期文件",
|
||||
"Checking for out of date files ({0} of {1})": "正在检查过期文件({0}/{1})",
|
||||
"Checking for out of date files ({0} of {1}): {2}": "正在检查过期文件({0}/{1}): {2}",
|
||||
"Checking for out of date files {0}": "正在检查过期文件 {0}",
|
||||
"Parsing files": "正在解析文件",
|
||||
"Parsing files ({0} of {1})": "正在解析文件({0}/{1})",
|
||||
"Parsing files ({0} of {1}): {2}": "正在解析文件({0}/{1}): {2}",
|
||||
"Parsing files {0}": "正在解析文件 {0}",
|
||||
"Parsing included files": "正在解析包含的文件",
|
||||
"Parsing included files ({0} of {1})": "正在解析包含的文件({0}/{1})",
|
||||
"Parsing included files ({0} of {1}): {2}": "正在解析包含的文件({0}/{1}): {2}",
|
||||
"Parsing included files {0}": "正在解析包含的文件 {0}",
|
||||
"Scanning #includes for more files": "正在扫描 #includes 以查找更多文件",
|
||||
"Scanning #includes for more files ({0} of {1})": "正在扫描 #includes 以查找更多文件({0}/{1})",
|
||||
"Scanning #includes for more files ({0} of {1}): {2}": "正在扫描 #includes 以查找更多文件({0}/{1}): {2}",
|
||||
"Scanning #includes for more files {0} {1}": "正在扫描 #includes 以查找更多文件 {0} {1}",
|
||||
"Ready (Updating external dependencies)": "就绪(正在更新外部依赖项)",
|
||||
"Ready (Updating external dependencies) ({0} of {1})": "就绪(正在更新外部依赖项)({0}/{1})",
|
||||
"Ready (Updating external dependencies) ({0} of {1}): {2}": "就绪(正在更新外部依赖项)({0}/{1}): {2}",
|
||||
"Ready (Updating external dependencies) {0}": "就绪(正在更新外部依赖项){0}",
|
||||
"Ready (Optimizing database)": "就绪(正在优化数据库)",
|
||||
"Ready (Optimizing database) ({0} of {1})": "就绪(正在优化数据库)({0}/{1})",
|
||||
"Ready (Optimizing database) ({0} of {1}): {2}": "就绪(正在优化数据库)({0}/{1}): {2}",
|
||||
"Ready (Optimizing database) {0}": "就绪(正在优化数据库){0}",
|
||||
"Creating Indexes": "正在创建索引",
|
||||
"Creating Indexes ({0} of {1})": "正在创建索引({0}/{1})",
|
||||
"Creating Indexes ({0} of {1}): {2}": "正在创建索引({0}/{1}): {2}",
|
||||
"Creating Indexes {0}": "正在创建索引 {0}",
|
||||
"Evaluating": "正在评估",
|
||||
"Evaluating ({0} of {1})": "正在计算({0}/{1})",
|
||||
"Evaluating ({0} of {1}): {2}": "正在计算({0}/{1}): {2}",
|
||||
"Evaluating {0}": "正在计算 {0}",
|
||||
"Indexing files": "正在为文件编制索引",
|
||||
"Indexing files ({0} of {1})": "正在为文件编制索引({0} of {1})",
|
||||
"Indexing files ({0} of {1}): {2}": "正在为文件编制索引({0}/{1}): {2}",
|
||||
"Indexing files {0}": "正在为文件编制索引 {0}",
|
||||
"Allow the server to start even if the specified --lsp-config file does not exist.": "即使指定的 --lsp-config 文件不存在,也允许服务器启动。",
|
||||
"Initialization failed during engine setup.": "引擎设置期间初始化失败。",
|
||||
"Important:": "重要说明:",
|
||||
"Unknown OS platform": "OS 平台未知",
|
||||
"Could not get ProductVersion from SystemVersion.plist": "无法从 SystemVersion.plist 获取 ProductVersion",
|
||||
"Failed to find SystemVersion.plist in {0}.": "未能在 {0} 中找到 SystemVersion.plist。",
|
||||
"Refresh process list": "刷新进程列表",
|
||||
"Attach to process": "附加到进程",
|
||||
"Select the process to attach to": "选择要附加到的进程",
|
||||
"Process not selected.": "未选择进程。",
|
||||
"{0} in debug configuration requires {1} and {2}": "调试配置中的 {0} 需要 {1} 和 {2}",
|
||||
"Chosen debug configuration does not contain {0} or {1}": "所选的调试配置不包含 {0} 或 {1}",
|
||||
"Pipe transport failed to get OS and processes.": "管道传输未能获取 OS 和进程。",
|
||||
"Transport attach could not obtain processes list.": "传输附加无法获取进程列表。",
|
||||
"Failed to make GDB connection: \"{0}\".": "无法建立 GDB 连接:“{0}”。",
|
||||
"Failed to parse processes: \"{0}\".": "无法分析进程:“{0}”。",
|
||||
"Default Configuration": "默认配置",
|
||||
"Select a configuration": "选择配置",
|
||||
"Debugger of type: '{0}' is only available on Windows. Use type: '{1}' on the current OS platform.": "类型为“{0}”的调试程序仅在 Windows 上可用。在当前 OS 平台上使用类型“{1}”。",
|
||||
"The key '{0}' is deprecated. Please use '{1}' instead.": "密钥“{0}”已弃用。请改用“{1}”。",
|
||||
"Unable to locate 'LLDB.framework' for lldb-mi. Please install XCode or XCode Command Line Tools.": "找不到用于 lldb-mi 的 \"LLDB.framework\"。请安装 XCode 或 XCode 命令行工具。",
|
||||
"Launch configuration:": "启动配置:",
|
||||
"'deploySteps' require VS Code 1.69+.": "\"deploySteps\" 需要 VS Code 1.69+。",
|
||||
"Running deploy steps...": "正在运行部署步骤...",
|
||||
"Unable to find {0}. {1} task is ignored.": "找不到 {0}。将忽略 {1} 任务。",
|
||||
"preLaunchTask: {0}": "preLaunchTask: {0}",
|
||||
"Unable to find the {0} debugger. The debug configuration for {1} is ignored.": "找不到 {0} 调试器。将忽略 {1} 的调试配置。",
|
||||
"build and debug active file": "构建和调试活动文件",
|
||||
"Apply Developer Environment": "应用开发人员环境",
|
||||
"{0} requires the Visual Studio developer environment./{0} is a command option in a menu.": "{0} 需要 Visual Studio 开发人员环境。",
|
||||
"{0} requires the Visual Studio developer environment to be updated./{0} is a command option in a menu.": "更新开发人员环境",
|
||||
"Cancel": "取消",
|
||||
"The source code could not be built because the Visual Studio developer environment was not applied.": "由于未应用 Visual Studio 开发人员环境,无法生成源代码。",
|
||||
"The source code could not be built because the Visual C++ compiler could not be found.": "由于找不到 Visual C++ 编译器,无法生成源代码。",
|
||||
"Missing dependency '{0}' for lldb-mi executable.": "缺少 lldb-mi 可执行文件的依赖项“{0}”。",
|
||||
"Searched in:": "搜索范围:",
|
||||
"To resolve this issue, either install XCode through the Apple App Store or install the XCode Command Line Tools by running '{0}' in a Terminal window.": "要解决此问题,请通过 Apple App Store 安装 XCode,或通过在终端窗口运行“{0}”来安装 XCode 命令行工具。",
|
||||
"Failed to use {0}. Reason: {1}": "未能使用 {0}。原因: {1}",
|
||||
"Replacing {0} '{1}' with '{2}'.": "正在将 {0}“{1}”替换为“{2}”。",
|
||||
"Resolving variables in {0}...": "正在解析 {0} 中的变量...",
|
||||
"Open {0}": "打开 {0}",
|
||||
"Recently Used Task": "最近使用的任务",
|
||||
"Configured Task": "已配置的任务",
|
||||
"Detected Task": "检测到的任务",
|
||||
"Cannot build and debug because the active file is not a C or C++ source file.": "无法生成和调试,因为活动文件不是 C 或 C++ 源文件。",
|
||||
"No compiler found": "未找到编译程序",
|
||||
"Select a debug configuration": "选择调试配置",
|
||||
"\"args\" in command deploy step must be an array.": "命令部署步骤中的 \"args\" 必须为数组。",
|
||||
"\"host\", \"files\", and \"targetDir\" are required in {0} steps.": "{0} 步骤中需要 \"host\"、\"files\" 和 \"targetDir\"。",
|
||||
"\"files\" must be a string or an array of strings in {0} steps.": "“files” 必须为 {0} 步骤中的字符串或字符串数组。",
|
||||
"\"host\" and \"command\" are required for ssh steps.": "SSH 步骤需要 \"host\" 和 \"command\"。",
|
||||
"\"command\" is required for shell steps.": "shell 步骤需要 \"command\"。",
|
||||
"Deploy step type {0} is not supported.": "不支持部署步骤类型 {0}。",
|
||||
"Unexpected OS type": "意外的 OS 类型",
|
||||
"full path to pipe program such as {0}": "管道程序的完整路径,如 {0}",
|
||||
"Enable pretty-printing for {0}": "为 {0} 启用整齐打印",
|
||||
"Set Disassembly Flavor to {0}": "将反汇编风格设置为 {0}",
|
||||
"enter program name, for example {0}": "输入程序名称,例如 {0}",
|
||||
"Launch": "启动",
|
||||
"Launch with {0}.": "使用 {0} 启动。",
|
||||
"Attach": "附加",
|
||||
"Attach with {0}.": "使用 {0} 附加。",
|
||||
"Pipe Launch": "管道启动",
|
||||
"Pipe Launch with {0}.": "使用 {0} 进行管道启动。",
|
||||
"Pipe Attach": "管道附加",
|
||||
"Pipe Attach with {0}.": "使用 {0} 进行管道附加。",
|
||||
"Launch with the Visual Studio C/C++ debugger.": "使用 Visual Studio C/C++ 调试程序启动。",
|
||||
"Attach to a process with the Visual Studio C/C++ debugger.": "使用 Visual Studio C/C++ 调试程序附加到进程。",
|
||||
"Bash on Windows Launch": "Windows 上的 Bash 启动",
|
||||
"Launch in Bash on Windows using {0}.": "使用 {0} 在 Windows 上的 Bash 中启动。",
|
||||
"Bash on Windows Attach": "Windows 上的 Bash 附加",
|
||||
"Attach to a remote process running in Bash on Windows using {0}.": "使用 {0} 附加到在 Windows 上的 Bash 中运行的远程进程。",
|
||||
"Debugger type '{0}' is not available for non-Windows machines.": "调试程序类型“{0}”不适用于非 Windows 计算机。",
|
||||
"Run Without Debugging is only supported for launch configurations.": "仅启动配置支持“运行但不调试”。",
|
||||
"Add debug configuration is not available for single file.": "添加调试配置不适用于单个文件。",
|
||||
"Cannot modify SSH configuration file because of parse failure \"{0}\".": "由于分析失败“{0}”,无法修改 SSH 配置文件。",
|
||||
"No valid SSH configuration file found.": "找不到有效的 SSH 配置文件。",
|
||||
"Enter SSH Target Name": "输入 SSH 目标名称",
|
||||
"Example: `mySSHTarget`": "示例: `mySSHTarget`",
|
||||
"Enter SSH Connection Command": "输入 SSH 连接命令",
|
||||
"Example: `ssh [email protected] -A`": "示例: `ssh [email protected] -A`",
|
||||
"Select an SSH configuration file": "选择 SSH 配置文件",
|
||||
"Yes": "是",
|
||||
"No": "否",
|
||||
"Are you sure you want to permanently delete \"{0}\"?": "是否确定要永久删除“{0}”?",
|
||||
"Operating system \"{0}\" not supported.": "不支持操作系统“{0}”。",
|
||||
"\"{0}\" timed out after {1} seconds.": "“{0}”在 {1} 秒后超时。",
|
||||
"\"{0}\" canceled.": "已取消“{0}”。",
|
||||
"\"{0}\" exited with code: \"{1}\".": "“{0}”已退出,代码为“{1}”。",
|
||||
"Failed to spawn \"{0}\".": "未能生成“{0}”。",
|
||||
"Ignoring non-parsable lines in {0} {1}: ": "忽略 {0} {1} 中不可分析的行: ",
|
||||
"No terminal emulator found. Please set the $TERMINAL environment variable to your terminal emulator of choice, or install one of the following: x-terminal-emulator, gnome-terminal, konsole, xterm./{Locked=\"$TERMINAL\"} {Locked=\"x-terminal-emulator\"} {Locked=\"gnome-terminal\"} {Locked=\"konsole\"} {Locked=\"xterm\"}": "找不到终端仿真器。请将 $TERMINAL 环境变量设置为你选择的终端仿真器,或安装以下程序之一: x-terminal-emulator、gnome-terminal、konsole、xterm。",
|
||||
"Select a compiler to configure for IntelliSense": "选择要为 IntelliSense 配置的编译器",
|
||||
"How would you like to configure IntelliSense for the '{0}' folder?": "你希望如何为“{0}”文件夹配置 IntelliSense?",
|
||||
"How would you like to configure IntelliSense for this folder?": "你希望如何为此文件夹配置 IntelliSense?",
|
||||
"Found at {0}": "在 {0} 找到",
|
||||
"Use {0}": "使用 {0}",
|
||||
"configuration providers": "配置提供程序",
|
||||
"compilers": "编译器",
|
||||
"Select IntelliSense Configuration...": "选择 IntelliSense 配置...",
|
||||
"You do not have IntelliSense configured. Unless you set your own configurations, IntelliSense may not be functional.": "未配置编译器。除非设置自己的配置,否则 IntelliSense 可能无法正常工作。",
|
||||
"Select another compiler on my machine...": "在我的计算机上选择另一个编译器...",
|
||||
"Help me install a compiler": "帮助我安装编译器",
|
||||
"Install a compiler": "安装编译器",
|
||||
"Do not configure with a compiler (not recommended)": "请勿适用编译器进行配置(不推荐)",
|
||||
"EPERM: Check permissions for '{0}'": "EPERM: 检查“{0}”的权限",
|
||||
"Unable to start the C/C++ language server. IntelliSense features will be disabled. Error: {0}": "无法启动 C/C++ 语言服务器。IntelliSense 功能将被禁用。错误: {0}",
|
||||
"The language server crashed. Restarting...": "语言服务器崩溃。正在重新启动...",
|
||||
"The language server crashed 5 times in the last 3 minutes. It will not be restarted.": "在过去 3 分钟内,语言服务器崩溃了 5 次。它不会重新启动。",
|
||||
"{0} has changed to: {1}/{0} is the setting name 'loggingLevel', {1} is a string value such as 'Debug'": "{0} 已更改为: {1}",
|
||||
"Dismiss": "消除",
|
||||
"Disable Warnings": "禁用警告",
|
||||
"{0} is unable to provide IntelliSense configuration information for '{1}'. Settings from the '{2}' configuration will be used instead.": "{0} 无法为“{1}”提供 IntelliSense 配置信息。将改为使用“{2}”配置中的设置。",
|
||||
"The requested configuration name is not found: {0}": "找不到请求的配置名称: {0}",
|
||||
"Unsupported client": "不支持的客户端",
|
||||
"Timed out in {0}ms.": "将在 {0} 毫秒后超时。",
|
||||
"Enumerated {0} files with {1} C/C++ source files detected. You may want to consider excluding some files for better performance.": "已枚举 {0} 个文件,检测到 {1} 个 C/C++ 源文件。你可能需要考虑排除某些文件以获得更好的性能。",
|
||||
"Learn More": "了解详细信息",
|
||||
"Don't Show Again": "不再显示",
|
||||
"Update IntelliSense time (sec): {0}": "更新 IntelliSense 时间(秒): {0}",
|
||||
"Custom configurations received:": "已收到自定义配置:",
|
||||
"Custom browse configuration received: {0}": "已收到自定义浏览配置: {0}",
|
||||
" Declaration/definition was copied.": "已复制声明/定义。",
|
||||
"Name the extracted function": "为提取的函数命名",
|
||||
"NewFunction": "NewFunction",
|
||||
"Extract to function failed: {0}": "未能提取到函数: {0}",
|
||||
"Extract to function failed. An invalid edit was generated: '{0}'": "未能提取到函数。生成了无效的编辑:“{0}”",
|
||||
"Fix all code analysis problems": "修复所有代码分析问题",
|
||||
"Clear all code analysis problems": "清除所有代码分析问题",
|
||||
"Fix all {0} problems": "修复所有 {0} 问题",
|
||||
"Disable all {0} problems": "禁用所有 {0} 问题",
|
||||
"Clear all {0} problems": "清除所有 {0} 问题",
|
||||
"Clear this {0} problem": "清除此 {0} 问题",
|
||||
"Fix this {0} problem": "修复此 {0} 问题",
|
||||
"Show documentation for {0}": "显示 {0} 文档",
|
||||
"IntelliSense mode {0} is incompatible with compiler path.": "IntelliSense 模式 {0} 与编译器路径不兼容。",
|
||||
"Processed c_cpp_properties.json in {0}s": "已在 {0} 秒内中处理 c_cpp_properties.json",
|
||||
"Failed to create \"{0}\"": "未能创建“{0}”",
|
||||
"Invalid configuration file. There must be at least one configuration present in the array.": "配置文件无效。数组中须至少存在一个配置。",
|
||||
"Unknown version number found in c_cpp_properties.json. Some features may not work as expected.": "c_cpp_properties.json 中发现未知的版本号。某些功能可能无法按预期工作。",
|
||||
"Attempt to update \"{0}\" failed (do you have write access?)": "尝试更新“{0}”失败(是否有写入权限?)",
|
||||
"Failed to parse \"{0}\"": "未能分析“{0}”",
|
||||
"Compiler path with spaces could not be found. If this was intended to include compiler arguments, surround the compiler path with double quotes ({0})./{Locked=\"{0}\"} The {0} is a double quote character \", and should be located next to the translation for \"double quotes\".": "找不到带有空格的编译器路径。如果这是为了包含编译器参数,请用双引号({0})括住编译器路径。",
|
||||
"Cannot find: {0}": "无法找到: {0}",
|
||||
"Path is not a file: {0}": "路径不是文件: {0}",
|
||||
"The include path validation took {0}s to evaluate": "包含路径验证计算耗时 {0} 秒",
|
||||
"Failed to resolve include path. Error: {0}": "未能解析包含路径。错误: {0}",
|
||||
"Do not add extra quotes around paths.": "不要在路径周围添加额外的引号。",
|
||||
"Path is not a directory: {0}": "路径不是目录: {0}",
|
||||
"{0} is a duplicate. The configuration name should be unique.": "{0} 重复。配置名称应是唯一的。",
|
||||
"Path took {0}s to evaluate": "路径计算耗时 {0} 秒",
|
||||
"Failed to resolve path {0}. Error: {1}": "未能解析路径 {0}。错误: {1}",
|
||||
"Multiple paths are not allowed.": "不允许使用多个路径。",
|
||||
"Multiple paths should be separate entries in an array.": "多个路径应是数组中的单独条目。",
|
||||
"Paths are not directories: {0}": "路径不是目录: {0}",
|
||||
"Error while retrieving result. Reason: {0}": "检索结果时出错。原因: {0}",
|
||||
"build active file": "生成活动文件",
|
||||
"compiler:": "编译器:",
|
||||
"Task generated by Debugger.": "调试器生成的任务。",
|
||||
"Starting build...": "正在启动生成...",
|
||||
"Build run was terminated.": "生成运行已终止。",
|
||||
"Build finished with error(s).": "生成已完成,但出现错误。",
|
||||
"Build finished with warning(s).": "生成已完成,但收到警告。",
|
||||
"Build finished successfully.": "生成已成功完成。",
|
||||
"No context provided": "未提供上下文",
|
||||
"The \"Set Visual Studio Developer Environment\" command is only available on Windows": "“设置 Visual Studio 开发人员环境”命令仅在 Windows 上可用",
|
||||
"A Visual Studio installation with the C++ compiler was not found": "找不到带有 C++ 编译器的 Visual Studio 安装项",
|
||||
"The operation was cancelled": "已取消此操作",
|
||||
"No hosts found": "找不到主机",
|
||||
"Configuring developer environment...": "正在配置开发人员环境...",
|
||||
"Select a Visual Studio installation": "选择 Visual Studio 安装",
|
||||
"Advanced options...": "高级选项...",
|
||||
"Select a specific host and target architecture, toolset version, etc.": "选择特定的主机和目标体系结构构、工具集版本等",
|
||||
"Select a toolset version": "选择工具集版本",
|
||||
"Select a host and target architecture": "选择主机和目标体系结构",
|
||||
"Something went wrong: {0}": "出现问题: {0}",
|
||||
"{0} developer environment for {1}": "{1} 的 {0} 开发人员环境",
|
||||
"Default environment for {0}": "{0} 的默认环境",
|
||||
"host = {0}, target = {1}": "主机 = {0},目标 = {1}",
|
||||
"Learn how to install a library for this header with vcpkg": "了解如何使用 vcpkg 为此标头安装库",
|
||||
"Copy vcpkg command to install '{0}' to the clipboard": "将用于安装“{0}”的 vcpkg 命令复制到剪贴板",
|
||||
"IntelliSense-related commands cannot be executed when `C_Cpp.intelliSenseEngine` is set to `disabled`./Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.": "当 `C_Cpp.intelliSenseEngine` 设置为 `disabled` 时,无法执行与 IntelliSense 相关的命令。",
|
||||
"client not found": "未找到客户端",
|
||||
"OK": "确定",
|
||||
"The clang compiler will now be installed": "现在将安装 clang 编译器",
|
||||
"You may be prompted to type your password in the VS Code terminal window to authorize the installation.": "系统可能会提示你在 VS Code 终端窗口中键入密码以授权安装。",
|
||||
"The gcc compiler will now be installed": "现在将安装 gcc 编译器",
|
||||
"Open a folder first to select a configuration.": "首先打开一个文件夹以选择配置。",
|
||||
"Open a folder first to select a configuration provider.": "首先打开一个文件夹以选择配置提供程序。",
|
||||
"Open a folder first to edit configurations": "首先打开一个文件夹以编辑配置",
|
||||
"The code analysis fix could not be applied because the document has changed.": "无法应用代码分析修复程序,因为文档已更改。",
|
||||
"A pre-release version of the C/C++ extension is available. Would you like to switch to it?": "C/C++ 扩展的预发行版本可用。是否要切换到它?",
|
||||
"Copilot summary is not available.": "Copilot 摘要不可用。",
|
||||
"The file containing this symbol's definition or declaration has been excluded from use with Copilot.": "包含此符号的定义或声明的文件已排除在 Copilot 的使用范围之外。",
|
||||
"Copilot summary is not available for this symbol.": "Copilot 摘要不可用于此符号。",
|
||||
"An error occurred while generating Copilot summary.": "生成 Copilot 摘要时出错。",
|
||||
"Duplicate multiline comment patterns detected.": "检测到重复的多行注释模式。",
|
||||
"Error while retrieving the project context. Reason: {0}": "检索项目上下文时出错。原因: {0}",
|
||||
"Error while retrieving the #cpp context.": "检索 #cpp 上下文时出错。",
|
||||
"{0}, {1}/{0} is an untranslated C++ keyword (e.g. \"private\") and {1} is either another keyword (e.g. \"typedef\") or a localized property (e.g. a localized version of \"declaration\").": "{0},{1}",
|
||||
"Find All References": "查找所有引用",
|
||||
"Peek References": "速览引用",
|
||||
"Rename": "重命名",
|
||||
"Call Hierarchy": "调用层次结构",
|
||||
"CONFIRMED REFERENCE": "已确认引用",
|
||||
"CONFIRMATION IN PROGRESS": "正在进行确认",
|
||||
"COMMENT REFERENCE": "注释引用",
|
||||
"STRING REFERENCE": "字符串引用",
|
||||
"INACTIVE REFERENCE": "非活动引用",
|
||||
"CANNOT CONFIRM REFERENCE": "无法确认引用",
|
||||
"NOT A REFERENCE": "不是引用",
|
||||
"Confirmed reference": "已确认引用",
|
||||
"Confirmation in progress": "正在进行确认",
|
||||
"Comment reference": "注释引用",
|
||||
"String reference": "字符串引用",
|
||||
"Inactive reference": "非活动引用",
|
||||
"Cannot confirm reference": "无法确认引用",
|
||||
"Not a reference": "不是引用",
|
||||
"CONFIRMATION CANCELED": "已取消确认",
|
||||
"Confirmation canceled": "已取消确认",
|
||||
"To preview results, click the search icon in the status bar.": "若要预览结果,请单击状态栏中的搜索图标。",
|
||||
"Started.": "已启动。",
|
||||
"Processing source.": "正在处理源。",
|
||||
"Searching files.": "正在搜索文件。",
|
||||
"{0}/{1} files searched.{2}": "已搜索 {0} 个文件,共 {1} 个文件。{2}",
|
||||
"{0}/{1} files confirmed.{2}": "已确认 {0} 个文件,共 {1} 个文件。{2}",
|
||||
"C/C++ Peek References": "C/C++ 速览引用",
|
||||
"[Warning] Some references may be missing, because workspace parsing was incomplete when {0} was started.": "[警告] 某些引用可能丢失,因为在 {0} 启动时,工作区分析不完整。",
|
||||
"Go to reference": "转到引用",
|
||||
"Code formatting is using settings from .editorconfig instead of .clang-format. For more information, see the documentation for the 'default' value of the 'C_Cpp.formatting' setting./Single-quotes are used here, as this message is displayed in a context that does not render markdown. Do not change them to back-ticks. Do not change the contents of the single-quoted text.": "代码格式设置使用 .editorconfig 中的设置,而不是 .clang-format 中的设置。有关详细信息,请参阅文档以了解 'C_Cpp.formatting' 设置的 'default' 值。",
|
||||
"C/C++ Configurations": "C/C++ 配置",
|
||||
"IntelliSense: Updating": "IntelliSense: 正在更新",
|
||||
"IntelliSense: Ready": "IntelliSense: 就绪",
|
||||
"Initializing Workspace": "正在初始化工作区",
|
||||
"Indexing Workspace": "正在索引工作区",
|
||||
"Parsing Workspace": "分析工作区",
|
||||
"Parsing Workspace: Paused": "分析工作区: 已暂停",
|
||||
"Parsing Complete": "分析完毕",
|
||||
"Rescan Workspace": "重新扫描工作区",
|
||||
"Parsing Open Files": "正在分析打开的文件",
|
||||
"Code Analysis: Running": "代码分析: 正在运行",
|
||||
"Code Analysis: Paused": "代码分析: 已暂停",
|
||||
"Code Analysis Mode: ": "代码分析模式:",
|
||||
"click to preview results": "单击以预览结果",
|
||||
"Configure IntelliSense": "配置 IntelliSense",
|
||||
"C/C++ IntelliSense Status": "C/C++ IntelliSense 状态",
|
||||
"Rescan": "重新扫描",
|
||||
"Rescan IntelliSense": "重新扫描 IntelliSense",
|
||||
"C/C++ Tag Parser Status": "C/C++ 标记分析器状态",
|
||||
"Initializing...": "正在初始化...",
|
||||
"Resume": "继续",
|
||||
"Pause": "暂停",
|
||||
"C/C++ Code Analysis Status": "C/C++ 代码分析状态",
|
||||
"Run Now": "立即运行",
|
||||
"Automatic": "自动",
|
||||
"Manual": "手动",
|
||||
"Options": "选项",
|
||||
"Starting...": "正在启动...",
|
||||
"Running: {0} / {1} ({2}%)": "正在运行: {0}/{1} ({2}%)",
|
||||
"Select a code analysis command...": "选择代码分析命令...",
|
||||
"Start Another...": "启动另一个...",
|
||||
"Select a command...": "选择命令...",
|
||||
"Run Code Analysis on Active File": "在活动文件上运行代码分析",
|
||||
"Run Code Analysis on All Files": "在所有文件上运行代码分析",
|
||||
"Run Code Analysis on Open Files": "在打开的文件上运行代码分析",
|
||||
"C/C++ References Status": "C/C++ 引用状态",
|
||||
"C/C++ Configuration": "C/C++ 配置",
|
||||
"C/C++ Configure IntelliSense": "C/C++ 配置 IntelliSense",
|
||||
"Select a Configuration...": "选择配置...",
|
||||
"Edit Configurations (UI)": "编辑配置(UI)",
|
||||
"Edit Configurations (JSON)": "编辑配置(JSON)",
|
||||
"Select a Configuration Provider...": "选择配置提供程序...",
|
||||
"active": "活动",
|
||||
"none": "无",
|
||||
"Disable the active configuration provider, if applicable.": "禁用活动配置提供程序(如果适用)。",
|
||||
"Select a workspace folder...": "选择工作区文件夹…",
|
||||
"Failed to connect to {0}": "未能连接到 {0}",
|
||||
"\"localSocket\" cannot be specified at the same time with \"bindAddress\" or \"port\" in localForwards": "在 localForwards 中,不能同时使用 \"bindAddress\" 或 \"port\" 指定 \"localSocket\"",
|
||||
"\"port\" or \"localSocket\" required in localForwards": "localForwards 中需要 \"port\" 或 \"localSocket\"",
|
||||
"\"remoteSocket\" cannot be specified at the same time with \"host\" or \"hostPort\" in localForwards": "在 localForwards 中,不能同时使用 \"host\" 或 \"hostPort\" 指定 \"remoteSocket\"",
|
||||
"\"host\" and \"hostPort\", or \"remoteSocket\" required in localForwards": "localForwards 中需要 \"host\" 和 \"hostPort\" 或 \"remoteSocket\"",
|
||||
"SSH command canceled": "已取消 SSH 命令",
|
||||
"Enter passphrase for ssh key {0}": "输入 ssh 密钥的密码 {0}",
|
||||
"Enter password for user \"{0}\"": "输入用户 \"{0}\" 的密码",
|
||||
"Enter password": "输入密码",
|
||||
"Are you sure you want to continue?": "您确定要继续吗?",
|
||||
"\"{0}\" has fingerprint \"{1}\".": "\"{0}\" 具有指纹 \"{1}\"。",
|
||||
"Continue": "继续",
|
||||
"\"{0}\" terminal command canceled.": "已取消 \"{0}\" 终端命令。",
|
||||
"\"{0}\" terminal command done.": "已完成 \"{0}\" 终端命令。",
|
||||
"Task '{0}' is canceled, but the underlying command may not be terminated. Please check manually.": "已取消任务 \"{0}\",但基础命令可能不会终止。请手动进行检查。",
|
||||
"\"{0}\" process failed: {1}": "\"{0}\" 进程失败: {1}",
|
||||
"\"{0}\" wrote data to terminal: \"{1}\".": "\"{0}\" 已将数据写入终端: \"{1}\"。",
|
||||
"Failed to find user info for SSH. This could be caused by VS Code being installed using 'snap'. Please reinstall VS Code using the 'deb' package if you are planning to use SSH features.": "找不到 SSH 的用户信息。这可能是由于使用 \"snap\" 安装 VS Code 导致的。如果计划使用 SSH 功能,请使用 \"deb\" 包重新安装 VS Code。",
|
||||
"Failed to parse SSH configuration file {0}: {1}": "无法分析 SSH 配置文件 {0}: {1}",
|
||||
"Failed to read file {0}.": "未能读取文件 {0}。",
|
||||
"Failed to write to file {0}.": "无法写入文件 {0}。",
|
||||
"Inline macro is not available at this location.": "内联宏在此位置不可用。",
|
||||
"AI-generated content may be incorrect.": "AI 生成的内容可能不正确。",
|
||||
"Invalid identifier provided for the Rename Symbol operation.": "为“重命名符号”操作提供的标识符无效。",
|
||||
"A definition for the selected symbol could not be located.": "找不到所选符号的定义。",
|
||||
"No SSH targets": "无 SSH 目标",
|
||||
"Active SSH target selection cancelled.": "已取消活动 SSH 目标选择。",
|
||||
"{0} Add New SSH Target...": "{0} 添加新的 SSH 目标...",
|
||||
"Select an SSH target": "选择 SSH 目标",
|
||||
"[Active]": "[活动]"
|
||||
}
|
||||
@@ -28,4 +28,4 @@
|
||||
"c_cpp_properties.schema.json.definitions.env": "可以使用 `${变量}` 或 `${env:变量}` 语法在此文件中的任何位置重复使用的自定义变量。",
|
||||
"c_cpp_properties.schema.json.definitions.version": "配置文件的版本。此属性由扩展托管。请勿更改它。",
|
||||
"c_cpp_properties.schema.json.definitions.enableConfigurationSquiggles": "控制扩展是否将报告在 `c_cpp_properties.json` 中检测到的错误。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -385,6 +385,7 @@
|
||||
"c_cpp.taskDefinitions.args.quoting.weak.description": "使用 Shell 的弱引用字符来引用参数(例如在 bash 下的 \")。",
|
||||
"c_cpp.taskDefinitions.options.description": "其他命令选项。",
|
||||
"c_cpp.taskDefinitions.options.cwd.description": "已执行程序或脚本的当前工作目录。如果省略,则使用代码的当前工作区根。",
|
||||
"c_cpp.taskDefinitions.problemMatcher.description": "用于检测任务输出中编译程序错误和警告的一个或多个问题匹配器。",
|
||||
"c_cpp.taskDefinitions.detail.description": "任务的其他详细信息。",
|
||||
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.description": "相同源树的当前路径和编译时路径。EditorPath 下的文件会映射到 CompileTimePath 路径以进行断点匹配,并在显示 stacktrace 位置时,从 CompileTimePath 映射到 EditorPath。",
|
||||
"c_cpp.debuggers.sourceFileMap.sourceFileMapEntry.editorPath.description": "编辑器将使用的源树的路径。",
|
||||
@@ -392,7 +393,7 @@
|
||||
"c_cpp.debuggers.symbolOptions.description": "用于控制如何找到和加载符号(.pdb 文件)的选项。",
|
||||
"c_cpp.debuggers.unknownBreakpointHandling.description": "控制在命中时如何处理(通常通过原始 GDB 命令)外部设置的断点。\n允许的值为 \"throw\" (好像应用程序抛出了异常)和 \"stop\" (只会暂停调试会话)。默认值为 \"throw\"。",
|
||||
"c_cpp.debuggers.debuginfod.description": "控制 GDB 的 debuginfod 行为,以从 debuginfod 服务器下载调试符号。",
|
||||
"c_cpp.debuggers.debuginfod.enabled.description": "如果为 true (默认值),则启用 GDB 的 debuginfod 支持。设置为 false 可阻止 GDB 联系 debuginfod 服务器。",
|
||||
"c_cpp.debuggers.debuginfod.enabled.description": "如果为 false (默认值),GDB 将不会连接 debuginfod 服务器。设置为 true 以启用 debuginfod 支持。",
|
||||
"c_cpp.debuggers.debuginfod.timeout.description": "debuginfod 服务器请求的超时(以秒为单位)。默认值为 30。设置为 0 可使用 GDB/libdebuginfod 默认值(无替代)。",
|
||||
"c_cpp.debuggers.VSSymbolOptions.description": "提供用于找到符号并将其加载到调试适配器的配置。",
|
||||
"c_cpp.debuggers.VSSymbolOptions.searchPaths.description": "在其中搜索 .pdb 文件的符号服务器 URL (例如 http://MyExampleSymbolServer)或目录(例如 /build/symbols)的数组。除了默认位置,还将搜索这些目录 - 在模块以及 pdb 最初放置到的路径的旁边。",
|
||||
@@ -406,6 +407,7 @@
|
||||
"c_cpp.debuggers.VSSymbolOptionsModuleFilter.excludedModules.description": "调试程序不得为其加载符号的模块数组。支持通配符(例如: MyCompany.*.dll)。\n\n会忽略此属性,除非“模式”设置为 \"loadAllButExcluded\"。",
|
||||
"c_cpp.debuggers.VSSymbolOptionsModuleFilter.includedModules.description": "调试程序应为其加载符号的模块数组。支持通配符(例如: MyCompany.*.dll)。\n\n会忽略此属性,除非“模式”设置为 \"loadOnlyIncluded\"。",
|
||||
"c_cpp.debuggers.VSSymbolOptionsModuleFilter.includeSymbolsNextToModules.description": "如果为 true,则对于未在 \"includedModules\" 数组中的任何模块,调试程序将在模块本身和启动可执行文件旁边进行检查,但它将不检查符号搜索列表上的路径。此选项默认为 \"true\"\n\n会忽略此属性,除非“模式”设置为 \"loadOnlyIncluded\"。",
|
||||
"c_cpp.debuggers.ignoreRunWithoutDebuggingWarnings.description": "如果为 true,那么在运行但不调试的情况下,当未能在终端中启动程序时不会记录任何警告。",
|
||||
"c_cpp.semanticTokenTypes.referenceType.description": "C++/CLI 引用类型的样式。",
|
||||
"c_cpp.semanticTokenTypes.cliProperty.description": "C++/CLI 属性的样式。",
|
||||
"c_cpp.semanticTokenTypes.genericType.description": "C++/CLI 泛型类型的样式。",
|
||||
@@ -458,4 +460,4 @@
|
||||
"c_cpp.configuration.refactoring.includeHeader.never.description": "从不包含头文件。",
|
||||
"c_cpp.languageModelTools.configuration.displayName": "C/C++ 配置",
|
||||
"c_cpp.languageModelTools.configuration.userDescription": "活动 C 或 C++ 文件的配置,例如语言标准版本和目标平台。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"ignoring.lines.in.envfile": "忽略 {0} {1} 中不可分析的行: "
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,4 +8,4 @@
|
||||
"attach.to.process": "附加到进程",
|
||||
"select.process.attach": "选择要附加到的进程",
|
||||
"process.not.selected": "未选择进程。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,4 +12,4 @@
|
||||
"no.process.list": "传输附加无法获取进程列表。",
|
||||
"failed.to.make.gdb.connection": "无法建立 GDB 连接:“{0}”。",
|
||||
"failed.to.parse.processes": "无法分析进程:“{0}”。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,4 +48,4 @@
|
||||
"path.to.pipe.program": "管道程序的完整路径,如 {0}",
|
||||
"enable.pretty.printing": "为 {0} 启用整齐打印",
|
||||
"enable.intel.disassembly.flavor": "将反汇编风格设置为 {0}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,4 +19,4 @@
|
||||
"launch.bash.windows": "使用 {0} 在 Windows 上的 Bash 中启动。",
|
||||
"bash.on.windows.attach": "Windows 上的 Bash 附加",
|
||||
"remote.attach.bash.windows": "使用 {0} 附加到在 Windows 上的 Bash 中运行的远程进程。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
{
|
||||
"debugger.not.available": "调试程序类型“{0}”不适用于非 Windows 计算机。",
|
||||
"debugger.noDebug.requestType.not.supported": "仅启动配置支持“运行但不调试”。",
|
||||
"debugger.noDebug.pipeTransport.not.supported": "已设置 \"pipeTransport\" 的配置不支持“运行但不调试”。",
|
||||
"debugger.noDebug.debugServerPath.not.supported": "已设置 \"debugServerPath\" 的配置不支持“运行但不调试”。",
|
||||
"debugger.noDebug.miDebuggerServerAddress.not.supported": "已设置 \"miDebuggerServerAddress\" 的配置不支持“运行但不调试”。",
|
||||
"debugger.noDebug.coreDumpPath.not.supported": "已设置 \"coreDumpPath\" 的配置不支持“运行但不调试”。"
|
||||
}
|
||||
"debugger.unsupported.properties": "具有以下属性的启动配置无法直接在终端中运行: {0}",
|
||||
"debugger.fallback.message": "程序输出将改为显示在调试控制台中。",
|
||||
"debugger.fallback.message2": "若要取消显示此警告,请在启动配置中将 'ignoreRunWithoutDebuggingWarnings' 属性设置为 true。"
|
||||
}
|
||||
|
||||
@@ -15,4 +15,4 @@
|
||||
"yes": "是",
|
||||
"no": "否",
|
||||
"ssh.target.delete.confirmation": "是否确定要永久删除“{0}”?"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
"cancel.processList.spawn": "已取消“{0}”。",
|
||||
"error.processList.spawn": "“{0}”已退出,代码为“{1}”。",
|
||||
"failed.processList.spawn": "未能生成“{0}”。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"no.terminal.emulator": "找不到终端仿真器。请将 $TERMINAL 环境变量设置为你选择的终端仿真器,或安装以下程序之一: x-terminal-emulator、gnome-terminal、konsole、xterm。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,4 +6,4 @@
|
||||
{
|
||||
"generate.copilot.description": "生成 Copilot 摘要",
|
||||
"copilot.disclaimer": "AI 生成的内容可能不正确。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,4 +7,4 @@
|
||||
"expands.to": "扩展到:",
|
||||
"inline.macro": "内联宏",
|
||||
"inline.macro.not.available": "内联宏在此位置不可用。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,4 +6,4 @@
|
||||
{
|
||||
"invalid.identifier.for.rename": "为“重命名符号”操作提供的标识符无效。",
|
||||
"unable.to.locate.selected.symbol": "找不到所选符号的定义。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"loggingLevel.changed": "{0} 已更改为: {1}",
|
||||
"dismiss.button": "消除",
|
||||
"disable.warnings.button": "禁用警告",
|
||||
"unable.to.provide.configuration": "{0} 无法为“{1}”提供 IntelliSense 配置信息。将改为使用“{2}”配置中的设置。",
|
||||
"unable.to.provide.configuration": "{0} 无法提供 IntelliSense 配置信息。将改为使用“{1}”配置中的设置。",
|
||||
"config.not.found": "找不到请求的配置名称: {0}",
|
||||
"unsupported.client": "不支持的客户端",
|
||||
"timed.out": "将在 {0} 毫秒后超时。",
|
||||
@@ -41,4 +41,4 @@
|
||||
"handle.extract.new.function": "NewFunction",
|
||||
"handle.extract.error": "未能提取到函数: {0}",
|
||||
"invalid.edit": "未能提取到函数。生成了无效的编辑:“{0}”"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,4 +12,4 @@
|
||||
"clear.this.problem": "清除此 {0} 问题",
|
||||
"fix.this.problem": "修复此 {0} 问题",
|
||||
"show.documentation.for": "显示 {0} 文档"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,4 +24,4 @@
|
||||
"multiple.paths.not.allowed": "不允许使用多个路径。",
|
||||
"multiple.paths.should.be.separate.entries": "多个路径应是数组中的单独条目。",
|
||||
"paths.are.not.directories": "路径不是目录: {0}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"copilot.relatedfilesprovider.error": "检索结果时出错。原因: {0}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,4 +13,4 @@
|
||||
"build.finished.with.error": "生成已完成,但出现错误。",
|
||||
"build.finished.with.warnings": "生成已完成,但收到警告。",
|
||||
"build.finished.successfully": "生成已成功完成。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,4 +19,4 @@
|
||||
"dev.env.for": "{1} 的 {0} 开发人员环境",
|
||||
"default.env": "{0} 的默认环境",
|
||||
"host.target": "主机 = {0},目标 = {1}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"learn.how.to.install.a.library": "了解如何使用 vcpkg 为此标头安装库",
|
||||
"copy.vcpkg.command": "将用于安装“{0}”的 vcpkg 命令复制到剪贴板",
|
||||
"on.disabled.command": "当 `C_Cpp.intelliSenseEngine` 设置为 `disabled` 时,无法执行与 IntelliSense 相关的命令。",
|
||||
"switch.header.source": "正在切换标头/源...",
|
||||
"client.not.found": "未找到客户端",
|
||||
"ok": "确定",
|
||||
"install.compiler.mac.title": "现在将安装 clang 编译器",
|
||||
@@ -24,4 +25,4 @@
|
||||
"copilot.hover.excluded": "包含此符号的定义或声明的文件已排除在 Copilot 的使用范围之外。",
|
||||
"copilot.hover.unavailable.symbol": "Copilot 摘要不可用于此符号。",
|
||||
"copilot.hover.error": "生成 Copilot 摘要时出错。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"duplicate.multiline.patterns": "检测到重复的多行注释模式。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,4 +6,4 @@
|
||||
{
|
||||
"copilot.projectcontext.error": "检索项目上下文时出错。原因: {0}",
|
||||
"copilot.cppcontext.error": "检索 #cpp 上下文时出错。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"c.cpp.symbolscope.separator": "{0},{1}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,4 +32,4 @@
|
||||
"files.confirmed": "已确认 {0} 个文件,共 {1} 个文件。{2}",
|
||||
"c.cpp.peek.references": "C/C++ 速览引用",
|
||||
"some.references.may.be.missing": "[警告] 某些引用可能丢失,因为在 {0} 启动时,工作区分析不完整。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"goto.reference": "转到引用"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"editorconfig.default.behavior": "代码格式设置使用 .editorconfig 中的设置,而不是 .clang-format 中的设置。有关详细信息,请参阅文档以了解 'C_Cpp.formatting' 设置的 'default' 值。"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"c.cpp.configurations": "C/C++ 配置"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,4 +53,4 @@
|
||||
"none": "无",
|
||||
"disable.configuration.provider": "禁用活动配置提供程序(如果适用)。",
|
||||
"select.workspace": "选择工作区文件夹…"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,4 +8,4 @@
|
||||
"active.ssh.target.selection.cancelled": "已取消活动 SSH 目标选择。",
|
||||
"add.new.ssh.target": "{0} 添加新的 SSH 目标...",
|
||||
"select.ssh.target": "选择 SSH 目标"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"ssh.target.active.description": "[活动]"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,4 @@
|
||||
// Do not edit this file. It is machine generated.
|
||||
{
|
||||
"failed.to.connect": "未能连接到 {0}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,4 +8,4 @@
|
||||
"local.forward.local.missing": "localForwards 中需要 \"port\" 或 \"localSocket\"",
|
||||
"local.forward.remote.conflict": "在 localForwards 中,不能同时使用 \"host\" 或 \"hostPort\" 指定 \"remoteSocket\"",
|
||||
"local.forward.remote.missing": "localForwards 中需要 \"host\" 和 \"hostPort\" 或 \"remoteSocket\""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,4 +17,4 @@
|
||||
"ssh.continuing.command.canceled": "已取消任务 \"{0}\",但基础命令可能不会终止。请手动进行检查。",
|
||||
"ssh.process.failed": "\"{0}\" 进程失败: {1}",
|
||||
"ssh.wrote.data.to.terminal": "\"{0}\" 已将数据写入终端: \"{1}\"。"
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user