Compare commits

...
Author SHA1 Message Date
Andoni Morales Alastruey 62614d8fa8 Bump lldb-mi commit hash
Fix #6874
2023-11-06 10:04:33 -08:00
Bob Brown fecfc08451 update changelog (#11532) 2023-10-16 11:30:46 -07:00
Sean McManus 62a03c2b21 Update changelog (2nd time) (#11527)
* Update changelog (2nd time).
2023-10-12 17:12:41 -07:00
Sean McManus 7273d6112b Update changelog for 1.18.0 (#11521) 2023-10-12 14:37:41 -07:00
Michelle Matias 74bddb82e5 Reuse workflow for CI builds (#11503) 2023-10-11 18:40:01 -07:00
Sean McManus 4af6ca9db0 Extract to function (#11467)
* Extract to function.
2023-10-11 17:27:36 -07:00
Michelle Matias 7e4ee25c48 remove CreateDeclDefnCommandArguments (#11517) 2023-10-10 12:31:23 -07:00
Sean McManus 6da9a49652 Updates for clang-tidy 17.0.1 (#11491) 2023-10-10 12:09:32 -07:00
Michelle Matias 51d88dbb24 Increase timeout for E2E tests (#11516) 2023-10-09 16:12:47 -07:00
Michelle Matias cd8ecf9060 Handle undefined environment variable (#11480) 2023-10-06 11:50:26 -07:00
Sean McManus 847ea0b73c Fix prepublish. (#11469) 2023-09-29 17:41:31 -07:00
Michelle Matias 68c7be9d9e Fix loading UI (#11486) 2023-09-29 13:06:38 -07:00
Michelle Matias 1bde544458 Add Include Header setting for refactoring actions (#11449) 2023-09-27 10:51:53 -07:00
Sean McManus f62cad6a2f Fix Initializing in the status bar instead of Indexing. (#11471) 2023-09-26 16:37:57 -07:00
Garrett Serack eec372a186 force module to node16 for ts-node (#11468) 2023-09-26 11:40:51 -07:00
Michelle Matias b98bb40a89 Update language server loc strings (#11445) 2023-09-25 17:29:54 -07:00
Colen Garoutte-Carson 4d1a2a0e90 Change how logging level is passed to native process (#11438) 2023-09-18 13:57:25 -07:00
Michelle Matias dec50598bc Remove obsolete experimental configuration code (#11427) 2023-09-14 17:12:03 -07:00
browntarik c5c64ad831 Update localized intellisense crash string (#11356)
* update localized intellisense crash string

* resolve string

* update hint

* resolve loc string

* resolve string locs

* resolve spelling error
2023-09-13 14:45:35 -07:00
Bob Brown 27153190e2 Compiler acquisition (#11286) 2023-09-13 11:54:29 -07:00
Sean McManus 2cc55ea6eb Add keyboard support for Inline Macro. (#11261)
* Add keyboard support for Inline Macro.
* Enable inline macro without hover.
* Standardize localize string naming.
* Fix spelling errors involving strings types.
2023-09-11 09:56:16 -07:00
Garrett Serack 121a657acb make translations export work correctly in CI (#11415) 2023-09-08 07:53:49 -07:00
dependabot[bot] 6a54986b3f Bump mongodb from 4.8.1 to 4.17.0 in /.github/actions (#11413)
Bumps [mongodb](https://github.com/mongodb/node-mongodb-native) from 4.8.1 to 4.17.0.
- [Release notes](https://github.com/mongodb/node-mongodb-native/releases)
- [Changelog](https://github.com/mongodb/node-mongodb-native/blob/v4.17.0/HISTORY.md)
- [Commits](https://github.com/mongodb/node-mongodb-native/compare/v4.8.1...v4.17.0)

---
updated-dependencies:
- dependency-name: mongodb
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-07 09:52:11 -07:00
Garrett Serack b4a70dfc0a Make yarn tasks imply yarn install where appropriate (#11394)
* made sure that yarn install gets called before compile

* Add some nice messages

* better detection

* cleaned up more

* more tweaks

* remove old checks

* let unit tests run without binaries

* turn off scenario tests until binaries can be installed

* add another rule
2023-09-06 07:47:36 -07:00
browntarik efa5c2244b Rework Database Storage Path Logic (#11309)
* Fix typo (#11275)

* rework database logic

* resolve PR

* fix lint issues

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* update names

* resolve PR

* resolve PR

* fix lint error

* resolve PR

* resolve PR
2023-09-05 13:35:11 -07:00
Sean McManus 4199155228 Update TPN. (#11393) 2023-08-31 12:56:15 -07:00
Garrett Serack d949d93924 Apply strict eslint rule (#11389) 2023-08-31 09:26:55 -07:00
Marcin Strzyz 44e2a0ec4c added enforcement of no array constructor. (#11385) 2023-08-30 13:12:41 -07:00
Marcin Strzyz 0cd369c603 Incremental. (#11383) 2023-08-30 13:04:01 -07:00
Marcin Strzyz 76fce67276 Added typing guards. (#11382) 2023-08-29 18:05:33 -07:00
Marcin Strzyz f3e0f0bb05 Added enforcement. (#11381) 2023-08-29 16:54:14 -07:00
Garrett Serack 628301be37 Test restructuring and cleanup (#11262)
* updated files

* queue and ready are now separate

* checkpoint

* found it! fixed missing call

* cleaned up and refactored a bit

* cleanup

* whoops. make sure linter runs!

* Make the queue itself static

* addressed formatting issues, added more rules to eslint

* more formatting, made ready Promise/void

* checkpoint

* checkpoint

* checkpoint

* checkpoint (linting)

* checkpoint

* checkpoint

* checkpoint

* checkpoint

* renamed path to filepath.

* checkpoint

* checkpoint

* so close...

* checkpoint again

* before making doc

* checkpoint

* checkpoint

* Checkpoint

* renamed awaiters

* eslint

* fix format on generated native strings

* add dummy pretest task back in for the moment

* change unit test runing

* posix calc test failure

* make signal dispose better

* add 	est regen script

* missed file

* checkpoint

* Improve scripts a bit

* remove hooks for now

* remove unused script

* remove unused script

* filter out files

* ensure that eslint works for scripts too

* fix build oses to specific version

* cleanups and tweaking

* adjusted for cosmetic feedback

* more

* add eslint rule to fix space before/after semicolon

* remove tba/tbd

* cleanup

* Added space-infix-ops rule

* cleanup

* resolve comments

* resolve comments

* add simple debug task

* spelling fixes

* cleanup more

* More changes. yay

* remove the extra whitespace from before comments

* add eslint rule to ensure that there are never extra spaces

* adding another eslint rule to ensure that there isn't spacing around unary operators, which we all know is dangerous. Or weird. I forget which

* added a space between vs and code because a space is the desired format

* removed all mentions of transpiler which was removed

* removed an extra comma

* removed a trailing slash

* removed useless lines

* missed as file

* reconfigure no-extra-parens rule

* added note about yarn install

* whatever

* more fun

* FIx it so that it webpacks correctly

* remove refernces to attic

* restore line to correct check

* fix whitespace

* added blank yarn install

* removed
2023-08-29 16:08:07 -07:00
browntarik 6efaafef60 place markdownInComments setting under code doc (#11380) 2023-08-29 14:53:18 -07:00
Michelle Matias f387815749 Fix tag parse language status item UI (#11354) 2023-08-25 15:50:03 -07:00
Michelle Matias c873aa18bd 1.17.5 changelog (#11363) 2023-08-25 13:50:14 -07:00
Colen Garoutte-Carson 78a8ff3bb3 Disable AutoPCH early on platforms that don't support it (#11362) 2023-08-24 18:29:52 -07:00
Michelle Matias 3033657a19 Reset FAR UI if no results returned (#11359) 2023-08-23 18:03:44 -07:00
Sean McManus ac118f453b Fix formatting for IntelliSense loc strings. (#11348)
* Fix formatting for loc strings.
2023-08-22 15:04:23 -07:00
Sean McManus 9e10a71ffb Update changelog and version for 1.17.4 (#11340)
* Update changelog and version for 1.17.4
* Add a missed entry.
2023-08-21 11:08:15 -07:00
Sean McManus 4525bd0ed5 Fix crash called by missing IntelliSense loc strings. (#11339) 2023-08-21 10:40:35 -07:00
Garrett Serack 89d0a7a01f Enqueue the call to sendDidOpen (#11337)
* enqueue the call to sendDidOpen
2023-08-21 10:32:47 -07:00
Colen Garoutte-Carson 27cd52a1b9 Replace use of yauzl with node-stream-zip (#11304) 2023-08-17 18:42:56 -07:00
Colen Garoutte-Carson e020a75bb7 Merge branch 'release' into main 2023-08-16 17:55:19 -07:00
Colen Garoutte-Carson c8a7776222 Update version and changelog for 1.17.3 (#11330) 2023-08-16 17:50:39 -07:00
Bob Brown 3934ef89ea Fix bug introduced by #11175 (#11329) 2023-08-16 16:46:17 -07:00
Michelle Matias d60499f793 Merge pull request #11319 from microsoft/mimatias/r-17
1.17.2 release merge
2023-08-14 12:54:16 -07:00
Michelle Matias 9b359ff73b Merge branch 'main' into mimatias/r-17 2023-08-14 12:45:28 -07:00
Michelle Matias fc9c45c34f 1.17.2 changelog (#11317) 2023-08-14 12:23:09 -07:00
Bob Brown 212fff2828 log machine id mappings for VS to VS Code (#11308)
* log machine id mappings for VS to VS Code

* update comment

* in case execChildProcess throws
2023-08-11 16:13:33 -07:00
browntarik 44e3bbe773 Update Changelog (#11302) 2023-08-08 17:35:02 -07:00
Bob Brown 90f922d651 default to c++14 on mac for build and run active file (#11300) 2023-08-08 14:52:42 -07:00
Colen Garoutte-Carson 408051429d Fix issue with currently selected compiler being listed last in task list (#11299) 2023-08-07 16:28:58 -07:00
Bob Brown ae904ec330 Fix the build getting stuck when /link /out: is used to specify the program name (#11281)
* Also make sure the mkdir command works
2023-08-03 13:13:03 -07:00
[email protected] 3bde088a06 [Auto] Localization - Translated Strings (#11118) 2023-08-03 12:08:50 -07:00
browntarik 9d28ba1e06 Prevent vcpkg code action from appearing in all unrelated code action menus (#11280)
* prevent vcpkg code action from appearing

* resolve PR

* resolve PR
2023-08-02 14:11:42 -07:00
melody 514e60863d Fix typo (#11275) 2023-08-01 15:05:50 -07:00
Michelle Matias 98af6a4888 Show relative path for call hierarchy item if available (#11265) 2023-07-31 18:00:59 -07:00
Michelle Matias b740f603ec Use selectionRange for call hierarchy request input (#11264) 2023-07-31 17:12:19 -07:00
Sean McManus 6b2099471d Clean up the command palette. (#11259)
* Clean up the command palette.
2023-07-28 14:45:31 -07:00
Sean McManus c76105e28e Add vscode.d.ts to .eslintignore. (#11258)
* Add vscode.d.ts to .eslintignore.
2023-07-28 09:03:18 -07:00
Michelle Matias 70ff2a296a Update compilerPath if c_cpp_properties.json exists (#11257) 2023-07-27 12:51:31 -07:00
Michelle Matias c3e3bd306f "Select IntelliSense Configuration" updates compilerPath in c_cpp_properties.json (#11255) 2023-07-27 11:40:04 -07:00
Sean McManus 4f805c4263 Update changelog (again) for 1.17.0 (#11251)
* Update changelog.
2023-07-26 16:26:40 -07:00
Michał Mąka a7870fc1b2 Added support for Toybox to remote process picker (#11175)
* Added separate remote process command for ToyBox
2023-07-26 16:08:07 -07:00
Michelle Matias d48fd4343b fix merge (#11249) 2023-07-26 14:11:18 -07:00
Michelle Matias 9ce7b5a87c update change log (#11240) 2023-07-24 16:35:29 -07:00
Michelle Matias 460aee5971 'Create Declaration / Definition' command via 'Quick Fix...' hover (#11239) 2023-07-24 15:49:19 -07:00
Sean McManus 0e309a7e7f Fix config provider ordering. (#11237) 2023-07-24 11:48:18 -07:00
Sean McManus 27f9fafc73 Fix console logging. (#11233) 2023-07-24 10:38:26 -07:00
Sean McManus 72ea4d5eb9 Update ThirdPartyNotices.txt. (#11232) 2023-07-21 13:52:52 -07:00
Michelle Matias 3c63457e38 changelog 17 (#11227) 2023-07-21 13:19:32 -07:00
Garrett Serack 477eb06f2b Fix out-of-order message handling (#11212) 2023-07-21 12:44:14 -07:00
dependabot[bot] 62b27eadce Bump word-wrap from 1.2.3 to 1.2.4 in /.github/actions (#11213) 2023-07-18 15:25:09 -07:00
browntarik 668499169e Add Setting to Enable Markdown Comment Formatting (#11177)
* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR
2023-07-18 14:34:25 -07:00
Bob Brown 2133b871be Remove walkthrough experiment and update the Help links to point to it (#11191) 2023-07-18 15:46:52 +00:00
Bob Brown d6370f3dcf compliance: update dependencies to remove usage of fsevents 1.2.7 (#11206) 2023-07-17 12:54:43 -07:00
Sean McManus 4589c6a731 Update IntelliSense loc strings. (#11193) 2023-07-14 15:50:57 -07:00
Sean McManus c4ea718dd5 Update ThirdPartyNotices.txt again. (#11184) 2023-07-11 17:58:15 -07:00
dependabot[bot] f26308c09f Bump semver from 5.7.1 to 5.7.2 in /.github/actions (#11183) 2023-07-11 16:44:36 -07:00
Sean McManus 420b479896 Update package.json/yarn.lock (#11181)
* Update yarn.lock.
* Clean up old/unneeded resolutions.
2023-07-11 16:34:49 -07:00
Colen Garoutte-Carson 2dfbeb16b2 Add license for SoftFloat to ThirdPartyNotices.txt (#11168) 2023-07-07 11:24:36 -07:00
Sean McManus f293e59478 Update IntelliSense loc strings. (#11166) 2023-07-06 18:55:15 -07:00
browntarik b747b98cde resolve paths with /, /*, /** and \\** (#11136)
* resolve paths with '/', '/*', '/**' and '\\**'

* resolve multiple path parsing

* create generalized approach for wildcard support

* Add windows conditional for backslashes

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve variables for globs

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR
2023-07-06 16:25:22 -07:00
Sean McManus 094596961a Update ThirdPartyNotices.txt (#11144) 2023-06-30 11:38:36 -07:00
Garrett Serack 503f95b085 Modernize packages, code patterns (#11085)
Modernize packages, code patterns
2023-06-29 13:18:48 -07:00
3612c02d07 Add wildcard support for includeDir (#10388)
For example, using the following tree:

  rootUri
  - sources
    - main
      - main.c
    - vendor
      - khash.h
  - headers
    - C001
      - a.h
    - C002
      - b.h

The following directory paths works:

- `sources/**`  for plain old recursive path
- `headers/C*/` dynamic path
- `missing/`    reported as "not found"
- `missing/*`   expanded as empty result (silent fail)

Note: bakslash paths need to be slash-converted to avoid be considered as "Dynamic"

Co-authored-by: Sean McManus <[email protected]>
Co-authored-by: browntarik <[email protected]>
2023-06-27 09:53:35 -07:00
Michelle Matias 93cc277311 Merge pull request #11126 from microsoft/mimatias/patch
1.16.3 changelog (#11125)
2023-06-23 17:07:38 -07:00
Michelle Matias 9d84cad54b 1.16.3 changelog (#11125) 2023-06-23 17:03:09 -07:00
Michelle Matias ddbc92a990 1.16.3 changelog (#11125) 2023-06-23 16:55:56 -07:00
Colen Garoutte-Carson ce587c6f06 Fix possible race condition that could lead to multiple didOpen's (#11120) 2023-06-22 19:26:13 -07:00
Michelle Matias 82671ea293 Merge pull request #11114 from microsoft/mimatias/1_16 2023-06-21 15:21:22 -07:00
Michelle Matias 605015c8af Merge branch 'main' into mimatias/1_16 2023-06-21 15:07:50 -07:00
Michelle Matias baa93534f0 update log (#11115) 2023-06-21 15:05:31 -07:00
Michelle Matias e5f74bc638 Merge branch 'main' into mimatias/1_16 2023-06-21 13:31:08 -07:00
[email protected] 68777f9873 [Auto] Localization - Translated Strings (#10992) 2023-06-21 13:28:59 -07:00
browntarik 4037db9783 remove extra adjustments to textEdit for CDD (#11110)
* remove extra adjustments to textEdit

* combine conditionals
2023-06-21 12:23:02 -07:00
Michelle Matias 67565fe0a7 Merge branch 'main' into mimatias/1_16 2023-06-21 11:02:35 -07:00
Michelle Matias a67c6610a7 1.16.2 changelog (#11111) 2023-06-21 10:57:55 -07:00
browntarik 4f5ec73173 Add configuration telemetry (#11093) 2023-06-19 16:44:44 -07:00
Bob Brown 79f4e8ded0 Update LICENSE.md (#11102) 2023-06-16 12:05:56 -07:00
Michelle Matias 7544de0b47 1.16.1 changelog (#11094) 2023-06-15 17:34:45 -07:00
Michelle Matias 491456e8de Fix references cancellation and preview (#11056) 2023-06-15 17:02:46 -07:00
Caio Hamamura 5b51db1999 configurationProvider.ts: default cppvsdbg integratedTerminal (#11035) 2023-06-15 16:41:32 -07:00
Chang-Yen Tseng 46eaddc411 include miDebuggerArgs in attach option (#11066) 2023-06-15 16:35:31 -07:00
Michelle Matias 71c6cb6c6c add file path to call hierarchy details (#11095) 2023-06-15 15:04:44 -07:00
Colen Garoutte-Carson 0452f0aad9 Remove line preventing Don't Show Again (#11076) 2023-06-12 14:54:29 -07:00
Sean McManus 478ccb6abd Update vscode/dts (#11047)
* Update vscode/dts
2023-06-05 15:40:29 -07:00
browntarik 7504532e58 Removed LanguageStatus experiment code and merged ui.ts and ui_new.ts (#11030)
* merge ui and ui_new, finsih status experiment

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR
2023-06-02 05:56:18 -07:00
Sean McManus 9621430533 Make sure empty non-enum string settings are equivalent to undefined. (#11031)
* Make sure empty non-enum string settings are equivalent to undefined.
* Check for null. Remove null default for "string" setting.
2023-05-31 17:42:33 -07:00
Sean McManus 3ef10f294e Stop using vcFormat for non-formatting editorconfig settings. (#11015) 2023-05-31 13:57:31 -07:00
Sean McManus e394edb630 Fix Other References not getting cleared for Call Hierarchy. (#10989) 2023-05-22 17:53:00 -07:00
Alex Hsu e65e602bab [Auto] Localization - Translated Strings (#10889) 2023-05-22 12:59:30 -07:00
Michelle Matias 65ec5abb72 Changelog 1.16.0 (#10973) 2023-05-19 15:25:36 -07:00
Sean McManus fc909f88ba Fix incorrect workspace parsing status. (#10974) 2023-05-19 15:03:01 -07:00
Sean McManus c22d13af30 Fix addTrustedCompiler. (#10961)
* Fix addTrustedCompiler.
* Fix build tasks not updating after a compilerPath change.
2023-05-19 11:46:54 -07:00
Michelle Matias 290a53e934 call hierarchy telemetry (#10971) 2023-05-19 09:40:05 -07:00
Colen Garoutte-Carson 4b20f32c39 Support server-side cancellation/error in CDD (#10966) 2023-05-18 12:43:12 -07:00
Michelle Matias 5ce976f322 Call hierarchy incoming calls fix return (#10962) 2023-05-17 12:40:54 -07:00
Sean McManus 352e0bf2ff Update IntelliSense strings loc (#10950)
* Update IntelliSense loc strings.
* Update msvc versions.
2023-05-15 14:24:53 -07:00
browntarik 684404f29c Add copy to clipboard support for CDD (#10835)
* Add copy to clipboard support for CDD

* Fix lint issues

* latest changes

* refactor PR

* add localization

* rename variables

* remove copy CDD from package.json

* resolve PR

* resolve PR

* resolve PR

* resolve json

* resolve PR

* resolve PR

* refactor error handling

* resolve PR

* resolve PR

* resolve PR

* remove awaits

* remove more awaits

* resolve PR
2023-05-12 14:42:53 -07:00
Michelle Matias 478fb3c245 Call Hierarchy Callers Of - add progress and cancellation (#10936) 2023-05-12 14:27:34 -07:00
Colen Garoutte-Carson c3cfd55762 Add server-originated notification to cancel reference (#10929) 2023-05-09 14:27:31 -07:00
Colen Garoutte-Carson b2d989f85f Always add workspaceFolder to browse.path if unset (#10916)
* Fix skipped tag parse with empty compiler path
* Always add workspaceFolder to browse path if unset
2023-05-04 15:46:49 -07:00
Sean McManus bb3d290d6b Fix C/C++ Configurations loc. (#10908) 2023-05-04 13:57:46 -07:00
Sean McManus 33bdb7f425 Fix code analysis command strings. (#10906) 2023-05-01 14:35:38 -07:00
Sean McManus 0c9d89787c Remove a fix. (#10903) 2023-04-28 18:20:34 -07:00
Sean McManus 94c12812e0 Fix some spelling errors and formatting. (#10901)
* Fix some spelling errors and formatting.
* Fix loc comments.
2023-04-28 14:07:52 -07:00
Michelle Matias 3144d82fb4 Call hierarchy feature (#10697) 2023-04-27 19:34:54 -07:00
Sean McManus dc7651af75 Merge pull request #10898 from microsoft/seanmcm/1_15_4_release
Merge for 1.15.4
2023-04-27 15:27:40 -07:00
Sean McManus 9215fbe9b0 Merge branch 'main' into seanmcm/1_15_4_release 2023-04-27 14:29:27 -07:00
Sean McManus 5a56dfc749 Update changelog for 1.15.4. (#10896)
* Update changelog for 1.15.4.
2023-04-27 14:25:07 -07:00
Sean McManus bddb1ba342 Fix the configurationselection telemetry for the prompt sender. (#10895)
* Fix the configurationselection telemetry for the prompt sender.
2023-04-27 11:45:59 -07:00
Sean McManus cafce7c050 Prevent the status bar from flickering when switching docs. (#10888)
* Prevent the status bar from flickering when switching docs.
2023-04-26 09:48:40 -07:00
Sean McManus 324cd1bd59 Fix status bar UI for user settings.json. (#10887) 2023-04-25 17:46:04 -07:00
Sean McManus ad5fe867c5 Fix custom browse config not getting cleared. (#10886) 2023-04-25 17:24:37 -07:00
Sean McManus cc862b039e Fix status UI state after pause/cancel of code analysis. (#10885) 2023-04-25 14:22:39 -07:00
Michelle Matias 446eb16e7a Fix localization IDs (#10873) 2023-04-25 14:04:02 -07:00
Alex Hsu e09702e5dc [Auto] Localization - Translated Strings (#10767) 2023-04-25 13:38:34 -07:00
Sean McManus 48000bdbda Fix status bar buttons missing for settings.json in C++ projects (#10876)
* Fix status bar for C++ settings.json.
2023-04-25 11:57:13 -07:00
Sean McManus f8b8e094f9 Fix initial code analysis status loc. (#10883) 2023-04-25 11:35:36 -07:00
Sean McManus 5780e18487 Fix a couple Configure IntelliSense bugs with config providers (#10861)
* Fix a couple more Configure IntelliSense bugs.
2023-04-21 18:58:10 -07:00
Michelle Matias 3c6f603aea remove old loc (#10857) 2023-04-21 17:15:33 -07:00
Sean McManus 35ab3eb26d Add Configure IntelliSense tooltip (#10858)
* Add Configure IntelliSense tooltip.
2023-04-21 16:51:00 -07:00
Sean McManus 302f4226cf Fix configuration status not appearing. (#10852)
* Fix configuration status not appearing.
* Update changelog date.
2023-04-21 14:13:44 -07:00
Sean McManus 13893fbfb2 Update the package.json version. (#10845) 2023-04-20 18:31:47 -07:00
Sean McManus d603786a13 Set user scope compiler path if no trusted compiler is set. (#10844)
* Set user scope compiler path if no trusted compiler is set.
* Fix missing await.
* Add "@typescript-eslint/no-misused-promises" linter rule.
2023-04-20 18:29:20 -07:00
Sean McManus 407342f482 Add collapsing to an icon. Fix a major bug. (#10838)
* Add collapsing to an icon. Fix a major bug.
2023-04-18 19:02:21 -07:00
Sean McManus 5c8b812075 Various fixes related to my previous PRs. (#10836)
* Various fixes related to my previous PRs.
2023-04-18 14:33:18 -07:00
Sean McManus 2a2d928075 Fix configure IntelliSense UI bugs with non-C/C++ files (and other small fixes) (#10829)
* Fix configure IntelliSense UI bugs with non-C/C++ files.
* Fix "Configure IntelliSense" not going away until reload window.
* Move location to the left of the config.
* Refactor isCpp
2023-04-17 17:28:18 -07:00
Sean McManus e160229500 Fix bug with Configure IntelliSense appearing when it shouldn't. (#10826) 2023-04-14 16:53:16 -07:00
Sean McManus 60cfb9998d Fix undefined reference of trustedCompilerFound. (#10824) 2023-04-13 17:15:40 -07:00
Sean McManus 6ec8c14a98 Revert previous incorrect changes. Remove pevents. (#10823) 2023-04-13 13:44:51 -07:00
Sean McManus a395b8492a Merge pull request #10821 from microsoft/seanmcm/1_15_3_preliminary
Preliminary merge for 1.15.3
2023-04-13 11:21:55 -07:00
Sean McManus 17e337c874 Merge branch 'main' into seanmcm/1_15_3_preliminary 2023-04-13 10:35:11 -07:00
Bob Brown 7b3ac0a22e Don't put the compiler selection in the global settings if using the configure IntelliSense command (#10814) 2023-04-12 17:29:42 -07:00
Colen Garoutte-Carson 04b0be0452 Revert walkthrough doc links until walkthrough is published (#10812) 2023-04-12 15:26:50 -07:00
Bob Brown (DEVDIV) b0e7500bcb Update third party notices 2023-04-12 10:36:10 -07:00
Sean McManus 296bee8000 Switch to Select IntelliSense Configuration (#10771)
* Switch to Select IntelliSense Configuration
* Update version and changelog for 1.15.2
2023-04-12 03:24:27 -07:00
Colen Garoutte-Carson ec4977971e Add sender to walkthrough commands (#10809) 2023-04-11 17:39:13 -07:00
Colen Garoutte-Carsonandbrowntarik 71684e0f90 Update github actions to use nodejs 16 (#10443)
* Update github actions to use nodejs 16

* Upgrade GabrielBB/xvfb-action from 1.4 to 1.6

---------

Co-authored-by: browntarik <[email protected]>
2023-04-11 15:30:27 -07:00
Colen Garoutte-Carson 7a99678e6f Disable Walkthrough when clause by default (#10802) 2023-04-11 15:19:54 -07:00
Colen Garoutte-Carson 8bf5d6e9aa Address some issues where spread operator was used but deep copy needed (#10803) 2023-04-11 15:12:42 -07:00
Sean McManus 6fbf4df21d Fix xml2js (#10806) 2023-04-11 15:06:05 -07:00
dependabot[bot]andSean McManus 5cc9930813 Bump xml2js, applicationinsights and @azure/storage-blob (#10805)
Bumps [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js) to 0.5.0 and updates ancestor dependencies [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js), [applicationinsights](https://github.com/microsoft/ApplicationInsights-node.js) and [@azure/storage-blob](https://github.com/Azure/azure-sdk-for-js). These dependencies need to be updated together.


Updates `xml2js` from 0.4.23 to 0.5.0
- [Release notes](https://github.com/Leonidas-from-XIV/node-xml2js/releases)
- [Commits](https://github.com/Leonidas-from-XIV/node-xml2js/commits/0.5.0)

Updates `applicationinsights` from 2.3.1 to 2.5.1
- [Release notes](https://github.com/microsoft/ApplicationInsights-node.js/releases)
- [Commits](https://github.com/microsoft/ApplicationInsights-node.js/compare/2.3.1...2.5.1)

Updates `@azure/storage-blob` from 12.11.0 to 12.13.0
- [Release notes](https://github.com/Azure/azure-sdk-for-js/releases)
- [Changelog](https://github.com/Azure/azure-sdk-for-js/blob/main/documentation/Changelog-for-next-generation.md)
- [Commits](https://github.com/Azure/azure-sdk-for-js/compare/@azure/storage-blob_12.11.0...@azure/storage-blob_12.13.0)

---
updated-dependencies:
- dependency-name: xml2js
  dependency-type: indirect
- dependency-name: applicationinsights
  dependency-type: direct:production
- dependency-name: "@azure/storage-blob"
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sean McManus <[email protected]>
2023-04-11 14:38:56 -07:00
Sean McManus 5aa8b56cb7 Fix change "eg." to "e.g.". (#10804) 2023-04-11 14:22:48 -07:00
Colen Garoutte-Carson 4dfb2a39a6 Fixes to walkthrough MD files (#10799) 2023-04-10 16:52:21 -07:00
dependabot[bot] cc11b68e20 Bump xml2js from 0.4.23 to 0.5.0 in /Extension (#10798)
Bumps [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js) from 0.4.23 to 0.5.0.
- [Release notes](https://github.com/Leonidas-from-XIV/node-xml2js/releases)
- [Commits](https://github.com/Leonidas-from-XIV/node-xml2js/commits/0.5.0)

---
updated-dependencies:
- dependency-name: xml2js
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-10 15:17:07 -07:00
Colen Garoutte-Carson 5e327771ef Fix regression that resulted in compilerPath shown in settings UI (#10797) 2023-04-10 14:50:49 -07:00
Bob Brown 0ec40d9000 Update walkthrough (#10707) 2023-04-07 17:35:09 -07:00
browntarik dbfa0c5ed5 Add call to resolveVariables (#10787) 2023-04-07 17:07:56 -07:00
Colen Garoutte-Carson 9b20549cef Prefix all cpptools-specific context vars (#10780) 2023-04-07 13:17:31 -07:00
Colen Garoutte-Carson ce2fcf0c62 Ensure configs are reprocessed after every call to parsePropertiesFile (#10774) 2023-04-05 16:36:57 -07:00
Colen Garoutte-Carson 605c8032f8 Fix auto provider detection (#10772) 2023-04-05 16:02:14 -07:00
Sean McManus bfdcba4449 Fix ui undefined reference. (#10770) 2023-04-05 11:43:44 -07:00
browntarik fc9209f55a Revert to StatusBarItem for select configuration (#10769) 2023-04-04 18:14:03 -07:00
browntarik 5a337901a6 Remove compiler status when configProver/compile_commands is updated (#10753)
* change description for natvisDiagnostics

* add timer to allow for configprovider to configure

* resolve PR

* add sender logic again

* readd logic

* resolve PR

* resolve PR

* hide compiler status

* resolve PR

* resolve PR

* remove timer, check configProvider

* resolve PR
2023-04-04 15:29:32 -07:00
Luca Boccassi 6cabb390fd remote attach: use absolute /bin/sh path on Linux (#10765)
When using machinectl as a transport to connect the debugger to
a nspawn container, we need to pass full paths when running commands,
as that's what machinectl expects. Use /bin/sh when running on Linux.
This allows connecting VSCode to nspawn containers.

https://www.freedesktop.org/software/systemd/man/machinectl.html
https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html
2023-04-04 10:33:49 -07:00
Alex Hsu 4efc47f955 [Auto] Localization - Translated Strings (#10521) 2023-03-31 16:16:20 -07:00
Bob Brown 8334b15f4e Further consolidate experiment logic (#10758) 2023-03-29 12:32:26 -07:00
Sean McManus 84343d04d3 Set a default cwd for cppbuild tasks. (#10747) 2023-03-28 18:58:11 -07:00
Sean McManus e2c0f014dd Prevent launching lots of IntelliSense processes from find/replace. (#10748)
* Prevent launching lots of IntelliSense processes from find/replace.
2023-03-28 18:57:42 -07:00
Sean McManus e2bddc1901 Update for clang-tidy 16. (#10737) 2023-03-24 15:15:01 -07:00
browntarik c417da6ed4 Add "Configure Intellisense" Status Bar Item (#10690)
* change description for natvisDiagnostics

* Add "Configure Intellisense" Status Bar Item

* resolve PR
2023-03-23 17:22:36 -07:00
Colen Garoutte-Carson 2ad0a95bd4 Fix issue with cached browse config not being removed (#10735) 2023-03-23 15:44:14 -07:00
Sean McManus e5b80da312 Fix IntelliSense casing. (#10730) 2023-03-22 11:43:35 -07:00
Sean McManus 10125dfb08 Update changelog for 1.15.1, 2nd time. (#10726) 2023-03-22 08:06:48 -07:00
Michelle Matias 6f4403cf05 1.14.5 patch (#10724) 2023-03-22 02:51:27 -07:00
Sean McManus 3b7755a4d2 Updates for the multirootDeadlock test. (#10723)
* Updates for the multirootDeadlock test.
2023-03-21 18:48:33 -07:00
Bob Brown f0bef8dca6 Refactor experiment variable (#10717)
* Refactor experiment variable

* address feedback.

* fix lint
2023-03-21 18:35:46 -07:00
Sean McManus fec8a4e07f Update changelog for 1.15.1. (#10708) 2023-03-21 09:30:29 -07:00
dependabot[bot] e201d7905e Bump webpack from 5.75.0 to 5.76.0 in /Extension (#10683)
Bumps [webpack](https://github.com/webpack/webpack) from 5.75.0 to 5.76.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.75.0...v5.76.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-15 10:10:19 -07:00
Sean McManus 32b9947b57 Don't show the 'select a compiler' code action if the default compiler is already set (and other quick fixes) (#10670)
* Stop showing the code action if the default compiler is already set.
* Multiple other fixes.
* Fix clang-tidy 'clang-analyzer-' documentation links not working.
2023-03-14 18:07:33 -07:00
browntarik 7b03e025a7 update descrition for clangtidy.runAutomatically (#10676)
* change description for natvisDiagnostics

* update description for clangtidy.runAutomatically

* resolve description
2023-03-14 14:59:09 -07:00
Sean McManus a81c4645c0 Fix a couple clang-tidy checks. (#10668)
* Fix a couple clang-tidy checks.
* Update changelog.
2023-03-13 18:57:13 -07:00
Sean McManus 675720d466 Fix random failures when adding or removing workspace folders (#10665)
* Fix random failures when adding/removing workspace folders.
* Update changelog.
2023-03-13 15:44:12 -07:00
Sean McManus 646d9cfd6a Fix bugs with the "You do not have IntelliSense configured" prompt. (#10660)
* Fix bugs with the "You do not have IntelliSense configured" prompt.
* Update changelog.
2023-03-13 11:57:07 -07:00
Sean McManus d1e7326f4d Fix Select Default Compiler command. (#10657) 2023-03-10 16:13:00 -08:00
Sean McManus 0fd0adad84 1.15.0 changelog (#10652)
* Update changelog for 1.15.0.
2023-03-10 13:12:37 -08:00
gc46 aef2fa974e Support multiple natvis files in visualizerFile (#10487)
* Support multiple Natvis files for Cppdbg Launch
2023-03-09 16:37:59 -08:00
browntarik 001b3a5721 Add an additional message to the #include error and also add a code action (fixit) for the squiggle to run the "Select Default Compiler" command. (#10574)
* change description for natvisDiagnostics

* add telemetry for compiler notification and #

* update event name

* telemetry if user browsed to configure compiler

* resolve PR

* refactor to add try/catch logic

* resolve PR

* resolve PR

* change wording

* resolve PR

* add localized strings

* resolve casing

* fix german translation

* resolve loc

* resolve PR
2023-03-06 12:51:15 -08:00
Colen Garoutte-Carson 350c1c3890 Fix an uncaught exception (#10629) 2023-03-03 15:15:17 -08:00
Sean McManus 64c1327716 Fix possible undefined ui, wrong experimentalFeatures scope access, and duplicate DiagnosticCollection name (#10620)
* Fix possible undefined ui and wrong experimentalFeatures scope access.
* Fix DiagnosticCollection warning
2023-03-02 10:34:28 -08:00
Sean McManus ec47886d72 Merge pull request #10609 from microsoft/main
Merge for 1.14.4 (2nd time)
2023-02-27 17:51:11 -08:00
Sean McManus 40fe35c8e2 Merge branch 'release' into main 2023-02-27 17:18:48 -08:00
Sean McManus 532eee96fe Update changelog for 1.14.4 (2nd time). (#10606)
* Update changelog for 1.14.4 (2nd time).
2023-02-27 17:15:43 -08:00
Colen Garoutte-Carson febcf11215 Dispose of cached browse config on dispose if no longer registered. (#10608) 2023-02-27 16:50:21 -08:00
Colen Garoutte-Carson 7a76ee1ec5 Auto-configure a default custom configuration provider even if default.compilerPath is set (#10607) 2023-02-27 16:44:39 -08:00
Sean McManus 81a026435d Fix aiKey and changelog in the release branch. (#10604) 2023-02-27 14:21:17 -08:00
Sean McManus 9f2d17d40c Merge pull request #10603 from microsoft/seanmcm/1_14_4_release
Merge for 1.14.4
2023-02-27 14:03:21 -08:00
Sean McManus 2e66dc794b Merge branch 'main' into seanmcm/1_14_4_release 2023-02-27 13:22:18 -08:00
Sean McManus 3644b94ee9 Update version. (#10601) 2023-02-27 13:21:41 -08:00
Sean McManus cf2a1112f4 Merge branch 'main' into seanmcm/1_14_4_release 2023-02-27 13:06:11 -08:00
Sean McManus bcc7d61266 1.14.4 changelog (#10590) 2023-02-27 13:02:56 -08:00
Bob Brown 3c5e7e260e Report the origin of the CreateDeclaration/Definition commands (#10582) 2023-02-24 16:30:44 -08:00
Bob Brown b137b7c3ed Report the origin of commands for the UI experiment telemetry (#10581) 2023-02-23 15:29:19 -08:00
Bernardin-MSandColen Garoutte-Carson 67118593b8 Accepting c2x compilers (#10456)
* Add c2x compilers as acceptable arguments

* Update config UI with new c stds

* Remove c20

* Remove gnu20

* Fix typo

* Remove c20

* Remove gnu20

---------

Co-authored-by: Colen Garoutte-Carson <[email protected]>
2023-02-23 10:49:25 -05:00
Colen Garoutte-Carson 85514f21bc Try forcing pipeline to use node 16 (#10572) 2023-02-22 14:33:30 -08:00
Sean McManus fa774544ea Merge pull request #10517 from microsoft/seanmcm/1_14_3_release
Merge for 1.14.3
2023-02-14 04:58:54 -08:00
Sean McManus a45c8f8670 Update changelog for 1.14.3 2023-02-13 18:22:45 -08:00
Sean McManus a014fe80bd Update changelog for 1.14.3 2023-02-13 16:39:06 -08:00
Alex Hsu b9bd78e64e [Auto] Localization - Translated Strings (#10204) 2023-02-13 15:00:09 -08:00
browntarik 21bc17ac6e Add telemetry for compiler notification and # in default compiler selection (#10513)
* change description for natvisDiagnostics

* add telemetry for compiler notification and #

* update event name

* telemetry if user browsed to configure compiler

* resolve PR

* refactor to add try/catch logic

* resolve PR

* resolve PR

* change wording

* resolve PR
2023-02-13 13:04:12 -08:00
Sean McManus d03f2d48fa Remove unnecessary activation events. (#10512) 2023-02-13 11:28:24 -08:00
Sean McManus 82b8f261a8 Fix 2nd compiler prompt when the command is used. (#10503)
* Fix 2nd compiler prompt when the command is used.
* Fix 2nd prompt not appearing after the 1st time.
2023-02-09 16:21:44 -08:00
browntarik 1e779a5a3c add basic compiler selection telemetry (#10502)
* change description for natvisDiagnostics

* add telemtry

* resolve telemtry
2023-02-09 15:42:25 -08:00
Sean McManus e4696c5dec Update changelog for 1.14.2. (#10499)
* Update changelog for 1.14.2.
2023-02-09 14:10:50 -08:00
browntarik 9bf1c1d5a5 Add reload prompt when changing hover setting (#10498)
* change description for natvisDiagnostics

* add reload prompt when hover setting is changed
2023-02-09 13:47:03 -08:00
Sean McManus 34745e0b10 Fix blank status after a cpptools pause. (#10493) 2023-02-09 10:25:50 -08:00
Anthony Leonardo Gracio 5e96765467 Add Ada to the list of supported languages (#10475) (#10476)
To allow debugging Ada projects with GDB.
2023-02-08 17:41:03 -08:00
Sean McManus 9b49182355 Fix Indexing state not showing as busy. (#10492) 2023-02-08 15:34:42 -08:00
browntarik 88f419fc11 Remove the full path for the cl.exe compilerPath generated for c_cpp_properties.json (#10485)
* change description for natvisDiagnostics

* update natvisDiagnostics

* update compiler logic to only set "cl.exe"

* fix lint errors

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR

* resolve PR
2023-02-08 11:26:55 -08:00
Bernardin-MS fc4fc00803 Follow up issues for Language Status Bar (#10437)
* Fix file parsing ending not being displayed during pause

* Fix logic

* Remove redundant line

* Condense unpaused parser text

* Introduced parser indexing phase to UI

* Use lookupString() for parse status logic

* Update UI check logic

* Remove log

* Fix logic

* Seperate initializing from indexing in UI

* Change parser initalized text

* Remove extra new line

* Remove missed code

* Add uiOverride parameter to telemetry
2023-02-08 11:22:02 -05:00
browntarik 4b9ca430ba change description for natvisDiagnostics (#10483) 2023-02-07 14:15:31 -08:00
Colen Garoutte-Carson 885b4c0a61 Update webpack for node 18 compatibility (#10447) 2023-02-06 15:25:58 -08:00
Michelle Matias 79a78ba994 Fix localized strings (#10472) 2023-02-06 13:38:27 -08:00
Sean McManus 982c4fb9cf Add path back to cl.exe compiler selection. (#10471) 2023-02-06 10:31:04 -08:00
Michelle Matias 9b7f7deb4d Error messages for create declaration definition (#10393) 2023-02-03 17:44:47 -08:00
Colen Garoutte-Carson a6f535fd54 Support use of file paths in uri field of custom configuration (#10470) 2023-02-03 16:44:38 -08:00
Colen Garoutte-Carson edb810aa3d Pass multiple URI's to provideConfigurations (#10469) 2023-02-03 16:27:19 -08:00
Colen Garoutte-Carson 42b3c28ab1 Fix issue with settings changes not handled properly in multiroot (#10458) 2023-02-03 11:38:12 -08:00
Michelle Matias 6b6c16e378 changelog 1.14.1 (#10452) 2023-02-01 14:06:01 -08:00
browntarik 8f55a2e8d2 add second prompt for when a compiler needs config (#10419)
* add second prompt for when a compiler needs config
* fix other bugs
Co-authored-by: Sean McManus <[email protected]>
2023-02-01 12:11:59 -08:00
Colen Garoutte-Carson 5f68e6a868 Fix issues with didOpen synchronization (#10442) 2023-01-31 13:18:29 -08:00
Sean McManus 93dc3737fb Fix an unstrusted compilerPath being used without a c_cpp_properties.json. (#10440) 2023-01-30 15:55:57 -08:00
Sean McManus 6f2714bfbb Fix empty intelliSenseMode being generated. (#10441) 2023-01-30 15:48:13 -08:00
Colen Garoutte-Carson fafca55335 Fix loc issue with handling of ReportTagParseStatus (#10438) 2023-01-30 15:00:48 -08:00
Colen Garoutte-Carson 2605cac2a9 Address issues with request cancelation (#10296) 2023-01-27 15:01:12 -08:00
browntarik 98a9b0cabe add ChangeCppPropertiesRequest and remove Notification. (#10420) 2023-01-26 17:51:28 -08:00
browntarik dc0a7af0aa resolve compiler undefined message (#10418) 2023-01-25 17:30:41 -08:00
Michelle Matias 3adcec81a4 edge strings (#10416) 2023-01-25 12:53:44 -08:00
browntarik b96737a919 Add support for selecting a default compiler (#10165) 2023-01-24 21:02:47 -08:00
Colen Garoutte-Carson c4d68fd859 Disable auto-kill of extension when debugging (#10415) 2023-01-24 16:44:44 -08:00
Bernardin-MS 2d3cac0dea Move status bar icons into the Language Status (#10126) 2023-01-20 13:25:50 -08:00
xisui-MSFT 0fcc415231 Improve info os processes match (#10398) 2023-01-19 13:24:15 -08:00
Colen Garoutte-Carson 8431b37201 Await in protocol filter (#10306) 2023-01-19 12:30:42 -08:00
Colen Garoutte-Carson 23f3b47e6f Fix a crash in extractArgs (#10394) 2023-01-18 12:52:54 -08:00
jogo- 7d73a3124d Fix typo in CHANGELOG.md (#10384) 2023-01-18 11:16:41 -08:00
Sean McManus 2041315910 Update changelog for 1.14.0. (#10376)
* Update changelog for 1.14.0.
2023-01-11 19:00:42 -08:00
Sean McManus 04f822ab92 IntelliSense string update. (#10352) 2023-01-11 18:27:41 -08:00
xisui-MSFT 5a486fc8cd SSH output improvements (#10292) 2023-01-04 17:04:54 -08:00
Michelle Matias 62fb757bb3 Update json5 to 1.0.2 and minimist to 1.2.7 (#10356) 2023-01-04 16:03:02 -08:00
Sean McManus b79a965613 Update compilerArgs description. (#10339) 2023-01-04 15:54:33 -08:00
Sean McManus 148a709e0e Fix recursive includes regression. (#10337) 2023-01-04 15:37:31 -08:00
Sean McManus 4916b2f361 Prevent looping between C and C++. (#10309)
* Prevent looping between C and C++.
2023-01-04 14:21:01 -08:00
Sean McManus f7c2cc869a Merge pull request #10355 from microsoft/seanmcm/1_13_9_cherrypick
Update changelog for 1.13.9 (#10324)
2023-01-04 13:39:59 -08:00
Sean McManus 79c8d1d64a Update changelog for 1.13.9 (#10324)
* Update changelog for 1.13.9
* Add a couple 1.13.6 debugger fixes.
2023-01-04 12:39:58 -08:00
Sean McManus 54c73eaade Update changelog for 1.13.9 (#10324)
* Update changelog for 1.13.9
* Add a couple 1.13.6 debugger fixes.
2023-01-04 12:37:33 -08:00
Sean McManus a397a4731a Merge pull request #10287 from microsoft/seanmcm/1_13_8_release
Update changelog and version for 1.13.8. (#10286)
2022-12-15 16:33:40 -08:00
Michelle Matias 4dfea3b68c revert rename config.yml (#10288) 2022-12-15 16:22:47 -08:00
Michelle Matias 384b33386b update issue templates (#10285) 2022-12-15 16:05:59 -08:00
Sean McManus 1a3afd10fc Update changelog and version for 1.13.8. (#10286) 2022-12-15 15:53:09 -08:00
Sean McManus a2a0297ae9 Update changelog and version for 1.13.8. (#10286) 2022-12-15 15:50:35 -08:00
Bob Brown 8cf332baba Fix the message for restarting the language client. (#10259) 2022-12-13 08:07:28 -08:00
Sean McManus 77af87e92e Update IntelliSense loc strings. (#10248) 2022-12-08 17:52:12 -08:00
Sean McManus 01a747ad35 Merge pull request #10255 from microsoft/seanmcm/1_13_7_release
Cherry-pick for 1.13.7.
2022-12-08 12:16:50 -08:00
Sean McManus c8cbf6c0ba Update changelog for 1.13.7. 2022-12-08 12:14:15 -08:00
Sean McManus edaf6dce78 Update changelog for 1.13.7. (#10246) 2022-12-08 09:33:36 -08:00
Bernardin-MS 58e184fdc0 Fixes include "header" issue with multi-root workspaces (#10138)
* Resolve includePath before sending config notification

* Ensure all configuration paths are absolute

* Optimize implentation of resolution of arrays

* Move the resolving of config paths

* Reuse win32 check for all resolvePath's

* add explict type to isWin32
2022-12-08 09:24:22 -05:00
Sean McManus 07efeb4c6c Merge pull request #10233 from microsoft/seanmcm/1_13_6_release_2
Cherry-picks for 1.13.6
2022-12-06 11:15:25 -08:00
Sean McManus 3555e2f1ab Update changelog for 1.13.6 (again). (#10228) 2022-12-06 07:17:01 -08:00
Sean McManus cf2ebd75fe Update decode-uri-component. (#10226) 2022-12-06 07:16:55 -08:00
Colen Garoutte-Carson ac74b5b6a3 Fix document corruption due to delayed evaluation in protocolFilter (#10227) 2022-12-06 07:16:38 -08:00
Michelle Matias c22c28d0c6 Create declaration/definition - handle #include edits (#10219) 2022-12-06 07:16:30 -08:00
Sean McManus 399daf9b27 Update changelog for 1.13.6 (again). (#10228) 2022-12-06 06:58:30 -08:00
Sean McManus b3a337aad0 Update decode-uri-component. (#10226) 2022-12-05 18:10:35 -08:00
Colen Garoutte-Carson ed1a1ca57e Fix document corruption due to delayed evaluation in protocolFilter (#10227) 2022-12-05 17:50:07 -08:00
Michelle Matias cae6c42928 Create declaration/definition - handle #include edits (#10219) 2022-12-02 11:28:47 -08:00
Sean McManus 4abec441f9 Merge pull request #10211 from microsoft/seanmcm/1_13_6_release
Merge and cherry-pick for 1.13.6
2022-11-30 16:53:37 -08:00
Sean McManus 8e23df99d8 Check for the file version before formatting after CDD. (#10210)
* Check for the file version before formatting after CDD.
2022-11-30 16:32:13 -08:00
Sean McManus abe65b5879 Merge branch 'insiders' into seanmcm/1_13_6_release 2022-11-30 16:29:32 -08:00
Sean McManus 20e220354d Update changelog for 1.13.6. (#10200)
* Update changelog for 1.13.6.
2022-11-30 16:25:11 -08:00
Sean McManus bc6bfac71a Check for the file version before formatting after CDD. (#10210)
* Check for the file version before formatting after CDD.
2022-11-30 16:14:38 -08:00
Michelle Matias f40e9bc569 remove reformat after cdd (#10208) 2022-11-30 15:03:12 -08:00
Sean McManus fa3e927011 Add quotes to CDD strings. (#10202) 2022-11-30 10:34:53 -08:00
Alex Hsu 9f9bfddd47 [Auto] Localization - Translated Strings (#10043) 2022-11-29 15:40:16 -08:00
Sean McManus 7fec8ba15f Merge pull request #10196 from microsoft/seanmcm/cherrypick_1_13_5
Cherry-picks for 1.13.5
2022-11-28 13:21:00 -08:00
Andrew Wang 24f5fdd122 Change engine logging and add natvis diagnostics (#10171)
* Change engine logging and add natvis diagnostics

This PR adds logging categories to engineLogging and adds
in the option for natvisDiagnostics with different categories.

* change nls nativisDiagnostics to category
2022-11-28 13:18:22 -08:00
Sean McManus 6a063be33f Update changelog for 1.13.5. (#10187)
* Update changelog for 1.13.5.
2022-11-28 13:18:10 -08:00
Sean McManus 150c7aaf84 Fix selection and formatting for CDD (and extra newlines with clang-format) (#10177)
* Fix selection and formatting for CDD.
* Fix multiple edit at the same spot case.
2022-11-28 13:17:50 -08:00
Andrew Wang bbf2832356 Change engine logging and add natvis diagnostics (#10171)
* Change engine logging and add natvis diagnostics

This PR adds logging categories to engineLogging and adds
in the option for natvisDiagnostics with different categories.

* change nls nativisDiagnostics to category
2022-11-28 13:14:15 -08:00
Sean McManus e2e6662bae Update changelog for 1.13.5. (#10187)
* Update changelog for 1.13.5.
2022-11-28 13:03:56 -08:00
Sean McManus da3a4382dd Fix selection and formatting for CDD (and extra newlines with clang-format) (#10177)
* Fix selection and formatting for CDD.
* Fix multiple edit at the same spot case.
2022-11-28 12:55:54 -08:00
Colen Garoutte-Carson eca31aa8a1 Send initialization after lsp init (#10182) 2022-11-23 17:04:03 -08:00
Sean McManus 186ace28e0 Update IntelliSense localized strings and msvc versions. (#10145)
* Update IntelliSense localized strings.
* Also update msvc versions.
2022-11-17 10:58:58 -08:00
Sean McManus c549c07fa6 Merge pull request #10153 from microsoft/main
Merge for 1.13.4 (again)
2022-11-16 18:11:45 -08:00
Sean McManus 340c00dc92 Update date. (#10152) 2022-11-16 17:52:33 -08:00
Sean McManus 53b6bb29ec Update loader-utils. (#10150) 2022-11-16 11:25:41 -08:00
Michelle Matias ed51a08388 Merge pull request #10148 from microsoft/main
update version 1.13.4 (#10147)
2022-11-14 15:25:57 -08:00
Michelle Matias 140eb83f73 update version 1.13.4 (#10147) 2022-11-14 15:23:55 -08:00
Sean McManus f1d9211b92 Merge pull request #10146 from microsoft/main
Merge for 1.13.4
2022-11-14 14:14:02 -08:00
Michelle Matias 64b429c9a0 1.13.4 change log (#10144) 2022-11-14 13:12:25 -08:00
Michelle Matias 8a81837bd4 Create declaration or definition feature (#10123) 2022-11-14 10:18:33 -08:00
Bernardin-MS 716979e1e3 Prepending workspace path to relative paths from CppProperties (#10045)
* Relative paths of compileCommands to workspacePath

* Address issue

* Fix lint

* Change rootUri for undefined

* Minor fix
2022-11-11 13:28:37 -05:00
Sean McManus 117ec80611 Update loader-utils. (#10122) 2022-11-08 16:12:37 -08:00
Andrew Wang 6379d6e799 Fix buffer size exceeded with NativeAttach (#10119)
* Fix BufferOverflow with NativeAttach

This PR migrates the nativeAttach child_process calls to use 'spawn'
instead of 'exec'. This allows the extension to deal with large process
listing output via input/output streams instead of using a single
hardcoded buffer.

Added support for canceling and timeout if the spawned process does not
exit within 30 seconds.
2022-11-08 10:26:01 -08:00
Michael 373e7face5 Added IAR problem matcher (#10054) (#10085) 2022-11-01 14:18:38 -07:00
Michael 50eb6f94dd Added ARMCC problem matcher (#10054) (#10101) 2022-11-01 14:16:56 -07:00
Sean McManus 801c8dd5d4 Fix doxygen generation with a selection. (#10079) 2022-10-31 10:10:57 -07:00
Bernardin-MS 27abc63d1c Adding subheaders to Extension settings (#9985) 2022-10-28 11:34:58 -07:00
Colen Garoutte-Carson 0a23125ae5 Remove direct WSL support in favor of the WSL extension (#10066) 2022-10-27 13:55:51 -07:00
Colen Garoutte-Carson e8a33ff410 Fix issue with call to cpptools-wordexp with invalid arguments (#10070) 2022-10-26 15:10:12 -07:00
Sean McManus 25162597e1 Merge pull request #10067 from microsoft/main
Merge for 1.13.3
2022-10-25 22:40:38 -07:00
Sean McManus 6502f27963 Update changelog. (#10048)
* Update changelog.
2022-10-25 19:14:04 -07:00
browntarik 13e0bd2cff add setting to disable hover from cpp extension (#10057) 2022-10-25 17:10:26 -07:00
browntarik 591242ab5f Update handleconfiguration() calls to only update cpp_properties.json when a document is saved not just edited (#10026)
* update handleconfiguration() calls

* fix indent

* add active editor logic

* fix yarn error

* fix lint

* resolve PR

* fix paren

* resolve PR

* resolve PR

* resolve PR

* fix build issue

* resolve PR

* resolve PR

* fix build issue
2022-10-25 09:57:06 -07:00
Colen Garoutte-Carson 93e633490a Merge pull request #10056 from microsoft/coleng/fix_theme_image_paths 2022-10-24 14:38:19 -07:00
Colen Garoutte-Carson 250b5ca064 Fix theme image paths 2022-10-24 12:50:31 -07:00
Sean McManus f0ae9b3a12 Update minimatch. (#10041) 2022-10-21 15:07:16 -07:00
Sean McManus edb0af19c4 Fix exception doxygen tag. (#10042) 2022-10-21 12:30:38 -07:00
Colen Garoutte-Carson 6329ba4091 Merge pull request #9789 from microsoft/localization 2022-10-20 20:42:54 -07:00
Colen Garoutte-Carson ef48323a9b Merge branch 'main' of https://github.com/microsoft/vscode-cpptools into localization 2022-10-20 20:37:19 -07:00
Colen Garoutte-Carson 87a1e507ac More loc fixes 2022-10-20 20:37:14 -07:00
Colen Garoutte-Carson 0e3114a252 Loc fixes 2022-10-20 20:12:04 -07:00
Sean McManus 21f6ea640f Merge pull request #10040 from microsoft/main
Merge for 1.13.3
2022-10-20 13:15:11 -07:00
Sean McManus 03ebaf8783 Update changelog for 1.13.3 (#10038)
* Update changelog.
2022-10-20 12:34:34 -07:00
Sean McManus d575335ade Resolve variables on headerFilter. (#10004) 2022-10-20 06:03:06 -07:00
csigs 31abc1847f Localization - Translated Strings 2022-10-20 07:11:04 +00:00
Sean McManus 0b08fc9bac Fix string. (#10033) 2022-10-19 14:51:41 -07:00
Sean McManus 2bb1462f10 Fix autocompleteAddParentheses CHS translation. (#10015) 2022-10-17 08:50:54 -07:00
Sean McManus 0ab9f770ea Fix showDisable translation for CHS. (#10014)
* Fix showDisable translation for CHS.
* Also fix formatFixes
2022-10-14 15:08:44 -07:00
Sean McManus 4416479d1c Add .gitignore (#10005) 2022-10-14 15:02:56 -07:00
Sean McManus 6231202374 Fix Korean translations. (#10003) 2022-10-14 14:55:43 -07:00
Sean McManus 6542b63660 Disable Generate Doxygen Comment from context menu if intelliSenseEngine is "disabled" (#10007)
* Switch to just disabling Generate Doxygen Comment.
2022-10-14 14:01:41 -07:00
BlueStag fcab84cf6a Visual Studio 2019 Themes (#9730)
* Visual Studio 2019 Themes
2022-10-14 09:27:48 -07:00
Sean McManus e2e350883e Resolve variables for clangTidy.args (#10000)
* Resolve variables for clangTidy.args
2022-10-14 06:22:10 -07:00
Ben McMorranandAndrew Wang 47353932a1 Add unknownBreakpointHandling to launch schema (#9990)
Co-authored-by: Andrew Wang <[email protected]>
2022-10-13 14:29:29 -07:00
Sean McManus 850c61dc76 Fix codeFolding setting access. (#9999)
* Fix codeFolding setting access.
2022-10-13 12:24:13 -07:00
Sean McManus 84bacd7edc Remove stopOnEntry. (#9997) 2022-10-13 12:04:50 -07:00
Sean McManus 773e60e31e Update for clang-tidy 15. (#9979) 2022-10-13 07:23:50 -07:00
browntarik 9bce9d7a5d Add a setting to select which Doxygen sections appear in the hover tooltip (#9955)
* plumb up doxygentags

* merge Colen's changes

* merge all

* update tag setting

* add hint for exceptions

* resolve PR

* resolve PR
2022-10-10 14:04:51 -07:00
Bernardin-MS f1457ecffc Retrieve value of editor.parameterHints.enabled (#9961) 2022-10-07 11:11:07 -07:00
Sean McManus 8c284037c9 Add error code to intellisense_spawn_failed (#9960)
* Add error code to intellisense_spawn_failed
2022-10-07 05:43:17 -07:00
Sean McManus f2311d7dba Make array settings give a warning for duplicates. (#9959) 2022-10-06 07:51:13 -07:00
Colen Garoutte-Carson 3b4092f1ac Merge pull request #9935 from microsoft/coleng/update_actions_close_state
Update github actions to use 'not_planned' close state
2022-10-04 16:36:42 -07:00
Colen Garoutte-Carson 2608f1a47c Merge branch 'coleng/update_actions_close_state' of https://github.com/microsoft/vscode-cpptools into coleng/update_actions_close_state 2022-10-04 16:31:05 -07:00
Colen Garoutte-Carson 656018a440 Merge branch 'main' of https://github.com/microsoft/vscode-cpptools into coleng/update_actions_close_state 2022-10-04 16:30:57 -07:00
Colen Garoutte-Carson 70637aeb69 Some cleanup. Fix wrong ID for Reopener. 2022-10-04 16:30:44 -07:00
Colen Garoutte-Carson 543aa5e3bb Merge branch 'main' into coleng/update_actions_close_state 2022-10-04 16:20:49 -07:00
Colen Garoutte-Carson 119a06f807 Merge pull request #9949 from microsoft/main 2022-10-03 18:58:48 -07:00
Colen Garoutte-Carson cb5b588711 Fix issue with Generate Doxygen Comment context menu (#9950) 2022-10-03 18:02:22 -07:00
Sean McManus adb9a4112c Update changelog for 1.13.2. (#9948) 2022-10-03 16:24:31 -07:00
xisui-MSFT 48653c0854 Don't throw when parsing SSH config (#9933) 2022-10-03 15:56:22 -07:00
Sean McManus 49e5dfdc24 Update IntelliSense strings for 1.13.2. (#9946) 2022-10-03 14:46:45 -07:00
Colen Garoutte-Carson 35ebdb302a Merge branch 'main' into coleng/update_actions_close_state 2022-10-03 12:10:49 -07:00
Sean McManus 58f15d95d4 Update ThirdPartyNotices.txt. (#9944) 2022-10-03 11:38:34 -07:00
Colen Garoutte-Carson 17db1d5970 Ensure workspaceFolderUri contains a uri and not a file path (#9934) 2022-09-30 10:56:31 -07:00
Colen Garoutte-Carson 0b97bea982 Update github actions to use 'not_planned' close state 2022-09-29 19:27:12 -07:00
Colen Garoutte-Carson f054ffe9c8 Update settings JSON objects, and various related bug fixes (#9897) 2022-09-29 13:54:53 -07:00
Sean McManus 2855600b5b Merge pull request #9924 from microsoft/main
Fix vcFormat. (#9923)
2022-09-27 10:43:44 -07:00
Sean McManus ebb24763bd Fix vcFormat. (#9923) 2022-09-27 09:16:17 -07:00
Sean McManus 0c0f78d915 Merge pull request #9922 from microsoft/main
Merge for 1.13.1
2022-09-26 23:06:31 -07:00
Sean McManus b0182fdd9a Update 1.13.1 changelog. (#9921) 2022-09-26 22:04:28 -07:00
xisui-MSFT 378e37adc9 Add an SSH logging channel (#9901)
* Add an SSH logging channel
2022-09-26 11:17:52 -07:00
xisui-MSFT 3612c22adf SSH terminal for targets (#9895)
* SSH terminal for targets
2022-09-23 12:00:03 -07:00
browntarik 230bce9864 Merge pull request #9862 from microsoft/browntarik/changePascalCase
change to camelCase for Default, Enabled, Disabled
2022-09-20 14:13:32 -07:00
Tarik Brown f611df293f change intellisense engine values 2022-09-20 10:46:59 -07:00
Tarik Brown 46944da663 Merge branch 'browntarik/changePascalCase' of https://github.com/Microsoft/vscode-cpptools into browntarik/changePascalCase 2022-09-20 10:39:58 -07:00
Tarik Brown 518ea5bc31 support experimentalFeatures 2022-09-20 10:39:54 -07:00
Bob Brown (DEVDIV) 3ee264015a missed one 2022-09-19 17:09:22 -07:00
Tarik Brown 65fcb15c09 change intellisense engine to lowercase not bool 2022-09-19 16:19:56 -07:00
Tarik Brown 304a336b57 Merge branch 'browntarik/changePascalCase' of https://github.com/Microsoft/vscode-cpptools into browntarik/changePascalCase 2022-09-19 16:02:01 -07:00
Tarik Brown 28762c4be2 resolve PR 2022-09-19 16:01:57 -07:00
browntarik c2ca699e39 Merge branch 'main' into browntarik/changePascalCase 2022-09-16 14:50:49 -07:00
Tarik Brown a8694b59a0 fix build errors 2022-09-16 12:33:23 -07:00
Tarik Brown f0ecdd4862 refactor enabled/disabled to booleans and casing 2022-09-16 12:27:26 -07:00
Tarik Brown 98bfb54efc resolve PR 2022-09-16 09:45:56 -07:00
xisui-MSFT 3a8e920a0d Show SSH Targets View Conditionally (#9856)
* Show SSH Targets View conditionally
2022-09-15 17:42:45 -07:00
Sean McManus ba0cc65530 Update IntelliSense strings. (#9874) 2022-09-13 23:16:43 -07:00
Tarik Brown 320d355e5d resolve PR 2022-09-13 14:47:41 -07:00
Tarik Brown feae362cc3 address all comparison issues and refs to Default 2022-09-08 11:32:13 -07:00
Tarik Brown 66b0dbb945 address all comparison issues and refs to Default 2022-09-08 11:30:59 -07:00
Tarik Brown 14f2cc2bf4 change to camelCase for Default, Enabled, Disabled 2022-09-08 09:36:39 -07:00
Sean McManus c2fdf75c8c Merge pull request #9860 from microsoft/main
Merge for 1.13.0
2022-09-07 15:31:00 -07:00
Sean McManus 281d04feaf Update changelog for 1.13.0. (#9859) 2022-09-07 11:43:16 -07:00
Elaheh Rashedi 3526f5092c check if the compiler path and debugger path exist. (#9813) 2022-09-07 09:38:08 -07:00
browntarik 2be467ed68 add caseSensitiveFileSupport (#9809)
* add caseSensitiveFileSupport
2022-09-06 17:03:38 -07:00
Sean McManus 38ed24f6a0 Fix format fixes markdown (#9839)
* Fix formatFixes mardown description.
2022-09-02 15:13:39 -07:00
Jamie MageeandSean McManus b56711ff6c Add $schema to cgmanifest.json (#9832)
Co-authored-by: Sean McManus <[email protected]>
2022-09-01 19:11:22 -07:00
Sean McManus 379d1c8472 Fix ,, in the generated gdb attach lauch.json. (#9819) 2022-09-01 18:17:55 -07:00
xisui-MSFT 03b3995e19 SSH Target Selector (#9760)
* SSH Target Selector
2022-09-01 16:53:18 -07:00
xisui-MSFT 466fb3b6bc rsync support in deploySteps (#9808) 2022-09-01 16:19:14 -07:00
Colen Garoutte-Carson 08fd6214c9 Remove HttpsProxyAgent (#9833) 2022-09-01 15:58:19 -07:00
browntarik feb70a3680 update extension pack (#9830) 2022-09-01 12:56:55 -07:00
Michelle Matias 093757d182 Merge pull request #9824 from microsoft/mimatias/12-4changes 2022-08-31 15:11:13 -07:00
Michelle Matias a51209e051 Update version to 1.12.4 2022-08-31 14:55:23 -07:00
Michelle Matias 4f86df6fa2 changelog 1.12.4 (#9823) 2022-08-31 14:49:57 -07:00
Bob Brown 479368da95 Revert "Switch to new key format since AIF is retired (#9769)" (#9822) 2022-08-31 14:49:44 -07:00
Michelle Matias 9e9430e9b4 changelog 1.12.4 (#9823) 2022-08-31 14:48:08 -07:00
Bob Brown b38e9ef00a Revert "Switch to new key format since AIF is retired (#9769)" (#9822) 2022-08-31 14:42:38 -07:00
Sean McManus 58cce1a996 Update clang_format_style description. (#9788)
* Update clang_format_style scope and description.
2022-08-30 18:45:38 -07:00
Sean McManus ddc3857e36 Merge pull request #9812 from microsoft/main
Update date. (#9811)
2022-08-29 18:12:16 -07:00
Sean McManus 0806b5774c Merge branch 'release' into main 2022-08-29 18:11:57 -07:00
Sean McManus 3ff67ac89a Update date. (#9811) 2022-08-29 18:11:05 -07:00
Sean McManus 5d358dc8de Merge pull request #9797 from microsoft/main
Merge for 1.12.3
2022-08-26 15:17:45 -07:00
Sean McManus 2832e546e0 Update changelog for 1.12.3. (#9794)
* Update changelog for 1.12.3.
2022-08-26 13:58:23 -07:00
Alex Hsu 5669aeb26a [Auto] Localization - Translated Strings (#9572) 2022-08-25 19:20:28 -07:00
Sean McManus c846e8106d Merge pull request #9779 from microsoft/main
Merge for 1.12.2
2022-08-23 20:40:34 -07:00
Sean McManus 35c55c2555 Change changelog date. (#9781) 2022-08-23 18:49:04 -07:00
Sean McManus 065454194a Update changelog and version for 1.12.2 (#9754)
* Update changelog and version for 1.12.2
2022-08-23 15:08:55 -07:00
Sean McManus 9e5237fa99 Fix debug with IntelliSense engine disabled when there's no existing launch.json. (#9771) 2022-08-23 14:56:24 -07:00
Logan Ramos 7d7ff29911 Switch to new key format since AIF is retired (#9769) 2022-08-22 18:52:00 -07:00
dependabot[bot] 5e019a77da Bump @actions/core from 1.2.6 to 1.9.1 in /.github/actions (#9752)
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.2.6 to 1.9.1.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-18 17:02:32 -07:00
Colen Garoutte-Carson 68c9cb9236 Merge pull request #9731 from microsoft/main 2022-08-12 16:47:26 -07:00
Colen Garoutte-Carson 36f04f0fce Change doxygen style default from /** to ///, due to lack of auto-close support. (#9733) 2022-08-12 16:30:15 -07:00
Colen Garoutte-Carson 168eba4e28 Rename doxygen settings (#9734) 2022-08-12 16:21:21 -07:00
Colen Garoutte-Carson 39366406c5 Merge pull request #9729 from microsoft/coleng/add_to_changelog 2022-08-12 13:27:59 -07:00
Colen Garoutte-Carson 9b1bf3b238 Remove blank line 2022-08-12 11:25:19 -07:00
Colen Garoutte-Carson 8eb5e9cd0e update 2022-08-12 11:24:50 -07:00
Colen Garoutte-Carson effd140a87 Update changelog for 1.12.1 2022-08-12 11:24:19 -07:00
Colen Garoutte-Carson 2afbce5b28 Merge pull request #9724 from microsoft/main 2022-08-11 18:53:15 -07:00
Colen Garoutte-Carson 0c2b40b22f Merge pull request #9723 from microsoft/coleng/fix_changelog2 2022-08-11 18:23:12 -07:00
Colen Garoutte-Carson b590e097dc Add changelog entry for additional bug fix 2022-08-11 17:49:01 -07:00
Colen Garoutte-Carson 2f3f444b17 Address PR feedback 2022-08-11 17:41:20 -07:00
Colen Garoutte-Carson d04085e017 Address PR feedback 2022-08-11 17:39:23 -07:00
Colen Garoutte-Carson 3eff13967a Fix duplicate lines 2022-08-11 17:32:09 -07:00
Colen Garoutte-Carson cba220883b Fix order 2022-08-11 16:59:43 -07:00
Colen Garoutte-Carson 423f838ce8 Update changelog for 1.12.1 2022-08-11 16:58:37 -07:00
Michelle Matias 20f9990784 Add pre-requisites to readme (#9722) 2022-08-11 15:56:31 -07:00
Colen Garoutte-Carson d6574c6d3f Merge pull request #9714 from microsoft/main 2022-08-10 16:37:41 -07:00
Colen Garoutte-Carson f5d711bd0b Minor fixes to changelog (#9715) 2022-08-10 16:12:02 -07:00
Colen Garoutte-Carson bd3102ad91 Add changelog content for 1.11.5 (#9713) 2022-08-10 15:54:55 -07:00
Colen Garoutte-Carson 9005aca568 Update version and changelog for 1.12.1 (#9712) 2022-08-10 15:25:35 -07:00
Jiefang Li 54c6227d89 Adding doxygen comment generation (#9656) 2022-08-10 12:33:37 -07:00
xisui-MSFT 41303ed8cc Adding PID to the extended remote process picker (#9673) 2022-08-04 17:19:18 -07:00
xisui-MSFT b885e2c39a Cache and reuse SSH passwords in the current session (#9654)
* Cache and reuse SSH passwords in the current session
2022-08-04 17:03:47 -07:00
Sean McManus 853a4f3582 Code analysis fix formatting. (#9661)
* Code analysis fix formatting.
2022-08-02 20:44:00 -07:00
Sean McManus 6ee27f5716 Update IntelliSense translations. (#9671) 2022-08-02 18:37:02 -07:00
Colen Garoutte-Carson d8c3426058 Enable colorized output in tasks for clang (#9655) 2022-07-28 12:45:24 -07:00
Sean McManus 886d3c58e9 Merge pull request #9642 from microsoft/main
Merge for 1.12.0
2022-07-26 22:52:45 -07:00
Sean McManus ae17dab804 Fix hover E2E test on Windows. (#9648) 2022-07-26 19:38:33 -07:00
Colen Garoutte-Carson 9fd2438d4c Fix bug introduced by use of new language-client (#9649) 2022-07-26 18:33:40 -07:00
Michelle Matias 1ac61ed3b6 Revert ignoring failures in E2E tests (#9647) 2022-07-26 16:13:25 -07:00
Sean McManus 6bd2bb5fdb Update changelog and version. (#9639)
* Update changelog and version.
2022-07-25 22:36:27 -07:00
Colen Garoutte-Carson ac1e3274ec Display warning for commands when IntelliSenseEngine is Disabled (#9640) 2022-07-25 18:56:03 -07:00
Colen Garoutte-Carson 14be9092a1 Update to latest vscode-languageclient (#9524) 2022-07-25 16:28:49 -07:00
Michelle Matias 5dfb14f86e fix spelling (#9638) 2022-07-25 15:41:42 -07:00
kouhe3 b42091e660 fix inlay hints chinese translate bug. (#9624) 2022-07-25 12:05:45 -07:00
Sean McManus 646f40b8b5 Add .vs exclusion. (#9629) 2022-07-25 11:47:50 -07:00
Michelle Matias c357584ec0 Add inlay hint tests, fix setting update of autoDeclarationTypes.showOnLeft (#9622) 2022-07-22 15:22:32 -07:00
Sean McManus 5d736cc6c8 Merge pull request #9621 from microsoft/main
Merge for 1.11.4
2022-07-21 15:36:54 -07:00
Sean McManus 304858c0cb Merge branch 'release' into main 2022-07-21 15:18:40 -07:00
Sean McManus fa32357231 Update changelog. (#9620) 2022-07-21 15:14:44 -07:00
Sean McManus 8879e4e399 Fix empty inlay hint error. (#9617)
* Fix empty inlay hint error.
2022-07-21 14:40:00 -07:00
Sean McManus f1712ca20b Update terser dependency. (#9608) 2022-07-21 10:00:32 -07:00
Sean McManus 0445fc4207 Merge pull request #9603 from microsoft/main
Merge for 1.11.3
2022-07-19 14:14:52 -07:00
Sean McManus 34c3835151 Merge branch 'insiders' into main 2022-07-19 13:51:11 -07:00
xisui-MSFT f38f551cda Extended remote support (#9569)
* Extended remote support
2022-07-19 13:49:30 -07:00
Sean McManus 93fcc05944 Changelog for 1.11.3. (#9591)
* Changelog for 1.11.3.
2022-07-19 13:39:40 -07:00
ChaseKnowlden 12dbf2cd68 Convert Language Service issue template to github issue forms template (#9578) 2022-07-13 16:05:00 -07:00
Alex Hsu 6a97dd8c93 [Auto] Localization - Translated Strings (#9420) 2022-07-11 21:32:37 -07:00
Sean McManus 16b4710f8c Merge pull request #9561 from microsoft/seanmcm/revert2DeploySteps
Revert deploy steps
2022-07-08 12:54:25 -07:00
Sean McManus 3d58b640f0 Fix changelog version. 2022-07-08 11:45:23 -07:00
Sean McManus a5b573dbcd Update changelog for 1.11.2 2022-07-08 11:43:49 -07:00
Sean McManus 9360987d31 Revert "Revert "Add deploySteps and variables to cppdbg (#9418)""
This reverts commit 8914e28c26.
2022-07-08 11:42:09 -07:00
Sean McManus 08776b77f7 Merge pull request #9557 from microsoft/seanmcm/revertDeplaySteps
revert deploy steps
2022-07-07 18:55:50 -07:00
Sean McManus b34766054b Remove changelog entry. 2022-07-07 18:48:05 -07:00
Sean McManus 8914e28c26 Revert "Add deploySteps and variables to cppdbg (#9418)"
This reverts commit b55a98c697.
2022-07-07 18:46:31 -07:00
Sean McManus 2a39dc402a Merge pull request #9550 from microsoft/main
Merge for 1.11.1
2022-07-07 15:55:09 -07:00
xisui-MSFT b55a98c697 Add deploySteps and variables to cppdbg (#9418)
* Add deploySteps and variables to cppdbg
2022-07-06 19:55:39 -07:00
Sean McManus fe9cfe318a Merge pull request #9518 from microsoft/seanmcm/1_10_8_release
1.10.8 release
2022-07-06 18:07:58 -07:00
Sean McManus 08b9c995bd Update changelog for 1.11.1 (#9549) 2022-07-06 17:56:43 -07:00
Colen Garoutte-Carson 6da34e4236 Display a log message when intelliSenseMode is Disabled (#9543) 2022-07-06 17:50:34 -07:00
Colen Garoutte-Carson 2080e28813 Fix issue in which duplicate compiler args might be used in compiler query (#9532) 2022-07-06 17:19:16 -07:00
Sean McManus 79e846844f Update changelog. 2022-07-06 17:19:06 -07:00
Sean McManus e172440607 Fix cl.exe being excluded for .c files and c/cpp caching. (#9544)
* Fix cl.exe being excluded for .c files and c/cpp caching.
2022-07-06 15:23:30 -07:00
Colen Garoutte-Carson 996453b3a8 Fix issue in which duplicate compiler args might be used in compiler query (#9532) 2022-07-01 11:44:44 -07:00
Colen Garoutte-Carson 0eb68d22a0 Update changelog to reflect reverted change (#9523) 2022-06-29 12:39:40 -07:00
Colen Garoutte-Carson a2a8d77445 Revert "Reduce default C++ inlay hint font size 12 to match VS and potentially reduce confusion (#9480)" (#9522)
This reverts commit a2683630e0.
2022-06-29 12:35:05 -07:00
Sean McManus 032d9a288e Update changelog for 1.11.1 (#9517) 2022-06-28 21:19:40 -07:00
Sean McManus 3a74d10317 Update changelog for 1.10.8 2022-06-28 21:15:10 -07:00
Sean McManus ef637af801 Change C_Cpp.debugShortcut to resource scope (#9514)
Make C_Cpp.debugShortcut resource scope.
2022-06-28 21:12:12 -07:00
Sean McManus 833795da79 Update ThirdPartyNotices.txt (#9516)
* Update ThirdPartyNotices.txt
2022-06-28 21:11:50 -07:00
Chuck Ries 68bc9642f4 Contribute breakpoints for the "rust" language (#9484)
* Contribute breakpoints for the "rust" language

Since rust code can be debugged with this extension, contribute breakpoints for the "rust" language such that the workaround of "allow breakpoints in all files" is no longer required.
2022-06-28 21:11:03 -07:00
Sean McManus a8bae9e3a6 Update yarn.lock. (#9513) 2022-06-28 21:10:32 -07:00
Andrew Wang fe2c5ef04b Update VSCode Telemetry Package to v0.6.2 (#9512)
* Update VSCode Telemetry Package to v0.6.2
2022-06-28 21:10:10 -07:00
Elaheh Rashedi 83521bc682 rename "success" to "succeeded" in telemetry (#9509) 2022-06-28 21:09:32 -07:00
Sean McManus 59ea146b6e Change C_Cpp.debugShortcut to resource scope (#9514)
Make C_Cpp.debugShortcut resource scope.
2022-06-28 20:57:31 -07:00
Sean McManus 09a1ce1e8a Update ThirdPartyNotices.txt (#9516)
* Update ThirdPartyNotices.txt
2022-06-28 19:18:23 -07:00
Colen Garoutte-Carson 58a9ec846f Fix issue preventing building with the latest nodejs (#9515) 2022-06-28 16:49:19 -07:00
Sean McManus 6f3ae65833 Add setting to hide leading underscores for inlay hints. (#9500)
* Add setting to hide leading underscores for inlay hints.
2022-06-28 16:25:03 -07:00
Sean McManus a8e6695b55 Add setting to show inlay hints on the left. (#9506) 2022-06-28 14:48:06 -07:00
Chuck Ries c7edc9981f Contribute breakpoints for the "rust" language (#9484)
* Contribute breakpoints for the "rust" language

Since rust code can be debugged with this extension, contribute breakpoints for the "rust" language such that the workaround of "allow breakpoints in all files" is no longer required.
2022-06-28 14:12:20 -07:00
Sean McManus 4d0912eb9d Update yarn.lock. (#9513) 2022-06-28 12:15:52 -07:00
Andrew Wang 7747ac6226 Update VSCode Telemetry Package to v0.6.2 (#9512)
* Update VSCode Telemetry Package to v0.6.2
2022-06-28 11:34:09 -07:00
Elaheh Rashedi 13155149ea rename "success" to "succeeded" in telemetry (#9509) 2022-06-28 10:56:55 -07:00
Sean McManus d3fffbad7b Add setting for & space in inlay hints. (#9502)
* Add setting for & space in inlay hints.
2022-06-24 12:06:36 -07:00
Sean McManus 6fe98d2f54 Add left padding to "auto" inlay hints with no spaces on the left (#9499)
* Add left padding to inlay hint.
2022-06-24 11:13:33 -07:00
Sean McManus a2683630e0 Reduce default C++ inlay hint font size 12 to match VS and potentially reduce confusion (#9480)
* Reduce default inlay hint font size to 12 match VS and reduce confusion.
2022-06-23 17:33:37 -07:00
Sean McManus 590923ca99 Fix remove diagnostics for the disable case. (#9495) 2022-06-23 13:42:44 -07:00
Sean McManus 2a5198ed9d Merge pull request #9477 from microsoft/main
Change inlayHint defaults settings. (#9476)
2022-06-20 11:42:18 -07:00
Sean McManus 4a85594360 Change inlayHint defaults settings. (#9476) 2022-06-20 11:18:16 -07:00
Sean McManus 3d7f5ea0ca Merge pull request #9470 from microsoft/main
Show or hide commands based on C_Cpp.intelliSenseEngine value (#9469)
2022-06-17 16:46:44 -07:00
Michelle Matias 982314db80 Show or hide commands based on C_Cpp.intelliSenseEngine value (#9469) 2022-06-17 16:18:57 -07:00
Sean McManus 3abe8a564b Merge pull request #9468 from microsoft/main
Merge for 1.11.0
2022-06-17 14:03:31 -07:00
Sean McManus 2dc0a86605 Update changelog for 1.11.0. (#9462)
* Update changelog for 1.11.0.
2022-06-17 13:26:40 -07:00
Sean McManus 84f5f6505d Update extension pack readme. (#9456) 2022-06-17 13:17:37 -07:00
Sean McManus cc685c8d7f Fix translations (#9467) 2022-06-17 12:41:52 -07:00
Michelle Matias 9b07d494c6 Add settings for inlay hints feature (#9460) 2022-06-17 11:52:04 -07:00
Sean McManus 3263fab54f Merge pull request #9455 from microsoft/seanmcm/1_10_7_cherrypick
Update version and changelog for 1.10.7. (#9454)
2022-06-15 14:10:00 -07:00
Sean McManus 145a1aa470 Update IntelliSense loc strings. (#9450) 2022-06-15 14:05:41 -07:00
Sean McManus 3254d7db33 Update version and changelog for 1.10.7. (#9454) 2022-06-15 13:52:15 -07:00
Sean McManus 5d4867e0ab Update version and changelog for 1.10.7. (#9454) 2022-06-15 13:46:29 -07:00
Michelle Matias a665cb1329 Add InlayHintsProvider and Display hints (#9392) 2022-06-14 23:12:29 -07:00
Sean McManus 77bdf4b028 Merge pull request #9449 from microsoft/seanmcm/1_10_6_cherryPick2
1.10.6 another cherry-pick
2022-06-14 16:40:59 -07:00
Elaheh Rashedi ca16d85890 resolve tasks when IntelliSense is disabled (#9448) 2022-06-14 16:38:11 -07:00
Elaheh Rashedi b29d5e8d33 resolve tasks when IntelliSense is disabled (#9448) 2022-06-14 16:33:48 -07:00
Sean McManus 74f12d8071 Merge pull request #9447 from microsoft/seanmcm/1_10_6_cherryPick
Merge for 1.10.6
2022-06-14 14:30:26 -07:00
Sean McManus dc6b33eda2 Update version and changelog. (#9440)
* Update version and changelog.
2022-06-14 14:09:36 -07:00
Sean McManus bde931bc3a Remove legacyCompilerArgsBehavior deprecation. (#9439) 2022-06-14 14:09:07 -07:00
Sean McManus 81827f6536 Update version and changelog. (#9440)
* Update version and changelog.
2022-06-14 14:07:35 -07:00
Sean McManus 8e5f3af858 Remove legacyCompilerArgsBehavior deprecation. (#9439) 2022-06-14 13:49:54 -07:00
Sean McManus 9397ddb725 Code analysis refactor (#9402)
* Refactor code analysis code.
2022-06-08 15:47:39 -07:00
Sean McManus 872c86ad20 Fix error that occurred when resolving a merge conflict. (#9424) 2022-06-08 10:47:07 -07:00
Sean McManus 6736b6771f Merge pull request #9421 from microsoft/seanmcm/1_10_5_release
Merge for 1.10.5
2022-06-08 10:07:33 -07:00
Sean McManus 4b4ea51138 Merge branch 'release' into seanmcm/1_10_5_release 2022-06-07 21:48:48 -07:00
Sean McManus a5de3a5c11 Update changelog for 1.10.5. (#9417) 2022-06-07 21:43:04 -07:00
Colen Garoutte-Carson 14e31e0d1d Corrected localized strings (#9419) 2022-06-07 21:25:50 -07:00
Sean McManus 8bff10f1cb Fix resolve variable with non-string. (#9403)
* Fix resolve variable with non-string.
* Fix spelling errors.
2022-06-07 10:40:36 -07:00
Bob Brown baf58c847e Add telemetry for configuration provider usage (#9412) 2022-06-06 12:20:40 -07:00
Colen Garoutte-Carson 4fc18a7eb4 Merge pull request #9400 from microsoft/main 2022-06-03 14:48:59 -07:00
Colen Garoutte-Carson 40821ed32c Remove stray .DS_Store file (#9401) 2022-06-03 14:27:49 -07:00
Colen Garoutte-Carson 3aa99e6cc8 Update changelog for 1.10.4 (#9399) 2022-06-03 14:14:14 -07:00
Elaheh Rashedi d6469bfd33 Add telemetry for playButton (#9398) 2022-06-03 14:08:17 -07:00
Elaheh Rashedi 83c08306f9 resolve "user" and "workspace" debug configs (#9373) 2022-06-01 15:34:16 -07:00
Colen Garoutte-Carson 6735b644c2 Always report Dyld error message with crash stack info (#9383) 2022-06-01 10:56:14 -07:00
Sean McManus b16d0f9f42 Fix bug with Mac crash telemetry. (#9357) 2022-05-24 14:47:09 -07:00
Sean McManus c3dd4405a6 Merge pull request #9344 from microsoft/main
Merge for 1.10.3
2022-05-20 17:07:19 -07:00
Sean McManus 617261dc52 Add a missed change. (#9343) 2022-05-20 16:24:18 -07:00
Sean McManus 1120cb7280 Update changelog. (#9342) 2022-05-20 16:14:54 -07:00
Sean McManus 969f2c1db2 Update IntelliSense loc strings. (#9334)
* Update IntelliSense loc strings.
2022-05-20 16:03:09 -07:00
Colen Garoutte-Carson 2238e7347f Prevent language service activation for macOS older than 10.12 (#9328) 2022-05-20 11:47:00 -07:00
Elaheh Rashedi feb8a6421a Make Play Button available to all users (#9311) 2022-05-19 13:45:15 -07:00
Sean McManus bf2674fd0c Add code analysis code action fixes (#9202)
* Add code analysis code action fixes
2022-05-18 16:10:20 -07:00
microsoft-github-policy-service[bot] 9cc30c2ccd Microsoft mandatory file (#9326)
Co-authored-by: microsoft-github-policy-service[bot] <77245923+microsoft-github-policy-service[bot]@users.noreply.github.com>
2022-05-18 15:31:15 -07:00
Sean McManus b294eb7a9c Remove [Log] editor.wordWrap "off" default. (#9313) 2022-05-18 10:59:19 -07:00
Sean McManus b25fb3fd0e Update Mac crash telemetry for cpptools-wordexp. (#9308)
* Update Mac crash telemetry for cpptools-wordexp.
2022-05-16 17:56:51 -07:00
Sean McManus 32ba555dee Merge pull request #9304 from microsoft/main
Update changelog and version. (#9303)
2022-05-12 17:08:36 -07:00
Sean McManus f3b60f296d Update changelog and version. (#9303) 2022-05-12 16:22:31 -07:00
Michelle Matias f31caa30f4 Merge pull request #9290 from microsoft/main
1.10.1 insiders
2022-05-09 17:52:14 -07:00
Michelle Matias 04eeb03292 1.10.1 changelog (#9289) 2022-05-09 16:38:34 -07:00
Elaheh Rashedi 7b7effbe81 add compiler path to debug configs details (#9264) 2022-05-09 15:48:00 -07:00
Sean McManus 0d0b9ee120 Fix spelling. (#9270)
* Fix spelling.
2022-05-05 11:01:27 -07:00
Elaheh Rashedi 62ac866bbc fail the tasks, if there is a fatal link error (#9211) 2022-05-03 13:11:59 -07:00
Elaheh Rashedi fc69d50751 use /Fe<file> for older cl.exe version (#9252) 2022-05-03 09:43:43 -07:00
Elaheh Rashedi 7f21a55337 remove quote from folder path (#9249) 2022-05-03 09:43:11 -07:00
Michelle Matias 85c9b30c05 Update messages of issue closers (#9251) 2022-04-29 23:40:05 -07:00
Elaheh Rashedi 91380b3f58 add "add configuration" feature (ready) (#9226) 2022-04-29 13:51:05 -07:00
Colen Garoutte-Carson fab35332eb Merge pull request #9213 from microsoft/main 2022-04-20 16:52:16 -07:00
Colen Garoutte-Carson f0d43ce102 Update changelog and version for 1.10.0 insiders (#9212) 2022-04-20 16:29:15 -07:00
Elaheh Rashedi 08ab287ff7 check for failed tasks (#9205) 2022-04-20 11:42:48 -07:00
Colen Garoutte-Carson 380dcbbb58 Fix changelog release date for 1.9.8 (#9210) 2022-04-20 11:26:20 -07:00
Colen Garoutte-Carson 3c98246141 Fix changelog release date for 1.9.8 (#9210) 2022-04-20 11:25:47 -07:00
Colen Garoutte-Carson 0a002db1e5 Merge pull request #9206 from microsoft/coleng/1.9.8-cherry-picks 2022-04-19 17:12:24 -07:00
Colen Garoutte-Carson b5b1c2b9df Update changelog for 1.9.8 (#9207) 2022-04-19 17:10:46 -07:00
Colen Garoutte-Carson 0428ebddb0 Update changelog for 1.9.8 (#9207) 2022-04-19 16:58:59 -07:00
Colen Garoutte-Carson dd8f358076 Fix exception when IntelliSenseEngine is Diabled (#9178) 2022-04-19 16:34:07 -07:00
Andrew Wang 34cd49174e Add back 'aiKey' in package.json (#9183)
* Add back 'aiKey' in package.json

* Add _aiKeyComment
2022-04-19 16:33:47 -07:00
Elaheh Rashedi 7810d7cb34 resolve Debug configuration (#9179) 2022-04-19 16:33:46 -07:00
Colen Garoutte-Carson 3243e39c4f Fix an edge string (#9193) 2022-04-15 11:36:25 -07:00
Colen Garoutte-Carson e60ae9290c Updated edge strings for VS FI (#9190) 2022-04-14 17:46:25 -07:00
Colen Garoutte-Carson 00274d5090 Address shell escaping issues (#8970) 2022-04-14 13:31:41 -07:00
Colen Garoutte-Carson 56c1a6314f Fix exception when IntelliSenseEngine is Diabled (#9178) 2022-04-13 15:32:19 -07:00
Andrew Wang 23038f4477 Add back 'aiKey' in package.json (#9183)
* Add back 'aiKey' in package.json

* Add _aiKeyComment
2022-04-13 13:56:20 -07:00
Michelle Matias 9f7d7fd997 Convert debugger issue form to yaml (#9180) 2022-04-13 12:37:39 -07:00
Michelle Matias 982255d45c Convert "general extension" and "feature request" templates from markdown to yaml (#9158) 2022-04-12 20:50:52 -07:00
Colen Garoutte-Carson a28a456aee Add support for c++23 language standard arg (#9177) 2022-04-12 15:56:33 -07:00
Sean McManus 6d53961493 Update minimist dependencies. (#9169) 2022-04-11 15:26:40 -07:00
Elaheh Rashedi b93b58cb49 making debugger platform specific (#9157) 2022-04-08 11:01:20 -07:00
Elaheh Rashedi 3cb4a9078c get the default build task for F5 (#9145) 2022-04-06 13:32:07 -07:00
Sean McManus 504800336c Replace substr with substring. (#9129)
* Replace substr with substring.
2022-04-04 19:42:19 -07:00
dependabot[bot] dda36530cd Bump plist from 3.0.4 to 3.0.5 in /Extension (#9125)
Bumps [plist](https://github.com/TooTallNate/node-plist) from 3.0.4 to 3.0.5.
- [Release notes](https://github.com/TooTallNate/node-plist/releases)
- [Changelog](https://github.com/TooTallNate/plist.js/blob/master/History.md)
- [Commits](https://github.com/TooTallNate/node-plist/commits)

---
updated-dependencies:
- dependency-name: plist
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-31 17:18:26 -07:00
Sean McManus ffd59ee3c8 Add clangTidy.useBuildPath setting (#9104)
* Add useBuildPath setting.
2022-03-31 16:25:29 -07:00
Elaheh Rashedi e3365bbfe4 Run and Debug button updates (#9110) 2022-03-29 16:50:08 -07:00
Michelle Matias 71e9d239e3 add string for old default std version (#9090) 2022-03-25 15:28:20 -07:00
Sean McManus 2874fd2600 Merge pull request #9070 from microsoft/main
Merge for 1.9.7
2022-03-22 18:52:16 -07:00
Sean McManus 56db55a3dc Update minimist. (#9071) 2022-03-22 18:35:26 -07:00
Sean McManus 8b9e009fc9 Merge branch 'release' into main 2022-03-22 14:48:13 -07:00
Sean McManus 23720f5fd8 1.9.7 changelog (#9069)
* Update changelog.
* Update version.
2022-03-22 14:44:35 -07:00
Sean McManus 8bea1ecb35 Merge pull request #9061 from microsoft/main
Merge for 1.9.6
2022-03-21 11:48:55 -07:00
Michelle Matias dd3938c934 Fix periods to descriptions and title (#9052) 2022-03-21 10:34:36 -07:00
Sean McManus cf9b2565d0 Update changelog. (#9047)
* Update changelog.
2022-03-18 20:21:31 -07:00
Sean McManus caecbf9532 Merge pull request #9045 from microsoft/main
Merge for 1.9.5
2022-03-17 12:42:42 -07:00
Sean McManus a250a53361 Fix typo in changelog. (#9044) 2022-03-17 12:09:47 -07:00
Sean McManus 375d62c335 Update changelog. (#9042) 2022-03-17 11:26:31 -07:00
Sean McManus c3312d3fba Merge pull request #9030 from microsoft/main
Merge for 1.9.4
2022-03-15 21:46:09 -07:00
Sean McManus df9469ca4e Update changelog. (#9029) 2022-03-15 18:08:12 -07:00
Sean McManus a07c8fd6c0 Undo detached. (#9026)
* Undo detached.
* Update changelog.
2022-03-14 17:11:44 -07:00
Colen Garoutte-Carson e41ead271e Update a loc strings for tag_parsing_error (#9027) 2022-03-14 17:02:19 -07:00
Sean McManus c1e3843bcf Update changelog. (#9016)
* Update changelog.
2022-03-11 17:29:16 -08:00
Sean McManus 7886ac0e98 Merge pull request #9002 from microsoft/main
Merge for 1.9.3
2022-03-09 13:49:43 -08:00
Sean McManus af38a6c7c8 Update version. 2022-03-09 13:24:33 -08:00
Sean McManus 9fb4ce53a5 Update changelog for 1.9.3 (#8999)
* Update changelog.
2022-03-09 13:17:02 -08:00
Michelle Matias 1f7204baac Remove debugger M1 workaround (#9001) 2022-03-09 12:39:36 -08:00
Andrew Wang f3932b797b Update lldb-mi.yml to support building ARM64 (#8997)
* Update lldb-mi build

Hardcode llvm/lldb-mi commits to match the ones in cgmanifest.
Added parameters to support building for different arch and on
different machines.

* Refactor
2022-03-09 12:18:49 -08:00
Bob Brown 24d7926bc7 update extension pack to be hidden from web environment (#8991) 2022-03-08 23:55:22 -08:00
Sean McManus f4db8e996a Change to run detached. (#8969) 2022-03-08 23:46:05 -08:00
Sean McManus fa91e7d113 change tag parse string (#8909)
* Update tag parse string.
2022-03-08 23:35:13 -08:00
Colen Garoutte-Carson 5889017c02 Revert "Localization - Translated Strings (#8994)"
This reverts commit ad8278a3ae.
2022-03-08 19:38:17 -08:00
csigs ad8278a3ae Localization - Translated Strings (#8994) 2022-03-08 17:54:10 -08:00
csigs 79c2319c16 [Auto] Localization - Translated Strings (#8688) 2022-03-08 17:09:50 -08:00
Colen Garoutte-Carson e36cb639f2 Fix issue with updateCustomConfigurations failing to refresh config of active file (#8984) 2022-03-08 14:44:18 -08:00
Sean McManus 23823e650a Fix problemMatcher relative path. (#8993) 2022-03-08 14:28:11 -08:00
Sean McManus 7fdddf23fe Fix bugs with code analysis status icons with multi-root (#8967)
* Fix incorrect "Running clang-tidy" status with multi-root.
2022-03-03 10:07:14 -08:00
Sean McManus 8eea7fb23e Merge pull request #8957 from microsoft/main
Merge for 1.9.2
2022-03-01 14:02:57 -08:00
Sean McManus 03c9918b58 Update changelog for 1.9.2. (#8950)
* Update changelog for 1.9.2.
2022-03-01 13:47:53 -08:00
Elaheh Rashedi 2cbe7d6313 add launch config (#8949) 2022-03-01 13:06:07 -08:00
Bob Brown ffb1b832f6 Update extension pack (#8954)
* Remove the remote extensions from the pack as remote is considered "advanced"
* Mark the pack to not be compatible with "web" so that it is not offered as a recommendation.
2022-03-01 10:55:50 -08:00
Colen Garoutte-Carson d56135ea82 Add localized MD/HTML file for guidance when incompatible VSIX (#8920) 2022-02-28 15:48:08 -08:00
Sean McManus 7216af8981 Update IntelliSense strings. (#8936) 2022-02-28 14:50:56 -08:00
Sean McManus b8eb77a61a Revert "add launch.json configs" (#8948) 2022-02-28 14:42:58 -08:00
elrashed ed1fd8077c Merge branch 'main' of https://github.com/microsoft/vscode-cpptools into main 2022-02-28 13:53:40 -08:00
elrashed 94e02c78a1 add launch.json configs 2022-02-28 13:53:33 -08:00
Colen Garoutte-Carson e6558706b8 Minor code cleanup in useVcFormat (#8933) 2022-02-25 17:35:27 -08:00
elrashed ec511b941d Merge branch 'main' into insiders 2022-02-24 11:50:54 -08:00
Elaheh Rashedi accd0fb4af single mode file f5 (#8927) 2022-02-24 11:45:36 -08:00
Colen Garoutte-Carson 17140a9fde Merge pull request #8923 from microsoft/main 2022-02-23 19:23:56 -08:00
Colen Garoutte-Carson d0d269b61f Update changelog for 1.9.1 (#8921) 2022-02-23 19:02:12 -08:00
Colen Garoutte-Carson f7adfc83e8 Fix a formatting bug (#8922) 2022-02-23 17:50:03 -08:00
Colen Garoutte-Carson 125b6576a4 Add compatibility check of VSIX TargetPlatform (#8910) 2022-02-23 14:45:57 -08:00
Colen Garoutte-Carson 67669b497e Fix loc string key casing (#8911) 2022-02-23 12:12:37 -08:00
Elaheh Rashedi f809a81829 Dynamic debug config + Telemetry (#8876) 2022-02-23 10:06:01 -08:00
InLAnn 9ea7328ab4 Fix bug: !err && stats && stats.isFile will always return true. Fix typos (#8897) 2022-02-23 09:53:08 -08:00
Colen Garoutte-Carson ef5926422a Update initialization order in activate (#8906) 2022-02-22 14:46:36 -08:00
Joel Smith 111a6534e1 Make SwitchHeaderSource use workbench.editor.revealIfOpen setting (#8857)
Make SwitchHeaderSource use workbench.editor.revealIfOpen setting
2022-02-18 14:04:57 -08:00
Hamir Mahal fcd74cb13c clarify how to get binaries if F5 results in error (#8788)
* clarify how to get binaries if F5 results in error
2022-02-18 13:30:17 -08:00
Sean McManus 49720023bd Ignore failing error code from VS Code (#8872) 2022-02-16 10:30:42 -08:00
Sean McManus 96a12da3a3 Switch loc pipeline. (#8870) 2022-02-15 12:07:50 -08:00
Matheus Castello 67eea35d8f Add dotconfig property for c_cpp_properties.json (#7845)
* Add dotConfig property for c_cpp_properties.json
2022-02-15 10:15:38 -08:00
Sean McManus 9d6ea035a9 Update dependencies. (#8862) 2022-02-14 12:51:13 -08:00
dependabot[bot] fcd8f25e8b Bump follow-redirects from 1.14.7 to 1.14.8 in /.github/actions (#8856)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-14 12:01:12 -08:00
Colen Garoutte-Carson 5f888eef30 Fix issue with cpptools restarting when it should not (#8850) 2022-02-11 16:58:21 -08:00
jogo- c02440cfe1 Update CHANGELOG.md (#8844)
Fix trailing '.' after links
2022-02-11 10:49:39 -08:00
Colen Garoutte-Carson e5abfbca71 Prevent error from being logged due to custom configuration processing prior to the provider being ready (#8841) 2022-02-10 18:06:43 -08:00
Michelle Matias b30c098dc1 Merge pull request #8839 from microsoft/main
Insiders 1.9.0 #3
2022-02-10 15:59:16 -08:00
Colen Garoutte-Carson b4625c7c30 Fix casing in changlog (#8838) 2022-02-10 15:49:52 -08:00
Colen Garoutte-Carson b960aecb76 Add comment to changelog referring to rename/remove of Build and Debug Active File feature (#8837) 2022-02-10 15:43:42 -08:00
Elaheh Rashedi 2ebc31b273 fix warning if cl.exe is not available (#8835) 2022-02-10 15:05:11 -08:00
Michelle Matias e135b011bc Merge pull request #8833 from microsoft/mimatias/insiders1-9
Insiders 1.9.0 #2
2022-02-10 13:38:38 -08:00
Michelle Matias 2913721755 Merge branch 'main' into mimatias/insiders1-9 2022-02-10 13:30:18 -08:00
Michelle Matias 7a83d8d76a Merge pull request #8831 from microsoft/mimatias/insiders1_9
Insiders 1.9.0
2022-02-10 13:20:21 -08:00
Michelle Matias db67ca332c remove extra === 2022-02-10 13:17:26 -08:00
Michelle Matias 69cf11512a Merge branch 'main' into mimatias/insiders1_9 2022-02-10 13:11:50 -08:00
Elaheh Rashedi 4ea422f34e resolve task (#8826) 2022-02-10 13:08:29 -08:00
Colen Garoutte-Carson 5c44eec26e Fix issue with recovery from cpptools crash when using multiroot (#8810) 2022-02-10 13:02:43 -08:00
Michelle Matias 99ac776dbb changelog for 1.9 (#8822) 2022-02-10 11:11:09 -08:00
Michelle Matias 41f2cd70ed Build and debug as x86_64 on Apple Silicon (macOS ARM64) by default (#8820) 2022-02-09 19:12:53 -08:00
Colen Garoutte-Carson 485dbdeb33 Fix issue with invoking commands before cpptools is activated (#8821) 2022-02-09 18:23:56 -08:00
Elaheh Rashedi 1772769c6d add telemetry for debug and Run button (#8819) 2022-02-09 16:28:23 -08:00
Sean McManus 7393ba3b6b Add scope to debugShortcut. (#8806) 2022-02-09 08:07:49 -08:00
Sean McManus af71bc0cd1 Remove duplicate "in" in comment. (#8795) 2022-02-07 12:44:20 -08:00
Colen Garoutte-Carson a3b79dc06d Add loc for 3 strings (#8784) 2022-02-07 11:26:14 -08:00
Colen Garoutte-Carson 011b5c12a9 Merge pull request #8783 from microsoft/coleng/merge_insiders_1_8_4 2022-02-04 17:14:12 -08:00
Colen Garoutte-Carson d4df455dc0 Merge pull request #8782 from microsoft/coleng/merge_release_1_8_4 2022-02-04 17:14:09 -08:00
Colen Garoutte-Carson 025ab76ca6 Update changelog for 1.8.4 (#8778) 2022-02-04 16:39:38 -08:00
Sean McManus 1613298710 Remove offline installation from ReadMes. (#8769) 2022-02-04 16:39:34 -08:00
Colen Garoutte-Carson bcd6c9ef50 Suppress incorrect warnings on Mac M1 (#8757) 2022-02-04 16:39:29 -08:00
Sean McManus 6f62c61bb4 Update changelog. (#8754)
* Update changelog.
2022-02-04 16:39:25 -08:00
Colen Garoutte-Carson b5c13664a6 Update changelog for 1.8.4 (#8778) 2022-02-04 16:37:54 -08:00
Sean McManus f95b1cebf7 Remove offline installation from ReadMes. (#8769) 2022-02-04 16:37:50 -08:00
Colen Garoutte-Carson 4813194480 Suppress incorrect warnings on Mac M1 (#8757) 2022-02-04 16:37:45 -08:00
Sean McManus 97fd5b6bb9 Update changelog. (#8754)
* Update changelog.
2022-02-04 16:37:38 -08:00
Colen Garoutte-Carson 2cbc5f4b7b Update changelog for 1.8.4 (#8778) 2022-02-04 16:28:57 -08:00
Elaheh Rashedi 0ba3df9253 Add Debug and Run button (#8651) 2022-02-03 14:24:42 -08:00
Sean McManus f33afd0379 Remove offline installation from ReadMes. (#8769) 2022-02-03 12:00:07 -08:00
Sean McManus f15c635167 Update changelog. (#8754)
* Update changelog.
2022-02-02 09:45:14 -08:00
Colen Garoutte-Carson ec5044da85 Suppress incorrect warnings on Mac M1 (#8757) 2022-02-01 16:58:31 -08:00
Colen Garoutte-Carson 5818e888f1 Rework how cancelation is processed for semantic tokens and folding operations (#8739) 2022-02-01 13:07:03 -08:00
Sean McManus 3b4c8e71e7 Merge pull request #8746 from microsoft/main
Merge for 1.8.2
2022-01-31 14:09:54 -08:00
Sean McManus 75d131d3ea Merge pull request #8747 from microsoft/main
Merge for 1.8.3 (insiders)
2022-01-31 12:28:29 -08:00
Sean McManus 6ad565886b Changelog for 1.8.2. (#8737)
* Changelog for 1.8.2.
2022-01-31 11:24:52 -08:00
Sean McManus abc3c11cab Merge pull request #8731 from microsoft/main
Merge for 1.8.1
2022-01-27 13:46:46 -08:00
Sean McManus 30991405b1 Update changelog for 1.8.1. (#8719)
* Update changelog for 1.8.1.
2022-01-27 13:22:23 -08:00
dependabot[bot]andSean McManus 6e325b1eb1 Bump node-fetch from 2.6.1 to 2.6.7 in /.github/actions (#8730)
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.1...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Sean McManus <[email protected]>
2022-01-27 13:04:17 -08:00
Sean McManus f2834da643 Fix Error: selectionRange must be contained in fullRange (#8727) 2022-01-27 12:53:55 -08:00
Sean McManus 13345e3f85 Update nanoid and @octokit/rest (#8718) 2022-01-27 12:14:35 -08:00
Colen Garoutte-Carson 4092a12895 Remove Offline Installation section from README.md (#8714) 2022-01-24 14:33:15 -08:00
Colen Garoutte-Carson c694184fea Mitigate issue with migrating Insiders to Prerelease (#8705) 2022-01-20 15:17:08 -08:00
Sean McManus 2d1f8e09ac Fix regression with environment variable defines. (#8700)
* Fix regression with environment variable defines.
2022-01-20 12:52:23 -08:00
Colen Garoutte-Carson 32e2c38fc4 Add targetPopulation field to telemetry (#8703) 2022-01-20 12:09:17 -08:00
csigs d0ffef78f1 [Auto] Localization - Translated Strings (#8506) 2022-01-18 19:35:52 -08:00
Colen Garoutte-Carson 88f0bbebb9 Merge pull request #8669 from microsoft/main 2022-01-13 13:39:55 -08:00
Colen Garoutte-Carson 75fc2a842c Move existing insiders to new mechanism without prompting (#8665) 2022-01-13 13:25:50 -08:00
Sean McManus c0ff0efbed Update follow-redirects. (#8668)
* Update follow-redirects.
2022-01-13 13:19:22 -08:00
Sean McManus 01290a44fb Update dependencies. (#8627)
* Update dependencies.
2022-01-13 12:56:59 -08:00
Colen Garoutte-Carson 7b175d4ab4 Merge pull request #8663 from microsoft/main 2022-01-12 13:48:16 -08:00
Colen Garoutte-Carson 4f2b7e2d68 Merge pull request #8662 from microsoft/coleng/prerelease_version_dependency 2022-01-12 13:28:21 -08:00
Colen Garoutte-Carson 01c3b227a2 Update minimum version of VS Code 2022-01-12 13:20:28 -08:00
Sean McManus 144845c0b4 Stop splitting ; or : in defines and compilerArgs. (#8661) 2022-01-12 12:45:37 -08:00
Colen Garoutte-Carson 29e8ff6f3b Merge pull request #8658 from microsoft/main 2022-01-11 18:10:18 -08:00
Colen Garoutte-Carson 2b44312fe4 Update changelog for 1.8.0 insiders3 (#8657) 2022-01-11 17:52:45 -08:00
Colen Garoutte-Carson d0985f5c82 Merge main into insiders branch (#8656) 2022-01-11 16:28:17 -08:00
Colen Garoutte-Carson ff4cdc8d31 Fix to display updateChannel deprecation messages when using VS Code Insiders (#8655) 2022-01-11 11:54:14 -08:00
Elaheh Rashedi b4c1b9dced add cl.exe error (#8630) 2022-01-11 08:48:48 -08:00
Colen Garoutte-Carson 8d097048e8 Remove support for 'online' binary downloads (#8505) 2022-01-10 18:37:51 -08:00
Andrew Wang 14592c4b37 .vscodeignore cgmanifest.json (#8641) 2022-01-06 13:54:47 -08:00
Sean McManus a333ee19e3 Add NOLINTBEGIN/END. (#8591) 2022-01-05 19:32:51 -08:00
Andrew Wang 49fcfad692 Add cgmanifest for debugger components (#8637)
This PR adds in a cgmanifest.json file to comply with Component
Governance Compliance.

This adds two registrations to llvm-project and lldb-mi as components as
they are packaged and published with the macOS version of the VS Code
C/C++ Extension.
2022-01-05 13:29:54 -08:00
Yash Singh 62f052a36c Add repository info to extension pack (#8598) 2022-01-05 08:22:14 -08:00
Sean McManus 1bd76ebd2d Fix "Command '' not found" error. (#8609)
* Fix "Command '' not found" error.
* Remove unneeded initialization.
2021-12-27 14:13:11 -08:00
Bob Brown 6d99657dc0 Don't block running a task if it doesn't use the active file (#8608) 2021-12-27 12:41:40 -08:00
Sean McManus e6003fe683 Fix 3 settings not getting variables resolved on settings update. (#8538) 2021-12-14 12:18:09 -08:00
Colen Garoutte-Carson 58e1a78191 More misc loc fixes (#8537) 2021-12-14 11:46:24 -08:00
Colen Garoutte-Carson cfd43015c6 Set code page to UTF8 when processing build task output (#8519) 2021-12-13 17:24:52 -08:00
Colen Garoutte-Carson aa4c8647ba Remove redundant cl.exe instances from build list (#8517) 2021-12-13 14:00:41 -08:00
Colen Garoutte-Carson 6f39f3b2cf A few more loc string fixes (#8513) 2021-12-09 18:08:11 -08:00
csigs af6a56ff5a [Auto] Localization - Translated Strings (#8466) 2021-12-08 15:53:35 -08:00
Sean McManus 7f996068d4 Merge pull request #8503 from microsoft/main
Merge for 1.8.0-insiders2
2021-12-07 13:40:33 -08:00
Sean McManus 6a60262bd6 Update changelog. (#8495)
* Update changelog.
2021-12-07 13:23:09 -08:00
Sean McManus 50e3a2f40d Proactively handle exclude settings. (#8492) 2021-12-07 13:00:37 -08:00
Sean McManus ed98521ba6 Merge pull request #8494 from microsoft/seanmcm/updateIntelliSenseStringsDec6
Update/fix IntelliSense strings.
2021-12-07 11:27:12 -08:00
Sean McManus a3be300f42 Update/fix IntelliSense strings. 2021-12-06 12:36:30 -08:00
Bob Brown 1ebb6aaef3 Update description for references.maxCachedProcesses (#8468) 2021-12-02 08:49:12 -08:00
Michelle Matias 8815aa5d83 Add periods to end of sentences. (#8472) 2021-12-01 13:37:06 -08:00
Colen Garoutte-Carson 14b197149b Make semantic token setting hover text localizable (#8464) 2021-11-29 17:22:58 -08:00
Sean McManus 27d1ac3897 Merge pull request #8463 from microsoft/main
Merge for 1.8.0-insiders
2021-11-29 17:06:40 -08:00
csigs 74030963f4 [Auto] Localization - Translated Strings (#8385) 2021-11-29 14:11:44 -08:00
Sean McManus 83df072462 Update changelog for 1.8.0-insiders. (#8439)
* Update changelog for 1.8.0-insiders.
2021-11-29 13:35:03 -08:00
Colen Garoutte-Carson cdfe77f798 Revert XLoc tools to working version (#8462) 2021-11-29 11:19:29 -08:00
Sean McManus bf25e3ddb7 Fix F5 debug configuration JSON parse error. (#8437) 2021-11-23 15:01:28 -08:00
Sean McManus c5d64e06c8 Update headerFilter description. (#8435)
* Update headerFilter description.
2021-11-23 12:54:43 -08:00
Sean McManus e4e40ef38e Fix references.maxConcurrentThreads not working. (#8422) 2021-11-19 13:18:54 -08:00
Sean McManus ed60b9c77b Update codeAnalysis.maxConcurrentThreads description. (#8418) 2021-11-19 10:32:26 -08:00
Sean McManus 2bdbdebd29 Update a couple clang-tidy descriptions (#8410)
* Update header filter description.

* Update codeAnalysis.exclude description.
2021-11-16 22:08:51 -08:00
Colen Garoutte-Carson 6c4049fe6a Update edge strings for FI (#8406) 2021-11-16 17:43:55 -08:00
Sean McManus 4b85228811 Add clang-tidy support (#7816) 2021-11-16 13:28:09 -08:00
Bob Brown 25eb322aba Update version for extension pack (#8403) 2021-11-16 08:39:32 -08:00
Andrew Wang aa53c7181b Include setupCommand to set intel flavor (#8368)
This PR adds an additional setupCommand for launch.json to set the
default disassembly flavor to intel since it is preferred over
att.
2021-11-15 11:50:33 -08:00
Julia Reid 91ce65c312 Removing non-C++ specific extensions (#8395) 2021-11-15 10:42:04 -08:00
Colen Garoutte-Carson 400ef22046 Update to latest XLoc package version for OneLocBuild (#8394) 2021-11-12 14:28:37 -08:00
Colen Garoutte-Carson c735a48f37 A couple loc string fixes (#8393) 2021-11-12 14:16:48 -08:00
Colen Garoutte-Carson 081bf843d5 Merge pull request #8388 from microsoft/coleng/fix_deactivate_race 2021-11-11 15:08:13 -08:00
Colen Garoutte-Carson 33e16e8ff8 Fix test failure 2021-11-11 14:47:10 -08:00
Colen Garoutte-Carson f6d1bd8dc5 Fix issue with deactivation when not real-activated 2021-11-11 14:13:04 -08:00
Colen Garoutte-Carson 80161f19a0 Merge pull request #8268 from microsoft/localization 2021-11-10 14:32:32 -08:00
Colen Garoutte-Carson 4c48a2b997 Add a missed file 2021-11-10 14:20:44 -08:00
Colen Garoutte-Carson b57e66d238 Fix loc issues 2021-11-10 14:15:00 -08:00
csigs 36e3707eee Localization - Translated Strings 2021-11-10 20:11:22 +00:00
Colen Garoutte-Carson b2f2a4c088 Merge pull request #8383 from microsoft/coleng/fix_onelocbuild
Add OneLocBuild to .gitignore
2021-11-10 12:04:20 -08:00
Colen Garoutte-Carson f379a7e4d2 Add OneLocBuild to .gitignore 2021-11-10 11:53:57 -08:00
Colen Garoutte-Carson 61de515ba9 Merge pull request #8374 from microsoft/coleng/add_config_warning 2021-11-05 15:03:17 -07:00
Colen Garoutte-Carson d66e3b1d1d Add a configuration warning string 2021-11-05 11:17:17 -07:00
Sean McManus 64aed44a59 update packages (#8357)
* Update packages.
2021-11-03 10:42:46 -07:00
Garrett Campbell 25b73da64a Add svdPath field to OptionsSchema (#8316) 2021-10-28 09:02:21 -07:00
Zuo Zongyuan 4016be17d0 Deprecate WMIC in favor of Get-CimInstance (#8329)
* use `Get-CimInstance` to retrieve processes

* Add unit test

* Fix bugs

* Parse JSON output
2021-10-27 10:59:52 -07:00
Colen Garoutte-Carson a18b91b864 Merge pull request #8303 from microsoft/main 2021-10-19 14:56:40 -07:00
Colen Garoutte-Carson 6b003436e3 Merge pull request #8301 from microsoft/coleng/changelog_171 2021-10-19 14:52:15 -07:00
Colen Garoutte-Carson 2b4a82d17e Remove a space 2021-10-19 14:51:52 -07:00
Colen Garoutte-Carson cd8aa4750c Address PR feedback 2021-10-19 14:30:21 -07:00
Colen Garoutte-Carson b69581ce7a Empty commit to trigger checks 2021-10-19 13:59:08 -07:00
Colen Garoutte-Carson 8b7ad9ecad Update changelog and version for 1.7.1 2021-10-19 13:46:06 -07:00
Colen Garoutte-Carson ee7b2f1efa Merge pull request #8298 from microsoft/coleng/fix_auto_config_provider 2021-10-19 13:15:44 -07:00
Colen Garoutte-Carson 48b120cf0b Fix issue with default configs 2021-10-18 13:02:50 -07:00
Colen Garoutte-Carson b0a82a8bdc Merge pull request #8281 from microsoft/coleng/fix_no_folder_multiroot_install_failure 2021-10-15 13:21:29 -07:00
Colen Garoutte-Carson a10a6d28ad Fix a couple more cases 2021-10-15 13:08:03 -07:00
Colen Garoutte-Carson 2cbba0be71 Fix another instance of the same issue 2021-10-15 11:56:00 -07:00
Colen Garoutte-Carson 4f03cfdcbe Fix an issue causing install failures 2021-10-14 18:15:25 -07:00
AlexanderandAlexander Sergeev 0b94fdefe9 Remove trailing whitespaces (#8254)
Co-authored-by: Alexander Sergeev <[email protected]>
2021-10-14 10:47:28 -07:00
Bob Brown e68b898a14 Fix code elements (#8271) 2021-10-13 16:48:28 -07:00
Colen Garoutte-Carson a06d8e601b Merge pull request #8267 from microsoft/main 2021-10-12 17:53:30 -07:00
Colen Garoutte-Carson b54dbce505 Merge pull request #8266 from microsoft/coleng/Update_links_hashes 2021-10-12 17:52:54 -07:00
Colen Garoutte-Carson 6216e3f87b Update links and hashes for 1.7.0 2021-10-12 17:52:08 -07:00
Colen Garoutte-Carson e792d23cbc Merge pull request #8265 from microsoft/main
Merge main into release again for 1.7.0
2021-10-12 17:35:17 -07:00
Colen Garoutte-Carson b388523e2e Merge pull request #8155 from microsoft/localization 2021-10-12 17:34:31 -07:00
Colen Garoutte-Carson 242d69ad55 Merge branch 'localization' of https://github.com/microsoft/vscode-cpptools into localization 2021-10-12 17:33:52 -07:00
Colen Garoutte-Carson 23b370ba7b More string fixes 2021-10-12 17:33:45 -07:00
Bob Brown (DEVDIV) 1fb046518a Merge branch 'localization' of https://github.com/microsoft/vscode-cpptools into localization 2021-10-12 17:07:32 -07:00
Bob Brown (DEVDIV) 6a8b0ede01 last changes 2021-10-12 17:07:21 -07:00
Bob Brown (DEVDIV) 2fa28a4645 Last languages 2021-10-12 17:07:05 -07:00
Colen Garoutte-Carson 23c07aa017 Fix more strings 2021-10-12 17:06:28 -07:00
Colen Garoutte-Carson adca369b9f Merge branch 'main' into localization 2021-10-12 16:58:44 -07:00
Bob Brown (DEVDIV) f086e5cd5b Merge branch 'localization' of https://github.com/microsoft/vscode-cpptools into localization 2021-10-12 16:57:38 -07:00
Colen Garoutte-Carson 9b398b11d7 Merge pull request #8243 from microsoft/jureid-patch-2 2021-10-12 16:57:27 -07:00
Bob Brown (DEVDIV) 740b98b660 Spanish and German 2021-10-12 16:57:09 -07:00
Colen Garoutte-Carson ef339a4322 Merge branch 'main' into jureid-patch-2 2021-10-12 16:56:18 -07:00
Colen Garoutte-Carson 75289ad75f Merge pull request #8264 from microsoft/coleng/fix_schema_loc 2021-10-12 16:53:18 -07:00
Colen Garoutte-Carson 75f6870919 Merge branch 'localization' of https://github.com/microsoft/vscode-cpptools into localization 2021-10-12 16:51:56 -07:00
Colen Garoutte-Carson 309a6d899e Some loc fixed related to env:variable 2021-10-12 16:50:54 -07:00
Bob Brown (DEVDIV) b785c76714 Italian, Korean, Japanese 2021-10-12 16:46:59 -07:00
Colen Garoutte-Carson 89d3daeb53 Merge branch 'main' into localization 2021-10-12 16:44:44 -07:00
Colen Garoutte-Carson f74049089b Merge branch 'localization' of https://github.com/microsoft/vscode-cpptools into localization 2021-10-12 16:43:12 -07:00
Colen Garoutte-Carson b8b26bb7bf Work in progress 2021-10-12 16:38:23 -07:00
Colen Garoutte-Carson 640df0fe06 Fix issue with markdownDescription not getting localized properly in schema files 2021-10-12 16:31:03 -07:00
Bob Brown (DEVDIV) 2015521a64 Fix some incorrect markdown changes 2021-10-12 16:29:58 -07:00
Colen Garoutte-Carson e24c264f89 Merge pull request #8263 from microsoft/main 2021-10-12 14:42:11 -07:00
Colen Garoutte-Carson c0b216c888 Merge branch 'release' into main 2021-10-12 14:37:28 -07:00
Colen Garoutte-Carson 212ba53ec6 Merge pull request #8262 from microsoft/coleng/update_version_170 2021-10-12 14:36:06 -07:00
Colen Garoutte-Carson ee0052f953 Update version in package.json to 1.7.0 2021-10-12 14:28:34 -07:00
Colen Garoutte-Carson 937026ccad Merge pull request #8261 from microsoft/main 2021-10-12 14:21:01 -07:00
Colen Garoutte-Carson f1f339ee10 Merge pull request #8260 from microsoft/coleng/update_changelog_1.7.0 2021-10-12 14:15:20 -07:00
Colen Garoutte-Carson d5e77d82aa Fix spacing 2021-10-12 14:07:46 -07:00
Colen Garoutte-Carson 9f7d45363f Update changelog for 1.7.0 release 2021-10-12 14:06:25 -07:00
csigs bc0557718c Localization - Translated Strings 2021-10-12 07:04:28 +00:00
Julia Reid 91aa923203 Update telemetry.ts
checking for undefined suffix, not just empty string
2021-10-08 14:48:48 -07:00
Julia Reid 791832845d Update telemetry.ts
it looks like in [package.json line 5](https://github.com/microsoft/vscode-cpptools/blob/a62acdb5a52438540c266b409a0ee7f8e64f7a9b/Extension/package.json#L5), we add a suffix, "main", to the version. When we assign customers to target populations for experiments, we were trying to assign customers without any suffix to Public, which resulted in no one being included. Instead, I think we should be checking if the suffix is "main" and assign those customers to Public.
2021-10-08 13:18:08 -07:00
Thomas Willson a62acdb5a5 Allow merge of C_Cpp_Properties & configuration provider. (#8174)
* Allow merge of C_Cpp_Properties & configuration provider.
2021-10-04 17:28:41 -07:00
jogo- cd949b9ced Various fixes to CHANGELOG.md (#8211) 2021-10-01 22:08:06 -07:00
Colen Garoutte-Carson 7a9d0aae08 Merge pull request #8215 from microsoft/coleng/fix_inactive_regions
Fix issue with inactive regions disappearing when switching files
2021-10-01 15:31:06 -07:00
Colen Garoutte-Carson a5f4a5a734 Fix issue with inactive regions disappearing when switching files 2021-10-01 14:54:39 -07:00
Colen Garoutte-Carson 999f28bf83 Merge pull request #8205 from microsoft/main 2021-09-29 16:28:41 -07:00
Colen Garoutte-Carson dfdb047546 Merge pull request #8204 from microsoft/coleng/update_changelog_for_1.7.0-insiders 2021-09-29 16:22:21 -07:00
Colen Garoutte-Carson e58ea779db Update changelog 2021-09-29 16:06:40 -07:00
Colen Garoutte-Carson f7d0b1bf22 Merge pull request #8187 from microsoft/main 2021-09-24 14:13:41 -07:00
Colen Garoutte-Carson 979d86f8b9 Merge pull request #8185 from microsoft/coleng/update_changelog_for_1.7.0-insiders 2021-09-24 13:11:48 -07:00
Colen Garoutte-Carson f052b4e2d5 Update changelog 2021-09-24 10:47:20 -07:00
Colen Garoutte-Carson 2ec6d5a1f6 Update changelog for 1.7.0-insiders 2021-09-23 19:14:44 -07:00
Elaheh Rashedi 32ac8ae30d Restart Language Server for active file (#8128) 2021-09-23 12:37:57 -07:00
Colen Garoutte-Carson 2f78e86da4 Merge pull request #7933 from microsoft/bobbrow/telemetryUpdate 2021-09-23 12:26:04 -07:00
Colen Garoutte-Carson f814414502 Merge branch 'main' into bobbrow/telemetryUpdate 2021-09-23 12:19:52 -07:00
Colen Garoutte-Carson 0e3dd7a275 Merge pull request #8165 from microsoft/coleng/add_gcc_colors 2021-09-16 17:02:56 -07:00
Colen Garoutte-Carson ecaf985ae6 Add to gcc compiler args for generated build tasks, to display colors in gcc output 2021-09-16 16:37:50 -07:00
Colen Garoutte-Carson 4f137fe9de Merge pull request #8159 from microsoft/coleng/add_error_string 2021-09-15 15:56:58 -07:00
Colen Garoutte-Carson 1b323b6b58 Merge branch 'main' into coleng/add_error_string 2021-09-15 15:56:22 -07:00
Andrew Wang 8efa45e649 Update Debugger Packages (#8138) 2021-09-15 15:22:26 -07:00
Colen Garoutte-Carson 5ae826c117 Add error string 2021-09-15 14:55:49 -07:00
Sean McManus 26dff27224 Localization (#8154)
* Various loc fixes.
2021-09-14 19:15:34 -07:00
Sean McManus 05b0934e79 Update loc hints. Modify one string. (#8153)
* Update loc hints. Other string fixes.
2021-09-14 18:43:51 -07:00
Colen Garoutte-Carson 89251c7796 Merge pull request #8013 from microsoft/localization 2021-09-14 18:04:29 -07:00
Colen Garoutte-Carson 9e0c520ded More fixes 2021-09-14 17:18:07 -07:00
Colen Garoutte-Carson 391acc849a Merge branch 'localization' of https://github.com/microsoft/vscode-cpptools into localization 2021-09-14 17:17:58 -07:00
Colen Garoutte-Carson 3c260b59e4 Most misc fixes 2021-09-14 17:16:21 -07:00
Sean McManus e0898fa949 Merge branch 'localization' of https://github.com/Microsoft/vscode-cpptools into localization 2021-09-14 17:09:02 -07:00
Sean McManus bc84cdb538 One fix. 2021-09-14 17:08:33 -07:00
Colen Garoutte-Carson a0912abebd Fixes 2021-09-14 17:06:22 -07:00
Colen Garoutte-Carson 1826ebc362 Loc fixes 2021-09-14 16:55:11 -07:00
Sean McManus 61d288db52 Merge branch 'main' into localization 2021-09-14 16:19:15 -07:00
Sean McManus dd3479425b Upgrade set-value dependency. (#8147) 2021-09-14 13:14:03 -07:00
csigs 5b361fa8e5 Localization - Translated Strings 2021-09-14 07:05:11 +00:00
Sean McManus 8bac39c35f Fix TypeScript 4.4.3 errors. (#8146)
* Fix TypeScript 4.4.3 errors.
Co-authored-by: Bob Brown (DEVDIV) <[email protected]>
2021-09-13 15:46:37 -07:00
Bob Brown d31eff278b Merge branch 'main' into bobbrow/telemetryUpdate 2021-09-13 12:17:37 -07:00
Sean McManus f28b78931d Fix string. (#8145) 2021-09-13 11:03:41 -07:00
Sean McManus 88040d5d35 String/settings fixes (#8129)
* Fix strings, settings, etc.
* Add hints. Fix settings bug.
* Fix typos.
* Fix failure with GenerateOptionsSchema.
2021-09-10 15:55:51 -07:00
Michelle Matias 4e216cf144 Fix hover test for normal comment (#8136) 2021-09-10 10:48:48 -07:00
Elaheh Rashedi 7516eefb4f parse arguments in tasks.json (#7895) 2021-09-09 13:37:05 -07:00
Sean McManus 1db3e20d72 Update dependency (#8119)
* Update axios.
2021-09-08 18:38:04 -07:00
Sean McManus 3f81cc0838 Move the scope of document symbols to the details. (#8111) 2021-09-08 15:37:38 -07:00
Elaheh Rashedi f26f88b8e1 detect c/c++ source files when running a build a task (#8095) 2021-09-07 09:57:11 -07:00
Elaheh Rashedi 6f4ce8fe3d skip relative paths in forceInclude (#8081) 2021-09-07 09:50:09 -07:00
Sean McManus db9ef1fa46 Update plist. (#8089) 2021-09-02 13:24:08 -07:00
Alan Leung 26022ba2b0 Add postRemoteConnectCommands to schema (#8088) 2021-09-01 17:45:57 -07:00
Elaheh Rashedi e86fd97d71 add ${execpath} and ${pathSeparator} (#8077) 2021-08-31 12:22:01 -07:00
Bob Brown 1aa22b8124 Merge branch 'main' into bobbrow/telemetryUpdate 2021-08-25 08:52:24 -07:00
Michelle Matias 19b55199d4 Remove executable check for OpenDebugAD7 (#8046) (#8047) 2021-08-24 14:47:44 -07:00
Michelle Matias 5dcb3081e5 Remove executable check for OpenDebugAD7 (#8046) 2021-08-24 14:36:29 -07:00
Colen Garoutte-Carson 60aa015a2b Merge pull request #8038 from microsoft/main 2021-08-23 17:15:41 -07:00
Colen Garoutte-Carson 353d03a152 Merge branch 'release' into main 2021-08-23 17:14:20 -07:00
Colen Garoutte-Carson 6ce2b28b80 Update links and hashes for 1.6.0 (#8037) 2021-08-23 16:43:57 -07:00
Colen Garoutte-Carson ae7fa0d500 Update changelog and version for 1.6.0 (#8035) 2021-08-23 15:10:23 -07:00
Sean McManus f5d1567440 Fix old cached updateChannel default being used after package.json modification. (#8032)
* Fix old cached extension being used after package.json modification.
* Limit it to when updateChannel is changed.
2021-08-23 13:22:04 -07:00
Andrew Wang ccfc40a47c Update Debugger Packages (#8021) 2021-08-23 12:59:37 -07:00
Sean McManus 5436cbbb6d Some translation fixes. (#8019) 2021-08-23 12:35:30 -07:00
Colen Garoutte-Carson 6610004132 Add support for localization hints in schema files (#8016) 2021-08-23 12:25:03 -07:00
Sean McManus 5623d1ecf5 Fix "env" translations. (#8018) 2021-08-20 11:15:57 -07:00
Colen Garoutte-Carson 49d4b82330 A couple more translation fixes (#8015) 2021-08-19 18:38:51 -07:00
Sean McManus 3e1266e3de Some translation fixes. (#8014) 2021-08-19 17:49:22 -07:00
Colen Garoutte-Carson 35964e0756 Merges rewrite of package.json so it's only done once (#8012) 2021-08-19 15:05:26 -07:00
csigsandColen Garoutte-Carson d6b9003f6f [Auto] Localization - Translated Strings (#8010)
* Localization - Translated Strings

* Fix loc issues

* More corrections

Co-authored-by: Colen Garoutte-Carson <[email protected]>
2021-08-19 12:25:50 -07:00
Colen Garoutte-Carson eede66558e Merge pull request #8007 from microsoft/main 2021-08-18 16:00:20 -07:00
Colen Garoutte-Carson f7ab54c951 Update changelog for 1.6.0-insiders3 (#8006) 2021-08-18 15:56:47 -07:00
Julia Reid 62acfc8d90 Update install-compiler-windows.md (#7998) 2021-08-18 15:56:12 -07:00
Colen Garoutte-Carson f02661a472 Fix rewrite of updateChannel for remote VS Code insiders (#8003) 2021-08-18 14:14:13 -07:00
Colen Garoutte-Carson 1ed96026ae Revert scopes for updateChannel and intelliSenseUpdateDelay back to "application" (#8004) 2021-08-18 13:45:03 -07:00
csigsandSean McManus 4cb51b72e1 [Auto] Localization - Translated Strings (#7935)
* Localization - Translated Strings

* Fix regressions.

Co-authored-by: Sean McManus <[email protected]>
2021-08-18 11:19:21 -07:00
Charles Milette 928a5d4b03 Update Theme extension image previews to work in the store (#7977) 2021-08-17 14:54:10 -07:00
Colen Garoutte-Carson a9890f62ae Merge pull request #7988 from microsoft/main 2021-08-16 18:26:31 -07:00
Colen Garoutte-Carson 93b14d5744 Merge pull request #7989 from microsoft/coleng/fix_changelong_160i2 2021-08-16 18:20:10 -07:00
Colen Garoutte-Carson 4ea5a278c0 Fix a couple typos in changelog 2021-08-16 18:13:47 -07:00
Colen Garoutte-Carson 86f1a0977d Merge pull request #7987 from microsoft/coleng/update_changelog_1.6.0-insiders2 2021-08-16 17:05:04 -07:00
Colen Garoutte-Carson d726367408 Fix typo 2021-08-16 16:54:31 -07:00
Colen Garoutte-Carson a213d227a5 Update text 2021-08-16 16:41:46 -07:00
Colen Garoutte-Carson e921604cea Add debugger issue 2021-08-16 16:38:43 -07:00
Colen Garoutte-Carson 7034b4b5a4 Remove blank line 2021-08-16 15:20:57 -07:00
Colen Garoutte-Carson 1a2c37a2db Update changelog for 1.6.0-insiders2 2021-08-16 15:20:05 -07:00
Andrew Wang 1d10e0446e Update Links (#7984) 2021-08-16 13:28:28 -07:00
Bob Brown b7a8a07a39 Merge branch 'main' into bobbrow/telemetryUpdate 2021-08-16 12:06:05 -07:00
Sean McManus 45e5d6caa7 Fix some setting scopes. (#7973) 2021-08-13 18:17:22 -07:00
Colen Garoutte-Carson c98303bd2c Merge pull request #7967 from microsoft/main 2021-08-12 13:20:55 -07:00
Colen Garoutte-Carson c7945e8509 Merge pull request #7966 from microsoft/coleng/update_changelog_08122021 2021-08-12 13:14:35 -07:00
Colen Garoutte-Carson df6bd14d70 Update changelog 2021-08-12 13:02:45 -07:00
Bob Brown c788dd02c0 Merge branch 'main' into bobbrow/telemetryUpdate 2021-08-12 08:32:32 -07:00
Colen Garoutte-Carson c658673abb Merge pull request #7963 from microsoft/main
Merge main to insiders branch
2021-08-11 18:52:59 -07:00
Andrew Wang 3917fc4f08 Update Debugger Packages (#7964) 2021-08-11 18:39:05 -07:00
Colen Garoutte-Carson c916e8d930 Fix code folding bug (#7962) 2021-08-11 14:54:43 -07:00
Colen Garoutte-Carson 7230cf3954 Fix placement in changelog (#7956) 2021-08-11 11:14:01 -07:00
Colen Garoutte-Carson 4c3b402925 Update changelog for 1.6.0-insiders (#7952) 2021-08-10 18:38:15 -07:00
Sean McManus 36dd2d2458 Fix dependency issue. 2021-08-10 18:22:51 -07:00
Colen Garoutte-Carson a4c1e6a5be Add conditional use of vcFormat when formatting is set to Default (#7941) 2021-08-10 18:13:35 -07:00
Colen Garoutte-Carson ed64b7cbf2 Add support for most standard .editorconfig settings (#7927) 2021-08-06 19:57:27 -07:00
Bob Brown (DEVDIV) a0b665b9c7 Telemetry tweaks 2021-08-06 15:47:01 -07:00
Sean McManus 4d76f74f59 Fix architecture not supported check. (#7924) 2021-08-06 10:55:56 -07:00
Sean McManus 377c126a4a Merge pull request #7915 from microsoft/localization
[Auto] Localization - Translated Strings
2021-08-06 10:39:25 -07:00
Sean McManus 3bcc88e4a5 Fix another case. 2021-08-06 10:33:49 -07:00
Sean McManus 9c62fce293 Fix space in settings. 2021-08-06 10:24:36 -07:00
csigs 9f25573e73 Localization - Translated Strings 2021-08-06 07:04:06 +00:00
csigs d562206309 Localization - Translated Strings (#7896) 2021-08-03 18:02:33 -07:00
Colen Garoutte-Carson 590dd677e3 Use new modal w/ detail dialog for compiler list in Walkthrough (#7887) 2021-07-29 15:06:59 -07:00
Colen Garoutte-Carson bdbbfd3786 Enable localization of walkthrough MD files (provided they are actually HTML) (#7894) 2021-07-29 15:02:04 -07:00
Sean McManus d3a38d9f28 Fix It translation crash. (#7893) 2021-07-28 14:23:34 -07:00
csigs c5a7a01889 Localization - Translated Strings (#7885) 2021-07-28 00:16:42 -07:00
Sean McManus 604a2b7d87 Update IntelliSense string translations. (#7884)
* Update IntelliSense string translations.
2021-07-27 23:19:11 -07:00
Elaheh Rashedi d1372f928b change C_Cpp.default.compilerPath scope (#7873) 2021-07-27 14:09:36 -07:00
Sean McManus c7e99415e0 Reduce retry delay. (#7883) 2021-07-27 13:49:15 -07:00
Sean McManus bc4457c957 Retry more. (#7880) 2021-07-26 19:34:26 -07:00
Sean McManus ecdb08ec8c Fix clang-format used for multi-root. (#7871) 2021-07-26 17:15:52 -07:00
Sean McManus 3afa6206ff Remove .darwin from clang-format. (#7866) 2021-07-26 16:56:36 -07:00
csigs f2d4dec5a6 Localization - Translated Strings (#7852) 2021-07-26 11:10:48 -07:00
Andrew Wang 62fff2b37b Update Debugger Packages (#7858)
Debugger now ships using .NET 5 Runtime to run OpenDebugAD7.

Supports:
- win7-x86
- win-x64
- win10-arm64
- linux-x64
- linux-musl-x64
- linux-arm
- linux-arm64
- osx-x64

Cleaned up unused setup files.
Updated packageManager to download alpine dependencies.
Removed 'removeUnnecessaryFile' step since that removed windows
configurations for OpenDebugAD7.
2021-07-22 11:47:14 -07:00
Sean McManus fe2064d5b9 String fixes. (#7855)
* String fixes.
2021-07-21 16:28:09 -07:00
csigs c2419ad58d [Auto] Localization - Translated Strings (#7819)
* Localization - Translated Strings
2021-07-20 16:33:41 -07:00
Sean McManus 6b99f44475 Enable code analysis status with pause/cancel, add open file parsing status (#7831)
* Enable clang-tidy status to appear (with pause/resume commands), part of https://github.com/microsoft/vscode-cpptools/issues/2908.
* Enable file parsing status to appear, addressing some issues of https://github.com/microsoft/vscode-cpptools/issues/4117
* Enable status icons to be enabled/disabled: https://github.com/microsoft/vscode-cpptools/issues/7700 .
2021-07-20 16:21:02 -07:00
ChenLei eee5aa3060 chore: replace deprecated vscode-test with @vscode/test-electron (#7844) 2021-07-20 16:07:50 -07:00
Sean McManus 948bc0e138 Fix search not finding results in package.nls.json. (#7850) 2021-07-20 15:55:05 -07:00
Colen Garoutte-Carson deb7a7da46 Fix issue with compilerPathIsExplicit not being set properly (#7839) 2021-07-19 10:07:31 -07:00
Colen Garoutte-Carson 90fb9919f4 Provide separate semantic token fallback scopes for each supported language (#7829) 2021-07-14 17:53:28 -07:00
Colen Garoutte-Carson 11ed061136 Add logging of loggingLevel (#7807) 2021-07-14 11:58:27 -07:00
Sean McManus c98d437c0d Fix code folding bug. (#7818)
* Fix code folding bug.
2021-07-13 12:00:55 -07:00
kiron1andSean McManus 9c53c7090e Rename jason.files.missing to json.files.missing (#7820)
Co-authored-by: Sean McManus <[email protected]>
2021-07-13 10:09:30 -07:00
csigs a86d713e8a [Auto] Localization - Translated Strings (#7760)
* Localization - Translated Strings
Co-authored-by: Sean McManus <[email protected]>
2021-07-12 17:50:27 -07:00
Sean McManus 92384bf0c6 Merge pull request #7812 from microsoft/main
Merge for 1.5.1
2021-07-09 01:55:08 -07:00
Andrew Wang bbe5c42e64 Update Windows Debugger Packages (#7811)
* Fix vsdbg crash on windows x64

Addresses #7808

* Update package version and add CHANGELOG
2021-07-09 01:52:36 -07:00
Sean McManus 9791061ca2 Add localization hint. (#7799) 2021-07-08 21:46:24 -07:00
Colen Garoutte-Carson f87d7a735e Fix issue causing a squiggle in package.json (#7806) 2021-07-08 18:11:11 -07:00
Sean McManus 14055547fa Merge pull request #7805 from microsoft/main
Update package hashes for new packages (#7804)
2021-07-08 14:43:46 -07:00
Andrew Wang 9843f739db Update package hashes for new packages (#7804) 2021-07-08 14:39:36 -07:00
Sean McManus 3a3a3453e7 Merge pull request #7801 from microsoft/main
Merge for 1.5.0
2021-07-07 19:33:29 -07:00
Sean McManus 0228b9725e Merge branch 'release' into main 2021-07-07 19:22:36 -07:00
Sean McManus 385a267208 Update changelog for 1.5.0. (#7797)
* Update changelog for 1.5.0.
* Update fwlinks.
2021-07-07 19:20:03 -07:00
Austen OttandAndrew Wang bbf217f090 Add Windows ARM64 Debugger Packages (#7798)
* Add arm64 vsdbg package and update to newer versions.

* Remove arm64 block.

Co-authored-by: Andrew Wang <[email protected]>
2021-07-07 16:44:53 -07:00
Sean McManus f474c284f4 Fix code foldering with nested ifs. (#7793) 2021-07-07 15:30:52 -07:00
Sean McManus 7ad30dae85 Merge pull request #7766 from microsoft/main
Merge for 1.5.0-insiders3 (2nd time)
2021-07-01 14:25:47 -07:00
Elaheh Rashedi 3967429440 fix debugger for clang compilers (#7765) 2021-07-01 13:31:51 -07:00
Sean McManus 29b0b0611a Fix debug configuration selection cancellation. (#7763) 2021-07-01 12:05:23 -07:00
Sean McManus 2ab63a451a Merge pull request #7758 from microsoft/main
Merge for 1.5.0-insiders3
2021-06-30 17:46:54 -07:00
Sean McManus 2a9afe8046 Update changelog. (#7757) 2021-06-30 17:39:50 -07:00
csigsandSean McManus 51b983509d [Auto] Localization - Translated Strings (#7754)
* Localization - Translated Strings
* Add space before ":".

Co-authored-by: Sean McManus <[email protected]>
2021-06-30 10:53:47 -07:00
Elaheh Rashedi 36939092fb don't squiggle for "cl.exe" or "cl" path (#7752) 2021-06-28 17:57:59 -07:00
csigs 598ac0aff3 [Auto] Localization - Translated Strings (#7724)
* Localization - Translated Strings
Co-authored-by: Sean McManus <[email protected]>
2021-06-28 12:11:14 -07:00
Colen Garoutte-Carson ae14e4bb3d Use setTextDocumentLanguage to temporarily set language ID for CUDA sources, and headers (#7745) 2021-06-25 14:20:14 -07:00
Sean McManus 857bce91ee Merge pull request #7734 from microsoft/main
Merge for 1.5.0-insiders2
2021-06-21 15:49:31 -07:00
Sean McManus ef52c25aa6 1.5.0-insiders2 changelog (#7733)
* Update changelog.
2021-06-21 15:42:14 -07:00
jogo- 18d59c29ae CUDA/CPP extension (#7726)
* Missing dot: "cu" -> ".cu"
* Useless uppercase ".C" before needed lowercase ".c"
* Add same CPP extensions as here:
https://github.com/microsoft/vscode-cpptools/blob/f82b1beaa0899b67685441325592690a9b664be9/Extension/src/LanguageServer/cppBuildTaskProvider.ts#L83
2021-06-21 14:48:14 -07:00
jogo- f26ee1fb67 Fix typo in "unable.to.provide.configuraiton" (#7725)
* Fix typo in "unable.to.provide.configuraiton"

* Fix typo in "configuraiton" (chs)

* Fix typo in "configuraiton" (cht)

* Fix typo in "configuraiton" (csy)

* Fix typo in "configuraiton" (deu)

* Fix typo in "configuraiton" (esn)

* Fix typo in "configuraiton" (fra)

* Fix typo in "configuraiton" (ita)

* Fix typo in "configuraiton" (jpn)

* Fix typo in "configuraiton" (kor)

* Fix typo in "configuraiton" (plk)

* Fix typo in "configuraiton" (ptb)

* Fix typo in "configuraiton" (rus)

* Fix typo in "configuraiton" (trk)
2021-06-21 14:32:14 -07:00
Sean McManus f82b1beaa0 Fix c_cpp_properties.json squiggle on recursively found forcedInclde. (#7722) 2021-06-18 14:55:56 -07:00
Sean McManus e0c90207de Fix overlapping folding ranges. (#7716) 2021-06-18 14:05:59 -07:00
Sean McManus e2d49e7c7a Inline macro code action (#7715)
* TypeScript changes for "Inline macro".
2021-06-18 13:56:36 -07:00
csigs 87b4652f92 [Auto] Localization - Translated Strings (#7661) 2021-06-18 13:19:22 -07:00
Sean McManus 812ab5e250 Fix code action warning. (#7714) 2021-06-17 14:04:59 -07:00
Colen Garoutte-Carson 767c538bbf Integrate experimentation platform. Remove ABTesting. (#7659) 2021-06-16 17:58:34 -07:00
Sean McManus 49b8160a58 Merge pull request #7695 from microsoft/main
Fix settings UI. (#7694)
2021-06-14 15:21:58 -07:00
Sean McManus 6dba4f60ff Fix settings UI. (#7694) 2021-06-14 15:21:22 -07:00
Sean McManus 4d80ef39cb Merge pull request #7691 from microsoft/main
Minor changes. (#7690)
2021-06-14 11:31:53 -07:00
Sean McManus 8e0074e580 Minor changes. (#7690) 2021-06-14 11:30:51 -07:00
Sean McManus 8ea76a7d8b Merge pull request #7683 from microsoft/1_5_0_insiders
1 5 0 insiders
2021-06-11 19:36:17 -07:00
Sean McManus 046821112b Merge branch 'main' into 1_5_0_insiders 2021-06-11 17:47:43 -07:00
Sean McManus 399f19752d 1.5.0-insiders changelog (#7681)
* Update changelog.
2021-06-11 17:46:10 -07:00
Andrew Wang 883972a466 Add SymbolOptions for CppVsDbg (#7680)
* Add SymbolOptions for CppVsDbg

* Address PR issues
2021-06-11 12:00:49 -07:00
Colen Garoutte-Carson 5a48ce22c7 Switch to returning undefined when cancelling a folder ranges request (#7672) 2021-06-09 16:30:52 -07:00
Colen Garoutte-Carson 2278b396a8 Fix an issue causing editorConfig not to be used (#7666) 2021-06-08 16:22:36 -07:00
Sean McManus 54bf446cbc Merge pull request #7658 from microsoft/1_4_1
1.4.1
2021-06-07 18:02:47 -07:00
Sean McManus ecfe50be26 Update changelog for 1.4.1. (#7657)
* Update changelog for 1.4.1.
2021-06-07 17:43:28 -07:00
dependabot[bot] 7ecc049fd4 Bump glob-parent from 5.1.1 to 5.1.2 in /.github/actions (#7660) 2021-06-07 17:42:11 -07:00
Sean McManus 7e4fa575f8 Update changelog for 1.4.1. (#7657)
* Update changelog for 1.4.1.
2021-06-07 17:32:43 -07:00
csigs 1994fa1a7e [Auto] Localization - Translated Strings (#7651)
* Localization - Translated Strings
* Fixes
Co-authored-by: Sean McManus <[email protected]>
2021-06-07 16:27:22 -07:00
Sean McManus 623029cc62 Better fix for settings UI not getting updated. (#7656)
* Better fix for settings UI not getting updated.
2021-06-07 16:23:16 -07:00
Sean McManus 4076edd843 Workaround for webViewPanel.postMessage getting dropped. (#7647)
* Workaround for webViewPanel.postMessage getting dropped.
2021-06-07 16:23:10 -07:00
Sean McManus a6c015adc3 Better fix for settings UI not getting updated. (#7656)
* Better fix for settings UI not getting updated.
2021-06-07 16:02:55 -07:00
Sean McManus 20954f7f75 Resolve ${workspaceFolder} in compilerPath for config squiggles. (#7650) 2021-06-04 16:38:21 -07:00
Sean McManus 315f3086f3 Workaround for webViewPanel.postMessage getting dropped. (#7647)
* Workaround for webViewPanel.postMessage getting dropped.
2021-06-04 14:49:30 -07:00
Sean McManus 783e4bc227 Update IntelliSense strings. (#7622)
* Update IntelliSense strings.
* Fix pt-br translation issues.
2021-06-01 15:04:37 -07:00
Tyler Davis 26fdb44186 Change instances of OSX to macOS (#7636)
* Change instances of OSX to macOS
Add x86_64 descriptor
Whitespace stripping

* Style consistency
Add x86_64 descriptor to ClangFormat
2021-06-01 14:55:06 -07:00
jogo- 39f50a85c4 Fix typos in messages.json (fr) (#7625) 2021-06-01 11:10:41 -07:00
Colen Garoutte-Carson f973792142 Switch to new vscode-nls-dev, with support for hints in package.nls.json (#7620) 2021-05-28 13:22:52 -07:00
Sean McManus 1ad52f98b1 Merge pull request #7612 from microsoft/main
Fix Walkthrough property (#7611)
2021-05-27 15:08:21 -07:00
Colen Garoutte-Carson 934a8563df Fix Walkthrough property (#7611) 2021-05-27 15:06:09 -07:00
Sean McManus 034390f36c Merge pull request #7608 from microsoft/seanmcm/1_4_0_release
1.4.0-release
2021-05-27 13:09:10 -07:00
Sean McManus 6d85f9cdf9 Merge branch 'main' into seanmcm/1_4_0_release 2021-05-27 13:03:49 -07:00
Sean McManus 58d3a5285a Update fwlinks. (#7607) 2021-05-27 13:03:00 -07:00
Colen Garoutte-Carson 989ca62269 Switch to new properties for walkthrough in package.json (#7606) 2021-05-27 12:33:55 -07:00
Colen Garoutte-Carson 13968a9723 Run loc pipeline always (#7605) 2021-05-27 12:23:16 -07:00
Sean McManus 1d0a886ec6 Merge branch 'main' into seanmcm/1_4_0_release 2021-05-27 11:57:43 -07:00
Sean McManus 5798b073a1 Update changelog for 1.4.0. (#7601) 2021-05-27 11:56:14 -07:00
Julia Reid 976c901875 added two settings to the walkthrough in package.json to hide walkthrough unless enabled by an experiment (#7598) 2021-05-26 23:46:11 -07:00
csigs b8fe2ac52e Localization - Translated Strings (#7575) 2021-05-26 10:19:46 -07:00
Sean McManus 18ac98a353 Merge pull request #7591 from microsoft/seanmcm/1_4_0_insiders3_2
1.4.0-insiders3 2nd time
2021-05-25 15:27:47 -07:00
Sean McManus fad828ed78 Merge branch 'main' into seanmcm/1_4_0_insiders3_2 2021-05-25 14:37:44 -07:00
Sean McManus 4b1be560bb Update browserslist dependency. (#7589) 2021-05-25 14:35:27 -07:00
Sean McManus ee36eab4b6 Delay Insiders prompt until more activations occur. (#7587)
* Delay Insiders prompt until 10 activations occur.
2021-05-25 13:48:32 -07:00
Sean McManus c2a1a88257 Fix the walkthrough for remote targets. (#7582)
* Fix the walkthrough for remote targets.
2021-05-25 13:41:03 -07:00
Sean McManus 3150de06ca Fix package.nls.json issues. (#7581)
* Fix package.nls.json issues.
* Update changelog.
2021-05-25 13:31:08 -07:00
Sean McManus 61ef05afc8 Fix typos. (#7573)
* Fix typos.
2021-05-21 13:45:37 -07:00
csigs 357cc3fdc1 Localization - Translated Strings (#7567) 2021-05-21 11:32:08 -07:00
jogo- fa0fe29791 Fix typo in package.nls.json (#7568) 2021-05-21 10:22:36 -07:00
Sean McManus f675d7ece3 Merge pull request #7566 from microsoft/seanmcm/1_4_0_insiders3
1.4.0-insiders3
2021-05-20 18:44:01 -07:00
Sean McManus 213799975c Merge branch 'main' into seanmcm/1_4_0_insiders3 2021-05-20 18:39:44 -07:00
Sean McManus a1044f2f30 Update changelog for 1.4.0-insiders3. (#7565)
* Update changelog for 1.4.0-insiders3.
2021-05-20 18:38:28 -07:00
Julia Reid df670f8e13 Jureid/walkthrough clean (#7554)
* removed walkthrough task for Build your C++ file and simplified instructions for Run and debug your C++ file
* Addressing PR feedback - removed unused files and added step for selecting compiler in markdown file for Run and debug your C++ file
2021-05-20 18:25:04 -07:00
Sean McManus a64b60670f Update mac clang-format hashes. (#7564) 2021-05-20 18:13:35 -07:00
Sean McManus 473ce33fec Add missing localization. (#7563) 2021-05-20 18:05:23 -07:00
Colen Garoutte-Carson 63193e123b Use provider ID associated with cached browse config to auto-detect provider (#7562) 2021-05-20 17:02:24 -07:00
Sean McManus 1e47af5b6f Add symbol scopes. (#7556)
* Add symbol scopes.
2021-05-20 16:38:07 -07:00
Colen Garoutte-Carson 11f7300035 Cleanup IsExplicit flags. (#7555) 2021-05-20 12:47:36 -07:00
csigs c67590a505 [Auto] Localization - Translated Strings (#7544) 2021-05-18 12:52:15 -07:00
Colen Garoutte-Carson 9e592073dd Send package version to native process (#7539) 2021-05-17 17:10:46 -07:00
Sean McManus 3512a088d6 Merge pull request #7537 from microsoft/seanmmc/1_4_0_insiders2
1.4.0-insiders2
2021-05-17 14:09:30 -07:00
Sean McManus 8ec3dfa3fd Merge branch 'main' into seanmmc/1_4_0_insiders2 2021-05-17 12:58:47 -07:00
Sean McManus e5cdfac6b7 1.4.0-insiders2 changelog (#7536)
* Update changelog.
2021-05-17 12:50:52 -07:00
Colen Garoutte-Carson f7543e3aaa Add Getting Started Walkthrough (#7512) 2021-05-17 12:14:54 -07:00
Sean McManus 7a2de290cf Delay settings UI update so it's not blank. (#7524)
* Delay settings UI update so it's not blank.
2021-05-14 14:14:36 -07:00
csigs 8c49ac2a8d Localization - Translated Strings (#7521) 2021-05-14 11:13:27 -07:00
Sean McManus 557ced4b75 Add capabilities. (#7486) 2021-05-13 19:14:27 -07:00
Sean McManus 106bde2dc6 Merge pull request #7464 from microsoft/seanmcm/updateIntelliSenseStrings2
Update IntelliSense error strings.
2021-05-10 13:23:44 -07:00
Sean McManus a509b332b5 Merge branch 'main' into seanmcm/updateIntelliSenseStrings2 2021-05-10 13:13:06 -07:00
Sean McManus 905f8dc216 Merge pull request #7504 from microsoft/seanmcm/1_4_0_insidersMerge2
1.4.0-insiders merge2
2021-05-10 11:55:49 -07:00
Sean McManus 6464f55fcf Merge branch 'main' into seanmcm/1_4_0_insidersMerge2 2021-05-10 09:54:57 -07:00
Elaheh Rashedi 6ae687faa3 check if the directory exists (#7487) 2021-05-10 08:12:48 -07:00
Colen Garoutte-Carson 2e00bb9a31 Minor spelling fix (#7490) 2021-05-07 18:18:14 -07:00
csigs 10090a03a6 Localization - Translated Strings (#7485) 2021-05-07 12:39:15 -07:00
Colen Garoutte-Carson 1f278e75c3 Consolidate localization import and export into same YML. Use LCL hosted by the Loc team. (#7479) 2021-05-07 11:42:17 -07:00
Sean McManus dba4a28d88 Merge pull request #7480 from microsoft/seanmcm/1_4_0_insiders
1.4.0-insiders
2021-05-06 19:39:23 -07:00
Sean McManus bcc256ec16 Update version. (#7481) 2021-05-06 19:00:14 -07:00
Sean McManus 53a3864fdc Update version. 2021-05-06 18:46:06 -07:00
Sean McManus 0ea25159d4 Merge branch 'main' into seanmcm/1_4_0_insiders 2021-05-06 18:41:47 -07:00
Sean McManus 42fe8076e6 Update changelog for 1.4.0-insiders (#7476)
* Update changelog.
2021-05-06 18:35:25 -07:00
Colen Garoutte-Carson 5297166d4f Use CancellationError to avoid logging of cancels as errors (#7477) 2021-05-06 16:31:24 -07:00
dependabot[bot] b89e45a4b6 Bump lodash from 4.17.20 to 4.17.21 in /.github/actions (#7475)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <[email protected]>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-06 15:05:44 -07:00
Sean McManus 060c14117c Update hosted-git-info. (#7474) 2021-05-06 14:50:39 -07:00
csigs b00df8d64d Localization - Translated Strings (#7469) 2021-05-06 10:02:38 -07:00
Elaheh Rashedi 4e7b679889 refactoring async/await 2021-05-05 15:26:49 -07:00
Gregg Miskelly 30950f0aaa Update cppvsdbg debug adapter (#7467)
Changes:
* Adds support for loading Concord extensions to the cppvsdbg debug adapter (see [documentation](https://github.com/microsoft/ConcordExtensibilitySamples/wiki/Support-for-VS-Code-cppvsdbg-Scenarios) for more information)
* Adds support for exception conditions to cppvsdbg (see documentation file in this PR for more information)
2021-05-05 14:29:17 -07:00
Sean McManus 385c336ba7 Update ESLint. (#7466) 2021-05-05 12:04:06 -07:00
Sean McManus b8fae51686 Update IntelliSense error strings. 2021-05-04 17:59:45 -07:00
csigs c750359475 Localization - Translated Strings (#7460) 2021-05-03 16:18:39 -07:00
Elaheh Rashedi 618c9c7d0c refactoring async/await (#7277)
refactor with <async/await>
2021-05-03 15:33:01 -07:00
Colen Garoutte-Carson 8b36869283 Switch to new localization pipeline (#7441) 2021-05-03 13:41:03 -07:00
Sean McManus 64c9e5f67a Fix policheck issues. (#7458)
* Fix policheck issues.
2021-05-03 11:10:05 -07:00
Sean McManus 5dae210933 Fix squiggle on empty compilerPath. (#7457) 2021-05-03 10:53:32 -07:00
Alan LeungandAndrew Wang 85312ed31d Add embedded debugging support options (#7449)
* Add stopAtConnect and hardwareBreakpoints options

* Run yarn generateOptionsSchema

Co-authored-by: Andrew Wang <[email protected]>
2021-04-30 17:07:03 -07:00
Philip Craig 19db7fe4b5 Fix typo "apline" to "alpine" (#7438) 2021-04-30 16:53:51 -07:00
Sean McManus 38e90ce750 Update fwlinks for clang-format 12 (#7447)
* Update fwlinks for clang-format.
* Update hashes.
2021-04-30 16:35:47 -07:00
Sean McManus 76f22333e6 Update environement description. (#7417) 2021-04-23 14:48:30 -07:00
Sean McManus 740c141887 Update common.json. (#7416) 2021-04-23 14:22:42 -07:00
Colen Garoutte-Carson b00eaa2670 Some cleanup of use of zipfile (#7410) 2021-04-23 13:42:20 -07:00
Sean McManus 3a839384bb Merge pull request #7363 from HackintoshwithUbuntu/main
Changing default launch.json from "${workspaceFolder}" to "${fileDirname}"
2021-04-21 14:43:26 -07:00
Sean McManus 5f307788e2 Merge branch 'main' into main 2021-04-21 14:34:53 -07:00
Colen Garoutte-Carson ce9ab28489 Remove VSIX binary compat warning on some platform/arch combos (#7397) 2021-04-21 12:22:49 -07:00
Colen Garoutte-Carson 3ca675fd58 Add action workflows for 'enhancement' label (#7398) 2021-04-21 12:12:55 -07:00
Sean McManus 09519ae210 Merge branch 'main' into main 2021-04-21 10:11:09 -07:00
Elaheh Rashedi a370b3d064 separate handling compiler squiggles from other paths (#7343)
* separate compiler squiggles
2021-04-20 13:10:31 -07:00
Sean McManus 1246f5a62c Merge pull request #7392 from microsoft/main
Merge for 1.3.1
2021-04-19 15:07:20 -07:00
Sean McManus 164a2962b6 Update changelog for 1.3.1. (#7391)
* Update changelog for 1.3.1.
* Update version.
2021-04-19 14:53:42 -07:00
Sean McManus 5f14aab942 Merge branch 'main' into main 2021-04-16 15:56:57 -07:00
Syed Ahmad 1502b87e47 update ${workspaceFolder} to ${fileDirname} #7362 2021-04-16 10:12:48 +10:00
Sean McManus 88768b9c28 Attempt to fix random yarn timeout on Mac. (#7371)
* Attempt to fix random yarn timeout on Mac.
2021-04-15 13:04:42 -07:00
Sean McManus 94ab7f9087 Fix 32-bit Windows. (#7373) 2021-04-15 12:45:22 -07:00
csigsandDevDiv Build Lab - Dev14 e5abb36d32 Localization - Translated Strings (#7366)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-15 09:58:45 -07:00
Syed Ahmad 91393ad80e update ${workspaceFolder} to ${fileDirname} #7362 2021-04-15 16:29:10 +10:00
Syed Ahmad ad6fd53398 update ${workspaceFolder} to ${fileDirname} #7362 2021-04-15 16:27:47 +10:00
Yonggang Luo d85e30e746 Logging invalid provided cpp configuration (#7350) 2021-04-14 10:02:46 -07:00
csigsandDevDiv Build Lab - Dev14 1935d85357 Localization - Translated Strings (#7361)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-14 09:55:21 -07:00
Sean McManus 18f29bffa8 Fix activation. (#7345) 2021-04-13 17:56:49 -07:00
csigsandDevDiv Build Lab - Dev14 f0a8c1aa16 Localization - Translated Strings (#7357)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-13 16:34:28 -07:00
csigsandDevDiv Build Lab - Dev14 f3c8c5f389 Localization - Translated Strings (#7353)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-13 10:05:13 -07:00
Michelle Matias 52f7999233 Merge pull request #7352 from microsoft/mimatias/r1-3-0
1.3.0 release
2021-04-12 22:45:17 -07:00
Michelle Matias 173f79ca4e Merge branch 'main' into mimatias/r1-3-0 2021-04-12 22:38:09 -07:00
Michelle Matias 7ed461992e update fwlinks and change log (#7348) 2021-04-12 22:29:29 -07:00
Elaheh Rashedi 57f9e1e5c9 Merge pull request #7315 from microsoft/ella/taskScope
Modify "Configure Task" behavior for multiroot
2021-04-12 14:32:52 -07:00
Elaheh Rashedi 0bb6c89282 Merge branch 'main' into ella/taskScope 2021-04-12 13:19:20 -07:00
Andrew Wang bfab754869 Update CODE_OF_CONDUCT.md (#7340)
Update page to match
https://github.com/microsoft/repo-templates/blob/main/shared/CODE_OF_CONDUCT.md
2021-04-12 11:16:17 -07:00
csigsandDevDiv Build Lab - Dev14 957b812f78 Localization - Translated Strings (#7338)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-12 10:15:08 -07:00
Michelle Matias 288978b251 Add feature request template, update other issues templates (#7330) 2021-04-09 14:29:00 -07:00
csigsandDevDiv Build Lab - Dev14 9a37e6882c Localization - Translated Strings (#7328)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-09 10:25:13 -07:00
Colen Garoutte-Carson 143207aadb Merge to insiders (#7320) 2021-04-08 15:22:46 -07:00
Sean McManus b2c9167eec 1_3_0_insiders5 changelog (#7319)
* Update changelog for 1.3.0-insiders5.
2021-04-08 14:21:47 -07:00
Colen Garoutte-Carson 8b7dc8ba3a Update a string. Also, correct use of "MacOS" to the preferred "macOS" (#7318) 2021-04-08 12:59:42 -07:00
Elaheh Rashedi 7ea76ed031 Merge branch 'main' into ella/taskScope 2021-04-08 10:39:55 -07:00
Elaheh Rashedi f092c8fadf linter error fix 2021-04-08 10:39:29 -07:00
csigsandDevDiv Build Lab - Dev14 1001afecc8 Localization - Translated Strings (#7317)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-08 09:52:32 -07:00
Elaheh Rashedi add968510d change task scope to Workspace 2021-04-07 16:42:51 -07:00
Colen Garoutte-Carson 68c891e713 Fix an issue with validating browse configs (#7313) 2021-04-07 15:35:58 -07:00
Colen Garoutte-Carson 2ad3a4006e Add catch of JSON.parse() when reading install.lock. Update message. (#7312) 2021-04-07 13:03:16 -07:00
csigsandDevDiv Build Lab - Dev14 cc1eb1a977 Localization - Translated Strings (#7308)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-07 10:19:17 -07:00
Michelle Matias 0edf6c3ea7 Merge pull request #7304 from microsoft/mimatias/insiders4-2
1.3.0-insiders4 (#2)
2021-04-06 16:39:09 -07:00
Colen Garoutte-Carson bdd881b4e7 Add check and message for x64 VSIX on M1 Mac (#7303) 2021-04-06 16:26:56 -07:00
Andreea Isac 0b4f51b32e CMake retention telemetry (#7296)
* CMake retention telemetry
2021-04-06 15:35:11 -07:00
Michelle Matias 4e22b6577f Merge pull request #7302 from microsoft/mimatias/insiders4
1.3.0-insiders4
2021-04-06 11:48:40 -07:00
Michelle Matias 1ab60bc247 Merge branch 'insiders' into mimatias/insiders4 2021-04-06 11:45:09 -07:00
Michelle Matias 25d98de880 Changelog for 1.3.0-insiders4 (#7301) 2021-04-06 11:20:44 -07:00
Michelle Matias 7fa6d48ce4 return false when no hash is specified (#7300) 2021-04-06 10:53:30 -07:00
csigsandDevDiv Build Lab - Dev14 a07827e079 Localization - Translated Strings (#7297)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-06 10:46:06 -07:00
Sean McManus 7290c0ce6a Add C_Cpp.files.exclude. (#7285)
* Add C_Cpp.files.exclude.
2021-04-05 14:51:07 -07:00
Colen Garoutte-Carson cc13a92a06 Relax field requirements for custom configs (#7295) 2021-04-05 14:05:31 -07:00
csigsandDevDiv Build Lab - Dev14 0c1df4edb1 Localization - Translated Strings (#7294)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-05 11:54:27 -07:00
Sean McManus e1cf5abc32 Fix multiroot GoToNextDirectiveInGroup. (#7284) 2021-04-05 10:01:04 -07:00
Michelle Matias d9551d2dcc Support macOS ARM64 vsix (#7278) 2021-04-02 14:59:20 -07:00
csigsandDevDiv Build Lab - Dev14 35d12432e7 Localization - Translated Strings (#7280)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-04-02 11:18:57 -07:00
Colen Garoutte-Carson 8bf86bedcf Strip IsExplicit flags if seen in c_cpp_properties.json (#7272) 2021-04-01 16:51:27 -07:00
Colen Garoutte-Carson 33eb2f6abe Add some files missed when merging to Insiders branch (#7271) 2021-04-01 12:15:23 -07:00
Colen Garoutte-Carson 11262438e3 Merge main into insiders (#7266) 2021-03-31 19:16:40 -07:00
Colen Garoutte-Carson 53d99cddc4 Update changelog for 1.3.0-insiders3 (#7263) 2021-03-31 19:09:13 -07:00
Colen Garoutte-Carson 8aa5f40dfa Add CUDA support (#7255) 2021-03-31 15:49:49 -07:00
Colen Garoutte-Carson 7133b63c95 Add commands for navigating between the next/prev preprocessor conditionals in a chain (#7256) 2021-03-31 13:07:05 -07:00
Sean McManus 885881294d Update dependencies. (#7239)
* Update webpack dependencies.
* Update node.
* Update copy-props.
* Update ts-loader to fix warning messages.
* Update mocha.
2021-03-31 11:00:46 -07:00
Sean McManus aecb7d541b Fix activation event (#7253)
* Minor activation event fix.
2021-03-31 10:39:40 -07:00
Sean McManus db7c9c78b9 Fix comment continuation. (#7238)
* Fix comment continuation.
2021-03-31 10:27:20 -07:00
Aleksa Pavlovic 0d2e793df7 Fix compileCommands path resolution (#7242) 2021-03-31 10:01:26 -07:00
Bob Brown 0317f3439d Update README.md 2021-03-31 08:57:28 -07:00
Colen Garoutte-Carson 673a68d4cc Merge to insiders (#7236) 2021-03-25 14:05:32 -07:00
Colen Garoutte-Carson ae2faa7b2d Update changelog for 1.3.0-insiders2 (#7235) 2021-03-25 14:05:15 -07:00
Sean McManus fd63b2674a Update changelog. (#7224)
* Update changelog.
* Change date.
2021-03-24 12:42:04 -07:00
Sean McManus 437d9b333a Merge pull request #7223 from microsoft/1_3_0_insiders2
1.3.0-insiders2 merge
2021-03-24 12:10:49 -07:00
Sean McManus 0139274856 Change date. 2021-03-24 12:09:28 -07:00
Sean McManus 87cfa702bc Update changelog. 2021-03-24 06:04:49 -07:00
Sean McManus 47b502b965 Update changelog. 2021-03-24 05:57:45 -07:00
Sean McManus 013bff267e Merge branch 'insiders' into 1_3_0_insiders2 2021-03-24 05:53:35 -07:00
Sean McManus 56ac2218d5 Change default for autocompleteAddParentheses (#7210) 2021-03-23 06:36:00 -07:00
Elaheh Rashedi ac0801f75e Merge pull request #7211 from microsoft/ella/asterisk
Modifying the multi-line comment rules
2021-03-22 17:03:51 -04:00
Elaheh Rashedi 0924f5c0e9 fix multiline math formulas 2021-03-22 13:12:46 -07:00
Elaheh Rashedi 0e4389c96f Merge branch 'ella/asterisk' of https://github.com/Microsoft/vscode-cpptools into ella/asterisk 2021-03-22 12:52:44 -07:00
Elaheh Rashedi 61e33bda63 Merge branch 'main' into ella/asterisk 2021-03-22 15:43:01 -04:00
Elaheh Rashedi 80b4c418ad clean code 2021-03-22 12:41:39 -07:00
Elaheh Rashedi 483f9823c8 final testing 2021-03-22 12:36:16 -07:00
Elaheh Rashedi 607bc7af62 test passing 2021-03-22 11:19:39 -07:00
Elaheh Rashedi 905fc0fe9b test failiing 2021-03-22 09:04:39 -07:00
Elaheh Rashedi e79dbfb671 some ranames to avoid confusion 2021-03-21 16:55:02 -07:00
Elaheh Rashedi 217760ea68 save comments 2021-03-21 15:08:40 -07:00
csigsandDevDiv Build Lab - Dev14 71d78e310b Localization - Translated Strings (#7196)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-03-19 10:37:16 -07:00
Elaheh Rashedi b641611b86 update minimumVSCodeVersion 2021-03-18 15:41:56 -07:00
Elaheh Rashedi 50a8c7b1df Merge branch 'main' into ella/asterisk 2021-03-18 14:20:13 -07:00
Elaheh Rashedi f7a1d32bea revert a move 2021-03-18 13:28:26 -07:00
Elaheh Rashedi 062b0a80d3 revert a move 2021-03-18 13:27:00 -07:00
Elaheh Rashedi 81989243ad revert a move 2021-03-18 13:22:14 -07:00
Elaheh Rashedi d37cffa9d8 change split and continue rule 2021-03-18 13:03:03 -07:00
csigsandDevDiv Build Lab - Dev14 bde41134f9 Localization - Translated Strings (#7191)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-03-18 10:12:58 -07:00
csigsandDevDiv Build Lab - Dev14 4497b7fb2b Localization - Translated Strings (#7187)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-03-17 11:28:37 -07:00
Colen Garoutte-Carson d942d64b7b Merge main to insiders (#7186) 2021-03-16 20:56:48 -07:00
Colen Garoutte-Carson 63dbbb8b38 Update changelog date (#7183) 2021-03-16 20:44:21 -07:00
Colen Garoutte-Carson 1a2bf6fc4c Merge main into insiders (#7180) 2021-03-16 17:44:59 -07:00
Colen Garoutte-Carson 64cc5c42e7 Update msc version (#7182) 2021-03-16 16:53:54 -07:00
Sean McManus 17f7cd1c2c Avoid running the node-addon code if the setting isn't enabled. (#7140) 2021-03-16 16:13:48 -07:00
Colen Garoutte-Carson 0b66fe2535 Update changelog for insiders (#7181) 2021-03-16 16:13:07 -07:00
Colen Garoutte-Carson 1cc0983315 New edge strings from FI (#7179) 2021-03-16 15:39:10 -07:00
Mestery 828589705d support yarn pnp for nodeAddonIncludes (#7123)
This solves problems with Yarn PnP and node addon includes.
2021-03-15 14:39:23 -07:00
Sean McManus fb0b4d1504 Update TPN. (#7173) 2021-03-15 14:26:24 -07:00
Sean McManus 390c987081 Update xmldom and mocha. (#7172)
* Update xmldom and mocha.
2021-03-15 12:05:55 -07:00
csigsandDevDiv Build Lab - Dev14 87f0b9fdee Localization - Translated Strings (#7169)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-03-15 10:17:36 -07:00
c83637e6fe Localization - Translated Strings (#7142)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
Co-authored-by: Sean McManus <[email protected]>
2021-03-12 15:17:44 -08:00
Michelle Matias c4b44d3038 Add Doxygen tag label "retval" (#6983) 2021-03-12 14:23:35 -08:00
Sean McManus 0b1064ea7d Fix dependencies. (#7132) 2021-03-09 11:00:15 -08:00
Sean McManus 16f5f68ff8 Add autocompleteAddParentheses (#7109)
* autocompleteAddParentheses
Fixes #882
2021-03-08 17:39:54 -08:00
Sean McManus d2cb68506b Fix getDocumenSymbol before didOpen. (#7104) 2021-03-03 21:29:34 -08:00
csigsandDevDiv Build Lab - Dev14 9b290c5a8a Localization - Translated Strings (#7099)
Co-authored-by: DevDiv Build Lab - Dev14 <[email protected]>
2021-03-03 10:09:14 -08:00
Michelle Matias 7bac5a7101 Merge pull request #7053 from microsoft/mimatias/main122
Merge main to release for 1.2.2
2021-02-25 14:38:00 -08:00
Michelle Matias 736cf279c3 Merge branch 'release' into mimatias/main122 2021-02-25 14:36:54 -08:00
Michelle Matias 3d49cfa0e7 Update changelog and fwlink for version 1.2.2 (#7052) 2021-02-25 14:29:50 -08:00
Sean McManus 9e7b2d68ad Fix "console" squiggle with "cppdbg". (#7051)
* Fix "console" squiggle with "cppdbg".
* Change "default"
2021-02-25 13:42:13 -08:00
Elaheh Rashedi 8401086544 Merge pull request #6977 from microsoft/release1.2.1_2
remove main from version
2021-02-16 17:59:36 -05:00
Elaheh Rashedi 5b44545fd2 remove main from version 2021-02-16 17:54:34 -05:00
Elaheh Rashedi 52b2b8f6df Merge pull request #6961 from microsoft/release1.2.1
Release1.2.1
2021-02-12 14:00:28 -05:00
Elaheh Rashedi 67345e0e6d Merge branch 'main' into release1.2.1 2021-02-12 13:44:10 -05:00
Sean McManus ecf57ce8d2 Merge pull request #6892 from microsoft/seanmcm/1_2_0_release3
Update 1.2.0
2021-02-02 13:31:31 -08:00
Sean McManus 0259eeeb5d Merge branch 'main' into seanmcm/1_2_0_release3 2021-02-02 13:25:59 -08:00
Elaheh Rashedi 8c989a057d Merge branch 'main' of https://github.com/Microsoft/vscode-cpptools into ella/asterisk 2021-02-02 13:15:17 -08:00
Elaheh Rashedi 3a0aa9eaa9 add previousLineText from insider release 2021-02-02 13:14:07 -08:00
Sean McManus 0a13cdec11 Merge pull request #6888 from microsoft/seanmcm/1_2_0_release_2
1.2.0 release 2nd try
2021-02-01 20:36:01 -08:00
Sean McManus 6ff23b461c Merge branch 'main' into seanmcm/1_2_0_release_2 2021-02-01 20:27:47 -08:00
Sean McManus 978d9ae574 Merge pull request #6885 from microsoft/seanmcm/1_2_0
1.2.0
2021-02-01 14:19:22 -08:00
Sean McManus 399b43666f Merge for 1.2.0. 2021-02-01 14:09:10 -08:00
Elaheh Rashedi 26d5679d5d add test 2021-01-04 13:34:44 -08:00
Elaheh Rashedi f297d411df change Rules to TsRules 2020-12-21 13:04:52 -08:00
Sean McManus 25d74973b0 Update TPN for release. (#6622) 2020-12-03 17:44:20 -08:00
Sean McManus adf99597f6 Merge pull request #6620 from microsoft/seanmcm/cherryPick6619
cherry pick6619
2020-12-03 16:12:07 -08:00
Sean McManus 52fe7952d6 Update changelog. 2020-12-03 14:14:30 -08:00
Sean McManus aa4c5df4b7 Fix cwd. (#6619)
Fixes #6618
2020-12-03 14:11:07 -08:00
Sean McManus a3de2f9bee Merge pull request #6614 from microsoft/seanmcm/cherryPick6609
cherry pick 6609
2020-12-02 22:17:06 -08:00
Colen Garoutte-Carson 28f6dd66d2 Add field to activation telemetry for web-based Codespaces (#6609) 2020-12-02 22:15:07 -08:00
Colen Garoutte-Carson 89fd6a960c Remove telemetry for remoteName (#6537) 2020-12-02 22:10:26 -08:00
Sean McManus 8b06e7d04f Merge pull request #6607 from microsoft/seanmcm/1_1_3
Merge for 1.1.3 release
2020-12-01 20:53:46 -08:00
Sean McManus b1021432ec Update changelog and @types/vscode 2020-12-01 17:41:56 -08:00
Sean McManus 2cca514128 Fix infinite loop after cpptools crashes. (#6604)
* Fix infinite loop after cpptools crashes: https://github.com/microsoft/vscode-cpptools/issues/6603
2020-12-01 17:25:04 -08:00
Sean McManus 2e33027272 Fix cppbuild task warnings. (#6557)
* Fix cppbuild task warnings: https://github.com/microsoft/vscode-cpptools/issues/6556
2020-12-01 17:21:30 -08:00
Elaheh Rashedi 73a0b95df7 Add localization to strings in LanguageServer\cppBuildTaskProvider.ts (#6544)
* localizing for task provider

* localize single_file_mode_not_available

* remove end of line from localalized string

* modify error(s)

* remove space from localized string

* remove space from localized string
2020-12-01 17:20:56 -08:00
Sean McManus 39f32a3b45 Fix build task bugs. (#6539)
* Fix build task bugs.
* Use VS Code's variable resolution.
2020-12-01 17:20:42 -08:00
Sean McManus 16f352169c 1_1_2 release (#6532)
* Fix fileDirname. (#6482)
* Update changelog.
* Update the version.
2020-11-17 18:02:59 -08:00
Sean McManus adff6e66d5 Merge pull request #6481 from microsoft/seanmcm/1_1_1_release
1_1_1 release
2020-11-09 16:05:21 -08:00
Sean McManus 1877aed36a Merge. 2020-11-09 16:01:38 -08:00
Sean McManus 50c1efadd8 Fix version. (#6449) 2020-11-05 15:41:17 -08:00
Sean McManus 83df90082a Merge pull request #6448 from microsoft/seanmcm/1_1_0_release
1_1_0 release
2020-11-05 15:30:17 -08:00
Sean McManus b1d7d19ed7 Merge branch 'master' into seanmcm/1_1_0_release 2020-11-05 15:25:21 -08:00
Andrew Wang 80ea255a7c Merge branch 'master' into release 2020-10-06 13:05:19 -07:00
Bob Brown (DEVDIV) f3f151075b removing duplicate cleanup stage 2020-09-22 10:28:05 -07:00
903 changed files with 114113 additions and 66681 deletions
@@ -0,0 +1,79 @@
name: Bug Report - Language Service
description: Create a bug report for IntelliSense, code editing, code navigation, code completion, code formatting, semantic colorization, etc.
body:
- type: markdown
attributes:
value: |
### Is there an existing issue for this?
Please search our [existing issues](https://github.com/microsoft/vscode-cpptools/issues) to see if an issue already exists for the bug you encountered.
Please also review our [documentation](https://code.visualstudio.com/docs/languages/cpp) and [FAQs](https://code.visualstudio.com/docs/cpp/faq-cpp).
- type: textarea
attributes:
label: Environment
description: |
Please provide the information for the following:
- OS and Version
- VS Code Version
- C/C++ Extension Version
- If using SSH remote, specify OS of remote machine
value: |
- OS and Version:
- VS Code Version:
- C/C++ Extension Version:
- If using SSH remote, specify OS of remote machine:
validations:
required: true
- type: textarea
attributes:
label: Bug Summary and Steps to Reproduce
description: |
Please describe the language service issue or language service feature that is not working as expected. Include information about the actual workspace project (for example, is the workspace a single project or multiple projects, size of the project, etc).
Include clear steps on how to reproduce the issue and a description of what you expected to happen.
value: |
Bug Summary:
Steps to reproduce:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
Expected behavior:
validations:
required: true
- type: textarea
attributes:
label: Configuration and Logs
description: |
Please provide your c_cpp_properties.json and logs:
- Configurations in `c_cpp_properties.json`
- Logs from running `C/C++: Log Diagnostics` from the VS Code command palette
- Logs from [the language server logging](https://code.visualstudio.com/docs/cpp/enable-logging-cpp#_enable-logging-for-the-language-server)
render: shell
validations:
required: true
- type: textarea
attributes:
label: Other Extensions
description: If applicable, please list other extensions installed and if the issue persists after disabling other extensions.
validations:
required: false
- type: textarea
attributes:
label: Additional context
description: |
Optionally provide other information that will give us more context about the issue you are encountering, such as code sample, screenshots, screen recording of the issue, call stacks, etc.
Providing call stacks:
For bugs like crashes, deadlocks, infinite loops, etc. that we are not able to repro and for which the call stack may be useful, please attach a debugger and/or create a dmp and provide the call stacks. Windows binaries have symbols available in VS Code by setting your "symbolSearchPath" to "https://msdl.microsoft.com/download/symbols".
Instructions for attaching debugger to language service process:
https://github.com/microsoft/vscode-cpptools/wiki/Attaching-debugger-to-cpptools-or-cpptools%E2%80%90srv.
Performance analysis:
For a performance issue see instructions at https://github.com/microsoft/vscode-cpptools/wiki/Troubleshooting-Performance-Issues.
validations:
required: false
+78
View File
@@ -0,0 +1,78 @@
name: Bug Report - Debugger
description: Create a bug report for debugging such as call stack, breakpoints, watch window, launching or attaching to a debuggee.
body:
- type: markdown
attributes:
value: |
### Is there an existing issue for this?
Please search our [existing issues](https://github.com/microsoft/vscode-cpptools/issues) to see if an issue already exists for the bug you encountered.
Please also review our [documentation](https://code.visualstudio.com/docs/languages/cpp) and [FAQs](https://code.visualstudio.com/docs/cpp/faq-cpp).
- type: textarea
attributes:
label: Environment
description: |
Please provide the information for the following:
- OS and version
- VS Code version
- C/C++ extension version
- OS and version of remote machine (if applicable)
- GDB / LLDB version
value: |
- OS and version:
- VS Code:
- C/C++ extension:
- OS and version of remote machine (if applicable):
- GDB / LLDB version:
validations:
required: true
- type: textarea
attributes:
label: Bug Summary and Steps to Reproduce
description: |
Please describe the debugging issue or debugger feature that is not working as expected.
Include clear steps on how to reproduce the issue.
value: |
Bug Summary:
Steps to reproduce:
1. In this environment...
2. With this config...
3. Do '...'
4. See error...
validations:
required: true
- type: textarea
attributes:
label: Debugger Configurations
description: Please provide the debugger configurations from the **tasks.json** and **launch.json** files.
render: shell
validations:
required: true
- type: textarea
attributes:
label: Debugger Logs
description: |
If applicable, please include [logging for the debugger adapter](https://code.visualstudio.com/docs/cpp/enable-logging-cpp#_enable-logging-for-the-debug-adapter) by adding `"logging": { "engineLogging": true, "trace": true, "traceResponse": true }` in the **launch.json** file.
Include logs or error messages from the Debug Console or Output windows.
render: shell
validations:
required: true
- type: textarea
attributes:
label: Other Extensions
description: If applicable, please list other extensions installed and if the issue persists after disabling other extensions.
validations:
required: false
- type: textarea
attributes:
label: Additional Information
description: |
Optionally provide other information that will give us more context about the issue you are encountering, such as a code sample, screenshots, or screen recording of the issue.
Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
validations:
required: false
@@ -0,0 +1,15 @@
name: Feature Request
description: Suggest an idea for the C/C++ extension.
body:
- type: markdown
attributes:
value: |
### Is there an existing request for this feature?
Prior to creating a new feature request, please review our [existing feature requests](https://github.com/microsoft/vscode-cpptools/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature+Request%22) to avoid duplicates.
- type: textarea
attributes:
label: Feature Request
description: |
Describe the feature you'd like.
validations:
required: true
-38
View File
@@ -1,38 +0,0 @@
---
name: Debugger
about: Issues pertaining to debugging such as call stack, breakpoints, watch window,
launching or attaching to a debuggee.
title: ''
labels: ''
assignees: ''
---
Type: Debugger
<!----- Input information below ----->
<!--
**Prior to filing an issue, please review:**
- Existing issues at https://github.com/Microsoft/vscode-cpptools/issues
- Our documentation at https://code.visualstudio.com/docs/languages/cpp
- FAQs at https://code.visualstudio.com/docs/cpp/faq-cpp
-->
**Describe the bug**
- OS and Version:
- VS Code Version:
- C/C++ Extension Version:
- Other extensions you installed (and if the issue persists after disabling them):
- A clear and concise description of what the bug is.
**To Reproduce**
*Please include a code sample and `launch.json` configuration.*
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Additional context**
*If applicable, please include logging by adding "logging": { "engineLogging": true, "trace": true, "traceResponse": true } in your `launch.json`*
Add any other context about the problem here including log or error messages in your Debug Console or Output windows.
@@ -1,42 +0,0 @@
---
name: General Extension
about: Issues pertaining to downloading, installing, or building the extension.
title: ''
labels: ''
assignees: ''
---
Type: General
<!----- Input information below ----->
<!--
**Prior to filing an issue, please review:**
- Existing issues at https://github.com/Microsoft/vscode-cpptools/issues
- Our documentation at https://code.visualstudio.com/docs/languages/cpp
- FAQs at https://code.visualstudio.com/docs/cpp/faq-cpp
-->
**Describe the bug**
- OS and Version:
- VS Code Version:
- C/C++ Extension Version:
- Other extensions you installed (and if the issue persists after disabling them):
- A clear and concise description of what the bug is.
**To Reproduce**
*Please include code sample and `task.json` files.*
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here including log messages from the Output window.
@@ -1,58 +0,0 @@
---
name: Language Service
about: 'Issues pertaining to IntelliSense, autocomplete, code editing, etc. '
title: ''
labels: ''
assignees: ''
---
**Type: LanguageService**
<!----- Input information below ----->
<!--
**Prior to filing an issue, please review:**
- Existing issues at https://github.com/Microsoft/vscode-cpptools/issues
- Our documentation at https://code.visualstudio.com/docs/languages/cpp
- FAQs at https://code.visualstudio.com/docs/cpp/faq-cpp
-->
**Describe the bug**
- OS and Version:
- VS Code Version:
- C/C++ Extension Version:
- Other extensions you installed (and if the issue persists after disabling them):
- Does this issue involve using SSH remote to run the extension on a remote machine?:
- A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc).
**Steps to reproduce**
<!-- Provide clear steps to reproduce the behavior: -->
<!-- *The most actionable issue reports include a code sample including configuration files such as c_cpp_properties.json* -->
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
<!-- A clear and concise description of what you expected to happen. -->
<!-- Please provide the following logs that show diagnostics and debugging information about the language server.
1. Logs from the command `C/C++: Log Diagnostics`
2. Logs from [the language server](https://code.visualstudio.com/docs/cpp/enable-logging-cpp#_enable-logging-for-the-language-server)
-->
<details>
<summary><strong>Logs</strong></summary>
<!-- Note: do not remove empty line after </summary> tag, otherwise the code blocks formatting won't show correctly. -->
```
Insert logs here.
```
</details>
**Screenshots**
<!-- If applicable, add screenshots to help explain your problem. -->
**Additional context**
<!--
* Call Stacks: For bugs like crashes, deadlocks, infinite loops, etc. that we are not able to repro and for which the call stack may be useful, please attach a debugger and/or create a dmp and provide the call stacks. Windows binaries have symbols available in VS Code by setting your "symbolSearchPath" to "https://msdl.microsoft.com/download/symbols".
-->
+5 -5
View File
@@ -15,8 +15,8 @@ class Locker extends ActionBase_1.ActionBase {
this.daysSinceUpdate = daysSinceUpdate;
}
async run() {
const closedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.daysSinceClose);
const updatedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.daysSinceUpdate);
const closedTimestamp = (0, utils_1.daysAgoToHumanReadbleDate)(this.daysSinceClose);
const updatedTimestamp = (0, utils_1.daysAgoToHumanReadbleDate)(this.daysSinceUpdate);
const query = this.buildQuery((this.daysSinceClose ? `closed:<${closedTimestamp} ` : "") + (this.daysSinceUpdate ? `updated:<${updatedTimestamp} ` : "") + "is:closed is:unlocked");
for await (const page of this.github.query({ q: query })) {
await Promise.all(page.map(async (issue) => {
@@ -24,15 +24,15 @@ class Locker extends ActionBase_1.ActionBase {
if (!hydrated.locked && hydrated.open === false && this.validateIssue(hydrated)
// TODO: Verify closed and updated timestamps
) {
console.log(`Locking issue ${hydrated.number}`);
(0, utils_1.safeLog)(`Locking issue ${hydrated.number}`);
await issue.lockIssue();
}
else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is already locked. Ignoring`);
(0, utils_1.safeLog)(`Issue ${hydrated.number} is already locked. Ignoring`);
}
else if (hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`);
(0, utils_1.safeLog)(`Issue ${hydrated.number} is open. Ignoring`);
}
}
}));
+10 -10
View File
@@ -3,9 +3,9 @@
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { GitHub, Issue } from '../api/api'
import { daysAgoToHumanReadbleDate } from '../common/utils'
import { ActionBase } from '../common/ActionBase'
import { GitHub, Issue } from '../api/api';
import { daysAgoToHumanReadbleDate, safeLog } from '../common/utils';
import { ActionBase } from '../common/ActionBase';
export class Locker extends ActionBase {
constructor(
@@ -26,26 +26,26 @@ export class Locker extends ActionBase {
}
async run() {
const closedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceClose)
const updatedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceUpdate)
const closedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceClose);
const updatedTimestamp = daysAgoToHumanReadbleDate(this.daysSinceUpdate);
const query = this.buildQuery((this.daysSinceClose ? `closed:<${closedTimestamp} ` : "") + (this.daysSinceUpdate ? `updated:<${updatedTimestamp} ` : "") + "is:closed is:unlocked");
for await (const page of this.github.query({ q: query })) {
await Promise.all(
page.map(async (issue) => {
const hydrated = await issue.getIssue()
const hydrated = await issue.getIssue();
if (!hydrated.locked && hydrated.open === false && this.validateIssue(hydrated)
// TODO: Verify closed and updated timestamps
) {
console.log(`Locking issue ${hydrated.number}`)
await issue.lockIssue()
safeLog(`Locking issue ${hydrated.number}`);
await issue.lockIssue();
} else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is already locked. Ignoring`)
safeLog(`Issue ${hydrated.number} is already locked. Ignoring`);
} else if (hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`)
safeLog(`Issue ${hydrated.number} is open. Ignoring`);
}
}
}),
+1 -1
View File
@@ -13,7 +13,7 @@ class LockerAction extends Action_1.Action {
this.id = 'Locker';
}
async onTriggered(github) {
await new Locker_1.Locker(github, +utils_1.getRequiredInput('daysSinceClose'), +utils_1.getRequiredInput('daysSinceUpdate'), utils_1.getInput('labels') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999)).run();
await new Locker_1.Locker(github, +(0, utils_1.getRequiredInput)('daysSinceClose'), +(0, utils_1.getRequiredInput)('daysSinceUpdate'), (0, utils_1.getInput)('labels') || undefined, (0, utils_1.getInput)('milestoneName') || undefined, (0, utils_1.getInput)('milestoneId') || undefined, (0, utils_1.getInput)('ignoreLabels') || undefined, (0, utils_1.getInput)('ignoreMilestoneNames') || undefined, (0, utils_1.getInput)('ignoreMilestoneIds') || undefined, +((0, utils_1.getInput)('minimumVotes') || 0), +((0, utils_1.getInput)('maximumVotes') || 9999999)).run();
}
}
new LockerAction().run(); // eslint-disable-line
+7 -7
View File
@@ -3,13 +3,13 @@
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { OctoKit } from '../api/octokit'
import { getInput, getRequiredInput } from '../common/utils'
import { Locker } from './Locker'
import { Action } from '../common/Action'
import { OctoKit } from '../api/octokit';
import { getInput, getRequiredInput } from '../common/utils';
import { Locker } from './Locker';
import { Action } from '../common/Action';
class LockerAction extends Action {
id = 'Locker'
id = 'Locker';
async onTriggered(github: OctoKit) {
await new Locker(
@@ -24,8 +24,8 @@ class LockerAction extends Action {
getInput('ignoreMilestoneIds') || undefined,
+(getInput('minimumVotes') || 0),
+(getInput('maximumVotes') || 9999999)
).run()
).run();
}
}
new LockerAction().run() // eslint-disable-line
new LockerAction().run(); // eslint-disable-line
+9 -8
View File
@@ -5,6 +5,7 @@
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.Reopener = void 0;
const utils_1 = require("../common/utils");
const ActionBase_1 = require("../common/ActionBase");
class Reopener extends ActionBase_1.ActionBase {
constructor(github, alsoApplyToOpenIssues, addLabels, removeLabels, reopenComment, setMilestoneId, labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes) {
@@ -19,7 +20,7 @@ class Reopener extends ActionBase_1.ActionBase {
async run() {
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
console.log(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
(0, utils_1.safeLog)(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
const query = this.buildQuery((this.alsoApplyToOpenIssues ? "" : "is:closed ") + "is:unlocked");
for await (const page of this.github.query({ q: query })) {
await Promise.all(page.map(async (issue) => {
@@ -28,17 +29,17 @@ class Reopener extends ActionBase_1.ActionBase {
// TODO: Verify closed and updated timestamps
) {
if (hydrated.open === false) {
console.log(`Reopening issue ${hydrated.number}`);
(0, utils_1.safeLog)(`Reopening issue ${hydrated.number}`);
await issue.reopenIssue();
}
if (this.setMilestoneId != undefined) {
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
(0, utils_1.safeLog)(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
await issue.setMilestone(+this.setMilestoneId);
}
if (removeLabelsSet.length > 0) {
for (const removeLabel of removeLabelsSet) {
if (removeLabel && removeLabel.length > 0) {
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
(0, utils_1.safeLog)(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
await issue.removeLabel(removeLabel);
}
}
@@ -46,22 +47,22 @@ class Reopener extends ActionBase_1.ActionBase {
if (addLabelsSet.length > 0) {
for (const addLabel of addLabelsSet) {
if (addLabel && addLabel.length > 0) {
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`);
(0, utils_1.safeLog)(`Adding label on issue ${hydrated.number}: ${addLabel}`);
await issue.addLabel(addLabel);
}
}
}
if (this.reopenComment) {
console.log(`Posting comment to issue ${hydrated.number}.`);
(0, utils_1.safeLog)(`Posting comment to issue ${hydrated.number}.`);
await issue.postComment(this.reopenComment);
}
}
else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is locked. Ignoring`);
(0, utils_1.safeLog)(`Issue ${hydrated.number} is locked. Ignoring`);
}
else if (!this.alsoApplyToOpenIssues && hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`);
(0, utils_1.safeLog)(`Issue ${hydrated.number} is open. Ignoring`);
}
}
}));
+17 -16
View File
@@ -3,8 +3,9 @@
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { GitHub, Issue } from '../api/api'
import { ActionBase } from '../common/ActionBase'
import { GitHub, Issue } from '../api/api';
import { daysAgoToHumanReadbleDate, safeLog } from '../common/utils';
import { ActionBase } from '../common/ActionBase';
export class Reopener extends ActionBase {
constructor(
@@ -31,50 +32,50 @@ export class Reopener extends ActionBase {
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
console.log(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
safeLog(`alsoApplyToOpenIssues: ${this.alsoApplyToOpenIssues}`);
const query = this.buildQuery((this.alsoApplyToOpenIssues ? "": "is:closed ") + "is:unlocked");
for await (const page of this.github.query({ q: query })) {
await Promise.all(
page.map(async (issue) => {
const hydrated = await issue.getIssue()
const hydrated = await issue.getIssue();
if (!hydrated.locked && (this.alsoApplyToOpenIssues || hydrated.open === false) && this.validateIssue(hydrated)
// TODO: Verify closed and updated timestamps
) {
if (hydrated.open === false) {
console.log(`Reopening issue ${hydrated.number}`)
await issue.reopenIssue()
safeLog(`Reopening issue ${hydrated.number}`);
await issue.reopenIssue();
}
if (this.setMilestoneId != undefined) {
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`)
await issue.setMilestone(+this.setMilestoneId)
safeLog(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
await issue.setMilestone(+this.setMilestoneId);
}
if (removeLabelsSet.length > 0) {
for (const removeLabel of removeLabelsSet) {
if (removeLabel && removeLabel.length > 0) {
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`)
await issue.removeLabel(removeLabel)
safeLog(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
await issue.removeLabel(removeLabel);
}
}
}
if (addLabelsSet.length > 0) {
for (const addLabel of addLabelsSet) {
if (addLabel && addLabel.length > 0) {
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`)
await issue.addLabel(addLabel)
safeLog(`Adding label on issue ${hydrated.number}: ${addLabel}`);
await issue.addLabel(addLabel);
}
}
}
if (this.reopenComment) {
console.log(`Posting comment to issue ${hydrated.number}.`)
await issue.postComment(this.reopenComment)
safeLog(`Posting comment to issue ${hydrated.number}.`);
await issue.postComment(this.reopenComment);
}
} else {
if (hydrated.locked) {
console.log(`Issue ${hydrated.number} is locked. Ignoring`)
safeLog(`Issue ${hydrated.number} is locked. Ignoring`);
} else if (!this.alsoApplyToOpenIssues && hydrated.open) {
console.log(`Issue ${hydrated.number} is open. Ignoring`)
safeLog(`Issue ${hydrated.number} is open. Ignoring`);
}
}
}),
+3 -3
View File
@@ -10,11 +10,11 @@ const Action_1 = require("../common/Action");
class ReopenerAction extends Action_1.Action {
constructor() {
super(...arguments);
this.id = 'Locker';
this.id = 'Reopener';
}
async onTriggered(github) {
const alsoApplyToOpenIssues = utils_1.getInput('alsoApplyToOpenIssues');
await new Reopener_1.Reopener(github, alsoApplyToOpenIssues != undefined && alsoApplyToOpenIssues.toLowerCase() == 'true', utils_1.getInput('addLabels') || undefined, utils_1.getInput('removeLabels') || undefined, utils_1.getInput('reopenComment') || '', utils_1.getInput('setMilestoneId') || undefined, utils_1.getInput('labels') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999)).run();
const alsoApplyToOpenIssues = (0, utils_1.getInput)('alsoApplyToOpenIssues');
await new Reopener_1.Reopener(github, alsoApplyToOpenIssues != undefined && alsoApplyToOpenIssues.toLowerCase() == 'true', (0, utils_1.getInput)('addLabels') || undefined, (0, utils_1.getInput)('removeLabels') || undefined, (0, utils_1.getInput)('reopenComment') || '', (0, utils_1.getInput)('setMilestoneId') || undefined, (0, utils_1.getInput)('labels') || undefined, (0, utils_1.getInput)('milestoneName') || undefined, (0, utils_1.getInput)('milestoneId') || undefined, (0, utils_1.getInput)('ignoreLabels') || undefined, (0, utils_1.getInput)('ignoreMilestoneNames') || undefined, (0, utils_1.getInput)('ignoreMilestoneIds') || undefined, +((0, utils_1.getInput)('minimumVotes') || 0), +((0, utils_1.getInput)('maximumVotes') || 9999999)).run();
}
}
new ReopenerAction().run(); // eslint-disable-line
+7 -7
View File
@@ -3,13 +3,13 @@
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { OctoKit } from '../api/octokit'
import { getInput, getRequiredInput } from '../common/utils'
import { Reopener } from './Reopener'
import { Action } from '../common/Action'
import { OctoKit } from '../api/octokit';
import { getInput, getRequiredInput } from '../common/utils';
import { Reopener } from './Reopener';
import { Action } from '../common/Action';
class ReopenerAction extends Action {
id = 'Locker'
id = 'Reopener';
async onTriggered(github: OctoKit) {
const alsoApplyToOpenIssues: string | undefined = getInput('alsoApplyToOpenIssues');
@@ -28,8 +28,8 @@ class ReopenerAction extends Action {
getInput('ignoreMilestoneIds') || undefined,
+(getInput('minimumVotes') || 0),
+(getInput('maximumVotes') || 9999999)
).run()
).run();
}
}
new ReopenerAction().run() // eslint-disable-line
new ReopenerAction().run(); // eslint-disable-line
+14 -14
View File
@@ -21,8 +21,8 @@ class StaleCloser extends ActionBase_1.ActionBase {
this.setMilestoneId = setMilestoneId;
}
async run() {
const updatedTimestamp = utils_1.daysAgoToHumanReadbleDate(this.closeDays);
const pingTimestamp = this.pingDays ? utils_1.daysAgoToTimestamp(this.pingDays) : undefined;
const updatedTimestamp = (0, utils_1.daysAgoToHumanReadbleDate)(this.closeDays);
const pingTimestamp = this.pingDays ? (0, utils_1.daysAgoToTimestamp)(this.pingDays) : undefined;
const query = this.buildQuery((this.closeDays ? `updated:<${updatedTimestamp} ` : "") + "is:open is:unlocked");
const addLabelsSet = this.addLabels ? this.addLabels.split(',') : [];
const removeLabelsSet = this.removeLabels ? this.removeLabels.split(',') : [];
@@ -45,20 +45,20 @@ class StaleCloser extends ActionBase_1.ActionBase {
await issue.hasWriteAccess(lastComment.author)) {
if (pingTimestamp != undefined) {
if (lastComment) {
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`);
(0, utils_1.safeLog)(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`);
}
else {
console.log(`No comments on issue ${hydrated.number}. Closing.`);
(0, utils_1.safeLog)(`No comments on issue ${hydrated.number}. Closing.`);
}
}
if (this.closeComment) {
console.log(`Posting comment on issue ${hydrated.number}`);
(0, utils_1.safeLog)(`Posting comment on issue ${hydrated.number}`);
await issue.postComment(this.closeComment);
}
if (removeLabelsSet.length > 0) {
for (const removeLabel of removeLabelsSet) {
if (removeLabel && removeLabel.length > 0) {
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
(0, utils_1.safeLog)(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
await issue.removeLabel(removeLabel);
}
}
@@ -66,22 +66,22 @@ class StaleCloser extends ActionBase_1.ActionBase {
if (addLabelsSet.length > 0) {
for (const addLabel of addLabelsSet) {
if (addLabel && addLabel.length > 0) {
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`);
(0, utils_1.safeLog)(`Adding label on issue ${hydrated.number}: ${addLabel}`);
await issue.addLabel(addLabel);
}
}
}
await issue.closeIssue();
await issue.closeIssue("not_planned");
if (this.setMilestoneId != undefined) {
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
(0, utils_1.safeLog)(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
await issue.setMilestone(+this.setMilestoneId);
}
console.log(`Closing issue ${hydrated.number}.`);
(0, utils_1.safeLog)(`Closing issue ${hydrated.number}.`);
}
else {
// Ping
// Ping
if (hydrated.updatedAt < pingTimestamp && hydrated.assignee) {
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`);
(0, utils_1.safeLog)(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`);
if (this.pingComment) {
await issue.postComment(this.pingComment
.replace('${assignee}', hydrated.assignee)
@@ -89,13 +89,13 @@ class StaleCloser extends ActionBase_1.ActionBase {
}
}
else {
console.log(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${hydrated.assignee ? ' cc @' + hydrated.assignee : ''}`);
(0, utils_1.safeLog)(`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${hydrated.assignee ? ' cc @' + hydrated.assignee : ''}`);
}
}
}
else {
if (!hydrated.open) {
console.log(`Issue ${hydrated.number} is not open. Ignoring`);
(0, utils_1.safeLog)(`Issue ${hydrated.number} is not open. Ignoring`);
}
}
}
+28 -28
View File
@@ -3,9 +3,9 @@
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { GitHub } from '../api/api'
import { ActionBase } from '../common/ActionBase'
import { daysAgoToHumanReadbleDate, daysAgoToTimestamp } from '../common/utils'
import { GitHub } from '../api/api';
import { ActionBase } from '../common/ActionBase';
import { daysAgoToHumanReadbleDate, daysAgoToTimestamp, safeLog } from '../common/utils';
export class StaleCloser extends ActionBase {
constructor(
@@ -33,7 +33,7 @@ export class StaleCloser extends ActionBase {
}
async run() {
const updatedTimestamp = daysAgoToHumanReadbleDate(this.closeDays)
const updatedTimestamp = daysAgoToHumanReadbleDate(this.closeDays);
const pingTimestamp = this.pingDays ? daysAgoToTimestamp(this.pingDays) : undefined;
const query = this.buildQuery((this.closeDays ? `updated:<${updatedTimestamp} ` : "") + "is:open is:unlocked");
@@ -43,12 +43,12 @@ export class StaleCloser extends ActionBase {
for await (const page of this.github.query({ q: query })) {
for (const issue of page) {
const hydrated = await issue.getIssue()
const lastCommentIterator = await issue.getComments(true).next()
const hydrated = await issue.getIssue();
const lastCommentIterator = await issue.getComments(true).next();
if (lastCommentIterator.done) {
throw Error('Unexpected comment data')
throw Error('Unexpected comment data');
}
const lastComment = lastCommentIterator.value[0]
const lastComment = lastCommentIterator.value[0];
if (hydrated.open && this.validateIssue(hydrated)
// TODO: Verify updated timestamp
@@ -63,63 +63,63 @@ export class StaleCloser extends ActionBase {
) {
if (pingTimestamp != undefined) {
if (lastComment) {
console.log(
safeLog(
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Closing.`,
)
);
} else {
console.log(`No comments on issue ${hydrated.number}. Closing.`)
safeLog(`No comments on issue ${hydrated.number}. Closing.`);
}
}
if (this.closeComment) {
console.log(`Posting comment on issue ${hydrated.number}`)
await issue.postComment(this.closeComment)
safeLog(`Posting comment on issue ${hydrated.number}`);
await issue.postComment(this.closeComment);
}
if (removeLabelsSet.length > 0) {
for (const removeLabel of removeLabelsSet) {
if (removeLabel && removeLabel.length > 0) {
console.log(`Removing label on issue ${hydrated.number}: ${removeLabel}`)
await issue.removeLabel(removeLabel)
safeLog(`Removing label on issue ${hydrated.number}: ${removeLabel}`);
await issue.removeLabel(removeLabel);
}
}
}
if (addLabelsSet.length > 0) {
for (const addLabel of addLabelsSet) {
if (addLabel && addLabel.length > 0) {
console.log(`Adding label on issue ${hydrated.number}: ${addLabel}`)
await issue.addLabel(addLabel)
safeLog(`Adding label on issue ${hydrated.number}: ${addLabel}`);
await issue.addLabel(addLabel);
}
}
}
await issue.closeIssue()
await issue.closeIssue("not_planned");
if (this.setMilestoneId != undefined) {
console.log(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`)
await issue.setMilestone(+this.setMilestoneId)
safeLog(`Setting milestone of issue ${hydrated.number} to id ${+this.setMilestoneId}`);
await issue.setMilestone(+this.setMilestoneId);
}
console.log(`Closing issue ${hydrated.number}.`)
safeLog(`Closing issue ${hydrated.number}.`);
} else {
// Ping
// Ping
if (hydrated.updatedAt < pingTimestamp && hydrated.assignee) {
console.log(
safeLog(
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Pinging @${hydrated.assignee}`,
)
);
if (this.pingComment) {
await issue.postComment(
this.pingComment
.replace('${assignee}', hydrated.assignee)
.replace('${author}', hydrated.author.name),
)
);
}
} else {
console.log(
safeLog(
`Last comment on issue ${hydrated.number} by ${lastComment.author.name}. Skipping.${
hydrated.assignee ? ' cc @' + hydrated.assignee : ''
}`,
)
);
}
}
} else {
if (!hydrated.open) {
console.log(`Issue ${hydrated.number} is not open. Ignoring`)
safeLog(`Issue ${hydrated.number} is not open. Ignoring`);
}
}
}
+1 -1
View File
@@ -14,7 +14,7 @@ class StaleCloserAction extends Action_1.Action {
}
async onTriggered(github) {
var _a;
await new StaleCloser_1.StaleCloser(github, +utils_1.getRequiredInput('closeDays'), utils_1.getRequiredInput('labels'), utils_1.getInput('closeComment') || '', +(utils_1.getInput('pingDays') || 0), utils_1.getInput('pingComment') || '', ((_a = utils_1.getInput('additionalTeam')) !== null && _a !== void 0 ? _a : '').split(','), utils_1.getInput('addLabels') || undefined, utils_1.getInput('removeLabels') || undefined, utils_1.getInput('setMilestoneId') || undefined, utils_1.getInput('milestoneName') || undefined, utils_1.getInput('milestoneId') || undefined, utils_1.getInput('ignoreLabels') || undefined, utils_1.getInput('ignoreMilestoneNames') || undefined, utils_1.getInput('ignoreMilestoneIds') || undefined, +(utils_1.getInput('minimumVotes') || 0), +(utils_1.getInput('maximumVotes') || 9999999), utils_1.getInput('involves') || undefined).run();
await new StaleCloser_1.StaleCloser(github, +(0, utils_1.getRequiredInput)('closeDays'), (0, utils_1.getRequiredInput)('labels'), (0, utils_1.getInput)('closeComment') || '', +((0, utils_1.getInput)('pingDays') || 0), (0, utils_1.getInput)('pingComment') || '', ((_a = (0, utils_1.getInput)('additionalTeam')) !== null && _a !== void 0 ? _a : '').split(','), (0, utils_1.getInput)('addLabels') || undefined, (0, utils_1.getInput)('removeLabels') || undefined, (0, utils_1.getInput)('setMilestoneId') || undefined, (0, utils_1.getInput)('milestoneName') || undefined, (0, utils_1.getInput)('milestoneId') || undefined, (0, utils_1.getInput)('ignoreLabels') || undefined, (0, utils_1.getInput)('ignoreMilestoneNames') || undefined, (0, utils_1.getInput)('ignoreMilestoneIds') || undefined, +((0, utils_1.getInput)('minimumVotes') || 0), +((0, utils_1.getInput)('maximumVotes') || 9999999), (0, utils_1.getInput)('involves') || undefined).run();
}
}
new StaleCloserAction().run(); // eslint-disable-line
+3 -3
View File
@@ -9,7 +9,7 @@ import { StaleCloser } from './StaleCloser'
import { Action } from '../common/Action'
class StaleCloserAction extends Action {
id = 'StaleCloser'
id = 'StaleCloser';
async onTriggered(github: OctoKit) {
await new StaleCloser(
@@ -31,8 +31,8 @@ class StaleCloserAction extends Action {
+(getInput('minimumVotes') || 0),
+(getInput('maximumVotes') || 9999999),
getInput('involves') || undefined
).run()
).run();
}
}
new StaleCloserAction().run() // eslint-disable-line
new StaleCloserAction().run(); // eslint-disable-line
+79 -56
View File
@@ -4,43 +4,53 @@
*--------------------------------------------------------------------------------------------*/
export interface GitHub {
query(query: Query): AsyncIterableIterator<GitHubIssue[]>
repoOwner: string;
repoName: string;
hasWriteAccess(user: User): Promise<boolean>
query(query: Query): AsyncIterableIterator<GitHubIssue[]>;
repoHasLabel(label: string): Promise<boolean>
createLabel(label: string, color: string, description: string): Promise<void>
deleteLabel(label: string): Promise<void>
hasWriteAccess(user: User): Promise<boolean>;
readConfig(path: string): Promise<any>
repoHasLabel(label: string): Promise<boolean>;
createLabel(label: string, color: string, description: string): Promise<void>;
deleteLabel(label: string): Promise<void>;
dispatch(title: string): Promise<void>
readConfig(path: string): Promise<any>;
createIssue(owner: string, repo: string, title: string, body: string): Promise<void>
dispatch(title: string): Promise<void>;
releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'>
createIssue(owner: string, repo: string, title: string, body: string): Promise<void>;
releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'>;
/**
* Returns what we think the current milestone for the repo is based on the due on date.
* @returns The milestone id if one is found, else undefined
*/
getCurrentRepoMilestone(): Promise<number | undefined>;
}
export interface GitHubIssue extends GitHub {
getIssue(): Promise<Issue>
getIssue(): Promise<Issue>;
postComment(body: string): Promise<void>
deleteComment(id: number): Promise<void>
getComments(last?: boolean): AsyncIterableIterator<Comment[]>
postComment(body: string): Promise<void>;
deleteComment(id: number): Promise<void>;
getComments(last?: boolean): AsyncIterableIterator<Comment[]>;
closeIssue(): Promise<void>
lockIssue(): Promise<void>
reopenIssue(): Promise<void>
closeIssue(reason: 'completed' | 'not_planned'): Promise<void>;
lockIssue(): Promise<void>;
unlockIssue(): Promise<void>;
reopenIssue(): Promise<void>;
setMilestone(milestoneId: number): Promise<void>
setMilestone(milestoneId: number): Promise<void>;
addLabel(label: string): Promise<void>
removeLabel(label: string): Promise<void>
addLabel(label: string): Promise<void>;
removeLabel(label: string): Promise<void>;
addAssignee(assignee: string): Promise<void>
removeAssignee(assignee: string): Promise<void>
addAssignee(assignee: string): Promise<void>;
removeAssignee(assignee: string): Promise<void>;
getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined>
getClosingInfo(): Promise<{ hash: string | undefined; timestamp: number } | undefined>;
}
type SortVar =
@@ -54,47 +64,60 @@ type SortVar =
| 'reactions-tada'
| 'interactions'
| 'created'
| 'updated'
type SortOrder = 'asc' | 'desc'
| 'updated';
type SortOrder = 'asc' | 'desc';
export type Reactions = {
'+1': number
'-1': number
laugh: number
hooray: number
confused: number
heart: number
rocket: number
eyes: number
}
'+1': number;
'-1': number;
laugh: number;
hooray: number;
confused: number;
heart: number;
rocket: number;
eyes: number;
};
export interface User {
name: string
isGitHubApp?: boolean
name: string;
isGitHubApp?: boolean;
}
export interface Comment {
author: User
body: string
id: number
timestamp: number
author: User;
body: string;
id: number;
timestamp: number;
}
export interface Issue {
author: User
body: string
title: string
labels: string[]
open: boolean
locked: boolean
number: number
numComments: number
reactions: Reactions
milestoneId: number | null
assignee?: string
createdAt: number
updatedAt: number
closedAt?: number
author: User;
body: string;
title: string;
labels: string[];
open: boolean;
locked: boolean;
number: number;
isPr: boolean;
numComments: number;
reactions: Reactions;
milestone: Milestone | null;
assignee?: string;
assignees: string[];
createdAt: number;
updatedAt: number;
closedAt?: number;
}
export interface Milestone {
milestoneId: number;
title: string;
description: string;
numClosedIssues: number;
numOpenIssues: number;
dueOn: Date | null;
createdAt: Date | null;
closedAt: Date | null;
state: 'open' | 'closed';
}
export interface Query {
q: string
sort?: SortVar
order?: SortOrder
q: string;
sort?: SortVar;
order?: SortOrder;
}
+169 -90
View File
@@ -5,11 +5,12 @@
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.OctoKitIssue = exports.OctoKit = exports.getNumRequests = void 0;
const core_1 = require("@actions/core");
const github_1 = require("@actions/github");
const child_process_1 = require("child_process");
const utils_1 = require("../common/utils");
let numRequests = 0;
exports.getNumRequests = () => numRequests;
const getNumRequests = () => numRequests;
exports.getNumRequests = getNumRequests;
class OctoKit {
constructor(token, params, options = { readonly: false }) {
this.token = token;
@@ -18,73 +19,97 @@ class OctoKit {
// when in readonly mode, record labels just-created so at to not throw unneccesary errors
this.mockLabels = new Set();
this.writeAccessCache = {};
this._octokit = new github_1.GitHub(token);
this._octokit = (0, github_1.getOctokit)(token);
this.repoName = params.repo;
this.repoOwner = params.owner;
}
get octokit() {
numRequests++;
return this._octokit;
}
getIssueByNumber(number) {
return new OctoKitIssue(this.token, this.params, { number: number });
}
// TODO: just iterate over the issues in a page here instead of making caller do it
async *query(query) {
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`;
console.log(`Querying for ${q}:`);
const options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
const options = {
...query,
q,
per_page: 100,
headers: { Accept: 'application/vnd.github.squirrel-girl-preview+json' },
});
};
let pageNum = 0;
const timeout = async () => {
if (pageNum < 2) {
/* pass */
}
else if (pageNum < 4) {
await new Promise((resolve) => setTimeout(resolve, 3000));
await new Promise((resolve) => setTimeout(resolve, 10000));
}
else {
await new Promise((resolve) => setTimeout(resolve, 30000));
}
};
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
for await (const pageResponse of this.octokit.paginate.iterator(this.octokit.rest.search.issuesAndPullRequests, options)) {
await timeout();
numRequests++;
const page = pageResponse.data;
console.log(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
(0, utils_1.safeLog)(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
yield page.map((issue) => new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options));
}
}
async createIssue(owner, repo, title, body) {
core_1.debug(`Creating issue \`${title}\` on ${owner}/${repo}`);
(0, utils_1.safeLog)(`Creating issue \`${title}\` on ${owner}/${repo}`);
if (!this.options.readonly)
await this.octokit.issues.create({ owner, repo, title, body });
await this.octokit.rest.issues.create({ owner, repo, title, body });
}
octokitIssueToIssue(issue) {
var _a, _b, _c, _d, _e, _f;
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
return {
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
body: issue.body,
author: { name: (_b = (_a = issue.user) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : 'unkown', isGitHubApp: ((_c = issue.user) === null || _c === void 0 ? void 0 : _c.type) === 'Bot' },
body: (_d = issue.body) !== null && _d !== void 0 ? _d : '',
number: issue.number,
title: issue.title,
labels: issue.labels.map((label) => label.name),
isPr: !!((_e = issue.pull_request) === null || _e === void 0 ? void 0 : _e.html_url),
labels: issue.labels.map((label) => { var _a; return (typeof label === 'string' ? label : (_a = label.name) !== null && _a !== void 0 ? _a : ''); }),
open: issue.state === 'open',
locked: issue.locked,
numComments: issue.comments,
reactions: issue.reactions,
assignee: (_b = (_a = issue.assignee) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : (_d = (_c = issue.assignees) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.login,
milestoneId: (_f = (_e = issue.milestone) === null || _e === void 0 ? void 0 : _e.number) !== null && _f !== void 0 ? _f : null,
assignee: (_g = (_f = issue.assignee) === null || _f === void 0 ? void 0 : _f.login) !== null && _g !== void 0 ? _g : (_j = (_h = issue.assignees) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.login,
assignees: (_l = (_k = issue.assignees) === null || _k === void 0 ? void 0 : _k.map((assignee) => assignee.login)) !== null && _l !== void 0 ? _l : [],
milestone: issue.milestone ? this.octokitMilestoneToMilestone(issue.milestone) : null,
createdAt: +new Date(issue.created_at),
updatedAt: +new Date(issue.updated_at),
closedAt: issue.closed_at ? +new Date(issue.closed_at) : undefined,
};
}
octokitMilestoneToMilestone(milestone) {
var _a;
if ((milestone === null || milestone === void 0 ? void 0 : milestone.number) === undefined) {
return null;
}
return {
title: milestone.title,
milestoneId: milestone.number,
// Remove the time portions of the dates as they're not important
createdAt: milestone.created_at !== null ? new Date(milestone.created_at.split('T')[0]) : null,
dueOn: milestone.due_on !== null ? new Date(milestone.due_on.split('T')[0]) : null,
closedAt: milestone.closed_at !== null ? new Date(milestone.closed_at.split('T')[0]) : null,
description: (_a = milestone.description) !== null && _a !== void 0 ? _a : '',
numClosedIssues: milestone.closed_issues,
numOpenIssues: milestone.open_issues,
state: milestone.state === 'open' ? 'open' : 'closed',
};
}
async hasWriteAccess(user) {
if (user.name in this.writeAccessCache) {
core_1.debug('Got permissions from cache for ' + user);
(0, utils_1.safeLog)('Got permissions from cache for ' + user);
return this.writeAccessCache[user.name];
}
core_1.debug('Fetching permissions for ' + user);
const permissions = (await this.octokit.repos.getCollaboratorPermissionLevel({
(0, utils_1.safeLog)('Fetching permissions for ' + user.name);
const permissions = (await this.octokit.rest.repos.getCollaboratorPermissionLevel({
...this.params,
username: user.name,
})).data.permission;
@@ -92,42 +117,44 @@ class OctoKit {
}
async repoHasLabel(name) {
try {
await this.octokit.issues.getLabel({ ...this.params, name });
await this.octokit.rest.issues.getLabel({ ...this.params, name });
return true;
}
catch (err) {
if (err.status === 404) {
const statusErorr = err;
if (statusErorr.status === 404) {
return this.options.readonly && this.mockLabels.has(name);
}
throw err;
}
}
async createLabel(name, color, description) {
core_1.debug('Creating label ' + name);
(0, utils_1.safeLog)('Creating label ' + name);
if (!this.options.readonly)
await this.octokit.issues.createLabel({ ...this.params, color, description, name });
await this.octokit.rest.issues.createLabel({ ...this.params, color, description, name });
else
this.mockLabels.add(name);
}
async deleteLabel(name) {
core_1.debug('Deleting label ' + name);
(0, utils_1.safeLog)('Deleting label ' + name);
try {
if (!this.options.readonly)
await this.octokit.issues.deleteLabel({ ...this.params, name });
await this.octokit.rest.issues.deleteLabel({ ...this.params, name });
}
catch (err) {
if (err.status === 404) {
const statusErorr = err;
if (statusErorr.status === 404) {
return;
}
throw err;
}
}
async readConfig(path) {
core_1.debug('Reading config at ' + path);
(0, utils_1.safeLog)('Reading config at ' + path);
const repoPath = `.github/${path}.json`;
try {
const data = (await this.octokit.repos.getContents({ ...this.params, path: repoPath })).data;
if ('type' in data && data.type === 'file') {
const data = (await this.octokit.rest.repos.getContent({ ...this.params, path: repoPath })).data;
if ('type' in data && data.type === 'file' && 'content' in data) {
if (data.encoding === 'base64' && data.content) {
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'));
}
@@ -140,7 +167,10 @@ class OctoKit {
}
}
async releaseContainsCommit(release, commit) {
return new Promise((resolve, reject) => child_process_1.exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
const isHash = (s) => /^[a-fA-F0-9]*$/.test(s);
if (!isHash(release) || !isHash(commit))
return 'unknown';
return new Promise((resolve, reject) => (0, child_process_1.exec)(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
if (!err || err.code === 1) {
resolve(!err ? 'yes' : 'no');
}
@@ -157,10 +187,31 @@ class OctoKit {
}
}));
}
async getCurrentRepoMilestone() {
(0, utils_1.safeLog)(`Getting repo milestone for ${this.params.owner}/${this.params.repo}`);
// Fetch all milestones open for this repo
const allMilestones = (await this.octokit.rest.issues.listMilestones({
owner: this.params.owner,
repo: this.params.repo,
state: 'open',
sort: 'due_on',
direction: 'asc',
})).data;
const currentDate = new Date();
const possibleMilestones = allMilestones
.filter((milestone) => new Date(milestone.due_on === null ? currentDate : milestone.due_on) > currentDate &&
currentDate > new Date(milestone.created_at) &&
!milestone.title.includes('Recovery'))
.sort((a, b) => { var _a, _b; return +new Date((_a = a.due_on) !== null && _a !== void 0 ? _a : currentDate) - +new Date((_b = b.due_on) !== null && _b !== void 0 ? _b : currentDate); });
if (possibleMilestones.length === 0) {
return undefined;
}
return possibleMilestones[0].number;
}
async dispatch(title) {
core_1.debug('Dispatching ' + title);
(0, utils_1.safeLog)('Dispatching ' + title);
if (!this.options.readonly)
await this.octokit.repos.createDispatchEvent({ ...this.params, event_type: title });
await this.octokit.rest.repos.createDispatchEvent({ ...this.params, event_type: title });
}
}
exports.OctoKit = OctoKit;
@@ -169,12 +220,12 @@ class OctoKitIssue extends OctoKit {
super(token, params, options);
this.params = params;
this.issueData = issueData;
console.log('running bot on issue', issueData.number);
(0, utils_1.safeLog)('running bot on issue', issueData.number);
}
async addAssignee(assignee) {
core_1.debug('Adding assignee ' + assignee + ' to ' + this.issueData.number);
(0, utils_1.safeLog)('Adding assignee ' + assignee + ' to ' + this.issueData.number);
if (!this.options.readonly) {
await this.octokit.issues.addAssignees({
await this.octokit.rest.issues.addAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
@@ -182,45 +233,64 @@ class OctoKitIssue extends OctoKit {
}
}
async removeAssignee(assignee) {
core_1.debug('Removing assignee ' + assignee + ' to ' + this.issueData.number);
(0, utils_1.safeLog)('Removing assignee ' + assignee + ' to ' + this.issueData.number);
if (!this.options.readonly) {
await this.octokit.issues.removeAssignees({
await this.octokit.rest.issues.removeAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
});
}
}
async closeIssue() {
core_1.debug('Closing issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.update({
async closeIssue(reason) {
(0, utils_1.safeLog)('Closing issue ' + this.issueData.number);
if (!this.options.readonly) {
const issue = await this.octokit.rest.issues.get({
...this.params,
issue_number: this.issueData.number,
});
// Don't close already closed issues even if it means changing the state
if (issue.data.state === 'closed') {
return;
}
await this.octokit.rest.issues
.update({
...this.params,
issue_number: this.issueData.number,
state: 'closed',
state_reason: reason,
})
.catch((e) => {
(0, utils_1.safeLog)('error closing issue:', e);
});
}
}
async reopenIssue() {
core_1.debug('Reopening issue ' + this.issueData.number);
(0, utils_1.safeLog)('Reopening issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.update({
await this.octokit.rest.issues.update({
...this.params,
issue_number: this.issueData.number,
state: 'open',
});
}
async lockIssue() {
core_1.debug('Locking issue ' + this.issueData.number);
(0, utils_1.safeLog)('Locking issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.lock({ ...this.params, issue_number: this.issueData.number });
await this.octokit.rest.issues.lock({ ...this.params, issue_number: this.issueData.number });
}
async unlockIssue() {
(0, utils_1.safeLog)('Unlocking issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.rest.issues.unlock({ ...this.params, issue_number: this.issueData.number });
}
async getIssue() {
if (isIssue(this.issueData)) {
core_1.debug('Got issue data from query result ' + this.issueData.number);
(0, utils_1.safeLog)('Got issue data from query result ' + this.issueData.number);
return this.issueData;
}
console.log('Fetching issue ' + this.issueData.number);
const issue = (await this.octokit.issues.get({
(0, utils_1.safeLog)('Fetching issue ' + this.issueData.number);
const issue = (await this.octokit.rest.issues.get({
...this.params,
issue_number: this.issueData.number,
mediaType: { previews: ['squirrel-girl'] },
@@ -228,77 +298,83 @@ class OctoKitIssue extends OctoKit {
return (this.issueData = this.octokitIssueToIssue(issue));
}
async postComment(body) {
core_1.debug(`Posting comment ${body} on ${this.issueData.number}`);
(0, utils_1.safeLog)(`Posting comment on ${this.issueData.number}`);
if (!this.options.readonly)
await this.octokit.issues.createComment({
await this.octokit.rest.issues.createComment({
...this.params,
issue_number: this.issueData.number,
body,
});
}
async deleteComment(id) {
core_1.debug(`Deleting comment ${id} on ${this.issueData.number}`);
(0, utils_1.safeLog)(`Deleting comment ${id} on ${this.issueData.number}`);
if (!this.options.readonly)
await this.octokit.issues.deleteComment({
await this.octokit.rest.issues.deleteComment({
owner: this.params.owner,
repo: this.params.repo,
comment_id: id,
});
}
async setMilestone(milestoneId) {
core_1.debug(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
(0, utils_1.safeLog)(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
if (!this.options.readonly)
await this.octokit.issues.update({
await this.octokit.rest.issues.update({
...this.params,
issue_number: this.issueData.number,
milestone: milestoneId,
});
}
async *getComments(last) {
core_1.debug('Fetching comments for ' + this.issueData.number);
const response = this.octokit.paginate.iterator(this.octokit.issues.listComments.endpoint.merge({
(0, utils_1.safeLog)('Fetching comments for ' + this.issueData.number);
const response = this.octokit.paginate.iterator(this.octokit.rest.issues.listComments, {
...this.params,
issue_number: this.issueData.number,
per_page: 100,
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
}));
});
for await (const page of response) {
numRequests++;
yield page.data.map((comment) => ({
author: { name: comment.user.login, isGitHubApp: comment.user.type === 'Bot' },
body: comment.body,
id: comment.id,
timestamp: +new Date(comment.created_at),
}));
yield page.data.map((comment) => {
var _a, _b, _c, _d;
return ({
author: { name: (_b = (_a = comment.user) === null || _a === void 0 ? void 0 : _a.login) !== null && _b !== void 0 ? _b : '', isGitHubApp: ((_c = comment.user) === null || _c === void 0 ? void 0 : _c.type) === 'Bot' },
body: (_d = comment.body) !== null && _d !== void 0 ? _d : '',
id: comment.id,
timestamp: +new Date(comment.created_at),
});
});
}
}
async addLabel(name) {
core_1.debug(`Adding label ${name} to ${this.issueData.number}`);
(0, utils_1.safeLog)(`Adding label ${name} to ${this.issueData.number}`);
if (!(await this.repoHasLabel(name))) {
throw Error(`Action could not execute becuase label ${name} is not defined.`);
}
if (!this.options.readonly)
await this.octokit.issues.addLabels({
await this.octokit.rest.issues.addLabels({
...this.params,
issue_number: this.issueData.number,
labels: [name],
});
}
async getAssigner(assignee) {
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
var _a, _b;
const options = {
...this.params,
issue_number: this.issueData.number,
});
};
let assigner;
for await (const event of this.octokit.paginate.iterator(options)) {
for await (const event of this.octokit.paginate.iterator(this.octokit.rest.issues.listEventsForTimeline, options)) {
numRequests++;
const timelineEvents = event.data;
for (const timelineEvent of timelineEvents) {
if (timelineEvent.event === 'assigned' &&
timelineEvent.assignee.login === assignee) {
assigner = timelineEvent.actor.login;
if (timelineEvent.event === 'assigned' && ((_a = timelineEvent.assignee) === null || _a === void 0 ? void 0 : _a.login) === assignee) {
assigner = (_b = timelineEvent.actor) === null || _b === void 0 ? void 0 : _b.login;
}
}
if (assigner) {
break;
}
}
if (!assigner) {
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.');
@@ -306,25 +382,26 @@ class OctoKitIssue extends OctoKit {
return assigner;
}
async removeLabel(name) {
core_1.debug(`Removing label ${name} from ${this.issueData.number}`);
(0, utils_1.safeLog)(`Removing label ${name} from ${this.issueData.number}`);
try {
if (!this.options.readonly)
await this.octokit.issues.removeLabel({
await this.octokit.rest.issues.removeLabel({
...this.params,
issue_number: this.issueData.number,
name,
});
}
catch (err) {
if (err.status === 404) {
console.log(`Label ${name} not found on issue`);
const statusErorr = err;
if (statusErorr.status === 404) {
(0, utils_1.safeLog)(`Label ${name} not found on issue`);
return;
}
throw err;
}
}
async getClosingInfo(alreadyChecked = []) {
var _a, _b, _c, _d, _e, _f, _g;
var _a, _b, _c, _d, _e, _f, _g, _h;
if (alreadyChecked.includes(this.issueData.number)) {
return undefined;
}
@@ -332,22 +409,21 @@ class OctoKitIssue extends OctoKit {
if ((await this.getIssue()).open) {
return;
}
const closingHashComment = /(?:\\|\/)closedWith (\S*)/;
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
const closingHashComment = /(?:\\|\/)closedWith (?:https:\/\/github\.com\/microsoft\/vscode\/commit\/)?([a-fA-F0-9]{7,40})/;
const options = {
...this.params,
issue_number: this.issueData.number,
});
};
let closingCommit;
const crossReferencing = [];
for await (const event of this.octokit.paginate.iterator(options)) {
for await (const event of this.octokit.paginate.iterator(this.octokit.rest.issues.listEventsForTimeline, options)) {
numRequests++;
const timelineEvents = event.data;
for (const timelineEvent of timelineEvents) {
if ((timelineEvent.event === 'closed' || timelineEvent.event === 'merged') &&
timelineEvent.created_at &&
timelineEvent.commit_id &&
timelineEvent.commit_url
.toLowerCase()
.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase())) {
((_a = timelineEvent.commit_url) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase()))) {
closingCommit = {
hash: timelineEvent.commit_id,
timestamp: +new Date(timelineEvent.created_at),
@@ -356,15 +432,18 @@ class OctoKitIssue extends OctoKit {
if (timelineEvent.event === 'reopened') {
closingCommit = undefined;
}
if (timelineEvent.event === 'commented' &&
!((_a = timelineEvent.body) === null || _a === void 0 ? void 0 : _a.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE')) &&
if (timelineEvent.created_at &&
timelineEvent.event === 'commented' &&
!((_b = timelineEvent.body) === null || _b === void 0 ? void 0 : _b.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE')) &&
closingHashComment.test(timelineEvent.body)) {
closingCommit = {
hash: closingHashComment.exec(timelineEvent.body)[1],
timestamp: +new Date(timelineEvent.created_at),
};
}
if (timelineEvent.event === 'cross-referenced' && ((_c = (_b = timelineEvent.source) === null || _b === void 0 ? void 0 : _b.issue) === null || _c === void 0 ? void 0 : _c.number) && ((_f = (_e = (_d = timelineEvent.source) === null || _d === void 0 ? void 0 : _d.issue) === null || _e === void 0 ? void 0 : _e.pull_request) === null || _f === void 0 ? void 0 : _f.url.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase()))) {
if (timelineEvent.event === 'cross-referenced' &&
((_d = (_c = timelineEvent.source) === null || _c === void 0 ? void 0 : _c.issue) === null || _d === void 0 ? void 0 : _d.number) &&
((_g = (_f = (_e = timelineEvent.source) === null || _e === void 0 ? void 0 : _e.issue) === null || _f === void 0 ? void 0 : _f.pull_request) === null || _g === void 0 ? void 0 : _g.url.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase()))) {
crossReferencing.push(timelineEvent.source.issue.number);
}
}
@@ -375,16 +454,16 @@ class OctoKitIssue extends OctoKit {
for (const id of crossReferencing.reverse()) {
const closed = await new OctoKitIssue(this.token, this.params, {
number: id,
}, this.options).getClosingInfo(alreadyChecked);
}).getClosingInfo(alreadyChecked);
if (closed) {
if (Math.abs(closed.timestamp - ((_g = (await this.getIssue()).closedAt) !== null && _g !== void 0 ? _g : 0)) < 5000) {
if (Math.abs(closed.timestamp - ((_h = (await this.getIssue()).closedAt) !== null && _h !== void 0 ? _h : 0)) < 5000) {
closingCommit = closed;
break;
}
}
}
}
console.log(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
(0, utils_1.safeLog)(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
return closingCommit;
}
}
+260 -171
View File
@@ -3,181 +3,242 @@
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { debug } from '@actions/core'
import { GitHub as GitHubAPI } from '@actions/github'
import { Octokit } from '@octokit/rest'
import { exec } from 'child_process'
import { Comment, GitHub, GitHubIssue, Issue, Query, User } from './api'
import { getOctokit } from '@actions/github';
import type { RequestError } from '@octokit/request-error';
import { exec } from 'child_process';
import { IssueGetResponse, IssuesGetResponseMilestone } from '../common/OctokitTypings';
import { safeLog } from '../common/utils';
import { Comment, GitHub, GitHubIssue, Issue, Milestone, Query, User } from './api';
let numRequests = 0
export const getNumRequests = () => numRequests
let numRequests = 0;
export const getNumRequests = () => numRequests;
export class OctoKit implements GitHub {
private _octokit: GitHubAPI
protected get octokit(): GitHubAPI {
numRequests++
return this._octokit
private _octokit: ReturnType<typeof getOctokit>;
protected get octokit(): ReturnType<typeof getOctokit> {
numRequests++;
return this._octokit;
}
// when in readonly mode, record labels just-created so at to not throw unneccesary errors
protected mockLabels: Set<string> = new Set()
protected mockLabels: Set<string> = new Set();
public readonly repoName: string;
public readonly repoOwner: string;
constructor(
protected token: string,
protected params: { repo: string; owner: string },
protected options: { readonly: boolean } = { readonly: false },
) {
this._octokit = new GitHubAPI(token)
this._octokit = getOctokit(token);
this.repoName = params.repo;
this.repoOwner = params.owner;
}
getIssueByNumber(number: number) {
return new OctoKitIssue(this.token, this.params, { number: number });
}
// TODO: just iterate over the issues in a page here instead of making caller do it
async *query(query: Query): AsyncIterableIterator<GitHubIssue[]> {
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`
console.log(`Querying for ${q}:`)
const q = query.q + ` repo:${this.params.owner}/${this.params.repo}`;
const options = this.octokit.search.issuesAndPullRequests.endpoint.merge({
const options = {
...query,
q,
per_page: 100,
headers: { Accept: 'application/vnd.github.squirrel-girl-preview+json' },
})
};
let pageNum = 0
let pageNum = 0;
const timeout = async () => {
if (pageNum < 2) {
/* pass */
} else if (pageNum < 4) {
await new Promise((resolve) => setTimeout(resolve, 3000))
await new Promise((resolve) => setTimeout(resolve, 10000));
} else {
await new Promise((resolve) => setTimeout(resolve, 30000))
await new Promise((resolve) => setTimeout(resolve, 30000));
}
}
};
for await (const pageResponse of this.octokit.paginate.iterator(options)) {
await timeout()
numRequests++
const page: Array<Octokit.SearchIssuesAndPullRequestsResponseItemsItem> = pageResponse.data
console.log(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`)
for await (const pageResponse of this.octokit.paginate.iterator(
this.octokit.rest.search.issuesAndPullRequests,
options,
)) {
await timeout();
numRequests++;
const page = pageResponse.data;
safeLog(`Page ${++pageNum}: ${page.map(({ number }) => number).join(' ')}`);
yield page.map(
(issue) => new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options),
)
(issue) =>
new OctoKitIssue(this.token, this.params, this.octokitIssueToIssue(issue), this.options),
);
}
}
async createIssue(owner: string, repo: string, title: string, body: string): Promise<void> {
debug(`Creating issue \`${title}\` on ${owner}/${repo}`)
if (!this.options.readonly) await this.octokit.issues.create({ owner, repo, title, body })
safeLog(`Creating issue \`${title}\` on ${owner}/${repo}`);
if (!this.options.readonly) await this.octokit.rest.issues.create({ owner, repo, title, body });
}
protected octokitIssueToIssue(
issue: Octokit.IssuesGetResponse | Octokit.SearchIssuesAndPullRequestsResponseItemsItem,
): Issue {
protected octokitIssueToIssue(issue: IssueGetResponse): Issue {
return {
author: { name: issue.user.login, isGitHubApp: issue.user.type === 'Bot' },
body: issue.body,
author: { name: issue.user?.login ?? 'unkown', isGitHubApp: issue.user?.type === 'Bot' },
body: issue.body ?? '',
number: issue.number,
title: issue.title,
labels: (issue.labels as Octokit.IssuesGetLabelResponse[]).map((label) => label.name),
isPr: !!issue.pull_request?.html_url,
labels: issue.labels.map((label) => (typeof label === 'string' ? label : label.name ?? '')),
open: issue.state === 'open',
locked: (issue as any).locked,
numComments: issue.comments,
reactions: (issue as any).reactions,
assignee: issue.assignee?.login ?? (issue as any).assignees?.[0]?.login,
milestoneId: issue.milestone?.number ?? null,
assignee: issue.assignee?.login ?? (issue as IssueGetResponse).assignees?.[0]?.login,
assignees: (issue as IssueGetResponse).assignees?.map((assignee) => assignee.login) ?? [],
milestone: issue.milestone ? this.octokitMilestoneToMilestone(issue.milestone) : null,
createdAt: +new Date(issue.created_at),
updatedAt: +new Date(issue.updated_at),
closedAt: issue.closed_at ? +new Date((issue.closed_at as unknown) as string) : undefined,
}
closedAt: issue.closed_at ? +new Date(issue.closed_at as unknown as string) : undefined,
};
}
private writeAccessCache: Record<string, boolean> = {}
protected octokitMilestoneToMilestone(milestone: IssuesGetResponseMilestone): Milestone | null {
if (milestone?.number === undefined) {
return null;
}
return {
title: milestone.title,
milestoneId: milestone.number,
// Remove the time portions of the dates as they're not important
createdAt: milestone.created_at !== null ? new Date(milestone.created_at.split('T')[0]) : null,
dueOn: milestone.due_on !== null ? new Date(milestone.due_on.split('T')[0]) : null,
closedAt: milestone.closed_at !== null ? new Date(milestone.closed_at.split('T')[0]) : null,
description: milestone.description ?? '',
numClosedIssues: milestone.closed_issues,
numOpenIssues: milestone.open_issues,
state: milestone.state === 'open' ? 'open' : 'closed',
};
}
private writeAccessCache: Record<string, boolean> = {};
async hasWriteAccess(user: User): Promise<boolean> {
if (user.name in this.writeAccessCache) {
debug('Got permissions from cache for ' + user)
return this.writeAccessCache[user.name]
safeLog('Got permissions from cache for ' + user);
return this.writeAccessCache[user.name];
}
debug('Fetching permissions for ' + user)
safeLog('Fetching permissions for ' + user.name);
const permissions = (
await this.octokit.repos.getCollaboratorPermissionLevel({
await this.octokit.rest.repos.getCollaboratorPermissionLevel({
...this.params,
username: user.name,
})
).data.permission
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write')
).data.permission;
return (this.writeAccessCache[user.name] = permissions === 'admin' || permissions === 'write');
}
async repoHasLabel(name: string): Promise<boolean> {
try {
await this.octokit.issues.getLabel({ ...this.params, name })
return true
await this.octokit.rest.issues.getLabel({ ...this.params, name });
return true;
} catch (err) {
if (err.status === 404) {
return this.options.readonly && this.mockLabels.has(name)
const statusErorr = err as RequestError;
if (statusErorr.status === 404) {
return this.options.readonly && this.mockLabels.has(name);
}
throw err
throw err;
}
}
async createLabel(name: string, color: string, description: string): Promise<void> {
debug('Creating label ' + name)
safeLog('Creating label ' + name);
if (!this.options.readonly)
await this.octokit.issues.createLabel({ ...this.params, color, description, name })
else this.mockLabels.add(name)
await this.octokit.rest.issues.createLabel({ ...this.params, color, description, name });
else this.mockLabels.add(name);
}
async deleteLabel(name: string): Promise<void> {
debug('Deleting label ' + name)
safeLog('Deleting label ' + name);
try {
if (!this.options.readonly) await this.octokit.issues.deleteLabel({ ...this.params, name })
if (!this.options.readonly) await this.octokit.rest.issues.deleteLabel({ ...this.params, name });
} catch (err) {
if (err.status === 404) {
return
const statusErorr = err as RequestError;
if (statusErorr.status === 404) {
return;
}
throw err
throw err;
}
}
async readConfig(path: string): Promise<any> {
debug('Reading config at ' + path)
const repoPath = `.github/${path}.json`
safeLog('Reading config at ' + path);
const repoPath = `.github/${path}.json`;
try {
const data = (await this.octokit.repos.getContents({ ...this.params, path: repoPath })).data
if ('type' in data && data.type === 'file') {
const data = (await this.octokit.rest.repos.getContent({ ...this.params, path: repoPath })).data;
if ('type' in data && data.type === 'file' && 'content' in data) {
if (data.encoding === 'base64' && data.content) {
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'))
return JSON.parse(Buffer.from(data.content, 'base64').toString('utf-8'));
}
throw Error(`Could not read contents "${data.content}" in encoding "${data.encoding}"`)
throw Error(`Could not read contents "${data.content}" in encoding "${data.encoding}"`);
}
throw Error('Found directory at config path when expecting file' + JSON.stringify(data))
throw Error('Found directory at config path when expecting file' + JSON.stringify(data));
} catch (e) {
throw Error('Error with config file at ' + repoPath + ': ' + JSON.stringify(e))
throw Error('Error with config file at ' + repoPath + ': ' + JSON.stringify(e));
}
}
async releaseContainsCommit(release: string, commit: string): Promise<'yes' | 'no' | 'unknown'> {
const isHash = (s: string) => /^[a-fA-F0-9]*$/.test(s);
if (!isHash(release) || !isHash(commit)) return 'unknown';
return new Promise((resolve, reject) =>
exec(`git -C ./repo merge-base --is-ancestor ${commit} ${release}`, (err) => {
if (!err || err.code === 1) {
resolve(!err ? 'yes' : 'no')
resolve(!err ? 'yes' : 'no');
} else if (err.message.includes(`Not a valid commit name ${release}`)) {
// release branch is forked. Probably in endgame. Not released.
resolve('no')
resolve('no');
} else if (err.message.includes(`Not a valid commit name ${commit}`)) {
// commit is probably in a different repo.
resolve('unknown')
resolve('unknown');
} else {
reject(err)
reject(err);
}
}),
)
);
}
async getCurrentRepoMilestone(): Promise<number | undefined> {
safeLog(`Getting repo milestone for ${this.params.owner}/${this.params.repo}`);
// Fetch all milestones open for this repo
const allMilestones = (
await this.octokit.rest.issues.listMilestones({
owner: this.params.owner,
repo: this.params.repo,
state: 'open',
sort: 'due_on',
direction: 'asc',
})
).data;
const currentDate = new Date();
const possibleMilestones = allMilestones
.filter(
(milestone) =>
new Date(milestone.due_on === null ? currentDate : milestone.due_on) > currentDate &&
currentDate > new Date(milestone.created_at) &&
!milestone.title.includes('Recovery'),
)
.sort((a, b) => +new Date(a.due_on ?? currentDate) - +new Date(b.due_on ?? currentDate));
if (possibleMilestones.length === 0) {
return undefined;
}
return possibleMilestones[0].number;
}
async dispatch(title: string): Promise<void> {
debug('Dispatching ' + title)
safeLog('Dispatching ' + title);
if (!this.options.readonly)
await this.octokit.repos.createDispatchEvent({ ...this.params, event_type: title })
await this.octokit.rest.repos.createDispatchEvent({ ...this.params, event_type: title });
}
}
@@ -188,184 +249,206 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
private issueData: { number: number } | Issue,
options: { readonly: boolean } = { readonly: false },
) {
super(token, params, options)
console.log('running bot on issue', issueData.number)
super(token, params, options);
safeLog('running bot on issue', issueData.number);
}
async addAssignee(assignee: string): Promise<void> {
debug('Adding assignee ' + assignee + ' to ' + this.issueData.number)
safeLog('Adding assignee ' + assignee + ' to ' + this.issueData.number);
if (!this.options.readonly) {
await this.octokit.issues.addAssignees({
await this.octokit.rest.issues.addAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
})
});
}
}
async removeAssignee(assignee: string): Promise<void> {
debug('Removing assignee ' + assignee + ' to ' + this.issueData.number)
safeLog('Removing assignee ' + assignee + ' to ' + this.issueData.number);
if (!this.options.readonly) {
await this.octokit.issues.removeAssignees({
await this.octokit.rest.issues.removeAssignees({
...this.params,
issue_number: this.issueData.number,
assignees: [assignee],
})
});
}
}
async closeIssue(): Promise<void> {
debug('Closing issue ' + this.issueData.number)
if (!this.options.readonly)
await this.octokit.issues.update({
async closeIssue(reason: 'completed' | 'not_planned'): Promise<void> {
safeLog('Closing issue ' + this.issueData.number);
if (!this.options.readonly) {
const issue = await this.octokit.rest.issues.get({
...this.params,
issue_number: this.issueData.number,
state: 'closed',
})
});
// Don't close already closed issues even if it means changing the state
if (issue.data.state === 'closed') {
return;
}
await this.octokit.rest.issues
.update({
...this.params,
issue_number: this.issueData.number,
state: 'closed',
state_reason: reason,
})
.catch((e) => {
safeLog('error closing issue:', e);
});
}
}
async reopenIssue(): Promise<void> {
debug('Reopening issue ' + this.issueData.number)
safeLog('Reopening issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.update({
await this.octokit.rest.issues.update({
...this.params,
issue_number: this.issueData.number,
state: 'open',
})
});
}
async lockIssue(): Promise<void> {
debug('Locking issue ' + this.issueData.number)
safeLog('Locking issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.issues.lock({ ...this.params, issue_number: this.issueData.number })
await this.octokit.rest.issues.lock({ ...this.params, issue_number: this.issueData.number });
}
async unlockIssue(): Promise<void> {
safeLog('Unlocking issue ' + this.issueData.number);
if (!this.options.readonly)
await this.octokit.rest.issues.unlock({ ...this.params, issue_number: this.issueData.number });
}
async getIssue(): Promise<Issue> {
if (isIssue(this.issueData)) {
debug('Got issue data from query result ' + this.issueData.number)
return this.issueData
safeLog('Got issue data from query result ' + this.issueData.number);
return this.issueData;
}
console.log('Fetching issue ' + this.issueData.number)
safeLog('Fetching issue ' + this.issueData.number);
const issue = (
await this.octokit.issues.get({
await this.octokit.rest.issues.get({
...this.params,
issue_number: this.issueData.number,
mediaType: { previews: ['squirrel-girl'] },
})
).data
return (this.issueData = this.octokitIssueToIssue(issue))
).data;
return (this.issueData = this.octokitIssueToIssue(issue));
}
async postComment(body: string): Promise<void> {
debug(`Posting comment ${body} on ${this.issueData.number}`)
safeLog(`Posting comment on ${this.issueData.number}`);
if (!this.options.readonly)
await this.octokit.issues.createComment({
await this.octokit.rest.issues.createComment({
...this.params,
issue_number: this.issueData.number,
body,
})
});
}
async deleteComment(id: number): Promise<void> {
debug(`Deleting comment ${id} on ${this.issueData.number}`)
safeLog(`Deleting comment ${id} on ${this.issueData.number}`);
if (!this.options.readonly)
await this.octokit.issues.deleteComment({
await this.octokit.rest.issues.deleteComment({
owner: this.params.owner,
repo: this.params.repo,
comment_id: id,
})
});
}
async setMilestone(milestoneId: number) {
debug(`Setting milestone for ${this.issueData.number} to ${milestoneId}`)
safeLog(`Setting milestone for ${this.issueData.number} to ${milestoneId}`);
if (!this.options.readonly)
await this.octokit.issues.update({
await this.octokit.rest.issues.update({
...this.params,
issue_number: this.issueData.number,
milestone: milestoneId,
})
});
}
async *getComments(last?: boolean): AsyncIterableIterator<Comment[]> {
debug('Fetching comments for ' + this.issueData.number)
safeLog('Fetching comments for ' + this.issueData.number);
const response = this.octokit.paginate.iterator(
this.octokit.issues.listComments.endpoint.merge({
...this.params,
issue_number: this.issueData.number,
per_page: 100,
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
}),
)
const response = this.octokit.paginate.iterator(this.octokit.rest.issues.listComments, {
...this.params,
issue_number: this.issueData.number,
per_page: 100,
...(last ? { per_page: 1, page: (await this.getIssue()).numComments } : {}),
});
for await (const page of response) {
numRequests++
yield (page.data as Octokit.IssuesListCommentsResponseItem[]).map((comment) => ({
author: { name: comment.user.login, isGitHubApp: comment.user.type === 'Bot' },
body: comment.body,
numRequests++;
yield page.data.map((comment) => ({
author: { name: comment.user?.login ?? '', isGitHubApp: comment.user?.type === 'Bot' },
body: comment.body ?? '',
id: comment.id,
timestamp: +new Date(comment.created_at),
}))
}));
}
}
async addLabel(name: string): Promise<void> {
debug(`Adding label ${name} to ${this.issueData.number}`)
safeLog(`Adding label ${name} to ${this.issueData.number}`);
if (!(await this.repoHasLabel(name))) {
throw Error(`Action could not execute becuase label ${name} is not defined.`)
throw Error(`Action could not execute becuase label ${name} is not defined.`);
}
if (!this.options.readonly)
await this.octokit.issues.addLabels({
await this.octokit.rest.issues.addLabels({
...this.params,
issue_number: this.issueData.number,
labels: [name],
})
});
}
async getAssigner(assignee: string): Promise<string> {
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
const options = {
...this.params,
issue_number: this.issueData.number,
})
};
let assigner: string | undefined
let assigner: string | undefined;
for await (const event of this.octokit.paginate.iterator(options)) {
numRequests++
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
for await (const event of this.octokit.paginate.iterator(
this.octokit.rest.issues.listEventsForTimeline,
options,
)) {
numRequests++;
const timelineEvents = event.data;
for (const timelineEvent of timelineEvents) {
if (
timelineEvent.event === 'assigned' &&
(timelineEvent as any).assignee.login === assignee
) {
assigner = timelineEvent.actor.login
if (timelineEvent.event === 'assigned' && timelineEvent.assignee?.login === assignee) {
assigner = timelineEvent.actor?.login;
}
}
if (assigner) {
break;
}
}
if (!assigner) {
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.')
throw Error('Expected to find ' + assignee + ' in issue timeline but did not.');
}
return assigner
return assigner;
}
async removeLabel(name: string): Promise<void> {
debug(`Removing label ${name} from ${this.issueData.number}`)
safeLog(`Removing label ${name} from ${this.issueData.number}`);
try {
if (!this.options.readonly)
await this.octokit.issues.removeLabel({
await this.octokit.rest.issues.removeLabel({
...this.params,
issue_number: this.issueData.number,
name,
})
});
} catch (err) {
if (err.status === 404) {
console.log(`Label ${name} not found on issue`)
return
const statusErorr = err as RequestError;
if (statusErorr.status === 404) {
safeLog(`Label ${name} not found on issue`);
return;
}
throw err
throw err;
}
}
@@ -373,43 +456,49 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
alreadyChecked: number[] = [],
): Promise<{ hash: string | undefined; timestamp: number } | undefined> {
if (alreadyChecked.includes(this.issueData.number)) {
return undefined
return undefined;
}
alreadyChecked.push(this.issueData.number)
alreadyChecked.push(this.issueData.number);
if ((await this.getIssue()).open) {
return
return;
}
const closingHashComment = /(?:\\|\/)closedWith (\S*)/
const closingHashComment =
/(?:\\|\/)closedWith (?:https:\/\/github\.com\/microsoft\/vscode\/commit\/)?([a-fA-F0-9]{7,40})/;
const options = this.octokit.issues.listEventsForTimeline.endpoint.merge({
const options = {
...this.params,
issue_number: this.issueData.number,
})
let closingCommit: { hash: string | undefined; timestamp: number } | undefined
const crossReferencing: number[] = []
for await (const event of this.octokit.paginate.iterator(options)) {
numRequests++
};
let closingCommit: { hash: string | undefined; timestamp: number } | undefined;
const crossReferencing: number[] = [];
for await (const event of this.octokit.paginate.iterator(
this.octokit.rest.issues.listEventsForTimeline,
options,
)) {
numRequests++;
const timelineEvents = event.data as Octokit.IssuesListEventsForTimelineResponseItem[]
const timelineEvents = event.data;
for (const timelineEvent of timelineEvents) {
if (
(timelineEvent.event === 'closed' || timelineEvent.event === 'merged') &&
timelineEvent.created_at &&
timelineEvent.commit_id &&
timelineEvent.commit_url
.toLowerCase()
?.toLowerCase()
.includes(`/${this.params.owner}/${this.params.repo}/`.toLowerCase())
) {
closingCommit = {
hash: timelineEvent.commit_id,
timestamp: +new Date(timelineEvent.created_at),
}
};
}
if (timelineEvent.event === 'reopened') {
closingCommit = undefined
closingCommit = undefined;
}
if (
timelineEvent.created_at &&
timelineEvent.event === 'commented' &&
!((timelineEvent as any).body as string)?.includes('UNABLE_TO_LOCATE_COMMIT_MESSAGE') &&
closingHashComment.test((timelineEvent as any).body)
@@ -417,7 +506,7 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
closingCommit = {
hash: closingHashComment.exec((timelineEvent as any).body)![1],
timestamp: +new Date(timelineEvent.created_at),
}
};
}
if (
timelineEvent.event === 'cross-referenced' &&
@@ -426,7 +515,7 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
`/${this.params.owner}/${this.params.repo}/`.toLowerCase(),
)
) {
crossReferencing.push((timelineEvent as any).source.issue.number)
crossReferencing.push((timelineEvent as any).source.issue.number);
}
}
}
@@ -437,19 +526,19 @@ export class OctoKitIssue extends OctoKit implements GitHubIssue {
for (const id of crossReferencing.reverse()) {
const closed = await new OctoKitIssue(this.token, this.params, {
number: id,
}, this.options).getClosingInfo(alreadyChecked)
}).getClosingInfo(alreadyChecked);
if (closed) {
if (Math.abs(closed.timestamp - ((await this.getIssue()).closedAt ?? 0)) < 5000) {
closingCommit = closed
break
closingCommit = closed;
break;
}
}
}
}
console.log(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`)
return closingCommit
safeLog(`Got ${JSON.stringify(closingCommit)} as closing commit of ${this.issueData.number}`);
return closingCommit;
}
}
@@ -464,7 +553,7 @@ function isIssue(object: any): object is Issue {
'number' in object &&
'numComments' in object &&
'reactions' in object &&
'milestoneId' in object
'milestoneId' in object;
return isIssue
return isIssue;
}
+44 -29
View File
@@ -11,51 +11,50 @@ const utils_1 = require("./utils");
const core_1 = require("@actions/core");
class Action {
constructor() {
this.token = utils_1.getRequiredInput('token');
this.username = new github_1.GitHub(this.token).users.getAuthenticated().then((v) => v.data.name);
this.token = (0, utils_1.getRequiredInput)('token');
this.username = (0, github_1.getOctokit)(this.token)
.rest.users.getAuthenticated()
.then((v) => { var _a; return (_a = v.data.name) !== null && _a !== void 0 ? _a : 'unknown'; }, () => 'unknown');
}
async run() {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
console.log('running ', this.id, 'with context', {
...github_1.context,
payload: {
issue: (_b = (_a = github_1.context.payload) === null || _a === void 0 ? void 0 : _a.issue) === null || _b === void 0 ? void 0 : _b.number,
label: (_d = (_c = github_1.context.payload) === null || _c === void 0 ? void 0 : _c.label) === null || _d === void 0 ? void 0 : _d.name,
repository: (_f = (_e = github_1.context.payload) === null || _e === void 0 ? void 0 : _e.repository) === null || _f === void 0 ? void 0 : _f.html_url,
sender: (_j = (_h = (_g = github_1.context.payload) === null || _g === void 0 ? void 0 : _g.sender) === null || _h === void 0 ? void 0 : _h.login) !== null && _j !== void 0 ? _j : (_l = (_k = github_1.context.payload) === null || _k === void 0 ? void 0 : _k.sender) === null || _l === void 0 ? void 0 : _l.type,
},
});
var _a, _b, _c, _d, _e, _f;
if (utils_1.errorLoggingIssue) {
const { repo, issue, owner } = utils_1.errorLoggingIssue;
if (github_1.context.repo.repo === repo &&
github_1.context.repo.owner === owner &&
((_m = github_1.context.payload.issue) === null || _m === void 0 ? void 0 : _m.number) === issue) {
return console.log('refusing to run on error logging issue to prevent cascading errors');
((_a = github_1.context.payload.issue) === null || _a === void 0 ? void 0 : _a.number) === issue) {
return (0, utils_1.safeLog)('refusing to run on error logging issue to prevent cascading errors');
}
}
try {
const token = utils_1.getRequiredInput('token');
const readonly = !!core_1.getInput('readonly');
const issue = (_o = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.issue) === null || _o === void 0 ? void 0 : _o.number;
const token = (0, utils_1.getRequiredInput)('token');
const readonly = !!(0, core_1.getInput)('readonly');
const issue = (_b = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.issue) === null || _b === void 0 ? void 0 : _b.number;
if (issue) {
const octokit = new octokit_1.OctoKitIssue(token, github_1.context.repo, { number: issue }, { readonly });
if (github_1.context.eventName === 'issue_comment') {
await this.onCommented(octokit, github_1.context.payload.comment.body, github_1.context.actor);
await this.onCommented(octokit, (_c = github_1.context.payload.comment) === null || _c === void 0 ? void 0 : _c.body, github_1.context.actor);
}
else if (github_1.context.eventName === 'issues') {
else if (github_1.context.eventName === 'issues' ||
github_1.context.eventName === 'pull_request' ||
github_1.context.eventName === 'pull_request_target') {
switch (github_1.context.payload.action) {
case 'opened':
await this.onOpened(octokit);
case 'ready_for_review':
await this.onOpened(octokit, github_1.context.payload);
break;
case 'reopened':
await this.onReopened(octokit);
break;
case 'closed':
await this.onClosed(octokit);
await this.onClosed(octokit, github_1.context.payload);
break;
case 'labeled':
await this.onLabeled(octokit, github_1.context.payload.label.name);
break;
case 'assigned':
await this.onAssigned(octokit, github_1.context.payload.assignee.login);
break;
case 'unassigned':
await this.onUnassigned(octokit, github_1.context.payload.assignee.login);
break;
@@ -70,22 +69,32 @@ class Action {
}
}
}
else if (github_1.context.eventName === 'create') {
await this.onCreated(new octokit_1.OctoKit(token, github_1.context.repo, { readonly }), (_d = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.payload) === null || _d === void 0 ? void 0 : _d.ref, (_f = (_e = github_1.context === null || github_1.context === void 0 ? void 0 : github_1.context.payload) === null || _e === void 0 ? void 0 : _e.sender) === null || _f === void 0 ? void 0 : _f.login);
}
else {
await this.onTriggered(new octokit_1.OctoKit(token, github_1.context.repo, { readonly }));
}
}
catch (e) {
await this.error(e);
const err = e;
try {
await this.error(err);
}
catch {
(0, utils_1.safeLog)((err === null || err === void 0 ? void 0 : err.stack) || (err === null || err === void 0 ? void 0 : err.message) || String(e));
}
}
const usage = await utils_1.getRateLimit(this.token);
const usage = await (0, utils_1.getRateLimit)(this.token);
}
async error(error) {
var _a;
const details = {
message: `${error.message}\n${error.stack}`,
id: this.id,
user: await this.username,
};
if (github_1.context.issue.number)
if ((_a = github_1.context.issue) === null || _a === void 0 ? void 0 : _a.number)
details.issue = github_1.context.issue.number;
const rendered = `
Message: ${details.message}
@@ -94,28 +103,34 @@ Actor: ${details.user}
ID: ${details.id}
`;
await utils_1.logErrorToIssue(rendered, true, this.token);
core_1.setFailed(error.message);
await (0, utils_1.logErrorToIssue)(rendered, true, this.token);
(0, core_1.setFailed)(error.message);
}
async onTriggered(_octokit) {
throw Error('not implemented');
}
async onCreated(_octokit, _ref, _creator) {
throw Error('not implemented');
}
async onEdited(_issue) {
throw Error('not implemented');
}
async onLabeled(_issue, _label) {
throw Error('not implemented');
}
async onUnassigned(_issue, _label) {
async onAssigned(_issue, _assignee) {
throw Error('not implemented');
}
async onOpened(_issue) {
async onUnassigned(_issue, _assignee) {
throw Error('not implemented');
}
async onOpened(_issue, _payload) {
throw Error('not implemented');
}
async onReopened(_issue) {
throw Error('not implemented');
}
async onClosed(_issue) {
async onClosed(_issue, _payload) {
throw Error('not implemented');
}
async onMilestoned(_issue) {
+82 -61
View File
@@ -3,87 +3,102 @@
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { OctoKit, OctoKitIssue, getNumRequests } from '../api/octokit'
import { context, GitHub } from '@actions/github'
import { getRequiredInput, logErrorToIssue, getRateLimit, errorLoggingIssue } from './utils'
import { getInput, setFailed } from '@actions/core'
import { OctoKit, OctoKitIssue, getNumRequests } from '../api/octokit';
import { context, getOctokit } from '@actions/github';
import { getRequiredInput, logErrorToIssue, getRateLimit, errorLoggingIssue, safeLog } from './utils';
import { getInput, setFailed } from '@actions/core';
import { WebhookPayload } from '@actions/github/lib/interfaces';
export abstract class Action {
abstract id: string
abstract id: string;
private username: Promise<string>
private token = getRequiredInput('token')
private username: Promise<string>;
private token = getRequiredInput('token');
constructor() {
this.username = new GitHub(this.token).users.getAuthenticated().then((v) => v.data.name)
this.username = getOctokit(this.token)
.rest.users.getAuthenticated()
.then(
(v) => v.data.name ?? 'unknown',
() => 'unknown',
);
}
public async run() {
console.log('running ', this.id, 'with context', {
...context,
payload: {
issue: context.payload?.issue?.number,
label: context.payload?.label?.name,
repository: context.payload?.repository?.html_url,
sender: context.payload?.sender?.login ?? context.payload?.sender?.type,
},
})
if (errorLoggingIssue) {
const { repo, issue, owner } = errorLoggingIssue
const { repo, issue, owner } = errorLoggingIssue;
if (
context.repo.repo === repo &&
context.repo.owner === owner &&
context.payload.issue?.number === issue
) {
return console.log('refusing to run on error logging issue to prevent cascading errors')
return safeLog('refusing to run on error logging issue to prevent cascading errors');
}
}
try {
const token = getRequiredInput('token')
const readonly = !!getInput('readonly')
const token = getRequiredInput('token');
const readonly = !!getInput('readonly');
const issue = context?.issue?.number
const issue = context?.issue?.number;
if (issue) {
const octokit = new OctoKitIssue(token, context.repo, { number: issue }, { readonly })
const octokit = new OctoKitIssue(token, context.repo, { number: issue }, { readonly });
if (context.eventName === 'issue_comment') {
await this.onCommented(octokit, context.payload.comment.body, context.actor)
} else if (context.eventName === 'issues') {
await this.onCommented(octokit, context.payload.comment?.body, context.actor);
} else if (
context.eventName === 'issues' ||
context.eventName === 'pull_request' ||
context.eventName === 'pull_request_target'
) {
switch (context.payload.action) {
case 'opened':
await this.onOpened(octokit)
break
case 'ready_for_review':
await this.onOpened(octokit, context.payload);
break;
case 'reopened':
await this.onReopened(octokit)
break
await this.onReopened(octokit);
break;
case 'closed':
await this.onClosed(octokit)
break
await this.onClosed(octokit, context.payload);
break;
case 'labeled':
await this.onLabeled(octokit, context.payload.label.name)
break
await this.onLabeled(octokit, context.payload.label.name);
break;
case 'assigned':
await this.onAssigned(octokit, context.payload.assignee.login);
break;
case 'unassigned':
await this.onUnassigned(octokit, context.payload.assignee.login)
break
await this.onUnassigned(octokit, context.payload.assignee.login);
break;
case 'edited':
await this.onEdited(octokit)
break
await this.onEdited(octokit);
break;
case 'milestoned':
await this.onMilestoned(octokit)
break
await this.onMilestoned(octokit);
break;
default:
throw Error('Unexpected action: ' + context.payload.action)
throw Error('Unexpected action: ' + context.payload.action);
}
}
} else if (context.eventName === 'create') {
await this.onCreated(
new OctoKit(token, context.repo, { readonly }),
context?.payload?.ref,
context?.payload?.sender?.login,
);
} else {
await this.onTriggered(new OctoKit(token, context.repo, { readonly }))
await this.onTriggered(new OctoKit(token, context.repo, { readonly }));
}
} catch (e) {
await this.error(e)
const err = e as Error;
try {
await this.error(err);
} catch {
safeLog(err?.stack || err?.message || String(e));
}
}
const usage = await getRateLimit(this.token)
const usage = await getRateLimit(this.token);
}
private async error(error: Error) {
@@ -91,9 +106,9 @@ export abstract class Action {
message: `${error.message}\n${error.stack}`,
id: this.id,
user: await this.username,
}
};
if (context.issue.number) details.issue = context.issue.number
if (context.issue?.number) details.issue = context.issue.number;
const rendered = `
Message: ${details.message}
@@ -101,37 +116,43 @@ Message: ${details.message}
Actor: ${details.user}
ID: ${details.id}
`
await logErrorToIssue(rendered, true, this.token)
`;
await logErrorToIssue(rendered, true, this.token);
setFailed(error.message)
setFailed(error.message);
}
protected async onTriggered(_octokit: OctoKit): Promise<void> {
throw Error('not implemented')
throw Error('not implemented');
}
protected async onCreated(_octokit: OctoKit, _ref: string, _creator: string): Promise<void> {
throw Error('not implemented');
}
protected async onEdited(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
throw Error('not implemented');
}
protected async onLabeled(_issue: OctoKitIssue, _label: string): Promise<void> {
throw Error('not implemented')
throw Error('not implemented');
}
protected async onUnassigned(_issue: OctoKitIssue, _label: string): Promise<void> {
throw Error('not implemented')
protected async onAssigned(_issue: OctoKitIssue, _assignee: string): Promise<void> {
throw Error('not implemented');
}
protected async onOpened(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
protected async onUnassigned(_issue: OctoKitIssue, _assignee: string): Promise<void> {
throw Error('not implemented');
}
protected async onOpened(_issue: OctoKitIssue, _payload: WebhookPayload): Promise<void> {
throw Error('not implemented');
}
protected async onReopened(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
throw Error('not implemented');
}
protected async onClosed(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
protected async onClosed(_issue: OctoKitIssue, _payload: WebhookPayload): Promise<void> {
throw Error('not implemented');
}
protected async onMilestoned(_issue: OctoKitIssue): Promise<void> {
throw Error('not implemented')
throw Error('not implemented');
}
protected async onCommented(_issue: OctoKitIssue, _comment: string, _actor: string): Promise<void> {
throw Error('not implemented')
throw Error('not implemented');
}
}
+24 -22
View File
@@ -5,6 +5,7 @@
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActionBase = void 0;
const utils_1 = require("./utils");
class ActionBase {
constructor(labels, milestoneName, milestoneId, ignoreLabels, ignoreMilestoneNames, ignoreMilestoneIds, minimumVotes, maximumVotes, involves) {
this.labels = labels;
@@ -27,15 +28,15 @@ class ActionBase {
buildQuery(baseQuery) {
var _a, _b, _c, _d, _e, _f;
let query = baseQuery;
console.log(`labels: ${this.labels}`);
console.log(`milestoneName: ${this.milestoneName}`);
console.log(`milestoneId: ${this.milestoneId}`);
console.log(`ignoreLabels: ${this.ignoreLabels}`);
console.log(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
console.log(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
console.log(`minimumVotes: ${this.minimumVotes}`);
console.log(`maximumVotes: ${this.maximumVotes}`);
console.log(`involves: ${this.involves}`);
(0, utils_1.safeLog)(`labels: ${this.labels}`);
(0, utils_1.safeLog)(`milestoneName: ${this.milestoneName}`);
(0, utils_1.safeLog)(`milestoneId: ${this.milestoneId}`);
(0, utils_1.safeLog)(`ignoreLabels: ${this.ignoreLabels}`);
(0, utils_1.safeLog)(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
(0, utils_1.safeLog)(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
(0, utils_1.safeLog)(`minimumVotes: ${this.minimumVotes}`);
(0, utils_1.safeLog)(`maximumVotes: ${this.maximumVotes}`);
(0, utils_1.safeLog)(`involves: ${this.involves}`);
// Both milestone name and milestone Id must be provided and must match.
// The name is used to construct the query, which does not accept ID.
// The ID is used for comparisons with issue data, which does not include the name.
@@ -104,22 +105,23 @@ class ActionBase {
// This is necessary because GitHub sometimes returns incorrect results,
// and because issues may get modified while we are processing them.
validateIssue(issue) {
var _a, _b;
if (this.ignoreAllWithLabels) {
// Validate that the issue does not have labels
if (issue.labels && issue.labels.length !== 0) {
console.log(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
return false;
}
}
else {
// Make sure all labels we wanted are present.
if ((!issue.labels || issue.labels.length == 0) && this.labelsSet.length > 0) {
console.log(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
return false;
}
for (const str of this.labelsSet) {
if (!issue.labels.includes(str)) {
console.log(`Issue ${issue.number} skipped due to not having a required label set.`);
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having a required label set.`);
return false;
}
}
@@ -127,7 +129,7 @@ class ActionBase {
if (issue.labels && issue.labels.length > 0) {
for (const str of this.ignoreLabelsSet) {
if (issue.labels.includes(str)) {
console.log(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
return false;
}
}
@@ -135,22 +137,22 @@ class ActionBase {
}
if (this.ignoreAllWithMilestones) {
// Validate that the issue does not have a milestone.
if (issue.milestoneId != null) {
console.log(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
if (issue.milestone) {
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
return false;
}
}
else {
// Make sure milestone is present, if required.
if (this.milestoneId != undefined && issue.milestoneId != +this.milestoneId) {
console.log(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestoneId}`);
if (this.milestoneId != null && ((_a = issue.milestone) === null || _a === void 0 ? void 0 : _a.milestoneId) != +this.milestoneId) {
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${(_b = issue.milestone) === null || _b === void 0 ? void 0 : _b.milestoneId}`);
return false;
}
// Make sure a milestones we wanted to ignore is not present.
if (issue.milestoneId != null) {
if (issue.milestone && issue.milestone.milestoneId != null) {
for (const str of this.ignoreMilestoneIdsSet) {
if (issue.milestoneId == +str) {
console.log(`Issue ${issue.number} skipped due to milestone ${issue.milestoneId} found in list of ignored milestone IDs.`);
if (issue.milestone.milestoneId == +str) {
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to milestone ${issue.milestone.milestoneId} found in list of ignored milestone IDs.`);
return false;
}
}
@@ -163,14 +165,14 @@ class ActionBase {
}
if (this.minimumVotes != undefined) {
if (upvotes < this.minimumVotes) {
console.log(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
return false;
}
}
// Verify the issue does not have too many upvotes
if (this.maximumVotes != undefined) {
if (upvotes > this.maximumVotes) {
console.log(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
(0, utils_1.safeLog)(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
return false;
}
}
+23 -22
View File
@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { Issue } from '../api/api'
import { safeLog } from './utils';
export class ActionBase {
constructor(
@@ -29,15 +30,15 @@ export class ActionBase {
buildQuery(baseQuery: string): string {
let query = baseQuery;
console.log(`labels: ${this.labels}`);
console.log(`milestoneName: ${this.milestoneName}`);
console.log(`milestoneId: ${this.milestoneId}`);
console.log(`ignoreLabels: ${this.ignoreLabels}`);
console.log(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
console.log(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
console.log(`minimumVotes: ${this.minimumVotes}`);
console.log(`maximumVotes: ${this.maximumVotes}`);
console.log(`involves: ${this.involves}`);
safeLog(`labels: ${this.labels}`);
safeLog(`milestoneName: ${this.milestoneName}`);
safeLog(`milestoneId: ${this.milestoneId}`);
safeLog(`ignoreLabels: ${this.ignoreLabels}`);
safeLog(`ignoreMilestoneNames: ${this.ignoreMilestoneNames}`);
safeLog(`ignoreMilestoneIds: ${this.ignoreMilestoneIds}`);
safeLog(`minimumVotes: ${this.minimumVotes}`);
safeLog(`maximumVotes: ${this.maximumVotes}`);
safeLog(`involves: ${this.involves}`);
// Both milestone name and milestone Id must be provided and must match.
// The name is used to construct the query, which does not accept ID.
@@ -117,18 +118,18 @@ export class ActionBase {
if (this.ignoreAllWithLabels) {
// Validate that the issue does not have labels
if (issue.labels && issue.labels.length !== 0) {
console.log(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
safeLog(`Issue ${issue.number} skipped due to label found after querying for no:label.`);
return false;
}
} else {
// Make sure all labels we wanted are present.
if ((!issue.labels || issue.labels.length == 0) && this.labelsSet.length > 0) {
console.log(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
safeLog(`Issue ${issue.number} skipped due to not having a required label set. No labels found.`);
return false;
}
for (const str of this.labelsSet) {
if (!issue.labels.includes(str)) {
console.log(`Issue ${issue.number} skipped due to not having a required label set.`);
safeLog(`Issue ${issue.number} skipped due to not having a required label set.`);
return false;
}
}
@@ -136,7 +137,7 @@ export class ActionBase {
if (issue.labels && issue.labels.length > 0) {
for (const str of this.ignoreLabelsSet) {
if (issue.labels.includes(str)) {
console.log(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
safeLog(`Issue ${issue.number} skipped due to having an ignore label set: ${str}`);
return false;
}
}
@@ -144,21 +145,21 @@ export class ActionBase {
}
if (this.ignoreAllWithMilestones) {
// Validate that the issue does not have a milestone.
if (issue.milestoneId != null) {
console.log(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
if (issue.milestone) {
safeLog(`Issue ${issue.number} skipped due to milestone found after querying for no:milestone.`);
return false;
}
} else {
// Make sure milestone is present, if required.
if (this.milestoneId != undefined && issue.milestoneId != +this.milestoneId) {
console.log(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestoneId}`);
if (this.milestoneId != null && issue.milestone?.milestoneId != +this.milestoneId) {
safeLog(`Issue ${issue.number} skipped due to not having required milsetone id ${this.milestoneId}. Had: ${issue.milestone?.milestoneId}`);
return false;
}
// Make sure a milestones we wanted to ignore is not present.
if (issue.milestoneId != null) {
if (issue.milestone && issue.milestone.milestoneId != null) {
for (const str of this.ignoreMilestoneIdsSet) {
if (issue.milestoneId == +str) {
console.log(`Issue ${issue.number} skipped due to milestone ${issue.milestoneId} found in list of ignored milestone IDs.`);
if (issue.milestone.milestoneId == +str) {
safeLog(`Issue ${issue.number} skipped due to milestone ${issue.milestone.milestoneId} found in list of ignored milestone IDs.`);
return false;
}
}
@@ -171,14 +172,14 @@ export class ActionBase {
}
if (this.minimumVotes != undefined) {
if (upvotes < this.minimumVotes) {
console.log(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
safeLog(`Issue ${issue.number} skipped due to not having at least ${this.minimumVotes} upvotes. Had: ${upvotes}`);
return false;
}
}
// Verify the issue does not have too many upvotes
if (this.maximumVotes != undefined) {
if (upvotes > this.maximumVotes) {
console.log(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
safeLog(`Issue ${issue.number} skipped due to having more than ${this.maximumVotes} upvotes. Had: ${upvotes}`);
return false;
}
}
+7
View File
@@ -0,0 +1,7 @@
"use strict";
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=OctokitTypings.js.map
+16
View File
@@ -0,0 +1,16 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import type { RestEndpointMethodTypes } from '@octokit/rest';
// This file is just to re-export some octokit types as nicer names
export type ActionsListWorkflowRunsResponseWorkflowRunsItem =
RestEndpointMethodTypes['actions']['listWorkflowRuns']['response']['data']['workflow_runs'][0];
export type IssueGetResponse = RestEndpointMethodTypes['issues']['get']['response']['data'];
export type IssuesGetResponseMilestone =
RestEndpointMethodTypes['issues']['get']['response']['data']['milestone'];
+38 -18
View File
@@ -4,14 +4,16 @@
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.logErrorToIssue = exports.errorLoggingIssue = exports.getRateLimit = exports.daysAgoToHumanReadbleDate = exports.daysAgoToTimestamp = exports.loadLatestRelease = exports.normalizeIssue = exports.getRequiredInput = exports.getInput = void 0;
exports.safeLog = exports.logErrorToIssue = exports.errorLoggingIssue = exports.getRateLimit = exports.daysAgoToHumanReadbleDate = exports.daysAgoToTimestamp = exports.loadLatestRelease = exports.normalizeIssue = exports.getRequiredInput = exports.getInput = void 0;
const core = require("@actions/core");
const github_1 = require("@actions/github");
const axios_1 = require("axios");
const octokit_1 = require("../api/octokit");
exports.getInput = (name) => core.getInput(name) || undefined;
exports.getRequiredInput = (name) => core.getInput(name, { required: true });
exports.normalizeIssue = (issue) => {
const getInput = (name) => core.getInput(name) || undefined;
exports.getInput = getInput;
const getRequiredInput = (name) => core.getInput(name, { required: true });
exports.getRequiredInput = getRequiredInput;
const normalizeIssue = (issue) => {
let { body, title } = issue;
body = body !== null && body !== void 0 ? body : '';
title = title !== null && title !== void 0 ? title : '';
@@ -43,25 +45,36 @@ exports.normalizeIssue = (issue) => {
issueType: isBug ? 'bug' : isFeatureRequest ? 'feature_request' : 'unknown',
};
};
exports.loadLatestRelease = async (quality) => (await axios_1.default.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data;
exports.daysAgoToTimestamp = (days) => +new Date(Date.now() - days * 24 * 60 * 60 * 1000);
exports.daysAgoToHumanReadbleDate = (days) => new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
exports.getRateLimit = async (token) => {
const usageData = (await new github_1.GitHub(token).rateLimit.get()).data.resources;
exports.normalizeIssue = normalizeIssue;
const loadLatestRelease = async (quality) => (await axios_1.default.get(`https://update.code.visualstudio.com/api/update/darwin/${quality}/latest`)).data;
exports.loadLatestRelease = loadLatestRelease;
const daysAgoToTimestamp = (days) => +new Date(Date.now() - days * 24 * 60 * 60 * 1000);
exports.daysAgoToTimestamp = daysAgoToTimestamp;
const daysAgoToHumanReadbleDate = (days) => new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
exports.daysAgoToHumanReadbleDate = daysAgoToHumanReadbleDate;
const getRateLimit = async (token) => {
const usageData = (await (0, github_1.getOctokit)(token).rest.rateLimit.get()).data.resources;
const usage = {};
['core', 'graphql', 'search'].forEach(async (category) => {
usage[category] = 1 - usageData[category].remaining / usageData[category].limit;
var _a, _b, _c, _d;
if (usageData[category]) {
usage[category] = 1 - ((_b = (_a = usageData[category]) === null || _a === void 0 ? void 0 : _a.remaining) !== null && _b !== void 0 ? _b : 0) / ((_d = (_c = usageData[category]) === null || _c === void 0 ? void 0 : _c.limit) !== null && _d !== void 0 ? _d : 1);
}
});
return usage;
};
exports.getRateLimit = getRateLimit;
exports.errorLoggingIssue = (() => {
try {
const repo = github_1.context.repo.owner.toLowerCase() + '/' + github_1.context.repo.repo.toLowerCase();
if (repo === 'microsoft/vscode-cpptools') {
return { repo: 'vscode-cpptools', owner: 'Microsoft', issue: 6282 };
if (repo === 'microsoft/vscode' || repo === 'microsoft/vscode-remote-release') {
return { repo: 'vscode', owner: 'Microsoft', issue: 93814 };
}
else if (exports.getInput('errorLogIssueNumber')) {
return { ...github_1.context.repo, issue: +exports.getRequiredInput('errorLogIssueNumber') };
else if (/microsoft\//.test(repo)) {
return { repo: 'vscode-internalbacklog', owner: 'Microsoft', issue: 974 };
}
else if ((0, exports.getInput)('errorLogIssueNumber')) {
return { ...github_1.context.repo, issue: +(0, exports.getRequiredInput)('errorLogIssueNumber') };
}
else {
return undefined;
@@ -72,19 +85,20 @@ exports.errorLoggingIssue = (() => {
return undefined;
}
})();
exports.logErrorToIssue = async (message, ping, token) => {
const logErrorToIssue = async (message, ping, token) => {
var _a;
// Attempt to wait out abuse detection timeout if present
await new Promise((resolve) => setTimeout(resolve, 10000));
const dest = exports.errorLoggingIssue;
if (!dest)
return console.log('no error logging repo defined. swallowing error:', message);
return new octokit_1.OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue }, { readonly: !!exports.getInput('readonly') })
return console.log('no error logging repo defined. swallowing error.');
return new octokit_1.OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue })
.postComment(`
Workflow: ${github_1.context.workflow}
Error: ${message}
Issue: ${ping ? `${github_1.context.repo.owner}/${github_1.context.repo.repo}#` : ''}${github_1.context.issue.number}
Issue: ${ping ? `${github_1.context.repo.owner}/${github_1.context.repo.repo}#` : ''}${(_a = github_1.context.issue) === null || _a === void 0 ? void 0 : _a.number}
Repo: ${github_1.context.repo.owner}/${github_1.context.repo.repo}
@@ -96,4 +110,10 @@ ${JSON.stringify(github_1.context, null, 2)
-->
`);
};
exports.logErrorToIssue = logErrorToIssue;
const safeLog = (message, ...args) => {
const clean = (val) => ('' + val).replace(/:|#/g, '');
console.log(clean(message), ...args.map(clean));
};
exports.safeLog = safeLog;
//# sourceMappingURL=utils.js.map
+57 -47
View File
@@ -3,24 +3,24 @@
* Licensed under the MIT License. See LICENSE in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as core from '@actions/core'
import { context, GitHub } from '@actions/github'
import axios from 'axios'
import { OctoKitIssue } from '../api/octokit'
import * as core from '@actions/core';
import { context, getOctokit } from '@actions/github';
import axios from 'axios';
import { OctoKitIssue } from '../api/octokit';
export const getInput = (name: string) => core.getInput(name) || undefined
export const getRequiredInput = (name: string) => core.getInput(name, { required: true })
export const getInput = (name: string) => core.getInput(name) || undefined;
export const getRequiredInput = (name: string) => core.getInput(name, { required: true });
export const normalizeIssue = (issue: {
body: string
title: string
body: string;
title: string;
}): { body: string; title: string; issueType: 'bug' | 'feature_request' | 'unknown' } => {
let { body, title } = issue
body = body ?? ''
title = title ?? ''
const isBug = body.includes('bug_report_template') || /Issue Type:.*Bug.*/.test(body)
let { body, title } = issue;
body = body ?? '';
title = title ?? '';
const isBug = body.includes('bug_report_template') || /Issue Type:.*Bug.*/.test(body);
const isFeatureRequest =
body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body)
body.includes('feature_request_template') || /Issue Type:.*Feature Request.*/.test(body);
const cleanse = (str: string) => {
let out = str
@@ -34,78 +34,83 @@ export const normalizeIssue = (issue: {
.replace(/does this issue occur when all extensions are disabled.*/gu, '')
.replace(/!?\[[^\]]*\]\([^)]*\)/gu, '')
.replace(/\s+/gu, ' ')
.replace(/```[^`]*?```/gu, '')
.replace(/```[^`]*?```/gu, '');
while (
out.includes(`<details>`) &&
out.includes('</details>') &&
out.indexOf(`</details>`) > out.indexOf(`<details>`)
) {
out = out.slice(0, out.indexOf('<details>')) + out.slice(out.indexOf(`</details>`) + 10)
out = out.slice(0, out.indexOf('<details>')) + out.slice(out.indexOf(`</details>`) + 10);
}
return out
}
return out;
};
return {
body: cleanse(body),
title: cleanse(title),
issueType: isBug ? 'bug' : isFeatureRequest ? 'feature_request' : 'unknown',
}
}
};
};
export interface Release {
productVersion: string
timestamp: number
version: string
productVersion: string;
timestamp: number;
version: string;
}
export const loadLatestRelease = async (quality: 'stable' | 'insider'): Promise<Release | undefined> =>
(await axios.get(`https://vscode-update.azurewebsites.net/api/update/darwin/${quality}/latest`)).data
(await axios.get(`https://update.code.visualstudio.com/api/update/darwin/${quality}/latest`)).data;
export const daysAgoToTimestamp = (days: number): number => +new Date(Date.now() - days * 24 * 60 * 60 * 1000)
export const daysAgoToTimestamp = (days: number): number =>
+new Date(Date.now() - days * 24 * 60 * 60 * 1000);
export const daysAgoToHumanReadbleDate = (days: number) =>
new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '')
new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString().replace(/\.\d{3}\w$/, '');
export const getRateLimit = async (token: string) => {
const usageData = (await new GitHub(token).rateLimit.get()).data.resources
const usage = {} as { core: number; graphql: number; search: number }
;(['core', 'graphql', 'search'] as const).forEach(async (category) => {
usage[category] = 1 - usageData[category].remaining / usageData[category].limit
})
return usage
}
const usageData = (await getOctokit(token).rest.rateLimit.get()).data.resources;
const usage = {} as { core: number; graphql: number; search: number };
(['core', 'graphql', 'search'] as const).forEach(async (category) => {
if (usageData[category]) {
usage[category] = 1 - (usageData[category]?.remaining ?? 0) / (usageData[category]?.limit ?? 1);
}
});
return usage;
};
export const errorLoggingIssue = (() => {
try {
const repo = context.repo.owner.toLowerCase() + '/' + context.repo.repo.toLowerCase()
if (repo === 'microsoft/vscode-cpptools') {
return { repo: 'vscode-cpptools', owner: 'Microsoft', issue: 6282 }
const repo = context.repo.owner.toLowerCase() + '/' + context.repo.repo.toLowerCase();
if (repo === 'microsoft/vscode' || repo === 'microsoft/vscode-remote-release') {
return { repo: 'vscode', owner: 'Microsoft', issue: 93814 };
} else if (/microsoft\//.test(repo)) {
return { repo: 'vscode-internalbacklog', owner: 'Microsoft', issue: 974 };
} else if (getInput('errorLogIssueNumber')) {
return { ...context.repo, issue: +getRequiredInput('errorLogIssueNumber') }
return { ...context.repo, issue: +getRequiredInput('errorLogIssueNumber') };
} else {
return undefined
return undefined;
}
} catch (e) {
console.error(e)
return undefined
console.error(e);
return undefined;
}
})()
})();
export const logErrorToIssue = async (message: string, ping: boolean, token: string): Promise<void> => {
// Attempt to wait out abuse detection timeout if present
await new Promise((resolve) => setTimeout(resolve, 10000))
const dest = errorLoggingIssue
if (!dest) return console.log('no error logging repo defined. swallowing error:', message)
await new Promise((resolve) => setTimeout(resolve, 10000));
const dest = errorLoggingIssue;
if (!dest) return console.log('no error logging repo defined. swallowing error.');
return new OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue }, { readonly: !!getInput('readonly') })
return new OctoKitIssue(token, { owner: dest.owner, repo: dest.repo }, { number: dest.issue })
.postComment(`
Workflow: ${context.workflow}
Error: ${message}
Issue: ${ping ? `${context.repo.owner}/${context.repo.repo}#` : ''}${context.issue.number}
Issue: ${ping ? `${context.repo.owner}/${context.repo.repo}#` : ''}${context.issue?.number}
Repo: ${context.repo.owner}/${context.repo.repo}
@@ -115,5 +120,10 @@ ${JSON.stringify(context, null, 2)
.replace(/-->/gu, '--@>')
.replace(/\/|\\/gu, 'slash-')}
-->
`)
}
`);
};
export const safeLog = (message: string, ...args: (string | number | string[])[]): void => {
const clean = (val: any) => ('' + val).replace(/:|#/g, '');
console.log(clean(message), ...args.map(clean));
};
+9545 -793
View File
File diff suppressed because it is too large Load Diff
+29 -5
View File
@@ -10,12 +10,36 @@
"keywords": [],
"author": "",
"dependencies": {
"@actions/core": "^1.2.6",
"@actions/github": "^2.1.1",
"axios": "^0.21.1"
"@actions/core": "^1.9.1",
"@actions/github": "^5.0.3",
"@octokit/rest": "^19.0.3",
"@slack/web-api": "^6.7.2",
"applicationinsights": "^2.5.1",
"axios": "^0.27.2",
"uuid": "^8.3.2"
},
"devDependencies": {
"eslint": "^6.8.0",
"typescript": "^3.8.3"
"@azure/storage-blob": "^12.13.0",
"@types/chai": "^4.3.3",
"@types/mocha": "^9.1.1",
"@types/uuid": "^8.3.4",
"@types/yargs": "^17.0.11",
"@typescript-eslint/eslint-plugin": "^5.33.0",
"@typescript-eslint/parser": "^5.33.0",
"chai": "^4.3.6",
"eslint": "^8.21.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.2.1",
"husky": "^8.0.1",
"mocha": "^10.0.0",
"mongodb": "^4.17.0",
"nock": "^13.2.9",
"prettier": "2.7.1",
"ts-node": "^10.9.1",
"typescript": "^4.7.4",
"yargs": "^17.5.1"
},
"resolutions": {
"minimatch": "^3.0.5"
}
}
+1
View File
@@ -6,6 +6,7 @@
"moduleResolution": "node",
"removeComments": false,
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
"lib": [
"es2020"
@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
@@ -23,4 +23,4 @@ jobs:
labels: by design,debugger
ignoreLabels: language service,internal
closeDays: 0
closeComment: "This issue has been closed automatically because it's labeled as 'by design'."
closeComment: "This issue has been closed because the described behavior was determined to be by design."
+2 -2
View File
@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
@@ -23,6 +23,6 @@ jobs:
labels: by design
ignoreLabels: debugger,Feature Request,more info needed,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it's labeled as 'by design' and has not had recent activity."
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."
+14 -55
View File
@@ -1,55 +1,14 @@
name: CI (Linux)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 10.16.x
uses: actions/setup-node@v1
with:
node-version: 10.16.x
- name: Install Dependencies
run: yarn install
working-directory: Extension
- name: Generate hashes for runtime dependency packages
run: yarn run generatePackageHashes
working-directory: Extension
- name: Compile Sources
run: yarn run compile
working-directory: Extension
- name: Validate Extension/package.json
run: yarn run pr-check
working-directory: Extension
- name: Run Linter
run: yarn run lint
working-directory: Extension
- name: Compile Test Sources
run: yarn run pretest
working-directory: Extension
- name: Run unit tests
uses: GabrielBB/[email protected]
with:
run: yarn run unitTests
working-directory: Extension
- name: Run languageServer integration tests
uses: GabrielBB/[email protected]
with:
run: yarn run integrationTests
working-directory: Extension
name: CI (Linux)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
job:
uses: ./.github/workflows/job-compile-and-test.yml
with:
runner-env: ubuntu-22.04
platform: linux
+15 -55
View File
@@ -1,55 +1,15 @@
name: CI (Mac)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 10.16.x
uses: actions/setup-node@v1
with:
node-version: 10.16.x
- name: Install Dependencies
run: yarn install
working-directory: Extension
- name: Generate hashes for runtime dependency packages
run: yarn run generatePackageHashes
working-directory: Extension
- name: Compile Sources
run: yarn run compile
working-directory: Extension
- name: Validate Extension/package.json
run: yarn run pr-check
working-directory: Extension
- name: Run Linter
run: yarn run lint
working-directory: Extension
- name: Compile Test Sources
run: yarn run pretest
working-directory: Extension
- name: Run unit tests
uses: GabrielBB/[email protected]
with:
run: yarn run unitTests
working-directory: Extension
- name: Run languageServer integration tests
uses: GabrielBB/[email protected]
with:
run: yarn run integrationTests
working-directory: Extension
name: CI (Mac)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
job:
uses: ./.github/workflows/job-compile-and-test.yml
with:
runner-env: macos-12
platform: mac
yarn-args: --network-timeout 100000
+14 -51
View File
@@ -1,51 +1,14 @@
name: CI (Windows)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 10.16.x
uses: actions/setup-node@v1
with:
node-version: 10.16.x
- name: Install Dependencies
run: yarn install
working-directory: Extension
- name: Generate hashes for runtime dependency packages
run: yarn run generatePackageHashes
working-directory: Extension
- name: Compile Sources
run: yarn run compile
working-directory: Extension
- name: Validate Extension/package.json
run: yarn run pr-check
working-directory: Extension
- name: Run Linter
run: yarn run lint
working-directory: Extension
- name: Compile Test Sources
run: yarn run pretest
working-directory: Extension
- name: Run unit tests
run: yarn run unitTests
working-directory: Extension
- name: Run languageServer integration tests
run: yarn run integrationTests
working-directory: Extension
name: CI (Windows)
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
job:
uses: ./.github/workflows/job-compile-and-test.yml
with:
runner-env: windows-2022
platform: windows
+1 -1
View File
@@ -23,6 +23,6 @@ jobs:
labels: duplicate
ignoreLabels: debugger,Feature Request,more info needed,by design,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it's labeled as a 'duplicate' and has not had recent activity."
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."
@@ -0,0 +1,30 @@
name: Enhancement Closer (no milestone)
on:
schedule:
- cron: 50 11 * * * # Run at 11:50 AM UTC (3:50 AM PST, 4:50 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: enhancement
ignoreLabels: debugger,internal,Feature Request
addLabels: more votes needed
closeDays: 60
maximumVotes: 2
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: "*"
@@ -0,0 +1,30 @@
name: Enhancement Closer (Triage)
on:
schedule:
- cron: 40 11 * * * # Run at 11:40 AM UTC (3:40 AM PST, 4:40 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Stale Closer
uses: ./.github/actions/StaleCloser
with:
readonly: ${{ github.event.inputs.readonly }}
labels: enhancement
ignoreLabels: debugger,internal,Feature Request
addLabels: more votes needed
closeDays: 60
maximumVotes: 2
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
@@ -0,0 +1,31 @@
name: Enhancement Reopener
on:
schedule:
- cron: 20 12 * * * # Run at 12:20 PM UTC (4:20 AM PST, 5:20 AM PDT)
workflow_dispatch:
inputs:
readonly:
description: "readonly: Specify true or 1 to prevent changes from being commited to GitHub"
default: false
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
- name: Install Actions
run: cd ./.github/actions && npm install --production && cd ../..
- name: Run Reopener
uses: ./.github/actions/Reopener
with:
readonly: ${{ github.event.inputs.readonly }}
alsoApplyToOpenIssues: true
reopenComment: This feature request has received enough votes to be added to our backlog.
labels: enhancement
minimumVotes: 3
ignoreLabels: debugger,internal,Feature Request
milestoneId: 30
milestoneName: Triage
setMilestoneId: 28
removeLabels: more votes needed
@@ -23,4 +23,4 @@ jobs:
labels: external,debugger
ignoreLabels: language service,internal
closeDays: 0
closeComment: "This issue has been closed automatically because it's labeled as 'external'."
closeComment: "This issue has been closed because it is external or not applicable to the extension."
@@ -25,6 +25,6 @@ jobs:
addLabels: more votes needed
closeDays: 60
maximumVotes: 2
closeComment: "This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog."
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: "*"
@@ -25,6 +25,6 @@ jobs:
addLabels: more votes needed
closeDays: 60
maximumVotes: 2
closeComment: "This feature request is being closed due to insufficient upvotes. When enough upvotes are received, this issue will be eligible for our backlog."
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
@@ -23,4 +23,4 @@ jobs:
labels: investigate,debugger
ignoreLabels: language service,internal
closeDays: 180
closeComment: "This issue has been closed automatically because it has not had recent activity."
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."
@@ -23,4 +23,4 @@ jobs:
labels: "investigate: costing,debugger"
ignoreLabels: language service,internal
closeDays: 180
closeComment: "This issue has been closed automatically because it has not had recent activity."
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."
@@ -0,0 +1,73 @@
# Reuable workflow for compiling and testing extension.
name: Compile and test extension
on:
workflow_call:
inputs:
runner-env:
required: true
type: string
platform:
# Expects 'mac', 'linux', or 'windows'
required: true
type: string
yarn-args:
type: string
jobs:
build:
runs-on: ${{ inputs.runner-env }}
steps:
- uses: actions/checkout@v3
- name: Use Node.js 16
uses: actions/setup-node@v3
with:
node-version: 16
- name: Install Dependencies
run: yarn install ${{ inputs.yarn-args }}
working-directory: Extension
- name: Compile Sources
run: yarn run compile
working-directory: Extension
- name: Run Linter
run: yarn run lint
working-directory: Extension
- name: Run unit tests
run: yarn test
working-directory: Extension
# NOTE : We can't run the test that require the native binary files
# yet -- there will be an update soon that allows the tester to
# acquire them on-the-fly
# - name: Run languageServer integration tests
# if: ${{ inputs.platform == 'windows' }}
# run: yarn test --scenario=SingleRootProject
# working-directory: Extension
# - name: Run E2E IntelliSense features tests
# if: ${{ inputs.platform == 'windows' }}
# run: yarn test --scenario=MultirootDeadlockTest
# working-directory: Extension
# NOTE: For mac/linux run the tests with xvfb-action for UI support.
# Another way to start xvfb https://github.com/microsoft/vscode-test/blob/master/sample/azure-pipelines.yml
# - name: Run languageServer integration tests (xvfb)
# if: ${{ inputs.platform == 'mac' || inputs.platform == 'linux' }}
# uses: coactions/setup-xvfb@v1
# with:
# run: yarn test --scenario=SingleRootProject
# working-directory: Extension
# - name: Run E2E IntelliSense features tests (xvfb)
# if: ${{ inputs.platform == 'mac' || inputs.platform == 'linux' }}
# uses: coactions/setup-xvfb@v1
# with:
# run: yarn test --scenario=MultirootDeadlockTest
# working-directory: Extension
@@ -24,6 +24,6 @@ jobs:
ignoreLabels: language service,internal
involves: wardengnaw,pieandcakes,calgagi
closeDays: 14
closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity."
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."
@@ -23,6 +23,6 @@ jobs:
labels: more info needed
ignoreLabels: debugger,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity."
closeComment: "This issue has been closed because it needs more information 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 problem no longer exists, or adding more information."
@@ -24,6 +24,6 @@ jobs:
ignoreLabels: language service,internal
involves: wardengnaw,pieandcakes,calgagi
closeDays: 14
closeComment: "This issue has been closed automatically because it's labeled as a 'question' and has not had recent activity."
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."
+1 -1
View File
@@ -23,6 +23,6 @@ jobs:
labels: question
ignoreLabels: debugger,internal
closeDays: 60
closeComment: "This issue has been closed automatically because it's labeled as a 'question' and has not had recent activity."
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."
+3 -1
View File
@@ -6,8 +6,10 @@ browse*.db*
*.exe
*.ilk
# ignore exported localization xlf directory
# ignore exported localization xlf and LCL directories
Build/loc/LCL
vscode-extensions-localization-export
OneLocBuild
# ignore imported localization xlf directory
vscode-translations-import
+6
View File
@@ -0,0 +1,6 @@
This folder contains the entitlements needed for the debugger to run on macOS.
We use the entitlements that the .net runtime uses. See https://github.com/dotnet/runtime/blob/57678512d214af368ff055f358c5106f1aa19ac4/eng/pipelines/common/entitlements.plist
Related Links:
https://docs.microsoft.com/en-us/dotnet/core/install/macos-notarization-issues#default-entitlements
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.debugger</key>
<true/>
<key>com.apple.security.get-task-allow</key>
<true/>
<key>com.apple.security.task_for_pid-allow</key>
<true/>
</dict>
</plist>
+30
View File
@@ -0,0 +1,30 @@
---
parameters:
archs: ["x86_64", "arm64"]
jobs:
- job:
pool:
name: VSEngSS-MicroBuild2022-1ES
steps:
- checkout: none
- ${{ each arch in parameters.archs }}:
- task: DownloadPipelineArtifact@1
displayName: 'Downloading unsigned_lldb-mi_${{ arch }}'
inputs:
targetPath: '$(Pipeline.Workspace)/Artifacts'
artifactName: 'unsigned_lldb-mi_${{ arch }}'
- task: MicroBuildSignMacFiles@1
displayName: 'ESRP Sign'
inputs:
SigningTarget: '$(Pipeline.Workspace)\Artifacts\lldb-mi_${{ arch }}.zip'
SigningCert: 8023
- task: PublishPipelineArtifact@1
displayName: 'Publish signed LLDB-MI'
inputs:
targetPath: '$(Pipeline.Workspace)\Artifacts\lldb-mi_${{ arch }}.zip'
artifactName: 'lldb-mi_${{ arch }}_zip'
...
+160
View File
@@ -0,0 +1,160 @@
parameters:
# Note: Make sure llvm_repo is the same as the one in Extension/cgmanifest.json
# 'RepositoryUrl' for llvm-project.
llvm_repo: https://github.com/llvm/llvm-project.git
# Note: Make sure llvm_commit is the same as the one in Extension/cgmanifest.json
# 'CommitHash' for llvm-project.
llvm_commit: 0d44201451f03ba907cdb268ddddfc3fa38a0ebd
llvm_build_type: Release
llvm_arch: x86_64
llvm_additional_parameters: "-DLLDB_USE_SYSTEM_DEBUGSERVER=ON -DLLDB_RELOCATABLE_PYTHON=1 -DLLDB_INCLUDE_TESTS=OFF -DLLDB_BUILD_FRAMEWORK=1"
# Note: Make sure lldb_mi_repo is the same as the one in Extension/cgmanifest.json
# 'CommitHash' for lldb-mi.
lldb_mi_repo: https://github.com/lldb-tools/lldb-mi.git
# Note: Make sure lldb_mi_commit is the same as the one in Extension/cgmanifest.json
# 'CommitHash' for lldb-mi.
lldb_mi_commit: 4fe9c663edce2447e114c71851694d8c529b982d
lldb_mi_additional_parameters: "-DUSE_LLDB_FRAMEWORK=1"
jobs:
- job: LLDB_MI_${{ parameters.llvm_arch }}
timeoutInMinutes: 360
pool:
${{if eq(parameters['llvm_arch'], 'arm64')}}:
vmImage: macos-13-arm64
${{ else }}:
vmImage: macOS-13
steps:
- task: CmdLine@2
displayName: 'Install Dependencies'
inputs:
script: brew install cmake ninja swig
continueOnError: true
- task: CmdLine@2
displayName: 'Make sure buildspace does not exist'
inputs:
script: rm -rf $(Build.StagingDirectory)/buildspace
condition: always()
- task: CmdLine@2
displayName: 'Build LLVM Project'
inputs:
script: |
log_and_exec_cmd() {
echo "##[command] $1"
$1
}
log_and_exec_cmd "sudo rm -rf /Library/Developer/CommandLineTools"
log_and_exec_cmd "sudo xcode-select --switch /Applications/XCode.app"
log_and_exec_cmd "cd $(Build.StagingDirectory)"
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace"
log_and_exec_cmd "git clone ${{ parameters.llvm_repo }} llvm-project"
log_and_exec_cmd "cd llvm-project"
log_and_exec_cmd "git checkout ${{ parameters.llvm_commit }}"
log_and_exec_cmd "./lldb/scripts/macos-setup-codesign.sh"
log_and_exec_cmd "cd .."
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-inst"
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-build"
log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace/llvm-build"
log_and_exec_cmd "cmake -DLLVM_ENABLE_PROJECTS=clang;lldb -DCMAKE_BUILD_TYPE=${{ parameters.llvm_build_type }} -DCMAKE_INSTALL_PREFIX=$(Build.StagingDirectory)/buildspace/llvm-inst/ -DCMAKE_OSX_ARCHITECTURES=${{ parameters.llvm_arch }} ${{ parameters.llvm_additional_parameters }} -GNinja $(Build.StagingDirectory)/llvm-project/llvm"
if [[ $? -ne 0 ]]
then
echo "##[error] cmake llvm failed"
cat $(Build.SourcesDirectory)/buildspace/llvm-build/CMakeFiles/CMakeError.log
exit 1
fi
log_and_exec_cmd ninja
if [[ $? -ne 0 ]]
then
echo "##[error] ninja failed"
exit 1
fi
### Workaround for https://github.com/llvm/llvm-project/issues/108
log_and_exec_cmd "ninja install"
# Remove conflicting LLDB.framework file.
log_and_exec_cmd "rm -rf $(Build.StagingDirectory)/buildspace/llvm-inst/Library/Frameworks/LLDB.framework"
# Build lldb/sources/API first
log_and_exec_cmd "cmake -P $(Build.StagingDirectory)/buildspace/llvm-build/tools/lldb/source/API/cmake_install.cmake"
### End of Workaround
log_and_exec_cmd "ninja install"
if [[ $? -ne 0 ]]
then
echo "##[error] ninja install failed"
exit 1
fi
echo "##[section] Build LLDB-MI"
# Download lldb-mi and build it against our custom installation.
log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace"
log_and_exec_cmd "git clone ${{ parameters.lldb_mi_repo }} lldb-mi"
log_and_exec_cmd "cd lldb-mi"
log_and_exec_cmd "git checkout ${{ parameters.lldb_mi_commit }}"
# Create a separate build directory for building lldb-mi.
log_and_exec_cmd "mkdir build"
log_and_exec_cmd "cd build"
log_and_exec_cmd "cmake -DCMAKE_PREFIX_PATH=$(Build.StagingDirectory)/buildspace/llvm-inst/ -DCMAKE_OSX_ARCHITECTURES=${{ parameters.llvm_arch }} ${{ parameters.lldb_mi_additional_parameters }} -GNinja .."
log_and_exec_cmd "ninja"
if [[ $? -ne 0 ]]
then
echo "##[error] ninja failed"
exit 1
fi
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/publish"
log_and_exec_cmd "cd $(Build.StagingDirectory)/publish"
log_and_exec_cmd "mkdir -p ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin"
log_and_exec_cmd "cp $(Build.StagingDirectory)/buildspace/lldb-mi/build/src/lldb-mi ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/."
# Set rpath for finding LLDB.Framework
log_and_exec_cmd "install_name_tool -add_rpath @rpath/LLDB.framework/Versions/A/LLDB ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi"
# Set rpath for App Store XCode LLDB.Framework
log_and_exec_cmd "install_name_tool -add_rpath /Applications/Xcode.app/Contents/SharedFrameworks/ ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi"
# Set rpath for XCode CLI LLDB.Framework
log_and_exec_cmd "install_name_tool -add_rpath /Library/Developer/CommandLineTools/Library/PrivateFrameworks/ ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi"
# Set rpath next to the lldb-mi executable LLDB.Framework
log_and_exec_cmd "install_name_tool -add_rpath @executable_path/. ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi"
# Add entitlements
log_and_exec_cmd "codesign -s - -f --entitlements $(Build.SourcesDirectory)/Build/lldb-mi/debugger-entitlements.plist ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/bin/lldb-mi"
# Grab NOTICE.TXT
cp $(Build.SourcesDirectory)/Build/lldb-mi/NOTICE.TXT ./debugAdapters/lldb-mi_${{ parameters.llvm_arch }}/.
zip -r $(Build.StagingDirectory)/lldb-mi_${{ parameters.llvm_arch }}.zip ./debugAdapters
- task: PublishPipelineArtifact@1
displayName: 'Publish LLDB-MI'
inputs:
targetPath: '$(Build.StagingDirectory)/lldb-mi_${{ parameters.llvm_arch }}.zip'
artifactName: 'unsigned_lldb-mi_${{ parameters.llvm_arch }}'
- task: CmdLine@2
displayName: 'Clean up'
inputs:
script: rm -rf $(Build.StagingDirectory)/buildspace
condition: always()
+21 -123
View File
@@ -1,125 +1,23 @@
variables:
llvm_repo: https://github.com/llvm/llvm-project.git
llvm_branch: release/10.x
llvm_build_type: Release
llvm_arch: x86_64
llvm_additional_parameters: "-DLLDB_RELOCATABLE_PYTHON=1 -DLLDB_INCLUDE_TESTS=OFF -DLLDB_BUILD_FRAMEWORK=1"
# TODO: fix lldb_mi_repo and lldb_mi_branch (https://github.com/lldb-tools/lldb-mi/pull/37 and https://github.com/lldb-tools/lldb-mi/pull/39)
lldb_mi_repo: https://github.com/WardenGnaw/lldb-mi # TODO: Change to lldb-tools
lldb_mi_branch: release/cpptools # TODO: Change to main
lldb_mi_additional_parameters: "-DUSE_LLDB_FRAMEWORK=1"
parameters:
- name: Build_Type
displayName: Build Type
type: string
default: Release
jobs:
- job: LLDB_MI
timeoutInMinutes: 360
pool:
vmImage: 'macOS-latest'
steps:
- task: CmdLine@2
displayName: 'Install Dependencies'
inputs:
script: brew install cmake ninja swig
continueOnError: true
stages:
- stage: Build
dependsOn: []
jobs:
- template: lldb-mi.template.yml
parameters:
llvm_build_type: ${{ parameters.Build_Type }}
llvm_arch: x86_64
- template: lldb-mi.template.yml
parameters:
llvm_build_type: ${{ parameters.Build_Type }}
llvm_arch: arm64
- task: CmdLine@2
displayName: 'Build LLVM Project'
inputs:
script: |
log_and_exec_cmd() {
echo "##[command] $1"
$1
}
log_and_exec_cmd "cd $(Build.StagingDirectory)"
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace"
log_and_exec_cmd "git clone $(llvm_repo) llvm-project"
log_and_exec_cmd "cd llvm-project"
log_and_exec_cmd "git checkout $(llvm_branch)"
log_and_exec_cmd "./lldb/scripts/macos-setup-codesign.sh"
log_and_exec_cmd "cd .."
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-inst"
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/buildspace/llvm-build"
log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace/llvm-build"
log_and_exec_cmd "cmake -DLLVM_ENABLE_PROJECTS=clang;lldb -DCMAKE_BUILD_TYPE=$(llvm_build_type) -DCMAKE_INSTALL_PREFIX=$(Build.StagingDirectory)/buildspace/llvm-inst/ -DCMAKE_OSX_ARCHITECTURES=$(llvm_arch) $(llvm_additional_parameters) -GNinja $(Build.StagingDirectory)/llvm-project/llvm"
if [[ $? -ne 0 ]]
then
echo "##[error] cmake llvm failed"
cat $(Build.SourcesDirectory)/buildspace/llvm-build/CMakeFiles/CMakeError.log
exit 1
fi
log_and_exec_cmd ninja
if [[ $? -ne 0 ]]
then
echo "##[error] ninja failed"
exit 1
fi
### Workaround for https://github.com/llvm/llvm-project/issues/108
log_and_exec_cmd "ninja install"
# Remove conflicting LLDB.framework file.
log_and_exec_cmd "rm -rf $(Build.StagingDirectory)/buildspace/llvm-inst/Library/Frameworks/LLDB.framework"
# Build lldb/sources/API first
log_and_exec_cmd "cmake -P $(Build.StagingDirectory)/buildspace/llvm-build/tools/lldb/source/API/cmake_install.cmake"
### End of Workaround
log_and_exec_cmd "ninja install"
if [[ $? -ne 0 ]]
then
echo "##[error] ninja install failed"
exit 1
fi
echo "##[section] Build LLDB-MI"
# Download lldb-mi and build it against our custom installation.
log_and_exec_cmd "cd $(Build.StagingDirectory)/buildspace"
log_and_exec_cmd "git clone $(lldb_mi_repo) lldb-mi"
log_and_exec_cmd "cd lldb-mi"
log_and_exec_cmd "git checkout $(lldb_mi_branch)"
# Create a separate build directory for building lldb-mi.
log_and_exec_cmd "mkdir build"
log_and_exec_cmd "cd build"
log_and_exec_cmd "cmake -DCMAKE_PREFIX_PATH=$(Build.StagingDirectory)/buildspace/llvm-inst/ $(lldb_mi_additional_parameters) -GNinja .."
log_and_exec_cmd "ninja"
if [[ $? -ne 0 ]]
then
echo "##[error] ninja failed"
exit 1
fi
log_and_exec_cmd "mkdir $(Build.StagingDirectory)/publish"
log_and_exec_cmd "cd $(Build.StagingDirectory)/publish"
log_and_exec_cmd "mkdir -p ./debugAdapters/lldb-mi/bin"
log_and_exec_cmd "cp $(Build.StagingDirectory)/buildspace/lldb-mi/build/src/lldb-mi ./debugAdapters/lldb-mi/bin/."
# Set rpath for finding LLDB.Framework
log_and_exec_cmd "install_name_tool -add_rpath @rpath/LLDB.framework/Versions/A/LLDB ./debugAdapters/lldb-mi/bin/lldb-mi"
# Set rpath for App Store XCode LLDB.Framework
log_and_exec_cmd "install_name_tool -add_rpath /Applications/Xcode.app/Contents/SharedFrameworks/ ./debugAdapters/lldb-mi/bin/lldb-mi"
# Set rpath for XCode CLI LLDB.Framework
log_and_exec_cmd "install_name_tool -add_rpath /Library/Developer/CommandLineTools/Library/PrivateFrameworks/ ./debugAdapters/lldb-mi/bin/lldb-mi"
# Set rpath next to the lldb-mi executable LLDB.Framework
log_and_exec_cmd "install_name_tool -add_rpath @executable_path/. ./debugAdapters/lldb-mi/bin/lldb-mi"
# Grab NOTICE.TXT
cp $(Build.SourcesDirectory)/Build/lldb-mi/NOTICE.TXT ./debugAdapters/lldb-mi/.
# Build can be found at https://dev.azure.com/ms/vscode-cpptools/_build?definitionId=313
# Click on the build and select 'Artifacts'
- task: PublishPipelineArtifact@1
displayName: 'Publish LLDB-MI'
inputs:
targetPath: '$(Build.StagingDirectory)/publish'
artifactName: 'lldb-mi'
- stage: Signing
dependsOn: ["Build"]
jobs:
- template: lldb-mi-sign.template.yml
+14
View File
@@ -0,0 +1,14 @@
{
"Projects": [
{
"LanguangeSet": "VS_Main_Languages",
"LocItems": [
{
"SourceFile": "vscode-extensions-localization-export\\vscode-extensions\\vscode-cpptools.xlf",
"Languages": "cs;de;es;fr;it;ja;ko;pl;pt-BR;ru;tr;zh-Hans;zh-Hant",
"LclFile": "Build\\loc\\LCL\\{Lang}\\vscode-cpptools.xlf.lcl"
}
]
}
]
}
+62
View File
@@ -0,0 +1,62 @@
# ==================================================================================
# Pipeline for VsCodeExtension-Localization build definition
# Runs OneLocBuild task to localize xlf file
# ==================================================================================
resources:
repositories:
- repository: self
clean: true
trigger: none
pr: none
schedules:
- cron: "0 7 * * *"
displayName: Daily 7 AM
branches:
include:
- main
always: true
pool:
name: 'AzurePipelines-EO'
demands:
- ImageOverride -equals AzurePipelinesWindows2022compliant
steps:
- task: NodeTool@0
inputs:
versionSpec: '16.x'
displayName: 'Install Node.js'
- task: CmdLine@2
inputs:
script: 'cd Extension && yarn install'
- task: CmdLine@2
inputs:
script: 'cd ./Extension && yarn run translations-export && cd ..'
- task: OneLocBuild@2
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
inputs:
locProj: 'Build/loc/LocProject.json'
outDir: '$(Build.ArtifactStagingDirectory)'
isCreatePrSelected: false
prSourceBranchPrefix: 'locfiles'
packageSourceAuth: 'patAuth'
patVariable: '$(OneLocBuildPat)'
LclSource: lclFilesfromPackage
LclPackageId: 'LCL-JUNO-PROD-VCPP'
lsBuildXLocPackageVersion: '7.0.30510'
- task: CmdLine@2
inputs:
script: 'cd Extension && node ./translations_auto_pr.js microsoft vscode-cpptools csigs $(csigsPat) csigs [email protected] "$(Build.ArtifactStagingDirectory)/loc" vscode-extensions-localization-export/vscode-extensions && cd ..'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
+8 -2
View File
@@ -1,3 +1,9 @@
## Microsoft Open Source Code of Conduct
# Microsoft Open Source Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact opencode@microsoft.com with any additional questions or comments.
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
Resources:
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
- Contact [[email protected]](mailto:[email protected]) with questions or concerns
+1 -1
View File
@@ -21,4 +21,4 @@ This option will generate a tasks.json file for you, build your active source fi
### F5
Another way to begin building and debugging your active file is to execute the command by pressing <kbd>F5</kbd>. This method will configure
both a tasks.json and launch.json file for you, build your active source file, and then launch the debugger.
both a tasks.json and launch.json file for you, build your active source file, and then launch the debugger.
+1 -1
View File
@@ -1,3 +1,3 @@
# Fib
This code sample is to show debugging. Update `launch.json` and `tasks.json` in the `.vscode` folder to use your setup to build and debug.
This code sample is to show debugging. Update `launch.json` and `tasks.json` in the `.vscode` folder to use your setup to build and debug.
+6 -6
View File
@@ -15,14 +15,14 @@ static int fib(int n){
switch (n) {
case 0: return 1;
case 1: return 1;
default: return (fib(n-2) + fib(n-1));
}
default: return (fib(n-2) + fib(n-1));
}
}
void * thread_proc(void* ctx)
{
int tid = g_tid++;
char thread_name[16];
sprintf(thread_name, "Thread %d", tid);
#ifdef __APPLE__
@@ -30,19 +30,19 @@ void * thread_proc(void* ctx)
#else
pthread_setname_np(pthread_self(), thread_name);
#endif
// Random delay, 0 - 0.5 sec
timespec ts;
ts.tv_sec = 0;
ts.tv_nsec = 500000000 + ((float)rand() / (float)RAND_MAX) * 500000000;
nanosleep(&ts, NULL);
volatile int i = 0;
while (i <= 30) {
std::cout << "Thread " << tid << ": fib(" << i << ") = " << fib(i) << std::endl;
i++;
nanosleep(&ts, NULL);
}
std::cout << thread_name << " exited!" << std::endl;
}
+10 -2
View File
@@ -10,6 +10,14 @@ Prerequisite steps:
* From a command line, run the following commands from the **Extension** folder in the root of the repository:
* `yarn install` will install the dependencies needed to build the extension.
* **(optional)** `yarn global add vsce` will install `vsce` globally to create a VSIX package that you can install.
* **(optional)** Set an environment variable `CPPTOOLS_DEV=1`.
* This enables the local developer workflow when testing the debugger, copying dependencies from the **node_modules** folder. Testing the language server does not require this step.
* Open the **Extension** folder in Visual Studio Code and press F5. This will launch a VS Code Extension Host window and activate the TypeScript debugger. You can set breakpoints on the extension source code and debug your scenario.
* If, after pressing F5, you see the following error in the `[Extension Development Host]` window,
> Unable to start the C/C++ language server. IntelliSense features will be disabled. Error: Missing binary at .../vscode-cpptools/Extension/bin/cpptools
* Then, you can follow the instructions in this [comment in a discussion about building this extension locally](https://github.com/microsoft/vscode-cpptools/discussions/8745#discussioncomment-2091563).
> get the <package.version.number> binaries from installing the extension and then copying the binaries
1. To do this, install this extension from the Visual Studio Marketplace and find its location on your device. It might be in a directory like `\\wsl$\Ubuntu\home\hamir\.vscode-server\extensions\ms-vscode.cpptools-<package.version.number>`, for example.
2. Next, go to the `bin/` directory of the aforementioned directory, and drag-and-drop, or copy-and-paste, `cpptools` and `cpptools-srv` from `...\extensions\ms-vscode.cpptools-<package.version.number>\bin\` to this repository's `Extension\bin\` directory on your local device, so that `.../vscode-cpptools/Extension/bin/cpptools` and `.../vscode-cpptools/Extension/bin/cpptools-srv` both exist in your workspace.
3. The aforementioned warning should be gone, and Intellisense, which gives those squiggly red error lines, should now be present.
4. The `insiders` branch has binaries compatible with the latest Pre-Release version of the extension, and the `release` branch has binaries compatible with the latest Release version, but the `main` branch may have TypeScript changes that are incompatible with the published binaries, in which case, you'll need to create a branch off the `insiders` or `release` branches.
* Feel free to use [the Discussions tab of this repository](https://github.com/microsoft/vscode-cpptools/discussions) if you have any further questions on building this extension locally.
@@ -0,0 +1,20 @@
# Exception Settings
The Microsoft Windows C/C++ debugger (cppvsdbg) supports configuration options for if the debugger stops when exceptions are thrown. This is done with the 'All Exceptions' check box in the BREAKPOINTS section of the 'Run and Debug' view.
Note that the BREAKPOINTS section will be missing this entry until the first time that the folder has been debugged with the 'cppvsdbg' debugger.
Checking 'All Exceptions' will configure the debugger to stop when an exception is thrown.
##### Exception Conditions
The 'All Exceptions' checkbox support conditions to break on only selected exception types (C++ exceptions) or codes (Win32 exceptions). To edit the condition, click on the pencil icon or right click on the entry and invoke 'Edit Condition'. The condition is a comma-separated list of exception types and codes to break on, or if the list starts with '!', a list of exception types and codes to ignore.
Examples conditions:
| Example condition value | Result |
|-------------------------|--------|
| 0xC0000005, 0xC0000094 | Break on Win32 Access Violation exceptions and integer division by zero exceptions |
| std::out_of_range, 0xC0000005 | This will break on out-of-range exceptions, and access violation exceptions |
| !MyExceptionClass | This will break on all exceptions except C++ `MyExceptionClass` exceptions |
| !MyExceptionClass, 0x6831C815 | This will break on all exceptions except C++ `MyExceptionClass` exceptions and Win32 exceptions with custom code 0x6831C815 |
@@ -1,6 +1,6 @@
# How To Debug MIEngine
MIEngine is one of the components used to enable the C/C++ debugging scenario with the Microsoft C/C++ extension with VS Code. This document is to help enable users who want to debug and contribute to MIEngine to fix issues or extend functionality. MIEngine is used to communicate with `gdb`/`lldb` using the MI protocol.
MIEngine is one of the components used to enable the C/C++ debugging scenario with the Microsoft C/C++ extension with VS Code. This document is to help enable users who want to debug and contribute to MIEngine to fix issues or extend functionality. MIEngine is used to communicate with `gdb`/`lldb` using the MI protocol.
**Repository:** https://github.com/Microsoft/MIEngine
@@ -19,7 +19,7 @@ You can open the solution file **MIDebugEngine.sln** located under **src** and c
The symbol files are as follows:
**On Windows**
**On Windows**
* Microsoft.MICore.pdb
* Microsoft.MIDebugEngine.pdb
* vscode\OpenDebugAD7.pdb
@@ -37,7 +37,7 @@ On Windows, the easiest way to debug is to use Visual Studio. Locate the **src\D
If you are not building the extension, Locate the **out\src\Debugger\extension.ts** file in the **.vscode\extensions\ms-vscode.cpptools** folder and open it in an editor.
Locate the following lines:
Locate the following lines:
```json
return {
command: command
@@ -48,13 +48,13 @@ and add the following line to the object:
args: ["--pauseForDebugger"]
```
This will cause the debugger to look like it has hung once you start debugging, but in reality it is waiting for a debugger to attach. Set your breakpoints and attach your debugger to the `OpenDebugAD7.exe` process. Once the debugger is attached, VS Code should start debugging and you can reproduce your scenario.
This will cause the debugger to look like it has hung once you start debugging, but in reality it is waiting for a debugger to attach. Set your breakpoints and attach your debugger to the `OpenDebugAD7.exe` process. Once the debugger is attached, VS Code should start debugging and you can reproduce your scenario.
### Debugging MIEngine running on Linux or Mac OS X
### Debugging MIEngine running on Linux or macOS
#### With MonoDevelop
On Linux and Mac OS X, we use `mono` as our framework. You can download Xamarin Studio v5.10.1.6 and remotely attach to your Mac or Linux box to debug there.
On Linux and macOS, we use `mono` as our framework. You can download Xamarin Studio v5.10.1.6 and remotely attach to your Mac or Linux box to debug there.
##### Install Prerequisites
1. Install [GTK](http://www.mono-project.com/download/).
@@ -78,12 +78,12 @@ MonoDevelop.exe
##### Configure the extension to enable remote debugging
Open the **~/.vscode/extensions/ms-vscode.cpptools-\<version\>/debugAdapters/OpenDebugAD7** file with a text editor and locate and uncomment the line at the bottom. When you start debugging, it will now hang until the remote debugger is attached from Xamarin Studio.
Open the **~/.vscode/extensions/ms-vscode.cpptools-\<version\>/debugAdapters/OpenDebugAD7** file with a text editor and locate and uncomment the line at the bottom. When you start debugging, it will now hang until the remote debugger is attached from Xamarin Studio.
##### Attach the remote debugger
In MonoDevelop: Run -> Run With -> Custom Command Mono Soft Debugger.
Fill in the IP and port of the Linux/Mac OS X machine and hit "Connect" to start debugging.
Fill in the IP and port of the Linux/macOS machine and hit "Connect" to start debugging.
After you've done this once, you can hit the MonoDevelop "Play" button or <kbd>F5</kbd> to bring up the connect dialog again.
@@ -113,7 +113,7 @@ After you've done this once, you can hit the MonoDevelop "Play" button or <kbd>F
##### Configure the extension to enable remote debugging
Open the **~/.vscode/extensions/ms-vscode.cpptools-\<version\>/debugAdapters/OpenDebugAD7** file with a text editor and locate and uncomment the line at the bottom. When you start debugging, it will now hang until the remote debugger is attached from VS Code.
Open the **~/.vscode/extensions/ms-vscode.cpptools-\<version\>/debugAdapters/OpenDebugAD7** file with a text editor and locate and uncomment the line at the bottom. When you start debugging, it will now hang until the remote debugger is attached from VS Code.
##### Attach the remote debugger
+16 -16
View File
@@ -240,7 +240,7 @@
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!-- Attributes for elements that support filtering by view-->
<xs:attributeGroup name="ViewConstraints">
<xs:attribute name="IncludeView" type ="ViewIncludeType" use="optional" />
@@ -335,9 +335,9 @@
are evaluated in the context of the node.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="ListItemsNodeType">
<xs:annotation>
<xs:documentation>Expression that points to value of the linked list node. It can be left empty or have 'this' to refer to the linked list node itself. This expression is evaluated under the context of the linked list node and not the parent linked list type.</xs:documentation>
@@ -402,7 +402,7 @@
<xs:documentation>
Indicates that the item should use the icon associated with general data.
</xs:documentation>
</xs:annotation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Method">
<xs:annotation>
@@ -864,16 +864,16 @@
<xs:complexType name="MostDerivedObjectType">
<xs:annotation>
<xs:documentation>
Specifies an expression which evaluates to the current object, casted to its most-derived type.
In most cases, the debugger is able to automatically determine an object's most-derived type, in which case use of the &lt;MostDerivedType&gt;
Specifies an expression which evaluates to the current object, casted to its most-derived type.
In most cases, the debugger is able to automatically determine an object's most-derived type, in which case use of the &lt;MostDerivedType&gt;
element is unecessary. Automatic determination of an object's most-derived type requires the object to be an instance of a C++ class, with a
compiler-generated virtual function table. This is sufficient for most class-hierarchies; however, custom logic may occasionally be necessary
when dealing with a class hierarchy that does not contain virtual functions, or when the virtual function table is manually constructed by the
when dealing with a class hierarchy that does not contain virtual functions, or when the virtual function table is manually constructed by the
application code.
</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="StringType">
<xs:attributeGroup ref="CommonAttributes" />
@@ -935,12 +935,12 @@
<xs:annotation>
<xs:documentation>
Indicates that the given type is a smart pointer. The text inside this element specifies the expression to evaluate the underlying pointer.
The &lt;SmartPointer&gt; element has the following effects:
- If no alternative &lt;DisplayString&gt; element is provided (or all &lt;DisplayString&gt; elements have failed conditions), the underlying pointer will be the display string
- If no alternative &lt;StringView&gt; element is provided (or all &lt;StringView&gt; elements have failed conditions), the underlying pointer will be the string view, if it has one.
- If no alternative &lt;Expand&gt; element is provided, the expansion of the smart pointer will be the expansion of the underlying pointer.
- The smart pointer class will also support overloaded operators as determined by the &lt;Usage&gt; attribute. You can opt out of this behavior by specifying
- The smart pointer class will also support overloaded operators as determined by the &lt;Usage&gt; attribute. You can opt out of this behavior by specifying
'DefaultExpansion=&quot;false&quot;'
</xs:documentation>
</xs:annotation>
@@ -949,7 +949,7 @@
<xs:attributeGroup ref="CommonAttributes_NoCondition" />
<xs:attribute name="Usage" type="SmartPointerUsage" use="required">
<xs:annotation>
<xs:documentation>Indicates which combinations of operators this smart pointer object supports.
<xs:documentation>Indicates which combinations of operators this smart pointer object supports.
</xs:documentation>
</xs:annotation>
</xs:attribute>
@@ -1004,10 +1004,10 @@
<xs:documentation>Specifies an optional priority to assign to this entry for type matching. Higher priority entries within a particular file or directory
are checked first. &lt;Type&gt; entries that do not specify a priority receive default priority of &quot;Medium&quot; &lt;AlternativeType&gt; entries which do not specify a priority
will inherit the priority of the enclosing &lt;Type&gt; element. The priority is only used to disambiguate type matching when all other means of disambiguation are unavailable.
For example, entries with more specific template instantiations, module constraints, or view constraints will take priority regardless of any priority values specified.
Similarly, regardless of priority, natvis files that are part of a loaded project will always take precedence over files in the user natvis directory,
which will, in turn, take precedence over files in the system-wide natvis directory.
For example, entries with more specific template instantiations, module constraints, or view constraints will take priority regardless of any priority values specified.
Similarly, regardless of priority, natvis files that are part of a loaded project will always take precedence over files in the user natvis directory,
which will, in turn, take precedence over files in the system-wide natvis directory.
If two entries have the same priority and cannot otherwise be disambiguated, it is unspecified which one will get used.
</xs:documentation>
</xs:annotation>
+3 -3
View File
@@ -1,4 +1,4 @@
*.js
test/**/index.ts
test/**/runTest.ts
tools/prepublish.js
dist/
vscode*.d.ts
+72 -53
View File
@@ -1,4 +1,9 @@
module.exports = {
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/strict",
],
"env": {
"browser": true,
"es6": true,
@@ -6,21 +11,41 @@ module.exports = {
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"project": "tsconfig.json",
"sourceType": "module"
"project": ["tsconfig.json", ".scripts/tsconfig.json"],
"ecmaVersion": 2022,
"sourceType": "module",
"warnOnUnsupportedTypeScriptVersion": false,
},
"plugins": [
"@typescript-eslint",
"@typescript-eslint/tslint",
"eslint-plugin-jsdoc",
"@typescript-eslint/eslint-plugin-tslint",
"@typescript-eslint/eslint-plugin",
"eslint-plugin-import",
"eslint-plugin-header"
],
"rules": {
"indent": [
"warn",
4,
{
"SwitchCase": 1,
"ObjectExpression": "first"
}
],
"@typescript-eslint/indent": [
"error", 4
],
"@typescript-eslint/adjacent-overload-signatures": "error",
"@typescript-eslint/array-type": "error",
"@typescript-eslint/class-name-casing": "error",
"@typescript-eslint/indent": "error",
"@typescript-eslint/await-thenable": "error",
"camelcase": "off",
"@typescript-eslint/naming-convention": [
"error",
{
"selector": "typeLike",
"format": ["PascalCase"]
}
],
"@typescript-eslint/member-delimiter-style": [
"error",
{
@@ -34,7 +59,20 @@ module.exports = {
}
}
],
"@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",
@@ -48,8 +86,16 @@ module.exports = {
"@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",
@@ -71,17 +117,19 @@ module.exports = {
"no-fallthrough": "error",
"no-invalid-this": "error",
"no-irregular-whitespace": "error",
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1, "maxBOF": 0}],
"rest-spread-spacing": ["error", "never"],
"no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 1, "maxBOF": 0 }],
"no-new-wrappers": "error",
"no-redeclare": "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",
@@ -94,54 +142,25 @@ module.exports = {
"never"
],
"spaced-comment": [
"error",
"always"
"off",
"always",
{ "line": { "exceptions": ["/"] } } // triple slash directives
],
"use-isnan": "error",
"valid-typeof": "error",
"yoda": "error",
"@typescript-eslint/tslint/config": [
"error",
{
"rules": {
"encoding": true,
"file-header": [
true,
".*"
],
"import-spacing": true,
"match-default-export-name": true,
"no-boolean-literal-compare": true,
"no-mergeable-namespace": true,
"no-reference-import": true,
"no-unnecessary-callback-wrapper": true,
"number-literal-format": true,
"one-line": [
true,
"check-catch",
"check-finally",
"check-else",
"check-open-brace",
"check-whitespace"
],
"prefer-method-signature": true,
"prefer-while": true,
"typedef": [
true,
"variable-declaration",
"call-signature",
"variable-declaration-ignore-function"
],
"whitespace": [
true,
"check-branch",
"check-operator",
"check-separator",
"check-preblock",
"check-type"
]
}
}
]
"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 -2
View File
@@ -1,7 +1,7 @@
# ignore dependency packages
node_modules
# ignore compliled typescript
# ignore compiled typescript
out
dist
@@ -25,7 +25,6 @@ install.lock
# ignore generated localization file
**/nls.*.json
**/*.nls.json
**/*.nls.*.json
# ignore generate native header
@@ -34,3 +33,5 @@ localized_string_ids.h
# ignore generate files. It will be generated when building
src/nativeStrings.ts
vscode*.d.ts
.scripts/_*
+64
View File
@@ -0,0 +1,64 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import { error } from 'node:console';
import { resolve, sep } from 'node:path';
import { filepath } from '../src/Utility/Filesystem/filepath';
import { verbose } from '../src/Utility/Text/streams';
import { $root, Git, brightGreen, cyan, getModifiedIgnoredFiles, rimraf } from './common';
// notes:
// list all gitignore'd files that are modified: `git clean -Xd -n`
// list all untracked and ignored files that are modified/created: `git clean -Xd -n`
export async function main() {
await rimraf(resolve($root, 'dist'));
}
export async function all() {
await rimraf(...(await getModifiedIgnoredFiles()).filter(each => !each.includes('node_modules')));
}
export async function reset() {
verbose(`Resetting all .gitignored files in extension`);
await rimraf(...await getModifiedIgnoredFiles());
}
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);
return {
filename: stats.isDirectory() ? cyan(`${each}${sep}**`) : brightGreen(`${each}`),
date: stats.mtime.toLocaleDateString().replace(/\b(\d)\//g, '0$1\/'),
time: stats.mtime.toLocaleTimeString().replace(/^(\d)\:/g, '0$1:'),
modified: stats.mtime
};
}));
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);
all.forEach(each => console.log(` ${each.filename.padEnd(max)} [${each.date} ${each.time}]`));
console.log('');
}
export async function show(opt?: string) {
switch (opt?.toLowerCase()) {
case 'new':
console.log(cyan('\n\nNew files:'));
const r = await Git('ls-files', '--others', '--exclude-standard', '-z');
return details(r.stdio.all().map(each => resolve(each.trim().replace(/\0/g, ''))));
case undefined:
case '':
case 'ignored':
case 'untracked':
console.log(cyan('\n\nUntracked+Ignored files:'));
return details(await getModifiedIgnoredFiles());
default:
return error(`Unknown option '${opt}'`);
}
}
+40
View File
@@ -0,0 +1,40 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import { spawnSync } from 'child_process';
import { verbose } from '../src/Utility/Text/streams';
import { $args, $root, $scenario, assertAnyFile, brightGreen, gray, green, pwd } from './common';
import { resolve } from 'path';
import { getTestInfo } from '../test/common/selectTests';
import { install, options } from "./vscode";
export { install, reset } from './vscode';
export async function main() {
let ti = await getTestInfo($scenario);
if (!ti) {
// try using the first arg as a scenario name or location
ti = await getTestInfo($args[0], $args[0] ? resolve(pwd, $args[0]) : undefined);
if (ti) {
$args[0] = ti.workspace;
}
} else {
// we found it
$args.unshift(ti.workspace);
}
await assertAnyFile('dist/src/main.js', `The extension entry point '${$root}/dist/src/main.js is missing. You should run ${brightGreen("yarn compile")}\n\n`);
const { cli, args } = await install();
// example of installing an extension into code
//verbose(`Installing release version of 'ms-vscode.cpptools'`);
//spawnSync(cli, [...args, '--install-extension', 'ms-vscode.cpptools'], { encoding: 'utf-8', stdio: 'ignore' })
verbose(green('Launch VSCode'));
const ARGS = [...args, ...options.launchArgs.filter(each => !each.startsWith('--extensions-dir=') && !each.startsWith('--user-data-dir=')), `--extensionDevelopmentPath=${$root}`, ...$args ];
verbose(gray(`${cli}\n ${ [...ARGS ].join('\n ')}`));
spawnSync(cli, ARGS, { encoding: 'utf-8', stdio: 'ignore', env: { ...process.env, DONT_PROMPT_WSL_INSTALL:"1" } });
}
+343
View File
@@ -0,0 +1,343 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import { Command, CommandFunction } from '../src/Utility/Process/program';
import { ok } from 'assert';
import { CommentJSONValue, parse, stringify } from 'comment-json';
import { mkdir as md, readFile, rm, writeFile } from 'fs/promises';
import { IOptions, glob as globSync } from 'glob';
import { dirname, resolve } from 'path';
import { chdir, cwd, env } from 'process';
import { setImmediate } from 'timers/promises';
import { promisify } from 'util';
import { filepath } from '../src/Utility/Filesystem/filepath';
import { is } from '../src/Utility/System/guards';
import { verbose } from '../src/Utility/Text/streams';
export const $root = resolve(`${__dirname}/..`);
export let $cmd = 'main';
export let $scenario = '';
// loop through the args and pick out --scenario=... and remove it from the $args and set $scenario
process.argv.slice(2).filter(each => !(each.startsWith('--scenario=') && ($scenario = each.substring('--scenario='.length))));
export const $args = process.argv.slice(2).filter(each => !each.startsWith('--'));
export const $switches = process.argv.slice(2).filter(each => each.startsWith('--'));
/** enqueue the call to the callback function to happen on the next available tick, and return a promise to the result */
export function then<T>(callback: () => Promise<T> | T): Promise<T> {
return setImmediate().then(callback);
}
export const pwd = env.INIT_CWD ?? cwd();
verbose(yellow(`pwd: ${pwd}`));
// ensure we're in the extension folder.
chdir($root);
// dump unhandled async errors to the console and exit.
process.on('unhandledRejection', (reason: any, _promise) => {
error(`${reason?.stack?.split(/\r?\n/).filter(l => !l.includes('node:internal') && !l.includes('node_modules')).join('\n')}`);
process.exit(1);
});
const git = new Command('git');
export const Git = async (...args: Parameters<Awaited<CommandFunction>>) => (await git)(...args);
export const GitClean = async (...args: Parameters<Awaited<CommandFunction>>) => (await new Command(await git, 'clean'))(...args);
export async function getModifiedIgnoredFiles() {
const {code, error, stdio } = await GitClean('-Xd', '-n');
if (code) {
throw new Error(`\n${error.all().join('\n')}`);
}
// return the full path of files that would be removed.
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 = [];
for (const each of paths) {
if (!each) {
continue;
}
if (await filepath.isFolder(each)) {
verbose(`Removing folder ${red(each)}`);
all.push(rm(each, {recursive: true, force: true}));
continue;
}
verbose(`Removing file ${red(each)}`);
all.push(rm(each, {force: true}));
}
await Promise.all(all);
}
export async function mkdir(filePath: string) {
const [fullPath, info] = await filepath.stats(filePath, $root);
if (info) {
if (info.isDirectory()) {
return fullPath;
}
throw new Error(`Cannot create directory '${filePath}' because there is a file there.`);
}
await md(fullPath, { recursive: true });
return fullPath;
}
export const glob: (pattern: string, options?: IOptions) => Promise<string[]> = promisify(globSync);
export async function write(filePath: string, data: Buffer | string) {
await mkdir(dirname(filePath));
if (await filepath.isFile(filePath)) {
const content = await readFile(filePath);
if (is.string(data)) {
// if we're passed a text file, we should match the line endings of the existing file.
const textContent = content.toString();
// normalize the line endings to the same as the current file.
data = textContent.indexOf('\r\n') > -1 ? data.replace(/\r\n|\n/g, '\r\n') : data.replace(/\r\n|\n/g, '\n');
// if the text content is a match, we don't have to change anything
if (textContent === data) {
verbose(`Text file at '${filePath}' is up to date.`);
return;
}
} else {
// if the binary content is a match, we don't have to change anything
if (content.equals(data)) {
verbose(`File at '${filePath}' is up to date.`);
return;
}
}
}
verbose(`Writing file '${filePath}'`);
await writeFile(filePath, data);
}
export async function updateFiles(files: string[], dest: string | Promise<string>) {
const target = is.promise(dest) ? await dest : dest;
await Promise.all(files.map(async (each) => {
const sourceFile = await filepath.isFile(each, $root);
if (sourceFile) {
const targetFile = resolve(target, each);
await write(targetFile, await readFile(sourceFile));
}
}));
}
export async function go() {
if (require.main) {
// loop through the args and pick out the first non --arg and remove it from the $args and set $cmd
for (let i = 0; i < $args.length; i++) {
const each = $args[i];
if (!each.startsWith('--') && require.main.exports[each]) {
$cmd = each;
$args.splice(i, 1);
break;
}
}
verbose(`${yellow("Running task:")} ${green($cmd)} ${green($args.join(' '))}`);
require.main.exports[$cmd](...$args);
}
}
void then(go);
export async function read(filename: string) {
const content = await readFile(filename);
ok(content, `File '${filename}' has no content`);
return content.toString();
}
export async function readJson(filename: string, fallback = {}): Promise<CommentJSONValue> {
try {
return parse(await read(filename));
} catch {
return fallback as CommentJSONValue;
}
}
export async function writeJson(filename: string, object: CommentJSONValue) {
await write(filename, stringify(object, null, 4));
}
export function error(text: string) {
console.error(`\n${red('ERROR')}: ${text}`);
return true;
}
export function warn(text: string) {
console.error(`\n${yellow('WARNING')}: ${text}`);
return true;
}
export function note(text: string) {
console.error(`\n${cyan('NOTE')}: ${text}`);
}
export function underline(text: string) {
return `\u001b[4m${text}\u001b[0m`;
}
export function bold(text: string) {
return `\u001b[1m${text}\u001b[0m`;
}
export function dim(text: string) {
return `\u001b[2m${text}\u001b[0m`;
}
export function brightGreen(text: string) {
return `\u001b[38;2;19;161;14m${text}\u001b[0m`;
}
export function green(text: string) {
return `\u001b[38;2;78;154;6m${text}\u001b[0m`;
}
export function brightWhite(text: string) {
return `\u001b[38;2;238;238;236m${text}\u001b[0m`;
}
export function gray(text: string) {
return `\u001b[38;2;117;113;94m${text}\u001b[0m`;
}
export function yellow(text: string) {
return `\u001b[38;2;252;233;79m${text}\u001b[0m`;
}
export function red(text: string) {
return `\u001b[38;2;197;15;31m${text}\u001b[0m`;
}
export function cyan(text: string) {
return `\u001b[38;2;0;174;239m${text}\u001b[0m`;
}
export const hr = "===============================================================================";
export function heading(text: string, level = 1) {
switch (level) {
case 1:
return `${underline(bold(text))}`;
case 2:
return `${brightGreen(text)}`;
case 3:
return `${green(text)}`;
}
return `${bold(text)}\n`;
}
export function optional(text: string) {
return gray(text);
}
export function cmdSwitch(text: string) {
return optional(`--${text}`);
}
export function command(text: string) {
return brightWhite(bold(text));
}
export function hint(text: string) {
return green(dim(text));
}
export function count(num: number) {
return gray(`${num}`);
}
export function position(text: string) {
return gray(`${text}`);
}
export async function assertAnyFolder(oneOrMoreFolders: string | string[], errorMessage?: string): Promise<string> {
oneOrMoreFolders = is.array(oneOrMoreFolders) ? oneOrMoreFolders : [oneOrMoreFolders];
for (const each of oneOrMoreFolders) {
const result = await filepath.isFolder(each, $root);
if (result) {
verbose(`Folder ${brightGreen(each)} exists.`);
return result;
}
}
if (errorMessage) {
if (!$switches.includes('--quiet')) {
error(errorMessage);
}
process.exit(1);
}
}
export async function assertAnyFile(oneOrMoreFiles: string | string[], errorMessage?: string): Promise<string> {
oneOrMoreFiles = is.array(oneOrMoreFiles) ? oneOrMoreFiles : [oneOrMoreFiles];
for (const each of oneOrMoreFiles) {
const result = await filepath.isFile(each, $root);
if (result) {
verbose(`Folder ${brightGreen(each)} exists.`);
return result;
}
}
if (errorMessage) {
if (!$switches.includes('--quiet')) {
error(errorMessage);
}
process.exit(1);
}
}
const quiet = process.argv.includes('--quiet');
export async function checkPrep() {
let failing = false;
failing = !await assertAnyFolder('dist/test') && (quiet || warn(`The compiled test files are not in place.`)) || failing;
failing = !await assertAnyFolder('dist/walkthrough') && (quiet || warn(`The walkthrough files are not in place.`)) || failing;
failing = !await assertAnyFolder('dist/html') && (quiet || warn(`The html files are not in place.`)) || failing;
failing = !await assertAnyFolder('dist/schema') && (quiet || warn(`The schema files are not in place.`)) || failing;
failing = !await assertAnyFile('dist/nls.metadata.json') && (quiet || warn(`The extension translation file '${$root}/dist/nls.metadata.json is missing.`)) || failing;
failing = await checkDTS() || failing;
if (!failing) {
verbose('Prep files appear to be in place.');
}
return failing;
}
export async function checkCompiled() {
let failing = false;
failing = await checkDTS() || failing;
failing = !await assertAnyFile('dist/src/main.js') && (quiet || warn(`The extension entry point '${$root}/dist/src/main.js is missing.`)) || failing;
if (!failing) {
verbose('Compiled files appear to be in place.');
}
return failing;
}
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;
if (!failing) {
verbose('VSCode d.ts files appear to be in place.');
}
return failing;
}
export async function checkBinaries() {
let failing = false;
failing = !await assertAnyFile(['bin/cpptools.exe', 'bin/cpptools']) && (quiet || warn(`The native binary files are not present. You should either build or install the native binaries\n\n.`)) || failing;
if (!failing) {
verbose('Native binary files appear to be in place.');
}
return failing;
}
+28
View File
@@ -0,0 +1,28 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import { watch as watchFiles } from 'fs/promises';
import { filepath } from '../src/Utility/Filesystem/filepath';
import { verbose } from '../src/Utility/Text/streams';
import { $root, glob, mkdir, updateFiles } from './common';
export async function main() {
verbose(`Copying walkthrough media to extension/dist folder`);
await updateFiles(await glob('walkthrough/images/**/*'), mkdir('dist'));
}
export async function watch() {
const source = await filepath.isFolder('walkthrough/images', $root);
if (source) {
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 })) {
await main();
}
}
}
+134
View File
@@ -0,0 +1,134 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import { parse } from 'comment-json';
import { resolve } from 'path';
import { read, write } from './common';
// ****************************
// Command: generate-native-strings
// The following is used to generate nativeStrings.ts and localized_string_ids.h from ./src/nativeStrings.json
// If adding localized strings to the native side, start by adding it to nativeStrings.json and use this to generate the others.
// ****************************
export async function main() {
const $root = resolve(`${__dirname}/..`);
const stringTable = parse(await read(`${$root}/src/nativeStrings.json`)) as any;
let nativeEnumContent = "";
let nativeStringTableContent = "";
let typeScriptSwitchContent = "";
let stringIndex = 1;
for (const property in stringTable) {
let stringValue = stringTable[property];
let hintValue;
if (typeof stringValue !== "string") {
hintValue = stringValue.hint;
stringValue = stringValue.text;
}
// Add to native enum
nativeEnumContent += ` ${property} = ${stringIndex},\n`;
// Add to native string table
nativeStringTableContent += ` ${JSON.stringify(stringValue)},\n`;
// Add to TypeScript switch
// Skip empty strings, which can be used to prevent enum/index reordering
if (stringValue !== "") {
// It's possible that a translation may skip "{#}" entries, so check for up to 50 of them.
let numArgs = 0;
for (let i = 0; i < 50; i++) {
if (stringValue.includes(`{${i}}`)) {
numArgs = i + 1;
}
}
typeScriptSwitchContent += ` case ${stringIndex}:\n`;
if (numArgs !== 0) {
typeScriptSwitchContent += ` if (stringArgs) {\n`;
if (hintValue) {
typeScriptSwitchContent += ` message = localize({ key: ${JSON.stringify(property)}, comment: [${JSON.stringify(hintValue)}] }, ${JSON.stringify(stringValue)}`;
} else {
typeScriptSwitchContent += ` message = localize(${JSON.stringify(property)}, ${JSON.stringify(stringValue)}`;
}
for (let i = 0; i < numArgs; i++) {
typeScriptSwitchContent += `, stringArgs[${i}]`;
}
typeScriptSwitchContent += `);\n break;\n }\n`;
}
if (hintValue) {
typeScriptSwitchContent += ` message = localize({ key: ${JSON.stringify(property)}, comment: [${JSON.stringify(hintValue)}] }, ${JSON.stringify(stringValue)}`;
} else {
typeScriptSwitchContent += ` message = localize(${JSON.stringify(property)}, ${JSON.stringify(stringValue)}`;
}
typeScriptSwitchContent += `);\n break;\n`;
}
++stringIndex;
}
// --------------------------------------------------------------------------------------------
// Generate the TypeScript file
// --------------------------------------------------------------------------------------------
const typeScriptContent = `/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
// ****** This file is generated from nativeStrings.json. Do not edit this file directly. ******
'use strict';
import * as nls from 'vscode-nls';
nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFormat.standalone })();
const localize: nls.LocalizeFunc = nls.loadMessageBundle();
export const localizedStringCount: number = ${stringIndex};
export function lookupString(stringId: number, stringArgs?: string[]): string {
let message: string = "";
switch (stringId) {
case 0:
// Special case for blank string
break;
${typeScriptSwitchContent}
default:
console.assert(\"Unrecognized string ID\");
break;
}
return message;
}
`;
// If the file isn't there, or the contents are different, write it out
await write(`${$root}/src/nativeStrings.ts`, typeScriptContent);
// --------------------------------------------------------------------------------------------
// Generate the native string header file
// --------------------------------------------------------------------------------------------
const nativeContents = `/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
// ****** This file is generated from nativeStrings.json. Do not edit this file directly. ******
#pragma once
// NOLINTBEGIN(modernize-raw-string-literal)
enum class localized_string_id : unsigned int
{
blank = 0,
${nativeEnumContent}};
inline static const char *localizable_strings[] = {
"",
${nativeStringTableContent}};
// NOLINTEND(modernize-raw-string-literal)
`;
// If the file isn't there, or the contents are different, write it out
await write(`${$root}/localized_string_ids.h`, nativeContents);
}
@@ -1,10 +1,12 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import * as fs from 'fs';
import * as os from 'os';
/* eslint-disable no-prototype-builtins */
import { resolve } from 'path';
import { $root, read, write } from './common';
function appendFieldsToObject(reference: any, obj: any): any {
// Make sure it is an object type
@@ -43,7 +45,7 @@ function updateDefaults(object: any, defaults: any): any {
for (const key in object) {
if (object[key].hasOwnProperty('type') && object[key].type === 'object' && object[key].properties !== null) {
object[key].properties = updateDefaults(object[key].properties, mergeDefaults(defaults, object[key].default));
} else if (key in defaults) {
} else if (defaults && key in defaults) {
object[key].default = defaults[key];
}
}
@@ -53,8 +55,8 @@ function updateDefaults(object: any, defaults: any): any {
}
function refReplace(definitions: any, ref: any): any {
// $ref is formatted as "#/definitions/ObjectName"
const referenceStringArray: string[] = ref['$ref'].split('/');
// $ref is formatted as "#/definitions/ObjectName"
const referenceStringArray: string[] = ref.$ref.split('/');
// Getting "ObjectName"
const referenceName: string = referenceStringArray[referenceStringArray.length - 1];
@@ -69,7 +71,7 @@ function refReplace(definitions: any, ref: any): any {
ref = appendFieldsToObject(reference, ref);
// Remove $ref field
delete ref['$ref'];
delete ref.$ref;
return ref;
}
@@ -82,11 +84,7 @@ function replaceReferences(definitions: any, objects: any): any {
// Handle 'anyOf' with references
if (objects[key].hasOwnProperty('anyOf')) {
for (const index in objects[key].anyOf) {
if (objects[key].anyOf[index].hasOwnProperty('$ref')) {
objects[key].anyOf[index] = refReplace(definitions, objects[key].anyOf[index]);
}
}
objects[key].anyOf = replaceReferences(definitions, objects[key].anyOf);
}
// Recursively replace references if this object has properties.
@@ -95,18 +93,35 @@ function replaceReferences(definitions: any, objects: any): any {
objects[key].properties = updateDefaults(objects[key].properties, objects[key].default);
}
// Recursively replace references if the array has objects in items.
// Items in array contains ref
if (objects[key].hasOwnProperty('type') && objects[key].type === "array" && objects[key].items !== null && objects[key].items.hasOwnProperty('$ref')) {
objects[key].items = refReplace(definitions, objects[key].items);
}
// Recursively replace references if the array has objects that contains ref in items.
if (objects[key].hasOwnProperty('type') && objects[key].type === "array" && objects[key].items !== null) {
objects[key].items = replaceReferences(definitions, objects[key].items);
}
}
return objects;
}
function generateOptionsSchema(): void {
const packageJSON: any = JSON.parse(fs.readFileSync('package.json').toString());
const schemaJSON: any = JSON.parse(fs.readFileSync('tools/OptionsSchema.json').toString());
function mergeReferences(baseDefinitions: any, additionalDefinitions: any): void {
for (const key in additionalDefinitions) {
if (baseDefinitions[key]) {
throw `Error: '${key}' defined in multiple schema files.`;
}
baseDefinitions[key] = additionalDefinitions[key];
}
}
export async function main() {
const packageJSON: any = JSON.parse(await read(resolve($root, 'package.json')));
const schemaJSON: any = JSON.parse(await read(resolve($root, 'tools/OptionsSchema.json')));
const symbolSettingsJSON: any = JSON.parse(await read(resolve($root, 'tools/VSSymbolSettings.json')));
mergeReferences(schemaJSON.definitions, symbolSettingsJSON.definitions);
schemaJSON.definitions = replaceReferences(schemaJSON.definitions, schemaJSON.definitions);
@@ -119,16 +134,11 @@ function generateOptionsSchema(): void {
packageJSON.contributes.debuggers[1].configurationAttributes.launch = schemaJSON.definitions.CppvsdbgLaunchOptions;
packageJSON.contributes.debuggers[1].configurationAttributes.attach = schemaJSON.definitions.CppvsdbgAttachOptions;
let content: string = JSON.stringify(packageJSON, null, 2);
if (os.platform() === 'win32') {
content = content.replace(/\n/gm, "\r\n");
}
let content: string = JSON.stringify(packageJSON, null, 4);
// We use '\u200b' (unicode zero-length space character) to break VS Code's URL detection regex for URLs that are examples. This process will
// convert that from the readable espace sequence, to just an invisible character. Convert it back to the visible espace sequence.
content = content.replace(/\u200b/gm, "\\u200b");
content = content.replace(/\u200b/gm, "\\u200b") + "\n";
fs.writeFileSync('package.json', content);
await write('package.json', content);
}
generateOptionsSchema();
+95
View File
@@ -0,0 +1,95 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import * as fs from "fs";
import * as path from 'path';
import { parseString } from 'xml2js';
import { mkdir, write } from './common';
export async function main() {
const localizeRepoPath = process.argv[2];
const cpptoolsRepoPath = process.argv[3];
if (!localizeRepoPath || !cpptoolsRepoPath) {
console.error(`ERROR: Usage: ${path.parse(process.argv[0]).base} ${path.parse(process.argv[1]).base} <Localize repo path> <vscode-cpptools repo path>`);
return;
}
console.log("Importing EDGE strings from Localize repo: " + localizeRepoPath);
console.log("Writing to cpptools repo: " + cpptoolsRepoPath);
if (!fs.existsSync(path.join(localizeRepoPath, ".git"))) {
console.error("ERROR: Localize repo submodule is not initialized in Localize repo");
return;
}
const languages = [
{ id: "zh-tw", folderName: "cht", transifexId: "zh-hant" },
{ id: "zh-cn", folderName: "chs", transifexId: "zh-hans" },
{ id: "fr", folderName: "fra" },
{ id: "de", folderName: "deu" },
{ id: "it", folderName: "ita" },
{ id: "es", folderName: "esn" },
{ id: "ja", folderName: "jpn" },
{ id: "ko", folderName: "kor" },
{ id: "ru", folderName: "rus" },
{ id: "bg", folderName: "bul" }, // VS Code supports Bulgarian, but VS is not currently localized for those languages.
{ id: "hu", folderName: "hun" }, // VS Code supports Hungarian, but VS is not currently localized for those languages.
{ id: "pt-br", folderName: "ptb", transifexId: "pt-BR" },
{ id: "tr", folderName: "trk" },
{ id: "cs", folderName: "csy" },
{ id: "pl", folderName: "plk" }
];
const locFolderNames = fs.readdirSync(localizeRepoPath).filter(f => fs.lstatSync(path.join(localizeRepoPath, f)).isDirectory());
for (const locFolderName of locFolderNames) {
const lclPath = path.join(localizeRepoPath, locFolderName, "vc/vc/cpfeui.dll.lcl");
const languageInfo = languages.find(l => l.folderName === locFolderName);
if (!languageInfo) {
return;
}
const languageId = languageInfo.id;
const outputLanguageFolder = path.join(cpptoolsRepoPath, "Extension/bin/messages", languageId);
const outputPath = path.join(outputLanguageFolder, "messages.json");
const sourceContent = fs.readFileSync(lclPath, 'utf-8');
// Scan once, just to determine how many there are the size of the array we need
let highestValue = 0;
parseString(sourceContent, function (err, result) {
result.LCX.Item.forEach((item) => {
if (item.$.ItemId === ";String Table") {
item.Item.forEach((subItem) => {
const itemId = parseInt(subItem.$.ItemId, 10);
if (subItem.Str[0].Tgt) {
if (highestValue < itemId) {
highestValue = itemId;
}
}
});
}
});
});
const resultArray = new Array(highestValue);
parseString(sourceContent, function (err, result) {
result.LCX.Item.forEach((item) => {
if (item.$.ItemId === ";String Table") {
item.Item.forEach((subItem) => {
const itemId = parseInt(subItem.$.ItemId, 10);
if (subItem.Str[0].Tgt) {
resultArray[itemId] = subItem.Str[0].Tgt[0].Val[0].replace(/\]5D;/g, "]");
if (highestValue < itemId) {
highestValue = itemId;
}
}
});
}
});
});
await mkdir(outputLanguageFolder);
await write(outputPath, JSON.stringify(resultArray, null, 4) + "\n");
}
}
+17
View File
@@ -0,0 +1,17 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import { gray, green, readJson } from './common';
export async function main() {
const pkg = await readJson('package.json') as Record<string, any>;
if (pkg.scripts) {
console.log(green('\n\nAvailable script commands:\n'));
for (const key of Object.keys(pkg.scripts)) {
console.log(green(`yarn ${key} - ${gray(pkg.scripts[key])}`));
}
console.log('');
}
}
+236
View File
@@ -0,0 +1,236 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import { runTests } from '@vscode/test-electron';
import { spawnSync } from 'child_process';
import { CommentArray, CommentObject } from 'comment-json';
import { readdir } from 'fs/promises';
import { resolve } from 'path';
import { env } from 'process';
import { returns } from '../src/Utility/Async/returns';
import { filepath } from '../src/Utility/Filesystem/filepath';
import { is } from '../src/Utility/System/guards';
import { verbose } from '../src/Utility/Text/streams';
import { getTestInfo } from '../test/common/selectTests';
import { $args, $root, $scenario, assertAnyFile, assertAnyFolder, brightGreen, checkBinaries, cmdSwitch, cyan, error, gray, green, readJson, red, writeJson } from './common';
import { install, isolated, options } from './vscode';
export { install, reset } from './vscode';
const sowrite = process.stdout.write.bind(process.stdout) as (...args: unknown[]) => boolean;
const sewrite = process.stderr.write.bind(process.stderr) as (...args: unknown[]) => boolean;
const filters = [
/^\[(.*)\].*/,
/^Unexpected token A/,
/Cannot register 'cmake.cmakePath'/,
/\[DEP0005\] DeprecationWarning/,
/--trace-deprecation/,
/Iconv-lite warning/,
/^Extension '/,
/^Found existing install/
];
// remove unwanted messages from stdio
function filterStdio() {
process.stdout.write = function (...args: unknown[]) {
if (typeof args[0] === 'string') {
const text = args[0];
if (filters.some(each => text.match(each))) {
return true;
}
}
if (args[0] instanceof Buffer) {
const text = args[0].toString();
if (filters.some(each => text.match(each))) {
return true;
}
}
return sowrite(...args);
};
process.stderr.write = function (...args: unknown[]) {
if (typeof args[0] === 'string') {
const text = args[0];
if (filters.some(each => text.match(each))) {
return true;
}
}
if (args[0] instanceof Buffer) {
const text = args[0].toString();
if (filters.some(each => text.match(each))) {
return true;
}
}
return sewrite(...args);
};
}
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'});
verbose(`\n${green("NOTE:")} If you want to run a scenario test (end-to-end) use ${cmdSwitch('scenario=<NAME>')} \n\n`);
return result.status;
}
async function scenarioTests(assets: string, name: string, workspace: string) {
if (await checkBinaries()) {
process.exit(1);
}
return runTests({
...options,
extensionDevelopmentPath: $root,
extensionTestsPath: resolve($root, 'dist/test/common/selectTests'),
launchArgs: workspace ? [...options.launchArgs, workspace] : options.launchArgs,
extensionTestsEnv: {
SCENARIO: assets
}
});
}
export async function main() {
await assertAnyFolder('dist/test/', `The folder '${$root}/dist/test is missing. You should run ${brightGreen("yarn compile")}\n\n`);
const arg = $args.find(each => !each.startsWith("--"));
const specifiedScenario = $scenario || env.SCENARIO || await getScenarioFolder(arg);
const testInfo = await getTestInfo(specifiedScenario);
if (!testInfo) {
if (arg) {
return error(`Could not find scenario ${arg}`);
}
// lets just run the unit tests
process.exit(await unitTests());
}
// at this point, we're going to run some vscode tests
if (!await filepath.isFolder(isolated)) {
await install();
}
process.exit(await scenarioTests(testInfo.assets, testInfo.name, testInfo.workspace));
}
export async function all() {
if (await checkBinaries()) {
process.exit(1);
}
const finished: string[] = [];
if (await unitTests() !== 0) {
console.log(`${cyan(" UNIT TESTS: ")}${red("failed")}`);
process.exit(1);
}
finished.push(`${cyan(" UNIT TESTS: ")}${green("success")}`);
// at this point, we're going to run some vscode tests
if (!await filepath.isFolder(isolated)) {
await install();
}
try {
const scenarios = await getScenarioNames();
for (const each of scenarios) {
if (await filepath.isFolder(`${$root}/test/scenarios/${each}/tests`)) {
const ti = await getTestInfo(each);
if (ti) {
console.log(`\n\nRunning scenario ${each}`);
const result = await scenarioTests(ti.assets, ti.name, ti.workspace);
if (result) {
console.log(finished.join('\n'));
console.log(` ${cyan(`${ti.name} Tests:`)}${red("failed")}`);
process.exit(result);
}
finished.push(` ${cyan(`${ti.name} Tests:`)}${green("success")}`);
}
}
}
} catch (e) {
error(e);
} finally {
console.log(finished.join('\n'));
}
}
interface Input {
id: string;
type: string;
description: 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) {
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);
for (const each of names) {
console.log(` ${green(each.padEnd(max))}: ${gray(await getScenarioFolder(each))}`);
}
}
export async function regen() {
// update the .vscode/launch.json file with the scenarios
const scenarios = await getScenarioNames();
const launch = await readJson(`${$root}/.vscode/launch.json`) as CommentObject;
if (!is.object(launch)) {
return error(`The file ${$root}/.vscode/launch.json is not valid json`);
}
if (!is.array(launch.inputs)) {
return error(`The file ${$root}/.vscode/launch.json is missing the 'inputs' array`);
}
const inputs = launch.inputs as unknown as CommentArray<Input>;
const pickScenario = inputs.find(each => each.id === 'pickScenario');
if (!pickScenario) {
return error(`The file ${$root}/.vscode/launch.json is missing the 'pickScenario' input`);
}
const pickWorkspace = inputs.find(each => each.id === 'pickWorkspace');
if (!pickWorkspace) {
return error(`The file ${$root}/.vscode/launch.json is missing the 'pickWorkspace' input`);
}
for (const scenarioFolder of scenarios) {
const prefix = $root.replace(/\\/g, '/');
if (await filepath.isFolder(`${$root}/test/scenarios/${scenarioFolder}/tests`)) {
const testInfo = await getTestInfo(scenarioFolder);
if (testInfo) {
const label = `${scenarioFolder} `;
const value = testInfo.workspace.replace(/\\/g, '/').replace(prefix, '${workspaceFolder}');
const scenario = pickScenario.options.find(s => s.label === label);
if (!scenario) {
console.log(`Adding scenario ${green(scenarioFolder)} to pickScenario`);
pickScenario.options.push({ label, value });
} else {
verbose(`Skipping scenario ${scenarioFolder} because it already exists`);
}
const wrkspace = pickWorkspace.options.find(s => s.label === label);
if (!wrkspace) {
console.log(`Adding workspace ${green(scenarioFolder)} to pickWorkspace`);
pickWorkspace.options.push({ label, value });
} else {
verbose(`Skipping workspace ${scenarioFolder} because it already exists`);
}
} else {
verbose(`Skipping scenario ${scenarioFolder} because it doesn't look like there are any tests. (maybe try and run ${brightGreen("yarn compile")})`);
}
}
}
await writeJson(`${$root}/.vscode/launch.json`, launch);
}
+12
View File
@@ -0,0 +1,12 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "node16",
"moduleResolution": "node16",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"esModuleInterop": true
}
}
+52
View File
@@ -0,0 +1,52 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import { checkBinaries, checkCompiled, checkDTS, checkPrep, error, green } from './common';
const quiet = process.argv.includes('--quiet');
export async function main() {
let failing = await checkPrep() && (quiet || error(`Files are not up to date. Run ${green('yarn prep')} to fix it.`));
failing = (await checkCompiled() && (quiet || error(`Compiled files are not present. Run ${green('yarn compile')} to fix it.`))) || failing;
failing = (await checkBinaries() && (quiet || error(`The native binary files are not present. You should either build or install the native binaries\n\n.`))) || failing;
if (failing) {
process.exit(1);
}
}
export async function compiled() {
let failing = false;
failing = (await checkCompiled() && (quiet || error(`Compiled files are not present. Run ${green('yarn compile')} to fix it.`))) || failing;
if (failing) {
process.exit(1);
}
}
export async function binaries() {
let failing = false;
failing = (await checkBinaries() && (quiet || error(`The native binary files are not present. You should either build or install the native binaries\n\n.`))) || failing;
if (failing) {
process.exit(1);
}
}
export async function prep() {
let failing = false;
failing = (await checkPrep() && (quiet || error(`Files are not up to date. Run ${green('yarn prep')} to fix it.`))) || failing;
if (failing) {
process.exit(1);
}
}
export async function dts() {
let failing = false;
failing = (await checkDTS() && (quiet || error(`VSCode import files are not present. Run ${green('yarn prep')} to fix it.`))) || failing;
if (failing) {
process.exit(1);
}
}
+61
View File
@@ -0,0 +1,61 @@
/* --------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All Rights Reserved.
* See 'LICENSE' in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import { downloadAndUnzipVSCode, resolveCliArgsFromVSCodeExecutablePath } from '@vscode/test-electron';
import { createHash } from 'crypto';
import { tmpdir } from 'os';
import { resolve } from 'path';
import { verbose } from '../src/Utility/Text/streams';
import { mkdir, readJson, rimraf, write } from './common';
export const isolated = resolve(tmpdir(), '.vscode-test', createHash('sha256').update(__dirname).digest('hex').substring(0, 6));
export const extensionsDir = resolve(isolated, 'extensions');
export const userDir = resolve(isolated, 'user-data');
export const settings = resolve(userDir, "User", 'settings.json');
export const options = {
cachePath: `${isolated}/cache`,
launchArgs: ['--no-sandbox', '--disable-updates', '--skip-welcome', '--skip-release-notes', `--extensions-dir=${extensionsDir}`, `--user-data-dir=${userDir}`, '--disable-workspace-trust']
};
export async function install() {
try {
// Create a new isolated directory for VS Code instance in the test folder, and make it specific to the extension folder so we can avoid collisions.
// keeping this out of the Extension folder means we're not worried about VS Code getting weird with locking files and such.
verbose(`Isolated VSCode test folder: ${isolated}`);
await mkdir(isolated);
const vscodeExecutablePath = await downloadAndUnzipVSCode(options);
const [cli, ...args] = resolveCliArgsFromVSCodeExecutablePath(vscodeExecutablePath).filter(each => !each.startsWith('--extensions-dir=') && !each.startsWith('--user-data-dir='));
args.push(`--extensions-dir=${extensionsDir}`, `--user-data-dir=${userDir}`);
// install the appropriate extensions
// spawnSync(cli, [...args, '--install-extension', 'ms-vscode.cpptools'], { encoding: 'utf-8', stdio: 'ignore' });
// spawnSync(cli, [...args, '--install-extension', 'twxs.cmake'], { encoding: 'utf-8', stdio: 'ignore' });
// spawnSync(cli, [...args, '--install-extension', 'ms-vscode.cmake-tools'], { encoding: 'utf-8', stdio: 'ignore' });
const settingsJson = await readJson(settings, {});
if (!settingsJson["workbench.colorTheme"]) {
settingsJson["workbench.colorTheme"] = "Tomorrow Night Blue";
}
settingsJson["git.openRepositoryInParentFolders"] = "never";
await write(settings, JSON.stringify(settingsJson, null, 4));
return {
cli, args
};
} catch (err: unknown) {
console.log(err);
}
}
export async function reset() {
verbose(`Removing VSCode test folder: ${isolated}`);
await rimraf(isolated);
}
+141 -134
View File
@@ -1,136 +1,143 @@
// A launch configuration that compiles the extension and then opens it inside a new window
{
"version": "0.1.0",
"configurations": [
{
"name": "Launch Extension (development)",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}"
],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"preLaunchTask": "Compile Dev",
},
{
"name": "Launch Extension (production)",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}"
],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"preLaunchTask": "TypeScript Compile",
},
{
"name": "Launch Extension (do not build)",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}"
],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
]
},
{
"name": "Launch Extension (watch, development)",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}"
],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"preLaunchTask": "Compile Dev Watch",
},
{
"name": "Launch Extension (watch, production)",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}"
],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"preLaunchTask": "TypeScript Compile Watch",
},
{
"name": "Launch Unit Tests",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/out/test/unitTests/index"
],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/out/test/**/*.js"
],
"preLaunchTask": "Pretest"
},
{
"name": "Launch Integration Tests",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"${workspaceFolder}/test/integrationTests/testAssets/SimpleCppProject/simpleCppProject.code-workspace",
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/out/test/integrationTests/languageServer/index"
],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/out/test/**/*.js"
],
"preLaunchTask": "Pretest",
},
{
"name": "Launch E2E IntelliSense features tests",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"C:/git/Vcls-vscode-test/SingleRootProject",
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/out/test/integrationTests/IntelliSenseFeatures/index"
],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/out/test/**/*.js"
],
"preLaunchTask": "Pretest"
},
{
"name": "Node Attach",
"type": "node",
"request": "attach",
"port": 5858
},
]
}
"version": "0.1.0",
"configurations": [
{
// debugs the extension
"name": "Run Extension",
"type": "extensionHost",
"request": "launch",
"args": [
"--no-sandbox",
"--disable-updates",
"--skip-welcome",
"--skip-release-notes",
"--disable-workspace-trust",
"--extensionDevelopmentPath=${workspaceFolder}",
],
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/dist/**"
],
// you can use a watch task as a prelaunch task and it works like you'd want it to.
"preLaunchTask": "watch"
},
{
// debugs the extension (selecting the workspace)
"name": "Run Extension-Select Workspace",
"type": "extensionHost",
"request": "launch",
"args": [
"--no-sandbox",
"--disable-updates",
"--skip-welcome",
"--skip-release-notes",
"--disable-workspace-trust",
"--extensionDevelopmentPath=${workspaceFolder}",
"${input:pickWorkspace}"
],
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/dist/**"
],
// you can use a watch task as a prelaunch task and it works like you'd want it to.
"preLaunchTask": "watch"
},
{
// debug scenario tests (selecting the workspace)
"name": "VSCode Tests",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"env": {
"SCENARIO": "${input:pickScenario}"
},
"args": [
"--no-sandbox",
"--disable-updates",
"--skip-welcome",
"--skip-release-notes",
"--disable-extensions",
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/dist/test/common/selectTests",
"--scenario=${input:pickScenario}",
"${input:pickScenario}"
],
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/dist/**"
],
// you can use a watch task as a prelaunch task and it works like you'd want it to.
"preLaunchTask": "watch"
},
{
// used for debugging unit tests
"name": "MochaTest",
"type": "node",
"request": "attach",
"port": 9229,
"continueOnAttach": true,
"autoAttachChildProcesses": false,
"skipFiles": [
"<node_internals>/**"
],
"outFiles": [
"${workspaceFolder}/dist/**",
"!**/node_modules/**"
]
}
],
"inputs": [
{
"type": "pickString",
"id": "pickScenario",
"description": "Select which scenario to debug VSCode tests.",
"options": [
{
"label": "MultirootDeadlockTest ",
"value": "${workspaceFolder}/test/scenarios/MultirootDeadlockTest/assets/test.code-workspace"
},
{
"label": "SimpleCppProject ",
"value": "${workspaceFolder}/test/scenarios/SimpleCppProject/assets/simpleCppProject.code-workspace"
},
{
"label": "SingleRootProject ",
"value": "${workspaceFolder}/test/scenarios/SingleRootProject/assets/"
},
{
"label": "CompilerDetection ",
"value": "${workspaceFolder}/test/scenarios/CompilerDetection/assets"
}
]
},
{
"type": "pickString",
"id": "pickWorkspace",
"description": "Select which workspace scenario to debug VSCode.",
"default": "-n",
"options": [
{
"label": "(Debug with new window) ",
"value": "-n"
},
{
"label": "MultirootDeadlockTest ",
"value": "${workspaceFolder}/test/scenarios/MultirootDeadlockTest/assets/test.code-workspace"
},
{
"label": "SimpleCppProject ",
"value": "${workspaceFolder}/test/scenarios/SimpleCppProject/assets/simpleCppProject.code-workspace"
},
{
"label": "SingleRootProject ",
"value": "${workspaceFolder}/test/scenarios/SingleRootProject/assets/"
},
{
"label": "CompilerDetection ",
"value": "${workspaceFolder}/test/scenarios/CompilerDetection/assets"
}
]
}
]
}
+65 -8
View File
@@ -1,10 +1,67 @@
// Place your settings in this file to overwrite default and user settings.
{
"files.exclude": {
"out": false // set this to true to hide the "out" folder with the compiled JS files
},
"search.exclude": {
"out": true // set this to false to include "out" folder in search results
},
"typescript.tsdk": "./node_modules/typescript/lib" // we want to use the TS server from our node_modules folder to control its version
}
"files.exclude": {
"out": false // set this to true to hide the "out" folder with the compiled JS files
},
"search.exclude": {
"out": true // set this to false to include "out" folder in search results
},
"typescript.tsdk": "./node_modules/typescript/lib", // we want to use the TS server from our node_modules folder to control its version
// if you install the mocha test explorer extension, you can run the unit tests from the test explorer UI
"testExplorer.useNativeTesting": true,
"mochaExplorer.files": "./**/unit/**/*.test.js",
"mochaExplorer.watch": "./**/unit/**/*.test.js",
"mochaExplorer.ignore": [
"**/*skip*",
"**/dist/test/**/*.d.ts",
"**/node_modules/**"
],
"mochaExplorer.debuggerConfig": "MochaTest",
"mochaExplorer.logpanel": true,
"mochaExplorer.timeout": 500000,
"mochaExplorer.require": [
"source-map-support/register"
],
"mochaExplorer.monkeyPatch": true,
"[json]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "vscode.json-language-features",
"editor.tabSize": 4,
"files.insertFinalNewline": true
},
"[jsonc]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "vscode.json-language-features",
"editor.tabSize": 4,
"files.insertFinalNewline": true
},
"[typescript]": {
"editor.tabSize": 4,
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
"editor.formatOnSave": true,
"files.insertFinalNewline": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.organizeImports": true
},
},
"eslint.format.enable": true,
"[javascript]": {
"editor.tabSize": 4,
},
"markdown.extension.list.indentationSize": "inherit",
"markdown.extension.toc.levels": "2..6",
"[markdown]": {
"editor.tabSize": 4,
},
"eslint.workingDirectories": [
{
"changeProcessCWD": true,
"directory": "./",
},
{
"changeProcessCWD": true,
"directory": "./.scripts",
}
],
}
+10 -157
View File
@@ -4,172 +4,25 @@
"version": "2.0.0",
"tasks": [
{
"label": "TypeScript Compile",
"label": "compile",
"type": "npm",
"script": "compile",
"problemMatcher": "$tsc",
"group": {
"kind": "build",
"isDefault": true
},
"isBackground": false,
"type": "shell",
"presentation": {
"echo": true,
"reveal": "silent",
"focus": false,
"panel": "shared"
},
"command": "yarn",
"args": [
"run",
"compile",
"--loglevel",
"silent"
]
}
},
{
"label": "TypeScript Lint",
"group": "build",
"isBackground": false,
"type": "shell",
"command": "yarn",
"args": [
"run",
"lint"
],
"problemMatcher": {
"fileLocation": "absolute",
"source": "lint",
"pattern": [
{
"regexp": "(ERROR:) ([a-zA-Z/:\\-\\.]*)\\[(\\d+), (\\d+)\\]: (.*)",
"severity": 1,
"file": 2,
"line": 3,
"column": 4,
"message": 5
}
]
},
"dependsOn": [
"Compile Dev"
]
},
{
"label": "Compile Dev",
"group": "build",
"isBackground": false,
"type": "shell",
"command": "yarn",
"args": [
"run",
"compile-dev"
]
},
{
"label": "Pretest",
"group": "build",
"isBackground": false,
"type": "shell",
"command": "yarn",
"args": [
"run",
"pretest"
],
"dependsOn": [
"Compile Dev"
]
},
{
"label": "TypeScript Compile Watch",
"label": "watch",
"type": "npm",
"script": "watch",
"group": {
"kind": "build",
"isDefault": true
},
"isBackground": true,
"type": "shell",
"presentation": {
"echo": true,
"reveal": "silent",
"focus": false,
"panel": "shared"
},
"command": "yarn",
"args": [
"run",
"compile-watch",
"--loglevel",
"silent"
],
"problemMatcher": [
{
"owner": "typescript",
"source": "ts",
"applyTo": "closedDocuments",
"fileLocation": "absolute",
"severity": "error",
"pattern": [
{
"regexp": "\\[tsl\\] ERROR in (.*)?\\((\\d+),(\\d+)\\)",
"file": 1,
"line": 2,
"column": 3
},
{
"regexp": "\\s*TS\\d+:\\s*(.*)",
"message": 1
}
],
"background": {
"activeOnStart": true,
"beginsPattern": {
"regexp": "Compilation (.*?)starting…"
},
"endsPattern": {
"regexp": "Compilation (.*?)finished"
}
}
}
]
},
{
"label": "Compile Dev Watch",
"group": "build",
"isBackground": true,
"type": "shell",
"command": "yarn",
"args": [
"run",
"compile-dev-watch"
],
"problemMatcher": [
{
"owner": "typescript",
"source": "ts",
"applyTo": "closedDocuments",
"fileLocation": "absolute",
"severity": "error",
"pattern": [
{
"regexp": "\\[tsl\\] ERROR in (.*)?\\((\\d+),(\\d+)\\)",
"file": 1,
"line": 2,
"column": 3
},
{
"regexp": "\\s*TS\\d+:\\s*(.*)",
"message": 1
}
],
"background": {
"activeOnStart": true,
"beginsPattern": {
"regexp": "Compilation (.*?)starting…"
},
"endsPattern": {
"regexp": "Compilation (.*?)finished"
}
}
}
]
"problemMatcher": "$tsc-watch",
}
]
}
}
+54 -46
View File
@@ -1,46 +1,54 @@
# ignore vscode settings for extension development
.vscode/**
# ignore binaries
obj/**
# ignore source files
tools/**
notices/**
test/**
src/**
# ignore .js files that are webpacked or only used for development
out/src/**
out/tools/**
# ignore ts files in ui
ui/*.ts
# ignore Azure-Pipelines files
jobs/**
# ignore development files
tsconfig.json
test.tsconfig.json
tslint.json
.eslintrc.js
webpack.config.js
tscCompileList.txt
gulpfile.js
.gitattributes
.gitignore
CMakeLists.txt
debugAdapters/install.lock*
typings/**
**/*.map
import_edge_strings.js
localized_string_ids.h
translations_auto_pr.js
# ignore i18n language files
i18n/**
# ignore node_modules
node_modules/
# ignore vscode settings for extension development
.vscode/**
# ignore binaries
obj/**
# ignore source files
tools/**
notices/**
test/**
src/**
# ignore .js files that are webpacked or only used for development
out/src/**
out/tools/**
# don't include the local code and tests compiled files
dist/test/**
# no project scripts
.scripts/**
# ignore ts files in ui
ui/*.ts
# ignore Azure-Pipelines files
jobs/**
cgmanifest.json
# ignore development files
tsconfig.json
test.tsconfig.json
ui.tsconfig.json
tslint.json
.eslintrc.js
webpack.config.js
tscCompileList.txt
gulpfile.js
.gitattributes
.gitignore
CMakeLists.txt
debugAdapters/install.lock*
typings/**
**/*.map
import_edge_strings.js
localized_string_ids.h
translations_auto_pr.js
# ignore i18n language files
i18n/**
# ignore node_modules
node_modules/
+7
View File
@@ -0,0 +1,7 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
ignore-engines true
disable-self-update-check true
--run.silent true
+854 -29
View File
@@ -1,14 +1,839 @@
# C/C++ for Visual Studio Code Change Log
# C/C++ for Visual Studio Code Changelog
## Version 1.18.0: October 12, 2023
### New Features
* Add an 'Extract to Function' (or Member Function) code action after selecting code. [#1162](https://github.com/microsoft/vscode-cpptools/issues/1162)
* Currently, it's only enabled when `C_Cpp.experimentFeatures` is `true`. Also, 'Extract to Free Function' is disabled.
* Compiler acquisition improvements. [#10525](https://github.com/microsoft/vscode-cpptools/issues/10525)
### Enhancements
* Add setting `C_Cpp.refactoring.includeHeader` to customize whether or not to add an include header when doing a refactoring code action. [#11271](https://github.com/microsoft/vscode-cpptools/issues/11271)
* Update clang-format and clang-tidy to 17.0.2. [PR #11491](https://github.com/microsoft/vscode-cpptools/pull/11491)
## Version 1.2.2-insiders2: February 18, 2021
### Bug Fixes
* Fix the debugger truncating long strings when inspecting values. [#1786](https://github.com/microsoft/vscode-cpptools/issues/1786)
* Switch to using `XDG_CACHE_HOME` on Linux for the default database path. [#10191](https://github.com/microsoft/vscode-cpptools/issues/10191)
* Fix incorrect status and commands with the tag parsing language status UI. [#10749](https://github.com/microsoft/vscode-cpptools/issues/10749)
* Fix an empty (`""`) `compilerPath` in a base configuration overriding the compiler specified by a custom configuration provider or a `compile_commands.json`. [#11373](https://github.com/microsoft/vscode-cpptools/issues/11373)
* Fix a startup crash when reading values from JSON (settings) that are not the type expected. [#11375](https://github.com/microsoft/vscode-cpptools/issues/11375)
* Fix a crash detected by crash telemetry. [#11401](https://github.com/microsoft/vscode-cpptools/issues/11401)
* Fix handling of an undefined `env` variable on Linux and macOS. [#11447](https://github.com/microsoft/vscode-cpptools/issues/11447)
* Fix multiple issues with querying `nvcc` (CUDA) as a compiler. [#11454](https://github.com/microsoft/vscode-cpptools/issues/11454)
* Fix an issue that could cause a C language standard to be applied to a C++ file, or vice versa.
* Remove `cpp` and `clang-cpp` preprocessors from the list of detectable compilers.
## Version 1.17.5: August 28, 2023
### Bug Fixes
* Fix a language server crash for platforms that don't support the IntelliSense cache (AutoPCH). [#10789](https://github.com/microsoft/vscode-cpptools/issues/10789)
* Fix markdown in comments when inline/block code is used. [#11322](https://github.com/microsoft/vscode-cpptools/issues/11322)
* Fix Find All References and Call Hierarchy for C files when the cursor is at the end of a symbol. [#11338](https://github.com/microsoft/vscode-cpptools/issues/11338)
* Fix usage of the `/Zc:alignedNew-` MSVC compiler option. [#11350](https://github.com/microsoft/vscode-cpptools/issues/11350)
## Version 1.17.4: August 21, 2023
### Bug Fixes
* Fix crash recovery for the main extension process. [#11335](https://github.com/microsoft/vscode-cpptools/issues/11335)
* Fix an IntelliSense process crash when certain error messages occur with a language pack enabled. [#11336](https://github.com/microsoft/vscode-cpptools/issues/11336)
## Version 1.17.3: August 16, 2023
### Bug Fix
* Fix a regression with attaching the debugger to processes on Linux and macOS. [#11328](https://github.com/microsoft/vscode-cpptools/issues/11328)
## Version 1.17.2: August 14, 2023
### Enhancements
* Enable a subset of markdown to render in hover by default and a `C_Cpp.markdownInComments` setting. [#6020](https://github.com/microsoft/vscode-cpptools/issues/6020), [#10461](https://github.com/microsoft/vscode-cpptools/issues/10461)
* Add support for gcc 13 features. [#11038](https://github.com/microsoft/vscode-cpptools/issues/11038)
* Add default compiler detection of additional compilers in MSYS environments. [#11211](https://github.com/microsoft/vscode-cpptools/issues/11211)
* Use musl for building Linux binaries of the extension.
* Add support for additional compiler wrappers: gomacc, distcc, buildcache, and icecc.
### Bug Fixes
* Fix a couple bugs with documentation comments. [#5241](https://github.com/microsoft/vscode-cpptools/issues/5241)
* Added `__float128` support in gcc IntelliSense mode. [#9558](https://github.com/microsoft/vscode-cpptools/issues/9558)
* Fix an issue where the debugger would get stuck while using cl.exe options. [#10231](https://github.com/microsoft/vscode-cpptools/issues/10231)
* Fix C/C++ commands showing in the Command Palette with non-C/C++ files. [#10421](https://github.com/microsoft/vscode-cpptools/issues/10421)
* Fix the 'Select IntelliSense Configuration' command to also update an existing `compilerPath` in c_cpp_properties.json. [#10808](https://github.com/microsoft/vscode-cpptools/issues/10808)
* Update clang-format (and clang-tidy) to 16.0.6 to fix a bug. [#11027](https://github.com/microsoft/vscode-cpptools/issues/11027)
* Fix `#include` completion leaving an extra `>`. [#11042](https://github.com/microsoft/vscode-cpptools/issues/11042)
* Fix an issue with matching of glob patterns containing path delimiters. [#11132](https://github.com/microsoft/vscode-cpptools/issues/11132)
* Fix Create Declaration/Definition via `Quick Fix…` from hover tooltip. [#11157](https://github.com/microsoft/vscode-cpptools/issues/11157)
* Fix issues with compiler querying of clang-cl. [#11207](https://github.com/microsoft/vscode-cpptools/issues/11207)
* Fix `files.encoding` setting on startup. [#11210](https://github.com/microsoft/vscode-cpptools/issues/11210)
* Fix a crash related to directories with a very large number of files. [#11226](https://github.com/microsoft/vscode-cpptools/issues/11226)
* Fix the parameter format of call hierarchy items. [#11247](https://github.com/microsoft/vscode-cpptools/issues/11247)
* Remove the vcpkg code action from the missing includes code action list. [#11252](https://github.com/microsoft/vscode-cpptools/issues/11252)
* Fix the file path info of call hierarchy items to display the relative path to a workspace folder. [#11254](https://github.com/microsoft/vscode-cpptools/issues/11254)
* Fix colorization for macro expansions in macro arguments. [#11256](https://github.com/microsoft/vscode-cpptools/issues/11256)
* Fix a crash for CUDA projects with '>' in the command line. [#11289](https://github.com/microsoft/vscode-cpptools/issues/11289)
* Increase the default standard for the 'Build and Debug Active File' feature to c++14 on macOS. [#11292](https://github.com/microsoft/vscode-cpptools/issues/11292)
* Fix an issue with the compiler currently configured for use with IntelliSense being listed last in the task creation popup. [PR #11299](https://github.com/microsoft/vscode-cpptools/pull/11299)
* Fix an IPCH issue on Linux due to the Position Independent Executable (PIE) option not being set since 1.17.0.
* Fix Rank > 1 Display Strings for Natvis. [PR MIEngine#1406](https://github.com/microsoft/MIEngine/pull/1406)
* Fix some crashes identified by crash telemetry.
* Fix an issue that could cause zombie processes on Linux/Mac.
* Address some issues with glibc version compatibility. Native binaries for cpptools and the bundled clang-tidy/clang-format are now built with musl and fully statically linked.
* Fix the wrong compiler being set as default when configured to use `compile_commands.json` and overriding the compiler used there with an explicit `compilerPath`.
### Thank You to the Contributors
* [@gareth-rees (Gareth Rees)](https://github.com/gareth-rees): Always use `--simple-values` in newer versions of GDB. [PR MIEngine#1400](https://github.com/microsoft/MIEngine/pull/1400)
* [@iAbadia (Iñaki)](https://github.com/iAbadia): Align use of 'sendInvalidate' request arguments. [PR MIEngine#1402](https://github.com/microsoft/MIEngine/pull/1402)
* [@intel-rganesh (Rakesh Ganesh)](https://github.com/intel-rganesh): Introduce `--thread` and `--frame options`. [PR MIEngine#1401](https://github.com/microsoft/MIEngine/pull/1401)
* [@michalmaka (Michał Mąka)](https://github.com/michalmaka): Add support for Toybox to the remote process picker. [PR #11175](https://github.com/microsoft/vscode-cpptools/pull/11175)
* [@sbobko (Sergey Bobko)](https://github.com/sbobko): Add 'sendInvalidate' request. [PR MIEngine#1367](https://github.com/microsoft/MIEngine/pull/1367)
* [@yne (Rémy F.)](https://github.com/yne): Add wildcard support for `includePath`. [PR #10388](https://github.com/microsoft/vscode-cpptools/pull/10388)
## Version 1.16.3: June 23, 2023
### Bug Fix
* Fix "cout is ambiguous" error. [#11122](https://github.com/microsoft/vscode-cpptools/issues/11122)
## Version 1.16.2: June 22, 2023
### New Features
* Add Call Hierarchy. [#16](https://github.com/microsoft/vscode-cpptools/issues/16)
* Add "Copy Definition" and "Copy Declaration" code actions (for when the default Create placement isn't desired). [#10238](https://github.com/microsoft/vscode-cpptools/issues/10238), [#10942](https://github.com/microsoft/vscode-cpptools/issues/10942)
### Enhancements
* Add support for other glob pattern syntax, such as `[]` and `^`. [#8960](https://github.com/microsoft/vscode-cpptools/issues/8960)
* Add support for C++23 z/Z and zu/ZU suffixes in clang/gcc modes. [#10190](https://github.com/microsoft/vscode-cpptools/issues/10190)
* Add warning logging when the database is reset due to a version change. [#10984](https://github.com/microsoft/vscode-cpptools/issues/10984)
* Move user compilers to the beginning of the "known compilers" lists. [#10985](https://github.com/microsoft/vscode-cpptools/issues/10985)
* Add file path to the details of a call hierarchy result. [#10997](https://github.com/microsoft/vscode-cpptools/issues/10997)
* Add `miDebuggerArgs` to debugger attach option.
* Thank you for the contribution @Summon528 [PR #11066](https://github.com/microsoft/vscode-cpptools/pull/11066)
### Bug Fixes
* Fix an IntelliSense parsing bug with C++20 ranges. [#8039](https://github.com/microsoft/vscode-cpptools/issues/8039)
* Fix incorrect insertion of Create Declaration/Definition when it also adds a #include. [#10464](https://github.com/microsoft/vscode-cpptools/issues/10464)
* Fix an IntelliSense bug with user-defined floating-point literals. [#10837](https://github.com/microsoft/vscode-cpptools/issues/10837)
* Fix deadlock with Find All References. [#10855](https://github.com/microsoft/vscode-cpptools/issues/10855)
* Fix performance issues on machines with > 32 threads. [#10874](https://github.com/microsoft/vscode-cpptools/issues/10874)
* Fix localization of "C/C++ Configurations". [#10907](https://github.com/microsoft/vscode-cpptools/issues/10907)
* Fix the workspace folder not getting added to the browse.path in some cases. [#10914](https://github.com/microsoft/vscode-cpptools/issues/10914)
* Fix incorrect Apple clang to LLVM clang version mappings. [#10920](https://github.com/microsoft/vscode-cpptools/issues/10920)
* Revert -fms-extensions being added for mingw compilers by default (due to bugs). [#10940](https://github.com/microsoft/vscode-cpptools/issues/10940)
* Fix the "known compilers" list not getting updated with "user compilers". [#10943](https://github.com/microsoft/vscode-cpptools/issues/10943)
* Fix cancelation of Find All References while confirming references. [#10947](https://github.com/microsoft/vscode-cpptools/issues/10947)
* Fix a bug with workspace parsing status. [PR #10974](https://github.com/microsoft/vscode-cpptools/pull/10974)
* Fix some bugs if settings were empty string or null. [#10994](https://github.com/microsoft/vscode-cpptools/issues/10994)
* Fix cancellation for Find All References/Rename/Call Hierarchy. [#10998](https://github.com/microsoft/vscode-cpptools/issues/10998)
* Fix two Doxygen comment generation bugs. [#10995](https://github.com/microsoft/vscode-cpptools/issues/10995), [#11016](https://github.com/microsoft/vscode-cpptools/issues/11016)
* Fix the thread pool sometimes not increasing in size, which could lead to the cpptools process incorrectly being shut down. [#11003](https://github.com/microsoft/vscode-cpptools/issues/11003)
* Stop using vcFormat if .editorconfig exists with only non-formatting cpp settings. [PR #11015](https://github.com/microsoft/vscode-cpptools/pull/11015)
* Use integratedTerminal when user is running cl.exe for debugger. [#11032](https://github.com/microsoft/vscode-cpptools/issues/11032)
* Thank you for the contribution @caiohamamura [PR #11035](https://github.com/microsoft/vscode-cpptools/pull/11035)
* Fix the configure your IntelliSense notification to not show again when the "Don't Show Again" option is selected. [#11070](https://github.com/microsoft/vscode-cpptools/issues/11070)
* Fix a bug that could cause incomplete reading of stdout/stderr of child processes on Windows.
* Fix incorrect "declaration is incompatible" IntelliSense errors.
* Fix some potential crashes.
## Version 1.15.4: May 1, 2023
### Enhancements
* Support multiple natvis files in `visualizerFile`. [#925](https://github.com/microsoft/vscode-cpptools/issues/925)
* Enable error squiggles for single file mode if includes resolve. [#10062](https://github.com/microsoft/vscode-cpptools/issues/10062)
* Improve the description of the `C_Cpp.codeAnalysis.clangTidy.enabled` setting. [#10454](https://github.com/microsoft/vscode-cpptools/issues/10454)
* Add a 'Select an IntelliSense configuration' code action and error message for standard headers which can't be found. [#10531](https://github.com/microsoft/vscode-cpptools/issues/10531)
* Change the 'Edit "includePath" setting' code action to reference "compilerPath" for missing system includes. [#10675](https://github.com/microsoft/vscode-cpptools/issues/10675)
* Add a "Configure IntelliSense" status bar warning (currently controlled by an experiment). [#10685](https://github.com/microsoft/vscode-cpptools/issues/10685)
* Re-enable an updated C/C++ walkthrough (currently only available for some users). [PR #10707](https://github.com/microsoft/vscode-cpptools/pull/10707)
* Update to clang-format/tidy 16. [#10725](https://github.com/microsoft/vscode-cpptools/issues/10725)
* Move the configuration status bar item out of the language status UI. [#10755](https://github.com/microsoft/vscode-cpptools/issues/10755)
* Change `Select Default Compiler` to `Select IntelliSense Configuration` with configuration providers and compile commands added. [#10756](https://github.com/microsoft/vscode-cpptools/issues/10756)
### Bug Fixes
* Support use of `ccache`, 'sccache', and 'clcache' in `compilerPath` and `compile_commands.json` command lines. [#7616](https://github.com/microsoft/vscode-cpptools/issues/7616)
* Enable `-fms-extensions` by default for Cygwin and MinGW. [#8353](https://github.com/microsoft/vscode-cpptools/issues/8353)
* Fix incorrect, excessive logging with compile commands. [#9865](https://github.com/microsoft/vscode-cpptools/issues/9865)
* Fix IntelliSense errors with C++ 20 range and span. [#10024](https://github.com/microsoft/vscode-cpptools/issues/10024), [#10252](https://github.com/microsoft/vscode-cpptools/issues/10252)
* Fix two vcFormat settings being inverted. [#10262](https://github.com/microsoft/vscode-cpptools/issues/10262), [#10263](https://github.com/microsoft/vscode-cpptools/issues/10263)
* Fix 'Create Declaration / Definition' making modifications to files outside the workspace folder. [#10402](https://github.com/microsoft/vscode-cpptools/issues/10402)
* Fix code analysis when `--use-color=true` is used. [#10407](https://github.com/microsoft/vscode-cpptools/issues/10407)
* Fix IntelliSense errors with CUDA. [#10455](https://github.com/microsoft/vscode-cpptools/issues/10455)
* Fix random save failures while code analysis is running on the saved file. [#10482](https://github.com/microsoft/vscode-cpptools/issues/10482)
* Fix the compile commands prompt setting `compileCommands` to a `compile_commands.json` in a different workspace folder. [#10588](https://github.com/microsoft/vscode-cpptools/issues/10588)
* Fix code analysis with `_Float16`. [#10610](https://github.com/microsoft/vscode-cpptools/issues/10610)
* Fix code analysis with c23/gnu23. [#10615](https://github.com/microsoft/vscode-cpptools/issues/10615)
* Fix 'Reset IntelliSense Database' being delayed until parsing is finished. [#10616](https://github.com/microsoft/vscode-cpptools/issues/10616)
* Fix uncaught exception with some configuration providers. [#10634](https://github.com/microsoft/vscode-cpptools/issues/10634)
* Fix crashes with a multi-root workspace. [#10636](https://github.com/microsoft/vscode-cpptools/issues/10636)
* Fix bugs with the "You do not have IntelliSense configured" prompt. [#10658](https://github.com/microsoft/vscode-cpptools/issues/10658), [#10659](https://github.com/microsoft/vscode-cpptools/issues/10659)
* Fix random failures when adding or removing workspace folders. [PR #10665](https://github.com/microsoft/vscode-cpptools/pull/10665)
* Fix missing clang-tidy checks setting values. [#10667](https://github.com/microsoft/vscode-cpptools/issues/10667)
* Fix 'Select IntelliSense configuration' so that it works if it's already set in the workspace or workspace folder settings. [#10674](https://github.com/microsoft/vscode-cpptools/issues/10674)
* Fix clang-tidy 'clang-analyzer-' documentation links not working. [#10678](https://github.com/microsoft/vscode-cpptools/issues/10678)
* Fix the browse configuration provider cache not getting cleared. [#10692](https://github.com/microsoft/vscode-cpptools/issues/10692), [#10877](https://github.com/microsoft/vscode-cpptools/issues/10877)
* Fix a crash with recursive environment variables on Windows. [#10704](https://github.com/microsoft/vscode-cpptools/issues/10704)
* Fix `#import` of `.tlb` files failing due to `/Fo` arguments to `cl.exe` not being processed. [#10710](https://github.com/microsoft/vscode-cpptools/issues/10710)
* Fix `cppbuild` tasks not using the workspace folder as the `cwd` by default. [#10742](https://github.com/microsoft/vscode-cpptools/issues/10742)
* Fix lots of IntelliSense processes getting launched after a Find/Replace operation (potentially freezing the OS). [#10743](https://github.com/microsoft/vscode-cpptools/issues/10743)
* Fix workspace folder variable resolution with `clang_format_style`. [#10752](https://github.com/microsoft/vscode-cpptools/issues/10752)
* For remote attach, use an absolute `/bin/sh` path on Linux. [PR #10765](https://github.com/microsoft/vscode-cpptools/pull/10765)
* Fix the first registered configuration provider still being automatically used after a second registers. [PR #10772](https://github.com/microsoft/vscode-cpptools/pull/10772)
* Fix `C_Cpp.default.compilerPath` in the settings UI showing a string editor when it shouldn't. [#10795](https://github.com/microsoft/vscode-cpptools/issues/10795)
* Fix some issues due to usage of the spread operator not doing a deep copy. [PR #10803](https://github.com/microsoft/vscode-cpptools/pull/10803)
* Fix a deadlock with Find All References. [#10855](https://github.com/microsoft/vscode-cpptools/issues/10855)
* Fix the Code Analysis Options dropdown showing 'Resume' instead of 'Pause' after a cancel is done in a paused state. [#10879](https://github.com/microsoft/vscode-cpptools/issues/10879)
* Fix "Code Analysis Mode" not being localized when initially shown. [#10881](https://github.com/microsoft/vscode-cpptools/issues/10881)
* Fix the C/C++-related status bar items flickering off/on when switching documents. [PR #10888](https://github.com/microsoft/vscode-cpptools/pull/10888)
* Fix `__GXX_RTTI` incorrectly being defined by IntelliSense with clang and `-fms-compatibility`.
* Reduce the likelihood of an `onWillSaveWaitUntil` timeout.
* Fix an IntelliSense crash with C++20 concepts.
* Stop querying clang-cl.exe as C.
## Version 1.14.5: March 22, 2023
### Bug Fix
* Fix a deadlock with a multi-root workspace. [#10719](https://github.com/microsoft/vscode-cpptools/issues/10719)
## Version 1.14.4: February 28, 2023
### Enhancements
* Add `c23` and `c2x` support for clang and gcc modes. [#7471](https://github.com/microsoft/vscode-cpptools/issues/7471)
* Filter out clang-tidy `#pragma once in main file` warnings. [#10539](https://github.com/microsoft/vscode-cpptools/issues/10539)
* Auto-configure `configurationProvider` even if `default.compilerPath` is set. [PR #10607](https://github.com/microsoft/vscode-cpptools/pull/10607)
### Bug Fixes
* Fix `--` in args making compiler querying fail. [#10529](https://github.com/microsoft/vscode-cpptools/issues/10529)
* Fix every .C file being opened in a compile_commands.json if it's build for C++. [#10540](https://github.com/microsoft/vscode-cpptools/issues/10540)
* Fix `-std=c++` not being used in compile_commands.json for .C files. [#10541](https://github.com/microsoft/vscode-cpptools/issues/10541)
* Fix a crash when an error occurs in a forced include. [#10598](https://github.com/microsoft/vscode-cpptools/issues/10598)
* Fix the configuration provider browse cache not getting cleared. [PR #10608](https://github.com/microsoft/vscode-cpptools/pull/10608)
* Fix a bug that could cause IntelliSense to randomly stop updating.
* Fix some random failures that could happen during database deletion.
* Fix some random crashes on shutdown.
## Version 1.14.3: February 14, 2023
### New Features
* Add recursive macro expansion on hover. [#3579](https://github.com/microsoft/vscode-cpptools/issues/3579)
* Move status bar items to the language status UI. [#8405](https://github.com/microsoft/vscode-cpptools/issues/8405)
* This may not be enabled for all users unless `C_Cpp.experimentalFeatures` is `true`.
* Add the 'Select Default Compiler' command that lets you choose a default compiler to configure IntelliSense. [#10027](https://github.com/microsoft/vscode-cpptools/issues/10027)
### Enhancements
* Exclude rename results external to the workspace. [#9235](https://github.com/microsoft/vscode-cpptools/issues/9235)
* Add error messages for Create Declaration / Definition. [#10163](https://github.com/microsoft/vscode-cpptools/issues/10163)
* Add support for LLVM-based Intel C/C++ compilers. [#10218](https://github.com/microsoft/vscode-cpptools/issues/10218)
* SSH output improvements. [PR #10292](https://github.com/microsoft/vscode-cpptools/pull/10292)
* Reorder commands in the code action context menu. [#10400](https://github.com/microsoft/vscode-cpptools/issues/10400)
* Add Ada to supported languages for debugging. [#10475](https://github.com/microsoft/vscode-cpptools/issues/10475)
* Anthony Leonardo Gracio (@AnthonyLeonardoGracio) [PR #10476](https://github.com/microsoft/vscode-cpptools/pull/10476)
### Bug Fixes
* Fix usage of relative paths in IntelliSense configuration settings with multi-root workspaces. [#4983](https://github.com/microsoft/vscode-cpptools/issues/4983)
* Fix infinite recursion in scout_parser. [#8898](https://github.com/microsoft/vscode-cpptools/issues/8898)
* Fix an IntelliSense crash with the seqan3 library. [#8956](https://github.com/microsoft/vscode-cpptools/issues/8956)
* Fix looping between C and C++. [#9689](https://github.com/microsoft/vscode-cpptools/issues/9689)
* Fix Doxygen comments for the function signature being autogenerated when typing inside a function. [#9742](https://github.com/microsoft/vscode-cpptools/issues/9742)
* Show a reload prompt after `C_Cpp.hover` is changed. [#10076](https://github.com/microsoft/vscode-cpptools/issues/10076)
* Fix function inlay hints not working with `std::string_literal` arguments. [#10078](https://github.com/microsoft/vscode-cpptools/issues/10078)
* Fix IntelliSense completion for `std::string` with `?:` and `string()`. [#10103](https://github.com/microsoft/vscode-cpptools/issues/10103)
* Fix semantic colorization not working in a certain case. [#10105](https://github.com/microsoft/vscode-cpptools/issues/10105)
* Fix IntelliSense completion not working inside constructor calls that are incomplete. [#10111](https://github.com/microsoft/vscode-cpptools/issues/10111)
* Fix changes to the enclosing type not being taken into account after "Create Declaration / Definition" is used once. [#10162](https://github.com/microsoft/vscode-cpptools/issues/10162)
* Fix "False positive expression must have a constant value with __builtin_choose_expr in _Static_assert". [#10168](https://github.com/microsoft/vscode-cpptools/issues/10168)
* Fix Create Declaration / Definition with an anonymous namespace. [#10189](https://github.com/microsoft/vscode-cpptools/issues/10189)
* Fix file exclusions not being applied to the first directory found for each browse.path entry. [#10205](https://github.com/microsoft/vscode-cpptools/issues/10205)
* Fix IntelliSense mode auto-detection for VS 2015 compiler paths. [#10207](https://github.com/microsoft/vscode-cpptools/issues/10207)
* Fix clang-cl 15 querying with /WX. [#10221](https://github.com/microsoft/vscode-cpptools/issues/10221)
* Fix an incorrect IntelliSense error with `std::bind`, c++17, and windows-msvc-arm64 mode. [#10304](https://github.com/microsoft/vscode-cpptools/issues/10304)
* Fix vcFormat when using lambda functions. [#10326](https://github.com/microsoft/vscode-cpptools/issues/10326)
* Fix IntelliSense crash in field_for_lambda_capture. [#10359](https://github.com/microsoft/vscode-cpptools/issues/10359)
* Fix for cpptools getting shutdown after waking up from sleep. [#10362](https://github.com/microsoft/vscode-cpptools/issues/10362)
* Fix an IntelliSense crash when using the French language pack. [#10374](https://github.com/microsoft/vscode-cpptools/issues/10374)
* Fix the process id picker only showing part of the process on a remote machine. [#10379](https://github.com/microsoft/vscode-cpptools/issues/10379)
* Fix temp files generating at the incorrect path. [#10386](https://github.com/microsoft/vscode-cpptools/issues/10386)
* Fix a crash in extractArgs. [PR #10394](https://github.com/microsoft/vscode-cpptools/pull/10394)
* Fix a bug with settings changes not being handled correctly for multi-root. [PR #10458](https://github.com/microsoft/vscode-cpptools/pull/10458)
## Version 1.13.9: January 4, 2023
### Bug Fix
* Fix clang-format and clang-tidy not working for macOS 11 arm64. [#10282](https://github.com/microsoft/vscode-cpptools/issues/10282)
## Version 1.13.8: December 15, 2022
### Bug Fixes
* Fix tag parser failure on machines with multiple extension users. [#10224](https://github.com/microsoft/vscode-cpptools/issues/10224)
* Fix a `--using_directory` IntelliSense error if LIBPATH is defined with non-msvc IntelliSense modes. [#10249](https://github.com/microsoft/vscode-cpptools/issues/10249)
* Fix a crash when the configuration name is missing. [#10251](https://github.com/microsoft/vscode-cpptools/issues/10251)
## Version 1.13.7: December 8, 2022
### Bug Fix
* Fix `files.associations` not working. [#10244](https://github.com/microsoft/vscode-cpptools/issues/10244)
## Version 1.13.6: December 6, 2022
### New Features
* Add the ability to generate definitions from declarations and vice versa. [#664](https://github.com/microsoft/vscode-cpptools/issues/664)
* Add SSH Target Selector. [PR #9760](https://github.com/microsoft/vscode-cpptools/pull/9760)
* Add rsync support in deploySteps. [PR #9808](https://github.com/microsoft/vscode-cpptools/pull/9808)
### Enhancements
* Add `C_Cpp.caseSensitiveFileSupport` for enabling case sensitive file handling on Windows. [#1994](https://github.com/microsoft/vscode-cpptools/issues/1994)
* Add sections to settings. [#8237](https://github.com/microsoft/vscode-cpptools/issues/8237)
* Make Doxygen hover comments customizable with `C_Cpp.doxygen.sectionTags`. [#8525](https://github.com/microsoft/vscode-cpptools/issues/8525)
* Add better build and debug task handling for when a compiler or debugger doesn't exist. [#8836](https://github.com/microsoft/vscode-cpptools/issues/8836)
* Delay applying `c_cpp_properties.json` changes until after a save. [#9185](https://github.com/microsoft/vscode-cpptools/issues/9185)
* Create directories on Linux/Mac with 755 instead of 777 permissions. [#9670](https://github.com/microsoft/vscode-cpptools/issues/9670)
* Check for MSVC environment variables for configuring IntelliSense. [#9745](https://github.com/microsoft/vscode-cpptools/issues/9745)
* Enable the inlay hint settings to be set per-workspace folder. [#9782](https://github.com/microsoft/vscode-cpptools/issues/9782)
* Add a `C_Cpp.hover` setting to enable disabling hover results. [#9793](https://github.com/microsoft/vscode-cpptools/issues/9793)
* Update to clang-format and clang-tidy 15.0.3. [#9816](https://github.com/microsoft/vscode-cpptools/issues/9816)
* Enable hiding the SSH Targets view with the `C_Cpp.sshTargetsView` setting. [#9836](https://github.com/microsoft/vscode-cpptools/issues/9836)
* Change "Enabled", "Disabled", "Default" settings to camelCase. [PR #9862](https://github.com/microsoft/vscode-cpptools/pull/9862)
* Add support for C++ modules IFC version 0.42. [#9884](https://github.com/microsoft/vscode-cpptools/issues/9884)
* Add SSH terminal for targets. [PR #9895](https://github.com/microsoft/vscode-cpptools/pull/9895)
* Make array settings give a warning for duplicates. [PR #9959](https://github.com/microsoft/vscode-cpptools/pull/9959)
* Add "iar" and "armcc5" problem matchers. [#10054](https://github.com/microsoft/vscode-cpptools/issues/10054)
* Michael (@morsisko) [PR #10085](https://github.com/microsoft/vscode-cpptools/pull/10085), [PR #10101](https://github.com/microsoft/vscode-cpptools/pull/10101)
* Pass `--Wno-error=unknown` to clang-format (12 or newer) to avoid failing on unsupported settings. [#10072](https://github.com/microsoft/vscode-cpptools/issues/10072)
* Add support for `/cygdrive` paths returned by some versions of Cygwin. [#10112](https://github.com/microsoft/vscode-cpptools/issues/10112)
* Switch from RapidJSON to VS's internal JSON parser.
### Bug Fixes
* Fix "final" breaking formatting. [#6638](https://github.com/microsoft/vscode-cpptools/issues/6638)
* Fix incorrect "expected concept name" IntelliSense error. [#6876](https://github.com/microsoft/vscode-cpptools/issues/6876)
* Fix incorrect Outline view with C++20 namespace ::inline syntax. [#7216](https://github.com/microsoft/vscode-cpptools/issues/7216)
* Fix updates to compile_commands.json not being handled if specified using a relative path. [#7610](https://github.com/microsoft/vscode-cpptools/issues/7610)
* Fix variadic macros not expanding correctly. [#8178](https://github.com/microsoft/vscode-cpptools/issues/8178)
* Fix the `editor.parameterHints.enabled` setting not being used when `C_Cpp.autocompleteAddParentheses` is `true`. [#9314](https://github.com/microsoft/vscode-cpptools/issues/9314)
* Fix IntelliSense bug "A result type of `__builtin_choose_expr` that returns a pointer to a function is not correctly inferred in clang mode". [#9368](https://github.com/microsoft/vscode-cpptools/issues/9368)
* Fix some invalid macro redefinition errors. [#9435](https://github.com/microsoft/vscode-cpptools/issues/9435)
* Fix wordexp sometimes getting stuck on Mac (and Linux). [#9688](https://github.com/microsoft/vscode-cpptools/issues/9688)
* Fix ctrl+space completion for Doxygen tags. [#9732](https://github.com/microsoft/vscode-cpptools/issues/9732)
* Fix the position of inlay parameter hints when using at or operator[]. [#9741](https://github.com/microsoft/vscode-cpptools/issues/9741)
* Fix `-std=` being passed to clang-tidy in certain cases . [#9776](https://github.com/microsoft/vscode-cpptools/issues/9776)
* Fix `${workspaceFolder}` not being resolved in `C_Cpp.clang_format_style`. [#9786](https://github.com/microsoft/vscode-cpptools/issues/9786)
* Fix debugger visualization for ArrayItem elements more than 1000. [#9801](https://github.com/microsoft/vscode-cpptools/issues/9801)
* Fix extra comma in the generated the `(gdb) attach` configuration in `launch.json`. [#9818](https://github.com/microsoft/vscode-cpptools/issues/9818)
* Fix IntelliSense crash with range-v3 `ranges::views::addressof`. [#9870](https://github.com/microsoft/vscode-cpptools/issues/9870)
* Fix slow compiler querying. [#9882](https://github.com/microsoft/vscode-cpptools/issues/9882)
* Handle `-fexperimental-library` clang argument. [#9888](https://github.com/microsoft/vscode-cpptools/issues/9888)
* Fix compiler querying with multiple -arch. [#9894](https://github.com/microsoft/vscode-cpptools/issues/9894)
* Fix code analysis errors related to SSE being enabled when gcc is used. [#9898](https://github.com/microsoft/vscode-cpptools/issues/9898)
* Fix issue with parsing SSH configurations that could cause the extension to fail to activate. [#9933](https://github.com/microsoft/vscode-cpptools/pull/9933)
* Fix inlay hints showing "type" for lambdas in certain cases. [#9971](https://github.com/microsoft/vscode-cpptools/issues/9971)
* Resolve variables for `C_Cpp.codeAnalysis.clangTidy.args` and `headerFilter`. [#9981](https://github.com/microsoft/vscode-cpptools/issues/9981), [#9996](https://github.com/microsoft/vscode-cpptools/issues/9996)
* Fix some translations. [#9986](https://github.com/microsoft/vscode-cpptools/issues/9986), [#10011](https://github.com/microsoft/vscode-cpptools/issues/10011), [#10012](https://github.com/microsoft/vscode-cpptools/issues/10012), [#10013](https://github.com/microsoft/vscode-cpptools/issues/10013)
* Fix "Step Over past a logpoint stops at the wrong place". [#9995](https://github.com/microsoft/vscode-cpptools/issues/9995)
* Disable the "Generate Doxygen Comment" context menu when IntelliSense is disabled. [PR #10007](https://github.com/microsoft/vscode-cpptools/pull/10007)
* Fix Doxygen code action from appearing on a function that already has a `*/` comment. [#10009](https://github.com/microsoft/vscode-cpptools/issues/10009)
* Fix clang-tidy and clang-format not working on CentOS7 and other Linux OS's without glibc 2.27 or greater. [#10019](https://github.com/microsoft/vscode-cpptools/issues/10019)
* Fix various bugs with the `C_Cpp.codeAnalysis.clangTidy.headerFilter` setting. [#10023](https://github.com/microsoft/vscode-cpptools/issues/10023)
* Fix Doxygen comment generation when there's a selection. [#10028](https://github.com/microsoft/vscode-cpptools/issues/10028)
* Fix issue that could cause document corruption. [#10035](https://github.com/microsoft/vscode-cpptools/issues/10035)
* Fixed crash on Linux/Mac when a full command line is specified in `compilerPath` containing invalid arguments. [PR #10070](https://github.com/microsoft/vscode-cpptools/pull/10070)
* Fix random "Failed to spawn IntelliSense process: 65520" on Mac. [#10091](https://github.com/microsoft/vscode-cpptools/issues/10091)
* Fix debugger throwing error "stdout maxBuffer exceeded". [10107](https://github.com/microsoft/vscode-cpptools/issues/10107)
* Fix "Can't attach to process on Windows: Unexpected token \ in JSON". [#10108](https://github.com/microsoft/vscode-cpptools/issues/10108)
* Fix "Don't hardcode path to kill in UnixUtilities". [#10124](https://github.com/microsoft/vscode-cpptools/issues/10124)
* Ellie Hermaszewska (@expipiplus1) [PR #1373](https://github.com/microsoft/MIEngine/pull/1373)
* Fix formatting when clang-format 11 or earlier is used (and another issue for version 8 or earlier). [#10178](https://github.com/microsoft/vscode-cpptools/issues/10178)
* Fix "Natvis: are multi-dimensional arrays supported in gdb natvis?". [MIEngine#980](https://github.com/microsoft/MIEngine/issues/980)
* Fix include completion sorting extensionless headers (e.g. string) after headers with an extension (e.g. string.h).
* Fix extensionHost logging an error related to onWillSaveTextDocument whenever a save is done.
* Fix random "Failed to spawn IntelliSense process" on Mac.
* Fix a deadlock when IntelliSense errors are updating.
* Fix redundant rescan when adding a workspace folder.
### Removed Feature
* Removed explicit WSL support in favor of using the WSL extension. [PR #10066](https://github.com/microsoft/vscode-cpptools/pull/10066)
## Version 1.12.4: August 31, 2022
### Other
* Revert changes to telemetry key format. [PR #9822](https://github.com/microsoft/vscode-cpptools/pull/9822)
## Version 1.12.3: August 30, 2022
### New Features
* Add Doxygen comment generation via command, context menu, code action, or typing. [#5683](https://github.com/microsoft/vscode-cpptools/issues/5683)
* Add auto-complete of Doxygen keywords in comments.
### Enhancements
* Add auto-formatting of lines that are changed by code analysis fixes. [#9322](https://github.com/microsoft/vscode-cpptools/issues/9322)
* Add compile arguments to enable colorized output in cppBuild tasks for clang. [#9643](https://github.com/microsoft/vscode-cpptools/issues/9643)
* Cache and reuse SSH passwords in the current remote debugging session. [PR #9654](https://github.com/microsoft/vscode-cpptools/pull/9654)
* Fix "natvis collections only show the first 50 elements". [MIEngine#821](https://github.com/microsoft/MIEngine/issues/821)
* Related [#9377](https://github.com/microsoft/vscode-cpptools/issues/9377)
* Fix "cppdbg doesn't support array view of char* buf". [MIEngine#1258](https://github.com/microsoft/MIEngine/issues/1258)
* Support explicit `this` references in natvis files.
* @Trass3r [PR MIEngine#1163](https://github.com/microsoft/MIEngine/pull/1163)
* Do std fallback when compiler querying, even when explicitly specified via a compiler arg.
### Bug Fixes
* Fix several IntelliSense parsing bugs. [#3683](https://github.com/microsoft/vscode-cpptools/issues/3683), [#6659](https://github.com/microsoft/vscode-cpptools/issues/6659), [#7446](https://github.com/microsoft/vscode-cpptools/issues/7446), [#9215](https://github.com/microsoft/vscode-cpptools/issues/9215)
* Fix crash when tag parsing files containing certain string literals. [#9538](https://github.com/microsoft/vscode-cpptools/issues/9538)
* Fix incorrect semantic tokens with templated operator overloads. [#9556](https://github.com/microsoft/vscode-cpptools/issues/9556)
* Fix `.` to `->` completion in functions defined in the class/struct definition. [#9599](https://github.com/microsoft/vscode-cpptools/issues/9599)
* Fix inlay hint filtering not working with some cases of whitespace. [#9606](https://github.com/microsoft/vscode-cpptools/issues/9606)
* Fix Chinese translation mistakes.
* kouhe3 (@kouhe3) [PR #9624](https://github.com/microsoft/vscode-cpptools/pull/9624)
* Fix IntelliSense error with ARM register declarations. [#9627](https://github.com/microsoft/vscode-cpptools/issues/9627)
* Fix files with a `.c` extension not using a C++ `std` version passed in the `compilerArgs` or `compilerFragments`. [#9628](https://github.com/microsoft/vscode-cpptools/issues/9628)
* Fix unnecessary IntelliSense process restarting on file creation handling. [#9630](https://github.com/microsoft/vscode-cpptools/issues/9630)
* Fix tag parsing of classes and enums with attributes. [#9672](https://github.com/microsoft/vscode-cpptools/issues/9672)
* Add PID to the extended remote process picker. [PR #9673](https://github.com/microsoft/vscode-cpptools/pull/9673)
* Fix tag parser crash. [#9679](https://github.com/microsoft/vscode-cpptools/issues/9679), [#9695](https://github.com/microsoft/vscode-cpptools/issues/9695)
* Fix code analysis fixes generating invalid code when the fix has escaped characters. [#9683](https://github.com/microsoft/vscode-cpptools/issues/9683)
* Fix unintended generation of `nul.d` file when querying clang or gcc, when compiler arguments include dependency generation arguments. [#9707](https://github.com/microsoft/vscode-cpptools/issues/9707)
* Fix code analysis fixes not being available when more than one check is associated with a fix. [#9755](https://github.com/microsoft/vscode-cpptools/issues/9755)
* Fix error when debugging is started without a launch.json and IntelliSense is disabled. [#9762](https://github.com/microsoft/vscode-cpptools/issues/9762)
* Fix "The result of GDB -exec evaluate request in all contexts is printed in debug console." [MIEngine #1236](https://github.com/microsoft/MIEngine/issues/1236)
* Fix "Evaluating a variable after a failed Step Out causes a fatal error, leaving debug session unusable". [MIEngine#1336](https://github.com/microsoft/MIEngine/issues/1336)
* Gareth Rees (@gareth-rees) [PR MIEngine#1337](https://github.com/microsoft/MIEngine/pull/1337)
* Fix deadlock in HandleStackTraceRequestAsync where lock was hold too long.
* GeorgeMay (@JoergMeier106) [PR MIEngine#1309](https://github.com/microsoft/MIEngine/pull/1309)
* Fix potential crashes on shutdown.
## Version 1.11.5: August 9, 2022
### Bug Fixes
* Fix crash when tag parsing files containing certain string literals. [#9538](https://github.com/microsoft/vscode-cpptools/issues/9538)
* Fix `llvm-project` parser crash on file: `clang/test/parser/parser_overflow.c`. [#9653](https://github.com/microsoft/vscode-cpptools/issues/9653)
* Fix `llvm-project` parser crash on file: `libcxx/test/support/test.support/make_string_header.pass.cpp`. [#9679](https://github.com/microsoft/vscode-cpptools/issues/9679)
## Version 1.11.4: July 21, 2022
### New Features
* Add inlay hints for parameters and auto types. [#5845](https://github.com/microsoft/vscode-cpptools/issues/5845)
* Add extended remote support for debugging. [#8497](https://github.com/microsoft/vscode-cpptools/issues/8497), [#9195](https://github.com/microsoft/vscode-cpptools/issues/9195), [#9491](https://github.com/microsoft/vscode-cpptools/discussions/9491), [#9505](https://github.com/microsoft/vscode-cpptools/issues/9505)
### Enhancements
* Add deploySteps and variables to cppdbg. [PR #9418](https://github.com/microsoft/vscode-cpptools/pull/9418)
### Bug Fixes
* Fix "unknown register name" IntelliSense error. [#4382](https://github.com/microsoft/vscode-cpptools/issues/4382)
* Fix performance issue with tag parsing a file with a lot of defines. [#6454](https://github.com/microsoft/vscode-cpptools/issues/6454)
* Fix IntelliSense with gcc vector extension types. [#6890](https://github.com/microsoft/vscode-cpptools/issues/6890)
* Fix doc comments for macros and typedefs. [#8320](https://github.com/microsoft/vscode-cpptools/issues/8320)
* Fix issue with CUDA configuration when using a custom config provider and no config is available for the file. [#8483](https://github.com/microsoft/vscode-cpptools/issues/8483)
* Fix missing logging when `C_Cpp.intelliSenseEngine` is set to `"Disabled"`. [#9277](https://github.com/microsoft/vscode-cpptools/issues/9277)
* Fix doxygen comments not being displayed for multiple adjacent `@brief` or `@return` tags. [#9316](https://github.com/microsoft/vscode-cpptools/issues/9316)
* Fix the code analysis "disable" option not automatically clearing the disabled diagnostics. [#9364](https://github.com/microsoft/vscode-cpptools/issues/9364)
* Fix `-isystem` not being used for system headers with code analysis. [#9366](https://github.com/microsoft/vscode-cpptools/issues/9366)
* Fix compiler querying for EDG-based compilers. [#9410](https://github.com/microsoft/vscode-cpptools/issues/9410)
* Fix hiding IntelliSense dependent commands when `C_Cpp.intelliSenseEngine` is `"Disabled"`. [#9451](https://github.com/microsoft/vscode-cpptools/issues/9451)
* Fix cl.exe build tasks not showing for .c files and .c build tasks being cached for .cpp files (and vice versa). [PR #9544](https://github.com/microsoft/vscode-cpptools/pull/9544)
* Fix code analysis not detecting warnings with relative paths. [#9555](https://github.com/microsoft/vscode-cpptools/issues/9555)
* Fix `--header-filter` being used with clang-tidy when it shouldn't when a .clang-tidy file exists. [#9566](https://github.com/microsoft/vscode-cpptools/issues/9566)
* Fix code analysis giving an error with `__has_include` with gcc 9. [#9575](https://github.com/microsoft/vscode-cpptools/issues/9575)
* Fix `-target` not being processed in `compilerArgs`. [#9586](https://github.com/microsoft/vscode-cpptools/issues/9586)
## Version 1.10.8: July 7, 2022
### Enhancements
* Allow breakpoints for Rust debugging. [PR #9484](https://github.com/microsoft/vscode-cpptools/pull/9484)
* Make `C_Cpp.debugShortcut` settable per-workspace folder. [PR #9514](https://github.com/microsoft/vscode-cpptools/pull/9514)
### Bug Fixes
* Fix crash if clang-tidy returns a replacement with an empty FilePath. [#9437](https://github.com/microsoft/vscode-cpptools/issues/9437)
* Fix skipping the compiler argument after `-c`. [#9453](https://github.com/microsoft/vscode-cpptools/issues/9453)
* Fix `-std:c++20` not being handled with cl.exe. [#9458](https://github.com/microsoft/vscode-cpptools/issues/9458)
* Fix bug with the environment being incorrect when compiler querying. [#9472](https://github.com/microsoft/vscode-cpptools/issues/9472)
* Fix duplicate compiler args in compiler query with custom configuration providers using cpptools-api prior to v6. [#9531](https://github.com/microsoft/vscode-cpptools/issues/9531)
* Fix process launching concurrency issues on Windows.
## Version 1.10.7: June 15, 2022
### Bug Fixes
* Fix bugs with process creation on Windows (which caused IntelliSense to fail). [#9431](https://github.com/microsoft/vscode-cpptools/issues/9431)
## Version 1.10.6: June 14, 2022
### Bug Fixes
* Fix `@responseFile` in `compilerArgs` not being handled on Linux/Mac. [#9434](https://github.com/microsoft/vscode-cpptools/issues/9434)
* Fix debug preLaunchTask not working when `C_Cpp.intelliSenseEngine` is `"Disabled"`. [#9446](https://github.com/microsoft/vscode-cpptools/issues/9446)
* Make the `C_Cpp.legacyCompilerArgsBehavior` setting non-deprecated.
## Version 1.10.5: June 8, 2022
### New Features
* Add code actions to apply clang-tidy fixes (and other actions). [#8476](https://github.com/microsoft/vscode-cpptools/issues/8476)
* Added support for setting values on top level watch window expressions. [#9019](https://github.com/microsoft/vscode-cpptools/issues/9019)
* Make the "Run and Debug" button feature available to all users. [#9306](https://github.com/microsoft/vscode-cpptools/issues/9306)
### Enhancements
* Add `C_Cpp.clangTidy.useBuildPath` setting to enable using `-p` with clang-tidy. [#8740](https://github.com/microsoft/vscode-cpptools/issues/8740), [#8952](https://github.com/microsoft/vscode-cpptools/issues/8952)
* Generate launch.json when adding a new debug configuration. [#9100](https://github.com/microsoft/vscode-cpptools/issues/9100)
* Prioritize the "folder" option when doing a `#include` completion. [#9222](https://github.com/microsoft/vscode-cpptools/issues/9222)
* Add compiler path to debug configuration details. [PR #9264](https://github.com/microsoft/vscode-cpptools/pull/9264)
* Update the bundled clang-format and clang-tidy to version 14.0.0.
### Bug Fixes
* Fix 'System.NullReferenceException when continuing after adding breakpoint.' [#1297](https://github.com/microsoft/MIEngine/issues/1297)
* Fix completion not working in `#define` definitions and in definition names when manually invoked. [#4662](https://github.com/microsoft/vscode-cpptools/issues/4662), [#8973](https://github.com/microsoft/vscode-cpptools/issues/8973), [#9078](https://github.com/microsoft/vscode-cpptools/issues/9078)
* Fix several IntelliSense bugs. [#6226](https://github.com/microsoft/vscode-cpptools/issues/6226), [#8294](https://github.com/microsoft/vscode-cpptools/issues/8294), [#8530](https://github.com/microsoft/vscode-cpptools/issues/8530), [#8725](https://github.com/microsoft/vscode-cpptools/issues/8725), [#8751](https://github.com/microsoft/vscode-cpptools/issues/8751), [#9076](https://github.com/microsoft/vscode-cpptools/issues/9076), [#9224](https://github.com/microsoft/vscode-cpptools/issues/9224), [#9336](https://github.com/microsoft/vscode-cpptools/issues/9336).
* Fix issue with shell processing incorrectly occurring for `arguments` fields in `compile_commands.json` files. [#8649](https://github.com/microsoft/vscode-cpptools/issues/8649)
* Fix handling of `@response` files for clang-tidy on Windows. [#8843](https://github.com/microsoft/vscode-cpptools/issues/8843), [#9032](https://github.com/microsoft/vscode-cpptools/issues/9032), [#9102](https://github.com/microsoft/vscode-cpptools/issues/9102)
* Fix issue with inconsistent handling of shell escaping in compiler arg fields. All compiler arg array fields are now assumed to not include shell quoting, escaping or shell variables. Added a `C_Cpp.legacyCompilerArgsBehavior` to restore the legacy behavior. [#8963](https://github.com/microsoft/vscode-cpptools/issues/8963)
* Add localized strings for build tasks. [#9051](https://github.com/microsoft/vscode-cpptools/issues/9051)
* Fix Go to Definition with C for identifiers that are C++ keywords. [#9081](https://github.com/microsoft/vscode-cpptools/issues/9081)
* Fix the new Run/Debug Code button not working with a modified program location. [#9082](https://github.com/microsoft/vscode-cpptools/issues/9082)
* Fix `__GNUC__` system defines causing clang-tidy to undefine `_Float32`. [#9091](https://github.com/microsoft/vscode-cpptools/issues/9091)
* Fix 'breakpoints set before launch in shared objects cannot be disabled/deleted' [#9095](https://github.com/microsoft/vscode-cpptools/issues/9095)
* Fix compiler querying failing for compilers that don't output system includes. [#9099](https://github.com/microsoft/vscode-cpptools/issues/9099)
* Fix completion occurring (when it shouldn't) after the comma in a definition list. [#9101](https://github.com/microsoft/vscode-cpptools/issues/9101)
* Fix `;` incorrectly matching for `break;` and `continue;` completion. [#9115](https://github.com/microsoft/vscode-cpptools/issues/9115)
* Fix Go to Definition on a `#include` with an absolute path. [#9287](https://github.com/microsoft/vscode-cpptools/issues/9287)
* Fix formatting issue with vcFormat when using multi-byte UTF-8 sequences. [#9297](https://github.com/microsoft/vscode-cpptools/issues/9297)
* Fix language server disabling due to a TypeError when invalid json values are used. [#9302](https://github.com/microsoft/vscode-cpptools/issues/9302)
* Add support for "user" level and "workspace" level debug configurations. [#9319](https://github.com/microsoft/vscode-cpptools/issues/9319)
* Prevent language service activation for macOS older than 10.12. [PR #9328](https://github.com/microsoft/vscode-cpptools/pull/9328)
* Fix code analysis with g++ 12 system headers. [#9347](https://github.com/microsoft/vscode-cpptools/issues/9347)
* Enable correct symbol parsing for methods that call loop-like macros without requiring the macro be added to cpp.hint. [#9378](https://github.com/microsoft/vscode-cpptools/issues/9378)
* Fix a code analysis error when C++23 is used. [#9404](https://github.com/microsoft/vscode-cpptools/issues/9404)
* Fix a potential crash in cpptools (in `get_identifier_at_offset`).
* Other Run and Debug button updates/fixes.
## Version 1.9.8: April 20, 2022
### Bug Fixes
* Fix an issue with extension activation failing if `C_Cpp.intelliSenseEngine` was set to `Disabled`. [#9083](https://github.com/microsoft/vscode-cpptools/issues/9083)
## Version 1.9.7: March 23, 2022
### New Features
* Add debugger support for Apple M1 (osx-arm64). [#7035](https://github.com/microsoft/vscode-cpptools/issues/7035)
* Resolves issue "[Big Sur M1] ERROR: Unable to start debugging. Unexpected LLDB output from command "-exec-run". process exited with status -1 (attach failed ((os/kern) invalid argument))". [#6779](https://github.com/microsoft/vscode-cpptools/issues/6779)
* Add a build and debug button when `C_Cpp.debugShortcut` is `true`. [#7497](https://github.com/microsoft/vscode-cpptools/issues/7497)
* The "Build and Debug Active File" command has been split into "Debug C++ File" and "Run C++ File", and it has been removed from the context menu.
* Add Alpine Linux arm64 support (VSIX).
* Add x64 debugger for CppVsdbg on Windows x64.
### Enhancements
* Reserved identifiers with characters that match typed characters in the correct order but not contiguously are initially filtered in the auto-completion list. Doing a `ctrl` + `space` in the same location will show all auto-complete suggestions. [#4939](https://github.com/microsoft/vscode-cpptools/issues/4939)
* Add `dotConfig` property to IntelliSense Configuration (c_cpp_properties.json) to use .config file created by Kconfig system.
* Matheus Castello (@microhobby) [PR #7845](https://github.com/microsoft/vscode-cpptools/pull/7845)
* Rework how cancelation is processed for semantic tokens and folding operations. [PR #8739](https://github.com/microsoft/vscode-cpptools/pull/8739)
* Make SwitchHeaderSource use the `workbench.editor.revealIfOpen` setting.
* Joel Smith (@joelmsmith) [PR #8857](https://github.com/microsoft/vscode-cpptools/pull/8857)
* Add tag parser error logging. [#8907](https://github.com/microsoft/vscode-cpptools/issues/8907)
* Add error and warning messages if the VSIX for an incompatible or mismatching platform or architecture is installed. [#8908](https://github.com/microsoft/vscode-cpptools/issues/8908)
* Add a "More Info" option when an incompatible VSIX is encountered. [PR #8920](https://github.com/microsoft/vscode-cpptools/pull/8920)
* Add `;` to `break` and `continue` completion keywords. [#8932](https://github.com/microsoft/vscode-cpptools/issues/8932)
* Prevent stripping of format specifiers from -exec commands.
* Gareth Rees (@gareth-rees) [PR MIEngine#1277](https://github.com/microsoft/MIEngine/pull/1278)
* Improve messages for unknown breakpoints and watchpoints.
* Gareth Rees (@gareth-rees) [PR MIEngine#1282](https://github.com/microsoft/MIEngine/pull/1283)
### Bug Fixes
* Fix some IntelliSense parsing bugs. [#5117](https://github.com/microsoft/vscode-cpptools/issues/5117)
* Fix IntelliSense process crashes caused by a stack overflow on Mac. [#7215](https://github.com/microsoft/vscode-cpptools/issues/7215), [#8653](https://github.com/microsoft/vscode-cpptools/issues/8653)
* Fix exclusions not applying during tag parsing of non-recursive dependent includes. [#8702](https://github.com/microsoft/vscode-cpptools/issues/8702)
* Fix issue that could cause an infinite loop when clicking on a preprocessor conditional directive. [#8717](https://github.com/microsoft/vscode-cpptools/issues/8717)
* Fix excludes applying to cases it should not when running code analysis. [#8724](https://github.com/microsoft/vscode-cpptools/issues/8724)
* Fix a crash when visualizing local variables for Microsoft Edge (msedge.exe) [#8738](https://github.com/microsoft/vscode-cpptools/issues/8738)
* Fix some system defines being incorrectly removed when running code analysis. [#8740](https://github.com/microsoft/vscode-cpptools/issues/8740)
* Prevent an error from being logged due to custom configuration processing prior to the provider being ready. [#8752](https://github.com/microsoft/vscode-cpptools/issues/8752)
* Fix incorrect crash recovery with multi-root. [#8762](https://github.com/microsoft/vscode-cpptools/issues/8762)
* Fix random compiler query, clang-tidy, or clang-format failure on Windows. [#8764](https://github.com/microsoft/vscode-cpptools/issues/8764)
* Fix invoking commands before cpptools is activated. [#8785](https://github.com/microsoft/vscode-cpptools/issues/8785)
* Fix a bug on Windows with semantic tokens updating. [#8799](https://github.com/microsoft/vscode-cpptools/issues/8799)
* Fix tag parser failure due to missing DLL dependencies on Windows. [#8851](https://github.com/microsoft/vscode-cpptools/issues/8851)
* Fix semantic tokens getting cleared for all other files in a TU after editing a file. [#8867](https://github.com/microsoft/vscode-cpptools/issues/8867)
* Fix a bug and typos with cppbuild task providers.
* InLAnn (@inlann) [PR #8897](https://github.com/microsoft/vscode-cpptools/pull/8897)
* Fix an issue that could cause the extension to fail to start up properly. [PR #8906](https://github.com/microsoft/vscode-cpptools/pull/8906)
* Fix handling of `-B` with compiler querying. [#8962](https://github.com/microsoft/vscode-cpptools/issues/8962)
* Fix incorrect "Running clang-tidy" status indications with multi-root workspaces. [#8964](https://github.com/microsoft/vscode-cpptools/issues/8964)
* Fix a crash during shutdown and potential database resetting due to shutdown being aborted too soon. [PR #8969](https://github.com/microsoft/vscode-cpptools/pull/8969)
* Fix an issue that could cause the active file to not be configured by a configuration provider when custom configurations are reset. [#8974](https://github.com/microsoft/vscode-cpptools/issues/8974)
* Fix detection of Visual Studio 2015. [#8975](https://github.com/microsoft/vscode-cpptools/issues/8975)
* Fix mingw clang being detected as gcc. [#9024](https://github.com/microsoft/vscode-cpptools/issues/9024)
* Fix a random crash on file open.
* Fix some IntelliSense crashes.
* Fix some IntelliSense parsing bugs.
* Fix a bug with IntelliSense updating not working if a file was closed and reopened while its TU was processing an update.
* Fix a potential heap corruption when `files.associations` are changed.
* Update translated text.
### Documentation
* Clarify how to get binaries when debugging the source from GitHub.
* Hamir Mahal (@hamirmahal) [PR #8788](https://github.com/microsoft/vscode-cpptools/pull/8788)
## Version 1.8.4: February 7, 2022
### Bug Fixes
* Suppress incorrect warnings on ARM64 macOS. [#8756](https://github.com/microsoft/vscode-cpptools/issues/8756)
* Fix debugger regressions. [#8760](https://github.com/microsoft/vscode-cpptools/issues/8760)
* Remove `Offline Installation` section from README.md. [#8769](https://github.com/microsoft/vscode-cpptools/pull/8769)
* Fix performance issue with loading large PDBs. [#8775](https://github.com/microsoft/vscode-cpptools/issues/8775)
## Version 1.8.2: January 31, 2022
### New Features
* Add data breakpoints (memory read/write interrupts) with `gdb` debugging. [#1410](https://github.com/microsoft/vscode-cpptools/issues/1410)
* Add "All Exceptions" Breakpoint for cppdbg [#1800](https://github.com/microsoft/vscode-cpptools/issues/1800)
* Add multi-threaded code analysis (using `clang-tidy`) based on the IntelliSense configuration. It defaults to using up to half the cores, but it can be changed via the `C_Cpp.codeAnalysis.maxConcurrentThreads` setting. [#2908](https://github.com/microsoft/vscode-cpptools/issues/2908)
* Add support for Alpine Linux [#4827](https://github.com/microsoft/vscode-cpptools/issues/4827)
* Implement platform-specific VSIX's via the marketplace. [#8152](https://github.com/microsoft/vscode-cpptools/issues/8152)
### Enhancements
* The maximum number of threads to use for Find All References can be configured with the `C_Cpp.references.maxConcurrentThreads` settings. [#4036](https://github.com/microsoft/vscode-cpptools/issues/4036)
* The IntelliSense processes launched to confirm references during Find All References can be cached via the `C_Cpp.references.maxCachedProcesses` setting. [#4038](https://github.com/microsoft/vscode-cpptools/issues/4038)
* The maximum number of IntelliSense processes can be configured with the `C_Cpp.intelliSense.maxCachedProcesses` setting, and the number of processes will automatically decrease when the free memory becomes < 256 MB and it can be configured to use less memory via the `maxMemory` settings (memory usage from code analysis is not handled yet). [#4811](https://github.com/microsoft/vscode-cpptools/issues/4811)
* Switch from 32-bit to 64-bit binaries on 64-bit Windows. [#7230](https://github.com/microsoft/vscode-cpptools/issues/7230)
* Add a compiler arg to the generated gcc build task to display colored text. [PR #8165](https://github.com/microsoft/vscode-cpptools/pull/8165)
* Add `static` and other modifiers to IntelliSense hover results. [#8173](https://github.com/microsoft/vscode-cpptools/issues/8173)
* Add a configuration warning when the default compiler modifies an explicitly set `intelliSenseMode`.
### Bug Fixes
* Fix several IntelliSense bugs. [#5704](https://github.com/microsoft/vscode-cpptools/issues/5704), [#6759](https://github.com/microsoft/vscode-cpptools/issues/6759), [#8412](https://github.com/microsoft/vscode-cpptools/issues/8412), [#8434](https://github.com/microsoft/vscode-cpptools/issues/8434)
* Fix newlines not being handled in comments with a Doxygen tag. [#5741](https://github.com/microsoft/vscode-cpptools/issues/5741)
* Fix Doxygen comments with `\0` being truncated. [#6084](https://github.com/microsoft/vscode-cpptools/issues/6084)
* Fix `files.exclude` not working for directories external to the active workspace folder. [#6877](https://github.com/microsoft/vscode-cpptools/issues/6877)
* Fix [MSYS2 GDB 10.2] gdb: ERROR: Unable to start debugging. Unexpected GDB output from command "-exec-run". Error creating process [#7706](https://github.com/microsoft/vscode-cpptools/issues/7706)
* Fix a bug with vcFormat inserting additional spaces between `}` and `else`. [#7731](https://github.com/microsoft/vscode-cpptools/issues/7731)
* Fix GCC system include processing on Windows. [#8112](https://github.com/microsoft/vscode-cpptools/issues/8112), [#8496](https://github.com/microsoft/vscode-cpptools/issues/8496)
* Remove redundant cl.exe from the build and debug active file configuration list. [#8168](https://github.com/microsoft/vscode-cpptools/issues/8168)
* Fix string elements to render as code in the IntelliSense configuration UI. [PR #8271](https://github.com/microsoft/vscode-cpptools/pull/8271)
* Fix IntelliSense process crash on AMD Ryzen 3000 series processors without updated drivers. [#8312](https://github.com/microsoft/vscode-cpptools/issues/8312)
* Fix bug with `wmic` not being recognized during Windows attach debugging. [#8328](https://github.com/microsoft/vscode-cpptools/issues/8328)
* Fix Go to Type Definition on pointer types. [#8337](https://github.com/microsoft/vscode-cpptools/issues/8337)
* Fix a "Cannot read property" error during deactivation if the language service wasn't fully activated. [#8354](https://github.com/microsoft/vscode-cpptools/issues/8354)
* Fix an issue in which the language id for header files were not updated to match the source file of its TU. [#8381](https://github.com/microsoft/vscode-cpptools/issues/8381)
* Fix parsing of `bit_cast` with gcc mode IntelliSense. [#8434](https://github.com/microsoft/vscode-cpptools/issues/8434)
* Fix the tag parser getting stuck on certain code. [#8459](https://github.com/microsoft/vscode-cpptools/issues/8459)
* Fix an invalid success message when a build task fails. [#8467](https://github.com/microsoft/vscode-cpptools/issues/8467)
* Fix compiler querying with certain Cygwin/MSYS2 compilers on Windows. [#8496](https://github.com/microsoft/vscode-cpptools/issues/8496)
* Fix a bug with conditional breakpoints. [#8515](https://github.com/microsoft/vscode-cpptools/issues/8515)
* Fix non-ASCII output with `cppbuild` tasks. [#8518](https://github.com/microsoft/vscode-cpptools/issues/8518)
* Fix 3 settings not getting environment variables resolved after a settings change. [#8531](https://github.com/microsoft/vscode-cpptools/issues/8531)
* Don't block running a task if it doesn't use the active file. [#8586](https://github.com/microsoft/vscode-cpptools/issues/8586)
* Fix a command not found error message after clicking the database status icon when commands aren't available. [#8599](https://github.com/microsoft/vscode-cpptools/issues/8599)
* Fix /RTC compiler checks failures don't break into debugger [#8646](https://github.com/microsoft/vscode-cpptools/issues/8646)
* Fix workspace rescanning (tag parsing) not automatically happening after c/cpp associations are added to `files.associations`. [#8687](https://github.com/microsoft/vscode-cpptools/issues/8687)
* Fix debugging when Windows binaries are linked with /PDBPageSize > 4k. [#8690](https://github.com/microsoft/vscode-cpptools/issues/8690)
* Switch usage of `-dD` to `-dM` when compiler querying. [#8692](https://github.com/microsoft/vscode-cpptools/issues/8692)
* Fix breakpoints with msys2 gcc. [#8696](https://github.com/microsoft/vscode-cpptools/issues/8696)
* Fix no document symbols appearing in certain cases. [#8726](https://github.com/microsoft/vscode-cpptools/issues/8726)
* Fix an issue in which multiple (potentially different) diagnostics were delivered for headers shared by multiple TUs.
* Fix some translations.
### Other
* Remove trailing whitespaces in source code.
* Alexander (@Gordon01) [PR #8254](https://github.com/microsoft/vscode-cpptools/pull/8254)
## Version 1.7.1: October 19, 2021
### Bug Fixes
* Fix an extension crash that occurred on activation while a workspace is open with no folders in it. [#8280](https://github.com/microsoft/vscode-cpptools/issues/8280)
* Fix an issue in which configuration defaults were not properly applied. [#8298](https://github.com/microsoft/vscode-cpptools/pull/8298)
## Version 1.7.0: October 13, 2021
### New Features
* Add a command to restart IntelliSense for a specific file. [#3727](https://github.com/microsoft/vscode-cpptools/issues/3727)
* Add support for macOS app bundles [#6726](https://github.com/microsoft/vscode-cpptools/issues/6726)
* [PR MIEngine#1091](https://github.com/microsoft/MIEngine/pull/1091)
* Add support for Go To / Peek Type Definition. [#7999](https://github.com/microsoft/vscode-cpptools/issues/7999)
### Enhancements
* Detect IntelliSenseMode target architecture for `cl.exe` based on its path. [#8044](https://github.com/microsoft/vscode-cpptools/issues/8044)
* In generated build tasks, add a compiler arg to cause color to be displayed in gcc/clang output in terminal. [PR #8165](https://github.com/microsoft/vscode-cpptools/pull/8165)
* Add new configuration `mergeConfigurations` that enables include paths, defines, and forced includes from c_cpp_properties.json to be merged with those provided by a configuration provider.
* Thomas Willson (@willson556) [PR #8174](https://github.com/microsoft/vscode-cpptools/pull/8174)
### Bug Fixes
* Fix an issue with signature help for overloaded constructors. [#1664](https://github.com/microsoft/vscode-cpptools/issues/1664)
* Add markdown to settings descriptions. [#4544](https://github.com/microsoft/vscode-cpptools/issues/4544)
* Fix an IntelliSense process crash. [#5584](https://github.com/microsoft/vscode-cpptools/issues/5548), [#8110](https://github.com/microsoft/vscode-cpptools/issues/8110)
* Fix an issue with incorrect E0513 and E0167 IntelliSense errors. [#6338](https://github.com/microsoft/vscode-cpptools/issues/6338)
* Fix issue with IntelliSense for anonymous members. [#6412](https://github.com/microsoft/vscode-cpptools/issues/6412)
* Fix an issue with incorrect "no suitable user-defined conversion" errors. [#6721](https://github.com/microsoft/vscode-cpptools/issues/6721)
* Fix some issues with punctuation in setting descriptions. [#6870](https://github.com/microsoft/vscode-cpptools/issues/6870)
* Add descriptions for setting enum values. [#7358](https://github.com/microsoft/vscode-cpptools/issues/7358)
* Add support for `${execPath}` and `${pathSeparator}` in `c_cpp_properties.json`. [#7753](https://github.com/microsoft/vscode-cpptools/issues/7753)
* Move the scope of document symbols from the name (on the left) to the details (on the right). [#7785](https://github.com/microsoft/vscode-cpptools/issues/7785)
* Fix an issue with config validation of Force Include values. [#7822](https://github.com/microsoft/vscode-cpptools/issues/7822)
* Fix an issue related to arg parsing in build tasks. [#7891](https://github.com/microsoft/vscode-cpptools/issues/7891)
* Add a check when cppbuild task is used when the active file is not a source file. [#7892](https://github.com/microsoft/vscode-cpptools/issues/7892)
* Fix a cpptools crash [#8055](https://github.com/microsoft/vscode-cpptools/issues/8055)
* Fix issue "LogPoint stopped working v1.6.0". [#8065](https://github.com/microsoft/vscode-cpptools/issues/8065)
* [PR MIEngine#1208](https://github.com/microsoft/MIEngine/pull/1208)
* Fix issue "Debugger won't read/write from/to stdio". [#8075](https://github.com/microsoft/vscode-cpptools/issues/8075)
* [PR MIEngine#1209](https://github.com/microsoft/MIEngine/pull/1209)
* Fix an issue with VC 14.0 headers not being found. [#8078](https://github.com/microsoft/vscode-cpptools/issues/8078)
* Fix an issue with CUDA support with `compile_commands.json`. [#8091](https://github.com/microsoft/vscode-cpptools/issues/8091)
* Fix an issue with `/kernel` arg to `cl.exe` for C files. [#8158](https://github.com/microsoft/vscode-cpptools/issues/8158)
* Fix an issue where inactive regions no longer dimmed after switching between open files. [#8206](https://github.com/microsoft/vscode-cpptools/issues/8206)
## Version 1.6.0: August 24, 2021
### New Features
* Added support for standard `.editorconfig` entries when using vcFormat. [#7920](https://github.com/microsoft/vscode-cpptools/issues/7920)
* Debug Step Granularity for cppdbg [PR MIEngine#1169](https://github.com/microsoft/MIEngine/pull/1169)
* Thank you for the contribution @Trass3r
* InstructionBreakpoints for cppdbg [PR MIEgnine#1192](https://github.com/microsoft/MIEngine/pull/1192)
### Enhancements
* Debugger now runs on .NET 5 [#7858](https://github.com/microsoft/vscode-cpptools/pull/7858)
* When using the `Default` setting for `C_Cpp.formatting`, vcFormat will now be selected if a `.editorconfig` file is found with vcFormat entries and no `.clang-format` file was found with nearer proximity to the source file. [#7929](https://github.com/microsoft/vscode-cpptools/issues/7929)
### Bug Fixes
* Fix incorrect sizeof for packed structs (gcc/clang) [#5267](https://github.com/microsoft/vscode-cpptools/issues/5267)
* Fix designated initializers not working at file scope. [#6316](https://github.com/microsoft/vscode-cpptools/issues/6316)
* Fix an IntelliSense crash on template code. [#7349](https://github.com/microsoft/vscode-cpptools/issues/7349)
* Rank existence of a custom configuration higher than filename similarity and path proximity, when choosing a TU source for a header [#7396](https://github.com/microsoft/vscode-cpptools/issues/7396)
* Fix an IntelliSense crash when the display language is set to Italian. [#7685](https://github.com/microsoft/vscode-cpptools/issues/7685)
* Enable the C++ status bar items to be selectively disabled. [#7700](https://github.com/microsoft/vscode-cpptools/issues/7700)
* Fix an issue causing incorrect color selection for semantic tokens. [#7773](https://github.com/microsoft/vscode-cpptools/issues/7773)
* Fix some cl.exe and clang installations not being detected. [#7767](https://github.com/microsoft/vscode-cpptools/issues/7767) [#7795](https://github.com/microsoft/vscode-cpptools/issues/7795) [#7800](https://github.com/microsoft/vscode-cpptools/issues/7800)
* Fix an issue with recursive includes not found. [#7783](https://github.com/microsoft/vscode-cpptools/issues/7783)
* Fix an issue with code folding of single-line blocks. [#7809](https://github.com/microsoft/vscode-cpptools/issues/7809)
* Fix a typo in a localized string. [#7823](https://github.com/microsoft/vscode-cpptools/issues/7823)
* Add open file parsing status when hovering over the database icon. [PR #7831](https://github.com/microsoft/vscode-cpptools/pull/7831)
* Fix an issue with IntelliSense flame icon getting stuck on. [#7838](https://github.com/microsoft/vscode-cpptools/issues/7838)
* Fix an issue with character position after include completion. [#7856](https://github.com/microsoft/vscode-cpptools/issues/7856)
* Fix wrong version of clang-format being used in multi-root workspaces. [#7870](https://github.com/microsoft/vscode-cpptools/issues/7870)
* Fix issue with setting of MS extensions when `-fms-extensions` is used. [#7886](https://github.com/microsoft/vscode-cpptools/issues/7886)
* Fix an issue with support detection on Android. [#7906](https://github.com/microsoft/vscode-cpptools/issues/7906)
* Fix a bug with handling of `"C_Cpp.vcFormat.newLine.beforeOpenBrace.block": "newLine"`. [#7926](https://github.com/microsoft/vscode-cpptools/issues/7926)
* Fix Disassembly view is blank on linux [#7960](https://github.com/microsoft/vscode-cpptools/issues/7960)
* Fix an issue with cppdbg debugging on Windows x64. [#7971](https://github.com/microsoft/vscode-cpptools/issues/7971)
* Fix an issue with VS `<execution>` header causing IntelliSense process crash. [#7972](https://github.com/microsoft/vscode-cpptools/issues/7972)
* Fix insiders update install loop for remote scenarios. [#8000](https://github.com/microsoft/vscode-cpptools/issues/8000)
* Fix macOS unable to use external terminal to debug [#8008](https://github.com/microsoft/vscode-cpptools/issues/8008)
## Version 1.5.1: July 9, 2021
### Bug Fixes
* cppvsdbg Debugging becomes no-op between 1.4.1 and 1.5.0 [#7808](https://github.com/microsoft/vscode-cpptools/issues/7808)
## Version 1.5.0: July 8, 2021
### New Feature
* Add the "Inline macro" code action. [#4183](https://github.com/microsoft/vscode-cpptools/issues/4183)
* Add a Windows ARM64 debugger. [PR #7798](https://github.com/microsoft/vscode-cpptools/pull/7798)
### Enhancements
* Add auto-detection of clang compilers on Windows (and different versions of cl.exe). [#6718](https://github.com/microsoft/vscode-cpptools/issues/6718)
* Stop adding .cu files to `files.associations` (switch to using setTextDocumentLanguage). [#7359](https://github.com/microsoft/vscode-cpptools/issues/7359)
* Add "Symbol Options" for CppVsdbg to configure symbol settings [PR #7680](https://github.com/microsoft/vscode-cpptools/pull/7680)
* Update CppVsdbg to use newer CppEE and msdia.
### Bug Fixes
* Fix switch header/source not checking `files.exclude`. [#4429](https://github.com/microsoft/vscode-cpptools/issues/4429)
* Fix code folding causing `} else if` lines to be hidden. [#5521](https://github.com/microsoft/vscode-cpptools/issues/5521)
* Add abort handling to recursive includes directory iteration. [#6461](https://github.com/microsoft/vscode-cpptools/issues/6461)
* Fix include completion with recursive includes in header files. [#6842](https://github.com/microsoft/vscode-cpptools/issues/6842)
* Add the get-task-allow entitlement to macOS binaries to enable call stacks to be obtained when SIP is enabled. [#7412](https://github.com/microsoft/vscode-cpptools/issues/7412)
* Fix Find All References reporting certain references in headers as inactive. [#7609](https://github.com/microsoft/vscode-cpptools/issues/7609)
* Fix IntelliSense process crash and tag parser failure with columns > 65535. [#7621](https://github.com/microsoft/vscode-cpptools/issues/7621)
* Fix incorrect localization translations.
* jogo- (@jogo-) [PR #7625](https://github.com/microsoft/vscode-cpptools/pull/7625)
* Fix `autocompleteAddParentheses` for some template argument deduction cases. [#7626](https://github.com/microsoft/vscode-cpptools/issues/7626)
* Fix some incorrect IntelliSense errors. [#6639](https://github.com/microsoft/vscode-cpptools/issues/6639), [#7630](https://github.com/microsoft/vscode-cpptools/issues/7630)
* Change references of "OS X" to "macOS".
* Tyler Davis (@TylerADavis) [PR #7636](https://github.com/microsoft/vscode-cpptools/pull/7636)
* Prevent the root path from being added to the `browse.path`. [#7648](https://github.com/microsoft/vscode-cpptools/issues/7648)
* Fix a configuration squiggle when `${workspaceFolder}` is used with `compilerPath`. [#7649](https://github.com/microsoft/vscode-cpptools/issues/7649)
* Fix an issue causing editorConfig not to be used or cached. [PR #7666](https://github.com/microsoft/vscode-cpptools/pull/7666)
* Fix document symbols nesting with templates. [#7673](https://github.com/microsoft/vscode-cpptools/issues/7673)
* Fix include paths not being found when the paths start with /D or /I. [#7701](https://github.com/microsoft/vscode-cpptools/issues/7701), [#7757](https://github.com/microsoft/vscode-cpptools/issues/7756)
* Fix Find All References on a global variable giving incorrect references to local variables. [#7702](https://github.com/microsoft/vscode-cpptools/issues/7702)
* Fix `vcFormat` not working near the end of the file with UTF-8 characters > 1 byte. [#7704](https://github.com/microsoft/vscode-cpptools/issues/7704)
* Fix a configuration squiggle for a recursively resolved `forcedInclude`. [PR #7722](https://github.com/microsoft/vscode-cpptools/pull/7722)
* Fix `Build and Debug Active File` for certain file extensions (.cu, .cp, etc.).
* jogo- (@jogo-) [PR #7726](https://github.com/microsoft/vscode-cpptools/pull/7726)
* Fix `browse.path` being incorrect if an invalid `compileCommands` is set. [#7737](https://github.com/microsoft/vscode-cpptools/issues/7737)
* Fix an incorrect error message when `C_Cpp.errorSquiggles` is `"Enabled"`. [#7744](https://github.com/microsoft/vscode-cpptools/issues/7744)
* Fix compiler querying sometimes not working with Cygwin. [#7751](https://github.com/microsoft/vscode-cpptools/issues/7751)
* Fix a duplicate IntelliSense update when a new C/C++ file is opened and after switching from a non-C/C++ file and back.
* Fix a potential IntelliSense process crash on shutdown.
## Version 1.4.1: June 8, 2021
### Bug Fixes
* Fix the configuration UI sometimes not populating initially with VS Code 1.56 or later. [#7641](https://github.com/microsoft/vscode-cpptools/issues/7641)
## Version 1.4.0: May 27, 2021
### New Features
* Add a C++ walkthrough to the "Getting Started" page. [#7273](https://github.com/microsoft/vscode-cpptools/issues/7273)
* Note: VS Code may only make this available to a subset of users while they continue working on the feature.
### Enhancements
* Update to clang-format 12. [#6434](https://github.com/microsoft/vscode-cpptools/issues/6434)
* Add `private` or `protected` scope labels to class symbols. [#7120](https://github.com/microsoft/vscode-cpptools/issues/7120)
* Fix file:line path for $FILEPOS [#7193](https://github.com/microsoft/vscode-cpptools/issues/7193)
* [PR MIEngine#1124](https://github.com/microsoft/MIEngine/pull/1124)
* Add `stopAtConnect` and `hardwareBreakpoints` launch options [PR #7449](https://github.com/microsoft/vscode-cpptools/pull/7449)
* `stopAtConnect` stops the debugger on connection to a remote target [PR MIEngine#1109](https://github.com/microsoft/MIEngine/pull/1109)
* `hardwareBreakpoints` controls usage and number of remote hardware breakpoints [PR MIEngine#1128](https://github.com/microsoft/MIEngine/pull/1128)
* Add support for loading Concord extensions to the cppvsdbg debug adapter (see [documentation](https://github.com/microsoft/ConcordExtensibilitySamples/wiki/Support-for-VS-Code-cppvsdbg-Scenarios) for more information)
* Add support for exception conditions to cppvsdbg (see [documentation](https://aka.ms/VSCode-Cpp-ExceptionSettings) for more information)
### Bug Fixes
* Fix an incorrect IntelliSense error with object initialization. [#3212](https://github.com/microsoft/vscode-cpptools/issues/3212)
* Fix IntelliSense errors with designated initializers. [#3491](https://github.com/microsoft/vscode-cpptools/issues/3491), [#5500](https://github.com/microsoft/vscode-cpptools/issues/5550)
* Fix IntelliSense configuration with cl.exe compiler args `/external:I`, `/Zc:preprocessor`, and others. [#4980](https://github.com/microsoft/vscode-cpptools/issues/4980), [#6531](https://github.com/microsoft/vscode-cpptools/issues/6531), [#7259](https://github.com/microsoft/vscode-cpptools/issues/7259)
* Switch to showing no document symbols instead of random symbols for `files.exclude`'d documents. [#5142](https://github.com/microsoft/vscode-cpptools/issues/5142)
* Fix macros getting undefined when duplicate `#include` are used. [#5182](https://github.com/microsoft/vscode-cpptools/issues/5182), [#7270](https://github.com/microsoft/vscode-cpptools/issues/7270)
* Fix provider failed error logging. [#5487](https://github.com/microsoft/vscode-cpptools/issues/5487)
* Fix an IntelliSense crash with `#pragma GCC target`. [#6698](https://github.com/microsoft/vscode-cpptools/issues/6698), [#7377](https://github.com/microsoft/vscode-cpptools/issues/7377)
* Fix bitness detection for compilers targeting esp32. [#7034](https://github.com/microsoft/vscode-cpptools/issues/7034)
* Fix -idirafter directories being included too early. [#7129](https://github.com/microsoft/vscode-cpptools/issues/7129)
* Fix issue with the cpptools process lingering when no longer needed. [#7262](https://github.com/microsoft/vscode-cpptools/issues/7262)
* Filter out C++ std when querying the compiler as C (and vice versa). [#7269](https://github.com/microsoft/vscode-cpptools/issues/7269)
* Fix `files.exclude` ending with `/folder/**` not excluding `/folder`. [#7331](https://github.com/microsoft/vscode-cpptools/issues/7331)
* Fix VS Code UI freezing when hovering over very large literals. [#7334](https://github.com/microsoft/vscode-cpptools/issues/7334), [#7577](https://github.com/microsoft/vscode-cpptools/issues/7577)
* Fix clang-format formatting bug when new lines are removed. [#7360](https://github.com/microsoft/vscode-cpptools/issues/7360)
* Change default cwd in launch.json to `${fileDirname}`. [#7362](https://github.com/microsoft/vscode-cpptools/issues/7362)
* Syed Ahmad (@HackintoshwithUbuntu) [PR #7363](https://github.com/microsoft/vscode-cpptools/pull/7363)
* Fix the compile commands entry not being used when -Werror is used. [#7388](https://github.com/microsoft/vscode-cpptools/issues/7388)
* Fix some potential race conditions during vsix installation. [#7405](https://github.com/microsoft/vscode-cpptools/issues/7405)
* Fix completion at the end of a file. [#7472](https://github.com/microsoft/vscode-cpptools/issues/7472)
* Fix completion of constructors. [#7505](https://github.com/microsoft/vscode-cpptools/issues/7505)
* Fix typos.
* jogo- (@jogo-) [PR #7509](https://github.com/microsoft/vscode-cpptools/pull/7509), [PR #7568](https://github.com/microsoft/vscode-cpptools/pull/7568), [PR #7573](https://github.com/microsoft/vscode-cpptools/pull/7573)
* Fix an IntelliSense crash with the arrow library. [#7518](https://github.com/microsoft/vscode-cpptools/issues/7518)
* Fix the configuration UI randomly being blank (more frequently when remote). [#7523](https://github.com/microsoft/vscode-cpptools/issues/7523)
* Fix IntelliSense mode switching from `linux` to `macos` if `__unix__` is defined but `__linux__` is not. [#7525](https://github.com/microsoft/vscode-cpptools/issues/7525)
* Fix enabling of the `ms_extensions` flag for clang on Windows. [#7529](https://github.com/microsoft/vscode-cpptools/issues/7529)
* Fix `autocompleteAddParentheses` with no argument const/non-const overloads and deduction guides. [#7540](https://github.com/microsoft/vscode-cpptools/issues/7540), [#7541](https://github.com/microsoft/vscode-cpptools/issues/7541)
* Fix the browse configuration not being preserved when the configuration provider is auto-detected. [#7542](https://github.com/microsoft/vscode-cpptools/issues/7542)
* Fix clang-format failure on macOS 10.13 or older. [#7561](https://github.com/microsoft/vscode-cpptools/issues/7561)
* Fix an IntelliSense crash with std::ranges::unique. [#7576](https://github.com/microsoft/vscode-cpptools/issues/7576)
* Prevent 'Configuration Warnings' output when a custom configuration provider omits optional fields.
* Prevent 'Configuration Warnings' caused by corrections to auto-detected default configuration values.
* Reduce IntelliSense memory and CPU usage in certain scenarios (e.g. large files).
* Fix a crash on Linux with a `/**` includePath.
## Version 1.3.1: April 19, 2021
### Bug Fixes
* Fix extension not activating when `/.vscode/c_cpp_properties.json` exists but no C/C++ file is open. [#7344](https://github.com/microsoft/vscode-cpptools/issues/7344)
* Fix logging for an invalid provider configuration.
* Yonggang Luo (@lygstate) [PR #7350](https://github.com/microsoft/vscode-cpptools/pull/7350)
* Fix extension activation with 32-bit Windows. [#7368](https://github.com/microsoft/vscode-cpptools/issues/7368)
## Version 1.3.0: April 13, 2021
### New Features
* Add language service support for CUDA.
* Add highlighting of matching conditional preprocessor statements. [#2565](https://github.com/microsoft/vscode-cpptools/issues/2565)
* Add commands for navigating to matching preprocessor directives in conditional groups. [#4779](https://github.com/microsoft/vscode-cpptools/issues/4779)
* Add native language service binaries for ARM64 Mac. [#6595](https://github.com/microsoft/vscode-cpptools/issues/6595)
### Enhancements
* Add parentheses to function calls when `C_Cpp.autocompleteAddParentheses` is `true`. [#882](https://github.com/microsoft/vscode-cpptools/issues/882)
* Add @retval support to the simplified view of doc comments. [#6816](https://github.com/microsoft/vscode-cpptools/issues/6816)
* Add auto-closing of include completion brackets. [#7054](https://github.com/microsoft/vscode-cpptools/issues/7054)
* Add support for nodeAddonIncludes with Yarn PnP.
* Mestery (@Mesterry) [PR #7123](https://github.com/microsoft/vscode-cpptools/pull/7123)
* Add a `C_Cpp.files.exclude` setting, which is identical to `files.exclude` except items aren't excluded from the Explorer view. [PR #7285](https://github.com/microsoft/vscode-cpptools/pull/7285)
### Bug Fixes
* Display integer values for char and unsigned char on hover instead of character symbols. [#1552](https://github.com/microsoft/vscode-cpptools/issues/1552)
* Fix directory iteration to check files.exclude and symlinks and use less memory. [#3123](https://github.com/microsoft/vscode-cpptools/issues/3123), [#4206](https://github.com/microsoft/vscode-cpptools/issues/4206), [#6864](https://github.com/microsoft/vscode-cpptools/issues/6864)
* Fix an issue with stale IntelliSense due to moving or renaming header files. [#3849](https://github.com/microsoft/vscode-cpptools/issues/3849)
* Fix go to definition on large macros. [#4306](https://github.com/microsoft/vscode-cpptools/issues/4306)
* Fix a spurious asterisk being inserted on a new line if the previous line starts with an asterisk. [#5733](https://github.com/microsoft/vscode-cpptools/issues/5733)
* Fix bug with placement new on Windows with gcc mode. [#6246](https://github.com/microsoft/vscode-cpptools/issues/6246)
* Fix size_t and placement new squiggles with clang on Windows. [#6573](https://github.com/microsoft/vscode-cpptools/issues/6573), [#7106](https://github.com/microsoft/vscode-cpptools/issues/7016)
* Fix an incorrect IntelliSense error squiggle when assigning to std::variant in clang mode. [#6623](https://github.com/microsoft/vscode-cpptools/issues/6623)
* Fix incorrect squiggle with range-v3 library. [#6639](https://github.com/microsoft/vscode-cpptools/issues/6639)
* Fix incorrect squiggle with auto parameters. [#6714](https://github.com/microsoft/vscode-cpptools/issues/6714)
* Fix (reimplement) nested document symbols. [#6830](https://github.com/microsoft/vscode-cpptools/issues/6830), [#7023](https://github.com/microsoft/vscode-cpptools/issues/7023), [#7024](https://github.com/microsoft/vscode-cpptools/issues/7024)
* Fix detection of bitness for compilers targeting esp32. [#7034](https://github.com/microsoft/vscode-cpptools/issues/7034)
* Fix include completion not working after creating a new header with a non-standard extension until a reload is done. [#6987](https://github.com/microsoft/vscode-cpptools/issues/6987), [#7061](https://github.com/microsoft/vscode-cpptools/issues/7061)
* Fix endless CPU/memory usage in cpptools-srv when certain templated type aliases are used. [#7085](https://github.com/microsoft/vscode-cpptools/issues/7085)
* Fix "No symbols found" sometimes occurring when a document first opens. [#7103](https://github.com/microsoft/vscode-cpptools/issues/7103)
* Fix vcFormat formatting after typing brackets and a newline. [#7125](https://github.com/microsoft/vscode-cpptools/issues/7125)
* Fix a performance bug after formatting a document. [#7159](https://github.com/microsoft/vscode-cpptools/issues/7159)
* Fix random crashes of cpptools-srv during shutdown. [#7161](https://github.com/microsoft/vscode-cpptools/issues/7161)
* Fix a bug with relative "." paths in compile commands. [#7221](https://github.com/microsoft/vscode-cpptools/issues/7221)
* Fix configuration issues with Unreal Engine projects. [#7222](https://github.com/microsoft/vscode-cpptools/issues/7222)
* Fix bug when `${workspaceFolder}` is used in `compileCommands`. [#7241](https://github.com/microsoft/vscode-cpptools/issues/7241)
* Aleksa Pavlovic (@aleksa2808) [PR #7242](https://github.com/microsoft/vscode-cpptools/pull/7242)
* Fix field requirements for custom configurations. [PR #7295](https://github.com/microsoft/vscode-cpptools/pull/7295)
* Fix integrity hash checking of downloaded packages for the extension. [PR #7300](https://github.com/microsoft/vscode-cpptools/pull/7300)
* Fix a bug preventing successful validation and receipt of browse configurations from custom configuration providers. [PR# 7131](https://github.com/microsoft/vscode-cpptools/pull/7313)
* Fix a potential crash when editing at the end of a document.
* Fix "Configure Task" selection to show root folder names for multi-root workspace [PR #7315](https://github.com/microsoft/vscode-cpptools/pull/7315)
## Version 1.2.2: February 25, 2021
### Bug Fixes
* Fix IntelliSense errors with variable length arrays with C Clang mode. [#6500](https://github.com/microsoft/vscode-cpptools/issues/6500)
* Fix for random IntelliSense communication failures on Mac. [#6809](https://github.com/microsoft/vscode-cpptools/issues/6809), [#6958](https://github.com/microsoft/vscode-cpptools/issues/6958)
* Fix an extension activation failure when a non-existent folder exists in the workspace. [#6981](https://github.com/microsoft/vscode-cpptools/issues/6981)
* Fix infinite loops during document symbol processing. [#6988](https://github.com/microsoft/vscode-cpptools/issues/6988), [#7012](https://github.com/microsoft/vscode-cpptools/issues/7012), [#7022](https://github.com/microsoft/vscode-cpptools/issues/7022), [#7025](https://github.com/microsoft/vscode-cpptools/issues/7025)
* Fix a regression with handling of -isysroot/--sysroot compiler arguments. [#6992](https://github.com/microsoft/vscode-cpptools/issues/6992)
## Version 1.2.2-insiders: February 17, 2021
### Bug Fixes
* Fix for random IntelliSense communication failures on Mac. Potentially fixes: [#6809](https://github.com/microsoft/vscode-cpptools/issues/6809), [#6958](https://github.com/microsoft/vscode-cpptools/issues/6958)
* Potential fix for an "Unable to start the C/C++ language server" error. [#6981](https://github.com/microsoft/vscode-cpptools/issues/6981)
* Fix issue querying certain compilers, including armclang and arm-poky-linux-musleabi-gcc. [#7021](https://github.com/microsoft/vscode-cpptools/issues/7021)
* Fix invalid "console" property when generating a "cppdbg" task. [#7048](https://github.com/microsoft/vscode-cpptools/issues/7048)
## Version 1.2.1: February 16, 2021
### Bug Fixes
@@ -114,7 +939,7 @@
* Fix the default `cwd` for `cppbuild` tasks. [#6618](https://github.com/microsoft/vscode-cpptools/issues/6618)
## Version 1.1.2: November 17, 2020
### Bug Fix
### Bug Fixes
* Fix resolution of `${fileDirname}` with `cppbuild` tasks. [#6386](https://github.com/microsoft/vscode-cpptools/issues/6386)
## Version 1.1.1: November 9, 2020
@@ -140,7 +965,7 @@
* YuTengjing (@tjx666) [PR #6344](https://github.com/microsoft/vscode-cpptools/pull/6344)
* Enable support for specifying a compiler by only the filename if it's in the environment path. [#6179](https://github.com/microsoft/vscode-cpptools/issues/6179)
* Restart the IntelliSense process if its memory usage exceeds the `C_Cpp.intelliSenseMemoryLimit` setting. [#6230](https://github.com/microsoft/vscode-cpptools/issues/6230)
* [cppdbg] Stepping out of a function will display '$ReturnValue'.
* [cppdbg] Stepping out of a function will display '$ReturnValue'.
* @Trass3r [PR MIEngine#1036](https://github.com/microsoft/MIEngine/pull/1036)
* [cppdbg] Support composite expressions in natvis ArrayItems
* @Trass3r [PR MIEngine#1044](https://github.com/microsoft/MIEngine/pull/1044)
@@ -167,8 +992,8 @@
* Fix C files being treated as C++ files with compile_commands.json. [#6279](https://github.com/microsoft/vscode-cpptools/issues/6279)
* Fix `Build and Debug Active File` race condition with EngineLogs. [#6304](https://github.com/microsoft/vscode-cpptools/pull/6304)
* Fix changes to some `c_cpp_properties.json` properties not taking effect (until a reload) if `compileCommands` is set. [#6332](https://github.com/microsoft/vscode-cpptools/issues/6332)
* Fix issue with compiler querying not handling various clang command line options correctly. [6359](https://github.com/microsoft/vscode-cpptools/issues/6356)
* Fix multiroot workspace tag parsing when `compileCommands` is set. [#6383](https://github.com/microsoft/vscode-cpptools/issues/6383)
* Fix issue with compiler querying not handling various clang command line options correctly. [#6356](https://github.com/microsoft/vscode-cpptools/issues/6356), [#6359](https://github.com/microsoft/vscode-cpptools/issues/6359)
* Fix multi-root workspace tag parsing when `compileCommands` is set. [#6383](https://github.com/microsoft/vscode-cpptools/issues/6383)
* Fix mingw32 compilers not being detected. [#6394](https://github.com/microsoft/vscode-cpptools/issues/6394)
* Various bug fixes for vcFormat. [PR #6408](https://github.com/microsoft/vscode-cpptools/pull/6408)
* Fix issue causing zh-cn and zh-tw language files not to be used. [PR #6418](https://github.com/microsoft/vscode-cpptools/pull/6418)
@@ -223,7 +1048,7 @@
* Get the default target of the compiler. If the default target is ARM/ARM64, do not use the generic "--target" option to determine bitness. [#5772](https://github.com/microsoft/vscode-cpptools/issues/5772)
* Fix `compilerArgs` not being used if no `compilerPath` is set. [#5776](https://github.com/microsoft/vscode-cpptools/issues/5776)
* Fix an incorrect IntelliSense error squiggle. [#5783](https://github.com/microsoft/vscode-cpptools/issues/5783)
* Fix semantic colorization and inactive regions for multiroot workspaces. [#5812](https://github.com/microsoft/vscode-cpptools/issues/5812), [#5828](https://github.com/microsoft/vscode-cpptools/issues/5828)
* Fix semantic colorization and inactive regions for multi-root workspaces. [#5812](https://github.com/microsoft/vscode-cpptools/issues/5812), [#5828](https://github.com/microsoft/vscode-cpptools/issues/5828)
* Fix bug with cl.exe flags /FU and /FI not being processed. [#5819](https://github.com/microsoft/vscode-cpptools/issues/5819)
* Fix `cStandard` being set to `c11` instead of `gnu18` with gcc. [#5834](https://github.com/microsoft/vscode-cpptools/issues/5834)
* Fix Doxygen parameterHint comment to display for a parameter name that is followed by colon. [#5836](https://github.com/microsoft/vscode-cpptools/issues/5836)
@@ -251,7 +1076,7 @@
* The way comments are formatted is controlled by the `C_Cpp.simplifyStructuredComments` setting.
* Auto-convert `.` to `->` when the type is a pointer. [#862](https://github.com/microsoft/vscode-cpptools/issues/862)
* Switch to using the VS Code Semantic Tokens API for semantic colorization (works with remoting). [PR #5401](https://github.com/microsoft/vscode-cpptools/pull/5401), [#3932](https://github.com/microsoft/vscode-cpptools/issues/3932), [#3933](https://github.com/microsoft/vscode-cpptools/issues/3933), [#3942](https://github.com/microsoft/vscode-cpptools/issues/3942)
* Add support for LogMessage Breakpoints for debug type `cppdbg`. [MIEngine#1013](https://github.com/microsoft/MIEngine/pull/1013)
* Add support for LogMessage Breakpoints for debug type `cppdbg`. [PR MIEngine#1013](https://github.com/microsoft/MIEngine/pull/1013)
### Enhancements
* Automatically add `"${default}"` to the default `includePath` in `c_cpp_properties.json` if `C_Cpp.default.includePath` is set. [#3733](https://github.com/microsoft/vscode-cpptools/issues/3733)
@@ -344,7 +1169,7 @@
* Fix the "Unable to load schema" error for `c_cpp_properties.json`. [#4841](https://github.com/microsoft/vscode-cpptools/issues/4841)
* Change "Visual Studio" `clang_format_fallback_style` setting to use NamespaceIndentation All. [#5124](https://github.com/microsoft/vscode-cpptools/issues/5124)
* Fix "C++98" and "C++0x" modes. [#5157](https://github.com/microsoft/vscode-cpptools/issues/5157), [#5225](https://github.com/microsoft/vscode-cpptools/issues/5225)
* Improve the error message for multiroot projects using `compile_commands.json`. [#5160](https://github.com/microsoft/vscode-cpptools/issues/5160)
* Improve the error message for multi-root projects using `compile_commands.json`. [#5160](https://github.com/microsoft/vscode-cpptools/issues/5160)
* Fix some cpptools process crashes. [#5280](https://github.com/microsoft/vscode-cpptools/issues/5280)
* Avoid `<…>` truncation on hover. [#5291](https://github.com/microsoft/vscode-cpptools/issues/5291)
* Fix incorrect translations. [PR #5300](https://github.com/microsoft/vscode-cpptools/pull/5300)
@@ -362,7 +1187,7 @@
## Version 0.27.0: March 30, 2020
### Enhancements
* Improved multi-root implementation with a single language server process and database for the entire workspace (shared between workspace folders). Fixes most [multi-root bugs](https://github.com/microsoft/vscode-cpptools/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature%3A+Multiroot%22+label%3A%22fixed+%28release+pending%29%22+milestone%3A0.27.0).
* Improved multi-root implementation with a single language server process and database for the entire workspace (shared between workspace folders). Fixes most [multi-root bugs](https://github.com/microsoft/vscode-cpptools/issues?q=is%3Aopen+is%3Aissue+label%3A%22Feature%3A+Multi-root%22+label%3A%22fixed+%28release+pending%29%22+milestone%3A0.27.0).
* Update to clang-format 9.0.1 (and without shared library dependencies). [#2887](https://github.com/microsoft/vscode-cpptools/issues/2887), [#3174](https://github.com/microsoft/vscode-cpptools/issues/3174)
* Add new setting `C_Cpp.debugger.useBacktickCommandSubstitution` to fix debugging when CShell is the remote default shell. [#4015](https://github.com/microsoft/vscode-cpptools/issues/4015)
* @Helloimbob [PR #5053](https://github.com/microsoft/vscode-cpptools/pull/5053)
@@ -392,7 +1217,7 @@
* Fix failure to detect CL.exe if VS Installer files are stored on a drive other than the system drive. [#4929](https://github.com/microsoft/vscode-cpptools/issues/4929)
* Fix extension randomly getting stuck while communicating with the IntelliSense process on Mac. [#4989](https://github.com/microsoft/vscode-cpptools/issues/4989)
* Fix completion results appearing after numeric literals. [#5019](https://github.com/microsoft/vscode-cpptools/issues/5019)
* Fix issue with cancellation of a `Rename` operation causing subsequent `Find All References` and `Rename` operations to fail. [#5022](https://github.com/microsoft/vscode-cpptools/issues/5022)
* Fix issue with cancellation of a `Rename` operation causing subsequent `Find All References` and `Rename` operations to fail. [#5022](https://github.com/microsoft/vscode-cpptools/issues/5022)
* Fix some settings not being editable in the UI. [PR #5126](https://github.com/microsoft/vscode-cpptools/pull/5126)
* Fix `cpp_properties.json` error squiggles not appearing. [#5131](https://github.com/microsoft/vscode-cpptools/issues/5131)
* Fix `search.exclude` not applying if there are > 1 symbols matching in the excluded file. [#5152](https://github.com/microsoft/vscode-cpptools/issues/5152)
@@ -413,7 +1238,7 @@
* Fix `compile_commands.json` prompt appearing when a configuration provider is used. [#3972](https://github.com/microsoft/vscode-cpptools/issues/3972)
* Improve IntelliSense performance with range-v3. [#4414](https://github.com/microsoft/vscode-cpptools/issues/4414)
* Fix template members not being nested under the template type in the Outline view. [#4466](https://github.com/microsoft/vscode-cpptools/issues/4466)
* Fix an issue in which failure to invoke a compiler could result in a hang on Linux and Mac. [#4627](https://github.com/microsoft/vscode-cpptools/issues/4627)
* Fix an issue in which failure to invoke a compiler could result in a loss of functionality on Linux and Mac. [#4627](https://github.com/microsoft/vscode-cpptools/issues/4627)
* Fix custom configurations sometimes not being applied to headers. [#4649](https://github.com/microsoft/vscode-cpptools/issues/4649)
* Fix headers opening into header-only TU's instead of TU's for candidate source files. [#4696](https://github.com/microsoft/vscode-cpptools/issues/4696)
* Fix the missing description of `C_Cpp.clang_format_style`.
@@ -433,7 +1258,7 @@
## Version 0.26.2: December 2, 2019
### Enhancements
* Reworked how a source file is selected for TU creation when opening a header file. [#2856](https://github.com/microsoft/vscode-cpptools/issues/2856)
* Updated the default value of the `C_Cpp.intelliSenseCachePath` setting to a path under `XDG_CACHE_HOME` on Linux, or `~/Library/Cache` on MacOS. [#3979](https://github.com/microsoft/vscode-cpptools/issues/3979)
* Updated the default value of the `C_Cpp.intelliSenseCachePath` setting to a path under `XDG_CACHE_HOME` on Linux, or `~/Library/Cache` on macOS. [#3979](https://github.com/microsoft/vscode-cpptools/issues/3979)
* Reset memory usage of the IntelliSense process if it grows beyond a threshold. [#4119](https://github.com/microsoft/vscode-cpptools/issues/4119)
* Add validation that the new symbol name provided to 'Rename Symbol' is a valid identifier. Add the setting `C_Cpp.renameRequiresIdentifier` to allow that verification to be disabled. [#4409](https://github.com/microsoft/vscode-cpptools/issues/4409)
* Enable setting of breakpoints in CUDA sources.
@@ -444,13 +1269,13 @@
* Fix child process creation when the Windows code page is set to a language with non-ASCII characters and there are non-ASCII characters in the extension's install path. [#1560](https://github.com/microsoft/vscode-cpptools/issues/1560)
* Fix path canonicalization of UNC paths to avoid duplicate files opening with different casing. [#2528](https://github.com/microsoft/vscode-cpptools/issues/2528), [#3980](https://github.com/microsoft/vscode-cpptools/issues/3980)
* Fix header opening without IntelliSense due to creation of a TU from a source file that includes the header in an inactive region. [#4320](https://github.com/microsoft/vscode-cpptools/issues/4320)
* Fix a hang in the extension process that can occur when using a scope named 'interface'. [#4470](https://github.com/microsoft/vscode-cpptools/issues/4470)
* Fix an infinite loop in the extension process that can occur when using a scope named 'interface'. [#4470](https://github.com/microsoft/vscode-cpptools/issues/4470)
* Fix an issue with the Rename UI that could cause the rename to not be applied. [#4504](https://github.com/microsoft/vscode-cpptools/issues/4504)
* Show an error message when a Rename fails due to the symbol not being found. [#4510](https://github.com/microsoft/vscode-cpptools/issues/4510)
* Fix `launch.json` creation due to localized strings containing quotes. [#4526](https://github.com/microsoft/vscode-cpptools/issues/4526)
* Fix configuration error squiggles not being applied unless the setting was set in both `c_cpp_properties.json` and `settings.json`. [PR #4538](https://github.com/microsoft/vscode-cpptools/pull/4538)
* Fix document symbol for Outline view and breadcrumbs on Windows 7. [#4536](https://github.com/microsoft/vscode-cpptools/issues/4536).
* Add support for `"ms-vscode.cmake-tools"` `configurationProvider` id. [#4586](https://github.com/microsoft/vscode-cpptools/issues/4586).
* Fix document symbol for Outline view and breadcrumbs on Windows 7. [#4536](https://github.com/microsoft/vscode-cpptools/issues/4536)
* Add support for `"ms-vscode.cmake-tools"` `configurationProvider` id. [#4586](https://github.com/microsoft/vscode-cpptools/issues/4586)
* Fix cancellation of Find All References sometimes resulting in an exception. [#2710](https://github.com/microsoft/vscode-cpptools/issues/2710)
* Fix the sort order of files in the Find All References and Rename UI's. [#4615](https://github.com/microsoft/vscode-cpptools/issues/4615)
* Fix localized Chinese strings not displaying on systems with case-sensitive file systems. [#4619](https://github.com/microsoft/vscode-cpptools/issues/4619)
@@ -461,7 +1286,7 @@
### Bug Fixes
* Fix `launch.json` creation when using non-English display languages. [#4464](https://github.com/microsoft/vscode-cpptools/issues/4464)
* Fix CHS translation. [#4422](https://github.com/microsoft/vscode-cpptools/issues/4422)
* Fix debugging hang when Windows 10 Beta Unicode (UTF-8) support is enabled. [#1527](https://github.com/microsoft/vscode-cpptools/issues/1527)
* Fix debugging not working when Windows 10 Beta Unicode (UTF-8) support is enabled. [#1527](https://github.com/microsoft/vscode-cpptools/issues/1527)
## Version 0.26.0: October 15, 2019
### New Features
@@ -521,7 +1346,7 @@
* Add a code action for resolving missing includes via the `vcpkg` dependency manager. [PR #3791](https://github.com/microsoft/vscode-cpptools/pull/3791)
### Enhancements
* Added support for compile commands:
* Added support for compile commands:
* `-iquote`. [#2088](https://github.com/microsoft/vscode-cpptools/issues/2088)
* `-imacros`. [#2417](https://github.com/microsoft/vscode-cpptools/issues/2417)
* `-idirafter`(`--include-directory-after` & `--include-directory-after=`). [#3713](https://github.com/microsoft/vscode-cpptools/issues/3713)
@@ -534,11 +1359,11 @@
### Bug Fixes
* Fix wrong type of `this` pointer. [#2303](https://github.com/microsoft/vscode-cpptools/issues/2303)
* Fix previous cache path not deleted when new cache path is specified. Note that the VS Code bug [Microsoft/vscode#59391](https://github.com/microsoft/vscode/issues/59391) still occurs on the settings UI, but this fix should delete any incomplete path names as the extension receives changes from the cache path setting. [#3644](https://github.com/microsoft/vscode-cpptools/issues/3644).
* Fix previous cache path not deleted when new cache path is specified. Note that the VS Code bug [Microsoft/vscode#59391](https://github.com/microsoft/vscode/issues/59391) still occurs on the settings UI, but this fix should delete any incomplete path names as the extension receives changes from the cache path setting. [#3644](https://github.com/microsoft/vscode-cpptools/issues/3644)
* Fix broken shell script when launch/attaching as root. [#3711](https://github.com/microsoft/vscode-cpptools/issues/3711)
* Christian A. Jacobsen (@ChristianJacobsen) [PR MIEngine#906](https://github.com/microsoft/MIEngine/pull/906)
* Fix ".H" files not appearing in include completion results on Linux/macOS. [#3744](https://github.com/microsoft/vscode-cpptools/issues/3744)
* Fix `compile_commands.json` file changes not updated. [#3864](https://github.com/microsoft/vscode-cpptools/issues/3864).
* Fix `compile_commands.json` file changes not updated. [#3864](https://github.com/microsoft/vscode-cpptools/issues/3864)
* Fix `Failed to parse` error message in the open file scenario. [#3888](https://github.com/microsoft/vscode-cpptools/issues/3888)
* Fix loading the wrong symbols when creating or copying a file. [#3897](https://github.com/microsoft/vscode-cpptools/issues/3897)
* Fix IntelliSense process crash in clang mode. [#3898](https://github.com/microsoft/vscode-cpptools/issues/3898)
@@ -867,7 +1692,7 @@
* Fix `Go to Definition` bug (missing symbols outside the workspace). [#2281](https://github.com/Microsoft/vscode-cpptools/issues/2281)
* Fix incorrect hover in enum definitions. [#2286](https://github.com/Microsoft/vscode-cpptools/issues/2286)
* Add a setting to silence configuration provider warnings. [#2292](https://github.com/Microsoft/vscode-cpptools/issues/2292)
* Fix debugging async Visual C++ causing debugger to hang.
* Fix debugging async Visual C++ causing the debugger to stop responding.
* Fix `main` snippet.
## Version 0.17.6: July 2, 2018
@@ -1135,8 +1960,8 @@
* Add `Edit Configurations...` command to the `Select a Configuration...` dropdown.
* Update Microsoft Visual C++ debugger to Visual Studio 2017 released components.
* Fix issue with showing wrong thread. [#550](https://github.com/Microsoft/vscode-cpptools/issues/550)
* Fix issue with binaries compiled with /FASTLINK causing debugger to hang. [#484](https://github.com/Microsoft/vscode-cpptools/issues/484)
* Fix issue in MinGW/Cygwin debugging where stop debugging causes VS Code to hang. [PR Microsoft/MIEngine#636](https://github.com/Microsoft/MIEngine/pull/636)
* Fix issue with binaries compiled with /FASTLINK causing the debugger to stop responding. [#484](https://github.com/Microsoft/vscode-cpptools/issues/484)
* Fix issue in MinGW/Cygwin debugging where stop debugging causes VS Code to stop responding. [PR Microsoft/MIEngine#636](https://github.com/Microsoft/MIEngine/pull/636)
## Version 0.12.0: June 26, 2017
* The default IntelliSense engine now provides semantic-aware autocomplete suggestions for `.`, `->`, and `::` operators. [#13](https://github.com/Microsoft/vscode-cpptools/issues/13)
@@ -1298,4 +2123,4 @@
## Version 0.5.0: April 14, 2016
* Usability and correctness bug fixes.
* Simplify installation experience.
* Usability and correctness bug fixes.
* Usability and correctness bug fixes.
+24 -18
View File
@@ -1,13 +1,33 @@
# C/C++ for Visual Studio Code
#### [Repository](https://github.com/microsoft/vscode-cpptools)&nbsp;&nbsp;|&nbsp;&nbsp;[Issues](https://github.com/microsoft/vscode-cpptools/issues)&nbsp;&nbsp;|&nbsp;&nbsp;[Documentation](https://code.visualstudio.com/docs/languages/cpp)&nbsp;&nbsp;|&nbsp;&nbsp;[Code Samples](https://github.com/microsoft/vscode-cpptools/tree/main/Code%20Samples)&nbsp;&nbsp;|&nbsp;&nbsp;[Offline Installers](https://github.com/microsoft/vscode-cpptools/releases)
#### [Repository](https://github.com/microsoft/vscode-cpptools)&nbsp;&nbsp;|&nbsp;&nbsp;[Issues](https://github.com/microsoft/vscode-cpptools/issues)&nbsp;&nbsp;|&nbsp;&nbsp;[Documentation](https://code.visualstudio.com/docs/languages/cpp)&nbsp;&nbsp;|&nbsp;&nbsp;[Code Samples](https://github.com/microsoft/vscode-cpptools/tree/main/Code%20Samples)
[![Badge](https://aka.ms/vsls-badge)](https://aka.ms/vsls)
The C/C++ extension adds language support for C/C++ to Visual Studio Code, including features such as IntelliSense and debugging.
The C/C++ extension adds language support for C/C++ to Visual Studio Code, including [editing (IntelliSense)](https://code.visualstudio.com/docs/cpp/cpp-ide) and [debugging](https://code.visualstudio.com/docs/cpp/cpp-debug) features.
## Pre-requisites
C++ is a compiled language meaning your program's source code must be translated (compiled) before it can be run on your computer. VS Code is first and foremost an editor, and relies on command-line tools to do much of the development workflow. The C/C++ extension **does not include a C++ compiler or debugger**. You will need to install these tools or use those already installed on your computer.
* C++ compiler pre-installed
* C++ debugger pre-installed
<br/>
Here is a list of compilers and architectures per platform officially supported by the extension. These are reflected by the available [IntelliSense modes](https://code.visualstudio.com/docs/cpp/configure-intellisense-crosscompilation#_intellisense-mode) from the extension's IntelliSense configuration. Note that support for other compilers may be limited.
Platform | Compilers | Architectures
:--- | :--- | :---
Windows | MSVC, Clang, GCC | x64, x86, arm64, arm
Linux | Clang, GCC | x64, x86, arm64, arm
macOS | Clang, GCC | x64, x86, arm64
For more information about installing the required tools or setting up the extension, please follow the tutorials below.
<br/>
<br/>
## Overview and tutorials
* [C/C++ extension overview](https://code.visualstudio.com/docs/languages/cpp)
* [Introductory Videos](https://code.visualstudio.com/docs/cpp/introvideos-cpp)
C/C++ extension tutorials per compiler and platform
* [Microsoft C++ compiler (MSVC) on Windows](https://code.visualstudio.com/docs/cpp/config-msvc)
@@ -17,7 +37,7 @@ C/C++ extension tutorials per compiler and platform
* [Clang on macOS](https://code.visualstudio.com/docs/cpp/config-clang-mac)
## Quick links
* [Editing features (IntelliSense)](https://code.visualstudio.com/docs/cpp/cpp-ide)
* [Editing features (IntelliSense)](https://code.visualstudio.com/docs/cpp/cpp-ide)
* [IntelliSense configuration](https://code.visualstudio.com/docs/cpp/customize-default-settings-cpp)
* [Enhanced colorization](https://code.visualstudio.com/docs/cpp/colorization-cpp)
* [Debugging](https://code.visualstudio.com/docs/cpp/cpp-debug)
@@ -45,20 +65,6 @@ If someone has already filed an issue that encompasses your feedback, please lea
<br>
Let us know what you think of the extension by taking the quick survey.
## Offline installation
The extension has platform-specific binary dependencies, therefore installation via the Marketplace requires an Internet connection in order to download additional dependencies. If you are working on a computer that does not have access to the Internet or is behind a strict firewall, you may need to use our platform-specific packages and install them by running VS Code's `"Install from VSIX..."` command. These "offline' packages are available at: https://github.com/Microsoft/vscode-cpptools/releases.
Package | Platform
:--- | :---
`cpptools-linux.vsix` | Linux 64-bit
`cpptools-linux-armhf.vsix` | Linux ARM 32-bit
`cpptools-linux-aarch64.vsix` | Linux ARM 64-bit
`cpptools-osx.vsix` | macOS
`cpptools-win32.vsix` | Windows 64-bit & 32-bit
`cpptools-win-arm64.vsix` | Windows ARM64
`cpptools-linux32.vsix` | Linux 32-bit ([available up to version 0.27.0](https://github.com/microsoft/vscode-cpptools/issues/5346))
## Contribution
Contributions are always welcome. Please see our [contributing guide](CONTRIBUTING.md) for more details.
@@ -69,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://privacy.microsoft.com/en-us/privacystatement) to learn more.
+32
View File
@@ -0,0 +1,32 @@
<h1 data-loc-id="incompatible.extension.heading">Incompatible or Mismatched C/C++ Extension Binaries</h1>
<p data-loc-id="incompat.extension.text1">The C/C++ extension includes native binaries.</p>
<p data-loc-id="incompat.extension.text2">When installed via the marketplace UI in VS Code, the correct native binaries should be included. If incompatible binaries were detected and the C/C++ extension had been installed via the marketplace UI in VS Code, <a href="https://github.com/microsoft/vscode/issues/new?assignees=&labels=&template=bug_report.md" data-loc-id="bug.report.link.title">please report the issue</a>.</p>
<h1 data-loc-id="reinstalling.extension.heading">Reinstalling the C/C++ Extension</h1>
<p data-loc-id="reinstall.extension.text1">When reinstalling an equivalent version of an extension, VS Code may reuse the existing extension directory. To prevent this from occurring when reinstalling the C/C++ extension, it may be necessary to first delete the existing extension directory.</p>
<p data-loc-id="reinstall.extension.text2">Installed extension directories can be found under one of the following paths under your user directory (`%USERPROFILE%` on Windows, or `$HOME` on Linux and macOS)</p>
<pre><code class="lang-bash">%USERPROFILE%\.vscode\extensions</code></pre>
<pre><code class="lang-bash">%USERPROFILE%\.vscode-insiders\extensions</code></pre>
<pre><code class="lang-bash">%USERPROFILE%\.vscode-exploration\extensions</code></pre>
<p data-loc-id="reinstall.extension.text3">In a remote connection:</p>
<pre><code class="lang-bash">$HOME/.vscode-server/extensions</code></pre>
<pre><code class="lang-bash">$HOME/.vscode-server-insiders/extensions</code></pre>
<pre><code class="lang-bash">$HOME/.vscode-server-exploration/extensions</code></pre>
<p data-loc-id="reinstall.extension.text4">Example paths to installed C/C++ extension directories:</p>
<p data-loc-id="reinstall.extension.text5">On Windows:</p>
<pre><code class="lang-bash">%USERPROFILE%\.vscode\extensions\ms-vscode.cpptools-1.9.0</code></pre>
<p data-loc-id="reinstall.extension.text6">On Linux:</p>
<pre><code class="lang-bash">$HOME/.vscode/extensions/ms-vscode.cpptools-1.9.0</code></pre>
<p data-loc-id="reinstall.extension.text7">Then reinstall via the marketplace UI in VS Code.</p>
<p data-loc-id="reinstall.extension.text8">If the correct version of the extension fails to be deployed by VS Code, the correct VSIX for your system can be <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools" data-loc-id="download.vsix.link.title">downloaded from the VS Code marketplace web site</a> and installed using the 'Install from VSIX...' option under the '...' menu in the marketplace UI in VS Code.</p>
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -26,8 +26,8 @@
"replace": "--using_directory\n$1"
},
{
"match": "^/dE--header_only_fallback",
"replace": "--header_only_fallback"
"match": "^/dE--(.*)",
"replace": "--$1"
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More