Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2189c2346c | ||
|
|
37e3936cc7 | ||
|
|
a6b12a8c10 | ||
|
|
775fd692ea | ||
|
|
ddb54454e3 | ||
|
|
2db5c05c37 | ||
|
|
bc9a72cf2f | ||
|
|
291e5a3228 | ||
|
|
7774dafb1f | ||
|
|
55ef430b96 | ||
|
|
bb5943c755 | ||
|
|
69d4585eb2 | ||
|
|
8e82004017 | ||
|
|
900aa75527 | ||
|
|
61b53bcda8 | ||
|
|
34d375a616 | ||
|
|
61815d8869 | ||
|
|
f309f90a4f | ||
|
|
fa097e4966 | ||
|
|
6770b0a25a | ||
|
|
5f56194feb | ||
|
|
21a8e34c91 | ||
|
|
5451e32bd8 | ||
|
|
97943a9d67 | ||
|
|
4884af8c94 | ||
|
|
65beaebaf9 | ||
|
|
6e3a7b2b7e | ||
|
|
5c16227c40 | ||
|
|
37a558260d | ||
|
|
e08377a353 | ||
|
|
61421ea4fe | ||
|
|
0608ecd86f | ||
|
|
ecdfabdd17 | ||
|
|
f0d05b9cdf | ||
|
|
401393418f | ||
|
|
1d239e0b31 | ||
|
|
6e96c3ea13 | ||
|
|
4bb5b8a11f | ||
|
|
be8236fd80 | ||
|
|
c813ab5a99 | ||
|
|
20cfc2bbef | ||
|
|
577a7b8361 | ||
|
|
7a4b4ddb37 | ||
|
|
7fe4f030bd | ||
|
|
3a4df8c003 | ||
|
|
69485c736d | ||
|
|
c9e571a889 | ||
|
|
5e8ca66b5f | ||
|
|
b0efdb5628 | ||
|
|
886008ce84 | ||
|
|
9d161fb345 | ||
|
|
1a661ebd5b | ||
|
|
d84696e9a7 | ||
|
|
de84f488f2 | ||
|
|
a9609ef47b | ||
|
|
e83f362050 | ||
|
|
38e074451a | ||
|
|
a651e53430 | ||
|
|
77effb9b85 | ||
|
|
304b92419f | ||
|
|
5aaa9197c2 | ||
|
|
c239d6b162 | ||
|
|
770ef315d5 | ||
|
|
a66064beef | ||
|
|
4bc7ad3f6e | ||
|
|
b3c1b117c2 | ||
|
|
a38624d1ef | ||
|
|
2c26037f43 | ||
|
|
318f7058b0 | ||
|
|
8cadd2dac8 | ||
|
|
c5fe03c8e6 | ||
|
|
df350e6552 | ||
|
|
a8cb5375e9 | ||
|
|
40e39acb0e | ||
|
|
8ff42d0d00 | ||
|
|
597f29c39a | ||
|
|
fc048916c0 | ||
|
|
6de78e2d05 | ||
|
|
6bddc0fb58 | ||
|
|
e0cf47d749 | ||
|
|
adb6bcf8d5 | ||
|
|
e80bd3b0d1 | ||
|
|
4a1150ebaa | ||
|
|
a5d00e3123 | ||
|
|
b977587cb1 | ||
|
|
ca81d009fd | ||
|
|
9b3b23fafa | ||
|
|
5bbac4e637 | ||
|
|
ea1fbea183 | ||
|
|
f681142c40 | ||
|
|
1cd186b3f3 | ||
|
|
e23c41835d | ||
|
|
d9fe0c8874 | ||
|
|
5ad75b4445 | ||
|
|
11b63666c5 | ||
|
|
920997d1d8 | ||
|
|
05d57e1c3c | ||
|
|
19a86b5d2a | ||
|
|
980cccb1ce | ||
|
|
c3b4190601 | ||
|
|
ea2540f7f0 | ||
|
|
4015e0fc29 | ||
|
|
e9bf244599 | ||
|
|
4221a90ee1 | ||
|
|
f8624937ef | ||
|
|
3e3c93b814 | ||
|
|
9771ca6fb1 | ||
|
|
66fd5af437 | ||
|
|
bdb77c0bcf |
@@ -1,2 +1,4 @@
|
||||
registry=https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/
|
||||
always-auth=true
|
||||
always-auth=true
|
||||
# Disable postinstall scripts for supply chain security. Allowlist exceptions with npm trust: https://docs.npmjs.com/cli/v11/commands/npm-trust
|
||||
ignore-scripts=true
|
||||
|
||||
@@ -38,5 +38,5 @@ inputs:
|
||||
readonly:
|
||||
description: If true, changes are not applied.
|
||||
runs:
|
||||
using: 'node20'
|
||||
using: 'node24'
|
||||
main: 'index.js'
|
||||
|
||||
@@ -29,5 +29,5 @@ inputs:
|
||||
readonly:
|
||||
description: If true, changes are not applied.
|
||||
runs:
|
||||
using: 'node20'
|
||||
using: 'node24'
|
||||
main: 'index.js'
|
||||
|
||||
@@ -33,5 +33,5 @@ inputs:
|
||||
readonly:
|
||||
description: If true, changes are not applied.
|
||||
runs:
|
||||
using: 'node20'
|
||||
using: 'node24'
|
||||
main: 'index.js'
|
||||
|
||||
@@ -43,5 +43,5 @@ inputs:
|
||||
readonly:
|
||||
description: If true, changes are not applied.
|
||||
runs:
|
||||
using: 'node20'
|
||||
using: 'node24'
|
||||
main: 'index.js'
|
||||
|
||||
Generated
+1378
-1241
File diff suppressed because it is too large
Load Diff
@@ -10,12 +10,12 @@
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.9.1",
|
||||
"@actions/github": "^6.0.0",
|
||||
"@actions/core": "^2.0.3",
|
||||
"@actions/github": "^8.0.1",
|
||||
"@octokit/rest": "^21.1.1",
|
||||
"@slack/web-api": "^6.9.1",
|
||||
"applicationinsights": "^2.5.1",
|
||||
"axios": "^1.12.1",
|
||||
"axios": "^1.15.0",
|
||||
"uuid": "^8.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -39,7 +39,9 @@
|
||||
"typescript": "^4.7.4",
|
||||
"yargs": "^17.5.1"
|
||||
},
|
||||
"resolutions": {
|
||||
"minimatch": "^3.0.5"
|
||||
"overrides": {
|
||||
"serialize-javascript": "^7.0.5",
|
||||
"flatted": "^3.4.2",
|
||||
"fast-xml-parser": "^5.5.7"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Add Comment
|
||||
@@ -27,3 +30,4 @@ jobs:
|
||||
createdAfter: "2024-07-22"
|
||||
addComment: "Thank you for reporting this issue. We’ll let you know if we need more information to investigate it. Additionally, if you're working with GDB/LLDB, please note that the code is open source at https://github.com/microsoft/MIEngine/wiki/Contributing-Code . Your contributions are always welcome and appreciated."
|
||||
addLabels: help wanted
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -26,3 +29,4 @@ jobs:
|
||||
ignoreLabels: Language Service,internal
|
||||
closeDays: 0
|
||||
closeComment: "This issue has been closed because the described behavior was determined to be by design."
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -28,3 +31,4 @@ jobs:
|
||||
closeComment: "This issue has been closed because the described behavior was determined to be by design."
|
||||
pingDays: 80
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if it is no longer relevant."
|
||||
|
||||
|
||||
@@ -6,9 +6,12 @@ on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
job:
|
||||
uses: ./.github/workflows/job-compile-and-test.yml
|
||||
with:
|
||||
runner-env: ubuntu-22.04
|
||||
platform: linux
|
||||
runner-env: ubuntu-24.04
|
||||
platform: linux
|
||||
|
||||
@@ -6,10 +6,13 @@ on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
job:
|
||||
uses: ./.github/workflows/job-compile-and-test.yml
|
||||
with:
|
||||
runner-env: macos-14
|
||||
runner-env: macos-15
|
||||
platform: mac
|
||||
yarn-args: --network-timeout 100000
|
||||
yarn-args: --network-timeout 100000
|
||||
|
||||
@@ -6,9 +6,12 @@ on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
job:
|
||||
uses: ./.github/workflows/job-compile-and-test.yml
|
||||
with:
|
||||
runner-env: windows-2022
|
||||
runner-env: windows-2025
|
||||
platform: windows
|
||||
|
||||
@@ -19,6 +19,9 @@ on:
|
||||
schedule:
|
||||
- cron: '29 4 * * 3'
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze (${{ matrix.language }})
|
||||
@@ -56,7 +59,7 @@ 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@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
@@ -91,3 +94,4 @@ jobs:
|
||||
uses: github/codeql-action/analyze@v3
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -28,3 +31,4 @@ jobs:
|
||||
closeComment: "This issue has been closed because it is a duplicate of another issue we are tracking."
|
||||
pingDays: 80
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if it is no longer relevant."
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -30,3 +33,4 @@ jobs:
|
||||
closeComment: "This feature request is being closed due to insufficient upvotes. Please leave a 👍-upvote or 👎-downvote reaction on the issue to help us prioritize it. When enough upvotes are received, this issue will be eligible for our backlog."
|
||||
setMilestoneId: 30
|
||||
ignoreMilestoneNames: "*"
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -30,3 +33,4 @@ jobs:
|
||||
closeComment: "This feature request is being closed due to insufficient upvotes. Please leave a 👍-upvote or 👎-downvote reaction on the issue to help us prioritize it. When enough upvotes are received, this issue will be eligible for our backlog."
|
||||
milestoneName: Triage
|
||||
milestoneId: 30
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Run Reopener
|
||||
@@ -31,3 +34,4 @@ jobs:
|
||||
milestoneName: Triage
|
||||
setMilestoneId: 28
|
||||
removeLabels: more votes needed
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -26,3 +29,4 @@ jobs:
|
||||
ignoreLabels: Language Service,internal
|
||||
closeDays: 0
|
||||
closeComment: "This issue has been closed because it is external or not applicable to the extension."
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -30,3 +33,4 @@ jobs:
|
||||
closeComment: "This feature request is being closed due to insufficient upvotes. Please leave a 👍-upvote or 👎-downvote reaction on the issue to help us prioritize it. When enough upvotes are received, this issue will be eligible for our backlog."
|
||||
setMilestoneId: 30
|
||||
ignoreMilestoneNames: "*"
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -30,3 +33,4 @@ jobs:
|
||||
closeComment: "This feature request is being closed due to insufficient upvotes. Please leave a 👍-upvote or 👎-downvote reaction on the issue to help us prioritize it. When enough upvotes are received, this issue will be eligible for our backlog."
|
||||
milestoneName: Triage
|
||||
milestoneId: 30
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Add Comment
|
||||
@@ -27,3 +30,4 @@ jobs:
|
||||
createdAfter: "2024-07-22"
|
||||
addComment: "Thank you for your feature request. While we may not be able to implement it immediately, we will monitor community reactions to see how it fits into our backlog. Additionally, if you're working with GDB/LLDB, please note that the code is open source at https://github.com/microsoft/MIEngine/wiki/Contributing-Code . Your contributions are always welcome and appreciated."
|
||||
addLabels: help wanted
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Run Reopener
|
||||
@@ -31,3 +34,4 @@ jobs:
|
||||
milestoneName: Triage
|
||||
setMilestoneId: 28
|
||||
removeLabels: more votes needed
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -26,3 +29,4 @@ jobs:
|
||||
ignoreLabels: Language Service,internal
|
||||
closeDays: 180
|
||||
closeComment: "This issue has been closed as lower priority. We're sorry if this issue still impacts you but unfortunately we're not able to address this. We will accept a pull request from the community if it's applicable for this issue."
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -26,3 +29,4 @@ jobs:
|
||||
ignoreLabels: Language Service,internal
|
||||
closeDays: 180
|
||||
closeComment: "This issue has been closed as lower priority. We're sorry if this issue still impacts you but unfortunately we're not able to address this. We will accept a pull request from the community if it's applicable for this issue."
|
||||
|
||||
|
||||
@@ -14,17 +14,20 @@ on:
|
||||
yarn-args:
|
||||
type: string
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ${{ inputs.runner-env }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Use Node.js 22
|
||||
- name: Use Node.js 24
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
node-version: 24
|
||||
|
||||
- name: Install Dependencies
|
||||
run: yarn install ${{ inputs.yarn-args }}
|
||||
@@ -63,6 +66,11 @@ jobs:
|
||||
# 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
|
||||
|
||||
# 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
|
||||
|
||||
@@ -78,4 +86,12 @@ jobs:
|
||||
# uses: coactions/setup-xvfb@v1
|
||||
# with:
|
||||
# run: yarn test --scenario=MultirootDeadlockTest
|
||||
# working-directory: Extension
|
||||
# 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
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Run Locker
|
||||
@@ -25,3 +28,4 @@ jobs:
|
||||
daysSinceClose: 45
|
||||
daysSinceUpdate: 3
|
||||
ignoreLabels: more votes needed,debugger,internal
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -29,3 +32,4 @@ jobs:
|
||||
closeComment: "This issue has been closed because it needs more information and has not had recent activity."
|
||||
pingDays: 7
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -28,3 +31,4 @@ jobs:
|
||||
closeComment: "This issue has been closed because it needs more information and has not had recent activity."
|
||||
pingDays: 14
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -29,3 +32,4 @@ jobs:
|
||||
closeComment: "This issue has been closed because it is a question and has not had recent activity."
|
||||
pingDays: 7
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the question has been answered."
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ on:
|
||||
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
|
||||
default: false
|
||||
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -15,7 +18,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v5
|
||||
- name: Install Actions
|
||||
run: cd ./.github/actions && npm install --production && cd ../..
|
||||
- name: Stale Closer
|
||||
@@ -28,3 +31,4 @@ jobs:
|
||||
closeComment: "This issue has been closed because it is a question and has not had recent activity."
|
||||
pingDays: 80
|
||||
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the question has been answered."
|
||||
|
||||
|
||||
+16
-22
@@ -31,12 +31,12 @@ extends:
|
||||
parameters:
|
||||
pool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
sdl:
|
||||
sourceAnalysisPool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
binskim:
|
||||
preReleaseVersion: '4.3.1'
|
||||
@@ -60,6 +60,8 @@ extends:
|
||||
enabled: true
|
||||
featureFlags:
|
||||
autoBaseline: false
|
||||
settings:
|
||||
networkIsolationPolicy: Permissive,CFSClean,CFSClean2,CFSClean3
|
||||
|
||||
stages:
|
||||
- stage: build
|
||||
@@ -79,9 +81,6 @@ extends:
|
||||
steps:
|
||||
- checkout: self
|
||||
|
||||
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
|
||||
displayName: Use Yarn 1.x
|
||||
|
||||
- task: UseNode@1
|
||||
displayName: Use Node 22.x
|
||||
inputs:
|
||||
@@ -90,11 +89,6 @@ extends:
|
||||
- script: IF EXIST %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc del %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc
|
||||
displayName: Delete .npmrc if it exists
|
||||
|
||||
- task: Npm@0
|
||||
displayName: Install vsce
|
||||
inputs:
|
||||
arguments: --global @vscode/vsce
|
||||
|
||||
- script: mkdir $(Build.ArtifactStagingDirectory)\Extension
|
||||
displayName: Create Extension Staging Directory
|
||||
|
||||
@@ -105,22 +99,22 @@ extends:
|
||||
script: |
|
||||
export SRC_DIR=$(echo $BUILD_SOURCESDIRECTORY | sed 's|\\|/|g')
|
||||
cd "$SRC_DIR/Extension"
|
||||
yarn run vsix-prepublish
|
||||
npm run vsix-prepublish
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "yarn run vsix-prepublish failed, sleeping for 30s before retrying..."
|
||||
echo "npm run vsix-prepublish failed, sleeping for 30s before retrying..."
|
||||
sleep 30
|
||||
exit 1
|
||||
fi
|
||||
retryCountOnTaskFailure: 3
|
||||
|
||||
- script: |
|
||||
cd $(Build.SourcesDirectory)\Extension
|
||||
vsce package --yarn -o $(Build.ArtifactStagingDirectory)\Extension\cpptools.vsix
|
||||
name: ProcessRunner_12
|
||||
displayName: Run VSCE to package vsix
|
||||
- script: yarn install --frozen-lockfile
|
||||
displayName: Install dependencies with yarn
|
||||
workingDirectory: $(Build.SourcesDirectory)\Extension
|
||||
|
||||
- task: Npm@0
|
||||
displayName: Uninstall vsce
|
||||
inputs:
|
||||
command: uninstall
|
||||
arguments: --global @vscode/vsce
|
||||
- script: if not exist node_modules\@vscode\vsce-sign\bin\vsce-sign.exe (echo Missing vsce-sign.exe && exit 1)
|
||||
displayName: Verify vsce-sign binary exists
|
||||
workingDirectory: $(Build.SourcesDirectory)\Extension
|
||||
|
||||
- script: npx vsce package --yarn -o $(Build.ArtifactStagingDirectory)\Extension\cpptools.vsix
|
||||
displayName: Run VSCE to package vsix
|
||||
workingDirectory: $(Build.SourcesDirectory)\Extension
|
||||
|
||||
@@ -30,12 +30,12 @@ extends:
|
||||
parameters:
|
||||
pool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
sdl:
|
||||
sourceAnalysisPool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
stages:
|
||||
- stage: stage
|
||||
|
||||
@@ -24,13 +24,15 @@ extends:
|
||||
parameters:
|
||||
pool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
sdl:
|
||||
sourceAnalysisPool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
settings:
|
||||
networkIsolationPolicy: Permissive,CFSClean,CFSClean2,CFSClean3
|
||||
|
||||
stages:
|
||||
- stage: package
|
||||
@@ -44,5 +46,5 @@ extends:
|
||||
|
||||
- template: /Build/package/jobs_package_vsix.yml@self
|
||||
parameters:
|
||||
vsixName: cpptools-extension-pack.vsix
|
||||
vsixName: cpptools-extension-pack
|
||||
srcDir: ExtensionPack
|
||||
@@ -24,13 +24,15 @@ extends:
|
||||
parameters:
|
||||
pool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
sdl:
|
||||
sourceAnalysisPool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
settings:
|
||||
networkIsolationPolicy: Permissive,CFSClean,CFSClean2,CFSClean3
|
||||
|
||||
stages:
|
||||
- stage: package
|
||||
@@ -44,5 +46,5 @@ extends:
|
||||
|
||||
- template: /Build/package/jobs_package_vsix.yml@self
|
||||
parameters:
|
||||
vsixName: cpptools-themes.vsix
|
||||
vsixName: cpptools-themes
|
||||
srcDir: Themes
|
||||
@@ -11,7 +11,7 @@ parameters:
|
||||
|
||||
jobs:
|
||||
- job: package
|
||||
displayName: Build ${{ parameters.vsixName }}
|
||||
displayName: Build ${{ parameters.vsixName }}.vsix
|
||||
timeoutInMinutes: 30
|
||||
cancelTimeoutInMinutes: 1
|
||||
templateContext:
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
autoBaseline: false
|
||||
outputs:
|
||||
- output: pipelineArtifact
|
||||
displayName: '${{ parameters.vsixName }}'
|
||||
displayName: '${{ parameters.vsixName }}.vsix'
|
||||
targetPath: $(Build.ArtifactStagingDirectory)\vsix
|
||||
artifactName: vsix
|
||||
|
||||
@@ -38,24 +38,58 @@ jobs:
|
||||
inputs:
|
||||
version: 22.x
|
||||
|
||||
- task: Npm@0
|
||||
displayName: Install vsce
|
||||
inputs:
|
||||
arguments: --global @vscode/vsce
|
||||
- script: IF EXIST %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc del %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc
|
||||
displayName: Delete .npmrc if it exists
|
||||
|
||||
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
|
||||
displayName: Use Yarn 1.x
|
||||
- task: Bash@3
|
||||
displayName: Build files
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
export SRC_DIR=$(echo $BUILD_SOURCESDIRECTORY | sed 's|\\|/|g')
|
||||
cd "$SRC_DIR/${{ parameters.srcDir }}"
|
||||
npm install
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "npm install failed, sleeping for 30s before retrying..."
|
||||
sleep 30
|
||||
exit 1
|
||||
fi
|
||||
retryCountOnTaskFailure: 3
|
||||
|
||||
- script: mkdir $(Build.ArtifactStagingDirectory)\vsix
|
||||
displayName: Create Staging Directory
|
||||
|
||||
- script: |
|
||||
cd $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
||||
vsce package -o $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}
|
||||
displayName: Run VSCE to package vsix
|
||||
- script: npm install --no-save --ignore-scripts=false --include=optional --force @vscode/[email protected]
|
||||
displayName: Install vsce
|
||||
workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
||||
|
||||
- task: Npm@0
|
||||
displayName: Uninstall vsce
|
||||
- script: npm rebuild @vscode/vsce-sign --ignore-scripts=false
|
||||
displayName: Rebuild vsce-sign binary
|
||||
workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
||||
|
||||
- script: if not exist node_modules\@vscode\vsce-sign\bin\vsce-sign.exe (echo Missing vsce-sign.exe && exit 1)
|
||||
displayName: Verify vsce-sign binary exists
|
||||
workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
||||
|
||||
- script: npx vsce package -o $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.vsix
|
||||
displayName: Run VSCE to package vsix
|
||||
workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
||||
|
||||
# sign the vsix
|
||||
- script: npx vsce generate-manifest -i $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.vsix -o $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.manifest
|
||||
displayName: generate manifest
|
||||
workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
||||
- script: copy $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.manifest $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.signature.p7s
|
||||
displayName: prepare manifest for signing
|
||||
workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }}
|
||||
- task: NuGetToolInstaller@1
|
||||
displayName: Install NuGet
|
||||
- task: NuGetAuthenticate@1
|
||||
displayName: Authenticate NuGet
|
||||
- script: nuget restore $(Build.SourcesDirectory)\Build\signing\SignVsix.proj -PackagesDirectory $(Build.SourcesDirectory)\Build\signing\packages -ConfigFile $(Build.SourcesDirectory)\Build\signing\NuGet.config
|
||||
displayName: Restore MicroBuild Core
|
||||
- task: MSBuild@1
|
||||
displayName: Sign the vsix
|
||||
inputs:
|
||||
command: uninstall
|
||||
arguments: --global @vscode/vsce
|
||||
solution: $(Build.SourcesDirectory)\Build\signing\SignVsix.proj
|
||||
msbuildArguments: /p:SignType=${{ parameters.signType }}
|
||||
|
||||
@@ -18,12 +18,12 @@ extends:
|
||||
parameters:
|
||||
pool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
sdl:
|
||||
sourceAnalysisPool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
|
||||
stages:
|
||||
@@ -39,5 +39,5 @@ extends:
|
||||
jobs:
|
||||
- template: /Build/publish/jobs_publish_vsix.yml@self
|
||||
parameters:
|
||||
vsixName: cpptools-extension-pack.vsix
|
||||
vsixName: cpptools-extension-pack
|
||||
|
||||
|
||||
@@ -18,12 +18,12 @@ extends:
|
||||
parameters:
|
||||
pool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
sdl:
|
||||
sourceAnalysisPool:
|
||||
name: AzurePipelines-EO
|
||||
image: 1ESPT-Windows2022
|
||||
image: 1ESPT-Windows2025
|
||||
os: windows
|
||||
|
||||
stages:
|
||||
@@ -39,5 +39,5 @@ extends:
|
||||
jobs:
|
||||
- template: /Build/publish/jobs_publish_vsix.yml@self
|
||||
parameters:
|
||||
vsixName: cpptools-themes.vsix
|
||||
vsixName: cpptools-themes
|
||||
|
||||
|
||||
@@ -21,11 +21,6 @@ jobs:
|
||||
inputs:
|
||||
versionSpec: 22.x
|
||||
|
||||
- task: Npm@0
|
||||
displayName: Install vsce
|
||||
inputs:
|
||||
arguments: --global @vscode/vsce
|
||||
|
||||
- task: AzureCLI@2
|
||||
displayName: Generate AAD_TOKEN
|
||||
inputs:
|
||||
@@ -36,9 +31,16 @@ 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: |
|
||||
vsce publish --packagePath $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}
|
||||
- script: npm install --no-save --ignore-scripts=false --include=optional --force @vscode/[email protected]
|
||||
displayName: Install vsce
|
||||
|
||||
- script: npm rebuild @vscode/vsce-sign --ignore-scripts=false
|
||||
displayName: Rebuild vsce-sign binary
|
||||
|
||||
- script: if not exist node_modules\@vscode\vsce-sign\bin\vsce-sign.exe (echo Missing vsce-sign.exe && exit 1)
|
||||
displayName: Verify vsce-sign binary exists
|
||||
|
||||
- script: npx vsce publish --skip-duplicate -i $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}.vsix --manifestPath $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}.manifest --signaturePath $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}.signature.p7s
|
||||
displayName: Publish to Marketplace
|
||||
env:
|
||||
VSCE_PAT: $(AAD_TOKEN)
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="Engineering" value="https://pkgs.dev.azure.com/devdiv/_packaging/MicroBuildToolset/nuget/v3/index.json" />
|
||||
</packageSources>
|
||||
</configuration>
|
||||
@@ -1,4 +0,0 @@
|
||||
*.js
|
||||
|
||||
dist/
|
||||
vscode*.d.ts
|
||||
@@ -1,155 +0,0 @@
|
||||
module.exports = {
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
"plugin:@typescript-eslint/strict",
|
||||
],
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"project": ["tsconfig.json", ".scripts/tsconfig.json"],
|
||||
"ecmaVersion": 2022,
|
||||
"sourceType": "module",
|
||||
"warnOnUnsupportedTypeScriptVersion": false,
|
||||
},
|
||||
"plugins": [
|
||||
"@typescript-eslint",
|
||||
"eslint-plugin-jsdoc",
|
||||
"@typescript-eslint/eslint-plugin",
|
||||
"eslint-plugin-import",
|
||||
"eslint-plugin-header"
|
||||
],
|
||||
"rules": {
|
||||
"@typescript-eslint/adjacent-overload-signatures": "error",
|
||||
"@typescript-eslint/array-type": "error",
|
||||
"@typescript-eslint/await-thenable": "error",
|
||||
"camelcase": "off",
|
||||
"@typescript-eslint/naming-convention": [
|
||||
"error",
|
||||
{
|
||||
"selector": "typeLike",
|
||||
"format": ["PascalCase"]
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/member-delimiter-style": [
|
||||
"error",
|
||||
{
|
||||
"multiline": {
|
||||
"delimiter": "semi",
|
||||
"requireLast": true
|
||||
},
|
||||
"singleline": {
|
||||
"delimiter": "semi",
|
||||
"requireLast": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"@typescript-eslint/no-extraneous-class": "off",
|
||||
"no-case-declarations": "off",
|
||||
"no-useless-escape": "off",
|
||||
"no-floating-decimal": "error",
|
||||
"keyword-spacing": ["error", { "before": true, "overrides": { "this": { "before": false } } }],
|
||||
"arrow-spacing": ["error", { "before": true, "after": true }],
|
||||
"semi-spacing": ["error", { "before": false, "after": true }],
|
||||
"no-extra-parens": ["error", "all", { "nestedBinaryExpressions": false, "ternaryOperandBinaryExpressions": false }],
|
||||
"@typescript-eslint/no-array-constructor": "error",
|
||||
"@typescript-eslint/no-useless-constructor": "error",
|
||||
"@typescript-eslint/no-for-in-array": "error",
|
||||
"@typescript-eslint/no-misused-new": "error",
|
||||
"@typescript-eslint/no-misused-promises": "error",
|
||||
"@typescript-eslint/no-namespace": "error",
|
||||
"@typescript-eslint/no-non-null-assertion": "error",
|
||||
"@typescript-eslint/no-extra-non-null-assertion": "error",
|
||||
"@typescript-eslint/no-this-alias": "error",
|
||||
"@typescript-eslint/no-unnecessary-qualifier": "error",
|
||||
"@typescript-eslint/no-unnecessary-type-arguments": "error",
|
||||
"@typescript-eslint/no-var-requires": "error",
|
||||
"@typescript-eslint/prefer-function-type": "error",
|
||||
"@typescript-eslint/prefer-namespace-keyword": "error",
|
||||
"@typescript-eslint/semi": "error",
|
||||
"@typescript-eslint/triple-slash-reference": "error",
|
||||
"@typescript-eslint/type-annotation-spacing": "error",
|
||||
"@typescript-eslint/unified-signatures": "error",
|
||||
"@typescript-eslint/no-floating-promises": "error",
|
||||
"@typescript-eslint/method-signature-style": ["error", "method"],
|
||||
"@typescript-eslint/space-infix-ops": "error",
|
||||
"no-unused-vars": "off",
|
||||
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
|
||||
"@typescript-eslint/no-unnecessary-boolean-literal-compare": "error",
|
||||
"arrow-body-style": "error",
|
||||
"comma-dangle": "error",
|
||||
"comma-spacing": "off",
|
||||
"@typescript-eslint/comma-spacing": "error",
|
||||
"constructor-super": "error",
|
||||
"curly": "error",
|
||||
"eol-last": "error",
|
||||
"eqeqeq": [
|
||||
"error",
|
||||
"always"
|
||||
],
|
||||
"import/no-default-export": "error",
|
||||
"import/no-unassigned-import": "error",
|
||||
"jsdoc/no-types": "error",
|
||||
"new-parens": "error",
|
||||
"no-bitwise": "error",
|
||||
"no-caller": "error",
|
||||
"no-cond-assign": "error",
|
||||
"no-debugger": "error",
|
||||
"no-duplicate-case": "error",
|
||||
"no-duplicate-imports": "error",
|
||||
"no-eval": "error",
|
||||
"no-fallthrough": "error",
|
||||
"no-invalid-this": "error",
|
||||
"no-irregular-whitespace": "error",
|
||||
"rest-spread-spacing": ["error", "never"],
|
||||
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1, "maxBOF": 0 }],
|
||||
"no-new-wrappers": "error",
|
||||
"no-return-await": "error",
|
||||
"no-sequences": "error",
|
||||
"no-sparse-arrays": "error",
|
||||
"no-trailing-spaces": "error",
|
||||
"no-multi-spaces": "error",
|
||||
"no-undef-init": "error",
|
||||
"no-unsafe-finally": "error",
|
||||
"no-unused-expressions": "error",
|
||||
"no-unused-labels": "error",
|
||||
"space-before-blocks": "error",
|
||||
"no-var": "error",
|
||||
"one-var": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"prefer-const": "error",
|
||||
"prefer-object-spread": "error",
|
||||
"space-in-parens": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"spaced-comment": [
|
||||
"off",
|
||||
"always",
|
||||
{ "line": { "exceptions": ["/"] } } // triple slash directives
|
||||
],
|
||||
"use-isnan": "error",
|
||||
"valid-typeof": "error",
|
||||
"yoda": "error",
|
||||
"space-infix-ops": "error",
|
||||
"header/header": [
|
||||
"warn",
|
||||
"block",
|
||||
[
|
||||
" --------------------------------------------------------------------------------------------",
|
||||
" * Copyright (c) Microsoft Corporation. All Rights Reserved.",
|
||||
" * See 'LICENSE' in the project root for license information.",
|
||||
" * ------------------------------------------------------------------------------------------ "
|
||||
|
||||
],
|
||||
],
|
||||
|
||||
}
|
||||
};
|
||||
+3
-1
@@ -1,2 +1,4 @@
|
||||
registry=https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/
|
||||
always-auth=true
|
||||
always-auth=true
|
||||
# Disable postinstall scripts for supply chain security. Allowlist exceptions with npm trust: https://docs.npmjs.com/cli/v11/commands/npm-trust
|
||||
ignore-scripts=true
|
||||
|
||||
@@ -18,18 +18,20 @@ export async function main() {
|
||||
}
|
||||
|
||||
export async function all() {
|
||||
await rimraf(...(await getModifiedIgnoredFiles()).filter(each => !each.includes('node_modules')));
|
||||
await rimraf(...(await getModifiedIgnoredFiles()).filter((each): each is string => each !== undefined && !each.includes('node_modules')));
|
||||
}
|
||||
|
||||
export async function reset() {
|
||||
verbose(`Resetting all .gitignored files in extension`);
|
||||
await rimraf(...await getModifiedIgnoredFiles());
|
||||
await rimraf(...(await getModifiedIgnoredFiles()).filter((each): each is string => each !== undefined));
|
||||
}
|
||||
|
||||
async function details(files: string[]) {
|
||||
let all = await Promise.all(files.filter(each => each).map(async (each) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const [filename, stats ] = await filepath.stats(each);
|
||||
const results = await Promise.all(files.filter(each => each).map(async (each) => {
|
||||
const [, stats] = await filepath.stats(each);
|
||||
if (!stats) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
filename: stats.isDirectory() ? cyan(`${each}${sep}**`) : brightGreen(`${each}`),
|
||||
date: stats.mtime.toLocaleDateString().replace(/\b(\d)\//g, '0$1\/'),
|
||||
@@ -37,6 +39,7 @@ async function details(files: string[]) {
|
||||
modified: stats.mtime
|
||||
};
|
||||
}));
|
||||
let all = results.filter((each): each is NonNullable<typeof each> => each !== null);
|
||||
all = all.sort((a, b) => a.modified.getTime() - b.modified.getTime());
|
||||
// print a formatted table so the date and time are aligned
|
||||
const max = all.reduce((max, each) => Math.max(max, each.filename.length), 0);
|
||||
@@ -56,7 +59,7 @@ export async function show(opt?: string) {
|
||||
case 'ignored':
|
||||
case 'untracked':
|
||||
console.log(cyan('\n\nUntracked+Ignored files:'));
|
||||
return details(await getModifiedIgnoredFiles());
|
||||
return details((await getModifiedIgnoredFiles()).filter((each): each is string => each !== undefined));
|
||||
|
||||
default:
|
||||
return error(`Unknown option '${opt}'`);
|
||||
|
||||
@@ -54,11 +54,12 @@ export async function getModifiedIgnoredFiles() {
|
||||
}
|
||||
|
||||
// return the full path of files that would be removed.
|
||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||
return Promise.all(stdio.filter("Would remove").map((s) => filepath.exists(s.replace(/^Would remove /, ''), $root)).filter(p => p));
|
||||
}
|
||||
|
||||
export async function rimraf(...paths: string[]) {
|
||||
const all = [];
|
||||
const all: Promise<void>[] = [];
|
||||
for (const each of paths) {
|
||||
if (!each) {
|
||||
continue;
|
||||
@@ -82,6 +83,9 @@ export async function mkdir(filePath: string) {
|
||||
}
|
||||
throw new Error(`Cannot create directory '${filePath}' because there is a file there.`);
|
||||
}
|
||||
if (!fullPath) {
|
||||
throw new Error(`Cannot create directory '${filePath}' because the path is invalid.`);
|
||||
}
|
||||
|
||||
await md(fullPath, { recursive: true });
|
||||
return fullPath;
|
||||
@@ -258,7 +262,7 @@ export function position(text: string) {
|
||||
return gray(`${text}`);
|
||||
}
|
||||
|
||||
export async function assertAnyFolder(oneOrMoreFolders: string | string[], errorMessage?: string): Promise<string> {
|
||||
export async function assertAnyFolder(oneOrMoreFolders: string | string[], errorMessage?: string): Promise<string | undefined> {
|
||||
oneOrMoreFolders = is.array(oneOrMoreFolders) ? oneOrMoreFolders : [oneOrMoreFolders];
|
||||
for (const each of oneOrMoreFolders) {
|
||||
const result = await filepath.isFolder(each, $root);
|
||||
@@ -275,7 +279,7 @@ export async function assertAnyFolder(oneOrMoreFolders: string | string[], error
|
||||
}
|
||||
}
|
||||
|
||||
export async function assertAnyFile(oneOrMoreFiles: string | string[], errorMessage?: string): Promise<string> {
|
||||
export async function assertAnyFile(oneOrMoreFiles: string | string[], errorMessage?: string): Promise<string | undefined> {
|
||||
oneOrMoreFiles = is.array(oneOrMoreFiles) ? oneOrMoreFiles : [oneOrMoreFiles];
|
||||
for (const each of oneOrMoreFiles) {
|
||||
const result = await filepath.isFile(each, $root);
|
||||
@@ -325,7 +329,6 @@ 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.proposed.lmTools.d.ts') && (quiet || warn(`The VSCode import file '${$root}/dist/src/vscode.proposed.lmTools.d.ts is missing.`)) || failing;
|
||||
|
||||
if (!failing) {
|
||||
verbose('VSCode d.ts files appear to be in place.');
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All Rights Reserved.
|
||||
* See 'LICENSE' in the project root for license information.
|
||||
* ------------------------------------------------------------------------------------------ */
|
||||
|
||||
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';
|
||||
|
||||
const extensionPrefix = 'ms-vscode.cpptools-';
|
||||
const foldersToCopy = ['bin', 'debugAdapters', 'LLVM'] as const;
|
||||
|
||||
type InstalledExtension = {
|
||||
path: string;
|
||||
version: number[];
|
||||
modified: number;
|
||||
};
|
||||
|
||||
function compareVersions(left: number[], right: number[]): number {
|
||||
const maxLength: number = Math.max(left.length, right.length);
|
||||
for (let i = 0; i < maxLength; i++) {
|
||||
const diff: number = (left[i] ?? 0) - (right[i] ?? 0);
|
||||
if (diff !== 0) {
|
||||
return diff;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function tryParseVersion(folderName: string): number[] | undefined {
|
||||
if (!folderName.startsWith(extensionPrefix)) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const versionText: string | undefined = folderName.substring(extensionPrefix.length).match(/^\d+\.\d+\.\d+/)?.[0];
|
||||
return versionText?.split('.').map(each => Number(each));
|
||||
}
|
||||
|
||||
async function getInstalledExtensions(root: string): Promise<InstalledExtension[]> {
|
||||
try {
|
||||
const entries = await readdir(root, { withFileTypes: true });
|
||||
const candidates: Promise<InstalledExtension | undefined>[] = entries.map(async (entry) => {
|
||||
if (!entry.isDirectory()) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const version: number[] | undefined = tryParseVersion(entry.name);
|
||||
if (!version) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const extensionPath: string = join(root, entry.name);
|
||||
for (const folder of foldersToCopy) {
|
||||
const info = await stat(join(extensionPath, folder)).catch(() => undefined);
|
||||
if (!info?.isDirectory()) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
const info = await stat(extensionPath);
|
||||
return {
|
||||
path: extensionPath,
|
||||
version,
|
||||
modified: info.mtimeMs
|
||||
};
|
||||
});
|
||||
|
||||
const found = await Promise.all(candidates);
|
||||
return found.filter((entry): entry is InstalledExtension => entry !== undefined);
|
||||
} catch {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
async function findLatestInstalledExtension(providedPath?: string): Promise<string> {
|
||||
if (providedPath) {
|
||||
return providedPath;
|
||||
}
|
||||
|
||||
const searchRoots: string[] = [
|
||||
join(homedir(), '.vscode', 'extensions'),
|
||||
join(homedir(), '.vscode-insiders', 'extensions'),
|
||||
join(homedir(), '.vscode-server', 'extensions'),
|
||||
join(homedir(), '.vscode-server-insiders', 'extensions')
|
||||
];
|
||||
|
||||
const installed: InstalledExtension[] = (await Promise.all(searchRoots.map(each => getInstalledExtensions(each)))).flat();
|
||||
if (!installed.length) {
|
||||
throw new Error(`Unable to find an installed C/C++ extension under ${searchRoots.join(' or ')}.`);
|
||||
}
|
||||
|
||||
installed.sort((left, right) => compareVersions(right.version, left.version) || right.modified - left.modified);
|
||||
return installed[0].path;
|
||||
}
|
||||
|
||||
export async function main(sourcePath = $args[0]) {
|
||||
console.log(heading('Copy installed extension binaries'));
|
||||
|
||||
const installedExtensionPath: string = await findLatestInstalledExtension(sourcePath);
|
||||
note(`Using installed extension at ${installedExtensionPath}`);
|
||||
|
||||
for (const folder of foldersToCopy) {
|
||||
const source: string = join(installedExtensionPath, folder);
|
||||
const destination: string = join($root, folder);
|
||||
|
||||
console.log(`Copying ${green(folder)} from ${source}`);
|
||||
await rm(destination, { recursive: true, force: true });
|
||||
await cp(source, destination, { recursive: true, force: true });
|
||||
}
|
||||
|
||||
note(`Copied installed binaries into ${$root}`);
|
||||
}
|
||||
@@ -19,7 +19,7 @@ export async function watch() {
|
||||
verbose(`Watching ${source} folder for changes.`);
|
||||
console.log('Press Ctrl+C to exit.');
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
for await (const event of watchFiles(source, {recursive: true })) {
|
||||
for await (const event of watchFiles(source, { recursive: true })) {
|
||||
await main();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
* See 'LICENSE' in the project root for license information.
|
||||
* ------------------------------------------------------------------------------------------ */
|
||||
|
||||
/* eslint-disable no-prototype-builtins */
|
||||
|
||||
import { resolve } from 'path';
|
||||
import { $root, read, write } from './common';
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ filterStdio();
|
||||
async function unitTests() {
|
||||
await assertAnyFolder('dist/test/unit', `The folder '${$root}/dist/test/unit is missing. You should run ${brightGreen("yarn compile")}\n\n`);
|
||||
const mocha = await assertAnyFile(["node_modules/.bin/mocha.cmd", "node_modules/.bin/mocha"], `Can't find the mocha testrunner. You might need to run ${brightGreen("yarn install")}\n\n`);
|
||||
const result = spawnSync(mocha, [`${$root}/dist/test/unit/**/*.test.js`, '--timeout', '30000'], { stdio:'inherit', shell: true });
|
||||
const result = spawnSync(mocha, [`${$root}/dist/test/unit/**/*.test.js`, '--timeout', '30000'], { stdio: 'inherit', shell: true });
|
||||
verbose(`\n${green("NOTE:")} If you want to run a scenario test (end-to-end) use ${cmdSwitch('scenario=<NAME>')} \n\n`);
|
||||
return result.status;
|
||||
}
|
||||
@@ -161,23 +161,24 @@ interface Input {
|
||||
id: string;
|
||||
type: string;
|
||||
description: string;
|
||||
options: CommentArray<{label: string; value: string}>;
|
||||
options: CommentArray<{ label: string; value: string }>;
|
||||
}
|
||||
|
||||
export async function getScenarioNames() {
|
||||
return (await readdir(`${$root}/test/scenarios`).catch(returns.none)).filter(each => each !== 'Debugger');
|
||||
}
|
||||
|
||||
export async function getScenarioFolder(scenarioName: string) {
|
||||
export async function getScenarioFolder(scenarioName: string | undefined) {
|
||||
return scenarioName ? resolve(`${$root}/test/scenarios/${(await getScenarioNames()).find(each => each.toLowerCase() === scenarioName.toLowerCase())}`) : undefined;
|
||||
}
|
||||
|
||||
export async function list() {
|
||||
console.log(`\n${cyan("Scenarios: ")}\n`);
|
||||
const names = await getScenarioNames();
|
||||
const max = names.reduce((max, each) => Math.max(max, each), 0);
|
||||
const max = names.reduce((max, each) => Math.max(max, each.length), 0);
|
||||
for (const each of names) {
|
||||
console.log(` ${green(each.padEnd(max))}: ${gray(await getScenarioFolder(each))}`);
|
||||
const folder = await getScenarioFolder(each);
|
||||
console.log(` ${green(each.padEnd(max))}: ${gray(folder || '')}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
"experimentalDecorators": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"sourceMap": true,
|
||||
"esModuleInterop": true
|
||||
"esModuleInterop": true,
|
||||
"strictNullChecks": true
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+4
@@ -97,6 +97,10 @@
|
||||
"label": "MultirootDeadlockTest ",
|
||||
"value": "${workspaceFolder}/test/scenarios/MultirootDeadlockTest/assets/test.code-workspace"
|
||||
},
|
||||
{
|
||||
"label": "RunWithoutDebugging ",
|
||||
"value": "${workspaceFolder}/test/scenarios/RunWithoutDebugging/assets/"
|
||||
},
|
||||
{
|
||||
"label": "SimpleCppProject ",
|
||||
"value": "${workspaceFolder}/test/scenarios/SimpleCppProject/assets/simpleCppProject.code-workspace"
|
||||
|
||||
@@ -29,8 +29,7 @@ jobs/**
|
||||
cgmanifest.json
|
||||
|
||||
# ignore development files
|
||||
.eslintignore
|
||||
.eslintrc.js
|
||||
eslint.config.js
|
||||
.gitattributes
|
||||
.gitignore
|
||||
gulpfile.js
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "cpptools-yarn-bootstrap",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "cpptools-yarn-bootstrap",
|
||||
"version": "1.0.0",
|
||||
"license": "SEE LICENSE IN LICENSE.txt",
|
||||
"devDependencies": {
|
||||
"yarn": "1.22.22"
|
||||
}
|
||||
},
|
||||
"node_modules/yarn": {
|
||||
"version": "1.22.22",
|
||||
"resolved": "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/yarn/-/yarn-1.22.22.tgz",
|
||||
"integrity": "sha1-rDRUnmqo5+rUY6dAfhxzkPYaZhA=",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"bin": {
|
||||
"yarn": "bin/yarn.js",
|
||||
"yarnpkg": "bin/yarn.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "cpptools-yarn-bootstrap",
|
||||
"private": true,
|
||||
"version": "1.0.0",
|
||||
"description": "Install Yarn from internal npm feed for repository bootstrap.",
|
||||
"license": "SEE LICENSE IN LICENSE.txt",
|
||||
"devDependencies": {
|
||||
"yarn": "1.22.22"
|
||||
}
|
||||
}
|
||||
+71
-3
@@ -1,18 +1,86 @@
|
||||
# C/C++ for Visual Studio Code Changelog
|
||||
|
||||
## Version 1.30.0: December 15, 2025
|
||||
## Version 1.32.0: April 14, 2026
|
||||
### New Feature
|
||||
* Add support for run without debugging. [#1201](https://github.com/microsoft/vscode-cpptools/issues/1201)
|
||||
|
||||
### Enhancements
|
||||
* Add a `C_Cpp.doxygen.generateOnCodeAction` setting to allow disabling of Doxygen generation code actions. [#14341](https://github.com/microsoft/vscode-cpptools/issues/14341)
|
||||
* Improve wildcard matching with the debugger natvis. [MIEngine#1162](https://github.com/microsoft/MIEngine/issues/1162)
|
||||
* Add support for `HideRawView` with the debugger natvis. [MIEngine#1458](https://github.com/microsoft/MIEngine/issues/1458)
|
||||
|
||||
### Bug Fixes
|
||||
* Fix high CPU usage caused by repeated calls to `selectChatModels`. [#14168](https://github.com/microsoft/vscode-cpptools/issues/14168), [#14211](https://github.com/microsoft/vscode-cpptools/issues/14211), [#14241](https://github.com/microsoft/vscode-cpptools/issues/14241)
|
||||
* Fix the MSVC developer environment not working if `UCRTVersion` isn't found, and update the walkthrough instructions for installing MSVC. [#14352](https://github.com/microsoft/vscode-cpptools/issues/14352)
|
||||
* Fix Copilot hover taking too many premium requests. [#14372](https://github.com/microsoft/vscode-cpptools/issues/14372)
|
||||
* Fix null pointers being expandable for variables in the debugger. [MIEngine#698](https://github.com/microsoft/MIEngine/issues/698)
|
||||
* Fix recursive `{this}` evaluation with the debugger natvis. [MIEngine#1391](https://github.com/microsoft/MIEngine/issues/1391)
|
||||
* Update clang-tidy and clang-format from 22.1.1 to 22.1.3 (bug fixes).
|
||||
* Fix a bug with semantic colorization of operators.
|
||||
|
||||
## Version 1.31.4: March 31, 2026
|
||||
### Bug Fix
|
||||
* Debugging cpptools and cpptools-srv processes on macOS (to get call stacks) is now blocked when SIP is enabled (due to a potential security issue).
|
||||
|
||||
## Version 1.31.3: March 24, 2026
|
||||
### Enhancements
|
||||
* Add support for `program` in attach debug configurations. [#14046](https://github.com/microsoft/vscode-cpptools/issues/14046)
|
||||
* Thanks for the contribution. [@Subham-KRLX (Subham)](https://github.com/Subham-KRLX) [PR #14108](https://github.com/microsoft/vscode-cpptools/pull/14108)
|
||||
* Remove unnecessary `console.debug` logging. [#14294](https://github.com/microsoft/vscode-cpptools/issues/14294)
|
||||
* Update clang-tidy and clang-format from 21.1.4 to 22.1.1.
|
||||
* Update support for the latest compiler versions.
|
||||
* Update SQLite to the latest version.
|
||||
|
||||
### Bug Fixes
|
||||
* Fix an IntelliSense error with deducing `this` (explicit object member functions) with conversion operators. [#14140](https://github.com/microsoft/vscode-cpptools/issues/14140)
|
||||
* Fix `embed-dir` compiler arguments not being handled for IntelliSense. [#14154](https://github.com/microsoft/vscode-cpptools/issues/14154)
|
||||
* Fix workspace symbol search with `scope::variable` not working after symbols are deleted and then added back. [#14200](https://github.com/microsoft/vscode-cpptools/issues/14200)
|
||||
* Fix bugs where a path was checked for existence but not whether it was a file or a folder. [#14257](https://github.com/microsoft/vscode-cpptools/issues/14257)
|
||||
* Fix the Call Hierarchy Callers Of progress UI not showing. [#14287](https://github.com/microsoft/vscode-cpptools/issues/14287)
|
||||
* Fix an IntelliSense crash when using GCC 16 `span` and `string`. [#14309](https://github.com/microsoft/vscode-cpptools/issues/14309)
|
||||
* Fix `_CONTROL_FLOW_GUARD` not being defined when `/guard:cf` is used in MSVC mode. [#14310](https://github.com/microsoft/vscode-cpptools/issues/14310)
|
||||
* Add IntelliSense support for `__builtin_is_implicit_lifetime`.
|
||||
* Fix three IntelliSense process crashes.
|
||||
* Fix some missing translations.
|
||||
|
||||
## Version 1.30.5: February 9, 2026
|
||||
### Bug Fix
|
||||
* Fix a potential language server deadlock after editing code.
|
||||
|
||||
## Version 1.30.4: February 3, 2026
|
||||
### Bug Fix
|
||||
* Fix signing of MIEngine. [PR MIEngine#1544](https://github.com/microsoft/MIEngine/pull/1544)
|
||||
|
||||
## Version 1.30.3: February 2, 2026
|
||||
### Enhancements
|
||||
* Add IntelliSense support for C++23 multidimensional subscript operators. [#11400](https://github.com/microsoft/vscode-cpptools/issues/11400), [#13798](https://github.com/microsoft/vscode-cpptools/issues/13798)
|
||||
* Change `C` completion behavior to automatically trigger after the `struct/union/enum` keyword and to filter based on the keyword. [#13634](https://github.com/microsoft/vscode-cpptools/issues/13634)
|
||||
* Change `C++` completions after `using namespace` to filter to include only namespaces and namespace aliases. [#14091](https://github.com/microsoft/vscode-cpptools/issues/14091)
|
||||
* Add IntelliSense support for C23/C++26 `#embed`. [#13705](https://github.com/microsoft/vscode-cpptools/issues/13705)
|
||||
* Change `C++` completions after `using namespace` to include only namespaces and namespace aliases. [#14091](https://github.com/microsoft/vscode-cpptools/issues/14091)
|
||||
* Add IntelliSense support for C++23 `static operator[]`.
|
||||
|
||||
### Bug Fixes
|
||||
* Fix `C_Cpp.commentContinuationPatterns` not working after the 2nd line (for non-`/**` patterns). [#8998](https://github.com/microsoft/vscode-cpptools/issues/8998)
|
||||
* Thanks for the contribution. [@dinhtam2c](https://github.com/dinhtam2c) [PR #14074](https://github.com/microsoft/vscode-cpptools/pull/14074)
|
||||
* Fix `${userHome}` not resolving in `C_Cpp` path settings. [#10350](https://github.com/microsoft/vscode-cpptools/issues/10350)
|
||||
* Fix completion not automatically triggering if invoked on the last column of a line when the previous token is an identifier. [#14086](https://github.com/microsoft/vscode-cpptools/issues/14086)
|
||||
* Fix the Locals/Watch window displaying `std::map<enum, struct>` incorrectly when using the `cppdbg` debugger. [#12102](https://github.com/microsoft/vscode-cpptools/issues/12102)
|
||||
* Thanks for the contribution. [@OXINARF (Francisco Ferreira)](https://github.com/OXINARF) [PR MIEngine#1531](https://github.com/microsoft/MIEngine/pull/1531)
|
||||
* Fix an incorrect IntelliSense error on an overridden method. [#13729](https://github.com/microsoft/vscode-cpptools/issues/13729)
|
||||
* Fix an IntelliSense error with `std::countl_zero`. [#13876](https://github.com/microsoft/vscode-cpptools/issues/13876)
|
||||
* Fix an IntelliSense squiggle on the wrong identifier when assigning to a constant member variable. [#14018](https://github.com/microsoft/vscode-cpptools/issues/14018)
|
||||
* Fix IntelliSense with Clang mode C++23 deduced type construction with `auto`. [#14041](https://github.com/microsoft/vscode-cpptools/issues/14041)
|
||||
* Fix a long `args` list in `launch.json` getting truncated when using the `cppdbg` debugger. [#14054](https://github.com/microsoft/vscode-cpptools/issues/14054)
|
||||
* Thanks for the contribution. [@Subham-KRLX (Subham)](https://github.com/Subham-KRLX) [PR MIEngine#1529](https://github.com/microsoft/MIEngine/pull/1529)
|
||||
* Fix changes to `C_Cpp.commentContinuationPatterns` not taking effect until the extension restarts. [#14079](https://github.com/microsoft/vscode-cpptools/issues/14079)
|
||||
* Fix `C_Cpp.commentContinuationPatterns` not working correctly for a pattern if it's a prefix of a pattern that is later in the list. [#14081](https://github.com/microsoft/vscode-cpptools/issues/14081)
|
||||
* Fix completion not automatically triggering if invoked on the last column of a line when the previous token is an identifier. [#14086](https://github.com/microsoft/vscode-cpptools/issues/14086)
|
||||
* Fix an IntelliSense error with `std::popcount`. [#14105](https://github.com/microsoft/vscode-cpptools/issues/14105)
|
||||
* Fix GitHub Copilot hover. [#14114](https://github.com/microsoft/vscode-cpptools/issues/14114)
|
||||
* Fix headers sometimes using a header-only configuration from a configuration provider instead of the source file's configuration. [#14126](https://github.com/microsoft/vscode-cpptools/issues/14126)
|
||||
* Fix a reference in a `#define` not being found if it's directly after a `#include`. [#14130](https://github.com/microsoft/vscode-cpptools/issues/14130)
|
||||
* Fix a bug that could cause IntelliSense operations to fail when a document is closed during processing.
|
||||
* Fix an IntelliSense crash in `a_completion_symbol_manager::handle_function` when Copilot is enabled.
|
||||
* Fix a bug with internal buffer handling that could cause some IntelliSense operations to fail.
|
||||
|
||||
## Version 1.29.3: December 8, 2025
|
||||
### Bug Fix
|
||||
|
||||
+1
-1
@@ -75,4 +75,4 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope
|
||||
|
||||
## Data and telemetry
|
||||
|
||||
This extension collects usage data and sends it to Microsoft to help improve our products and services. Collection of telemetry is controlled via the same setting provided by Visual Studio Code: `"telemetry.enableTelemetry"`. Read our [privacy statement](https://privacy.microsoft.com/en-us/privacystatement) to learn more.
|
||||
This extension collects usage data and sends it to Microsoft to help improve our products and services. Collection of telemetry is controlled via the same setting provided by Visual Studio Code: `"telemetry.enableTelemetry"`. Read our [privacy statement](https://go.microsoft.com/fwlink/?LinkId=521839) to learn more.
|
||||
|
||||
+1220
-278
File diff suppressed because it is too large
Load Diff
@@ -1134,7 +1134,7 @@
|
||||
"Prázdný seznam přepisovačů se musí kompletně vynechat.",
|
||||
"Očekával se operand asm.",
|
||||
"Očekávalo se přepsání registru.",
|
||||
"Atribut format vyžaduje parametr tři tečky.",
|
||||
"Atribut format vyžaduje parametr ellipsis (tři tečky) nebo sadu parametrů.",
|
||||
"První argument náhrady není prvním argumentem proměnné.",
|
||||
"Index argumentu formátu je větší než počet parametrů.",
|
||||
"Argument formátu není řetězcového typu.",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"Pokus o přístup přes nulový ukazatel na člen (datový člen)",
|
||||
"Porovnání ukazatele s hodnotou void nebo ukazatelem na funkci není standardní.",
|
||||
"Nepovedlo se inicializovat metadata.",
|
||||
"Neplatné přetypování mezi základní a odvozenou třídou (úplný typ třídy je %t).",
|
||||
"Neplatné přetypování mezi základní a odvozenou třídou (skutečný typ odvozené třídy je %t)",
|
||||
"Neplatný přístup k %n v objektu s úplným typem %t.",
|
||||
"__auto_type tady není povolený.",
|
||||
"__auto_type nepovoluje víc deklarátorů.",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"Explicitní volání destruktoru není povolené v konstantním výrazu.",
|
||||
"Operátor čárky nezadané v závorkách ve výrazu dolního indexu pole je zastaralý.",
|
||||
"Počet dynamicky přidělených elementů (%d) pro inicializátor je moc malý.",
|
||||
"Nestálý operand pro výraz %s je zastaralý.",
|
||||
null,
|
||||
"Použití výsledku přiřazení do nestálého skalárního objektu je zastaralé.",
|
||||
"Nestálý cílový typ pro složený výraz přiřazení je zastaralý.",
|
||||
"Nestálý parametr funkce je zastaralý.",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"Nepovedlo se nahradit argumenty %T pro concept-id.",
|
||||
"Pro argumenty %T je koncept false.",
|
||||
"Klauzule requires tady není povolena (nejedná se o funkci se šablonami).",
|
||||
"Šablona konceptu",
|
||||
"koncept",
|
||||
"Klauzule requires není kompatibilní s %nfd.",
|
||||
"Očekával se atribut.",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"Převzetí adresy funkce s explicitním this vyžaduje kvalifikovaný název.",
|
||||
"Vytvoření adresy funkce s explicitním this vyžaduje operátor &.",
|
||||
"řetězcový literál nelze použít k inicializaci člena flexibilního pole.",
|
||||
"reprezentace IFC definice funkce %sq je neplatná",
|
||||
null,
|
||||
"graf UniLevel IFC se nepoužil k zadání parametrů.",
|
||||
"V grafu definice parametrů IFC byl zadán tento počet parametrů: %u1, zatímco deklarace IFC určovala tento počet parametrů: %u2.",
|
||||
"V grafu definice parametrů IFC byly zadány %u1 parametry, zatímco deklarace IFC určovala tento počet parametrů: %u2.",
|
||||
"V grafu definice parametrů IFC byly zadány %u1 parametry, zatímco deklarace IFC určovala tento počet parametrů: %u2.",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"chybí reprezentace IFC definice funkce %sq",
|
||||
"modifikátor funkce se nevztahuje na deklaraci členské šablony.",
|
||||
"výběr člena zahrnuje příliš mnoho vnořených anonymních typů",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"Výraz lambda static musí mít prázdnou specifikaci zachycení.",
|
||||
"Jednotka hlavičky EDG IFC",
|
||||
"EDG IFC",
|
||||
"pro aktuální jednotku překladu se nepovedlo vytvořit jednotku hlavičky",
|
||||
"aktuální jednotka překladu používá jednu nebo více funkcí, které se v tuto chvíli nedají zapsat do jednotky hlavičky",
|
||||
"Pro aktuální jednotku překladu se nepovedlo vygenerovat soubor IFC.",
|
||||
"Jedna nebo více entit se v tuto chvíli nedá zapsat do souboru IFC.",
|
||||
"explicit(bool) je funkcí C++20",
|
||||
"prvním argumentem musí být ukazatel na celé číslo (integer), výčet (enum) nebo podporovaný typ s plovoucí desetinnou čárkou",
|
||||
"moduly C++ nelze použít při kompilaci více jednotek překladu",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"výsledek inicializátoru odkazuje na proměnnou dllimport",
|
||||
"šablona s atributem no_specializations nemůže být specializovaná",
|
||||
"„static“ je zde nestandardní",
|
||||
"%nd byl dříve deklarován bez explicitního základu výčtu"
|
||||
"%nd byl dříve deklarován bez explicitního základu výčtu",
|
||||
"Chybějící typename je tady nestandardní.",
|
||||
"Zkrácená syntaxe šablony funkce není standardní pro vodítka dedukce"
|
||||
]
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"Eine leere Überschreibungsliste muss komplett ausgelassen werden.",
|
||||
"Es wurde ein ASM-Operand erwartet.",
|
||||
"Es wurde eine zu überschreibende Registrierung erwartet.",
|
||||
"Das format-Attribut erfordert einen Auslassungszeichenparameter.",
|
||||
"Das Attribut „Format“ erfordert einen Auslassungspunkte-Parameter oder ein Parameterpaket",
|
||||
"Das erste Ersetzungsargument ist nicht das erste Variablenargument.",
|
||||
"Der Formatargumentindex ist größer als die Anzahl von Parametern.",
|
||||
"Das Formatargument weist keinen Zeichenfolgentyp auf.",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"Es wurde versucht, eine Pointer-to-Member-Funktion mit dem Wert NULL (Datenmember) zu dereferenzieren.",
|
||||
"Das Vergleichen eines Zeigers mit \"void\" und eines Zeigers mit einer Funktion ist kein Standardvorgehen.",
|
||||
"Fehler bei der Metadateninitialisierung.",
|
||||
"Ungültige Umwandlung aus Basis in abgeleitete Klasse (der vollständige Klassentyp ist \"%t\").",
|
||||
"Ungültige Umwandlung vom Basistyp zum abgeleiteten Typ (tatsächlicher abgeleiteter Klassentyp ist %t)",
|
||||
"Ungültiger Zugriff auf %n im Objekt des vollständigen Typs %t.",
|
||||
"\"__auto_type\" ist hier unzulässig.",
|
||||
"\"__auto_type\" erlaubt nicht mehrere Deklaratoren.",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"Ein expliziter Destruktoraufruf ist in einem Konstantenausdruck nicht zulässig.",
|
||||
"Ein nicht in Klammern gesetzter Kommaoperator im Unterskriptausdruck eines Arrays ist veraltet.",
|
||||
"Die Anzahl dynamisch zugeordneter Elemente (%d) ist zu klein für den Initialisierer.",
|
||||
"Ein volatile-Operand für einen %s-Ausdruck ist veraltet.",
|
||||
null,
|
||||
"Die Verwendung des Ergebnisses einer Zuweisung zu einem volatile-Skalarobjekt ist veraltet.",
|
||||
"Ein volatile-Zieltyp für einen Verbundzuweisungsausdruck ist veraltet.",
|
||||
"Ein volatile-Funktionsparameter ist veraltet.",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"Fehler beim Ersetzen von Argumenten \"%T\" für \"concept-id\".",
|
||||
"Das Konzept für die Argumente \"%T\" ist FALSE.",
|
||||
"Eine requires-Klausel ist hier nicht zulässig (keine Funktion mit Vorlagen).",
|
||||
"Konzeptvorlage",
|
||||
"Konzept",
|
||||
"Die requires-Klausel ist nicht mit \"%nfd\" kompatibel.",
|
||||
"Es wurde ein Attribut erwartet.",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"das Übernehmen der Adresse einer expliziten „dies“-Funktion erfordert einen qualifizierten Namen.",
|
||||
"das Formatieren der Adresse einer expliziten „dies“-Funktion erfordert den Operator „&“",
|
||||
"Ein Zeichenfolgenliteral kann nicht zum Initialisieren eines flexiblen Arraymembers verwendet werden.",
|
||||
"Die IFC-Darstellung der Definition der Funktion %sq ist ungültig",
|
||||
null,
|
||||
"Ein UniLevel-IFC-Chart wurde nicht zum Angeben von Parametern verwendet.",
|
||||
"Der %u1 Parameter wurden im IFC-Parameterdefinitionschart angegeben, während %u2 Parameter in der IFC-Deklaration angegeben wurden.",
|
||||
"Der %u1 Parameter wurde im IFC-Parameterdefinitionschart angegeben, während %u2 Parameter in der IFC-Deklaration angegeben wurden.",
|
||||
"%u1 Parameter wurden im IFC-Parameterdefinitionschart angegeben, während der %u2 Parameter in der IFC-Deklaration angegeben wurde.",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"Die IFC-Darstellung der Definition der Funktion %sq fehlt",
|
||||
"Funktionsmodifizierer gilt nicht für eine statische Mitgliedervorlagendeklaration",
|
||||
"Die Mitgliederauswahl umfasst zu viele geschachtelte anonyme Typen",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"Ein Lambdaausdruck \"static\" muss eine leere Erfassungsspezifikation aufweisen.",
|
||||
"EDG IFC-Headereinheit",
|
||||
"EDG IFC",
|
||||
"für die aktuelle Übersetzungseinheit konnte keine Headereinheit erstellt werden",
|
||||
"Die aktuelle Übersetzungseinheit verwendet mindestens ein Feature, das derzeit nicht in eine Headereinheit geschrieben werden kann",
|
||||
"Für die aktuelle Übersetzungseinheit konnte keine IFC-Datei erstellt werden.",
|
||||
"Mindestens eine Entität kann derzeit nicht in eine IFC-Datei geschrieben werden.",
|
||||
"\"explicit(bool)\" ist ein C++20-Feature",
|
||||
"Das erste Argument muss ein Zeiger auf eine Ganzzahl, enum oder unterstützte Gleitkommazahl sein",
|
||||
"C++-Module können beim Kompilieren mehrerer Übersetzungseinheiten nicht verwendet werden",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"Initialisiererergebnis behebt eine dllimport-Variable",
|
||||
"Vorlage mit dem Attribut „no_specializations“ kann nicht spezialisiert werden",
|
||||
"„static“ entspricht hier nicht dem Standard",
|
||||
"%nd wurde zuvor ohne explizite Enumerationsbasis deklariert"
|
||||
"%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."
|
||||
]
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"una lista de destrucciones vacía se debe omitir por completo",
|
||||
"se esperaba un operando asm",
|
||||
"se esperaba un registro para destruir",
|
||||
"el atributo 'format' requiere un parámetro de puntos suspensivos",
|
||||
"El atributo \"format\" requiere un parámetro de puntos suspensivos o un paquete de parámetros",
|
||||
"el primer argumento de sustitución no es el primer argumento de variable",
|
||||
"el índice de argumentos de formato es superior al número de parámetros",
|
||||
"un argumento de formato no tiene un tipo de cadena",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"Intento de desreferenciar un puntero a miembro nulo (miembro de datos)",
|
||||
"comparar un puntero con void y un puntero con una función no estándar",
|
||||
"error en la inicialización de los metadatos",
|
||||
"conversión de base a derivado no válida (el tipo de clase completa es %t)",
|
||||
"conversión de base a derivada no válida (el tipo de clase derivada real es %t)",
|
||||
"acceso a %n no válido en un objeto del tipo %t completo",
|
||||
"no se permite aquí \"__auto_type\"",
|
||||
"\"__auto_type\" no admite varios declaradores",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"no se permite una llamada explícita a un destructor en una expresión constante",
|
||||
"Un operador de coma sin paréntesis en una expresión de subíndice de matriz está en desuso",
|
||||
"el número de elementos asignados dinámicamente (%d) es demasiado pequeño para el inicializador",
|
||||
"un operando volatile para la expresión %s está en desuso",
|
||||
null,
|
||||
"el uso del resultado de una asignación a un objeto escalar volatile está en desuso",
|
||||
"un tipo de destino volatile para una expresión de asignación compuesta está en desuso",
|
||||
"un parámetro de función volatile está en desuso",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"error de sustitución de los argumentos %T para concept-id",
|
||||
"el concepto es false para los argumentos %T",
|
||||
"no se permite una cláusula requires aquí (no es una función basada en plantilla)",
|
||||
"plantilla de concepto",
|
||||
"concepto",
|
||||
"la cláusula requires es incompatible con %nfd",
|
||||
"se esperaba un atributo",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"tomar la dirección de una función explícita \"this\" requiere un nombre completo",
|
||||
"la formación de la dirección de una función explícita 'this' requiere el operador '&'",
|
||||
"no se puede usar un literal de cadena para inicializar un miembro de matriz flexible",
|
||||
"la representación IFC de la definición de la función %sq no es válida",
|
||||
null,
|
||||
"no se usó un gráfico IFC UniLevel para especificar parámetros",
|
||||
"el gráfico de definición de parámetros IFC especificó %u1 parámetros, mientras que la declaración IFC especificó %u2 parámetros",
|
||||
"el gráfico de definición de parámetros IFC especificó %u1 parámetro, mientras que la declaración IFC especificó %u2 parámetros",
|
||||
"el gráfico de definición de parámetros IFC especificó %u1 parámetros, mientras que la declaración IFC especificó %u2 parámetro",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"falta la representación IFC de la definición de la función %sq",
|
||||
"el modificador de función no se aplica a la declaración de plantilla de miembro",
|
||||
"la selección de miembros implica demasiados tipos anónimos anidados",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"una expresión lambda \"estática\" debe tener una especificación de captura vacía",
|
||||
"Unidad de encabezado EDG IFC",
|
||||
"EDG IFC",
|
||||
"no se pudo crear una unidad de encabezado para la unidad de traducción actual",
|
||||
"la unidad de traducción actual usa una o varias características que no se pueden escribir actualmente en una unidad de encabezado",
|
||||
"no se pudo generar un archivo IFC para la unidad de traducción actual",
|
||||
"actualmente no se puede escribir una o más entidades en un archivo IFC",
|
||||
"'explicit(bool)' es una característica de C++20",
|
||||
"el primer argumento debe ser un puntero a entero, enumeración o tipo de punto flotante admitido",
|
||||
"No se pueden usar módulos de C++ al compilar varias unidades de traducción",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"el resultado del inicializador se dirige a una variable dllimport",
|
||||
"La plantilla con el atributo \"no_specializations\" no se puede especializar",
|
||||
"\"static\" no es estándar aquí",
|
||||
"%nd se declaró previamente sin una base explícita de enumeración"
|
||||
"%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"
|
||||
]
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"une liste d'éléments écrasés vide doit être omise entièrement",
|
||||
"opérande asm attendu",
|
||||
"registre à écraser attendu",
|
||||
"l'attribut 'format' requiert un paramètre ellipse",
|
||||
"L’attribut « format » nécessite un paramètre ellipse ou un ensemble de paramètres",
|
||||
"le premier argument de substitution n'est pas le premier argument de variable",
|
||||
"l'index d'arguments de format est supérieur au nombre d'arguments",
|
||||
"l'argument de format n'est pas de type chaîne",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"tentative de déréférencement d'un pointeur vers membre null (membre de données)",
|
||||
"la comparaison d'un pointeur à void et d'un pointeur à une fonction n'est pas standard",
|
||||
"échec de l'initialisation des métadonnées",
|
||||
"cast du type de base en type dérivé non valide (le type de classe complet est %t)",
|
||||
"conversion de base vers dérivée non valide (le type réel de la classe dérivée est %t)",
|
||||
"accès non valide à %n dans l'objet de type complet %t",
|
||||
"'__auto_type' non autorisé ici",
|
||||
"'__auto_type' n'autorise pas plusieurs déclarateurs",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"un appel à un destructeur explicite n'est pas autorisé dans une expression constante",
|
||||
"l'utilisation d'un opérateur virgule non placé entre parenthèses dans une expression d'indice de tableau est dépréciée",
|
||||
"le nombre d'éléments alloués dynamiquement (%d) est trop faible pour l'initialiseur",
|
||||
"l'utilisation d'un opérande volatile dans l'expression %s est dépréciée",
|
||||
null,
|
||||
"l'utilisation du résultat d'une affectation dans un objet scalaire volatile est dépréciée",
|
||||
"l'utilisation d'un type de destination volatile pour une expression d'affectation composée est dépréciée",
|
||||
"l'utilisation d'un paramètre de fonction volatile est dépréciée",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"échec de la substitution des arguments %T pour l'ID de concept",
|
||||
"le concept est faux pour les arguments %T",
|
||||
"une clause requires n'est pas autorisée ici (il ne s'agit pas d'une fonction basée sur un modèle)",
|
||||
"modèle de concept",
|
||||
"concept",
|
||||
"clause requires incompatible avec %nfd",
|
||||
"attribut attendu",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"la prise de l’adresse d’une fonction « this » explicite nécessite un nom qualifié",
|
||||
"la création de l’adresse d’une fonction « this » explicite nécessite l’opérateur '&'",
|
||||
"impossible d’utiliser un littéral de chaîne pour initialiser un membre de tableau flexible",
|
||||
"la représentation IFC de la définition de la fonction %sq n’est pas valide",
|
||||
null,
|
||||
"un graphique IFC UniLevel n’a pas été utilisé pour spécifier des paramètres.",
|
||||
"%u1 paramètres ont été spécifiés par le graphique de définition de paramètres IFC alors que %u2 paramètres ont été spécifiés par la déclaration IFC",
|
||||
"%u1 paramètre a été spécifié par le graphique de définition de paramètres IFC alors que %u2 paramètres ont été spécifiés par la déclaration IFC",
|
||||
"%u1 paramètres ont été spécifiés par le graphique de définition de paramètres IFC alors que %u2 paramètre a été spécifié par la déclaration IFC",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"la représentation IFC de la définition de la fonction %sq est absente",
|
||||
"Le modificateur de fonction ne s'applique pas à la déclaration du modèle de membre.",
|
||||
"la sélection de membre implique un trop grand nombre de types anonymes imbriqués",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"une expression lambda « static » doit avoir une spécification de capture vide",
|
||||
"Unité d’en-tête IFC EDG",
|
||||
"EDG IFC",
|
||||
"impossible de créer une unité d’en-tête pour l’unité de traduction actuelle",
|
||||
"l’unité de traduction actuelle utilise une ou plusieurs fonctionnalités qui ne peuvent actuellement pas être écrites dans une unité d’en-tête",
|
||||
"impossible de produire un fichier IFC pour l’unité de traduction en cours",
|
||||
"impossible d’écrire une ou plusieurs entités dans un fichier IFC",
|
||||
"'explicit(bool)' est une fonctionnalité C++20",
|
||||
"le premier argument doit être un pointeur vers un entier, une enum ou un type de point flottant pris en charge",
|
||||
"les modules C++ ne peuvent pas être utilisés lors de la compilation de plusieurs unités de traduction",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"Le résultat de l’initialiseur traite une variable dllimport",
|
||||
"le modèle avec l’attribut « no_specializations » ne peut pas être spécialisé",
|
||||
"« static » n’est pas standard ici",
|
||||
"%nd a été déclaré précédemment sans base d’énumération explicite"
|
||||
"%nd a été déclaré précédemment sans base d’énumération explicite",
|
||||
"le mot-clé « typename » manquant n’est pas standard ici",
|
||||
"la syntaxe abrégée du modèle de fonction n’est pas standard pour les guides de déduction"
|
||||
]
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"un elenco di sovrascritture vuoto deve essere interamente omesso",
|
||||
"previsto un operando di assembly",
|
||||
"previsto un registro da sovrascrivere",
|
||||
"con l'attributo 'format' è richiesto un parametro puntini di sospensione",
|
||||
"l'attributo 'format' richiede un parametro ellipsis o un pacchetto di parametri",
|
||||
"il primo argomento di sostituzione non è il primo argomento variabile",
|
||||
"l'indice dell'argomento format è maggiore del numero di parametri",
|
||||
"l'argomento format non include il tipo string",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"si è provato a dereferenziare un puntatore a membro (membro dati) Null",
|
||||
"il confronto di un puntatore con void e di un puntatore con una funzione non è conforme allo standard",
|
||||
"inizializzazione dei metadati non riuscita",
|
||||
"cast da base a derivato non valido (il tipo classe completo è %t)",
|
||||
"cast da base a derivato non valido (il tipo della classe derivata effettivo è %t)",
|
||||
"accesso non valido a %n nell'oggetto del tipo completo %t",
|
||||
"'__auto_type' non è consentito in questo punto",
|
||||
"'__auto_type' non consente l'uso di più dichiaratori",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"una chiamata di distruttore esplicita non è consentita in un'espressione costante",
|
||||
"un operatore con virgola non racchiusa tra parentesi in un'espressione di indice di matrice è deprecato",
|
||||
"il numero di elementi allocati dinamicamente (%d) è troppo ridotto per l'inizializzatore",
|
||||
"un operando volatile per l'espressione %s è deprecato",
|
||||
null,
|
||||
"l'utilizzo del risultato di un'assegnazione a un oggetto scalare volatile è deprecato",
|
||||
"un tipo di destinazione volatile per un'espressione di assegnazione composta è deprecato",
|
||||
"un parametro di funzione volatile è deprecato",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"la sostituzione degli argomenti %T per l'ID concetto non è riuscita",
|
||||
"il concetto è false per gli argomenti %T",
|
||||
"in questo punto non sono consentite clausole requires (non è una funzione basata su modelli)",
|
||||
"modello di concetto",
|
||||
"concetto",
|
||||
"la clausola requires non è compatibile con %nfd",
|
||||
"è previsto un attributo",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"l'acquisizione dell'indirizzo di una funzione esplicita 'this' richiede un nome qualificato",
|
||||
"per formare l'indirizzo di una funzione esplicita 'this' è necessario l'operatore '&'",
|
||||
"impossibile utilizzare un valore letterale stringa per inizializzare un membro di matrice flessibile",
|
||||
"la rappresentazione IFC della definizione della funzione %sq non è valida",
|
||||
null,
|
||||
"un grafico IFC UniLevel non è stato usato per specificare i parametri",
|
||||
"%u1 parametri specificati dal grafico di definizione dei parametri IFC mentre %u2 parametri sono stati specificati dalla dichiarazione IFC",
|
||||
"%u1 parametro è stato specificato dal grafico di definizione del parametro IFC mentre %u2 parametri sono stati specificati dalla dichiarazione IFC",
|
||||
"%u1 parametri sono stati specificati dal grafico di definizione del parametro IFC mentre %u2 parametro è stato specificato dalla dichiarazione IFC",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"manca la rappresentazione IFC della definizione della funzione %sq",
|
||||
"il modificatore di funzione non si applica alla dichiarazione del modello di membro",
|
||||
"la selezione dei membri implica troppi tipi anonimi annidati",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"un'espressione lambda 'static' deve avere una specifica di acquisizione vuota",
|
||||
"Unità di intestazione IFC EDG",
|
||||
"EDG IFC",
|
||||
"Non è possibile creare un'unità di intestazione per l'unità di conversione corrente",
|
||||
"l'unità di conversione corrente utilizza una o più funzionalità che attualmente non possono essere scritte in un'unità di intestazione",
|
||||
"non è possibile generare un file IFC per l'unità di traduzione corrente",
|
||||
"non è attualmente possibile scrivere una o più entità in un file IFC",
|
||||
"'explicit(bool)' è una funzionalità di C++20",
|
||||
"il primo argomento deve essere un puntatore a un numero intero, un'enumerazione o un tipo a virgola mobile supportato",
|
||||
"non è possibile utilizzare moduli C++ durante la compilazione di più unità di conversione",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"il risultato dell'inizializzatore punta a una variabile dllimport",
|
||||
"modello con l'attributo 'no_specializations' non può essere specializzato",
|
||||
"'static' non è standard qui",
|
||||
"%nd era stato dichiarato in precedenza senza una base di enumerazione esplicita"
|
||||
"%nd era stato dichiarato in precedenza senza una base di enumerazione esplicita",
|
||||
"manca 'typename' che qui non è standard",
|
||||
"la sintassi abbreviata del modello di funzione non è standard per le guide alla deduzione"
|
||||
]
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"空の上書きリストはリスト全体が省略される必要があります",
|
||||
"asm オペランドが必要です",
|
||||
"上書きするレジスタが必要です",
|
||||
"'format' 属性には省略記号のパラメーターが必要です",
|
||||
"'format' 属性には省略記号パラメーターまたはパラメーター パックが必要です",
|
||||
"最初の代替引数が最初の可変引数ではありません",
|
||||
"format 引数のインデックスがパラメーターの数より大きいです",
|
||||
"format 引数が文字列型ではありません",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"null pointer-to-member を逆参照しようとしました (データ メンバー)",
|
||||
"void へのポインターと関数へのポインターの比較は非標準です",
|
||||
"メタデータの初期化に失敗しました",
|
||||
"base から derived へのキャストが無効です (完全なクラス型は %t です)",
|
||||
"base から derived へのキャストが無効です (実際の derived クラス型は %t です)",
|
||||
"完全な型 %t のオブジェクトの %n へのアクセス権が無効です",
|
||||
"'__auto_type' はここでは使用できません",
|
||||
"'__auto_type' には複数の宣言子は使用できません",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"定数式では明示的なデストラクター呼び出しは許可されていません",
|
||||
"配列インデックス式では、かっこで囲まれていないコンマ演算子は非推奨です",
|
||||
"動的に割り当てられる要素 (%d) の数が初期化子には少なすぎます",
|
||||
"%s 式に対する揮発性のオペランドは非推奨です",
|
||||
null,
|
||||
"揮発性のスカラー オブジェクトへの代入の結果の使用は非推奨です",
|
||||
"複合代入式では揮発性のターゲットの型は非推奨です",
|
||||
"揮発性の関数パラメーターは非推奨です",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"概念 ID の引数 %Tの置換に失敗しました",
|
||||
"引数 %T の概念は false です",
|
||||
"こちらでは requires 句は許可されていません (テンプレート関数ではありません)",
|
||||
"コンセプト テンプレート",
|
||||
"概念",
|
||||
"requires 句は %nfd と互換性がありません",
|
||||
"属性が必要です",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"明示的な 'this' 関数のアドレスの取得には修飾名が必要です",
|
||||
"明示的な 'this' 関数のアドレスの形成には '&' 演算子が必要です",
|
||||
"文字列リテラルを柔軟な配列メンバーを初期化するのに使用することはできません",
|
||||
"関数 %sq の定義の IFC 表現が無効です",
|
||||
null,
|
||||
"パラメーターの指定に UniLevel IFC グラフが使用されませんでした",
|
||||
"%u1 個のパラメーターが IFC パラメーター定義グラフで指定されましたが、IFC 宣言では %u2 個のパラメーターが指定されました",
|
||||
"%u1 個のパラメーターが IFC パラメーター定義グラフで指定されましたが、IFC 宣言では %u2 個のパラメーターが指定されました",
|
||||
"%u1 個のパラメーターが IFC パラメーター定義グラフで指定されましたが、IFC 宣言では %u2 個のパラメーターが指定されました",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"関数 %sq の定義の IFC 表現が見つかりません",
|
||||
"関数修飾子はメンバー テンプレート宣言には適用されません",
|
||||
"メンバーの選択に含まれる、入れ子になった匿名のタイプが多すぎます",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"'static' ラムダ式には空のキャプチャ仕様が必要です",
|
||||
"EDG IFC ヘッダー ユニット",
|
||||
"EDG IFC",
|
||||
"現在の翻訳単位のヘッダー ユニットを作成できませんでした",
|
||||
"現在の翻訳単位は、現在ヘッダー ユニットに書き込むことができない 1 つ以上の機能を使用します",
|
||||
"現在の翻訳単位の IFC ファイルを生成できませんでした",
|
||||
"現在、1 つ以上のエンティティを IFC ファイルに書き込めません",
|
||||
"'explicit(bool)' は C++20 機能です",
|
||||
"最初の引数は、整数、enum、またはサポートされている浮動小数点型へのポインターである必要があります",
|
||||
"複数の翻訳単位をコンパイルする場合、C++ モジュールは使用できません",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"初期化子の結果は dllimport 変数をアドレス指定します",
|
||||
"'no_specializations' 属性を持つテンプレートを特殊化することはできません",
|
||||
"'static' はここでは非標準です",
|
||||
"%nd は、明示的な列挙型ベースなしで以前に宣言されました"
|
||||
"%nd は、明示的な列挙型ベースなしで以前に宣言されました",
|
||||
"見つからない 'typename' はここでは非標準です",
|
||||
"省略形の関数テンプレート構文は、推論ガイドでは非標準です"
|
||||
]
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"비어 있는 변경 가능 목록을 완전히 생략해야 합니다.",
|
||||
"asm 피연산자가 필요합니다.",
|
||||
"변경할 레지스터가 필요합니다.",
|
||||
"'format' 특성에는 가변 매개 변수(...)가 필요합니다.",
|
||||
"'format' 특성에는 줄임표 매개 변수 또는 매개 변수 팩이 필요합니다.",
|
||||
"첫 번째 대체 인수가 첫 번째 가변 인수가 아닙니다.",
|
||||
"format 인수의 인덱스가 매개 변수 개수보다 큽니다.",
|
||||
"format 인수에 문자열 형식을 사용할 수 없습니다.",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"null 멤버 포인터(데이터 멤버)를 역참조하려고 합니다.",
|
||||
"void에 대한 포인터 및 함수에 대한 포인터 비교가 표준이 아닙니다.",
|
||||
"메타데이터 초기화 실패",
|
||||
"기본에서 파생으로의 캐스트가 잘못되었습니다(완전한 클래스 형식은 %t임).",
|
||||
"기본에서 파생으로의 캐스트가 잘못되었습니다(실제 파생 클래스 형식은 %t임).",
|
||||
"완전한 형식 %t의 개체에서 %n에 대한 액세스가 잘못되었습니다.",
|
||||
"'__auto_type'은 여기에 사용할 수 없습니다.",
|
||||
"'__auto_type'에는 선언자를 여러 개 사용할 수 없습니다.",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"상수 식에는 명시적 소멸자 호출을 사용할 수 없습니다.",
|
||||
"배열 첨자 식의 괄호로 묶이지 않은 쉼표 연산자는 사용되지 않습니다.",
|
||||
"동적으로 할당된 요소 수(%d개)가 이니셜라이저에 비해 너무 적습니다.",
|
||||
"%s 식에 대한 volatile 피연산자는 사용되지 않습니다.",
|
||||
null,
|
||||
"volatile 스칼라 개체에 할당한 결과는 사용되지 않습니다.",
|
||||
"복합 대입 식에 대한 volatile 대상 형식은 사용되지 않습니다.",
|
||||
"volatile 함수 매개 변수는 사용되지 않습니다.",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"개념 ID의 %T 인수를 대체하지 못했습니다.",
|
||||
"%T 인수의 개념이 false입니다.",
|
||||
"requires 절은 여기에서 허용되지 않습니다(템플릿 기반 함수가 아님).",
|
||||
"개념 템플릿",
|
||||
"개념",
|
||||
"requires 절이 %nfd과(와) 호환되지 않습니다.",
|
||||
"특성이 필요합니다.",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"명시적 'this' 함수의 주소를 사용하려면 정규화된 이름이 필요합니다.",
|
||||
"명시적 'this' 함수의 주소를 구성하려면 '&' 연산자가 필요합니다.",
|
||||
"가변 배열 멤버를 초기화하는 데 문자열 리터럴을 사용할 수 없습니다.",
|
||||
"함수 %sq의 정의의 IFC 표현이 잘못되었습니다.",
|
||||
null,
|
||||
"매개 변수를 지정하는 데 UniLevel IFC 차트가 사용되지 않았습니다.",
|
||||
"%u1 매개 변수는 IFC 매개 변수 정의 차트에 의해 지정되었지만 %u2 매개 변수는 IFC 선언에 의해 지정되었습니다.",
|
||||
"%u1 매개 변수는 IFC 매개 변수 정의 차트에 의해 지정되었지만 %u2 매개 변수는 IFC 선언에 의해 지정되었습니다.",
|
||||
"%u1 매개 변수는 IFC 매개 변수 정의 차트에 의해 지정되었지만 %u2 매개 변수는 IFC 선언에 의해 지정되었습니다.",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"%sq 함수 정의의 IFC 표현이 없습니다.",
|
||||
"함수 한정자는 멤버 템플릿 선언에 적용되지 않습니다.",
|
||||
"멤버 선택에 너무 많은 중첩된 익명 형식이 포함됩니다.",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"'static' 람다 식에는 빈 캡처 사양이 있어야 합니다.",
|
||||
"EDG IFC 헤더 단위",
|
||||
"EDG IFC",
|
||||
"현재 변환 단위에 대한 헤더 단위를 만들 수 없습니다.",
|
||||
"현재 변환 단위는 헤더 단위에 현재 쓸 수 없는 하나 이상의 기능을 사용합니다.",
|
||||
"현재 번역 단위에 대해 IFC 파일을 생성할 수 없습니다.",
|
||||
"하나 이상의 엔터티를 현재 IFC 파일에 쓸 수 없습니다.",
|
||||
"'explicit(bool)'는 C++20 기능입니다.",
|
||||
"첫 번째 인수는 정수, enum 또는 지원되는 부동 소수점 형식에 대한 포인터여야 합니다.",
|
||||
"여러 번역 단위를 컴파일할 때는 C++ 모듈을 사용할 수 없습니다.",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"이니셜라이저 결과가 dllimport 변수를 참조합니다.",
|
||||
"'no_specializations' 특성이 있는 템플릿은 특수화할 수 없습니다.",
|
||||
"여기서 'static'은 표준이 아닙니다.",
|
||||
"%nd은(는) 이전에 명시적 열거형 기반 없이 선언되었습니다."
|
||||
"%nd은(는) 이전에 명시적 열거형 기반 없이 선언되었습니다.",
|
||||
"여기서 누락된 'typename'이 표준이 아닙니다.",
|
||||
"약식 함수 템플릿 구문은 추론 가이드에 대한 표준이 아닙니다."
|
||||
]
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"pustą listę elementów nadpisywanych należy całkowicie pominąć",
|
||||
"oczekiwano operandu funkcji asm",
|
||||
"oczekiwano rejestru do nadpisania",
|
||||
"atrybut „format” wymaga parametru wielokropka",
|
||||
"atrybut „format” wymaga parametru wielokropka lub pakietu parametrów",
|
||||
"pierwszy argument podstawienia nie jest pierwszym argumentem zmiennej",
|
||||
"indeks argumentu formatu jest większy niż liczba parametrów",
|
||||
"argument formatu nie ma typu ciągu",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"próba wyłuskania pustego wskaźnika do składowej (składowej danych)",
|
||||
"porównanie wskaźnika z elementem void i wskaźnika z funkcją jest niestandardowe",
|
||||
"nie można zainicjować metadanych",
|
||||
"nieprawidłowe rzutowanie typu bazowego na pochodny (pełny typ klasy to %t)",
|
||||
"nieprawidłowe rzutowanie typu bazowego na pochodny (rzeczywisty typ klasy pochodnej to %t)",
|
||||
"nieprawidłowy dostęp do elementu %n w obiekcie, którego pełny typ to %t",
|
||||
"element „__auto_type” jest niedozwolony w tym miejscu",
|
||||
"element „__auto_type” nie zezwala na wiele deklaratorów",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"jawne wywołanie destruktora jest niedozwolone w wyrażeniu stałym",
|
||||
"nieujęty w nawiasach operator przecinka w wyrażeniu indeksu tablicy jest przestarzały",
|
||||
"liczba dynamicznie przydzielonych elementów (%d) jest zbyt mała dla inicjatora",
|
||||
"nietrwały operand wyrażenia %s jest przestarzały",
|
||||
null,
|
||||
"używanie wyniku przypisania do nietrwałego obiektu skalarnego jest przestarzałe",
|
||||
"nietrwały typ docelowy dla złożonego wyrażenia przypisania jest przestarzały",
|
||||
"nietrwały parametr funkcji jest przestarzały",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"podstawianie argumentów %T dla identyfikatora koncepcji nie powiodło się",
|
||||
"koncepcja jest fałszywa dla argumentów %T",
|
||||
"klauzula requires nie jest dozwolona w tym miejscu (nie jest to funkcja z szablonem)",
|
||||
"szablon koncepcji",
|
||||
"koncepcja",
|
||||
"klauzula requires jest niezgodna z elementem %nfd",
|
||||
"oczekiwano atrybutu",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"pobieranie adresu jawnej funkcji „this” wymaga kwalifikowanej nazwy",
|
||||
"utworzenie adresu jawnej funkcji „this” wymaga operatora \"&\"",
|
||||
"literału ciągu nie można użyć do zainicjowania elastycznej składowej tablicy",
|
||||
"Reprezentacja IFC definicji funkcji %sq jest nieprawidłowa",
|
||||
null,
|
||||
"wykres IFC UniLevel nie został użyty do określenia parametrów",
|
||||
"Parametry (%u1) zostały określone przez wykres definicji parametru IFC, podczas gdy parametry (%u2) zostały określone przez deklarację IFC",
|
||||
"Parametry (%u1) zostały określone przez wykres definicji parametru IFC, podczas gdy parametry (%u2) zostały określone przez deklarację IFC",
|
||||
"Parametry (%u1) zostały określone przez wykres definicji parametru IFC, podczas gdy parametry (%u2) zostały określone przez deklarację IFC",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"Brak reprezentacji IFC definicji funkcji %sq",
|
||||
"modyfikator funkcji nie ma zastosowania do deklaracji szablonu elementu członkowskiego",
|
||||
"wybór elementu członkowskiego obejmuje zbyt wiele zagnieżdżonych typów anonimowych",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"wyrażenie lambda „statyczne” musi mieć pustą specyfikację przechwytywania",
|
||||
"Jednostka nagłówka EDG IFC",
|
||||
"EDG IFC",
|
||||
"nie można utworzyć jednostki nagłówka dla bieżącej jednostki translacji",
|
||||
"bieżąca jednostka translacji używa co najmniej jednej funkcji, których obecnie nie można zapisać w jednostce nagłówka",
|
||||
"nie można utworzyć pliku IFC dla bieżącej jednostki tłumaczenia",
|
||||
"nie można obecnie zapisać jednej lub więcej jednostek w pliku IFC",
|
||||
"„explicit(bool)” jest funkcją języka C++20",
|
||||
"pierwszy argument musi być wskaźnikiem do liczby całkowitej, wyliczenia lub obsługiwanego typu zmiennoprzecinkowego",
|
||||
"Modułów języka C++ nie można używać podczas kompilowania wielu jednostek tłumaczenia",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"wynik inicjatora adresuje zmienną dllimport",
|
||||
"szablon z atrybutem „no_specializations” nie może być wyspecjalizowany",
|
||||
"„static” jest tutaj niestandardowy",
|
||||
"funkcja %nd została poprzednio zadeklarowana bez jawnej bazy wyliczenia"
|
||||
"funkcja %nd została poprzednio zadeklarowana bez jawnej bazy wyliczenia",
|
||||
"brak elementu „typename” jest tutaj niestandardowe",
|
||||
"skrócona składnia szablonu funkcji jest niestandardowa dla przewodników dedukcji"
|
||||
]
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"um clobber vazio deve ser totalmente omitido",
|
||||
"esperado um operando asm",
|
||||
"esperado um registro para clobber",
|
||||
"\"format\" attribute requires an ellipsis parameter",
|
||||
"O atributo 'format' requer um parâmetro elipse ou um pacote de parâmetros",
|
||||
"o primeiro argumento de substituição não é o primeiro argumento variável",
|
||||
"o índice de argumento do formato é maior que o número de parâmetros",
|
||||
"o argumento de formato não tem tipo de sequência",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"tentativa de desreferenciar um ponteiro para membro nulo (membro de dados)",
|
||||
"comparar um ponteiro para nulo e um ponteiro para uma função não é padrão",
|
||||
"falha na inicialização de metadados",
|
||||
"conversão de base para derivado inválida (o tipo de classe completo é %t)",
|
||||
"Conversão inválida de base para derivada (o tipo real da classe derivada é %t)",
|
||||
"acesso inválido a %n no objeto do tipo %t completo",
|
||||
"'__auto_type' não é permitido aqui",
|
||||
"'__auto_type' não permite vários declaradores",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"uma chamada de destruidor explícita não é permitida em uma expressão constante",
|
||||
"um operador de vírgula que não está entre parênteses em uma expressão de subscrito de matriz está preterido",
|
||||
"número de elementos alocados dinamicamente (%d) muito pequeno para o inicializador",
|
||||
"um operando volátil da expressão %s está preterido",
|
||||
null,
|
||||
"o uso do resultado de uma atribuição para um objeto volátil escalar está preterido",
|
||||
"um tipo de destino volátil para uma expressão de atribuição composta foi preterido",
|
||||
"um parâmetro de função volátil está preterido",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"falha na substituição de argumentos %T da ID do conceito",
|
||||
"o conceito é falso para argumentos %T",
|
||||
"uma cláusula requires não é permitida aqui (não é uma função de modelo)",
|
||||
"modelo de conceito",
|
||||
"conceito",
|
||||
"cláusula requires incompatível com %nfd",
|
||||
"um atributo é esperado",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"usar o endereço de uma função explícita 'this' requer um nome qualificado",
|
||||
"formar o endereço de uma função 'this' explícita requer o operador '&'",
|
||||
"um literal de cadeia de caracteres não pode ser usado para inicializar um membro de matriz flexível",
|
||||
"A representação IFC da definição da função %sq é inválida",
|
||||
null,
|
||||
"um gráfico UNILevel IFC não foi usado para especificar parâmetros",
|
||||
"%u1 parâmetros foram especificados pelo gráfico de definição de parâmetro IFC, enquanto %u2 parâmetros foram especificados pela declaração IFC",
|
||||
"O parâmetro %u1 foi especificado pelo gráfico de definição de parâmetro IFC, enquanto os parâmetros %u2 foram especificados pela declaração IFC",
|
||||
"O parâmetro %u1 foi especificado pelo gráfico de definição de parâmetro IFC, enquanto parâmetros %u2 foram especificados pela declaração IFC",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"a representação IFC da definição da função %sq está ausente",
|
||||
"o modificador de função não se aplica à declaração de modelo do membro",
|
||||
"a seleção de membro envolve muitos tipos anônimos aninhados",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"uma expressão lambda 'static' deve ter uma especificação de captura vazia",
|
||||
"Unidade de cabeçalho EDG IFC",
|
||||
"EDG IFC",
|
||||
"não foi possível criar uma unidade de cabeçalho para a unidade de tradução atual",
|
||||
"a unidade de tradução atual usa um ou mais recursos que não podem ser gravados atualmente em uma unidade de cabeçalho",
|
||||
"Não foi possível gerar um arquivo IFC para a unidade de tradução atual",
|
||||
"Uma ou mais entidades não podem ser gravadas em um arquivo IFC no momento",
|
||||
"'explicit(bool)' é um recurso do C++20",
|
||||
"o primeiro argumento deve ser um ponteiro para inteiro, enum ou tipo de ponto flutuante suportado",
|
||||
"módulos C++ não podem ser usados ao compilar múltiplas unidades de tradução",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"o resultado do inicializador trata de uma variável dllimport",
|
||||
"modelo com atributo \"no_specializations\" não pode ser especializado",
|
||||
"\"static\" não é padrão aqui",
|
||||
"%nd foi declarado anteriormente sem uma base de enumeração explícita"
|
||||
"%nd foi declarado anteriormente sem uma base de enumeração explícita",
|
||||
"\"typename\" ausente não é padrão aqui",
|
||||
"a sintaxe abreviada de template de função é não padrão para guias de dedução"
|
||||
]
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"пустой список затирания должен быть полностью опущен",
|
||||
"требуется операнд ассемблерного кода",
|
||||
"требуется регистр для затирания",
|
||||
"для атрибута \"format\" требуется параметр-многоточие",
|
||||
"для атрибута \"format\" требуется параметр-многоточие или пакет параметров",
|
||||
"первый аргумент замены не является первым переменным аргументом",
|
||||
"индекс аргумента формата превышает число параметров",
|
||||
"аргумент формата имеет отличный от строкового тип",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"попытка отменить ссылку на пустой указатель на элемент (элемент данных)",
|
||||
"сравнение указателя на пустоту и указателя на функцию является нестандартным",
|
||||
"сбой инициализации метаданных",
|
||||
"недопустимое приведение базового класса к производному (полный тип класса — %t)",
|
||||
"недопустимое приведение базового класса к производному (фактический тип производного класса — %t)",
|
||||
"недопустимый доступ к %n в объекте полного типа %t",
|
||||
"Значение \"__auto_type\" здесь запрещено",
|
||||
"\"__auto_type\" не допускает множество операторов объявления.",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"явный вызов деструктора не разрешен в константном выражении",
|
||||
"Оператор \"запятая\" не в круглых скобках в выражении индекса массива не рекомендуется.",
|
||||
"число динамически выделенных элементов (%d) слишком мало для инициализатора",
|
||||
"временный операнд для выражения %s не рекомендуется",
|
||||
null,
|
||||
"использование результата назначения временному скалярному объекту не рекомендуется",
|
||||
"временный целевой тип для выражения сложного назначения не рекомендуется",
|
||||
"временный параметр функции не рекомендуется",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"не удалось подставить аргументы %T для идентификатора концепции",
|
||||
"концепция имеет значение false для аргументов %T",
|
||||
"Использование здесь предложения requires запрещено (не шаблонная функция)",
|
||||
"шаблон концепции",
|
||||
"понятие",
|
||||
"Предложение requires несовместимо с %nfd",
|
||||
"ожидается атрибут",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"для получения адреса явной функции \"this\" требуется полное имя",
|
||||
"для формирования адреса явной функции \"this\" требуется оператор \"&\"",
|
||||
"строковый литерал нельзя использовать для инициализации элемента гибкого массива",
|
||||
"представление IFC определения функции %sq недопустимо",
|
||||
null,
|
||||
"диаграмма IFC UniLevel не использовалось для указания параметров",
|
||||
"несколько (%u1) параметров указаны в диаграмме определения параметров IFC, в то время как несколько (%u2) параметров указаны в объявлении IFC",
|
||||
"%u1 параметр указан в диаграмме определения параметров IFC, в то время как несколько (%u2) параметров указаны в объявлении IFC",
|
||||
"несколько (%u1) параметров указаны в диаграмме определения параметров IFC, в то время как %u2 параметр указан в объявлении IFC",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"отсутствует представление IFC определения функции %sq",
|
||||
"модификатор функции не применяется к объявлению шаблона элемента",
|
||||
"выбор элемента включает слишком много вложенных анонимных типов",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"Лямбда-выражение \"static\" должно содержать пустую спецификацию захвата",
|
||||
"Единица заголовка EDG IFC",
|
||||
"EDG IFC",
|
||||
"не удалось создать единицу заголовка для текущей единицы трансляции",
|
||||
"текущая единица трансляции использует одну или несколько функций, которые в данный момент невозможно записать в единицу заголовка",
|
||||
"не удалось создать файл IFC для текущей единицы трансляции",
|
||||
"не удалось записать один или несколько объектов в файл IFC",
|
||||
"\"explicit(bool)\" — это функция C++20",
|
||||
"первый аргумент должен быть указателем на целое число, enum или значение поддерживаемого типа с плавающей точкой",
|
||||
"Модули C++ не могут использоваться при компиляции нескольких единиц трансляции",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"результат инициализатора указывает на переменную dllimport",
|
||||
"шаблон с атрибутом \"no_specializations\" не может иметь специализации",
|
||||
"\"static\" является здесь нестандартным",
|
||||
"%nd ранее был объявлен без явной базы перечисления"
|
||||
"%nd ранее был объявлен без явной базы перечисления",
|
||||
"отсутствие typename здесь является нестандартным",
|
||||
"сокращенный синтаксис шаблона функции не является стандартным для правил дедукции"
|
||||
]
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"boş bir değeri değiştirilecekler listesi tamamen atlanmalı",
|
||||
"bir asm işleneni bekleniyor",
|
||||
"değeri değiştirilecek bir yazmaç bekleniyor",
|
||||
"'format' özniteliği bir üç nokta parametresi gerektiriyor",
|
||||
"'format' özniteliği için bir üç nokta parametresi veya parametre paketi gerekir",
|
||||
"ilk değiştirme bağımsız değişkeni, ilk değişken bağımsız değişken değil",
|
||||
"biçim bağımsız değişken dizini, parametre sayısından daha büyük",
|
||||
"biçim bağımsız değişkeni, dize türünde değil",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"null üye işaretçisine (veri üyesi) başvurma denemesi",
|
||||
"bir void işaretçisiyle bir işlev işaretçisini karşılaştırmak standart değildir",
|
||||
"meta veriler başlatılamadı",
|
||||
"temelden türetilmişe dönüştürme geçersiz (tam sınıf türü: %t)",
|
||||
"temelden türetilmişe dönüştürme işlemi geçersiz (gerçek türetilmiş sınıf türü %t)",
|
||||
"tam %t türünün nesnesindeki %n öğesine geçersiz erişim",
|
||||
"'__auto_type' öğesine burada izin verilmez",
|
||||
"'__auto_type' birden fazla bildirimciye izin vermez",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"sabit ifade içerisinde açık yıkıcı çağrısına izin verilmez",
|
||||
"bir dizi alt simge ifadesinde parantez içine alınmış olmayan virgül işleci kullanım dışı bırakıldı",
|
||||
"başlatıcı için dinamik olarak ayrılan öğelerin sayısı (%d) çok küçük",
|
||||
"%s ifadesi için geçici bir işlenen kullanım dışı bırakıldı",
|
||||
null,
|
||||
"geçici skaler nesneye yapılan bir atamanın sonucunun kullanılması kullanım dışı bırakıldı",
|
||||
"bileşik atama ifadesi için geçici bir hedef türü kullanım dışı bırakıldı",
|
||||
"geçici işlev parametresi kullanım dışı bırakıldı",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"kavram kimliği için %T bağımsız değişkenleri değiştirilemedi",
|
||||
"%T bağımsız değişkenleri için kavram false",
|
||||
"burada bir requires yan tümcesine izin verilmiyor (şablonlu bir işlev değil)",
|
||||
"kavram şablonu",
|
||||
"kavram",
|
||||
"requires yan tümcesi %nfd ile uyumsuz",
|
||||
"öznitelik bekleniyordu",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"açık 'this' işlevine ait adresin alınabilmesi için tam ad gerekir",
|
||||
"açık 'this' işlevine ait adresin oluşturulabilmesi için '&' operatörü gerekir",
|
||||
"sabit değerli dize, esnek bir dizi üyesini başlatmak için kullanılamaz",
|
||||
"%sq işlevine ait tanımın IFC gösterimi geçersiz",
|
||||
null,
|
||||
"parametreleri belirtmek için UniLevel IFC grafiği kullanılmadı",
|
||||
"%u1 parametreleri, IFC parametre tanım grafiği tarafından, %u2 parametreleri ise IFC bildirimi tarafından belirtilir",
|
||||
"%u1 parametresi, IFC parametre tanım grafiği tarafından, %u2 parametreleri ise IFC bildirimi tarafından belirtilmiştir",
|
||||
"%u1 parametreleri, IFC parametre tanım grafiği tarafından, %u2 parametresi ise IFC bildirimi tarafından belirtilmiştir",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"%sq işlevine ait tanımın IFC gösterimi eksik",
|
||||
"işlev değiştirici, üye şablonu bildirimi için geçerli değil",
|
||||
"üye seçimi çok fazla iç içe anonim tür içeriyor",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"'static' lambda ifadelerinin yakalama belirtimi boş olmalıdır",
|
||||
"EDG IFC üst bilgi birimi",
|
||||
"EDG IFC",
|
||||
"geçerli çeviri birimi için bir başlık birimi oluşturulamadı",
|
||||
"mevcut çeviri birimi şu anda bir başlık birimine yazılamayan bir veya daha fazla özellik kullanıyorsa",
|
||||
"geçerli çeviri birimi için bir IFC dosyası üretilemedi",
|
||||
"bir veya daha fazla varlık şu anda bir IFC dosyasına yazılamıyor",
|
||||
"'explicit(bool)' bir C++20 özelliğidir",
|
||||
"ilk bağımsız değişken tamsayıyı, enum'u veya desteklenen kayan noktayı gösteren bir işaretçi olmalıdır",
|
||||
"C++ modülleri birden çok çeviri birimi derlenirken kullanılamaz",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"başlatıcı sonucu bir dllimport değişkenini adresler",
|
||||
"'no_specializations' özniteliğine sahip şablon özelleştirilemez",
|
||||
"'static' burada standart dışıdır",
|
||||
"%nd daha önce açık bir sabit liste tabanı olmadan tanımlanmıştı"
|
||||
"%nd daha önce açık bir sabit liste tabanı olmadan tanımlanmıştı",
|
||||
"eksik 'typename' burada standart dışı",
|
||||
"kısaltılmış işlev şablonu sözdizimi çıkarsama kılavuzları için standart değil"
|
||||
]
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"必须完全省略空的强制改写列表",
|
||||
"应指定 asm 操作数",
|
||||
"应指定要强制改写的寄存器",
|
||||
"“format”特性需要省略号参数",
|
||||
"\"format\" 属性需要省略号参数或参数包",
|
||||
"第一个替换参数不是第一个可变参数",
|
||||
"格式实参索引大于形参数目",
|
||||
"格式参数不是字符串类型",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"尝试取消引用指向成员的空指针(数据成员)",
|
||||
"比较指向 void 和指向函数的指针是非标准的",
|
||||
"元数据初始化失败",
|
||||
"从基类到派生类的转换无效(完整的类类型是 %t)",
|
||||
"从基类到派生类的转换无效(实际派生类类型是 %t)",
|
||||
"对完整类型 %t 的对象中的 %n 的访问无效",
|
||||
"此处禁止使用 \"__auto_type\"",
|
||||
"\"__auto_type\" 不允许多个声明符",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"常数表达式中不允许使用显式析构函数调用",
|
||||
"数组下标表达式中未带圆括号的逗号运算符已弃用",
|
||||
"对于初始化表达式,动态分配的元素数(%d)太小",
|
||||
"%s 表达式的可变操作数已弃用",
|
||||
null,
|
||||
"不建议使用易失标量对象的赋值结果",
|
||||
"复合赋值表达式的易失目标类型已弃用",
|
||||
"易失函数参数已弃用",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"concept-id 的参数 %T 替换失败",
|
||||
"参数 %T 的概念为 false",
|
||||
"此处不允许使用 requires 子句(不是模板化函数)",
|
||||
"概念模板",
|
||||
"概念",
|
||||
"requires 子句与 %nfd 不兼容",
|
||||
"预期特性",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"获取显式 'this' 函数的地址需要限定名称",
|
||||
"形成显式 'this' 函数的地址需要 '&' 运算符",
|
||||
"字符串文本无法用于初始化灵活数组成员",
|
||||
"函数 %sq 定义的 IFC 表示形式无效",
|
||||
null,
|
||||
"未将 UniLevel IFC 图表用于指定参数",
|
||||
"%u1 参数由 IFC 参数定义图表指定,而 %u2 参数由 IFC 声明指定",
|
||||
"%u1 参数由 IFC 参数定义图表指定,而 %u2 参数由 IFC 声明指定",
|
||||
"%u1 参数由 IFC 参数定义图表指定,而 %u2 参数由 IFC 声明指定",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"缺少函数 %sq 定义的 IFC 表示形式",
|
||||
"函数修饰符不适用于成员模板声明",
|
||||
"成员选择涉及太多嵌套的匿名类型",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"\"static\" Lambda 表达式必须具有空的捕获规范",
|
||||
"EDG IFC 标头单元",
|
||||
"EDG IFC",
|
||||
"无法为当前翻译单元创建标头单元",
|
||||
"当前翻译单元使用当前无法写入标头单元的一个或多个功能",
|
||||
"无法为当前翻译单元生成 IFC 文件",
|
||||
"一个或多个实体当前无法写入 IFC 文件",
|
||||
"“explicit(bool)” 是 C++20 功能",
|
||||
"第一个参数必须是指向整数、enum 或支持的浮点类型的指针",
|
||||
"编译多个翻译单元时无法使用 C++ 模块",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"初始值设定项结果指向一个 dllimport 变量",
|
||||
"带有 \"no_specializations\" 属性的模板不能被专用化",
|
||||
"此处使用 \"static\" 不符合标准",
|
||||
"之前声明 %nd 时未指定显式枚举基类型"
|
||||
"之前声明 %nd 时未指定显式枚举基类型",
|
||||
"此处缺少 'typename' 属于非标准用法",
|
||||
"缩写函数模板语法对于推导指南是不标准的"
|
||||
]
|
||||
|
||||
@@ -1134,7 +1134,7 @@
|
||||
"必須完全省略空的記憶體區域清單",
|
||||
"必須是 asm 運算元",
|
||||
"必須是要記憶體區域的暫存器",
|
||||
"'format' 屬性需要有省略符號參數",
|
||||
"'format' 屬性需要有省略符號參數或參數套件",
|
||||
"第一個替換引數不是第一個變數引數",
|
||||
"格式引數索引大於參數的數目",
|
||||
"格式引數沒有字串類型",
|
||||
@@ -2711,7 +2711,7 @@
|
||||
"嘗試為 null 成員指標 (資料成員) 取值",
|
||||
"正在比較要作廢的指標與指向非標準函式的指標",
|
||||
"中繼資料初始化失敗",
|
||||
"從基底到衍生的轉換無效 (完整類別類型是 %t)",
|
||||
"從基底到衍生的轉換無效 (實際衍生類別類型是 %t)",
|
||||
"對完整類型 %t 物件中 %n 的存取無效",
|
||||
"此處不允許 '__auto_type'",
|
||||
"'__auto_type' 不允許多個宣告子",
|
||||
@@ -3209,7 +3209,7 @@
|
||||
"常數運算式中不允許使用明確的解構函式呼叫",
|
||||
"陣列下標運算式中未在小括號內的逗號運算子已淘汰",
|
||||
"動態配置的元素數目 (%d) 對初始設定式而言太小",
|
||||
"%s 運算式的揮發性運算元已淘汰",
|
||||
null,
|
||||
"使用揮發性純量物件指派結果的用法已淘汰",
|
||||
"複合指派運算式的揮發性目的地類型已淘汰",
|
||||
"揮發性函式參數已淘汰",
|
||||
@@ -3249,7 +3249,7 @@
|
||||
"概念識別碼的引數 %T 替代失敗",
|
||||
"引數 %T 的概念為 False",
|
||||
"此處不允許使用 requires 子句 (非樣板化函式)",
|
||||
"概念範本",
|
||||
"概念",
|
||||
"requires 子句與 %nfd 不相容",
|
||||
"必須是屬性",
|
||||
null,
|
||||
@@ -3439,12 +3439,12 @@
|
||||
"取得明確 'this' 函數的位址需要限定名稱",
|
||||
"形成明確 'this' 函數的位址需要 '&' 運算子",
|
||||
"字串常值不能用來初始化彈性陣列成員",
|
||||
"函式 %sq 定義的 IFC 表示法無效",
|
||||
null,
|
||||
"UniLevel IFC 圖表未用來指定參數",
|
||||
"IFC 參數定義圖表指定了 %u1 個參數,而 IFC 宣告則指定了 %u2 個參數",
|
||||
"IFC 參數定義圖表指定了 %u1 個參數,而 IFC 宣告則指定了 %u2 個參數",
|
||||
"IFC 參數定義圖表指定了 %u1 個參數,而 IFC 宣告則指定了 %u2 個參數",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
"遺漏函式 %sq 定義的 IFC 標記法",
|
||||
"函數修飾詞不適用於成員範本宣告",
|
||||
"成員選取涉及太多巢狀匿名型別",
|
||||
@@ -3598,8 +3598,8 @@
|
||||
"'static' Lambda 運算式必須有空白的擷取規格",
|
||||
"EDG IFC 標頭單位",
|
||||
"EDG IFC",
|
||||
"無法為目前的編譯單位建立標頭單位",
|
||||
"目前的編譯單位使用一或多個目前無法寫入標頭單位的功能",
|
||||
"無法為目前的翻譯單元產生 IFC 檔案",
|
||||
"目前無法將一個或多個實體寫入 IFC 檔案",
|
||||
"'explicit(bool)' 是 C++20 功能",
|
||||
"第一個引數必須是整數的指標、enum 或支援的浮點類型",
|
||||
"編譯多個翻譯單元時,無法使用 C++ 模組",
|
||||
@@ -3745,5 +3745,7 @@
|
||||
"初始設定式結果會處理 dllimport 變數",
|
||||
"具有 'no_specializations' 屬性的範本無法特殊化",
|
||||
"此處使用的 'static' 非標準",
|
||||
"%nd 先前宣告時未明確指定的列舉基底"
|
||||
"%nd 先前宣告時未明確指定的列舉基底",
|
||||
"此處缺少 'typename' 非標準用法",
|
||||
"簡化函式範本語法在推導指南中並非標準用法"
|
||||
]
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"defaults": [
|
||||
"-D_MSC_EXTENSIONS",
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1950",
|
||||
"-D_MSC_VER=1950",
|
||||
"-D_MSC_FULL_VER=195035717",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_ARM=7"
|
||||
],
|
||||
"defaults_op": "merge"
|
||||
}
|
||||
{
|
||||
"defaults": [
|
||||
"-D_MSC_EXTENSIONS",
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1951",
|
||||
"-D_MSC_VER=1951",
|
||||
"-D_MSC_FULL_VER=195136122",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_ARM=7"
|
||||
],
|
||||
"defaults_op": "merge"
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"defaults": [
|
||||
"-D_MSC_EXTENSIONS",
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1950",
|
||||
"-D_CPPUNWIND=1",
|
||||
"-D_MSC_VER=1950",
|
||||
"-D_MSC_FULL_VER=195035717",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_ARM64=1"
|
||||
],
|
||||
"defaults_op": "merge"
|
||||
}
|
||||
{
|
||||
"defaults": [
|
||||
"-D_MSC_EXTENSIONS",
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1951",
|
||||
"-D_CPPUNWIND=1",
|
||||
"-D_MSC_VER=1951",
|
||||
"-D_MSC_FULL_VER=195136122",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_ARM64=1"
|
||||
],
|
||||
"defaults_op": "merge"
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
{
|
||||
"defaults": [
|
||||
"-D_MSC_EXTENSIONS",
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1950",
|
||||
"-D_CPPUNWIND=1",
|
||||
"-D_MSC_VER=1950",
|
||||
"-D_MSC_FULL_VER=195035717",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_X64=100",
|
||||
"-D_M_AMD64=100"
|
||||
],
|
||||
"defaults_op": "merge"
|
||||
}
|
||||
{
|
||||
"defaults": [
|
||||
"-D_MSC_EXTENSIONS",
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1951",
|
||||
"-D_CPPUNWIND=1",
|
||||
"-D_MSC_VER=1951",
|
||||
"-D_MSC_FULL_VER=195136122",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_X64=100",
|
||||
"-D_M_AMD64=100"
|
||||
],
|
||||
"defaults_op": "merge"
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"defaults": [
|
||||
"-D_MSC_EXTENSIONS",
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1950",
|
||||
"-D_MSC_VER=1950",
|
||||
"-D_MSC_FULL_VER=195035717",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_IX86=600",
|
||||
"-D_M_IX86_FP=2"
|
||||
],
|
||||
"defaults_op": "merge"
|
||||
}
|
||||
{
|
||||
"defaults": [
|
||||
"-D_MSC_EXTENSIONS",
|
||||
"--microsoft",
|
||||
"--microsoft_bugs",
|
||||
"--microsoft_version",
|
||||
"1951",
|
||||
"-D_MSC_VER=1951",
|
||||
"-D_MSC_FULL_VER=195136122",
|
||||
"-D_MSC_BUILD=0",
|
||||
"-D_M_IX86=600",
|
||||
"-D_M_IX86_FP=2"
|
||||
],
|
||||
"defaults_op": "merge"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
const js = require("@eslint/js");
|
||||
const tseslint = require("@typescript-eslint/eslint-plugin");
|
||||
const tsparser = require("@typescript-eslint/parser");
|
||||
const jsdoc = require("eslint-plugin-jsdoc");
|
||||
const eslintImport = require("eslint-plugin-import");
|
||||
|
||||
module.exports = [
|
||||
{
|
||||
ignores: ["dist/", "vscode*.d.ts", "**/*.js"],
|
||||
},
|
||||
{
|
||||
files: ["**/*.ts", "**/*.tsx"],
|
||||
languageOptions: {
|
||||
parser: tsparser,
|
||||
parserOptions: {
|
||||
projectService: true,
|
||||
tsconfigRootDir: __dirname,
|
||||
},
|
||||
globals: {
|
||||
window: "readonly",
|
||||
document: "readonly",
|
||||
console: "readonly",
|
||||
process: "readonly",
|
||||
module: "readonly",
|
||||
require: "readonly",
|
||||
global: "readonly",
|
||||
__dirname: "readonly",
|
||||
exports: "readonly",
|
||||
},
|
||||
},
|
||||
plugins: {
|
||||
"@typescript-eslint": tseslint,
|
||||
jsdoc,
|
||||
import: eslintImport,
|
||||
},
|
||||
rules: {
|
||||
// TypeScript-specific rules
|
||||
"@typescript-eslint/adjacent-overload-signatures": "error",
|
||||
"@typescript-eslint/array-type": "error",
|
||||
"@typescript-eslint/await-thenable": "error",
|
||||
"@typescript-eslint/method-signature-style": ["error", "method"],
|
||||
"@typescript-eslint/naming-convention": [
|
||||
"error",
|
||||
{
|
||||
selector: "typeLike",
|
||||
format: ["PascalCase"]
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/no-array-constructor": "error",
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"@typescript-eslint/no-extraneous-class": "off",
|
||||
"@typescript-eslint/no-extra-non-null-assertion": "error",
|
||||
"@typescript-eslint/no-floating-promises": "error",
|
||||
"@typescript-eslint/no-for-in-array": "error",
|
||||
"@typescript-eslint/no-misused-new": "error",
|
||||
"@typescript-eslint/no-misused-promises": "error",
|
||||
"@typescript-eslint/no-namespace": "error",
|
||||
"@typescript-eslint/no-non-null-assertion": "error",
|
||||
"@typescript-eslint/no-this-alias": "error",
|
||||
"@typescript-eslint/no-unnecessary-boolean-literal-compare": "error",
|
||||
"@typescript-eslint/no-unnecessary-qualifier": "error",
|
||||
"@typescript-eslint/no-unnecessary-type-arguments": "error",
|
||||
"@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
|
||||
"@typescript-eslint/no-useless-constructor": "error",
|
||||
"@typescript-eslint/no-var-requires": "error",
|
||||
"@typescript-eslint/prefer-function-type": "error",
|
||||
"@typescript-eslint/prefer-namespace-keyword": "error",
|
||||
"@typescript-eslint/triple-slash-reference": "error",
|
||||
"@typescript-eslint/unified-signatures": "error",
|
||||
|
||||
// Core ESLint rules
|
||||
"camelcase": "off",
|
||||
"no-case-declarations": "off",
|
||||
"no-useless-escape": "off",
|
||||
"no-floating-decimal": "error",
|
||||
"keyword-spacing": ["error", { before: true, overrides: { this: { before: false } } }],
|
||||
"arrow-spacing": ["error", { before: true, after: true }],
|
||||
"semi-spacing": ["error", { before: false, after: true }],
|
||||
"no-extra-parens": ["error", "all", { nestedBinaryExpressions: false, ternaryOperandBinaryExpressions: false }],
|
||||
"arrow-body-style": "error",
|
||||
"comma-dangle": "error",
|
||||
"comma-spacing": "error",
|
||||
"constructor-super": "error",
|
||||
"curly": "error",
|
||||
"eol-last": "error",
|
||||
"eqeqeq": ["error", "always"],
|
||||
"new-parens": "error",
|
||||
"no-bitwise": "error",
|
||||
"no-caller": "error",
|
||||
"no-cond-assign": "error",
|
||||
"no-debugger": "error",
|
||||
"no-duplicate-case": "error",
|
||||
"no-duplicate-imports": "error",
|
||||
"no-eval": "error",
|
||||
"no-fallthrough": "error",
|
||||
"no-invalid-this": "error",
|
||||
"no-irregular-whitespace": "error",
|
||||
"rest-spread-spacing": ["error", "never"],
|
||||
"no-multiple-empty-lines": ["error", { max: 1, maxEOF: 1, maxBOF: 0 }],
|
||||
"no-new-wrappers": "error",
|
||||
"no-return-await": "error",
|
||||
"no-sequences": "error",
|
||||
"no-sparse-arrays": "error",
|
||||
"no-trailing-spaces": "error",
|
||||
"no-multi-spaces": "error",
|
||||
"no-undef-init": "error",
|
||||
"no-unsafe-finally": "error",
|
||||
"no-unused-expressions": "error",
|
||||
"no-unused-labels": "error",
|
||||
"no-unused-vars": "off",
|
||||
"space-before-blocks": "error",
|
||||
"no-var": "error",
|
||||
"one-var": ["error", "never"],
|
||||
"prefer-const": "error",
|
||||
"prefer-object-spread": "error",
|
||||
"space-in-parens": ["error", "never"],
|
||||
"spaced-comment": ["off", "always", { line: { exceptions: ["/"] } }],
|
||||
"use-isnan": "error",
|
||||
"valid-typeof": "error",
|
||||
"yoda": "error",
|
||||
"space-infix-ops": "error",
|
||||
|
||||
// Import rules
|
||||
"import/no-default-export": "error",
|
||||
"import/no-unassigned-import": "error",
|
||||
|
||||
// JSDoc rules
|
||||
"jsdoc/no-types": "error",
|
||||
},
|
||||
},
|
||||
{
|
||||
// Apply JS recommended rules only to JS files
|
||||
...js.configs.recommended,
|
||||
files: ["**/*.{js,mjs,cjs}"]
|
||||
},
|
||||
];
|
||||
@@ -185,7 +185,7 @@
|
||||
"c_cpp.configuration.intelliSenseEngine.default.description": "通过单独的 IntelliSense 流程提供上下文感知结果。",
|
||||
"c_cpp.configuration.intelliSenseEngine.tagParser.description": "提供非上下文感知的“模糊”结果。",
|
||||
"c_cpp.configuration.intelliSenseEngine.disabled.description": "关闭 C/C++ 语言服务功能。",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "控制自动完成提供程序。如果 `disabled`,且你想要基于字词的补全功能,则还需要设置 `\"[cpp]\": {\"editor.wordBasedSuggestions\": <value>}` (`c` 和 `cuda-cpp` 语言也类似)。",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "控制自动完成提供程序。如果值为 `disabled`,并且你想要基于字词的补全功能,则还需要设置 `\"[cpp]\": {\"editor.wordBasedSuggestions\": <value>}` (`c` 和 `cuda-cpp` 语言也类似)。",
|
||||
"c_cpp.configuration.autocomplete.default.description": "使用活动的 IntelliSense 引擎。",
|
||||
"c_cpp.configuration.autocomplete.disabled.description": "使用 Visual Studio Code 提供的基于字词的补全。",
|
||||
"c_cpp.configuration.errorSquiggles.description": "控制是否将 IntelliSense 引擎检测到的可疑编译错误报告回编辑器。还控制是否报告代码分析警告(如果找不到包含)。标记分析器引擎将忽略此设置。",
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "如果为 true,则禁用集成终端支持所需的调试对象控制台重定向。",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "传递到调试引擎的可选源文件映射。示例: `{ \"<原始源路径>\": \"<当前源路径>\" }`。",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "要将调试程序附加到的可选进程 ID。使用 `${command:pickProcess}` 获取要附加到的本地运行进程的列表。请注意,一些平台需要管理员权限才能附加到进程。",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "用于搜索符号(即 pdb)文件的目录列表(以分号分隔)。示例: \"c:\\dir1;c:\\dir2\"。",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "程序可执行文件的完整路径。调试器将搜索与此可执行文件路径匹配的正在运行的进程并附加到该进程。如果多个进程匹配,将显示选择提示。加载附加进程的调试符号需要此字段。",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "用于搜索符号(即 pdb 或 .so)文件的目录的分号分隔列表。示例: \"c:\\dir1;c:\\dir2\"。",
|
||||
"c_cpp.debuggers.dumpPath.description": "指定程序的转储文件的可选完整路径。例如: \"c:\\temp\\app.dmp\"。默认为 null。",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "如果为 false,将在禁用调试堆的情况下启动该进程。这会将环境变量 \"_NO_DEBUG_HEAP\" 设置为 \"1\"。",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "对符号加载的显式控制。",
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
"c_cpp.configuration.intelliSenseEngine.default.description": "透過單獨的 IntelliSense 處理序提供內容感知結果。",
|
||||
"c_cpp.configuration.intelliSenseEngine.tagParser.description": "提供不屬於內容意識的 `模糊` 結果。",
|
||||
"c_cpp.configuration.intelliSenseEngine.disabled.description": "關閉 C/C++ 語言服務功能。",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "控制自動完成提供者。若設為 `disabled` 且您想要以文字方式完成,您也必須設定 `\"[cpp]\": {\"editor.wordBasedSuggestions\": <value>}` (且 `c` 及 `cuda-cpp` 語言也相同)。",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "控制自動完成提供者。若設為 `disabled` 且您想要以文字方式完成,您也必須設定 `\"[cpp]\": {\"editor.wordBasedSuggestions\": <值>}` (且 `c` 及 `cuda-cpp` 語言也相同)。",
|
||||
"c_cpp.configuration.autocomplete.default.description": "使用作用中 IntelliSense 引擎。",
|
||||
"c_cpp.configuration.autocomplete.disabled.description": "使用 Visual Studio Code 所提供的文字型完成。",
|
||||
"c_cpp.configuration.errorSquiggles.description": "該設定會控制是否將 IntelliSense 引擎偵測到的可疑編譯錯誤回報給編輯器。其也會在找不到內容時,控制是否回報程式碼分析警告。標籤剖析器引擎已忽略此設定。",
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "若為 true,則停用整合式終端機支援需要的偵錯項目主控台重新導向。",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "傳遞至偵錯引擎的選擇性來源檔案對應。範例: `{ \"<原始來源路徑>\": \"<目前來源路徑>\" }`。",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "要附加偵錯工具的選擇性處理序識別碼。使用 `${command:pickProcess}` 可取得要附加的本機執行中處理序清單。請注意,某些平台需要系統管理員權限才能附加至處理序。",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "要用於搜尋符號 (即 pdb) 檔案的目錄清單 (以分號分隔)。範例: \"c:\\dir1;c:\\dir2\"。",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "程式可執行檔的完整路徑。偵錯工具會搜尋符合此可執行路徑的執行中處理序,並連結至該處理序。如果有多個處理序相符,將會顯示選取提示。這是載入已連結處理序之偵錯符號的必要欄位。",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "要用於搜尋符號 (即 pdb 或 .so) 檔案的目錄清單 (以分號分隔)。範例: \"c:\\dir1;c:\\dir2\"。",
|
||||
"c_cpp.debuggers.dumpPath.description": "指定程式之傾印檔案的選擇性完整路徑。範例: \"c:\\temp\\app.dmp\"。預設為 null。",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "若為 false,將會啟動已停用偵錯堆積的處理序。這會將環境變數 '_NO_DEBUG_HEAP' 設為 '1'。",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "符號載入的明確控制。",
|
||||
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "Pokud se nastaví na true, zakáže přesměrování konzoly laděného procesu, které se vyžaduje pro podporu integrovaného terminálu.",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "Ladicímu modulu se předala volitelná mapování zdrojových souborů. Příklad: `{ \"<původní cesta ke zdroji>\": \"<aktuální cesta ke zdroji>\" }`.",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "Nepovinné ID procesu, ke kterému se má ladicí program připojit. Pokud chcete získat seznam místních spuštěných procesů, ke kterým se dá připojit, použijte `${command:pickProcess}`. Poznámka: Některé platformy vyžadují pro připojení k procesu oprávnění správce.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Seznam středníkem oddělených adresářů, ve kterých se budou hledat soubory symbolů (tj. soubory pdb). Příklad: c:\\dir1;c:\\dir2",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "Úplná cesta ke spustitelnému souboru programu. Ladicí program vyhledá spuštěný proces odpovídající této cestě spustitelného souboru a připojí se k němu. Pokud se více procesů shoduje, zobrazí se výzva k výběru. Toto pole se vyžaduje k načtení symbolů ladění pro připojený proces.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Seznam středníkem oddělených adresářů, ve kterých se budou hledat soubory symbolů (tj. soubory pdb nebo .so). Příklad: c:\\dir1;c:\\dir2.",
|
||||
"c_cpp.debuggers.dumpPath.description": "Volitelná úplná cesta k souboru výpisu pro zadaný program. Příklad: c:\\temp\\app.dmp. Výchozí hodnota je null.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "Když se nastaví na false, proces se spustí se zakázanou haldou ladění. Tato možnost nastaví proměnnou prostředí _NO_DEBUG_HEAP na 1.",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "Explicitní řízení načítání symbolů",
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
"c_cpp.configuration.intelliSenseEngine.default.description": "Stellt kontextbezogene Ergebnisse über einen separaten IntelliSense-Prozess bereit.",
|
||||
"c_cpp.configuration.intelliSenseEngine.tagParser.description": "Stellt „Fuzzy“-Ergebnisse bereit, die nicht kontextbezogen sind.",
|
||||
"c_cpp.configuration.intelliSenseEngine.disabled.description": "Deaktiviert die Features des C/C++-Sprachdiensts.",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "Steuert den Anbieter für AutoVervollständigen. Wenn `disabled` festgelegt ist und Sie die wortbasierte Vervollständigung wünschen, müssen Sie auch `\"[cpp]\": {\"editor.wordBasedSuggestions\": <value>}` festlegen (und analog auch für die Sprachen `c` und `cuda-cpp`).",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "Steuert den Anbieter für AutoVervollständigen. Wenn `disabled` festgelegt ist und Sie die wortbasierte Vervollständigung wünschen, müssen Sie auch `\"[cpp]\": {\"editor.wordBasedSuggestions\": <Wert>}` festlegen (und analog auch für die Sprachen `c` und `cuda-cpp`).",
|
||||
"c_cpp.configuration.autocomplete.default.description": "Verwendet das aktive IntelliSense-Modul.",
|
||||
"c_cpp.configuration.autocomplete.disabled.description": "Verwendet die von Visual Studio Code bereitgestellte wortbasierte Vervollständigung.",
|
||||
"c_cpp.configuration.errorSquiggles.description": "Steuert, ob vermutete Kompilierungsfehler, die von der IntelliSense-Engine erkannt wurden, an den Editor zurückgegeben werden. Außerdem wird gesteuert, ob Codeanalysewarnungen gemeldet werden, wenn keine Enthaltenen gefunden werden können. Diese Einstellung wird von der Tagparser-Engine ignoriert.",
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "Wenn dieser Wert auf TRUE festgelegt ist, wird für die zu debuggende Komponente die Konsolenumleitung deaktiviert, die für die Unterstützung des integrierten Terminals erforderlich ist.",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "Optionale Quelldateizuordnungen, die an die Debug-Engine übergeben werden. Beispiel: `{ \"<ursprünglicher Quellpfad>\": \"<aktueller Quellpfad>\" }`.",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "Optionale Prozess-ID, an die der Debugger angefügt werden soll. Verwenden Sie `${command:pickProcess}`, um eine Liste der lokalen ausgeführten Prozesse abzurufen, an die das Anfügen möglich ist. Beachten Sie, dass für einige Plattformen Administratorrechte erforderlich sind, damit an einen Prozess angefügt werden kann.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Durch Semikolons getrennte Liste von Verzeichnissen, die für die Suche nach Symboldateien (PDB-Dateien) verwendet werden sollen. Beispiel: \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "Vollständiger Pfad zur ausführbaren Programmdatei. Der Debugger sucht nach einem laufenden Prozess, der diesem ausführbaren Pfad entspricht, und bindet ihn an. Wenn mehrere Prozesse übereinstimmen, wird eine Auswahlaufforderung angezeigt. Dieses Feld ist erforderlich, um Debugsymbole für den angehängten Prozess zu laden.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Durch Semikolons getrennte Liste von Verzeichnissen, die für die Suche nach Symboldateien (d. h. PDB- oder .so-Dateien) verwendet werden sollen. Beispiel: „c:\\dir1;c:\\dir2“.",
|
||||
"c_cpp.debuggers.dumpPath.description": "Optionaler vollständiger Pfad zu einer Dumpdatei für das angegebene Programm. Beispiel: \"c:\\temp\\app.dmp\". Standardwert ist NULL.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "Wenn dieser Wert auf FALSE festgelegt ist, wird der Prozess mit deaktiviertem Debug-Heap gestartet. Hiermit wird die Umgebungsvariable \"_NO_DEBUG_HEAP\" auf \"1\" festgelegt.",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "Explizite Steuerung des Symbolladevorgangs.",
|
||||
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "Si se establece en true, se deshabilita la redirección de la consola del depurado necesaria para la compatibilidad con el terminal integrado.",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "Asignaciones de archivo de origen opcionales pasadas al motor de depuración. Ejemplo: `{ \"<ruta de origen original>\": \"<ruta de origen actual>\" }`.",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "Id. de proceso opcional al que debe asociarse el depurador. Use `${command:pickProcess}` para obtener una lista de los procesos locales en ejecución a los que se puede asociar. Tenga en cuenta que algunas plataformas requieren privilegios de administrador para poder asociar el depurador a un proceso.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Lista de directorios separados por punto y coma que debe usarse para buscar archivos de símbolos (es decir, pdb). Ejemplo: \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "Ruta de acceso completa al ejecutable del programa. El depurador buscará un proceso en ejecución que coincida con esta ruta de acceso ejecutable y se asociará a él. Si coinciden varios procesos, se mostrará un mensaje de selección. Este campo es necesario para cargar símbolos de depuración para el proceso adjunto.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Lista separada por punto y coma de directorios que se van a usar para buscar archivos de símbolos (es decir, pdb o .so). Ejemplo: \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.dumpPath.description": "Ruta de acceso completa opcional a un archivo de volcado de memoria para el programa especificado. Ejemplo: \"c:\\temp\\app.dmp\". El valor predeterminado es null.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "Si se establece en false, el proceso se iniciará con el montón de depuración deshabilitado. Esta opción establece la variable de entorno \"_NO_DEBUG_HEAP\" en \"1\".",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "Control explícito de la carga de símbolos.",
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"reinstall.extension.text4": "Exemples de chemins d’accès aux répertoires d’extension C/C++ installés :",
|
||||
"reinstall.extension.text5": "Sur Windows :",
|
||||
"reinstall.extension.text6": "Sur Linux :",
|
||||
"reinstall.extension.text7": "Réinstallez ensuite via l’interface utilisateur de la Place de marché dans VS Code.",
|
||||
"reinstall.extension.text8": "Si la version correcte de l’extension ne peut pas être déployée par VS Code, le VSIX approprié pour votre système peut être {0} et installé à l’aide de l’option 'Installer à partir de VSIX...' sous le menu '...' de l’interface utilisateur de la Place de marché dans VS Code.",
|
||||
"download.vsix.link.title": "téléchargé à partir du site web de la place de marché VS Code"
|
||||
"reinstall.extension.text7": "Réinstallez ensuite via l’interface utilisateur du Marketplace dans VS Code.",
|
||||
"reinstall.extension.text8": "Si la version correcte de l’extension ne peut pas être déployée par VS Code, le VSIX approprié pour votre système peut être {0} et installé à l’aide de l’option 'Installer à partir de VSIX...' sous le menu '...' de l’interface utilisateur du Marketplace dans VS Code.",
|
||||
"download.vsix.link.title": "téléchargé à partir du site web du Marketplace VS Code"
|
||||
}
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "Si la valeur est true, désactive la redirection de la console de l'élément débogué nécessaire pour prendre en charge le terminal intégré.",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "Mappages de fichiers sources facultatifs passés au moteur de débogage. Exemple : `{ \"<chemin source d’origine>\": \"<chemin source actuel>\" }`.",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "ID de processus facultatif auquel attacher le débogueur. Utilisez `${command:pickProcess}` pour obtenir la liste des processus locaux en cours d'exécution à attacher. Notez que certaines plateformes nécessitent des privilèges d'administrateur(-trice) pour attacher un processus.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Liste de répertoires séparés par des points-virgules à utiliser pour rechercher les fichiers de symboles (c'est-à-dire, pdb). Exemple : \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "Chemin complet du programme exécutable. Le débogueur recherche un processus en cours d’exécution correspondant à ce chemin et s’y attache. Si plusieurs processus correspondent, une invite de sélection s’affiche. Ce champ est obligatoire pour charger les symboles de débogage du processus attaché.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Liste de répertoires séparés par des points-virgules à utiliser pour rechercher les fichiers de symboles (c'est-à-dire, pdb ou .so). Exemple : « c:\\dir1;c:\\dir2 ».",
|
||||
"c_cpp.debuggers.dumpPath.description": "Chemin complet facultatif d'un fichier d'image mémoire pour le programme spécifié. Exemple : \"c:\\temp\\app.dmp\". La valeur par défaut est null.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "Si la valeur est false, le processus est lancé avec le tas de débogage désactivé. Cette valeur définit la variable d'environnement '_NO_DEBUG_HEAP' sur '1'.",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "Contrôle explicite du chargement des symboles.",
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
"c_cpp.configuration.intelliSenseEngine.default.description": "Fornisce risultati compatibili con il contesto tramite un processo IntelliSense separato.",
|
||||
"c_cpp.configuration.intelliSenseEngine.tagParser.description": "Fornisce risultati 'fuzzy' che non sono compatibili con il contesto.",
|
||||
"c_cpp.configuration.intelliSenseEngine.disabled.description": "Disattiva le funzionalità del servizio di linguaggio C/C++.",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "Controlla il provider di completamento automatico. Se è `disabled` e si vuole il completamento basato sulle parole, sarà necessario impostare anche `\"[cpp]\": {\"editor.wordBasedSuggestions\": <value>}` (e analogamente per i linguaggi `c` e `cuda-cpp`).",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "Controlla il provider di completamento automatico. Se è `disabled` e desideri il completamento basato sulle parole, dovrai impostare anche `\"[cpp]\": {\"editor.wordBasedSuggestions\": <value>}` (e analogamente per i linguaggi `c` e `cuda-cpp`).",
|
||||
"c_cpp.configuration.autocomplete.default.description": "Usa il motore IntelliSense attivo.",
|
||||
"c_cpp.configuration.autocomplete.disabled.description": "Usa il completamento basato su parole fornito da Visual Studio Code.",
|
||||
"c_cpp.configuration.errorSquiggles.description": "Controlla se i possibili errori di compilazione rilevati dal motore IntelliSense verranno segnalati all'editor. Controlla inoltre se vengono segnalati avvisi di analisi del codice se non è possibile trovare le inclusioni. Questa impostazione viene ignorata dal motore del parser di tag.",
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "Se è true, disabilita il reindirizzamento della console dell'oggetto del debug richiesto per il supporto del terminale integrato.",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "Mapping di file di origine facoltativi passati al motore di debug. Esempio: `{ \"<percorso di origine iniziale>\": \"<percorso di origine corrente>\" }`.",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "ID processo facoltativo a cui collegare il debugger. Usare `${command:pickProcess}` per ottenere un elenco dei processi locali in esecuzione a cui collegarsi. Tenere presente che alcune piattaforme richiedono privilegi di amministratore per collegarsi a un processo.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Elenco di directory delimitate da punto e virgola da usare per la ricerca di file di simboli, ovvero PDB. Esempio: \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "Percorso completo dell'eseguibile del programma. Il debugger cercherà un processo in esecuzione che corrisponde a questo percorso dell'eseguibile e vi si collegherà. Se più processi corrispondono, verrà mostrato un prompt per la selezione. Questo campo è necessario per caricare i simboli di debug del processo collegato.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Elenco di directory delimitate da punto e virgola da usare per la ricerca di file di simboli, ovvero PDB o .SO. Esempio: \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.dumpPath.description": "Percorso completo facoltativo di un file dump per il programma specificato. Esempio: \"c:\\temp\\app.dmp\". L'impostazione predefinita è Null.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "Se è false, il processo verrà avviato con l'heap di debug disabilitato. Imposta la variabile di ambiente '_NO_DEBUG_HEAP' su '1'.",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "Controllo esplicito del caricamento dei simboli.",
|
||||
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "true の場合、統合ターミナルのサポートに必要なデバッグ対象のコンソール リダイレクトが無効になります。",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "デバッグ エンジンに渡されるオプションのソース ファイル マッピング。例: `{ \"<元のソース パス>\": \"<現在のソース パス>\" }`。",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "デバッガーをアタッチするためのオプションのプロセス ID。ローカルで実行される、アタッチ先プロセスのリストを取得するには、`${command:pickProcess}` を使用します。一部のプラットフォームでは、プロセスにアタッチするために管理者特権が必要となることに注意してください。",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "シンボル (つまり、pdb) ファイルの検索に使用する、セミコロンで区切られたディレクトリの一覧です。例: \"c:\\dir1;c:\\dir2\"。",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "プログラム実行可能ファイルへの完全なパス。デバッガーは、この実行可能ファイルのパスに一致する実行中のプロセスを検索し、アタッチします。複数のプロセスが一致する場合は、選択プロンプトが表示されます。アタッチされたプロセスのデバッグ シンボルを読み込むには、このフィールドが必要です。",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "シンボル (つまり pdb または .so) ファイルの検索に使用する、セミコロンで区切られたディレクトリの一覧です。例: \"c:\\dir1;c:\\dir2\"。",
|
||||
"c_cpp.debuggers.dumpPath.description": "指定したプログラムのダンプ ファイルへの完全なパスです (オプション)。例: \"c:\\temp\\app.dmp\"。既定値は null です。",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "false の場合、プロセスはデバッグ ヒープを無効にして起動します。これにより、環境変数 '_NO_DEBUG_HEAP' は '1' に設定されます。",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "シンボルの読み込みを明示的に制御します。",
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
"c_cpp.configuration.intelliSenseEngine.default.description": "별도의 IntelliSense 프로세스를 통해 컨텍스트 인식 결과를 제공합니다.",
|
||||
"c_cpp.configuration.intelliSenseEngine.tagParser.description": "\"유사\" 결과를 제공합니다. 컨텍스트를 인식하지 않는 결과입니다.",
|
||||
"c_cpp.configuration.intelliSenseEngine.disabled.description": "C/C++ 언어 서비스 기능을 해제합니다.",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "자동 완성 공급자를 제어합니다. `disabled`에서 단어 기반 완성을 원할 경우 `\"[cpp]\": {\"editor.wordBasedSuggestions\": <value>}`를 설정해야 합니다(`c`와 `cuda-cpp` 언어도 동일).",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "자동 완성 공급자를 제어합니다. `disabled`에서 단어 기반 완성을 원할 경우 `\"[cpp]\": {\"editor.wordBasedSuggestions\": <값>}`를 설정해야 합니다(`c`와 `cuda-cpp` 언어도 동일).",
|
||||
"c_cpp.configuration.autocomplete.default.description": "활성 IntelliSense 엔진을 사용합니다.",
|
||||
"c_cpp.configuration.autocomplete.disabled.description": "Visual Studio Code에서 제공하는 단어 기반 완성을 사용합니다.",
|
||||
"c_cpp.configuration.errorSquiggles.description": "IntelliSense 엔진에서 감지한 의심스러운 컴파일 오류를 편집기에 다시 보고할지 여부를 제어합니다. 또한 포함 사항을 찾을 수 없는 경우 코드 분석 경고가 보고되는지 여부를 제어합니다. 이 설정은 태그 파서 엔진에서 무시됩니다.",
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "True이면 통합 터미널 지원에 필요한 디버기 콘솔 리디렉션을 사용하지 않도록 설정합니다.",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "디버그 엔진에 전달되는 선택적 소스 파일 매핑입니다. 예: `{ \"<원래 소스 경로>\": \"<현재 소스 경로>\" }`.",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "디버거를 연결할 선택적 프로세스 ID입니다. `${command:pickProcess}`를 사용하여 연결할 로컬 실행 프로세스 목록을 가져옵니다. 일부 플랫폼에서는 프로세스에 연결하기 위해 관리자 권한이 필요합니다.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "기호(pdb) 파일 검색에 사용할 디렉터리의 세미콜론으로 구분된 목록입니다(예: \"c:\\dir1;c:\\dir2\").",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "프로그램 실행 파일의 전체 경로입니다. 디버거는 이 실행 파일 경로와 일치하는 실행 중인 프로세스를 찾아 연결합니다. 여러 프로세스가 일치하는 경우 선택 프롬프트가 나타납니다. 이 필드는 연결된 프로세스의 디버그 기호를 로드하는 데 필요합니다.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "기호(pdb 또는 .so) 파일 검색에 사용할 디렉터리의 세미콜론으로 구분된 목록입니다. 예: \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.dumpPath.description": "지정된 프로그램에 대한 코어 덤프 파일의 선택적 전체 경로입니다(예: \"c:\\temp\\app.dmp\"). 기본값은 null입니다.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "False이면 디버그 힙이 사용하지 않도록 설정된 상태로 프로세스가 시작됩니다. 이렇게 하면 환경 변수 '_NO_DEBUG_HEAP'이 '1'로 설정됩니다.",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "기호 로드를 명시적으로 제어합니다.",
|
||||
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "Jeśli wartość to true, wyłącza przekierowywanie konsoli debugowanego obiektu, które jest wymagane do obsługi zintegrowanego terminalu.",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "Opcjonalne mapowania plików źródłowych przekazane do silnika debugowania. Przykład: `{ \"<początkowa ścieżka źródłowa>\": \"<bieżąca ścieżka źródłowa>\" }`.",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "Opcjonalny identyfikator procesu, do którego ma zostać dołączony debuger. Użyj polecenia `${command:pickProcess}`, aby uzyskać listę uruchomionych lokalnie procesów, do których można dołączyć. Pamiętaj, że niektóre platformy wymagają uprawnień administratora, aby dołączyć je do procesu.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Rozdzielana średnikami lista katalogów, w których mają być wyszukiwanie pliki symboli (PDB). Przykład: „c:\\dir1;c:\\dir2”.",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "Pełna ścieżka do pliku wykonywalnego programu. Debuger wyszuka uruchomiony proces zgodny z tą ścieżką wykonywalną i dołączy do niego. Jeśli wiele procesów jest zgodnych, zostanie wyświetlony monit o zaznaczenie. To pole jest wymagane do załadowania symboli debugowania dla dołączonego procesu.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Rozdzielana średnikami lista katalogów do wyszukiwania plików symboli (tj. pdb lub .so). Przykład: „c:\\dir1;c:\\dir2”.",
|
||||
"c_cpp.debuggers.dumpPath.description": "Opcjonalna pełna ścieżka do pliku zrzutu dla określonego programu. Przykład: „c:\\temp\\app.dmp”. Wartość domyślna to null.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "W przypadku wartości false proces zostanie uruchomiony z wyłączoną stertą debugowania. Spowoduje to ustawienie zmiennej środowiskowej „_NO_DEBUG_HEAP” na wartość „1”.",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "Jawna kontrola ładowania symboli.",
|
||||
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "Se for true, desabilitará o redirecionamento do console do depurador requerido para o suporte do Terminal Integrado.",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "Mapeamentos opcionais de arquivo de origem passados para o mecanismo de depuração. Exemplo: `{ \"<caminho original do arquivo de origem>\": \"<caminho atual do arquivo de origem>\" }`.",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "ID do processo opcional ao qual anexar o depurador. Use `${command:pickProcess}` para obter uma lista de processos locais em execução aos quais anexar. Observe que algumas plataformas exigem privilégios de administrador para anexação a um processo.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Lista separada por ponto e vírgula de diretórios a serem usados para pesquisar arquivos de símbolo (ou seja, pdb). Exemplo: \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "Caminho completo para o executável do programa. O depurador pesquisará um processo em execução que corresponda a esse caminho executável e anexará a ele. Se vários processos corresponderem, um prompt de seleção será mostrado. Esse campo é necessário para carregar símbolos de depuração para o processo anexado.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Lista separada por ponto e vírgula de diretórios a serem usadas para pesquisar arquivos de símbolos (ou seja, pdb ou .so). Exemplo: \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.dumpPath.description": "Caminho completo opcional para um arquivo de despejo para o programa especificado. Exemplo: \"c:\\temp\\app.dmp\". Usa nulo como padrão.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "Se for false, o processo será iniciado com o heap de depuração desabilitado. Isso define a variável de ambiente '_NO_DEBUG_HEAP' como '1'.",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "Controle explícito do carregamento de símbolo.",
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
"c_cpp.configuration.intelliSenseEngine.default.description": "Предоставляет результаты, зависящие от контекста, с помощью отдельного процесса IntelliSense.",
|
||||
"c_cpp.configuration.intelliSenseEngine.tagParser.description": "Предоставляет \"нечеткие\" результаты, не зависящие от контекста.",
|
||||
"c_cpp.configuration.intelliSenseEngine.disabled.description": "Отключает компоненты службы языка C/C++.",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "Управляет поставщиком автозавершения. Если присвоено значение `disabled`, и вам требуется завершение по словам, также настройте `\"[cpp]\": {\"editor.wordBasedSuggestions\": <value>}` (и аналогично для языков `c` и `cuda-cpp`).",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "Управляет поставщиком автозавершения. Если присвоено значение `disabled`, и вам требуется завершение по словам, также настройте `\"[cpp]\": {\"editor.wordBasedSuggestions\": <значение>}` (и аналогично для языков `c` и `cuda-cpp`).",
|
||||
"c_cpp.configuration.autocomplete.default.description": "Использует активную подсистему IntelliSense.",
|
||||
"c_cpp.configuration.autocomplete.disabled.description": "Использует завершение на основе слов, предоставляемое Visual Studio Code.",
|
||||
"c_cpp.configuration.errorSquiggles.description": "Определяет, будут ли обнаруженные подсистемой IntelliSense предполагаемые ошибки компиляции возвращены в редактор. Также определяет, будут ли отображаться предупреждения на этапе анализа кода, если не удается найти включаемые данные. Этот параметр игнорируется подсистемой синтаксического анализа тегов.",
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "Если задано значение true, отключается перенаправление консоли отлаживаемого объекта, необходимое для поддержки встроенного терминала.",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "Необязательные сопоставления исходных файлов, передаваемые подсистеме отладки. Пример: `{ \"<первоначальный путь к источнику>\": \"<текущий путь к источнику>\" }`.",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "Необязательный идентификатор процесса, к которому требуется подключить отладчик. Используйте `${command:pickProcess}`, чтобы получить список локальных запущенных процессов для подключения. Обратите внимание, что для подключения к процессам на некоторых платформах требуются права администратора.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Список каталогов, разделенных точкой с запятой, который следует использовать для поиска файлов символов (таких как PDB). Пример: \"c:\\каталог_1;c:\\каталог_2\".",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "Полный путь к исполняемому файлу program. Отладчик будет искать запущенный процесс, совпадающий с путем этого исполняемого файла, и подключаться к нему. Если процессов несколько, появится запрос выбора. Это поле обязательно с целью загрузки символов отладки для подключенного процесса.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Список каталогов, разделенных точкой с запятой, который следует использовать для поиска файлов символов (таких как PDB или SO). Пример: \"c:\\каталог_1;c:\\каталог_2\".",
|
||||
"c_cpp.debuggers.dumpPath.description": "Необязательный полный путь к основному файлу дампа для указанной программы. Пример: \"c:\\temp\\app.dmp\". Значение по умолчанию: null.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "Если задано значение false, процесс будет запущен с отключенной кучей отладки. При этом для переменной среды \"_NO_DEBUG_HEAP\" устанавливается значение \"1\".",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "Явный контроль загрузки символов.",
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
"c_cpp.configuration.intelliSenseEngine.default.description": "Ayrı bir IntelliSense işlemi aracılığıyla bağlama duyarlı sonuçlar sağlar.",
|
||||
"c_cpp.configuration.intelliSenseEngine.tagParser.description": "Bağlama duyarlı olmayan \"belirsiz\" sonuçlar sağlar.",
|
||||
"c_cpp.configuration.intelliSenseEngine.disabled.description": "C/C++ dil hizmeti özelliklerini kapatır.",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "Otomatik tamamlama sağlayıcısını kontrol eder. `disabled` ise ve sözcük tabanlı tamamlama istiyorsanız, aynı zamanda `\"[cpp]\": {\"editor.wordBasedSuggestions\": <value>}` (ve aynı şekilde `c` ve `cuda-cpp` dilleri için) ayarını da belirlemeniz gerekir.",
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": "Otomatik tamamlama sağlayıcısını kontrol eder. `disabled` ise ve sözcük tabanlı tamamlama istiyorsanız, aynı zamanda `\"[cpp]\": {\"editor.wordBasedSuggestions\": <değer>}` (ve aynı şekilde `c` ve `cuda-cpp` dilleri için) ayarını da belirlemeniz gerekir.",
|
||||
"c_cpp.configuration.autocomplete.default.description": "Etkin IntelliSense altyapısını kullanır.",
|
||||
"c_cpp.configuration.autocomplete.disabled.description": "Visual Studio Code tarafından sağlanan sözcük tabanlı tamamlamayı kullanır.",
|
||||
"c_cpp.configuration.errorSquiggles.description": "IntelliSense altyapısı tarafından algılanan şüpheli derleme hatalarının düzenleyiciye geri rapor edilip edilmeyeceğini kontrol eder. Ayrıca, içermeler bulunamazsa kod analizi uyarılarının raporlanıp raporlanmayacağını da kontrol eder. Bu ayar, Etiket Ayrıştırıcı motoru tarafından yok sayılır.",
|
||||
@@ -331,7 +331,8 @@
|
||||
"c_cpp.debuggers.avoidWindowsConsoleRedirection.description": "Değer true ise, Tümleşik Terminal desteği için gerekli olan hata ayıklanan işlem konsol yeniden yönlendirmesini devre dışı bırakır.",
|
||||
"c_cpp.debuggers.sourceFileMap.markdownDescription": "Hata ayıklama altyapısına geçirilen isteğe bağlı kaynak dosya eşlemeleri. Örnek: `{ \"<orijinal kaynak yolu>\": \"<geçerli kaynak yolu>\" }`.",
|
||||
"c_cpp.debuggers.processId.anyOf.markdownDescription": "Hata ayıklayıcının ekleneceği isteğe bağlı işlem kimliği. Eklenilecek yerel çalışan işlemlerin bir listesini almak için `${command:pickProcess}` kullanın. Bazı platformların bir işleme ekleme yapmak için yönetici ayrıcalıkları gerektirdiğini unutmayın.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Sembol (yani pdb) dosyalarını aramak için kullanılacak, noktalı virgülle ayrılmış dizinlerin listesi. Örnek: \"c:\\dizin1;c:\\dizin2\".",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": "Programın yürütülebilir dosyasının tam yolu. Hata ayıklayıcı, bu yürütülebilir dosya yoluyla eşleşen çalışan bir işlemi arayacak ve ona eklenecek. Birden çok çalışan işlem eşleşiyorsa bir seçim istemi gösterilecek. Ekli işlem için hata ayıklama sembollerini yüklerken bu alan gereklidir.",
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Sembol (yani pdb veya .so) dosyalarını aramak için kullanılacak, noktalı virgülle ayrılmış dizinlerin listesi. Örnek: \"c:\\dizin1;c:\\dizin2\".",
|
||||
"c_cpp.debuggers.dumpPath.description": "Belirtilen program için döküm dosyasının isteğe bağlı tam yolu. Örnek: \"c:\\temp\\app.dmp\". Varsayılan olarak null değerini alır.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "Değer false ise, işlem hata ayıklama yığını devre dışı bırakılarak başlatılır. Bu işlem '_NO_DEBUG_HEAP' ortam değişkenini '1' olarak ayarlar.",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "Sembol yüklemesinin açık denetimi.",
|
||||
|
||||
+107
-23
@@ -2,7 +2,7 @@
|
||||
"name": "cpptools",
|
||||
"displayName": "C/C++",
|
||||
"description": "C/C++ IntelliSense, debugging, and code browsing.",
|
||||
"version": "1.30.0-main",
|
||||
"version": "1.32.0-main",
|
||||
"publisher": "ms-vscode",
|
||||
"icon": "LanguageCCPP_color_128x.png",
|
||||
"readme": "README.md",
|
||||
@@ -63,6 +63,7 @@
|
||||
"onFileSystem:cpptools-schema"
|
||||
],
|
||||
"main": "./dist/src/main",
|
||||
"type": "commonjs",
|
||||
"contributes": {
|
||||
"languages": [
|
||||
{
|
||||
@@ -1702,6 +1703,12 @@
|
||||
"description": "%c_cpp.configuration.doxygen.generateOnType.description%",
|
||||
"scope": "resource"
|
||||
},
|
||||
"C_Cpp.doxygen.generateOnCodeAction": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "%c_cpp.configuration.doxygen.generateOnCodeAction.description%",
|
||||
"scope": "resource"
|
||||
},
|
||||
"C_Cpp.doxygen.generatedStyle": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
@@ -1992,6 +1999,7 @@
|
||||
"abseil-time-*",
|
||||
"abseil-time-comparison",
|
||||
"abseil-time-subtraction",
|
||||
"abseil-unchecked-statusor-access",
|
||||
"abseil-upgrade-duration-conversions",
|
||||
"altera-*",
|
||||
"altera-id-dependent-backward-branch",
|
||||
@@ -2032,14 +2040,22 @@
|
||||
"bugprone-capturing-this-in-member-variable",
|
||||
"bugprone-casting-through-void",
|
||||
"bugprone-chained-comparison",
|
||||
"bugprone-command-processor",
|
||||
"bugprone-compare-pointer-to-member-virtual-function",
|
||||
"bugprone-copy-constructor-*",
|
||||
"bugprone-copy-constructor-init",
|
||||
"bugprone-copy-constructor-mutates-argument",
|
||||
"bugprone-crtp-constructor-accessibility",
|
||||
"bugprone-dangling-handle",
|
||||
"bugprone-default-operator-new-on-overaligned-type",
|
||||
"bugprone-derived-method-shadowing-base-method",
|
||||
"bugprone-dynamic-static-initializers",
|
||||
"bugprone-easily-swappable-parameters",
|
||||
"bugprone-empty-catch",
|
||||
"bugprone-exception-*",
|
||||
"bugprone-exception-escape",
|
||||
"bugprone-exception-copy-constructor-throws",
|
||||
"bugprone-float-loop-counter",
|
||||
"bugprone-fold-init-type",
|
||||
"bugprone-forward-declaration-namespace",
|
||||
"bugprone-forwarding-reference-overload",
|
||||
@@ -2052,6 +2068,7 @@
|
||||
"bugprone-incorrect-roundings",
|
||||
"bugprone-infinite-loop",
|
||||
"bugprone-integer-division",
|
||||
"bugprone-invalid-enum-default-initialization",
|
||||
"bugprone-lambda-function-name",
|
||||
"bugprone-macro-parentheses",
|
||||
"bugprone-macro-repeated-side-effects",
|
||||
@@ -2074,6 +2091,8 @@
|
||||
"bugprone-parent-virtual-call",
|
||||
"bugprone-pointer-arithmetic-on-polymorphic-object",
|
||||
"bugprone-posix-return",
|
||||
"bugprone-random-generator-seed",
|
||||
"bugprone-raw-memory-call-on-non-trivial-type",
|
||||
"bugprone-redundant-branch-condition",
|
||||
"bugprone-reserved-identifier",
|
||||
"bugprone-return-const-ref-from-parameter",
|
||||
@@ -2085,6 +2104,7 @@
|
||||
"bugprone-sizeof-expression",
|
||||
"bugprone-spuriously-wake-up-functions",
|
||||
"bugprone-standalone-empty",
|
||||
"bugprone-std-namespace-modification",
|
||||
"bugprone-string-*",
|
||||
"bugprone-string-constructor",
|
||||
"bugprone-string-integer-assignment",
|
||||
@@ -2105,8 +2125,11 @@
|
||||
"bugprone-tagged-union-member-count",
|
||||
"bugprone-terminating-continue",
|
||||
"bugprone-throw-keyword-missing",
|
||||
"bugprone-throwing-static-initialization",
|
||||
"bugprone-too-small-loop-variable",
|
||||
"bugprone-unchecked-*",
|
||||
"bugprone-unchecked-optional-access",
|
||||
"bugprone-unchecked-string-to-number-conversion",
|
||||
"bugprone-undefined-memory-manipulation",
|
||||
"bugprone-undelegated-constructor",
|
||||
"bugprone-unhandled-*",
|
||||
@@ -2326,6 +2349,7 @@
|
||||
"cppcoreguidelines-prefer-member-initializer",
|
||||
"cppcoreguidelines-pro-bounds-*",
|
||||
"cppcoreguidelines-pro-bounds-array-to-pointer-decay",
|
||||
"cppcoreguidelines-pro-bounds-avoid-unchecked-container-access",
|
||||
"cppcoreguidelines-pro-bounds-constant-array-index",
|
||||
"cppcoreguidelines-pro-bounds-pointer-arithmetic",
|
||||
"cppcoreguidelines-pro-type-*",
|
||||
@@ -2354,6 +2378,7 @@
|
||||
"fuchsia-multiple-inheritance",
|
||||
"fuchsia-overloaded-operator",
|
||||
"fuchsia-statically-constructed-objects",
|
||||
"fuchsia-temporary-objects",
|
||||
"fuchsia-trailing-return",
|
||||
"fuchsia-virtual-inheritance",
|
||||
"google-*",
|
||||
@@ -2378,6 +2403,7 @@
|
||||
"google-readability-namespace-comments",
|
||||
"google-readability-todo",
|
||||
"google-runtime-*",
|
||||
"google-runtime-float",
|
||||
"google-runtime-int",
|
||||
"google-runtime-operator",
|
||||
"google-upgrade-googletest-case",
|
||||
@@ -2429,12 +2455,16 @@
|
||||
"llvm-prefer-static-over-anonymous-namespace",
|
||||
"llvm-qualified-auto",
|
||||
"llvm-twine-local",
|
||||
"llvm-use-*",
|
||||
"llvm-use-new-mlir-op-builder",
|
||||
"llvm-use-ranges",
|
||||
"llvmlibc-*",
|
||||
"llvmlibc-callee-namespace",
|
||||
"llvmlibc-implementation-in-namespace",
|
||||
"llvmlibc-inline-function-decl",
|
||||
"llvmlibc-restrict-system-libc-headers",
|
||||
"misc-*",
|
||||
"misc-anonymous-namespace-in-header",
|
||||
"misc-confusable-identifiers",
|
||||
"misc-const-correctness",
|
||||
"misc-coroutine-hostile-raii",
|
||||
@@ -2445,11 +2475,14 @@
|
||||
"misc-misleading-bidirectional",
|
||||
"misc-misleading-identifier",
|
||||
"misc-misplaced-const",
|
||||
"misc-multiple-inheritance",
|
||||
"misc-new-delete-overloads",
|
||||
"misc-no-recursion",
|
||||
"misc-non-*",
|
||||
"misc-non-copyable-objects",
|
||||
"misc-non-private-member-variables-in-classes",
|
||||
"misc-override-with-different-visibility",
|
||||
"misc-predictable-rand",
|
||||
"misc-redundant-expression",
|
||||
"misc-static-assert",
|
||||
"misc-throw-by-value-catch-by-reference",
|
||||
@@ -2465,7 +2498,11 @@
|
||||
"modernize-*",
|
||||
"modernize-avoid-*",
|
||||
"modernize-avoid-bind",
|
||||
"modernize-avoid-c-*",
|
||||
"modernize-avoid-c-arrays",
|
||||
"modernize-avoid-c-style-cast",
|
||||
"modernize-avoid-setjmp-longjmp",
|
||||
"modernize-avoid-variadic-functions",
|
||||
"modernize-concat-nested-namespaces",
|
||||
"modernize-deprecated-*",
|
||||
"modernize-deprecated-headers",
|
||||
@@ -2586,7 +2623,9 @@
|
||||
"readability-identifier-length",
|
||||
"readability-identifier-naming",
|
||||
"readability-implicit-bool-conversion",
|
||||
"readability-inconsistent-*",
|
||||
"readability-inconsistent-declaration-parameter-name",
|
||||
"readability-inconsistent-ifelse-braces",
|
||||
"readability-isolate-declaration",
|
||||
"readability-magic-numbers",
|
||||
"readability-make-member-function-const",
|
||||
@@ -2605,11 +2644,13 @@
|
||||
"readability-redundant-function-ptr-dereference",
|
||||
"readability-redundant-inline-specifier",
|
||||
"readability-redundant-member-init",
|
||||
"readability-redundant-parentheses",
|
||||
"readability-redundant-preprocessor",
|
||||
"readability-redundant-smartptr-get",
|
||||
"readability-redundant-string-*",
|
||||
"readability-redundant-string-cstr",
|
||||
"readability-redundant-string-init",
|
||||
"readability-redundant-typename",
|
||||
"readability-reference-to-constructed-temporary",
|
||||
"readability-simplify-*",
|
||||
"readability-simplify-boolean-expr",
|
||||
@@ -2662,6 +2703,7 @@
|
||||
"abseil-time-*",
|
||||
"abseil-time-comparison",
|
||||
"abseil-time-subtraction",
|
||||
"abseil-unchecked-statusor-access",
|
||||
"abseil-upgrade-duration-conversions",
|
||||
"altera-*",
|
||||
"altera-id-dependent-backward-branch",
|
||||
@@ -2702,14 +2744,22 @@
|
||||
"bugprone-capturing-this-in-member-variable",
|
||||
"bugprone-casting-through-void",
|
||||
"bugprone-chained-comparison",
|
||||
"bugprone-command-processor",
|
||||
"bugprone-compare-pointer-to-member-virtual-function",
|
||||
"bugprone-copy-constructor-*",
|
||||
"bugprone-copy-constructor-init",
|
||||
"bugprone-copy-constructor-mutates-argument",
|
||||
"bugprone-crtp-constructor-accessibility",
|
||||
"bugprone-dangling-handle",
|
||||
"bugprone-default-operator-new-on-overaligned-type",
|
||||
"bugprone-derived-method-shadowing-base-method",
|
||||
"bugprone-dynamic-static-initializers",
|
||||
"bugprone-easily-swappable-parameters",
|
||||
"bugprone-empty-catch",
|
||||
"bugprone-exception-*",
|
||||
"bugprone-exception-escape",
|
||||
"bugprone-exception-copy-constructor-throws",
|
||||
"bugprone-float-loop-counter",
|
||||
"bugprone-fold-init-type",
|
||||
"bugprone-forward-declaration-namespace",
|
||||
"bugprone-forwarding-reference-overload",
|
||||
@@ -2722,6 +2772,7 @@
|
||||
"bugprone-incorrect-roundings",
|
||||
"bugprone-infinite-loop",
|
||||
"bugprone-integer-division",
|
||||
"bugprone-invalid-enum-default-initialization",
|
||||
"bugprone-lambda-function-name",
|
||||
"bugprone-macro-parentheses",
|
||||
"bugprone-macro-repeated-side-effects",
|
||||
@@ -2744,6 +2795,8 @@
|
||||
"bugprone-parent-virtual-call",
|
||||
"bugprone-pointer-arithmetic-on-polymorphic-object",
|
||||
"bugprone-posix-return",
|
||||
"bugprone-random-generator-seed",
|
||||
"bugprone-raw-memory-call-on-non-trivial-type",
|
||||
"bugprone-redundant-branch-condition",
|
||||
"bugprone-reserved-identifier",
|
||||
"bugprone-return-const-ref-from-parameter",
|
||||
@@ -2755,6 +2808,7 @@
|
||||
"bugprone-sizeof-expression",
|
||||
"bugprone-spuriously-wake-up-functions",
|
||||
"bugprone-standalone-empty",
|
||||
"bugprone-std-namespace-modification",
|
||||
"bugprone-string-*",
|
||||
"bugprone-string-constructor",
|
||||
"bugprone-string-integer-assignment",
|
||||
@@ -2775,8 +2829,11 @@
|
||||
"bugprone-tagged-union-member-count",
|
||||
"bugprone-terminating-continue",
|
||||
"bugprone-throw-keyword-missing",
|
||||
"bugprone-throwing-static-initialization",
|
||||
"bugprone-too-small-loop-variable",
|
||||
"bugprone-unchecked-*",
|
||||
"bugprone-unchecked-optional-access",
|
||||
"bugprone-unchecked-string-to-number-conversion",
|
||||
"bugprone-undefined-memory-manipulation",
|
||||
"bugprone-undelegated-constructor",
|
||||
"bugprone-unhandled-*",
|
||||
@@ -2996,6 +3053,7 @@
|
||||
"cppcoreguidelines-prefer-member-initializer",
|
||||
"cppcoreguidelines-pro-bounds-*",
|
||||
"cppcoreguidelines-pro-bounds-array-to-pointer-decay",
|
||||
"cppcoreguidelines-pro-bounds-avoid-unchecked-container-access",
|
||||
"cppcoreguidelines-pro-bounds-constant-array-index",
|
||||
"cppcoreguidelines-pro-bounds-pointer-arithmetic",
|
||||
"cppcoreguidelines-pro-type-*",
|
||||
@@ -3024,6 +3082,7 @@
|
||||
"fuchsia-multiple-inheritance",
|
||||
"fuchsia-overloaded-operator",
|
||||
"fuchsia-statically-constructed-objects",
|
||||
"fuchsia-temporary-objects",
|
||||
"fuchsia-trailing-return",
|
||||
"fuchsia-virtual-inheritance",
|
||||
"google-*",
|
||||
@@ -3048,6 +3107,7 @@
|
||||
"google-readability-namespace-comments",
|
||||
"google-readability-todo",
|
||||
"google-runtime-*",
|
||||
"google-runtime-float",
|
||||
"google-runtime-int",
|
||||
"google-runtime-operator",
|
||||
"google-upgrade-googletest-case",
|
||||
@@ -3099,12 +3159,16 @@
|
||||
"llvm-prefer-static-over-anonymous-namespace",
|
||||
"llvm-qualified-auto",
|
||||
"llvm-twine-local",
|
||||
"llvm-use-*",
|
||||
"llvm-use-new-mlir-op-builder",
|
||||
"llvm-use-ranges",
|
||||
"llvmlibc-*",
|
||||
"llvmlibc-callee-namespace",
|
||||
"llvmlibc-implementation-in-namespace",
|
||||
"llvmlibc-inline-function-decl",
|
||||
"llvmlibc-restrict-system-libc-headers",
|
||||
"misc-*",
|
||||
"misc-anonymous-namespace-in-header",
|
||||
"misc-confusable-identifiers",
|
||||
"misc-const-correctness",
|
||||
"misc-coroutine-hostile-raii",
|
||||
@@ -3115,11 +3179,14 @@
|
||||
"misc-misleading-bidirectional",
|
||||
"misc-misleading-identifier",
|
||||
"misc-misplaced-const",
|
||||
"misc-multiple-inheritance",
|
||||
"misc-new-delete-overloads",
|
||||
"misc-no-recursion",
|
||||
"misc-non-*",
|
||||
"misc-non-copyable-objects",
|
||||
"misc-non-private-member-variables-in-classes",
|
||||
"misc-override-with-different-visibility",
|
||||
"misc-predictable-rand",
|
||||
"misc-redundant-expression",
|
||||
"misc-static-assert",
|
||||
"misc-throw-by-value-catch-by-reference",
|
||||
@@ -3135,7 +3202,11 @@
|
||||
"modernize-*",
|
||||
"modernize-avoid-*",
|
||||
"modernize-avoid-bind",
|
||||
"modernize-avoid-c-*",
|
||||
"modernize-avoid-c-arrays",
|
||||
"modernize-avoid-c-style-cast",
|
||||
"modernize-avoid-setjmp-longjmp",
|
||||
"modernize-avoid-variadic-functions",
|
||||
"modernize-concat-nested-namespaces",
|
||||
"modernize-deprecated-*",
|
||||
"modernize-deprecated-headers",
|
||||
@@ -3256,7 +3327,9 @@
|
||||
"readability-identifier-length",
|
||||
"readability-identifier-naming",
|
||||
"readability-implicit-bool-conversion",
|
||||
"readability-inconsistent-*",
|
||||
"readability-inconsistent-declaration-parameter-name",
|
||||
"readability-inconsistent-ifelse-braces",
|
||||
"readability-isolate-declaration",
|
||||
"readability-magic-numbers",
|
||||
"readability-make-member-function-const",
|
||||
@@ -3275,11 +3348,13 @@
|
||||
"readability-redundant-function-ptr-dereference",
|
||||
"readability-redundant-inline-specifier",
|
||||
"readability-redundant-member-init",
|
||||
"readability-redundant-parentheses",
|
||||
"readability-redundant-preprocessor",
|
||||
"readability-redundant-smartptr-get",
|
||||
"readability-redundant-string-*",
|
||||
"readability-redundant-string-cstr",
|
||||
"readability-redundant-string-init",
|
||||
"readability-redundant-typename",
|
||||
"readability-reference-to-constructed-temporary",
|
||||
"readability-simplify-*",
|
||||
"readability-simplify-boolean-expr",
|
||||
@@ -4774,11 +4849,6 @@
|
||||
"program"
|
||||
],
|
||||
"properties": {
|
||||
"program": {
|
||||
"type": "string",
|
||||
"description": "%c_cpp.debuggers.program.description%",
|
||||
"default": "${workspaceRoot}/a.out"
|
||||
},
|
||||
"targetArchitecture": {
|
||||
"type": "string",
|
||||
"description": "%c_cpp.debuggers.targetArchitecture.description%",
|
||||
@@ -4824,6 +4894,10 @@
|
||||
"description": "%c_cpp.debuggers.useExtendedRemote.description%",
|
||||
"default": false
|
||||
},
|
||||
"program": {
|
||||
"type": "string",
|
||||
"markdownDescription": "%c_cpp.debuggers.program.attach.markdownDescription%"
|
||||
},
|
||||
"processId": {
|
||||
"markdownDescription": "%c_cpp.debuggers.processId.anyOf.markdownDescription%",
|
||||
"anyOf": [
|
||||
@@ -5789,15 +5863,17 @@
|
||||
"attach": {
|
||||
"type": "object",
|
||||
"default": {},
|
||||
"required": [
|
||||
"processId"
|
||||
],
|
||||
"required": [],
|
||||
"properties": {
|
||||
"symbolSearchPath": {
|
||||
"type": "string",
|
||||
"description": "%c_cpp.debuggers.symbolSearchPath.description%",
|
||||
"default": ""
|
||||
},
|
||||
"program": {
|
||||
"type": "string",
|
||||
"markdownDescription": "%c_cpp.debuggers.program.attach.markdownDescription%"
|
||||
},
|
||||
"processId": {
|
||||
"markdownDescription": "%c_cpp.debuggers.processId.anyOf.markdownDescription%",
|
||||
"anyOf": [
|
||||
@@ -6711,6 +6787,8 @@
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
"bootstrap": "npm run bootstrap:yarn && yarn install --frozen-lockfile",
|
||||
"bootstrap:yarn": "npm install -g [email protected] --registry=https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/",
|
||||
"scripts": "ts-node -T .scripts/scripts.ts",
|
||||
"show": "ts-node -T .scripts/clean.ts show",
|
||||
"clean": "ts-node -T .scripts/clean.ts",
|
||||
@@ -6718,15 +6796,16 @@
|
||||
"code": "yarn install && (yarn verify compiled --quiet || yarn build) && yarn verify binaries && ts-node -T .scripts/code.ts",
|
||||
"verify": "ts-node -T .scripts/verify.ts",
|
||||
"prep": "yarn prep:dts && yarn copy-walkthrough-media && yarn generate-native-strings && yarn translations-generate",
|
||||
"lint": "yarn install && eslint -c .eslintrc.js --report-unused-disable-directives src test ui .scripts",
|
||||
"lint": "yarn install && eslint --report-unused-disable-directives src test ui .scripts",
|
||||
"compile": "yarn install && (yarn verify prep --quiet || yarn prep) && yarn build",
|
||||
"watch": "yarn install && (yarn verify prep --quiet || yarn prep) && tsc --build tsconfig.json --watch",
|
||||
"rebuild": "yarn install && yarn clean && yarn prep && yarn build",
|
||||
"vsix-prepublish": "yarn install && yarn clean && yarn webpack",
|
||||
"vsix-prepublish": "npm run bootstrap && yarn clean && yarn webpack",
|
||||
"webpack": "yarn install && (yarn verify prep --quiet || yarn prep) && tsc --build ui.tsconfig.json && webpack --mode production --env vscode_nls",
|
||||
"generate-native-strings": "ts-node -T ./.scripts/generateNativeStrings.ts",
|
||||
"generate-options-schema": "ts-node -T ./.scripts/generateOptionsSchema.ts",
|
||||
"copy-walkthrough-media": "ts-node -T ./.scripts/copyWalkthruMedia.ts",
|
||||
"copy-extension-binaries": "ts-node -T ./.scripts/copyExtensionBinaries.ts",
|
||||
"translations-export": "yarn install && yarn prep && yarn generate-native-strings && gulp translations-export",
|
||||
"translations-generate": "gulp translations-generate",
|
||||
"translations-import": "gulp translations-import",
|
||||
@@ -6744,19 +6823,20 @@
|
||||
"@types/proxyquire": "^1.3.31",
|
||||
"@types/semver": "^7.5.8",
|
||||
"@types/shell-quote": "^1.7.5",
|
||||
"@types/sinon": "^17.0.3",
|
||||
"@types/sinon": "^21.0.0",
|
||||
"@types/tmp": "^0.2.6",
|
||||
"@types/which": "^2.0.2",
|
||||
"@types/yauzl": "^2.10.3",
|
||||
"@typescript-eslint/eslint-plugin": "^6.1.0",
|
||||
"@typescript-eslint/parser": "^6.1.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.54.0",
|
||||
"@typescript-eslint/parser": "^8.54.0",
|
||||
"@vscode/debugadapter": "^1.65.0",
|
||||
"@vscode/debugprotocol": "^1.65.0",
|
||||
"@vscode/dts": "^0.4.0",
|
||||
"@vscode/test-electron": "^2.3.10",
|
||||
"@vscode/vsce": "^3.7.1",
|
||||
"async-child-process": "^1.1.1",
|
||||
"await-notify": "^1.0.1",
|
||||
"eslint": "^8.45.0",
|
||||
"eslint": "^9.39.2",
|
||||
"eslint-plugin-header": "^3.1.1",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-jsdoc": "^48.2.8",
|
||||
@@ -6772,23 +6852,24 @@
|
||||
"parse5": "^7.1.2",
|
||||
"parse5-traverse": "^1.0.3",
|
||||
"proxyquire": "^2.1.3",
|
||||
"sinon": "^19.0.2",
|
||||
"sinon": "^21.0.1",
|
||||
"ts-loader": "^9.5.1",
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "^5.4.5",
|
||||
"vscode-nls-dev": "^4.0.4",
|
||||
"webpack": "^5.94.0",
|
||||
"webpack": "^5.105.1",
|
||||
"webpack-cli": "^5.1.4",
|
||||
"xml2js": "^0.6.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@github/copilot-language-server": "^1.316.0",
|
||||
"@vscode/extension-telemetry": "^0.9.6",
|
||||
"@github/copilot-language-server": "1.434.0",
|
||||
"@vscode/extension-telemetry": "^0.9.9",
|
||||
"chokidar": "^3.6.0",
|
||||
"comment-json": "^4.2.3",
|
||||
"comment-json": "^4.5.1",
|
||||
"escape-string-regexp": "^2.0.0",
|
||||
"fast-glob": "^3.3.3",
|
||||
"glob": "^7.2.3",
|
||||
"minimatch": "^4.2.0",
|
||||
"minimatch": "^4.2.6",
|
||||
"mkdirp": "^3.0.1",
|
||||
"node-fetch": "^2.7.0",
|
||||
"node-loader": "^2.0.0",
|
||||
@@ -6797,7 +6878,7 @@
|
||||
"node-vswhere": "^1.0.2",
|
||||
"plist": "^3.1.0",
|
||||
"posix-getopt": "^1.2.1",
|
||||
"shell-quote": "^1.8.1",
|
||||
"shell-quote": "1.8.2",
|
||||
"ssh-config": "^4.4.4",
|
||||
"tmp": "^0.2.5",
|
||||
"vscode-cpptools": "^7.1.1",
|
||||
@@ -6808,6 +6889,9 @@
|
||||
},
|
||||
"resolutions": {
|
||||
"postcss": "^8.4.31",
|
||||
"gulp-typescript/**/glob-parent": "^5.1.2"
|
||||
"gulp-typescript/**/glob-parent": "^5.1.2",
|
||||
"serialize-javascript": "^7.0.5",
|
||||
"@azure/msal-browser": "^4.29.1",
|
||||
"flatted": "^3.4.1"
|
||||
}
|
||||
}
|
||||
@@ -478,7 +478,7 @@
|
||||
"c_cpp.configuration.autocomplete.markdownDescription": {
|
||||
"message": "Controls the auto-completion provider. If `disabled` and you want word-based completion, you will also need to set `\"[cpp]\": {\"editor.wordBasedSuggestions\": <value>}` (and similarly for `c` and `cuda-cpp` languages).",
|
||||
"comment": [
|
||||
"{Locked=\"`disabled`\"} {Locked=\"`\\\"[cpp]\\\": {\\\"editor.wordBasedSuggestions\\\": <\"} {Locked=\">}`\"} Locked=\"`c`\"} Locked=\"`cuda-cpp`\"}"
|
||||
"{Locked=\"`disabled`\"} {Locked=\"`\\\"[cpp]\\\": {\\\"editor.wordBasedSuggestions\\\": <\"} {Locked=\">}`\"} {Locked=\"`c`\"} {Locked=\"`cuda-cpp`\"}"
|
||||
]
|
||||
},
|
||||
"c_cpp.configuration.autocomplete.default.description": "Uses the active IntelliSense engine.",
|
||||
@@ -580,6 +580,7 @@
|
||||
]
|
||||
},
|
||||
"c_cpp.configuration.doxygen.generateOnType.description": "Controls whether to automatically insert the Doxygen comment after typing the chosen comment style.",
|
||||
"c_cpp.configuration.doxygen.generateOnCodeAction.description": "Controls whether the code action to generate a Doxygen comment is enabled.",
|
||||
"c_cpp.configuration.doxygen.generatedStyle.description": "The string of characters used as the starting line of the Doxygen comment.",
|
||||
"c_cpp.configuration.doxygen.sectionTags.description": "Select the Doxygen section tags that you would like to appear on hover in the tooltip area when the 'Simplify Structured Comments' setting is enabled. ",
|
||||
"c_cpp.configuration.commentContinuationPatterns.items.anyof.string.markdownDescription": {
|
||||
@@ -888,7 +889,7 @@
|
||||
"c_cpp.debuggers.environment.description": {
|
||||
"message": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].",
|
||||
"comment": [
|
||||
"{Locked=\"[ { \\\"name\": \\\"\"} {Locked=\"\\\", \\\"value\\\": \\\"\"} {Locked=\"\\\" } ]\"} {Locked=\"[ { \\\"\"} {Locked=\"\\\": \\\"\"} {Locked=\"\\\" } ]\"}"
|
||||
"{Locked=\"[ { \\\"name\\\": \\\"\"} {Locked=\"\\\", \\\"value\\\": \\\"\"} {Locked=\"\\\" } ]\"} {Locked=\"[ { \\\"\"} {Locked=\"\\\": \\\"\"} {Locked=\"\\\" } ]\"}"
|
||||
]
|
||||
},
|
||||
"c_cpp.debuggers.envFile.description": "Absolute path to a file containing environment variable definitions. This file has key value pairs separated by an equals sign per line. E.g. KEY=VALUE.",
|
||||
@@ -931,7 +932,13 @@
|
||||
"{Locked=\"`${command:pickProcess}`\"}"
|
||||
]
|
||||
},
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Semicolon separated list of directories to use to search for symbol (that is, pdb) files. Example: \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.program.attach.markdownDescription": {
|
||||
"message": "Full path to the program executable. The debugger will search for a running process matching this executable path and attach to it. If multiple processes match, a selection prompt will be shown. This field is required to load debug symbols for the attached process.",
|
||||
"comment": [
|
||||
"{Locked=\"`program`\"}"
|
||||
]
|
||||
},
|
||||
"c_cpp.debuggers.symbolSearchPath.description": "Semicolon separated list of directories to use to search for symbol (that is, pdb or .so) files. Example: \"c:\\dir1;c:\\dir2\".",
|
||||
"c_cpp.debuggers.dumpPath.description": "Optional full path to a dump file for the specified program. Example: \"c:\\temp\\app.dmp\". Defaults to null.",
|
||||
"c_cpp.debuggers.enableDebugHeap.description": "If false, the process will be launched with debug heap disabled. This sets the environment variable '_NO_DEBUG_HEAP' to '1'.",
|
||||
"c_cpp.debuggers.symbolLoadInfo.description": "Explicit control of symbol loading.",
|
||||
|
||||
@@ -35,15 +35,20 @@
|
||||
### Required Tools
|
||||
|
||||
* [Node.js](https://nodejs.org/en/download/) v16.*
|
||||
* Yarn - use `npm install -g yarn` to install
|
||||
* npm (comes with Node.js)
|
||||
|
||||
### Setting up the repository
|
||||
|
||||
`git clone https://github.com/microsoft/vscode-cpptools.git`
|
||||
|
||||
`yarn install`
|
||||
`cd vscode-cpptools/Extension`
|
||||
|
||||
It's also good practice to run `yarn install` after merging from upstream or switching branches.
|
||||
`npm run bootstrap`
|
||||
|
||||
`npm run bootstrap` installs Yarn `1.22.22` globally from the internal npm feed and then runs `yarn install --frozen-lockfile`.
|
||||
On some systems, global npm install may require elevated permissions.
|
||||
|
||||
It's also good practice to run `npm run bootstrap` after merging from upstream or switching branches.
|
||||
|
||||
## Building the Extension
|
||||
|
||||
@@ -52,7 +57,7 @@ The `launch.json` entries now specify a `preLaunchTask` that will build the exte
|
||||
the `yarn watch` command, and will wait until the build is ready. The watch command will continue to watch from
|
||||
that point.
|
||||
|
||||
If the extension is already built, the the watch will be very quick.
|
||||
If the extension is already built, the watch will be very quick.
|
||||
|
||||
### From Inside VS Code
|
||||
There are two tasks that can be run from inside VS Code to build the extension.
|
||||
@@ -336,4 +341,4 @@ This will use webpack to build the extension. This is only necessary when packag
|
||||
|
||||
Installs the VS Code `*.d.ts` files and then runs `yarn prep`
|
||||
|
||||
You should run `yarn install` after merging from upstream or switching branches.
|
||||
You should run `npm run bootstrap` after merging from upstream or switching branches.
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
* ------------------------------------------------------------------------------------------ */
|
||||
|
||||
import * as jsonc from 'comment-json';
|
||||
import * as fs from 'fs';
|
||||
import * as glob from 'glob';
|
||||
import * as os from 'os';
|
||||
import * as path from 'path';
|
||||
@@ -22,6 +21,7 @@ import * as logger from '../logger';
|
||||
import { PlatformInformation } from '../platform';
|
||||
import { rsync, scp, ssh } from '../SSH/commands';
|
||||
import * as Telemetry from '../telemetry';
|
||||
import { AttachItem, showQuickPick } from './attachQuickPick';
|
||||
import { AttachItemsProvider, AttachPicker, RemoteAttachPicker } from './attachToProcess';
|
||||
import { ConfigMenu, ConfigMode, ConfigSource, CppDebugConfiguration, DebuggerEvent, DebuggerType, DebugType, IConfiguration, IConfigurationSnippet, isDebugLaunchStr, MIConfigurations, PipeTransportConfigurations, TaskStatus, WindowsConfigurations, WSLConfigurations } from './configurations';
|
||||
import { NativeAttachItemsProviderFactory } from './nativeAttach';
|
||||
@@ -147,12 +147,14 @@ export class DebugConfigurationProvider implements vscode.DebugConfigurationProv
|
||||
Telemetry.logDebuggerEvent(DebuggerEvent.debugPanel, { "debugType": DebugType.debug, "configSource": folder ? ConfigSource.workspaceFolder : ConfigSource.singleFile, "configMode": ConfigMode.noLaunchConfig, "cancelled": "true", "succeeded": "true" });
|
||||
return undefined; // aborts debugging silently
|
||||
} else {
|
||||
const noDebug = config.noDebug ?? false; // Preserve the noDebug value from the config if it exists.
|
||||
// Currently, we expect only one debug config to be selected.
|
||||
console.assert(configs.length === 1, "More than one debug config is selected.");
|
||||
config = configs[0];
|
||||
// Keep track of the entry point where the debug config has been selected, for telemetry purposes.
|
||||
config.debuggerEvent = DebuggerEvent.debugPanel;
|
||||
config.configSource = folder ? ConfigSource.workspaceFolder : ConfigSource.singleFile;
|
||||
config.noDebug = noDebug;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,7 +181,7 @@ export class DebugConfigurationProvider implements vscode.DebugConfigurationProv
|
||||
await cppBuildTaskProvider.runBuildTask(config.preLaunchTask);
|
||||
config.preLaunchTask = undefined;
|
||||
Telemetry.logDebuggerEvent(DebuggerEvent.debugPanel, { "debugType": DebugType.debug, "configSource": config.configSource || ConfigSource.unknown, "configMode": ConfigMode.launchConfig, "cancelled": "false", "succeeded": "true" });
|
||||
} catch (err) {
|
||||
} catch {
|
||||
Telemetry.logDebuggerEvent(DebuggerEvent.debugPanel, { "debugType": DebugType.debug, "configSource": config.configSource || ConfigSource.unknown, "configMode": ConfigMode.launchConfig, "cancelled": "false", "succeeded": "false" });
|
||||
}
|
||||
return config;
|
||||
@@ -245,7 +247,6 @@ export class DebugConfigurationProvider implements vscode.DebugConfigurationProv
|
||||
}
|
||||
|
||||
// Handle legacy 'externalConsole' bool and convert to console: "externalTerminal"
|
||||
// eslint-disable-next-line no-prototype-builtins
|
||||
if (config.hasOwnProperty("externalConsole")) {
|
||||
void logger.getOutputChannelLogger().showWarningMessage(localize("debugger.deprecated.config", "The key '{0}' is deprecated. Please use '{1}' instead.", "externalConsole", "console"));
|
||||
if (config.externalConsole && !config.console) {
|
||||
@@ -303,7 +304,7 @@ export class DebugConfigurationProvider implements vscode.DebugConfigurationProv
|
||||
|
||||
// Validate LLDB-MI
|
||||
if (os.platform() === 'darwin' && // Check for macOS
|
||||
fs.existsSync(lldb_mi_10_x_path) && // lldb-mi 10.x exists
|
||||
util.checkFileExistsSync(lldb_mi_10_x_path) && // lldb-mi 10.x exists
|
||||
(!macOSMIMode || macOSMIMode === 'lldb') &&
|
||||
!macOSMIDebuggerPath // User did not provide custom lldb-mi
|
||||
) {
|
||||
@@ -354,13 +355,22 @@ export class DebugConfigurationProvider implements vscode.DebugConfigurationProv
|
||||
// Pick process if process id is empty
|
||||
if (config.request === "attach" && !config.processId) {
|
||||
let processId: string | undefined;
|
||||
if (config.pipeTransport || config.useExtendedRemote) {
|
||||
const remoteAttachPicker: RemoteAttachPicker = new RemoteAttachPicker();
|
||||
processId = await remoteAttachPicker.ShowAttachEntries(config);
|
||||
} else {
|
||||
const attachItemsProvider: AttachItemsProvider = NativeAttachItemsProviderFactory.Get();
|
||||
const attacher: AttachPicker = new AttachPicker(attachItemsProvider);
|
||||
processId = await attacher.ShowAttachEntries(token);
|
||||
|
||||
// If program is specified and not remote attach, try to find the matching process by name
|
||||
if (config.program && !config.pipeTransport && !config.useExtendedRemote) {
|
||||
processId = await this.findProcessByProgramName(config.program, token);
|
||||
}
|
||||
|
||||
// Fall back to process picker if program wasn't specified or didn't match
|
||||
if (!processId) {
|
||||
if (config.pipeTransport || config.useExtendedRemote) {
|
||||
const remoteAttachPicker: RemoteAttachPicker = new RemoteAttachPicker();
|
||||
processId = await remoteAttachPicker.ShowAttachEntries(config);
|
||||
} else {
|
||||
const attachItemsProvider: AttachItemsProvider = NativeAttachItemsProviderFactory.Get();
|
||||
const attacher: AttachPicker = new AttachPicker(attachItemsProvider);
|
||||
processId = await attacher.ShowAttachEntries(token);
|
||||
}
|
||||
}
|
||||
|
||||
if (processId) {
|
||||
@@ -621,7 +631,7 @@ export class DebugConfigurationProvider implements vscode.DebugConfigurationProv
|
||||
if (response === applyButton || response === updateButton) {
|
||||
try {
|
||||
await vscode.commands.executeCommand('C_Cpp.SetVsDeveloperEnvironment', 'buildAndDebug');
|
||||
} catch (e: any) {
|
||||
} catch {
|
||||
// Ignore the error, the user will be prompted to apply the environment manually.
|
||||
}
|
||||
}
|
||||
@@ -648,7 +658,7 @@ export class DebugConfigurationProvider implements vscode.DebugConfigurationProv
|
||||
];
|
||||
|
||||
for (const searchPath of searchPaths) {
|
||||
if (fs.existsSync(path.join(searchPath, LLDBFramework))) {
|
||||
if (util.checkDirectoryExistsSync(path.join(searchPath, LLDBFramework))) {
|
||||
// Found a framework that 'lldb-mi' can use.
|
||||
return searchPath;
|
||||
}
|
||||
@@ -710,7 +720,6 @@ export class DebugConfigurationProvider implements vscode.DebugConfigurationProv
|
||||
const newSourceFileMapSource: string = util.resolveVariables(sourceFileMapSource, undefined);
|
||||
if (sourceFileMapSource !== newSourceFileMapSource) {
|
||||
message = "\t" + localize("replacing.sourcepath", "Replacing {0} '{1}' with '{2}'.", "sourcePath", sourceFileMapSource, newSourceFileMapSource);
|
||||
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
||||
delete config.sourceFileMap[sourceFileMapSource];
|
||||
source = newSourceFileMapSource;
|
||||
}
|
||||
@@ -790,7 +799,6 @@ export class DebugConfigurationProvider implements vscode.DebugConfigurationProv
|
||||
}
|
||||
|
||||
private findDefaultConfig(configs: CppDebugConfiguration[]): CppDebugConfiguration[] {
|
||||
// eslint-disable-next-line no-prototype-builtins
|
||||
return configs.filter((config: CppDebugConfiguration) => config.hasOwnProperty("isDefault") && config.isDefault);
|
||||
}
|
||||
|
||||
@@ -1157,6 +1165,44 @@ export class DebugConfigurationProvider implements vscode.DebugConfigurationProv
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private async findProcessByProgramName(
|
||||
programPath: string,
|
||||
token?: vscode.CancellationToken
|
||||
): Promise<string | undefined> {
|
||||
// Validate that the program path is valid
|
||||
if (!await util.checkExecutableWithoutExtensionExists(programPath)) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const programBaseName: string = path.basename(programPath);
|
||||
|
||||
// Get the process list using the same logic as interactive attach
|
||||
const attachItemsProvider: AttachItemsProvider = NativeAttachItemsProviderFactory.Get();
|
||||
const processes: AttachItem[] = await attachItemsProvider.getAttachItems(token);
|
||||
|
||||
// Prepare target name for matching (case-insensitive on Windows only)
|
||||
let targetName: string = programBaseName;
|
||||
if (isWindows) {
|
||||
targetName = targetName.toLowerCase();
|
||||
targetName = targetName.endsWith(".exe") ? targetName : (targetName + ".exe");
|
||||
}
|
||||
|
||||
// Find processes matching the program name
|
||||
const matchingProcesses: AttachItem[] = processes.filter(p => {
|
||||
const processName: string = isWindows ? p.label.toLowerCase() : p.label;
|
||||
return processName === targetName;
|
||||
});
|
||||
|
||||
if (matchingProcesses.length === 0) {
|
||||
return undefined;
|
||||
} else if (matchingProcesses.length === 1) {
|
||||
return matchingProcesses[0].id;
|
||||
} else {
|
||||
// Multiple matches - let the user choose
|
||||
return showQuickPick(() => Promise.resolve(matchingProcesses));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export interface IConfigurationAssetProvider {
|
||||
|
||||
@@ -97,7 +97,7 @@ function createLaunchString(name: string, type: string, executable: string): str
|
||||
"stopAtEntry": false,
|
||||
"cwd": "$\{fileDirname\}",
|
||||
"environment": [],
|
||||
${ type === "cppdbg" ? `"externalConsole": false` : `"console": "externalTerminal"` }
|
||||
${type === "cppdbg" ? `"externalConsole": false` : `"console": "internalConsole"`}
|
||||
`;
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ export class MIConfigurations extends Configuration {
|
||||
\t${indentJsonString(createLaunchString(name, this.miDebugger, this.executable))},
|
||||
\t"MIMode": "${this.MIMode}"{0}{1}
|
||||
}`, [this.miDebugger === "cppdbg" && os.platform() === "win32" ? `,${os.EOL}\t"miDebuggerPath": "/path/to/gdb"` : "",
|
||||
this.additionalProperties ? `,${os.EOL}\t${indentJsonString(this.additionalProperties)}` : ""]);
|
||||
this.additionalProperties ? `,${os.EOL}\t${indentJsonString(this.additionalProperties)}` : ""]);
|
||||
|
||||
return {
|
||||
"label": configPrefix + name,
|
||||
@@ -182,7 +182,7 @@ export class MIConfigurations extends Configuration {
|
||||
\t${indentJsonString(createAttachString(name, this.miDebugger, this.executable))}
|
||||
\t"MIMode": "${this.MIMode}"{0}{1}
|
||||
}`, [this.miDebugger === "cppdbg" && os.platform() === "win32" ? `,${os.EOL}\t"miDebuggerPath": "/path/to/gdb"` : "",
|
||||
this.additionalProperties ? `,${os.EOL}\t${indentJsonString(this.additionalProperties)}` : ""]);
|
||||
this.additionalProperties ? `,${os.EOL}\t${indentJsonString(this.additionalProperties)}` : ""]);
|
||||
|
||||
return {
|
||||
"label": configPrefix + name,
|
||||
|
||||
@@ -7,11 +7,13 @@ import * as os from 'os';
|
||||
import * as path from 'path';
|
||||
import * as vscode from "vscode";
|
||||
import * as nls from 'vscode-nls';
|
||||
import { getOutputChannel } from '../logger';
|
||||
import { RunWithoutDebuggingAdapter } from './runWithoutDebuggingAdapter';
|
||||
|
||||
nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })();
|
||||
const localize: nls.LocalizeFunc = nls.loadMessageBundle();
|
||||
|
||||
// Registers DebugAdapterDescriptorFactory for `cppdbg` and `cppvsdbg`. If it is not ready, it will prompt a wait for the download dialog.
|
||||
// Registers DebugAdapterDescriptorFactory for `cppdbg` and `cppvsdbg`.
|
||||
// NOTE: This file is not automatically tested.
|
||||
|
||||
abstract class AbstractDebugAdapterDescriptorFactory implements vscode.DebugAdapterDescriptorFactory {
|
||||
@@ -26,8 +28,15 @@ abstract class AbstractDebugAdapterDescriptorFactory implements vscode.DebugAdap
|
||||
}
|
||||
|
||||
export class CppdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterDescriptorFactory {
|
||||
async createDebugAdapterDescriptor(session: vscode.DebugSession, _executable?: vscode.DebugAdapterExecutable): Promise<vscode.DebugAdapterDescriptor> {
|
||||
if (session.configuration.noDebug) {
|
||||
if (noDebugSupported(session.configuration)) {
|
||||
return new vscode.DebugAdapterInlineImplementation(new RunWithoutDebuggingAdapter());
|
||||
}
|
||||
// If the configuration is not supported, gracefully fall back to a regular debug session and log a message to the user.
|
||||
logReasonForNoDebugNotSupported(session.configuration);
|
||||
}
|
||||
|
||||
async createDebugAdapterDescriptor(_session: vscode.DebugSession, _executable?: vscode.DebugAdapterExecutable): Promise<vscode.DebugAdapterDescriptor> {
|
||||
const adapter: string = "./debugAdapters/bin/OpenDebugAD7" + (os.platform() === 'win32' ? ".exe" : "");
|
||||
|
||||
const command: string = path.join(this.context.extensionPath, adapter);
|
||||
@@ -37,8 +46,15 @@ export class CppdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterDes
|
||||
}
|
||||
|
||||
export class CppvsdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterDescriptorFactory {
|
||||
async createDebugAdapterDescriptor(session: vscode.DebugSession, _executable?: vscode.DebugAdapterExecutable): Promise<vscode.DebugAdapterDescriptor | null> {
|
||||
if (session.configuration.noDebug) {
|
||||
if (noDebugSupported(session.configuration)) {
|
||||
return new vscode.DebugAdapterInlineImplementation(new RunWithoutDebuggingAdapter());
|
||||
}
|
||||
// If the configuration is not supported, gracefully fall back to a regular debug session and log a message to the user.
|
||||
logReasonForNoDebugNotSupported(session.configuration);
|
||||
}
|
||||
|
||||
async createDebugAdapterDescriptor(_session: vscode.DebugSession, _executable?: vscode.DebugAdapterExecutable): Promise<vscode.DebugAdapterDescriptor | null> {
|
||||
if (os.platform() !== 'win32') {
|
||||
void vscode.window.showErrorMessage(localize("debugger.not.available", "Debugger type '{0}' is not available for non-Windows machines.", "cppvsdbg"));
|
||||
return null;
|
||||
@@ -50,3 +66,28 @@ export class CppvsdbgDebugAdapterDescriptorFactory extends AbstractDebugAdapterD
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function noDebugSupported(configuration: vscode.DebugConfiguration): boolean {
|
||||
// Don't attempt to start a noDebug session if the configuration has any of these properties, which require a debug adapter to function.
|
||||
return configuration.request === 'launch' && !configuration.pipeTransport && !configuration.debugServerPath && !configuration.miDebuggerServerAddress && !configuration.coreDumpPath;
|
||||
}
|
||||
|
||||
function logReasonForNoDebugNotSupported(configuration: vscode.DebugConfiguration): void {
|
||||
const outputChannel = getOutputChannel();
|
||||
if (configuration.request !== 'launch') {
|
||||
outputChannel.appendLine(localize("debugger.noDebug.requestType.not.supported", "Run Without Debugging is only supported for launch configurations."));
|
||||
}
|
||||
if (configuration.pipeTransport) {
|
||||
outputChannel.appendLine(localize("debugger.noDebug.pipeTransport.not.supported", "Run Without Debugging is not supported for configurations with 'pipeTransport' set."));
|
||||
}
|
||||
if (configuration.debugServerPath) {
|
||||
outputChannel.appendLine(localize("debugger.noDebug.debugServerPath.not.supported", "Run Without Debugging is not supported for configurations with 'debugServerPath' set."));
|
||||
}
|
||||
if (configuration.miDebuggerServerAddress) {
|
||||
outputChannel.appendLine(localize("debugger.noDebug.miDebuggerServerAddress.not.supported", "Run Without Debugging is not supported for configurations with 'miDebuggerServerAddress' set."));
|
||||
}
|
||||
if (configuration.coreDumpPath) {
|
||||
outputChannel.appendLine(localize("debugger.noDebug.coreDumpPath.not.supported", "Run Without Debugging is not supported for configurations with 'coreDumpPath' set."));
|
||||
}
|
||||
outputChannel.show(true);
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ function spawnChildProcess(command: string, token?: vscode.CancellationToken): P
|
||||
|
||||
try {
|
||||
process.kill();
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// Failed to kill process.
|
||||
}
|
||||
reject(new Error(localize("timeout.processList.spawn", '"{0}" timed out after {1} seconds.', command, seconds)));
|
||||
@@ -198,7 +198,7 @@ function spawnChildProcess(command: string, token?: vscode.CancellationToken): P
|
||||
|
||||
try {
|
||||
process.kill();
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// Failed to kill process.
|
||||
}
|
||||
reject(new Error(localize("cancel.processList.spawn", '"{0}" canceled.', command)));
|
||||
|
||||
@@ -0,0 +1,302 @@
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All Rights Reserved.
|
||||
* See 'LICENSE' in the project root for license information.
|
||||
* ------------------------------------------------------------------------------------------ */
|
||||
|
||||
import * as cp from 'child_process';
|
||||
import * as os from 'os';
|
||||
import * as path from 'path';
|
||||
import * as vscode from 'vscode';
|
||||
import * as nls from 'vscode-nls';
|
||||
import { buildShellCommandLine, sessionIsWsl } from '../common';
|
||||
import { isWindows } from '../constants';
|
||||
|
||||
nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })();
|
||||
const localize = nls.loadMessageBundle();
|
||||
|
||||
/**
|
||||
* A minimal inline Debug Adapter that runs the target program directly without a debug adapter
|
||||
* when the user invokes "Run Without Debugging".
|
||||
*/
|
||||
export class RunWithoutDebuggingAdapter implements vscode.DebugAdapter {
|
||||
private readonly sendMessageEmitter = new vscode.EventEmitter<vscode.DebugProtocolMessage>();
|
||||
public readonly onDidSendMessage: vscode.Event<vscode.DebugProtocolMessage> = this.sendMessageEmitter.event;
|
||||
private readonly terminalListeners: vscode.Disposable[] = [];
|
||||
|
||||
private seq: number = 1;
|
||||
private childProcess?: cp.ChildProcess;
|
||||
private terminal?: vscode.Terminal;
|
||||
private terminalExecution?: vscode.TerminalShellExecution;
|
||||
private hasTerminated: boolean = false;
|
||||
|
||||
public handleMessage(message: vscode.DebugProtocolMessage): void {
|
||||
const msg = message as { type: string; command: string; seq: number; arguments?: any; };
|
||||
if (msg.type === 'request') {
|
||||
void this.handleRequest(msg);
|
||||
}
|
||||
}
|
||||
|
||||
private async handleRequest(request: { command: string; seq: number; arguments?: any; }): Promise<void> {
|
||||
switch (request.command) {
|
||||
case 'initialize':
|
||||
this.sendResponse(request, {});
|
||||
this.sendEvent('initialized');
|
||||
break;
|
||||
case 'launch':
|
||||
await this.launch(request);
|
||||
break;
|
||||
case 'configurationDone':
|
||||
this.sendResponse(request, {});
|
||||
break;
|
||||
case 'disconnect':
|
||||
case 'terminate':
|
||||
this.sendResponse(request, {});
|
||||
break;
|
||||
default:
|
||||
this.sendResponse(request, {});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private async launch(request: { command: string; seq: number; arguments?: any; }): Promise<void> {
|
||||
const config = request.arguments as {
|
||||
program?: string;
|
||||
args?: string[];
|
||||
cwd?: string;
|
||||
environment?: { name: string; value: string; }[];
|
||||
console?: string;
|
||||
externalConsole?: boolean;
|
||||
};
|
||||
|
||||
const program: string = config.program ?? '';
|
||||
const args: string[] = config.args ?? [];
|
||||
const cwd: string | undefined = config.cwd;
|
||||
const environment: { name: string; value: string; }[] = config.environment ?? [];
|
||||
const consoleMode: string = config.console ?? (config.externalConsole ? 'externalTerminal' : 'integratedTerminal');
|
||||
|
||||
// Merge the launch config's environment variables on top of the inherited process environment.
|
||||
const env: NodeJS.ProcessEnv = { ...process.env };
|
||||
for (const e of environment) {
|
||||
env[e.name] = e.value;
|
||||
}
|
||||
|
||||
this.sendResponse(request, {});
|
||||
|
||||
if (consoleMode === 'integratedTerminal' || consoleMode === 'internalConsole') {
|
||||
await this.launchIntegratedTerminal(program, args, cwd, env);
|
||||
} else if (consoleMode === 'externalTerminal') {
|
||||
this.launchExternalTerminal(program, args, cwd, env);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Launch the program in a VS Code integrated terminal.
|
||||
* The terminal will remain open after the program exits and be reused for the next session, if applicable.
|
||||
*/
|
||||
private async launchIntegratedTerminal(program: string, args: string[], cwd: string | undefined, env: NodeJS.ProcessEnv): Promise<void> {
|
||||
const terminalName = path.normalize(program);
|
||||
const existingTerminal = vscode.window.terminals.find(t => t.name === terminalName);
|
||||
this.terminal = existingTerminal ?? vscode.window.createTerminal({
|
||||
name: terminalName,
|
||||
cwd,
|
||||
env: env as Record<string, string>
|
||||
});
|
||||
this.terminal.show(true);
|
||||
|
||||
const shellIntegration: vscode.TerminalShellIntegration | undefined =
|
||||
this.terminal.shellIntegration ?? await this.waitForShellIntegration(this.terminal, 3000);
|
||||
|
||||
// Not all terminals support shell integration. If it's not available, we'll just send the command as text though we won't be able to monitor its execution.
|
||||
if (shellIntegration) {
|
||||
this.monitorIntegratedTerminal(this.terminal);
|
||||
let executable: string = program;
|
||||
let executableArgs: string[] = args;
|
||||
if (!program.match(/["']/) && program.match(/\s/)) {
|
||||
// VS Code does not automatically quote the program path if it has spaces.
|
||||
const shellPath: string | undefined = 'shellPath' in this.terminal.creationOptions
|
||||
? this.terminal.creationOptions.shellPath?.toLowerCase()
|
||||
: undefined;
|
||||
const terminalShell: string | undefined = this.terminal.state.shell?.toLowerCase();
|
||||
const defaultTerminalProfile: string | undefined = isWindows
|
||||
? vscode.workspace.getConfiguration('terminal.integrated').get<string>('defaultProfile.windows')?.toLowerCase()
|
||||
: undefined;
|
||||
const isPowerShell: boolean | undefined =
|
||||
shellPath?.endsWith('pwsh.exe') || shellPath?.endsWith('powershell.exe') || shellPath?.endsWith('pwsh') ||
|
||||
terminalShell?.includes('powershell') || terminalShell?.includes('pwsh') ||
|
||||
defaultTerminalProfile?.includes('powershell') || defaultTerminalProfile?.includes('pwsh');
|
||||
|
||||
if (isPowerShell || (isWindows && isPowerShell === undefined)) { // PowerShell is the default on Windows if we can't determine the shell.
|
||||
executable = '&';
|
||||
executableArgs = [program, ...args];
|
||||
} else {
|
||||
executable = `"${program}"`;
|
||||
}
|
||||
}
|
||||
this.terminalExecution = shellIntegration.executeCommand(executable, executableArgs);
|
||||
} else {
|
||||
const cmdLine: string = buildShellCommandLine('', program, args, true);
|
||||
this.terminal.sendText(cmdLine);
|
||||
|
||||
// The terminal manages its own lifecycle; notify VS Code the "debug" session is done.
|
||||
this.sendEvent('terminated');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Launch the program in an external terminal. We do not keep track of this terminal or the spawned process.
|
||||
*/
|
||||
private launchExternalTerminal(program: string, args: string[], cwd: string | undefined, env: NodeJS.ProcessEnv): void {
|
||||
const cmdLine: string = buildShellCommandLine('', program, args, true);
|
||||
const platform: string = os.platform();
|
||||
if (platform === 'win32') {
|
||||
cp.spawn('cmd.exe', ['/c', 'start', 'cmd.exe', '/K', `"${cmdLine}"`], { cwd, env, windowsVerbatimArguments: true, detached: true, stdio: 'ignore' }).unref();
|
||||
} else if (platform === 'darwin') {
|
||||
cp.spawn('osascript', ['-e', `tell application "Terminal" to do script "${this.escapeQuotes(cmdLine)}"`], { cwd, env, detached: true, stdio: 'ignore' }).unref();
|
||||
} else if (platform === 'linux' && sessionIsWsl()) {
|
||||
cp.spawn('/mnt/c/Windows/System32/cmd.exe', ['/c', 'start', 'bash', '-c', `${cmdLine};read -p 'Press enter to continue...'`], { env, detached: true, stdio: 'ignore' }).unref();
|
||||
} else { // platform === 'linux'
|
||||
this.launchLinuxExternalTerminal(cmdLine, cwd, env);
|
||||
}
|
||||
this.sendEvent('terminated');
|
||||
}
|
||||
|
||||
/**
|
||||
* On Linux, find and launch an available terminal emulator to run the command.
|
||||
*/
|
||||
private launchLinuxExternalTerminal(cmdLine: string, cwd: string | undefined, env: NodeJS.ProcessEnv): void {
|
||||
const bashCmd = `${cmdLine}; echo; read -p 'Press enter to continue...'`;
|
||||
const bashArgs = ['bash', '-c', bashCmd];
|
||||
|
||||
// Terminal emulators in order of preference, with the correct flag style for each.
|
||||
const candidates: { cmd: string; buildArgs(): string[] }[] = [
|
||||
{ cmd: 'x-terminal-emulator', buildArgs: () => ['-e', ...bashArgs] },
|
||||
{ cmd: 'gnome-terminal', buildArgs: () => ['-e', ...bashArgs] },
|
||||
{ cmd: 'konsole', buildArgs: () => ['-e', ...bashArgs] },
|
||||
{ cmd: 'xterm', buildArgs: () => ['-e', ...bashArgs] }
|
||||
];
|
||||
|
||||
// Honor the $TERMINAL environment variable if set.
|
||||
const terminalEnv = process.env['TERMINAL'];
|
||||
if (terminalEnv) {
|
||||
candidates.unshift({ cmd: terminalEnv, buildArgs: () => ['-e', ...bashArgs] });
|
||||
}
|
||||
|
||||
for (const candidate of candidates) {
|
||||
try {
|
||||
const result = cp.spawnSync('which', [candidate.cmd], { stdio: 'pipe' });
|
||||
if (result.status === 0) {
|
||||
cp.spawn(candidate.cmd, candidate.buildArgs(), { cwd, env, detached: true, stdio: 'ignore' }).unref();
|
||||
return;
|
||||
}
|
||||
} catch {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
const message = localize('no.terminal.emulator', '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.');
|
||||
vscode.window.showErrorMessage(message);
|
||||
}
|
||||
|
||||
private escapeQuotes(arg: string): string {
|
||||
return arg.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
||||
}
|
||||
|
||||
private waitForShellIntegration(terminal: vscode.Terminal, timeoutMs: number): Promise<vscode.TerminalShellIntegration | undefined> {
|
||||
return new Promise(resolve => {
|
||||
let resolved: boolean = false;
|
||||
const done = (shellIntegration: vscode.TerminalShellIntegration | undefined): void => {
|
||||
if (resolved) {
|
||||
return;
|
||||
}
|
||||
|
||||
resolved = true;
|
||||
clearTimeout(timeout);
|
||||
shellIntegrationChanged.dispose();
|
||||
terminalClosed.dispose();
|
||||
resolve(shellIntegration);
|
||||
};
|
||||
|
||||
const timeout = setTimeout(() => done(undefined), timeoutMs);
|
||||
const shellIntegrationChanged = vscode.window.onDidChangeTerminalShellIntegration(event => {
|
||||
if (event.terminal === terminal) {
|
||||
done(event.shellIntegration);
|
||||
}
|
||||
});
|
||||
const terminalClosed = vscode.window.onDidCloseTerminal(closedTerminal => {
|
||||
if (closedTerminal === terminal) {
|
||||
done(undefined);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private monitorIntegratedTerminal(terminal: vscode.Terminal): void {
|
||||
this.disposeTerminalListeners();
|
||||
this.terminalListeners.push(
|
||||
vscode.window.onDidEndTerminalShellExecution(event => {
|
||||
if (event.terminal !== terminal || event.execution !== this.terminalExecution || this.hasTerminated) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.exitCode !== undefined) {
|
||||
this.sendEvent('exited', { exitCode: event.exitCode });
|
||||
}
|
||||
|
||||
this.sendEvent('terminated');
|
||||
}),
|
||||
vscode.window.onDidCloseTerminal(closedTerminal => {
|
||||
if (closedTerminal !== terminal || this.hasTerminated) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.sendEvent('terminated');
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
private disposeTerminalListeners(): void {
|
||||
while (this.terminalListeners.length > 0) {
|
||||
this.terminalListeners.pop()?.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private sendResponse(request: { command: string; seq: number; }, body: object): void {
|
||||
this.sendMessageEmitter.fire({
|
||||
type: 'response',
|
||||
seq: this.seq++,
|
||||
request_seq: request.seq,
|
||||
success: true,
|
||||
command: request.command,
|
||||
body
|
||||
} as vscode.DebugProtocolMessage);
|
||||
}
|
||||
|
||||
private sendEvent(event: string, body?: object): void {
|
||||
if (event === 'terminated') {
|
||||
if (this.hasTerminated) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.hasTerminated = true;
|
||||
this.disposeTerminalListeners();
|
||||
}
|
||||
|
||||
this.sendMessageEmitter.fire({
|
||||
type: 'event',
|
||||
seq: this.seq++,
|
||||
event,
|
||||
body
|
||||
} as vscode.DebugProtocolMessage);
|
||||
}
|
||||
|
||||
public dispose(): void {
|
||||
this.terminateProcess();
|
||||
this.disposeTerminalListeners();
|
||||
this.sendMessageEmitter.dispose();
|
||||
}
|
||||
|
||||
private terminateProcess(): void {
|
||||
this.childProcess?.kill();
|
||||
this.childProcess = undefined;
|
||||
}
|
||||
}
|
||||
@@ -26,10 +26,69 @@ export class CopilotHoverProvider implements vscode.HoverProvider {
|
||||
private cancelledDocument: vscode.TextDocument | undefined;
|
||||
private cancelledPosition: vscode.Position | undefined;
|
||||
private content: string | undefined;
|
||||
private chatModel: vscode.LanguageModelChat | undefined;
|
||||
private chatModelId: string | undefined; // Save the selected model ID to avoid trying the same unavailable model repeatedly.
|
||||
// Flag to avoid querying the LanguageModelChat repeatedly if no model is found
|
||||
private checkedChatModel: boolean = false;
|
||||
constructor(client: DefaultClient) {
|
||||
this.client = client;
|
||||
}
|
||||
|
||||
public async getCachedChatModel(): Promise<vscode.LanguageModelChat | undefined> {
|
||||
if (this.checkedChatModel) {
|
||||
return this.chatModel;
|
||||
}
|
||||
|
||||
const vscodelm = getVSCodeLanguageModel();
|
||||
if (vscodelm) {
|
||||
try {
|
||||
let model: vscode.LanguageModelChat | undefined;
|
||||
if (this.chatModelId === undefined) {
|
||||
// First look for GPT-4o which should be available to all
|
||||
// users and have a 0x multiplier on paid plans.
|
||||
// GPT-4o is faster than the x0 GPT-5-mini (which seems too slow for hover, e.g. 10+ seconds).
|
||||
this.chatModelId = 'gpt-4o';
|
||||
[model] = await vscodelm.selectChatModels({ ...modelSelector, id: this.chatModelId });
|
||||
if (!model) {
|
||||
// If GPT-4o is not available, fallback to GPT-5.4-mini (x0.33 and fast).
|
||||
this.chatModelId = 'gpt-5.4-mini';
|
||||
[model] = await vscodelm.selectChatModels({ ...modelSelector, id: this.chatModelId });
|
||||
}
|
||||
if (!model) {
|
||||
// If GPT-5.4-mini is not available, fallback to the first available model.
|
||||
this.chatModelId = 'default';
|
||||
[model] = await vscodelm.selectChatModels(modelSelector);
|
||||
}
|
||||
} else {
|
||||
if (this.chatModelId === 'default') {
|
||||
[model] = await vscodelm.selectChatModels(modelSelector);
|
||||
} else {
|
||||
[model] = await vscodelm.selectChatModels({ ...modelSelector, id: this.chatModelId });
|
||||
}
|
||||
}
|
||||
if (!model) {
|
||||
telemetry.logLanguageServerEvent('CopilotHoverNoModelSelected', { remoteName: vscode.env.remoteName || 'local' });
|
||||
} else {
|
||||
this.chatModel = model;
|
||||
}
|
||||
} catch (e: any) {
|
||||
const exceptionType = e?.name || e?.constructor?.name || typeof e;
|
||||
telemetry.logLanguageServerEvent('CopilotHoverSelectModelFailed', {
|
||||
remoteName: vscode.env.remoteName || 'local',
|
||||
exceptionType: String(exceptionType)
|
||||
});
|
||||
}
|
||||
}
|
||||
this.checkedChatModel = true;
|
||||
return this.chatModel;
|
||||
}
|
||||
|
||||
public async refreshCachedChatModel(): Promise<vscode.LanguageModelChat | undefined> {
|
||||
this.chatModel = undefined;
|
||||
this.checkedChatModel = false;
|
||||
return this.getCachedChatModel();
|
||||
}
|
||||
|
||||
public async provideHover(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): Promise<vscode.Hover | undefined> {
|
||||
await this.client.ready;
|
||||
|
||||
@@ -43,12 +102,9 @@ export class CopilotHoverProvider implements vscode.HoverProvider {
|
||||
}
|
||||
|
||||
// Ensure the user has access to Copilot.
|
||||
const vscodelm = getVSCodeLanguageModel();
|
||||
if (vscodelm) {
|
||||
const [model] = await vscodelm.selectChatModels(modelSelector);
|
||||
if (!model) {
|
||||
return undefined;
|
||||
}
|
||||
const model = await this.getCachedChatModel();
|
||||
if (!model) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const newHover = this.isNewHover(document, position);
|
||||
|
||||
@@ -88,6 +88,129 @@ const CallHierarchyCallsToRequest: RequestType<CallHierarchyParams, CallHierarch
|
||||
const CallHierarchyCallsFromRequest: RequestType<CallHierarchyParams, CallHierarchyCallsItemResult, void> =
|
||||
new RequestType<CallHierarchyParams, CallHierarchyCallsItemResult, void>('cpptools/callHierarchyCallsFrom');
|
||||
|
||||
function makeVscodeCallHierarchyItem(client: DefaultClient, item: CallHierarchyItem): vscode.CallHierarchyItem {
|
||||
const containerDetail: string = (item.detail !== "") ? `${item.detail} - ` : "";
|
||||
const itemUri: vscode.Uri = vscode.Uri.file(item.file);
|
||||
|
||||
// Get file detail
|
||||
const isInWorkspace: boolean = client.RootUri !== undefined &&
|
||||
itemUri.fsPath.startsWith(client.RootUri.fsPath);
|
||||
const dirPath: string = isInWorkspace ?
|
||||
path.relative(client.RootPath, path.dirname(item.file)) : path.dirname(item.file);
|
||||
const fileDetail: string = dirPath.length === 0 ?
|
||||
`${path.basename(item.file)}` : `${path.basename(item.file)} (${dirPath})`;
|
||||
|
||||
return new vscode.CallHierarchyItem(
|
||||
item.kind,
|
||||
item.name,
|
||||
containerDetail + fileDetail,
|
||||
itemUri,
|
||||
makeVscodeRange(item.range),
|
||||
makeVscodeRange(item.selectionRange));
|
||||
}
|
||||
|
||||
function createIncomingCalls(client: DefaultClient, calls: CallHierarchyCallsItem[]): vscode.CallHierarchyIncomingCall[] {
|
||||
const result: vscode.CallHierarchyIncomingCall[] = [];
|
||||
|
||||
for (const call of calls) {
|
||||
const item: vscode.CallHierarchyItem = makeVscodeCallHierarchyItem(client, call.item);
|
||||
const ranges: vscode.Range[] = [];
|
||||
call.fromRanges.forEach(r => {
|
||||
ranges.push(makeVscodeRange(r));
|
||||
});
|
||||
|
||||
const incomingCall: vscode.CallHierarchyIncomingCall =
|
||||
new vscode.CallHierarchyIncomingCall(item, ranges);
|
||||
result.push(incomingCall);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function createOutgoingCalls(client: DefaultClient, calls: CallHierarchyCallsItem[]): vscode.CallHierarchyOutgoingCall[] {
|
||||
const result: vscode.CallHierarchyOutgoingCall[] = [];
|
||||
|
||||
for (const call of calls) {
|
||||
const item: vscode.CallHierarchyItem = makeVscodeCallHierarchyItem(client, call.item);
|
||||
const ranges: vscode.Range[] = [];
|
||||
call.fromRanges.forEach(r => {
|
||||
ranges.push(makeVscodeRange(r));
|
||||
});
|
||||
|
||||
const outgoingCall: vscode.CallHierarchyOutgoingCall =
|
||||
new vscode.CallHierarchyOutgoingCall(item, ranges);
|
||||
result.push(outgoingCall);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
export async function sendPrepareCallHierarchyRequest(client: DefaultClient, uri: vscode.Uri, position: vscode.Position, token: vscode.CancellationToken): Promise<vscode.CallHierarchyItem[] | undefined> {
|
||||
const params: CallHierarchyParams = {
|
||||
textDocument: { uri: uri.toString() },
|
||||
position: Position.create(position.line, position.character)
|
||||
};
|
||||
let response: CallHierarchyItemResult;
|
||||
try {
|
||||
response = await client.languageClient.sendRequest(CallHierarchyItemRequest, params, token);
|
||||
} catch (e: any) {
|
||||
if (e instanceof ResponseError && (e.code === RequestCancelled || e.code === ServerCancelled)) {
|
||||
return undefined;
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (token.isCancellationRequested) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return response.item === undefined ? [] : [makeVscodeCallHierarchyItem(client, response.item)];
|
||||
}
|
||||
|
||||
export async function sendCallHierarchyCallsToRequest(client: DefaultClient, item: vscode.CallHierarchyItem, token: vscode.CancellationToken): Promise<vscode.CallHierarchyIncomingCall[] | undefined> {
|
||||
const params: CallHierarchyParams = {
|
||||
textDocument: { uri: item.uri.toString() },
|
||||
position: Position.create(item.selectionRange.start.line, item.selectionRange.start.character)
|
||||
};
|
||||
let response: CallHierarchyCallsItemResult;
|
||||
try {
|
||||
response = await client.languageClient.sendRequest(CallHierarchyCallsToRequest, params, token);
|
||||
} catch (e: any) {
|
||||
if (e instanceof ResponseError && (e.code === RequestCancelled || e.code === ServerCancelled)) {
|
||||
return undefined;
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (token.isCancellationRequested) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return response.calls.length !== 0 ? createIncomingCalls(client, response.calls) : [];
|
||||
}
|
||||
|
||||
export async function sendCallHierarchyCallsFromRequest(client: DefaultClient, item: vscode.CallHierarchyItem, token: vscode.CancellationToken): Promise<vscode.CallHierarchyOutgoingCall[] | undefined> {
|
||||
const params: CallHierarchyParams = {
|
||||
textDocument: { uri: item.uri.toString() },
|
||||
position: Position.create(item.selectionRange.start.line, item.selectionRange.start.character)
|
||||
};
|
||||
let response: CallHierarchyCallsItemResult;
|
||||
try {
|
||||
response = await client.languageClient.sendRequest(CallHierarchyCallsFromRequest, params, token);
|
||||
} catch (e: any) {
|
||||
if (e instanceof ResponseError && (e.code === RequestCancelled || e.code === ServerCancelled)) {
|
||||
return undefined;
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (token.isCancellationRequested) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return response.calls.length !== 0 ? createOutgoingCalls(client, response.calls) : [];
|
||||
}
|
||||
|
||||
export class CallHierarchyProvider implements vscode.CallHierarchyProvider {
|
||||
// Indicates whether a request is from an entry root node (e.g. top function in the call tree).
|
||||
private isEntryRootNodeTelemetry: boolean = false;
|
||||
@@ -118,20 +241,10 @@ export class CallHierarchyProvider implements vscode.CallHierarchyProvider {
|
||||
cancelSource.cancel();
|
||||
});
|
||||
|
||||
const params: CallHierarchyParams = {
|
||||
textDocument: { uri: document.uri.toString() },
|
||||
position: Position.create(position.line, position.character)
|
||||
};
|
||||
let response: CallHierarchyItemResult;
|
||||
let result: vscode.CallHierarchyItem[] | undefined;
|
||||
try {
|
||||
response = await this.client.languageClient.sendRequest(CallHierarchyItemRequest, params, cancelSource.token);
|
||||
} catch (e: any) {
|
||||
if (e instanceof ResponseError && (e.code === RequestCancelled || e.code === ServerCancelled)) {
|
||||
return undefined;
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
finally {
|
||||
result = await sendPrepareCallHierarchyRequest(this.client, document.uri, position, cancelSource.token);
|
||||
} finally {
|
||||
cancellationTokenListener.dispose();
|
||||
requestCanceledListener.dispose();
|
||||
}
|
||||
@@ -139,12 +252,12 @@ export class CallHierarchyProvider implements vscode.CallHierarchyProvider {
|
||||
if (cancelSource.token.isCancellationRequested) {
|
||||
throw new vscode.CancellationError();
|
||||
}
|
||||
if (response.item === undefined) {
|
||||
if (!result || result.length === 0) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
this.isEntryRootNodeTelemetry = true;
|
||||
return this.makeVscodeCallHierarchyItem(response.item);
|
||||
return result[0];
|
||||
}
|
||||
|
||||
public async provideCallHierarchyIncomingCalls(item: vscode.CallHierarchyItem, token: vscode.CancellationToken): Promise<vscode.CallHierarchyIncomingCall[] | undefined> {
|
||||
@@ -172,39 +285,28 @@ export class CallHierarchyProvider implements vscode.CallHierarchyProvider {
|
||||
|
||||
// Send the request to the language server.
|
||||
let result: vscode.CallHierarchyIncomingCall[] | undefined;
|
||||
const params: CallHierarchyParams = {
|
||||
textDocument: { uri: item.uri.toString() },
|
||||
position: Position.create(item.selectionRange.start.line, item.selectionRange.start.character)
|
||||
};
|
||||
let response: CallHierarchyCallsItemResult | undefined;
|
||||
let cancelled: boolean = false;
|
||||
let progressBarDuration: number | undefined;
|
||||
try {
|
||||
response = await this.client.languageClient.sendRequest(CallHierarchyCallsToRequest, params, cancelSource.token);
|
||||
} catch (e: any) {
|
||||
cancelled = e instanceof ResponseError && (e.code === RequestCancelled || e.code === ServerCancelled);
|
||||
if (!cancelled) {
|
||||
throw e;
|
||||
}
|
||||
result = await sendCallHierarchyCallsToRequest(this.client, item, cancelSource.token);
|
||||
} finally {
|
||||
// Reset anything that can be cleared before processing the result.
|
||||
progressBarDuration = workspaceReferences.getCallHierarchyProgressBarDuration();
|
||||
workspaceReferences.resetProgressBar();
|
||||
workspaceReferences.resetReferences();
|
||||
cancellationTokenListener.dispose();
|
||||
requestCanceledListener.dispose();
|
||||
}
|
||||
// Reset anything that can be cleared before processing the result.
|
||||
const progressBarDuration: number | undefined = workspaceReferences.getCallHierarchyProgressBarDuration();
|
||||
workspaceReferences.resetProgressBar();
|
||||
workspaceReferences.resetReferences();
|
||||
cancellationTokenListener.dispose();
|
||||
requestCanceledListener.dispose();
|
||||
|
||||
// Process the result.
|
||||
if (cancelSource.token.isCancellationRequested || cancelled || requestCanceled !== undefined) {
|
||||
if (cancelSource.token.isCancellationRequested || result === undefined || requestCanceled !== undefined) {
|
||||
const requestStatus: CallHierarchyRequestStatus = requestCanceled === CancellationSender.User ?
|
||||
CallHierarchyRequestStatus.CanceledByUser : CallHierarchyRequestStatus.Canceled;
|
||||
this.logTelemetry(CallHierarchyCallsToEvent, requestStatus, progressBarDuration);
|
||||
throw new vscode.CancellationError();
|
||||
} else if (response && response.calls.length !== 0) {
|
||||
result = this.createIncomingCalls(response.calls);
|
||||
}
|
||||
|
||||
this.logTelemetry(CallHierarchyCallsToEvent, CallHierarchyRequestStatus.Succeeded, progressBarDuration);
|
||||
return result;
|
||||
return result.length !== 0 ? result : undefined;
|
||||
}
|
||||
|
||||
public async provideCallHierarchyOutgoingCalls(item: vscode.CallHierarchyItem, token: vscode.CancellationToken): Promise<vscode.CallHierarchyOutgoingCall[] | undefined> {
|
||||
@@ -216,87 +318,15 @@ export class CallHierarchyProvider implements vscode.CallHierarchyProvider {
|
||||
|
||||
await this.client.ready;
|
||||
|
||||
let result: vscode.CallHierarchyOutgoingCall[] | undefined;
|
||||
const params: CallHierarchyParams = {
|
||||
textDocument: { uri: item.uri.toString() },
|
||||
position: Position.create(item.selectionRange.start.line, item.selectionRange.start.character)
|
||||
};
|
||||
let response: CallHierarchyCallsItemResult | undefined;
|
||||
let cancelled: boolean = false;
|
||||
try {
|
||||
response = await this.client.languageClient.sendRequest(CallHierarchyCallsFromRequest, params, token);
|
||||
} catch (e: any) {
|
||||
cancelled = e instanceof ResponseError && (e.code === RequestCancelled || e.code === ServerCancelled);
|
||||
if (!cancelled) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
if (token.isCancellationRequested || cancelled) {
|
||||
const result: vscode.CallHierarchyOutgoingCall[] | undefined =
|
||||
await sendCallHierarchyCallsFromRequest(this.client, item, token);
|
||||
if (token.isCancellationRequested || result === undefined) {
|
||||
this.logTelemetry(CallHierarchyCallsFromEvent, CallHierarchyRequestStatus.Canceled);
|
||||
throw new vscode.CancellationError();
|
||||
} else if (response && response.calls.length !== 0) {
|
||||
result = this.createOutgoingCalls(response.calls);
|
||||
}
|
||||
|
||||
this.logTelemetry(CallHierarchyCallsFromEvent, CallHierarchyRequestStatus.Succeeded);
|
||||
return result;
|
||||
}
|
||||
|
||||
private makeVscodeCallHierarchyItem(item: CallHierarchyItem): vscode.CallHierarchyItem {
|
||||
const containerDetail: string = (item.detail !== "") ? `${item.detail} - ` : "";
|
||||
const itemUri: vscode.Uri = vscode.Uri.file(item.file);
|
||||
|
||||
// Get file detail
|
||||
const isInWorkspace: boolean = this.client.RootUri !== undefined &&
|
||||
itemUri.fsPath.startsWith(this.client.RootUri?.fsPath);
|
||||
const dirPath: string = isInWorkspace ?
|
||||
path.relative(this.client.RootPath, path.dirname(item.file)) : path.dirname(item.file);
|
||||
const fileDetail: string = dirPath.length === 0 ?
|
||||
`${path.basename(item.file)}` : `${path.basename(item.file)} (${dirPath})`;
|
||||
|
||||
return new vscode.CallHierarchyItem(
|
||||
item.kind,
|
||||
item.name,
|
||||
containerDetail + fileDetail,
|
||||
itemUri,
|
||||
makeVscodeRange(item.range),
|
||||
makeVscodeRange(item.selectionRange));
|
||||
}
|
||||
|
||||
private createIncomingCalls(calls: CallHierarchyCallsItem[]): vscode.CallHierarchyIncomingCall[] {
|
||||
const result: vscode.CallHierarchyIncomingCall[] = [];
|
||||
|
||||
for (const call of calls) {
|
||||
const item: vscode.CallHierarchyItem = this.makeVscodeCallHierarchyItem(call.item);
|
||||
const ranges: vscode.Range[] = [];
|
||||
call.fromRanges.forEach(r => {
|
||||
ranges.push(makeVscodeRange(r));
|
||||
});
|
||||
|
||||
const incomingCall: vscode.CallHierarchyIncomingCall =
|
||||
new vscode.CallHierarchyIncomingCall(item, ranges);
|
||||
result.push(incomingCall);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private createOutgoingCalls(calls: CallHierarchyCallsItem[]): vscode.CallHierarchyOutgoingCall[] {
|
||||
const result: vscode.CallHierarchyOutgoingCall[] = [];
|
||||
|
||||
for (const call of calls) {
|
||||
const item: vscode.CallHierarchyItem = this.makeVscodeCallHierarchyItem(call.item);
|
||||
const ranges: vscode.Range[] = [];
|
||||
call.fromRanges.forEach(r => {
|
||||
ranges.push(makeVscodeRange(r));
|
||||
});
|
||||
|
||||
const outgoingCall: vscode.CallHierarchyOutgoingCall =
|
||||
new vscode.CallHierarchyOutgoingCall(item, ranges);
|
||||
result.push(outgoingCall);
|
||||
}
|
||||
|
||||
return result;
|
||||
return result.length !== 0 ? result : undefined;
|
||||
}
|
||||
|
||||
private logTelemetry(eventName: string, requestStatus: CallHierarchyRequestStatus, progressBarDuration?: number): void {
|
||||
|
||||
@@ -11,6 +11,50 @@ import { CancellationSender, ReferenceInfo, ReferenceType, ReferencesParams, Ref
|
||||
const FindAllReferencesRequest: RequestType<ReferencesParams, ReferencesResult, void> =
|
||||
new RequestType<ReferencesParams, ReferencesResult, void>('cpptools/findAllReferences');
|
||||
|
||||
export interface FindAllReferencesResult {
|
||||
referencesResult: ReferencesResult;
|
||||
locations: vscode.Location[];
|
||||
}
|
||||
|
||||
function convertConfirmedReferencesToLocations(referencesResult: ReferencesResult): vscode.Location[] {
|
||||
const locationsResult: vscode.Location[] = [];
|
||||
referencesResult.referenceInfos.forEach((referenceInfo: ReferenceInfo) => {
|
||||
if (referenceInfo.type === ReferenceType.Confirmed) {
|
||||
const uri: vscode.Uri = vscode.Uri.file(referenceInfo.file);
|
||||
const range: vscode.Range = new vscode.Range(referenceInfo.position.line, referenceInfo.position.character,
|
||||
referenceInfo.position.line, referenceInfo.position.character + referencesResult.text.length);
|
||||
locationsResult.push(new vscode.Location(uri, range));
|
||||
}
|
||||
});
|
||||
return locationsResult;
|
||||
}
|
||||
|
||||
export async function sendFindAllReferencesRequest(client: DefaultClient, uri: vscode.Uri, position: vscode.Position, token: vscode.CancellationToken): Promise<FindAllReferencesResult | undefined> {
|
||||
const params: ReferencesParams = {
|
||||
newName: "",
|
||||
position: Position.create(position.line, position.character),
|
||||
textDocument: { uri: uri.toString() }
|
||||
};
|
||||
let response: ReferencesResult;
|
||||
try {
|
||||
response = await client.languageClient.sendRequest(FindAllReferencesRequest, params, token);
|
||||
} catch (e: any) {
|
||||
if (e instanceof ResponseError && (e.code === RequestCancelled || e.code === ServerCancelled)) {
|
||||
return undefined;
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (token.isCancellationRequested || response.isCanceled) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return {
|
||||
referencesResult: response,
|
||||
locations: convertConfirmedReferencesToLocations(response)
|
||||
};
|
||||
}
|
||||
|
||||
export class FindAllReferencesProvider implements vscode.ReferenceProvider {
|
||||
private client: DefaultClient;
|
||||
|
||||
@@ -29,23 +73,10 @@ export class FindAllReferencesProvider implements vscode.ReferenceProvider {
|
||||
const requestCanceledListener: vscode.Disposable = workspaceReferences.onCancellationRequested(_sender => { cancelSource.cancel(); });
|
||||
|
||||
// Send the request to the language server.
|
||||
const locationsResult: vscode.Location[] = [];
|
||||
const params: ReferencesParams = {
|
||||
newName: "",
|
||||
position: Position.create(position.line, position.character),
|
||||
textDocument: { uri: document.uri.toString() }
|
||||
};
|
||||
let response: ReferencesResult | undefined;
|
||||
let cancelled: boolean = false;
|
||||
let result: FindAllReferencesResult | undefined;
|
||||
try {
|
||||
response = await this.client.languageClient.sendRequest(FindAllReferencesRequest, params, cancelSource.token);
|
||||
} catch (e: any) {
|
||||
cancelled = e instanceof ResponseError && (e.code === RequestCancelled || e.code === ServerCancelled);
|
||||
if (!cancelled) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
finally {
|
||||
result = await sendFindAllReferencesRequest(this.client, document.uri, position, cancelSource.token);
|
||||
} finally {
|
||||
// Reset anything that can be cleared before processing the result.
|
||||
workspaceReferences.resetProgressBar();
|
||||
cancellationTokenListener.dispose();
|
||||
@@ -53,30 +84,21 @@ export class FindAllReferencesProvider implements vscode.ReferenceProvider {
|
||||
}
|
||||
|
||||
// Process the result.
|
||||
if (cancelSource.token.isCancellationRequested || cancelled || (response && response.isCanceled)) {
|
||||
if (cancelSource.token.isCancellationRequested || !result) {
|
||||
// Return undefined instead of vscode.CancellationError to avoid the following error message from VS Code:
|
||||
// "Cannot destructure property 'range' of 'e.location' as it is undefined."
|
||||
// TODO: per issue https://github.com/microsoft/vscode/issues/169698
|
||||
// vscode.CancellationError is expected, so when VS Code fixes the error use vscode.CancellationError again.
|
||||
workspaceReferences.resetReferences();
|
||||
return undefined;
|
||||
} else if (response && response.referenceInfos.length > 0) {
|
||||
response.referenceInfos.forEach((referenceInfo: ReferenceInfo) => {
|
||||
if (referenceInfo.type === ReferenceType.Confirmed) {
|
||||
const uri: vscode.Uri = vscode.Uri.file(referenceInfo.file);
|
||||
const range: vscode.Range = new vscode.Range(referenceInfo.position.line, referenceInfo.position.character,
|
||||
referenceInfo.position.line, referenceInfo.position.character + response.text.length);
|
||||
locationsResult.push(new vscode.Location(uri, range));
|
||||
}
|
||||
});
|
||||
|
||||
} else if (result.referencesResult.referenceInfos.length > 0) {
|
||||
// Display other reference types in panel or channel view.
|
||||
// Note: ReferencesManager.resetReferences is called in ReferencesManager.showResultsInPanelView
|
||||
workspaceReferences.showResultsInPanelView(response);
|
||||
workspaceReferences.showResultsInPanelView(result.referencesResult);
|
||||
} else {
|
||||
workspaceReferences.resetReferences();
|
||||
}
|
||||
|
||||
return locationsResult;
|
||||
return result.locations;
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user