From 4a8b143ce099fa980612f75e53098d416ebc65cf Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 1 Nov 2018 15:55:47 -0700 Subject: [PATCH 01/35] Add more crash telemetry filtering. (#2759) --- Extension/package-lock.json | 2 +- Extension/package.json | 10 ++-- Extension/src/LanguageServer/extension.ts | 62 +++++++++++++++++------ 3 files changed, 53 insertions(+), 21 deletions(-) diff --git a/Extension/package-lock.json b/Extension/package-lock.json index 77fa47a75b..bbe5d169e7 100644 --- a/Extension/package-lock.json +++ b/Extension/package-lock.json @@ -1,6 +1,6 @@ { "name": "cpptools", - "version": "0.20.1-master", + "version": "0.21.0-master", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/Extension/package.json b/Extension/package.json index 31fe809aa1..8409d3f3b8 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "0.20.1-master", + "version": "0.21.0-master", "publisher": "ms-vscode", "preview": true, "icon": "LanguageCCPP_color_128x.png", @@ -1418,7 +1418,7 @@ "runtimeDependencies": [ { "description": "C/C++ language components (Linux / x86_64)", - "url": "https://go.microsoft.com/fwlink/?linkid=2036673", + "url": "https://go.microsoft.com/fwlink/?linkid=2037608", "platforms": [ "linux" ], @@ -1432,7 +1432,7 @@ }, { "description": "C/C++ language components (Linux / x86)", - "url": "https://go.microsoft.com/fwlink/?linkid=2036672", + "url": "https://go.microsoft.com/fwlink/?linkid=2037526", "platforms": [ "linux" ], @@ -1448,7 +1448,7 @@ }, { "description": "C/C++ language components (OS X)", - "url": "https://go.microsoft.com/fwlink/?linkid=2036674", + "url": "https://go.microsoft.com/fwlink/?linkid=2037527", "platforms": [ "darwin" ], @@ -1459,7 +1459,7 @@ }, { "description": "C/C++ language components (Windows)", - "url": "https://go.microsoft.com/fwlink/?linkid=2036671", + "url": "https://go.microsoft.com/fwlink/?linkid=2037609", "platforms": [ "win32" ], diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index b754670240..d719068bfd 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -645,32 +645,64 @@ function reportMacCrashes(): void { } } -function handleCrashFileRead(err: NodeJS.ErrnoException, data: string): void { +function logCrashTelemetry(data: string): void { let crashObject: { [key: string]: string } = {}; + crashObject["CrashingThreadCallStack"] = data; + telemetry.logLanguageServerEvent("MacCrash", crashObject, null); +} + +function handleCrashFileRead(err: NodeJS.ErrnoException, data: string): void { if (err) { - crashObject["readFile: err.code"] = err.code; - telemetry.logLanguageServerEvent("MacCrash", crashObject, null); - return; + return logCrashTelemetry("readFile: " + err.code); } - let startCrash: number = data.indexOf(" Crashed:"); + + // Extract the crashing thread's call stack. + const crashStart: string = " Crashed:"; + let startCrash: number = data.indexOf(crashStart); if (startCrash < 0) { - startCrash = 0; + return logCrashTelemetry("No crash start"); } + startCrash += crashStart.length + 1; // Skip past crashStart. let endCrash: number = data.indexOf("Thread ", startCrash); - if (endCrash < startCrash) { - endCrash = data.length - 1; + if (endCrash < 0) { + endCrash = data.length - 1; // Not expected, but just in case. + } + if (endCrash <= startCrash) { + return logCrashTelemetry("No crash end"); } data = data.substr(startCrash, endCrash - startCrash); + + // Get rid of the memory addresses (which breaks being able get a hit count for each crash call stack). + data = data.replace(/0x................ /g, ""); + + // Get rid of the process names on each line and just add it to the start. + const process1: string = "Microsoft.VSCode.CPP.IntelliSense.Msvc.darwin\t"; + const process2: string = "Microsoft.VSCode.CPP.Extension.darwin\t"; + if (data.includes(process1)) { + data = data.replace(new RegExp(process1, "g"), ""); + data = process1 + "\n" + data; + } else if (data.includes(process2)) { + data = data.replace(new RegExp(process2, "g"), ""); + data = process2 + "\n" + data; + } else { + return logCrashTelemetry("No process"); // Not expected, but just in case. + } + + // Remove runtime lines because they can be different on different machines. + let lines: string[] = data.split("\n"); + data = ""; + lines.forEach((line: string) => { + if (!line.includes(".dylib") && !line.includes("???")) { + data += (line + "\n"); + } + }); + data = data.trimRight(); + if (data.length > 8192) { // The API has an 8k limit. data = data.substr(0, 8189) + "..."; } - if (data.length < 2) { - return; // Don't send telemetry if there's no call stack. - } - // Get rid of the memory addresses (which breaks being able get a hit count for each crash call stack). - data = data.replace(/0x................ /g, ""); - crashObject["CrashingThreadCallStack"] = data; - telemetry.logLanguageServerEvent("MacCrash", crashObject, null); + + logCrashTelemetry(data); } export function deactivate(): Thenable { From 23fc338f712ecdcae64f99d1fcbc9b1882e8c0b1 Mon Sep 17 00:00:00 2001 From: Pierson Lee Date: Mon, 5 Nov 2018 10:31:37 -0800 Subject: [PATCH 02/35] Update launch.md --- launch.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/launch.md b/launch.md index 436854ab57..b227de12e6 100644 --- a/launch.md +++ b/launch.md @@ -26,6 +26,9 @@ Set or change the following options to control VS Code's behavior during debuggi Linux: When set to true, it will notify VS Code to spawn an external console. When set to false, it will use VS Code's integratedTerminal. macOS: When set to true, it will spawn an external console through `lldb-mi`. When set to false, the output can be seen in VS Code's debugConsole. Due to limitations within `lldb-mi`, integratedTerminal support is not available. +* #### `avoidWindowsConsoleRedirection` + In order to support VSCode's Integrated terminal with gdb on Windows, the extenion adds console redirection commands to the debuggee's arguments to have console input and output show up in the integrated terminal. Setting this option to `true` will disable it. + * #### `logging` Optional flags to determine what types of messages should be logged to the Debug Console. * ##### `exceptions` From 71582d1883e6aa7c3b792f0375baf0c908cdc64e Mon Sep 17 00:00:00 2001 From: Pierson Lee Date: Tue, 6 Nov 2018 13:33:04 -0800 Subject: [PATCH 03/35] Add avoidWindowsConsoleRedirection and fix externalConsole comment (#2772) * Add avoidWindowsConsoleRedirection and fix externalConsole comment * Update OptionsSchema.json * Making Andrew happy by updating npm@latest --- Extension/package-lock.json | 137 +++++++++++++++-------------- Extension/package.json | 7 +- Extension/tools/OptionsSchema.json | 7 +- 3 files changed, 83 insertions(+), 68 deletions(-) diff --git a/Extension/package-lock.json b/Extension/package-lock.json index bbe5d169e7..1c061f2898 100644 --- a/Extension/package-lock.json +++ b/Extension/package-lock.json @@ -20,9 +20,9 @@ "dev": true }, "agent-base": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.1.2.tgz", - "integrity": "sha512-VE6QoEdaugY86BohRtfGmTDabxdU5sCKOkbcPA6PXKJsRzEi/7A3RCTxJal1ft/4qSfPht5/iQLhMh/wzSkkNw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "requires": { "es6-promisify": "^5.0.0" } @@ -447,7 +447,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", "dev": true }, "arr-map": { @@ -715,7 +715,7 @@ "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", "dev": true, "requires": { "cache-base": "^1.0.1", @@ -811,9 +811,9 @@ } }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -862,7 +862,7 @@ "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", "dev": true, "requires": { "collection-visit": "^1.0.0", @@ -1028,7 +1028,7 @@ "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", "dev": true, "requires": { "arr-union": "^3.1.0", @@ -1179,7 +1179,7 @@ "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=", "dev": true, "requires": { "color-name": "^1.1.1" @@ -1194,7 +1194,7 @@ "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "integrity": "sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI=", "dev": true }, "combined-stream": { @@ -1209,7 +1209,7 @@ "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", + "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=", "dev": true }, "component-emitter": { @@ -1283,7 +1283,7 @@ "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -1325,7 +1325,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -1387,7 +1387,7 @@ "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", "dev": true, "requires": { "is-descriptor": "^1.0.2", @@ -1465,7 +1465,7 @@ "diff": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", - "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", + "integrity": "sha1-qoVnpu7QPFMfyJ0/cRzQ5SWd7HU=", "dev": true }, "duplexer": { @@ -1582,13 +1582,13 @@ } }, "es6-promise": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.2.tgz", - "integrity": "sha512-LSas5vsuA6Q4nEdf9wokY5/AJYXry98i0IzXsv49rYsgDGDNDPbqAYR1Pe23iFxygfbGZNR/5VrHXBCh2BhvUQ==" + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" }, "es6-promisify": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { "es6-promise": "^4.0.3" @@ -2904,7 +2904,7 @@ "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "integrity": "sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=", "dev": true, "requires": { "global-prefix": "^1.0.1", @@ -2943,7 +2943,7 @@ "growl": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", + "integrity": "sha1-GSa6kM8+3+KttJJ/WIC8IsZseQ8=", "dev": true }, "gulp": { @@ -3167,7 +3167,7 @@ "gulp-mocha": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/gulp-mocha/-/gulp-mocha-5.0.0.tgz", - "integrity": "sha512-NIjXZLqqcw9DXIEBcfm0sP1AUDlUJJeaK9EGCH2s6lSwo5NK/cEat0Vm7XelOkxZnWl0O5Za+aM6E4jyxWxTlw==", + "integrity": "sha1-7XDr1fra5smNh68T27rVpgLiF7I=", "dev": true, "requires": { "dargs": "^5.1.0", @@ -3272,7 +3272,7 @@ "gulp-tslint": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/gulp-tslint/-/gulp-tslint-8.1.2.tgz", - "integrity": "sha512-0RNGqbp2TKPdbG+sWU3mNMXEMuF/noY1KS4+jd5lOStkvuFINkFL29dHX3IT1u+vVFD4Glwf+lkcdR2QMVNMzA==", + "integrity": "sha1-4PQxlLRz1+drtFpY/oxg59/jvrI=", "dev": true, "requires": { "gulp-util": "~3.0.8", @@ -3438,7 +3438,7 @@ "queue": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/queue/-/queue-4.4.2.tgz", - "integrity": "sha512-fSMRXbwhMwipcDZ08enW2vl+YDmAmhcNcr43sCJL8DIg+CFOsoRLG23ctxA+fwNk1w55SePSiS7oqQQSgQoVJQ==", + "integrity": "sha1-Wpcz2ai4vRs26TS8nFWribKOKcc=", "dev": true, "requires": { "inherits": "~2.0.0" @@ -3636,12 +3636,17 @@ }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, @@ -3664,7 +3669,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", "dev": true }, "interpret": { @@ -3688,7 +3693,7 @@ "is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "integrity": "sha1-OV4a6EsR8mrReV5zwXN45IowFXY=", "dev": true, "requires": { "is-relative": "^1.0.0", @@ -3733,7 +3738,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, "is-builtin-module": { @@ -3864,7 +3869,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { "isobject": "^3.0.1" @@ -3893,7 +3898,7 @@ "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "integrity": "sha1-obtpNc6MXboei5dUubLcwCDiJg0=", "dev": true, "requires": { "is-unc-path": "^1.0.0" @@ -3914,7 +3919,7 @@ "is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "integrity": "sha1-1zHoiY7QkKEsNSrS6u1Qla0yLJ0=", "dev": true, "requires": { "unc-path-regex": "^0.1.2" @@ -3935,7 +3940,7 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", "dev": true }, "isarray": { @@ -4006,9 +4011,9 @@ "dev": true }, "jsonc-parser": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-1.0.0.tgz", - "integrity": "sha1-3cyGSucI5gp6bdNtrqABcvqNknI=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-1.0.3.tgz", + "integrity": "sha512-hk/69oAeaIzchq/v3lS50PXuzn5O2ynldopMC+SWBql7J2WtdptfB9dy8Y7+Og5rPkTCpn83zTiO8FMcqlXJ/g==" }, "jsonify": { "version": "0.0.0", @@ -4658,13 +4663,13 @@ "mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "integrity": "sha1-o0kgUKXLm2NFBUHjnZeI0icng9s=", "dev": true }, "mime-types": { "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=", "dev": true, "requires": { "mime-db": "~1.33.0" @@ -4680,13 +4685,13 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", "dev": true, "requires": { "for-in": "^1.0.2", @@ -4696,7 +4701,7 @@ "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -4706,7 +4711,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -4715,7 +4720,7 @@ "mocha": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz", - "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", + "integrity": "sha1-fYbPvPNcuCnidUwy4XNV7AUzh5Q=", "dev": true, "requires": { "browser-stdout": "1.3.0", @@ -4733,7 +4738,7 @@ "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "dev": true, "requires": { "ms": "2.0.0" @@ -5758,7 +5763,7 @@ "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", "dev": true, "requires": { "is-equal-shallow": "^0.1.3" @@ -5767,7 +5772,7 @@ "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", "dev": true, "requires": { "extend-shallow": "^3.0.2", @@ -5900,7 +5905,7 @@ "resolve": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "integrity": "sha1-HwmsznlsmnYlefMbLBzEw83fnzY=", "dev": true, "requires": { "path-parse": "^1.0.5" @@ -5934,13 +5939,13 @@ "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", "dev": true }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", "dev": true, "requires": { "glob": "^7.0.5" @@ -5949,7 +5954,7 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", "dev": true }, "safe-regex": { @@ -5990,7 +5995,7 @@ "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -6076,7 +6081,7 @@ "snapdragon-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", "dev": true, "requires": { "define-property": "^1.0.0", @@ -6139,7 +6144,7 @@ "snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", "dev": true, "requires": { "kind-of": "^3.2.0" @@ -6241,7 +6246,7 @@ "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", "dev": true, "requires": { "extend-shallow": "^3.0.0" @@ -6342,7 +6347,7 @@ "streamfilter": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz", - "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==", + "integrity": "sha1-rj5kUiqlo1wGH9F/Z2IMdlPGQ8k=", "dev": true, "requires": { "readable-stream": "^2.0.2" @@ -6521,7 +6526,7 @@ "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", "dev": true, "requires": { "define-property": "^2.0.2", @@ -6593,7 +6598,7 @@ "tough-cookie": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=", "dev": true, "requires": { "punycode": "^1.4.1" @@ -6644,7 +6649,7 @@ "tslint-no-unused-expression-chai": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tslint-no-unused-expression-chai/-/tslint-no-unused-expression-chai-0.0.3.tgz", - "integrity": "sha512-jKqhimj5gKl96ngeKxSVG1nOE7wmKRiHXD3kKpi+GG+5CmXJevD0ogsThZ8uSQCBIELFLVqXpZ43PpLniWu7jw==", + "integrity": "sha1-RV1X2yut8SoUNLLeV48f+uY+ynY=", "dev": true, "requires": { "tsutils": "^2.3.0" @@ -6850,7 +6855,7 @@ "uuid": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "integrity": "sha1-EsUou51Y0LkmXZovbw/ovhf/HxQ=", "dev": true }, "v8flags": { @@ -7072,7 +7077,7 @@ }, "vscode-languageclient": { "version": "3.5.1", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.5.1.tgz", + "resolved": "http://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.5.1.tgz", "integrity": "sha512-GTQ+hSq/o4c/y6GYmyP9XNrVoIu0NFZ67KltSkqN+tO0eUNDIlrVNX+3DJzzyLhSsrctuGzuYWm3t87mNAcBmQ==", "requires": { "vscode-languageserver-protocol": "3.5.1" @@ -7080,7 +7085,7 @@ }, "vscode-languageserver-protocol": { "version": "3.5.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.5.1.tgz", + "resolved": "http://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.5.1.tgz", "integrity": "sha512-1fPDIwsAv1difCV+8daOrJEGunClNJWqnUHq/ncWrjhitKWXgGmRCjlwZ3gDUTt54yRcvXz1PXJDaRNvNH6pYA==", "requires": { "vscode-jsonrpc": "3.5.0", @@ -7095,7 +7100,7 @@ "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", "dev": true, "requires": { "isexe": "^2.0.0" diff --git a/Extension/package.json b/Extension/package.json index 8409d3f3b8..0e51a745d0 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -801,7 +801,12 @@ }, "externalConsole": { "type": "boolean", - "description": "If true, a console is launched for the debuggee. If false, no console is launched. Note this option is ignored in some cases for technical reasons.", + "description": "If true, a console is launched for the debuggee. If false, on Linux and Windows, it will appear in the Integrated Console.", + "default": false + }, + "avoidWindowsConsoleRedirection": { + "type": "boolean", + "description": "If true, disables debuggee console redirection that is required for Integrated Terminal support.", "default": false }, "sourceFileMap": { diff --git a/Extension/tools/OptionsSchema.json b/Extension/tools/OptionsSchema.json index 212a99c698..5b2721028c 100644 --- a/Extension/tools/OptionsSchema.json +++ b/Extension/tools/OptionsSchema.json @@ -259,7 +259,12 @@ }, "externalConsole": { "type": "boolean", - "description": "If true, a console is launched for the debuggee. If false, no console is launched. Note this option is ignored in some cases for technical reasons.", + "description": "If true, a console is launched for the debuggee. If false, on Linux and Windows, it will appear in the Integrated Console.", + "default": false + }, + "avoidWindowsConsoleRedirection": { + "type": "boolean", + "description": "If true, disables debuggee console redirection that is required for Integrated Terminal support.", "default": false }, "sourceFileMap": { From 21fef3b0671a844009e024ec0aad15caae656c41 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Wed, 7 Nov 2018 14:47:57 -0800 Subject: [PATCH 04/35] use WebviewPanel (#2781) (#2783) --- Extension/src/common.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Extension/src/common.ts b/Extension/src/common.ts index 8a4a809cf5..994acc9028 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -167,8 +167,16 @@ export function getProgressExecutableSuccess(): number { return progressExecutab export function getProgressParseRootSuccess(): number { return progressParseRootSuccess; } // Parse root was successful (i.e. not blocked by processing taking too long). export function getProgressIntelliSenseNoSquiggles(): number { return progressIntelliSenseNoSquiggles; } // IntelliSense was successful and the user got no squiggles. -export function showReleaseNotes(): void { - vscode.commands.executeCommand('vscode.previewHtml', vscode.Uri.file(getExtensionFilePath("ReleaseNotes.html")), vscode.ViewColumn.One, "C/C++ Extension Release Notes"); +let releaseNotesPanel: vscode.WebviewPanel = undefined; + +export async function showReleaseNotes(): Promise { + if (releaseNotesPanel) { + releaseNotesPanel.reveal(); + } else { + releaseNotesPanel = vscode.window.createWebviewPanel('releaseNotes', "C/C++ Extension Release Notes", vscode.ViewColumn.One); + releaseNotesPanel.webview.html = await readFileText(getExtensionFilePath("ReleaseNotes.html")); + releaseNotesPanel.onDidDispose(() => releaseNotesPanel = undefined, null, extensionContext.subscriptions); + } } export function isUri(input: any): input is vscode.Uri { From 4938f5b2f44b8f44a2565ea277ab4293b0a18bfc Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 8 Nov 2018 16:14:52 -0800 Subject: [PATCH 05/35] Update changelog for 0.21.0-insiders. (#2794) --- Extension/CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index d91e074646..ad0a5a7ce5 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,14 @@ # C/C++ for Visual Studio Code Change Log +## Version 0.21.0-insiders: November 8, 2018 +* Add support for `__int128_t` and `__uint128_t` types. [#1815](https://github.com/Microsoft/vscode-cpptools/issues/1815) +* Fix for several incorrect IntelliSense error squiggles. [#1942](https://github.com/Microsoft/vscode-cpptools/issues/1942), [#2478](https://github.com/Microsoft/vscode-cpptools/issues/2478), [#2763](https://github.com/Microsoft/vscode-cpptools/issues/2763) +* Fix for several crashes. [#2505](https://github.com/Microsoft/vscode-cpptools/issues/2505), [#2768](https://github.com/Microsoft/vscode-cpptools/issues/2768) +* Fix completion not working in template specializations. [#2620](https://github.com/Microsoft/vscode-cpptools/issues/2620) +* Fix memory "leak" when parsing a large workspace. [#2737](https://github.com/Microsoft/vscode-cpptools/issues/2737) +* Fix `Go to Definition` when `__catch()`, `_NO_EXCEPT_DEBUG`, or `_LIBCPP_BEGIN_NAMESPACE_STD` is used. [#2761](https://github.com/Microsoft/vscode-cpptools/issues/2761), [#2766](https://github.com/Microsoft/vscode-cpptools/issues/2766) +* Fix compiler in `compile_commands.json` not taking precedence over the `Cpp.default.compilerPath`. [#2793](https://github.com/Microsoft/vscode-cpptools/issues/2793) + ## Version 0.20.1: October 31, 2018 * Fix IntelliSense-based `Go to Declaration` when there's only a definition in a TU. [#2743](https://github.com/Microsoft/vscode-cpptools/issues/2743) * Fix `#include` completion for standalone header files. [#2744](https://github.com/Microsoft/vscode-cpptools/issues/2744) From 5246cdc52786a87c8e8a0c46facaad92df7c0361 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 8 Nov 2018 17:21:36 -0800 Subject: [PATCH 06/35] Update changelog. (#2795) --- Extension/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index ad0a5a7ce5..edd13e6057 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -5,6 +5,7 @@ * Fix for several incorrect IntelliSense error squiggles. [#1942](https://github.com/Microsoft/vscode-cpptools/issues/1942), [#2478](https://github.com/Microsoft/vscode-cpptools/issues/2478), [#2763](https://github.com/Microsoft/vscode-cpptools/issues/2763) * Fix for several crashes. [#2505](https://github.com/Microsoft/vscode-cpptools/issues/2505), [#2768](https://github.com/Microsoft/vscode-cpptools/issues/2768) * Fix completion not working in template specializations. [#2620](https://github.com/Microsoft/vscode-cpptools/issues/2620) +* Fix IntelliSense-based `Go to Definition` with overloads that return a template with a default param (e.g. vector) [#2736](https://github.com/Microsoft/vscode-cpptools/issues/2736) * Fix memory "leak" when parsing a large workspace. [#2737](https://github.com/Microsoft/vscode-cpptools/issues/2737) * Fix `Go to Definition` when `__catch()`, `_NO_EXCEPT_DEBUG`, or `_LIBCPP_BEGIN_NAMESPACE_STD` is used. [#2761](https://github.com/Microsoft/vscode-cpptools/issues/2761), [#2766](https://github.com/Microsoft/vscode-cpptools/issues/2766) * Fix compiler in `compile_commands.json` not taking precedence over the `Cpp.default.compilerPath`. [#2793](https://github.com/Microsoft/vscode-cpptools/issues/2793) From 8f6714254a8a7f60a381c2917707462e5c8dcd81 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 8 Nov 2018 17:34:34 -0800 Subject: [PATCH 07/35] Seanmcm/0 21 0 changelog3 (#2796) * Change "Fix for" to "Fix" in changelog. --- Extension/CHANGELOG.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index edd13e6057..b2aa1c0aae 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -2,8 +2,8 @@ ## Version 0.21.0-insiders: November 8, 2018 * Add support for `__int128_t` and `__uint128_t` types. [#1815](https://github.com/Microsoft/vscode-cpptools/issues/1815) -* Fix for several incorrect IntelliSense error squiggles. [#1942](https://github.com/Microsoft/vscode-cpptools/issues/1942), [#2478](https://github.com/Microsoft/vscode-cpptools/issues/2478), [#2763](https://github.com/Microsoft/vscode-cpptools/issues/2763) -* Fix for several crashes. [#2505](https://github.com/Microsoft/vscode-cpptools/issues/2505), [#2768](https://github.com/Microsoft/vscode-cpptools/issues/2768) +* Fix several incorrect IntelliSense error squiggles. [#1942](https://github.com/Microsoft/vscode-cpptools/issues/1942), [#2478](https://github.com/Microsoft/vscode-cpptools/issues/2478), [#2763](https://github.com/Microsoft/vscode-cpptools/issues/2763) +* Fix several crashes. [#2505](https://github.com/Microsoft/vscode-cpptools/issues/2505), [#2768](https://github.com/Microsoft/vscode-cpptools/issues/2768) * Fix completion not working in template specializations. [#2620](https://github.com/Microsoft/vscode-cpptools/issues/2620) * Fix IntelliSense-based `Go to Definition` with overloads that return a template with a default param (e.g. vector) [#2736](https://github.com/Microsoft/vscode-cpptools/issues/2736) * Fix memory "leak" when parsing a large workspace. [#2737](https://github.com/Microsoft/vscode-cpptools/issues/2737) @@ -55,7 +55,7 @@ * Gabriel Arjones (@g-arjones) [PR #2495](https://github.com/Microsoft/vscode-cpptools/pull/2495), [PR #2503](https://github.com/Microsoft/vscode-cpptools/pull/2503) * Fix bug with variable resolution. [#2532](https://github.com/Microsoft/vscode-cpptools/issues/2532) * Fix off-by-one bug with hover and `Go to Definition`. [#2535](https://github.com/Microsoft/vscode-cpptools/issues/2535) -* Fix for [Microsoft/vscode#54213](https://github.com/Microsoft/vscode/issues/54213) +* Fix [Microsoft/vscode#54213](https://github.com/Microsoft/vscode/issues/54213) ## Version 0.18.1: August 17, 2018 * Fix 0.18.0 regression causing non-MinGW compilers to use `-fms-extensions` on Windows. [#2424](https://github.com/Microsoft/vscode-cpptools/issues/2424), [#2425](https://github.com/Microsoft/vscode-cpptools/issues/2425) @@ -119,10 +119,10 @@ * Fix variables not resolving in `macFrameworkPath`. [#2234](https://github.com/Microsoft/vscode-cpptools/issues/2234) * Fix `Go to Definition` not working for macros followed by `.` or `->`. [#2245](https://github.com/Microsoft/vscode-cpptools/issues/2245) * Fix `#include` autocomplete with Mac framework headers. [#2251](https://github.com/Microsoft/vscode-cpptools/issues/2251) -* Fix for debugging to support empty arguments for debuggee. [#2258](https://github.com/Microsoft/vscode-cpptools/issues/2258) +* Fix debugging to support empty arguments for debuggee. [#2258](https://github.com/Microsoft/vscode-cpptools/issues/2258) * Fix `Go to Definition` bug (missing symbols outside the workspace). [#2281](https://github.com/Microsoft/vscode-cpptools/issues/2281) * Add a setting to silence configuration provider warnings. [#2292](https://github.com/Microsoft/vscode-cpptools/issues/2292) -* Fix for debugging async Visual C++ causing debugger to hang. +* Fix debugging async Visual C++ causing debugger to hang. * Fix `main` snippet. ## Version 0.17.6: July 2, 2018 @@ -157,7 +157,7 @@ * On Windows, `compilerPath` now populates with the guessed `cl.exe` path, and the `MSVC` include path is based on the `cl.exe` path. * Fix files under a non-recursive `browse.path` being removed from the database. * Fix `*` not working in `browse.path` with WSL. -* Fix for -break-insert main returning multiple bind points. [#729](https://github.com/Microsoft/MIEngine/pull/729) +* Fix -break-insert main returning multiple bind points. [#729](https://github.com/Microsoft/MIEngine/pull/729) * Use -- instead of -x for gnome-terminal. [#733](https://github.com/Microsoft/MIEngine/pull/733) * Added `miDebuggerArgs` in order to pass arguments to the program in `miDebuggerPath`. [#720](https://github.com/Microsoft/MIEngine/pull/720) @@ -264,9 +264,9 @@ * Add `C_Cpp.exclusionPolicy` default to `checkFolders` to avoid expensive `files.exclude` checking on every file. ## Version 0.14.5: December 18, 2017 -* Fix for stackwalk `NullReferenceException`. [#1339](https://github.com/Microsoft/vscode-cpptools/issues/1339) -* Fix for `-isystem` (or `-I`) not being used in `compile_commands.json` if there's a space after it. [#1343](https://github.com/Microsoft/vscode-cpptools/issues/1343) -* Fix for header switching from `.cc` to `.hpp` files (and other cases). [#1341](https://github.com/Microsoft/vscode-cpptools/issues/1341) +* Fix stackwalk `NullReferenceException`. [#1339](https://github.com/Microsoft/vscode-cpptools/issues/1339) +* Fix `-isystem` (or `-I`) not being used in `compile_commands.json` if there's a space after it. [#1343](https://github.com/Microsoft/vscode-cpptools/issues/1343) +* Fix header switching from `.cc` to `.hpp` files (and other cases). [#1341](https://github.com/Microsoft/vscode-cpptools/issues/1341) * Fix reload prompts not appearing in debugging scenarios (after the initial installation). [#1344](https://github.com/Microsoft/vscode-cpptools/issues/1344) * Add a "wait" message when commands are invoked during download/installation. [#1344](https://github.com/Microsoft/vscode-cpptools/issues/1344) * Prevent blank "C/C++ Configuration" from appearing when debugging is started but the language service is not. [#1353](https://github.com/Microsoft/vscode-cpptools/issues/1353) @@ -285,9 +285,9 @@ * Improve performance for fetching call stacks with large arguments. [#363](https://github.com/Microsoft/vscode-cpptools/issues/363) ## Version 0.14.3: November 27, 2017 -* Fix for disappearing parameter hints tooltip. [#1165](https://github.com/Microsoft/vscode-cpptools/issues/1165) -* Fix for parameter hints only showing up after the opening parenthesis. [#902](https://github.com/Microsoft/vscode-cpptools/issues/902), [#819](https://github.com/Microsoft/vscode-cpptools/issues/819) -* Fix for customer reported crashes in the TypeScript extension code. [#1240](https://github.com/Microsoft/vscode-cpptools/issues/1240), [#1245](https://github.com/Microsoft/vscode-cpptools/issues/1245) +* Fix disappearing parameter hints tooltip. [#1165](https://github.com/Microsoft/vscode-cpptools/issues/1165) +* Fix parameter hints only showing up after the opening parenthesis. [#902](https://github.com/Microsoft/vscode-cpptools/issues/902), [#819](https://github.com/Microsoft/vscode-cpptools/issues/819) +* Fix customer reported crashes in the TypeScript extension code. [#1240](https://github.com/Microsoft/vscode-cpptools/issues/1240), [#1245](https://github.com/Microsoft/vscode-cpptools/issues/1245) * Fix .browse.VC-#.db files being unnecessarily created when an shm file exists. [#1234](https://github.com/Microsoft/vscode-cpptools/issues/1234) * Fix language service to only activate after a C/C++ file is opened or a C/Cpp command is used (not onDebug). * Fix database resetting if shutdown got blocked by an IntelliSense operation. [#1260](https://github.com/Microsoft/vscode-cpptools/issues/1260) @@ -355,7 +355,7 @@ * Support `${env:VAR}` syntax for environment variables in `c_cpp_properties.json`. [#1000](https://github.com/Microsoft/vscode-cpptools/issues/1000) * Support semicolon delimiters for include paths in `c_cpp_properties.json` to better support environment variables. [#1001](https://github.com/Microsoft/vscode-cpptools/issues/1001) * Add `__LITTLE_ENDIAN__=1` to default defines so that "endian.h" is not needed on Mac projects. [#1005](https://github.com/Microsoft/vscode-cpptools/issues/1005) -* Fix for source code files on Windows with incorrect casing. [#984](https://github.com/Microsoft/vscode-cpptools/issues/984) +* Fix source code files on Windows with incorrect casing. [#984](https://github.com/Microsoft/vscode-cpptools/issues/984) ## Version 0.12.3: August 17, 2017 * Fix regression for paths containing multibyte characters. [#958](https://github.com/Microsoft/vscode-cpptools/issues/958) @@ -408,8 +408,8 @@ * Fix `Go to Definition` not working until all `browse.path` files are re-scanned. [#788](https://github.com/Microsoft/vscode-cpptools/issues/788) ## Version 0.11.4: June 2, 2017 -* Fix for `System.Xml.Serialization.XmlSerializationReader threw an exception` when debugging on Linux. [#792](https://github.com/Microsoft/vscode-cpptools/issues/792) -* Fix for escaping for `${workspaceRoot}` in `launch.json`. +* Fix `System.Xml.Serialization.XmlSerializationReader threw an exception` when debugging on Linux. [#792](https://github.com/Microsoft/vscode-cpptools/issues/792) +* Fix escaping for `${workspaceRoot}` in `launch.json`. ## Version 0.11.3: May 31, 2017 * Fix `x86_64-pc-linux-gnu` and `x86_64-linux-gnu` paths missing from the default `includePath`. @@ -457,7 +457,7 @@ ## Version 0.10.5: March 21, 2017 * Fix a crash that randomly occurred when the size of a document increased. [#430](https://github.com/Microsoft/vscode-cpptools/issues/430) -* Fix for browsing not working for Linux/Mac stdlib.h functions. [#578](https://github.com/Microsoft/vscode-cpptools/issues/578) +* Fix browsing not working for Linux/Mac stdlib.h functions. [#578](https://github.com/Microsoft/vscode-cpptools/issues/578) * Additional fixes for switch header/source not respecting `files.exclude`. [#485](https://github.com/Microsoft/vscode-cpptools/issues/485) * Made `editor.quickSuggestions` dependent on `C_Cpp.autocomplete`. [#572](https://github.com/Microsoft/vscode-cpptools/issues/572) * We recommend you close and reopen your settings.json file anytime you change the `C_Cpp.autocomplete` setting. [More info here](https://github.com/Microsoft/vscode-cpptools/releases). From 9f1b482de4d3323ec3a770d1cf977db6bb3f0fce Mon Sep 17 00:00:00 2001 From: Julien Russo Date: Tue, 13 Nov 2018 01:54:22 +0100 Subject: [PATCH 08/35] Translation improvements (#2663) Moved command english translation to package.nls.json, added command translation for italian and modified package.json to use localization files. --- Extension/package.json | 70 +++++++++++++++++------------------ Extension/package.nls.it.json | 19 ++++++++++ Extension/package.nls.json | 19 ++++++++++ 3 files changed, 73 insertions(+), 35 deletions(-) create mode 100644 Extension/package.nls.it.json create mode 100644 Extension/package.nls.json diff --git a/Extension/package.json b/Extension/package.json index 0e51a745d0..df05bafa65 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -472,88 +472,88 @@ "commands": [ { "command": "C_Cpp.ConfigurationSelect", - "title": "Select a Configuration...", - "category": "C/Cpp" + "title": "%c_cpp.command.configurationSelect.title%", + "category": "C/C++" }, { "command": "C_Cpp.ConfigurationProviderSelect", - "title": "Change Configuration Provider...", - "category": "C/Cpp" + "title": "%c_cpp.command.configurationProviderSelect.title%", + "category": "C/C++" }, { "command": "C_Cpp.ConfigurationEdit", - "title": "Edit Configurations...", - "category": "C/Cpp" + "title": "%c_cpp.command.configurationEdit.title%", + "category": "C/C++" }, { "command": "C_Cpp.GoToDeclaration", - "title": "Go to Declaration", - "category": "C/Cpp" + "title": "%c_cpp.command.goToDeclaration.title%", + "category": "C/C++" }, { "command": "C_Cpp.PeekDeclaration", - "title": "Peek Declaration", - "category": "C/Cpp" + "title": "%c_cpp.command.peekDeclaration.title%", + "category": "C/C++" }, { "command": "C_Cpp.SwitchHeaderSource", - "title": "Switch Header/Source", - "category": "C/Cpp" + "title": "%c_cpp.command.switchHeaderSource.title%", + "category": "C/C++" }, { "command": "C_Cpp.Navigate", - "title": "Navigate...", - "category": "C/Cpp" + "title": "%c_cpp.command.navigate.title%", + "category": "C/C++" }, { "command": "C_Cpp.ToggleSnippets", - "title": "Toggle Snippets", - "category": "C/Cpp" + "title": "%c_cpp.command.toggleSnippets.title%", + "category": "C/C++" }, { "command": "C_Cpp.ToggleErrorSquiggles", - "title": "Toggle Error Squiggles", - "category": "C/Cpp" + "title": "%c_cpp.command.toggleErrorSquiggles.title%", + "category": "C/C++" }, { "command": "C_Cpp.ToggleIncludeFallback", - "title": "Toggle IntelliSense Engine Fallback on Include Errors", - "category": "C/Cpp" + "title": "%c_cpp.command.toggleIncludeFallback.title%", + "category": "C/C++" }, { "command": "C_Cpp.ToggleDimInactiveRegions", - "title": "Toggle Inactive Region Colorization", - "category": "C/Cpp" + "title": "%c_cpp.command.toggleDimInactiveRegions.title%", + "category": "C/C++" }, { "command": "C_Cpp.ShowReleaseNotes", - "title": "Show Release Notes", - "category": "C/Cpp" + "title": "%c_cpp.command.showReleaseNotes.title%", + "category": "C/C++" }, { "command": "C_Cpp.ResetDatabase", - "title": "Reset IntelliSense Database", - "category": "C/Cpp" + "title": "%c_cpp.command.resetDatabase.title%", + "category": "C/C++" }, { "command": "C_Cpp.PauseParsing", - "title": "Pause Parsing", - "category": "C/Cpp" + "title": "%c_cpp.command.pauseParsing.title%", + "category": "C/C++" }, { "command": "C_Cpp.ResumeParsing", - "title": "Resume Parsing", - "category": "C/Cpp" + "title": "%c_cpp.command.resumeParsing.title%", + "category": "C/C++" }, { "command": "C_Cpp.ShowParsingCommands", - "title": "Show Parsing Commands", - "category": "C/Cpp" + "title": "%c_cpp.command.showParsingCommands.title%", + "category": "C/C++" }, { "command": "C_Cpp.TakeSurvey", - "title": "Take Survey", - "category": "C/Cpp" + "title": "%c_cpp.command.takeSurvey.title%", + "category": "C/C++" } ], "keybindings": [ @@ -1585,4 +1585,4 @@ "binaries": [] } ] -} +} \ No newline at end of file diff --git a/Extension/package.nls.it.json b/Extension/package.nls.it.json new file mode 100644 index 0000000000..5624f96154 --- /dev/null +++ b/Extension/package.nls.it.json @@ -0,0 +1,19 @@ +{ + "c_cpp.command.configurationSelect.title": "Scegli una configurazione...", + "c_cpp.command.configurationProviderSelect.title": "Cambia provider configurazioni...", + "c_cpp.command.configurationEdit.title": "Modifica configurazioni...", + "c_cpp.command.goToDeclaration.title": "Vai a dichiarazione", + "c_cpp.command.peekDeclaration.title": "Visualizza dichiarazione", + "c_cpp.command.switchHeaderSource.title": "Visualizza Header/Sorgente", + "c_cpp.command.navigate.title": "Naviga...", + "c_cpp.command.toggleSnippets.title": "Attiva/Disattiva frammenti di codice", + "c_cpp.command.toggleErrorSquiggles.title": "Attiva/Disattiva sottolineamento errori", + "c_cpp.command.toggleIncludeFallback.title": "Attiva/Disattiva motore di fallback IntelliSense negli errori di inclusione", + "c_cpp.command.toggleDimInactiveRegions.title": "Attiva/Disattiva colorazione regioni inattive", + "c_cpp.command.showReleaseNotes.title": "Mostra note di rilascio", + "c_cpp.command.resetDatabase.title": "Reimposta il database di IntelliSense", + "c_cpp.command.pauseParsing.title": "Metti in pausa l'analisi del codice", + "c_cpp.command.resumeParsing.title": "Riprendi l'analisi del codice", + "c_cpp.command.showParsingCommands.title": "Mostra comandi per l'analisi del codice", + "c_cpp.command.takeSurvey.title": "Partecipa al Sondaggio" +} \ No newline at end of file diff --git a/Extension/package.nls.json b/Extension/package.nls.json new file mode 100644 index 0000000000..04f3be5b26 --- /dev/null +++ b/Extension/package.nls.json @@ -0,0 +1,19 @@ +{ + "c_cpp.command.configurationSelect.title": "Select a configuration...", + "c_cpp.command.configurationProviderSelect.title": "Change configuration provider...", + "c_cpp.command.configurationEdit.title": "Edit configurations...", + "c_cpp.command.goToDeclaration.title": "Go to declaration", + "c_cpp.command.peekDeclaration.title": "Peek declaration", + "c_cpp.command.switchHeaderSource.title": "Switch Header/Source", + "c_cpp.command.navigate.title": "Navigate...", + "c_cpp.command.toggleSnippets.title": "Toggle snippets", + "c_cpp.command.toggleErrorSquiggles.title": "Toggle error squiggles", + "c_cpp.command.toggleIncludeFallback.title": "Toggle IntelliSense engine fallback on include errors", + "c_cpp.command.toggleDimInactiveRegions.title": "Toggle inactive region colorization", + "c_cpp.command.showReleaseNotes.title": "Show release notes", + "c_cpp.command.resetDatabase.title": "Reset IntelliSense database", + "c_cpp.command.pauseParsing.title": "Pause parsing", + "c_cpp.command.resumeParsing.title": "Resume parsing", + "c_cpp.command.showParsingCommands.title": "Show parsing commands", + "c_cpp.command.takeSurvey.title": "Take survey" +} \ No newline at end of file From 3079fb58ae2ed8875574e477e8068bc50bc12164 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Tue, 13 Nov 2018 15:37:35 -0800 Subject: [PATCH 09/35] ignore update failures caused by no network present (#2808) --- Extension/src/common.ts | 8 ++++---- Extension/src/githubAPI.ts | 22 +++++++++++++++++++--- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Extension/src/common.ts b/Extension/src/common.ts index 994acc9028..b0729d01a3 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -630,10 +630,10 @@ export function downloadFileToDestination(urlStr: string, destinationPath: strin // Write file using downloaded data let createdFile: fs.WriteStream = fs.createWriteStream(destinationPath); createdFile.on('finish', () => { resolve(); }); - response.on('error', (error) => { reject(); }); + response.on('error', (error) => { reject(error); }); response.pipe(createdFile); }); - request.on('error', (error) => { reject(); }); + request.on('error', (error) => { reject(error); }); request.end(); }); } @@ -663,10 +663,10 @@ export function downloadFileToStr(urlStr: string, headers?: OutgoingHttpHeaders) } let downloadedData: string = ''; response.on('data', (data) => { downloadedData += data; }); - response.on('error', (error) => { reject(); }); + response.on('error', (error) => { reject(error); }); response.on('end', () => { resolve(downloadedData); }); }); - request.on('error', (error) => { reject(); }); + request.on('error', (error) => { reject(error); }); request.end(); }); } \ No newline at end of file diff --git a/Extension/src/githubAPI.ts b/Extension/src/githubAPI.ts index c6313631a6..56adc7c347 100644 --- a/Extension/src/githubAPI.ts +++ b/Extension/src/githubAPI.ts @@ -211,7 +211,15 @@ function isRateLimit(input: any): input is RateLimit { async function getRateLimit(): Promise { const header: OutgoingHttpHeaders = { 'User-Agent': 'vscode-cpptools' }; const data: string = await util.downloadFileToStr('https://api.github.com/rate_limit', header) - .catch(() => { throw new Error('Failed to download rate limit JSON'); }); + .catch((error) => { + if (error.code && error.code !== "ENOENT") { + // Only throw if the user is connected to the Internet. + throw new Error('Failed to download rate limit JSON'); + } + }); + if (!data) { + return Promise.resolve(null); + } let rateLimit: any; try { @@ -229,7 +237,7 @@ async function getRateLimit(): Promise { async function rateLimitExceeded(): Promise { const rateLimit: RateLimit = await getRateLimit(); - return rateLimit.rate.remaining <= 0; + return rateLimit && rateLimit.rate.remaining <= 0; } /** @@ -246,7 +254,15 @@ async function getReleaseJson(): Promise { const header: OutgoingHttpHeaders = { 'User-Agent': 'vscode-cpptools' }; const data: string = await util.downloadFileToStr(releaseUrl, header) - .catch(() => { throw new Error('Failed to download release JSON'); }); + .catch((error) => { + if (error.code && error.code !== "ENOENT") { + // Only throw if the user is connected to the Internet. + throw new Error('Failed to download release JSON'); + } + }); + if (!data) { + return Promise.resolve(null); + } // Parse the file let releaseJson: any; From fa8173076da238aab691aa75b5e432d25e8ab0a3 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 14 Nov 2018 17:51:23 -0800 Subject: [PATCH 10/35] Update MinGW.md (#2813) * Update MinGW.md --- Documentation/LanguageServer/MinGW.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/LanguageServer/MinGW.md b/Documentation/LanguageServer/MinGW.md index 2030efa165..a56d535fce 100644 --- a/Documentation/LanguageServer/MinGW.md +++ b/Documentation/LanguageServer/MinGW.md @@ -20,6 +20,12 @@ When you set the `compilerPath` property and change `intelliSenseMode` to `clang } ``` +Replace "gcc.exe" with whatever compiler you're using, e.g. "g++.exe", "clang-5.0.exe", etc. -- just make sure the file is a valid Windows executable (not a 0 size symlink). + +For Cygwin, set the `compilerPath` to the appropriate Cygwin path, e.g. "C:/cygwin64/bin/g++.exe". + +If it seems like the `compilerPath` is not getting used, you can debug the issue via [enabling logging](Enabling%20logging.md). + ## Extension version 0.16.1 and earlier: If you have an older version of the C/C++ extension installed, use [these instructions](Archive/MinGW.md) instead. From 230895d6ba2dec044b8c567d8cd83992389d95a2 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 14 Nov 2018 19:06:08 -0800 Subject: [PATCH 11/35] Remove from the start of call stack lines. (#2827) * Remove from the start of call stack lines. * Remove __1::. --- Extension/src/LanguageServer/extension.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index d719068bfd..044a4341a0 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -693,6 +693,8 @@ function handleCrashFileRead(err: NodeJS.ErrnoException, data: string): void { data = ""; lines.forEach((line: string) => { if (!line.includes(".dylib") && !line.includes("???")) { + line = line.replace(/^\d+\s+/, ""); // Remove from the start of the line. + line = line.replace(/std::__1::/g, "std::"); // __1:: is not helpful. data += (line + "\n"); } }); From f69e6e191bce3a1eb7078037ae040da3fcb389a2 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 14 Nov 2018 19:38:49 -0800 Subject: [PATCH 12/35] Update telemetry API. (#2828) --- Extension/package-lock.json | 114 ++++++++++++++++++------------------ Extension/package.json | 2 +- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/Extension/package-lock.json b/Extension/package-lock.json index 1c061f2898..ae974ff426 100644 --- a/Extension/package-lock.json +++ b/Extension/package-lock.json @@ -410,9 +410,9 @@ } }, "applicationinsights": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.0.5.tgz", - "integrity": "sha512-T6V4ZyhikGKnuqYGbNz1q5+ORROutUp58UqfLLwHH+X1RkcnEU+gW15kIKWJ8zqGWbilhn6bONJa+T5en642mg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-1.0.6.tgz", + "integrity": "sha512-VQT3kBpJVPw5fCO5n+WUeSx0VHjxFtD7znYbILBlVgOS9/cMDuGFmV2Br3ObzFyZUDGNbEfW36fD1y2/vAiCKw==", "requires": { "diagnostic-channel": "0.2.0", "diagnostic-channel-publishers": "0.2.1", @@ -447,7 +447,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-map": { @@ -715,7 +715,7 @@ "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { "cache-base": "^1.0.1", @@ -862,7 +862,7 @@ "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { "collection-visit": "^1.0.0", @@ -1028,7 +1028,7 @@ "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "^3.1.0", @@ -1179,7 +1179,7 @@ "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "^1.1.1" @@ -1194,7 +1194,7 @@ "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI=", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, "combined-stream": { @@ -1209,7 +1209,7 @@ "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", "dev": true }, "component-emitter": { @@ -1283,7 +1283,7 @@ "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -1325,7 +1325,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -1387,7 +1387,7 @@ "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { "is-descriptor": "^1.0.2", @@ -1465,7 +1465,7 @@ "diff": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", - "integrity": "sha1-qoVnpu7QPFMfyJ0/cRzQ5SWd7HU=", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", "dev": true }, "duplexer": { @@ -1588,7 +1588,7 @@ }, "es6-promisify": { "version": "5.0.0", - "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { "es6-promise": "^4.0.3" @@ -2904,7 +2904,7 @@ "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, "requires": { "global-prefix": "^1.0.1", @@ -2943,7 +2943,7 @@ "growl": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha1-GSa6kM8+3+KttJJ/WIC8IsZseQ8=", + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", "dev": true }, "gulp": { @@ -3167,7 +3167,7 @@ "gulp-mocha": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/gulp-mocha/-/gulp-mocha-5.0.0.tgz", - "integrity": "sha1-7XDr1fra5smNh68T27rVpgLiF7I=", + "integrity": "sha512-NIjXZLqqcw9DXIEBcfm0sP1AUDlUJJeaK9EGCH2s6lSwo5NK/cEat0Vm7XelOkxZnWl0O5Za+aM6E4jyxWxTlw==", "dev": true, "requires": { "dargs": "^5.1.0", @@ -3272,7 +3272,7 @@ "gulp-tslint": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/gulp-tslint/-/gulp-tslint-8.1.2.tgz", - "integrity": "sha1-4PQxlLRz1+drtFpY/oxg59/jvrI=", + "integrity": "sha512-0RNGqbp2TKPdbG+sWU3mNMXEMuF/noY1KS4+jd5lOStkvuFINkFL29dHX3IT1u+vVFD4Glwf+lkcdR2QMVNMzA==", "dev": true, "requires": { "gulp-util": "~3.0.8", @@ -3438,7 +3438,7 @@ "queue": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/queue/-/queue-4.4.2.tgz", - "integrity": "sha1-Wpcz2ai4vRs26TS8nFWribKOKcc=", + "integrity": "sha512-fSMRXbwhMwipcDZ08enW2vl+YDmAmhcNcr43sCJL8DIg+CFOsoRLG23ctxA+fwNk1w55SePSiS7oqQQSgQoVJQ==", "dev": true, "requires": { "inherits": "~2.0.0" @@ -3669,7 +3669,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, "interpret": { @@ -3693,7 +3693,7 @@ "is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha1-OV4a6EsR8mrReV5zwXN45IowFXY=", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", "dev": true, "requires": { "is-relative": "^1.0.0", @@ -3738,7 +3738,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-builtin-module": { @@ -3869,7 +3869,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -3898,7 +3898,7 @@ "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha1-obtpNc6MXboei5dUubLcwCDiJg0=", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", "dev": true, "requires": { "is-unc-path": "^1.0.0" @@ -3919,7 +3919,7 @@ "is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha1-1zHoiY7QkKEsNSrS6u1Qla0yLJ0=", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", "dev": true, "requires": { "unc-path-regex": "^0.1.2" @@ -3940,7 +3940,7 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "isarray": { @@ -4663,13 +4663,13 @@ "mime-db": { "version": "1.33.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha1-o0kgUKXLm2NFBUHjnZeI0icng9s=", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "dev": true }, "mime-types": { "version": "2.1.18", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, "requires": { "mime-db": "~1.33.0" @@ -4685,13 +4685,13 @@ }, "minimist": { "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -4701,7 +4701,7 @@ "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "^2.0.4" @@ -4711,7 +4711,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -4720,7 +4720,7 @@ "mocha": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz", - "integrity": "sha1-fYbPvPNcuCnidUwy4XNV7AUzh5Q=", + "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", "dev": true, "requires": { "browser-stdout": "1.3.0", @@ -4738,7 +4738,7 @@ "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { "ms": "2.0.0" @@ -5763,7 +5763,7 @@ "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { "is-equal-shallow": "^0.1.3" @@ -5772,7 +5772,7 @@ "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { "extend-shallow": "^3.0.2", @@ -5905,7 +5905,7 @@ "resolve": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha1-HwmsznlsmnYlefMbLBzEw83fnzY=", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", "dev": true, "requires": { "path-parse": "^1.0.5" @@ -5939,13 +5939,13 @@ "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { "glob": "^7.0.5" @@ -5954,7 +5954,7 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "safe-regex": { @@ -5995,7 +5995,7 @@ "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -6081,7 +6081,7 @@ "snapdragon-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { "define-property": "^1.0.0", @@ -6144,7 +6144,7 @@ "snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { "kind-of": "^3.2.0" @@ -6246,7 +6246,7 @@ "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { "extend-shallow": "^3.0.0" @@ -6347,7 +6347,7 @@ "streamfilter": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/streamfilter/-/streamfilter-1.0.7.tgz", - "integrity": "sha1-rj5kUiqlo1wGH9F/Z2IMdlPGQ8k=", + "integrity": "sha512-Gk6KZM+yNA1JpW0KzlZIhjo3EaBJDkYfXtYSbOwNIQ7Zd6006E6+sCFlW1NDvFG/vnXhKmw6TJJgiEQg/8lXfQ==", "dev": true, "requires": { "readable-stream": "^2.0.2" @@ -6526,7 +6526,7 @@ "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { "define-property": "^2.0.2", @@ -6598,7 +6598,7 @@ "tough-cookie": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "dev": true, "requires": { "punycode": "^1.4.1" @@ -6649,7 +6649,7 @@ "tslint-no-unused-expression-chai": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tslint-no-unused-expression-chai/-/tslint-no-unused-expression-chai-0.0.3.tgz", - "integrity": "sha1-RV1X2yut8SoUNLLeV48f+uY+ynY=", + "integrity": "sha512-jKqhimj5gKl96ngeKxSVG1nOE7wmKRiHXD3kKpi+GG+5CmXJevD0ogsThZ8uSQCBIELFLVqXpZ43PpLniWu7jw==", "dev": true, "requires": { "tsutils": "^2.3.0" @@ -6855,7 +6855,7 @@ "uuid": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha1-EsUou51Y0LkmXZovbw/ovhf/HxQ=", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", "dev": true }, "v8flags": { @@ -7063,11 +7063,11 @@ "integrity": "sha1-28EOjX2VsQJyehmvPw/O9+JSsI4=" }, "vscode-extension-telemetry": { - "version": "0.0.22", - "resolved": "https://registry.npmjs.org/vscode-extension-telemetry/-/vscode-extension-telemetry-0.0.22.tgz", - "integrity": "sha512-6/xT3UG6nPcNbBT29RPRJ6uRplI0l1m5ZBX9VXV3XGWrINDvWw2Nk/84xMeWDF1zI1YoPCcjeD0u4gH2OIsrcA==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.0.tgz", + "integrity": "sha512-WVCnP+uLxlqB6UD98yQNV47mR5Rf79LFxpuZhSPhEf0Sb4tPZed3a63n003/dchhOwyCTCBuNN4n8XKJkLEI1Q==", "requires": { - "applicationinsights": "1.0.5" + "applicationinsights": "1.0.6" } }, "vscode-jsonrpc": { @@ -7077,7 +7077,7 @@ }, "vscode-languageclient": { "version": "3.5.1", - "resolved": "http://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.5.1.tgz", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.5.1.tgz", "integrity": "sha512-GTQ+hSq/o4c/y6GYmyP9XNrVoIu0NFZ67KltSkqN+tO0eUNDIlrVNX+3DJzzyLhSsrctuGzuYWm3t87mNAcBmQ==", "requires": { "vscode-languageserver-protocol": "3.5.1" @@ -7085,7 +7085,7 @@ }, "vscode-languageserver-protocol": { "version": "3.5.1", - "resolved": "http://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.5.1.tgz", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.5.1.tgz", "integrity": "sha512-1fPDIwsAv1difCV+8daOrJEGunClNJWqnUHq/ncWrjhitKWXgGmRCjlwZ3gDUTt54yRcvXz1PXJDaRNvNH6pYA==", "requires": { "vscode-jsonrpc": "3.5.0", @@ -7100,7 +7100,7 @@ "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "^2.0.0" diff --git a/Extension/package.json b/Extension/package.json index df05bafa65..c18a5b5dab 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -1416,7 +1416,7 @@ "vscode-cpptools": "2.1.1", "vscode-debugadapter": "~1.24.0", "vscode-debugprotocol": "~1.24.0", - "vscode-extension-telemetry": "~0.0.22", + "vscode-extension-telemetry": "~0.1.0", "vscode-languageclient": "3.5.1", "yauzl": "~2.8.0" }, From 0f1071a5c9b4905b1497e8b983186e197fc8867d Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 16 Nov 2018 15:11:05 -0800 Subject: [PATCH 13/35] Seanmcm/exploration build (#2829) * Treat the Exploration build like Insiders. * Update changelog. --- Extension/CHANGELOG.md | 7 +++++++ Extension/src/LanguageServer/extension.ts | 4 +++- Extension/src/main.ts | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index b2aa1c0aae..ecd09ae8fe 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,12 @@ # C/C++ for Visual Studio Code Change Log +## Version 0.21.0-insiders2: November 20, 2018 +* Fix some IntelliSense process crashes. [#1785](https://github.com/Microsoft/vscode-cpptools/issues/1785) +* Fix incorrect IntelliSense error with Mac clang 10.0 libraries. [#2608](https://github.com/Microsoft/vscode-cpptools/issues/2608) +* Fix `Go to Definition` when `method(void)` is used. [#2802](https://github.com/Microsoft/vscode-cpptools/issues/2802) +* Fix PowerShell bug on Win7. [#2822](https://github.com/Microsoft/vscode-cpptools/issues/2822) +* Support `C_Cpp.updateChannel` for VS Code Exploration builds. + ## Version 0.21.0-insiders: November 8, 2018 * Add support for `__int128_t` and `__uint128_t` types. [#1815](https://github.com/Microsoft/vscode-cpptools/issues/1815) * Fix several incorrect IntelliSense error squiggles. [#1942](https://github.com/Microsoft/vscode-cpptools/issues/1942), [#2478](https://github.com/Microsoft/vscode-cpptools/issues/2478), [#2763](https://github.com/Microsoft/vscode-cpptools/issues/2763) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 044a4341a0..45ec09eff3 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -239,9 +239,11 @@ async function installVsix(vsixLocation: string, updateChannel: string): Promise const vsCodeScriptPath: string = function(platformInfo): string { if (platformInfo.platform === 'win32') { const vsCodeBinName: string = path.basename(process.execPath); - let cmdFile: string; // Windows VS Code Insiders breaks VS Code naming conventions + let cmdFile: string; // Windows VS Code Insiders/Exploration breaks VS Code naming conventions if (vsCodeBinName === 'Code - Insiders.exe') { cmdFile = 'code-insiders.cmd'; + } if (vsCodeBinName === 'Code - Exploration.exe') { + cmdFile = 'code-exploration.cmd'; } else { cmdFile = 'code.cmd'; } diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 6d991349c3..1b599130bd 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -299,7 +299,7 @@ async function finalizeExtensionActivation(): Promise { // (this may result in rewriting the package.json file) let packageJsonPath: string = util.getExtensionFilePath("package.json"); - if (!packageJsonPath.includes(".vscode-insiders")) { + if (!packageJsonPath.includes(".vscode-insiders") && !packageJsonPath.includes(".vscode-exploration")) { let abTestSettings: cpptoolsJsonUtils.ABTestSettings = cpptoolsJsonUtils.getABTestSettings(); let packageJson: any = util.getRawPackageJson(); let prevIntelliSenseEngineDefault: any = packageJson.contributes.configuration.properties["C_Cpp.intelliSenseEngine"].default; From f474ba8539c6d79b240c96327015da23f04313ac Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Tue, 27 Nov 2018 16:34:31 -0800 Subject: [PATCH 14/35] Seanmcm/fix insiders debugging (#2871) * Fix debugging with VS Code Insiders and other Linter fixes. --- Extension/.vscode/launch.json | 4 +- Extension/.vscode/tasks.json | 4 +- Extension/package-lock.json | 5 +++ Extension/package.json | 1 + .../debug.integration.test.ts | 12 +++--- .../SimpleCppProject/.vscode/tasks.json | 38 ++++++++++++++----- Extension/tools/OptionsSchema.json | 8 +++- 7 files changed, 49 insertions(+), 23 deletions(-) diff --git a/Extension/.vscode/launch.json b/Extension/.vscode/launch.json index 022eaed81c..8aafc7deee 100644 --- a/Extension/.vscode/launch.json +++ b/Extension/.vscode/launch.json @@ -15,7 +15,7 @@ "outFiles": [ "${workspaceFolder}/out/**/*.js" ], - "preLaunchTask": "compile", + "preLaunchTask": "TypeScript Compile", }, { "name": "Launch Tests", @@ -31,7 +31,7 @@ "outFiles": [ "${workspaceFolder}/out/test/**/*.js" ], - "preLaunchTask": "compile" + "preLaunchTask": "TypeScript Compile" }, { "name": "Node Attach", diff --git a/Extension/.vscode/tasks.json b/Extension/.vscode/tasks.json index bcf5503854..13b233108a 100644 --- a/Extension/.vscode/tasks.json +++ b/Extension/.vscode/tasks.json @@ -5,7 +5,6 @@ "tasks": [ { "label": "TypeScript Compile", - "identifier": "compile", "group": { "kind": "build", "isDefault": true @@ -29,7 +28,6 @@ }, { "label": "TypeScript Lint", - "identifier": "tslint", "group": "build", "isBackground": false, "type": "shell", @@ -53,7 +51,7 @@ ] }, "dependsOn": [ - "compile" + "TypeScript Compile" ] } ] diff --git a/Extension/package-lock.json b/Extension/package-lock.json index ae974ff426..e42f5f1dbc 100644 --- a/Extension/package-lock.json +++ b/Extension/package-lock.json @@ -4,6 +4,11 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + }, "@types/mocha": { "version": "2.2.45", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.45.tgz", diff --git a/Extension/package.json b/Extension/package.json index c18a5b5dab..381e721dff 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -1407,6 +1407,7 @@ "vscode": "^1.1.18" }, "dependencies": { + "@types/minimatch": "^3.0.3", "http-proxy-agent": "~2.1.0", "https-proxy-agent": "~2.2.0", "jsonc-parser": "^1.0.0", diff --git a/Extension/test/integrationTests/debug.integration.test.ts b/Extension/test/integrationTests/debug.integration.test.ts index 12b7b75801..434e35fd7d 100644 --- a/Extension/test/integrationTests/debug.integration.test.ts +++ b/Extension/test/integrationTests/debug.integration.test.ts @@ -6,10 +6,10 @@ import * as vscode from 'vscode'; import * as assert from 'assert'; -suite(`Debug Integration Test: `, function() { - suiteSetup(async function() { - let extension = vscode.extensions.getExtension("ms-vscode.cpptools"); - if (!extension.isActive) { +suite(`Debug Integration Test: `, function(): void { + suiteSetup(async function(): Promise { + let extension: vscode.Extension = vscode.extensions.getExtension("ms-vscode.cpptools"); + if (!extension.isActive) { await extension.activate(); } }); @@ -17,14 +17,14 @@ suite(`Debug Integration Test: `, function() { test("Starting (gdb) Launch from the workspace root should create an Active Debug Session", async () => { await vscode.debug.startDebugging(vscode.workspace.workspaceFolders[0], "(gdb) Launch"); - let debugSessionTerminated = new Promise(resolve => { + let debugSessionTerminated: Promise = new Promise(resolve => { vscode.debug.onDidTerminateDebugSession((e) => resolve()); }); try { assert.equal(vscode.debug.activeDebugSession.type, "cppdbg"); } catch (e) { - assert.fail("Debugger failed to launch. Did the extension activate correctly?") + assert.fail("Debugger failed to launch. Did the extension activate correctly?"); } await debugSessionTerminated; diff --git a/Extension/test/integrationTests/testAssets/SimpleCppProject/.vscode/tasks.json b/Extension/test/integrationTests/testAssets/SimpleCppProject/.vscode/tasks.json index 2aeffb6403..a25a78b199 100644 --- a/Extension/test/integrationTests/testAssets/SimpleCppProject/.vscode/tasks.json +++ b/Extension/test/integrationTests/testAssets/SimpleCppProject/.vscode/tasks.json @@ -1,16 +1,34 @@ { - "version": "0.1.0", + "version": "2.0.0", "tasks": [ { - "taskName": "build", - "command": "g++", - "isShellCommand": true, - "args": ["main.cpp", "-g", "-o", "program"], - "showOutput": "always", - "isBuildCommand": true, - "windows": { - "command": "C:\\MinGW\\bin\\g++.exe" - } + "label": "build", + "command": "g++", + "type": "shell", + "args": [ + "main.cpp", + "-g", + "-o", + "program" + ], + "group":{ + "kind": "build", + "isDefault": true + }, + "presentation": { + "echo": true, + "reveal": "always", + "focus": false, + "panel": "shared", + "showReuseMessage": true, + "clear": false + }, + "windows": { + "command": "C:\\MinGW\\bin\\g++.exe" + }, + "problemMatcher": [ + "$gcc" + ] } ] } \ No newline at end of file diff --git a/Extension/tools/OptionsSchema.json b/Extension/tools/OptionsSchema.json index 5b2721028c..07163c7178 100644 --- a/Extension/tools/OptionsSchema.json +++ b/Extension/tools/OptionsSchema.json @@ -110,8 +110,12 @@ "type": "object", "default": {}, "properties": { - "name": "string", - "value": "string" + "name": { + "type": "string" + }, + "value": { + "type": "string" + } } }, "CppdbgLaunchOptions": { From b78e85619a9bfa4799f61c7e56603df6061522ca Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Wed, 28 Nov 2018 09:17:16 -0800 Subject: [PATCH 15/35] bump up the timeout (#2872) --- Extension/src/LanguageServer/extension.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 45ec09eff3..be344106d9 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -282,8 +282,8 @@ async function installVsix(vsixLocation: string, updateChannel: string): Promise // Timeout the process if no response is sent back. Ensures this Promise resolves/rejects const timer: NodeJS.Timer = setTimeout(() => { process.kill(); - reject(new Error('Failed to receive response from VS Code script process for installation within 10s.')); - }, 10000); + reject(new Error('Failed to receive response from VS Code script process for installation within 30s.')); + }, 30000); // If downgrading, the VS Code CLI will prompt whether the user is sure they would like to downgrade. // Respond to this by writing 0 to stdin (the option to override and install the VSIX package) From b8641264943c5d71652b2b49e68cda1d8df10872 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 28 Nov 2018 11:33:16 -0800 Subject: [PATCH 16/35] Fix missed package.json issue from my last checkin. (#2873) --- Extension/package.json | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Extension/package.json b/Extension/package.json index 381e721dff..ecd12f50e6 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -728,8 +728,12 @@ "type": "object", "default": {}, "properties": { - "name": "string", - "value": "string" + "name": { + "type": "string" + }, + "value": { + "type": "string" + } } }, "default": [] @@ -1145,8 +1149,12 @@ "type": "object", "default": {}, "properties": { - "name": "string", - "value": "string" + "name": { + "type": "string" + }, + "value": { + "type": "string" + } } }, "default": [] From 8c53c027cab1f5b110367cb08ab8286a1a98ea80 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 28 Nov 2018 16:05:27 -0800 Subject: [PATCH 17/35] Protect against no activeDocument. (#2875) --- Extension/src/LanguageServer/clientCollection.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Extension/src/LanguageServer/clientCollection.ts b/Extension/src/LanguageServer/clientCollection.ts index 76e9f368e3..e14ad626de 100644 --- a/Extension/src/LanguageServer/clientCollection.ts +++ b/Extension/src/LanguageServer/clientCollection.ts @@ -119,7 +119,7 @@ export class ClientCollection { this.languageClients.set(key, cpptools.createNullClient()); } - if (this.activeClient === client) { + if (this.activeClient === client && this.activeDocument) { this.activeClient = this.getClientFor(this.activeDocument.uri); this.activeClient.activeDocumentChanged(this.activeDocument); } @@ -154,7 +154,7 @@ export class ClientCollection { client.TrackedDocuments.forEach(document => this.transferOwnership(document, client)); client.TrackedDocuments.clear(); - if (this.activeClient === client) { + if (this.activeClient === client && this.activeDocument) { // Need to make a different client the active client. this.activeClient = this.getClientFor(this.activeDocument.uri); this.activeClient.activeDocumentChanged(this.activeDocument); From bb962b91e81c8fc2fe5bd9532199eeab3c60ddf4 Mon Sep 17 00:00:00 2001 From: Matt Bise Date: Mon, 10 Dec 2018 18:50:53 -0500 Subject: [PATCH 18/35] Add refresh button to process picker (#2895) * Add attach QuickView with refresh * vscode engine 1.23 -> 1.26 * Clean up disposables * Add entry to CHANGELOG * Provide refresh image for dark and light themes * Add title to QuickPick --- Extension/CHANGELOG.md | 2 + Extension/assets/Refresh.svg | 1 + Extension/assets/Refresh_inverse.svg | 1 + Extension/package.json | 2 +- Extension/src/Debugger/attachQuickPick.ts | 70 +++++++++++++++++++++++ Extension/src/Debugger/attachToProcess.ts | 23 ++------ Extension/src/Debugger/nativeAttach.ts | 3 +- 7 files changed, 81 insertions(+), 21 deletions(-) create mode 100644 Extension/assets/Refresh.svg create mode 100644 Extension/assets/Refresh_inverse.svg create mode 100644 Extension/src/Debugger/attachQuickPick.ts diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index ecd09ae8fe..28843e55ba 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,7 @@ # C/C++ for Visual Studio Code Change Log +* Add refresh button to process picker. [#2885](https://github.com/Microsoft/vscode-cpptools/issues/2885) + ## Version 0.21.0-insiders2: November 20, 2018 * Fix some IntelliSense process crashes. [#1785](https://github.com/Microsoft/vscode-cpptools/issues/1785) * Fix incorrect IntelliSense error with Mac clang 10.0 libraries. [#2608](https://github.com/Microsoft/vscode-cpptools/issues/2608) diff --git a/Extension/assets/Refresh.svg b/Extension/assets/Refresh.svg new file mode 100644 index 0000000000..e034574819 --- /dev/null +++ b/Extension/assets/Refresh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Extension/assets/Refresh_inverse.svg b/Extension/assets/Refresh_inverse.svg new file mode 100644 index 0000000000..d79fdaa4e8 --- /dev/null +++ b/Extension/assets/Refresh_inverse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Extension/package.json b/Extension/package.json index ecd12f50e6..a6f6ee92c9 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -12,7 +12,7 @@ }, "license": "SEE LICENSE IN LICENSE.txt", "engines": { - "vscode": "^1.23.0" + "vscode": "^1.26.0" }, "bugs": { "url": "https://github.com/Microsoft/vscode-cpptools/issues", diff --git a/Extension/src/Debugger/attachQuickPick.ts b/Extension/src/Debugger/attachQuickPick.ts new file mode 100644 index 0000000000..914281607f --- /dev/null +++ b/Extension/src/Debugger/attachQuickPick.ts @@ -0,0 +1,70 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All Rights Reserved. + * See 'LICENSE' in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +import * as util from '../common'; +import * as vscode from 'vscode'; + +class RefreshButton implements vscode.QuickInputButton { + get iconPath(): { dark: vscode.Uri; light: vscode.Uri } { + const refreshImagePathDark: string = util.getExtensionFilePath("assets/Refresh_inverse.svg"); + const refreshImagePathLight: string = util.getExtensionFilePath("assets/Refresh.svg"); + + return { + dark: vscode.Uri.file(refreshImagePathDark), + light: vscode.Uri.file(refreshImagePathLight) + }; + } + + get tooltip(): string { + return "Refresh process list"; + } +} + +export interface AttachItem extends vscode.QuickPickItem { + id: string; +} + +export function showQuickPick(getAttachItems: () => Promise): Promise { + return getAttachItems().then(processEntries => { + return new Promise((resolve, reject) => { + let quickPick: vscode.QuickPick = vscode.window.createQuickPick(); + quickPick.title = "Attach to process"; + quickPick.canSelectMany = false; + quickPick.matchOnDescription = true; + quickPick.matchOnDetail = true; + quickPick.placeholder = "Select the process to attach to"; + quickPick.items = processEntries; + quickPick.buttons = [new RefreshButton()]; + + let disposables: vscode.Disposable[] = []; + + quickPick.onDidTriggerButton(button => { + getAttachItems().then(processEntries => quickPick.items = processEntries); + }, undefined, disposables); + + quickPick.onDidAccept(() => { + if (quickPick.selectedItems.length !== 1) { + reject(new Error("Process not selected")); + } + + let selectedId: string = quickPick.selectedItems[0].id; + + disposables.forEach(item => item.dispose()); + quickPick.dispose(); + + resolve(selectedId); + }, undefined, disposables); + + quickPick.onDidHide(() => { + disposables.forEach(item => item.dispose()); + quickPick.dispose(); + + reject(new Error("Process not selected.")); + }, undefined, disposables); + + quickPick.show(); + }); + }); +} diff --git a/Extension/src/Debugger/attachToProcess.ts b/Extension/src/Debugger/attachToProcess.ts index 6dac5a462d..156e90806c 100644 --- a/Extension/src/Debugger/attachToProcess.ts +++ b/Extension/src/Debugger/attachToProcess.ts @@ -5,6 +5,7 @@ import { execChildProcess } from '../common'; import { PsProcessParser } from './nativeAttach'; +import { AttachItem, showQuickPick } from './attachQuickPick'; import * as debugUtils from './utils'; import * as fs from 'fs'; @@ -13,10 +14,6 @@ import * as path from 'path'; import * as util from '../common'; import * as vscode from 'vscode'; -export interface AttachItem extends vscode.QuickPickItem { - id: string; -} - export interface AttachItemsProvider { getAttachItems(): Promise; } @@ -29,19 +26,7 @@ export class AttachPicker { if (!ready) { util.displayExtensionNotReadyPrompt(); } else { - return this.attachItemsProvider.getAttachItems() - .then(processEntries => { - let attachPickOptions: vscode.QuickPickOptions = { - matchOnDescription: true, - matchOnDetail: true, - placeHolder: "Select the process to attach to" - }; - - return vscode.window.showQuickPick(processEntries, attachPickOptions) - .then(chosenProcess => { - return chosenProcess ? chosenProcess.id : Promise.reject(new Error("Process not selected.")); - }); - }); + return showQuickPick(() => this.attachItemsProvider.getAttachItems()); } }); } @@ -74,7 +59,7 @@ export class RemoteAttachPicker { !fs.existsSync(pipeTransport.pipeProgram)) { const pipeProgramStr: string = pipeTransport.pipeProgram.toLowerCase().trim(); const expectedArch: debugUtils.ArchType = debugUtils.ArchType[process.arch]; - + // Check for pipeProgram if (!fs.existsSync(config.pipeTransport.pipeProgram)) { pipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(pipeProgramStr, expectedArch); @@ -84,7 +69,7 @@ export class RemoteAttachPicker { if (!pipeProgram && config.pipeTransport.pipeCwd) { const pipeCwdStr: string = config.pipeTransport.pipeCwd.toLowerCase().trim(); const newPipeProgramStr: string = path.join(pipeCwdStr, pipeProgramStr); - + if (!fs.existsSync(newPipeProgramStr)) { pipeProgram = debugUtils.ArchitectureReplacer.checkAndReplaceWSLPipeProgram(newPipeProgramStr, expectedArch); } diff --git a/Extension/src/Debugger/nativeAttach.ts b/Extension/src/Debugger/nativeAttach.ts index facc258ab8..0e34e1bf26 100644 --- a/Extension/src/Debugger/nativeAttach.ts +++ b/Extension/src/Debugger/nativeAttach.ts @@ -5,7 +5,8 @@ import * as child_process from 'child_process'; import * as os from 'os'; -import { AttachItem, AttachItemsProvider } from './attachToProcess'; +import { AttachItemsProvider } from './attachToProcess'; +import { AttachItem } from './attachQuickPick'; class Process { constructor(public name: string, public pid: string, public commandLine: string) { } From 8dc8b3bc372af08fab640b1d9a70e89eda34708a Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 13 Dec 2018 18:02:35 -0800 Subject: [PATCH 19/35] Update changelog for 0.21.0-insiders2. (#2911) * Update changelog for 0.21.0-insiders2. * Update README.md. * Update to 5.1.1 of the vscode-languageclient. --- Extension/CHANGELOG.md | 25 ++++++++---- Extension/README.md | 2 +- Extension/package-lock.json | 38 +++++++++++-------- Extension/package.json | 4 +- .../src/LanguageServer/protocolFilter.ts | 2 +- 5 files changed, 44 insertions(+), 27 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 28843e55ba..2e6c000481 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,13 +1,22 @@ # C/C++ for Visual Studio Code Change Log -* Add refresh button to process picker. [#2885](https://github.com/Microsoft/vscode-cpptools/issues/2885) - -## Version 0.21.0-insiders2: November 20, 2018 -* Fix some IntelliSense process crashes. [#1785](https://github.com/Microsoft/vscode-cpptools/issues/1785) +## Version 0.21.0-insiders2: December 13, 2018 +* Add documentation comments for hover, completion, and signature help. [#399](https://github.com/Microsoft/vscode-cpptools/issues/399) +* Fix bugs when UTF-8 characters > 1 byte are used. [#1504](https://github.com/Microsoft/vscode-cpptools/issues/1504), [#1525](https://github.com/Microsoft/vscode-cpptools/issues/1525), [#2034](https://github.com/Microsoft/vscode-cpptools/issues/2034), [#2082](https://github.com/Microsoft/vscode-cpptools/issues/2082), [#2883](https://github.com/Microsoft/vscode-cpptools/issues/2883) +* Fix some IntelliSense process crashes. [#1785](https://github.com/Microsoft/vscode-cpptools/issues/1785), [#2913](https://github.com/Microsoft/vscode-cpptools/issues/2913) +* Fix some incorrect IntelliSense error squiggles. [#2422](https://github.com/Microsoft/vscode-cpptools/issues/2422), [#2597](https://github.com/Microsoft/vscode-cpptools/issues/2597) * Fix incorrect IntelliSense error with Mac clang 10.0 libraries. [#2608](https://github.com/Microsoft/vscode-cpptools/issues/2608) +* Add Italian translations for command titles. + * Julien Russo (@Dotpys) [PR #2663](https://github.com/Microsoft/vscode-cpptools/pull/2663) * Fix `Go to Definition` when `method(void)` is used. [#2802](https://github.com/Microsoft/vscode-cpptools/issues/2802) * Fix PowerShell bug on Win7. [#2822](https://github.com/Microsoft/vscode-cpptools/issues/2822) * Support `C_Cpp.updateChannel` for VS Code Exploration builds. +* Add icons for operators, structs/unions, enum values, template arguments, and macros. [#2849](https://github.com/Microsoft/vscode-cpptools/issues/2849) +* Add text `(declaration)`, `(typedef)`, `(type alias)`, and `(union)` to symbols. [#2851](https://github.com/Microsoft/vscode-cpptools/issues/2851) +* Fix problem with empty recursive include paths. [#2855](https://github.com/Microsoft/vscode-cpptools/issues/2855) +* Fix `NullReferenceException` on debugger launch with VS Code Insiders. [#2858](https://github.com/Microsoft/vscode-cpptools/issues/2858), [PR Microsoft/MIEngine#810](https://github.com/Microsoft/MIEngine/pull/810) +* Add a refresh button to the `Attach to Process` picker. [#2885](https://github.com/Microsoft/vscode-cpptools/issues/2885) + * Matt Bise (@mbise1993) [PR #2895](https://github.com/Microsoft/vscode-cpptools/pull/2895) ## Version 0.21.0-insiders: November 8, 2018 * Add support for `__int128_t` and `__uint128_t` types. [#1815](https://github.com/Microsoft/vscode-cpptools/issues/1815) @@ -166,9 +175,9 @@ * On Windows, `compilerPath` now populates with the guessed `cl.exe` path, and the `MSVC` include path is based on the `cl.exe` path. * Fix files under a non-recursive `browse.path` being removed from the database. * Fix `*` not working in `browse.path` with WSL. -* Fix -break-insert main returning multiple bind points. [#729](https://github.com/Microsoft/MIEngine/pull/729) -* Use -- instead of -x for gnome-terminal. [#733](https://github.com/Microsoft/MIEngine/pull/733) -* Added `miDebuggerArgs` in order to pass arguments to the program in `miDebuggerPath`. [#720](https://github.com/Microsoft/MIEngine/pull/720) +* Fix -break-insert main returning multiple bind points. [PR Microsoft/MIEngine#729](https://github.com/Microsoft/MIEngine/pull/729) +* Use -- instead of -x for gnome-terminal. [PR Microsoft/MIEngine#733](https://github.com/Microsoft/MIEngine/pull/733) +* Added `miDebuggerArgs` in order to pass arguments to the program in `miDebuggerPath`. [PR Microsoft/MIEngine#720](https://github.com/Microsoft/MIEngine/pull/720) ## Version 0.17.4: May 31, 2018 * Fix infinite loop (caused by deadlock) when using recursive includes. [#2043](https://github.com/Microsoft/vscode-cpptools/issues/2043) @@ -400,7 +409,7 @@ * 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. [Microsoft/MIEngine#636](https://github.com/Microsoft/MIEngine/pull/636) +* 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) ## 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) diff --git a/Extension/README.md b/Extension/README.md index bdd02a2504..b8be24a4f1 100644 --- a/Extension/README.md +++ b/Extension/README.md @@ -2,7 +2,7 @@ This preview release of the extension adds language support for C/C++ to Visual Studio Code including: * Language service * Code Formatting (clang-format) - * Auto-Completion (experimental) + * Auto-Completion * Symbol Searching * Go to Definition/Declaration * Peek Definition/Declaration diff --git a/Extension/package-lock.json b/Extension/package-lock.json index e42f5f1dbc..52dbb3442d 100644 --- a/Extension/package-lock.json +++ b/Extension/package-lock.json @@ -7076,31 +7076,39 @@ } }, "vscode-jsonrpc": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.5.0.tgz", - "integrity": "sha1-hyOdnhZrLXNSJFuKgTWXgEwdY6o=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz", + "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==" }, "vscode-languageclient": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-3.5.1.tgz", - "integrity": "sha512-GTQ+hSq/o4c/y6GYmyP9XNrVoIu0NFZ67KltSkqN+tO0eUNDIlrVNX+3DJzzyLhSsrctuGzuYWm3t87mNAcBmQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-5.1.1.tgz", + "integrity": "sha512-jMxshi+BPRQFNG8GB00dJv7ldqMda0be26laYYll/udtJuHbog6RqK10GSxHWDN0PgY0b0m5fePyTk3bq8a0TA==", "requires": { - "vscode-languageserver-protocol": "3.5.1" + "semver": "^5.5.0", + "vscode-languageserver-protocol": "3.13.0" + }, + "dependencies": { + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + } } }, "vscode-languageserver-protocol": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.5.1.tgz", - "integrity": "sha512-1fPDIwsAv1difCV+8daOrJEGunClNJWqnUHq/ncWrjhitKWXgGmRCjlwZ3gDUTt54yRcvXz1PXJDaRNvNH6pYA==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.13.0.tgz", + "integrity": "sha512-2ZGKwI+P2ovQll2PGAp+2UfJH+FK9eait86VBUdkPd9HRlm8e58aYT9pV/NYanHOcp3pL6x2yTLVCFMcTer0mg==", "requires": { - "vscode-jsonrpc": "3.5.0", - "vscode-languageserver-types": "3.5.0" + "vscode-jsonrpc": "^4.0.0", + "vscode-languageserver-types": "3.13.0" } }, "vscode-languageserver-types": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.5.0.tgz", - "integrity": "sha1-5I15li8LjgLelV4/UkkI4rGcA3Q=" + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.13.0.tgz", + "integrity": "sha512-BnJIxS+5+8UWiNKCP7W3g9FlE7fErFw0ofP5BXJe7c2tl0VeWh+nNHFbwAS2vmVC4a5kYxHBjRy0UeOtziemVA==" }, "which": { "version": "1.3.0", diff --git a/Extension/package.json b/Extension/package.json index a6f6ee92c9..248eb1cc4c 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -1426,7 +1426,7 @@ "vscode-debugadapter": "~1.24.0", "vscode-debugprotocol": "~1.24.0", "vscode-extension-telemetry": "~0.1.0", - "vscode-languageclient": "3.5.1", + "vscode-languageclient": "5.1.1", "yauzl": "~2.8.0" }, "runtimeDependencies": [ @@ -1594,4 +1594,4 @@ "binaries": [] } ] -} \ No newline at end of file +} diff --git a/Extension/src/LanguageServer/protocolFilter.ts b/Extension/src/LanguageServer/protocolFilter.ts index 70581380b9..d81b39b6d8 100644 --- a/Extension/src/LanguageServer/protocolFilter.ts +++ b/Extension/src/LanguageServer/protocolFilter.ts @@ -47,7 +47,7 @@ export function createProtocolFilter(me: Client, clients: ClientCollection): Mid } }, - provideCompletionItem: invoke3, + provideCompletionItem: invoke4, resolveCompletionItem: invoke2, provideHover: invoke3, provideSignatureHelp: invoke3, From 968e0d2aaee91d6b9be92d351f19750a38cfb06a Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 14 Dec 2018 18:39:36 -0800 Subject: [PATCH 20/35] Fix bug with Insiders updating. --- Extension/src/LanguageServer/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index be344106d9..1c98ace64d 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -242,7 +242,7 @@ async function installVsix(vsixLocation: string, updateChannel: string): Promise let cmdFile: string; // Windows VS Code Insiders/Exploration breaks VS Code naming conventions if (vsCodeBinName === 'Code - Insiders.exe') { cmdFile = 'code-insiders.cmd'; - } if (vsCodeBinName === 'Code - Exploration.exe') { + } else if (vsCodeBinName === 'Code - Exploration.exe') { cmdFile = 'code-exploration.cmd'; } else { cmdFile = 'code.cmd'; From 4b22333f5c077862f98712f89cd42fb3f0ab5d5d Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 17 Dec 2018 13:58:43 -0800 Subject: [PATCH 21/35] Attempt to fix download failure. (#2931) * Retry vsix download with http.proxySupport "off". --- Extension/src/LanguageServer/extension.ts | 30 ++++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 1c98ace64d..d8d087c362 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -327,11 +327,33 @@ async function checkAndApplyUpdate(updateChannel: string): Promise { // then the .catch call will return a resolved promise // Thusly, the .catch call must also throw, as a return would simply return an unused promise // instead of returning early from this function scope + let config: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration(); + let originalProxySupport: string = config.inspect('http.proxySupport').globalValue; + while (true) { // Might need to try again with a different http.proxySupport setting. + try { + await util.downloadFileToDestination(buildInfo.downloadUrl, vsixPath); + } catch { + // Try again with the proxySupport to "off". + if (originalProxySupport !== config.inspect('http.proxySupport').globalValue) { + config.update('http.proxySupport', originalProxySupport, true); // Reset the http.proxySupport. + reject(new Error('Failed to download VSIX package with proxySupport off')); // Changing the proxySupport didn't help. + return; + } + if (config.get('http.proxySupport') !== "off" && originalProxySupport !== "off") { + config.update('http.proxySupport', "off", true); + continue; + } + reject(new Error('Failed to download VSIX package')); + return; + } + if (originalProxySupport !== config.inspect('http.proxySupport').globalValue) { + config.update('http.proxySupport', originalProxySupport, true); // Reset the http.proxySupport. + telemetry.logLanguageServerEvent('installVsix', { 'error': "Success with proxySupport off", 'success': 'true' }); + } + break; + } try { - await util.downloadFileToDestination(buildInfo.downloadUrl, vsixPath) - .catch(() => { throw new Error('Failed to download VSIX package'); }); - await installVsix(vsixPath, updateChannel) - .catch((error: Error) => { throw error; }); + await installVsix(vsixPath, updateChannel); } catch (error) { reject(error); return; From bd6f8f0df3d3c876c0d14026ba4a94610d91030c Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 17 Dec 2018 14:11:40 -0800 Subject: [PATCH 22/35] Update date in changelog. (#2926) * Update changelog. --- Extension/CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 2e6c000481..0234e5540a 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,6 +1,6 @@ # C/C++ for Visual Studio Code Change Log -## Version 0.21.0-insiders2: December 13, 2018 +## Version 0.21.0-insiders2: December 17, 2018 * Add documentation comments for hover, completion, and signature help. [#399](https://github.com/Microsoft/vscode-cpptools/issues/399) * Fix bugs when UTF-8 characters > 1 byte are used. [#1504](https://github.com/Microsoft/vscode-cpptools/issues/1504), [#1525](https://github.com/Microsoft/vscode-cpptools/issues/1525), [#2034](https://github.com/Microsoft/vscode-cpptools/issues/2034), [#2082](https://github.com/Microsoft/vscode-cpptools/issues/2082), [#2883](https://github.com/Microsoft/vscode-cpptools/issues/2883) * Fix some IntelliSense process crashes. [#1785](https://github.com/Microsoft/vscode-cpptools/issues/1785), [#2913](https://github.com/Microsoft/vscode-cpptools/issues/2913) @@ -17,6 +17,7 @@ * Fix `NullReferenceException` on debugger launch with VS Code Insiders. [#2858](https://github.com/Microsoft/vscode-cpptools/issues/2858), [PR Microsoft/MIEngine#810](https://github.com/Microsoft/MIEngine/pull/810) * Add a refresh button to the `Attach to Process` picker. [#2885](https://github.com/Microsoft/vscode-cpptools/issues/2885) * Matt Bise (@mbise1993) [PR #2895](https://github.com/Microsoft/vscode-cpptools/pull/2895) +* Retry Insider VSIX downloading with `http.proxySupport` `"off"`. [#2927](https://github.com/Microsoft/vscode-cpptools/issues/2927) ## Version 0.21.0-insiders: November 8, 2018 * Add support for `__int128_t` and `__uint128_t` types. [#1815](https://github.com/Microsoft/vscode-cpptools/issues/1815) From 7935b97329c7095dd6fb234054e2517915671dc4 Mon Sep 17 00:00:00 2001 From: Andrew Wang Date: Mon, 17 Dec 2018 14:33:09 -0800 Subject: [PATCH 23/35] Update How To Debug MIEngine.md (#2935) * Update How To Debug MIEngine.md Added information on how to debug with VS Code * Update How To Debug MIEngine.md * .dll -> .pdb Mistake on symbol list --- .../Debugger/How To Debug MIEngine.md | 67 ++++++++++++++----- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/Documentation/Debugger/How To Debug MIEngine.md b/Documentation/Debugger/How To Debug MIEngine.md index 79b19f74e0..acd1606eab 100644 --- a/Documentation/Debugger/How To Debug MIEngine.md +++ b/Documentation/Debugger/How To Debug MIEngine.md @@ -15,12 +15,13 @@ You can open the solution file **MIDebugEngine.sln** located under **src** and c * Microsoft.MIDebugEngine.dll * vscode\OpenDebugAD7.exe * vscode\Microsoft.DebugEngineHost.dll +* vscode\Microsoft.VisualStudio.Shared.VSCodeDebugProtocol.dll The symbol files are as follows: **On Windows** * Microsoft.MICore.pdb -* Microsoft.MIDebugEngine.dll +* Microsoft.MIDebugEngine.pdb * vscode\OpenDebugAD7.pdb * vscode\Microsoft.DebugEngineHost.pdb @@ -51,11 +52,13 @@ This will cause the debugger to look like it has hung once you start debugging, ### Debugging MIEngine running on Linux or Mac OS X +#### 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. -#### Install Prerequisites -1. Install [GTK](http://www.mono-project.com/download/) -2. Install [Xamarin Studio v5.10.1.6](http://download.xamarin.com/studio/Windows/XamarinStudio-5.10.1.6-0.msi) +##### Install Prerequisites +1. Install [GTK](http://www.mono-project.com/download/). +2. Install [Xamarin Studio v5.10.1.6](http://download.xamarin.com/studio/Windows/XamarinStudio-5.10.1.6-0.msi). Remote attach functionality behind a flag. You can run it like this: ```PowerShell @@ -64,26 +67,60 @@ set MONODEVELOP_SDB_TEST=1 MonoDevelop.exe ``` -#### Create an empty project for attaching (one-time setup) +##### Create an empty project for attaching (one-time setup) -1. Launch MonoDevelop -2. File -> New Solution -3. Misc/Generic Project -4. Name project and hit "Create" -5. Right-click the project node (blue square) and do "Options" +1. Launch MonoDevelop. +2. File -> New Solution. +3. Misc/Generic Project. +4. Name project and hit "Create". +5. Right-click the project node (blue square) and do "Options". 6. Under Run -> Custom Commands, select "Execute" in the lower dropdown and choose a command (I use `c:\windows\notepad.exe` - it doesn't matter what the command is, but MonoDevelop requires it to exist before it'll light up the Run menu). -#### Configure the extension to enable remote debugging +##### Configure the extension to enable remote debugging Open the **~/.vscode/extensions/ms-vscode.cpptools-\/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 +##### 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 +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. After you've done this once, you can hit the MonoDevelop "Play" button or F5 to bring up the connect dialog again. -Note: If you are debugging to CentOS, you will need to make an exception in the firewall +#### With VS Code + Mono Debug + +##### Install Prerequisites +1. Install [VS Code](https://code.visualstudio.com/Download). +2. Install Mono Debug extension for VS Code. + +##### Create an empty project (one-time setup) +1. Open to a new folder and create `.vscode/launch.json`. +2. Create the following configuration in launch.json. +``` +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to Mono", + "request": "attach", + "type": "mono", + "address": "", + "port": 1234 + } + ] +} +``` + +##### Configure the extension to enable remote debugging + +Open the **~/.vscode/extensions/ms-vscode.cpptools-\/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 + +Selet the `Attach to Mono` configuration and hit F5. + +#### Additional Notes + +Note: If you are debugging to CentOS, you will need to make an exception in the firewall. * `sudo firewall-cmd --zone=public --add-port=1234/tcp --permanent` * `sudo firewall-cmd --reload` From f58af4fb2e3c3ee9ce53d93913c2c49bed072ffd Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 20 Dec 2018 14:39:41 -0800 Subject: [PATCH 24/35] Disable wordBasedSuggestions by default. (#2944) --- Extension/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Extension/package.json b/Extension/package.json index 248eb1cc4c..31e351de8c 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -1367,10 +1367,10 @@ }, "configurationDefaults": { "[cpp]": { - "editor.autoIndent": false + "editor.wordBasedSuggestions": false }, "[c]": { - "editor.autoIndent": false + "editor.wordBasedSuggestions": false } }, "snippets": [ From c727ceca1b7d70868b34cbac124315f83cb247e5 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 27 Dec 2018 18:36:27 -0800 Subject: [PATCH 25/35] Remove json-based snippets, handled by the server now. (#2945) * Remove json-based snippets, handled by the server now. --- Extension/cpp_snippets.json | 140 ---------------------- Extension/package.json | 17 +-- Extension/package.nls.it.json | 1 - Extension/package.nls.json | 1 - Extension/src/LanguageServer/extension.ts | 42 ------- Extension/src/commands.ts | 1 - Extension/src/main.ts | 1 - 7 files changed, 1 insertion(+), 202 deletions(-) delete mode 100644 Extension/cpp_snippets.json diff --git a/Extension/cpp_snippets.json b/Extension/cpp_snippets.json deleted file mode 100644 index ccb7dc811f..0000000000 --- a/Extension/cpp_snippets.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "class": { - "prefix": "class", - "body": "\nclass ${1:${TM_FILENAME_BASE}}\n{\nprivate:\n\t${2:/* data */}\npublic:\n\t${1}(${3:/* args */});\n\t~${1}();\n};\n\n${1}::${1}(${3})\n{\n}\n\n${1}::~${1}()\n{\n}\n", - "description": "Code snippet for class", - "scope": "source.c++, source.objc++" - }, - "classi": { - "prefix": "classi", - "body": "\nclass ${1:${TM_FILENAME_BASE}}\n{\nprivate:\n\t${2:/* data */}\npublic:\n\t${1}(${3:/* args */}) { $0}\n\t~${1}() { }\n};", - "description": "Code snippet for class with inlined constructor/destructor", - "scope": "source.c++, source.objc++" - }, - "classt": { - "prefix": "classt", - "body": "\ntemplate\nclass ${1:${TM_FILENAME_BASE}}\n{\nprivate:\n\tT ${2:/* data */}\npublic:\n\t${1}(T ${3:/* args */});\n};\n", - "description": "Code snippet for class template", - "scope": "source.c++, source.objc++" - }, - "struct": { - "prefix": "struct", - "body": "\nstruct ${1:${TM_FILENAME_BASE}}\n{\n\t${0:/* data */}\n};\n", - "description": "Code snippet for struct", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "union": { - "prefix": "union", - "body": "\nunion ${1:${TM_FILENAME_BASE}}\n{\n\t${0:/* data */}\n};\n", - "description": "Code snippet for union", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "if": { - "prefix": "if", - "body": "\nif (${1:/* condition */}) {\n\t${0:/* code */}\n}\n", - "description": "Code snippet for if()", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "ifel": { - "prefix": "ifel", - "body": "\nif (${1:/* condition */}) {\n\t${2:/* code */}\n}\nelse {\n\t${0:/* code */}\n}\n", - "description": "Code snippet for if() else", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "ifelif": { - "prefix": "ifelif", - "body": "\nif (${1:/* condition */}) {\n\t${2:/* code */}\n}\nelse if(${3:/* condition */}) {\n\t${4:/* code */}\n}\nelse {\n\t${0:/* code */}\n}\n", - "description": "Code snippet for if() else if() else", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "else": { - "prefix": "else", - "body": "\nelse\n{\n\t${0:/* code */}\n}\n", - "description": "Code snippet for else", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "elif": { - "prefix": "elif", - "body": "\nelse if (${1:/* condition */})\n{\n\t${0:/* code */}\n}\n", - "description": "Code snippet for else if ()", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "switch": { - "prefix": "switch", - "body": "\nswitch (${1:expression})\n{\n\tcase ${2:/* constant-expression */}:\n\t\t${3:/* code */}\n\t\tbreak;\n\n\tdefault:\n\t\tbreak;\n}", - "description": "Code snippet for switch", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "main": { - "prefix": "main", - "body": "main(int argc, char const *argv[])\n{\n\t${1:/* code */}\n\treturn 0;\n}\n", - "description": "Code snippet for main()", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "do": { - "prefix": "do_", - "body": "\ndo\n{\n\t${0:/* code */}\n} while (${1:/* condition */});\n", - "description": "Code snippet for do while loop", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "for": { - "prefix": "for", - "body": "\nfor(${1:size_t} ${2:i} = 0; $2 < ${3:count}; ${4:$2++})\n{\n\t${0:/* code */}\n}\n", - "description": "Code snippet for for loop", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "forr": { - "prefix": "forr", - "body": "\nfor(int ${1:i} = ${2:length} - 1; $1 >= 0; ${3:$1--})\n{\n\t${0:/* code */}\n}\n", - "description": "Code snippet for reverse for loop", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "foreach": { - "prefix": "foreach", - "body": "\nfor(${1:object} = ${2:var} in ${3:collection})\n{\n\t${0:/* code */}\n}\n", - "description": "Code snippet for foreach loop", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "forrange": { - "prefix": "forrange", - "body": "\nfor(auto&& ${1:i} : ${2:v})\n{\n\t$0\n}\n", - "description": "Code snippet for range-based forloop", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "while": { - "prefix": "while", - "body": "\nwhile(${1:/* condition */}){\n\t${2:/* code */}\n}\n", - "description": "Code snippet for while loop", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "ifd": { - "prefix": "ifnd", - "body": "\n#if defined($1)\n\n${0}\n\n#endif // $1\n", - "description": "Code snippet for if defined()", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "ifnd": { - "prefix": "ifnd", - "body": "\n#if !defined($1)\n#define ${1:MACRO}\n\n${0}\n\n#endif // $1\n", - "description": "Code snippet for if !defined()", - "scope": "source.c, source.objc, source.c++, source.objc++" - }, - "mitl": { - "prefix": "mitl", - "body": "\n// The MIT License (MIT)\n\n// Copyright (c) ${1:YEAR} ${2:NAME}\n\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the \"Software\"),\n// to deal in the Software without restriction, including without limitation\n// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n// and/or sell copies of the Software, and to permit persons to whom the\n// Software is furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n// DEALINGS IN THE SOFTWARE.\n\n${0:/* code */}\n", - "description": "Code snippet for MIT License", - "scope": "" - }, - "namesp": { - "prefix": "namesp", - "body": "\nnamespace ${1:name}\n{\n\t$0\n} // $1\n", - "description": "Code snippet for namespace", - "scope": "source.c++, source.objc++" - }, - "try": { - "prefix": "try", - "body": "\ntry\n{\n\t${1:/* code */}\n}\ncatch(${2:const std::exception& e})\n{\n\t${0:std::cerr << e.what() << '\\n';}\n}\n", - "description": "Code snippet for try catch block", - "scope": "source.c++, source.objc++, source.c++11" - } -} diff --git a/Extension/package.json b/Extension/package.json index 31e351de8c..7021c397fc 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -505,11 +505,6 @@ "title": "%c_cpp.command.navigate.title%", "category": "C/C++" }, - { - "command": "C_Cpp.ToggleSnippets", - "title": "%c_cpp.command.toggleSnippets.title%", - "category": "C/C++" - }, { "command": "C_Cpp.ToggleErrorSquiggles", "title": "%c_cpp.command.toggleErrorSquiggles.title%", @@ -1372,17 +1367,7 @@ "[c]": { "editor.wordBasedSuggestions": false } - }, - "snippets": [ - { - "language": "cpp", - "path": "./cpp_snippets.json" - }, - { - "language": "c", - "path": "./cpp_snippets.json" - } - ] + } }, "scripts": { "compile": "npm run vscode:prepublish", diff --git a/Extension/package.nls.it.json b/Extension/package.nls.it.json index 5624f96154..e6735b8399 100644 --- a/Extension/package.nls.it.json +++ b/Extension/package.nls.it.json @@ -6,7 +6,6 @@ "c_cpp.command.peekDeclaration.title": "Visualizza dichiarazione", "c_cpp.command.switchHeaderSource.title": "Visualizza Header/Sorgente", "c_cpp.command.navigate.title": "Naviga...", - "c_cpp.command.toggleSnippets.title": "Attiva/Disattiva frammenti di codice", "c_cpp.command.toggleErrorSquiggles.title": "Attiva/Disattiva sottolineamento errori", "c_cpp.command.toggleIncludeFallback.title": "Attiva/Disattiva motore di fallback IntelliSense negli errori di inclusione", "c_cpp.command.toggleDimInactiveRegions.title": "Attiva/Disattiva colorazione regioni inattive", diff --git a/Extension/package.nls.json b/Extension/package.nls.json index 04f3be5b26..07190b6125 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -6,7 +6,6 @@ "c_cpp.command.peekDeclaration.title": "Peek declaration", "c_cpp.command.switchHeaderSource.title": "Switch Header/Source", "c_cpp.command.navigate.title": "Navigate...", - "c_cpp.command.toggleSnippets.title": "Toggle snippets", "c_cpp.command.toggleErrorSquiggles.title": "Toggle error squiggles", "c_cpp.command.toggleIncludeFallback.title": "Toggle IntelliSense engine fallback on include errors", "c_cpp.command.toggleDimInactiveRegions.title": "Toggle inactive region colorization", diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index d8d087c362..d6de0a0d76 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -395,7 +395,6 @@ function registerCommands(): void { disposables.push(vscode.commands.registerCommand('C_Cpp.ConfigurationEdit', onEditConfiguration)); disposables.push(vscode.commands.registerCommand('C_Cpp.AddToIncludePath', onAddToIncludePath)); disposables.push(vscode.commands.registerCommand('C_Cpp.ToggleErrorSquiggles', onToggleSquiggles)); - disposables.push(vscode.commands.registerCommand('C_Cpp.ToggleSnippets', onToggleSnippets)); disposables.push(vscode.commands.registerCommand('C_Cpp.ToggleIncludeFallback', onToggleIncludeFallback)); disposables.push(vscode.commands.registerCommand('C_Cpp.ToggleDimInactiveRegions', onToggleDimInactiveRegions)); disposables.push(vscode.commands.registerCommand('C_Cpp.ShowReleaseNotes', onShowReleaseNotes)); @@ -542,47 +541,6 @@ function onToggleSquiggles(): void { settings.toggleSetting("errorSquiggles", "Enabled", "Disabled"); } -function onToggleSnippets(): void { - onActivationEvent(); - - // This will apply to all clients as it's a global toggle. It will require a reload. - const snippetsCatName: string = "Snippets"; - let newPackageJson: any = util.getRawPackageJson(); - - if (newPackageJson.categories.findIndex(cat => cat === snippetsCatName) === -1) { - // Add the Snippet category and snippets node. - - newPackageJson.categories.push(snippetsCatName); - newPackageJson.contributes.snippets = [{"language": "cpp", "path": "./cpp_snippets.json"}, {"language": "c", "path": "./cpp_snippets.json"}]; - - fs.writeFile(util.getPackageJsonPath(), util.stringifyPackageJson(newPackageJson), () => { - showReloadPrompt("Reload Window to finish enabling C++ snippets"); - }); - - } else { - // Remove the category and snippets node. - let ndxCat: number = newPackageJson.categories.indexOf(snippetsCatName); - if (ndxCat !== -1) { - newPackageJson.categories.splice(ndxCat, 1); - } - - delete newPackageJson.contributes.snippets; - - fs.writeFile(util.getPackageJsonPath(), util.stringifyPackageJson(newPackageJson), () => { - showReloadPrompt("Reload Window to finish disabling C++ snippets"); - }); - } -} - -function showReloadPrompt(msg: string): void { - let reload: string = "Reload"; - vscode.window.showInformationMessage(msg, reload).then(value => { - if (value === reload) { - vscode.commands.executeCommand("workbench.action.reloadWindow"); - } - }); - } - function onToggleIncludeFallback(): void { onActivationEvent(); // This only applies to the active client. diff --git a/Extension/src/commands.ts b/Extension/src/commands.ts index de78bfe03b..de94515aa9 100644 --- a/Extension/src/commands.ts +++ b/Extension/src/commands.ts @@ -24,7 +24,6 @@ class TemporaryCommandRegistrar { "C_Cpp.ToggleErrorSquiggles", "C_Cpp.ToggleIncludeFallback", "C_Cpp.ToggleDimInactiveRegions", - "C_Cpp.ToggleSnippets", "C_Cpp.ShowReleaseNotes", "C_Cpp.ResetDatabase", "C_Cpp.PauseParsing", diff --git a/Extension/src/main.ts b/Extension/src/main.ts index 1b599130bd..039b595104 100644 --- a/Extension/src/main.ts +++ b/Extension/src/main.ts @@ -339,7 +339,6 @@ function rewriteManifest(): Promise { "onCommand:C_Cpp.ToggleErrorSquiggles", "onCommand:C_Cpp.ToggleIncludeFallback", "onCommand:C_Cpp.ToggleDimInactiveRegions", - "onCommand:C_Cpp.ToggleSnippets", "onCommand:C_Cpp.ShowReleaseNotes", "onCommand:C_Cpp.ResetDatabase", "onCommand:C_Cpp.PauseParsing", From de9cc715fc365f2e08a665a432e464a064073996 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 2 Jan 2019 18:15:05 -0800 Subject: [PATCH 26/35] Give a better message if the binary is missing. (#2975) * Give a better message if the binary is missing. --- Extension/src/LanguageServer/client.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 1b0dbd1c7c..a4ba37098a 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -29,6 +29,7 @@ import { SettingsTracker, getTracker } from './settingsTracker'; import { getTestHook, TestHook } from '../testHook'; import { getCustomConfigProviders, CustomConfigurationProviderCollection, CustomConfigurationProvider1 } from '../LanguageServer/customProviders'; import { ABTestSettings, getABTestSettings } from '../abTesting'; +import * as fs from 'fs'; let ui: UI; const configProviderTimeout: number = 2000; @@ -353,6 +354,10 @@ class DefaultClient implements Client { private createLanguageClient(allClients: ClientCollection, workspaceFolder?: vscode.WorkspaceFolder): LanguageClient { let serverModule: string = getLanguageServerFileName(); + let exeExists: boolean = fs.existsSync(serverModule); + if (!exeExists) { + throw String('Missing binary at ' + serverModule); + } let serverName: string = this.getName(workspaceFolder); let serverOptions: ServerOptions = { From 5ca48e24cf710da4629b79618523065d8a2ffb3b Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 3 Jan 2019 13:20:33 -0800 Subject: [PATCH 27/35] Update changelog for 0.21.0-insiders3. (#2958) * Update changelog for 0.21.0-insiders3. --- Extension/CHANGELOG.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 0234e5540a..343a52ad12 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,16 +1,32 @@ # C/C++ for Visual Studio Code Change Log +## Version 0.21.0-insiders3: January 3, 2019 +* Add completion committing for methods after `(`. [#882](https://github.com/Microsoft/vscode-cpptools/issues/882), [#1184](https://github.com/Microsoft/vscode-cpptools/issues/1184) +* Add the Microsoft digital signature to Windows binaries to avoid getting incorrectly flagged by virus scanners. [#1103](https://github.com/Microsoft/vscode-cpptools/issues/1103), [#2970](https://github.com/Microsoft/vscode-cpptools/issues/2970) +* Add macro expansions to hover. [#1734](https://github.com/Microsoft/vscode-cpptools/issues/1734) +* Fix incorrect completions after Enter is used after struct, class, etc. [#2734](https://github.com/Microsoft/vscode-cpptools/issues/2734) +* Fix Tag Parser completion details missing keywords (i.e. `using`, `class`, `#define`, etc.). [#2850](https://github.com/Microsoft/vscode-cpptools/issues/2850) +* Fix missing `(declaration)` on symbols. [#2851](https://github.com/Microsoft/vscode-cpptools/issues/2851) +* Fix IntelliSense errors with template argument deduction. [#2907](https://github.com/Microsoft/vscode-cpptools/issues/2907), [#2912](https://github.com/Microsoft/vscode-cpptools/issues/2912) +* Fix snippet completions being offered when they shouldn't be. [#2942](https://github.com/Microsoft/vscode-cpptools/issues/2942) +* Set the `editor.wordBasedSuggestions` to `false` by default to prevent incorrect completions. [#2943](https://github.com/Microsoft/vscode-cpptools/issues/2943) +* Add completion committing for templates after `<`. [#2953](https://github.com/Microsoft/vscode-cpptools/issues/2953) +* Fix IntelliSense-based `Go to Definition` for functions with function pointer parameters. [#2981](https://github.com/Microsoft/vscode-cpptools/issues/2981) +* Fix `<` incorrectly triggering completions. [#2985](https://github.com/Microsoft/vscode-cpptools/issues/2985) +* Fix recursive includes not adding paths used by `forcedInclude` files. [#2986](https://github.com/Microsoft/vscode-cpptools/issues/2986) +* Fix crash when `//` is used in a recursive `includePath`. [#2987](https://github.com/Microsoft/vscode-cpptools/issues/2987) +* Fix 3 crashes found with 0.21.0-insiders2. + ## Version 0.21.0-insiders2: December 17, 2018 * Add documentation comments for hover, completion, and signature help. [#399](https://github.com/Microsoft/vscode-cpptools/issues/399) * Fix bugs when UTF-8 characters > 1 byte are used. [#1504](https://github.com/Microsoft/vscode-cpptools/issues/1504), [#1525](https://github.com/Microsoft/vscode-cpptools/issues/1525), [#2034](https://github.com/Microsoft/vscode-cpptools/issues/2034), [#2082](https://github.com/Microsoft/vscode-cpptools/issues/2082), [#2883](https://github.com/Microsoft/vscode-cpptools/issues/2883) * Fix some IntelliSense process crashes. [#1785](https://github.com/Microsoft/vscode-cpptools/issues/1785), [#2913](https://github.com/Microsoft/vscode-cpptools/issues/2913) -* Fix some incorrect IntelliSense error squiggles. [#2422](https://github.com/Microsoft/vscode-cpptools/issues/2422), [#2597](https://github.com/Microsoft/vscode-cpptools/issues/2597) +* Fix some incorrect IntelliSense error squiggles. [#2422](https://github.com/Microsoft/vscode-cpptools/issues/2422), [#2474](https://github.com/Microsoft/vscode-cpptools/issues/2474), [#2597](https://github.com/Microsoft/vscode-cpptools/issues/2597) * Fix incorrect IntelliSense error with Mac clang 10.0 libraries. [#2608](https://github.com/Microsoft/vscode-cpptools/issues/2608) * Add Italian translations for command titles. * Julien Russo (@Dotpys) [PR #2663](https://github.com/Microsoft/vscode-cpptools/pull/2663) * Fix `Go to Definition` when `method(void)` is used. [#2802](https://github.com/Microsoft/vscode-cpptools/issues/2802) * Fix PowerShell bug on Win7. [#2822](https://github.com/Microsoft/vscode-cpptools/issues/2822) -* Support `C_Cpp.updateChannel` for VS Code Exploration builds. * Add icons for operators, structs/unions, enum values, template arguments, and macros. [#2849](https://github.com/Microsoft/vscode-cpptools/issues/2849) * Add text `(declaration)`, `(typedef)`, `(type alias)`, and `(union)` to symbols. [#2851](https://github.com/Microsoft/vscode-cpptools/issues/2851) * Fix problem with empty recursive include paths. [#2855](https://github.com/Microsoft/vscode-cpptools/issues/2855) @@ -18,6 +34,7 @@ * Add a refresh button to the `Attach to Process` picker. [#2885](https://github.com/Microsoft/vscode-cpptools/issues/2885) * Matt Bise (@mbise1993) [PR #2895](https://github.com/Microsoft/vscode-cpptools/pull/2895) * Retry Insider VSIX downloading with `http.proxySupport` `"off"`. [#2927](https://github.com/Microsoft/vscode-cpptools/issues/2927) +* Support `C_Cpp.updateChannel` for VS Code Exploration builds. ## Version 0.21.0-insiders: November 8, 2018 * Add support for `__int128_t` and `__uint128_t` types. [#1815](https://github.com/Microsoft/vscode-cpptools/issues/1815) @@ -140,6 +157,7 @@ * Fix `#include` autocomplete with Mac framework headers. [#2251](https://github.com/Microsoft/vscode-cpptools/issues/2251) * Fix debugging to support empty arguments for debuggee. [#2258](https://github.com/Microsoft/vscode-cpptools/issues/2258) * 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 `main` snippet. From 6488a11dc34d108302b939f411361efc5c6d927c Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 3 Jan 2019 14:31:12 -0800 Subject: [PATCH 28/35] Update changelog (#2997) --- Extension/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 343a52ad12..ce731b9c57 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -5,6 +5,7 @@ * Add the Microsoft digital signature to Windows binaries to avoid getting incorrectly flagged by virus scanners. [#1103](https://github.com/Microsoft/vscode-cpptools/issues/1103), [#2970](https://github.com/Microsoft/vscode-cpptools/issues/2970) * Add macro expansions to hover. [#1734](https://github.com/Microsoft/vscode-cpptools/issues/1734) * Fix incorrect completions after Enter is used after struct, class, etc. [#2734](https://github.com/Microsoft/vscode-cpptools/issues/2734) +* Fix quotes around defines not supported for custom configuration providers. [#2820](https://github.com/Microsoft/vscode-cpptools/issues/2820) * Fix Tag Parser completion details missing keywords (i.e. `using`, `class`, `#define`, etc.). [#2850](https://github.com/Microsoft/vscode-cpptools/issues/2850) * Fix missing `(declaration)` on symbols. [#2851](https://github.com/Microsoft/vscode-cpptools/issues/2851) * Fix IntelliSense errors with template argument deduction. [#2907](https://github.com/Microsoft/vscode-cpptools/issues/2907), [#2912](https://github.com/Microsoft/vscode-cpptools/issues/2912) From 39ba7fc6ba9a01efef9dec71b4d1e66d804789e3 Mon Sep 17 00:00:00 2001 From: Jmnote Date: Wed, 9 Jan 2019 09:00:02 +0900 Subject: [PATCH 29/35] =?UTF-8?q?extenion=20=E2=86=92=20extension=20(#3002?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit extenion → extension --- launch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launch.md b/launch.md index b227de12e6..4637220440 100644 --- a/launch.md +++ b/launch.md @@ -27,7 +27,7 @@ Set or change the following options to control VS Code's behavior during debuggi macOS: When set to true, it will spawn an external console through `lldb-mi`. When set to false, the output can be seen in VS Code's debugConsole. Due to limitations within `lldb-mi`, integratedTerminal support is not available. * #### `avoidWindowsConsoleRedirection` - In order to support VSCode's Integrated terminal with gdb on Windows, the extenion adds console redirection commands to the debuggee's arguments to have console input and output show up in the integrated terminal. Setting this option to `true` will disable it. + In order to support VSCode's Integrated terminal with gdb on Windows, the extension adds console redirection commands to the debuggee's arguments to have console input and output show up in the integrated terminal. Setting this option to `true` will disable it. * #### `logging` Optional flags to determine what types of messages should be logged to the Debug Console. From 703e23a62b74329825eda2c06219a9475046bea6 Mon Sep 17 00:00:00 2001 From: jogo- Date: Mon, 14 Jan 2019 22:15:28 +0100 Subject: [PATCH 30/35] Update FAQs.md (#3029) Missing whitespace --- Documentation/FAQs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/FAQs.md b/Documentation/FAQs.md index b7535a3ac4..19c675227c 100644 --- a/Documentation/FAQs.md +++ b/Documentation/FAQs.md @@ -23,7 +23,7 @@ When you start debugging, if it is showing that your breakpoints aren't bound (s ### Debugging starts but all the lines in my stack trace are grey -If your debugger is showing a grey stacktrace or won't stop at a breakpoint,or the symbols in the call stack are grey then your executable was compiled without [debug symbols](#how-to-enable-debug-symbols). +If your debugger is showing a grey stacktrace or won't stop at a breakpoint, or the symbols in the call stack are grey then your executable was compiled without [debug symbols](#how-to-enable-debug-symbols). ## How to enable debug symbols? From 33e7d70324b7622fa8711d2acccbd2bfff5c6b67 Mon Sep 17 00:00:00 2001 From: jogo- Date: Tue, 15 Jan 2019 01:47:54 +0100 Subject: [PATCH 31/35] Fix typo in How To Debug MIEngine.md (#3028) --- Documentation/Debugger/How To Debug MIEngine.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/Debugger/How To Debug MIEngine.md b/Documentation/Debugger/How To Debug MIEngine.md index acd1606eab..f69cc3d6eb 100644 --- a/Documentation/Debugger/How To Debug MIEngine.md +++ b/Documentation/Debugger/How To Debug MIEngine.md @@ -117,7 +117,7 @@ Open the **~/.vscode/extensions/ms-vscode.cpptools-\/debugAdapters/Ope ##### Attach the remote debugger -Selet the `Attach to Mono` configuration and hit F5. +Select the `Attach to Mono` configuration and hit F5. #### Additional Notes From 3b8c3143e4c5ca5382fe7094287e1cbdb1434fc9 Mon Sep 17 00:00:00 2001 From: jogo- Date: Thu, 17 Jan 2019 01:24:56 +0100 Subject: [PATCH 32/35] Fix typos in launch.md (#3027) * Fix typos in launch.md --- launch.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launch.md b/launch.md index 4637220440..bbdf08e07d 100644 --- a/launch.md +++ b/launch.md @@ -78,7 +78,7 @@ The following options enable you to modify the state of the target application w JSON array of command line arguments to pass to the program when it is launched. Example `["arg1", "arg2"]`. If you are escaping characters you will need to double escape them. For example `["{\\\"arg\\\": true}]` will send `{"arg1": true}` to your application. * #### `cwd` - Sets the the working directory of the application launched by the debugger. + Sets the working directory of the application launched by the debugger. * #### `environment` Environment variables to add to the environment for the program. Example: `[ { "name": "squid", "value": "clam" } ]`. @@ -169,7 +169,7 @@ _Note: core dump debugging is not supported with MinGw._ Full path to debug server to launch. * #### `debugServerArgs` - Arguments for the the debugger server. + Arguments for the debugger server. * #### `serverStarted` Server-started pattern to look for in the debug server output. From dcc017413356f47703fe779f21d50f53983e1df2 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 18 Jan 2019 11:23:33 -0800 Subject: [PATCH 33/35] Update changelog. (#3050) --- Extension/CHANGELOG.md | 68 +++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index ce731b9c57..811394644c 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,51 +1,51 @@ # C/C++ for Visual Studio Code Change Log -## Version 0.21.0-insiders3: January 3, 2019 -* Add completion committing for methods after `(`. [#882](https://github.com/Microsoft/vscode-cpptools/issues/882), [#1184](https://github.com/Microsoft/vscode-cpptools/issues/1184) -* Add the Microsoft digital signature to Windows binaries to avoid getting incorrectly flagged by virus scanners. [#1103](https://github.com/Microsoft/vscode-cpptools/issues/1103), [#2970](https://github.com/Microsoft/vscode-cpptools/issues/2970) -* Add macro expansions to hover. [#1734](https://github.com/Microsoft/vscode-cpptools/issues/1734) -* Fix incorrect completions after Enter is used after struct, class, etc. [#2734](https://github.com/Microsoft/vscode-cpptools/issues/2734) -* Fix quotes around defines not supported for custom configuration providers. [#2820](https://github.com/Microsoft/vscode-cpptools/issues/2820) -* Fix Tag Parser completion details missing keywords (i.e. `using`, `class`, `#define`, etc.). [#2850](https://github.com/Microsoft/vscode-cpptools/issues/2850) -* Fix missing `(declaration)` on symbols. [#2851](https://github.com/Microsoft/vscode-cpptools/issues/2851) -* Fix IntelliSense errors with template argument deduction. [#2907](https://github.com/Microsoft/vscode-cpptools/issues/2907), [#2912](https://github.com/Microsoft/vscode-cpptools/issues/2912) -* Fix snippet completions being offered when they shouldn't be. [#2942](https://github.com/Microsoft/vscode-cpptools/issues/2942) -* Set the `editor.wordBasedSuggestions` to `false` by default to prevent incorrect completions. [#2943](https://github.com/Microsoft/vscode-cpptools/issues/2943) -* Add completion committing for templates after `<`. [#2953](https://github.com/Microsoft/vscode-cpptools/issues/2953) -* Fix IntelliSense-based `Go to Definition` for functions with function pointer parameters. [#2981](https://github.com/Microsoft/vscode-cpptools/issues/2981) -* Fix `<` incorrectly triggering completions. [#2985](https://github.com/Microsoft/vscode-cpptools/issues/2985) -* Fix recursive includes not adding paths used by `forcedInclude` files. [#2986](https://github.com/Microsoft/vscode-cpptools/issues/2986) -* Fix crash when `//` is used in a recursive `includePath`. [#2987](https://github.com/Microsoft/vscode-cpptools/issues/2987) -* Fix 3 crashes found with 0.21.0-insiders2. - -## Version 0.21.0-insiders2: December 17, 2018 +## Version 0.21.0 January 17, 2019 +### New Features * Add documentation comments for hover, completion, and signature help. [#399](https://github.com/Microsoft/vscode-cpptools/issues/399) -* Fix bugs when UTF-8 characters > 1 byte are used. [#1504](https://github.com/Microsoft/vscode-cpptools/issues/1504), [#1525](https://github.com/Microsoft/vscode-cpptools/issues/1525), [#2034](https://github.com/Microsoft/vscode-cpptools/issues/2034), [#2082](https://github.com/Microsoft/vscode-cpptools/issues/2082), [#2883](https://github.com/Microsoft/vscode-cpptools/issues/2883) -* Fix some IntelliSense process crashes. [#1785](https://github.com/Microsoft/vscode-cpptools/issues/1785), [#2913](https://github.com/Microsoft/vscode-cpptools/issues/2913) -* Fix some incorrect IntelliSense error squiggles. [#2422](https://github.com/Microsoft/vscode-cpptools/issues/2422), [#2474](https://github.com/Microsoft/vscode-cpptools/issues/2474), [#2597](https://github.com/Microsoft/vscode-cpptools/issues/2597) -* Fix incorrect IntelliSense error with Mac clang 10.0 libraries. [#2608](https://github.com/Microsoft/vscode-cpptools/issues/2608) +* Add completion committing for methods after `(`. [#1184](https://github.com/Microsoft/vscode-cpptools/issues/1184) +* Add macro expansions to hover. [#1734](https://github.com/Microsoft/vscode-cpptools/issues/1734) +* Add support for `__int128_t` and `__uint128_t` types. [#1815](https://github.com/Microsoft/vscode-cpptools/issues/1815) * Add Italian translations for command titles. * Julien Russo (@Dotpys) [PR #2663](https://github.com/Microsoft/vscode-cpptools/pull/2663) -* Fix `Go to Definition` when `method(void)` is used. [#2802](https://github.com/Microsoft/vscode-cpptools/issues/2802) -* Fix PowerShell bug on Win7. [#2822](https://github.com/Microsoft/vscode-cpptools/issues/2822) * Add icons for operators, structs/unions, enum values, template arguments, and macros. [#2849](https://github.com/Microsoft/vscode-cpptools/issues/2849) +* Change `#include` completion to show individual folders instead of the entire paths, fixing previous performance problems. [#2836](https://github.com/Microsoft/vscode-cpptools/issues/2836) * Add text `(declaration)`, `(typedef)`, `(type alias)`, and `(union)` to symbols. [#2851](https://github.com/Microsoft/vscode-cpptools/issues/2851) -* Fix problem with empty recursive include paths. [#2855](https://github.com/Microsoft/vscode-cpptools/issues/2855) -* Fix `NullReferenceException` on debugger launch with VS Code Insiders. [#2858](https://github.com/Microsoft/vscode-cpptools/issues/2858), [PR Microsoft/MIEngine#810](https://github.com/Microsoft/MIEngine/pull/810) * Add a refresh button to the `Attach to Process` picker. [#2885](https://github.com/Microsoft/vscode-cpptools/issues/2885) * Matt Bise (@mbise1993) [PR #2895](https://github.com/Microsoft/vscode-cpptools/pull/2895) -* Retry Insider VSIX downloading with `http.proxySupport` `"off"`. [#2927](https://github.com/Microsoft/vscode-cpptools/issues/2927) -* Support `C_Cpp.updateChannel` for VS Code Exploration builds. +* Add completion committing for templates after `<`. [#2953](https://github.com/Microsoft/vscode-cpptools/issues/2953) -## Version 0.21.0-insiders: November 8, 2018 -* Add support for `__int128_t` and `__uint128_t` types. [#1815](https://github.com/Microsoft/vscode-cpptools/issues/1815) -* Fix several incorrect IntelliSense error squiggles. [#1942](https://github.com/Microsoft/vscode-cpptools/issues/1942), [#2478](https://github.com/Microsoft/vscode-cpptools/issues/2478), [#2763](https://github.com/Microsoft/vscode-cpptools/issues/2763) -* Fix several crashes. [#2505](https://github.com/Microsoft/vscode-cpptools/issues/2505), [#2768](https://github.com/Microsoft/vscode-cpptools/issues/2768) +### Bug Fixes +* Add the Microsoft digital signature to Windows binaries to avoid getting incorrectly flagged by virus scanners. [#1103](https://github.com/Microsoft/vscode-cpptools/issues/1103), [#2970](https://github.com/Microsoft/vscode-cpptools/issues/2970) +* Fix bugs when UTF-8 characters > 1 byte are used. [#1504](https://github.com/Microsoft/vscode-cpptools/issues/1504), [#1525](https://github.com/Microsoft/vscode-cpptools/issues/1525), [#2034](https://github.com/Microsoft/vscode-cpptools/issues/2034), [#2082](https://github.com/Microsoft/vscode-cpptools/issues/2082), [#2883](https://github.com/Microsoft/vscode-cpptools/issues/2883) +* Fix some IntelliSense process crashes. [#1785](https://github.com/Microsoft/vscode-cpptools/issues/1785), [#2913](https://github.com/Microsoft/vscode-cpptools/issues/2913) +* Fix several incorrect IntelliSense error squiggles. [#1942](https://github.com/Microsoft/vscode-cpptools/issues/1942), [#2422](https://github.com/Microsoft/vscode-cpptools/issues/2422), [#2474](https://github.com/Microsoft/vscode-cpptools/issues/2474), [#2478](https://github.com/Microsoft/vscode-cpptools/issues/2478), [#2597](https://github.com/Microsoft/vscode-cpptools/issues/2597), [#2763](https://github.com/Microsoft/vscode-cpptools/issues/2763) +* Fix some main process crashes. [#2505](https://github.com/Microsoft/vscode-cpptools/issues/2505), [#2768](https://github.com/Microsoft/vscode-cpptools/issues/2768) +* Fix incorrect IntelliSense error with Mac clang 10.0 libraries. [#2608](https://github.com/Microsoft/vscode-cpptools/issues/2608) * Fix completion not working in template specializations. [#2620](https://github.com/Microsoft/vscode-cpptools/issues/2620) -* Fix IntelliSense-based `Go to Definition` with overloads that return a template with a default param (e.g. vector) [#2736](https://github.com/Microsoft/vscode-cpptools/issues/2736) +* Fix incorrect completions after Enter is used after struct, class, etc. [#2734](https://github.com/Microsoft/vscode-cpptools/issues/2734) * Fix memory "leak" when parsing a large workspace. [#2737](https://github.com/Microsoft/vscode-cpptools/issues/2737) +* Fix IntelliSense-based `Go to Definition` with overloads that return a template with a default param (e.g. vector) [#2736](https://github.com/Microsoft/vscode-cpptools/issues/2736) * Fix `Go to Definition` when `__catch()`, `_NO_EXCEPT_DEBUG`, or `_LIBCPP_BEGIN_NAMESPACE_STD` is used. [#2761](https://github.com/Microsoft/vscode-cpptools/issues/2761), [#2766](https://github.com/Microsoft/vscode-cpptools/issues/2766) +* Fix `Go to Definition` when `method(void)` is used. [#2802](https://github.com/Microsoft/vscode-cpptools/issues/2802) +* Fix error `"TypeError: Cannot read property 'map' of undefined at asCompletionResult"`. [#2807](https://github.com/Microsoft/vscode-cpptools/issues/2807) +* Fix quotes around defines not supported for custom configuration providers. [#2820](https://github.com/Microsoft/vscode-cpptools/issues/2820) +* Fix PowerShell bug on Win7. [#2822](https://github.com/Microsoft/vscode-cpptools/issues/2822) +* Fix Tag Parser completion details missing keywords (i.e. `using`, `class`, `#define`, etc.). [#2850](https://github.com/Microsoft/vscode-cpptools/issues/2850) +* Fix problem with empty recursive include paths. [#2855](https://github.com/Microsoft/vscode-cpptools/issues/2855) +* Fix `NullReferenceException` on debugger launch with VS Code Insiders. [#2858](https://github.com/Microsoft/vscode-cpptools/issues/2858), [PR Microsoft/MIEngine#810](https://github.com/Microsoft/MIEngine/pull/810) +* Fix IntelliSense errors with template argument deduction. [#2907](https://github.com/Microsoft/vscode-cpptools/issues/2907), [#2912](https://github.com/Microsoft/vscode-cpptools/issues/2912) +* Retry Insider VSIX downloading with `http.proxySupport` `"off"`. [#2927](https://github.com/Microsoft/vscode-cpptools/issues/2927) +* Fix snippet completions being offered when they shouldn't be. [#2942](https://github.com/Microsoft/vscode-cpptools/issues/2942) +* Set the `editor.wordBasedSuggestions` to `false` by default to prevent incorrect completions. [#2943](https://github.com/Microsoft/vscode-cpptools/issues/2943) +* Fix IntelliSense-based `Go to Definition` for functions with function pointer parameters. [#2981](https://github.com/Microsoft/vscode-cpptools/issues/2981) +* Fix `<` incorrectly triggering completions. [#2985](https://github.com/Microsoft/vscode-cpptools/issues/2985) +* Fix recursive includes not adding paths used by `forcedInclude` files. [#2986](https://github.com/Microsoft/vscode-cpptools/issues/2986) +* Fix crash when `//` is used in a recursive `includePath`. [#2987](https://github.com/Microsoft/vscode-cpptools/issues/2987) * Fix compiler in `compile_commands.json` not taking precedence over the `Cpp.default.compilerPath`. [#2793](https://github.com/Microsoft/vscode-cpptools/issues/2793) +* Fix `#include` completion not working for symlinks. [#2843](https://github.com/Microsoft/vscode-cpptools/issues/2843) +* Fix IntelliSense-based `Go to Definition` for `const` methods. [#3014](https://github.com/Microsoft/vscode-cpptools/issues/3014) +* Support `C_Cpp.updateChannel` for VS Code Exploration builds. ## Version 0.20.1: October 31, 2018 * Fix IntelliSense-based `Go to Declaration` when there's only a definition in a TU. [#2743](https://github.com/Microsoft/vscode-cpptools/issues/2743) From 75f35a1fd738a7d4ae26fe266a649b090b68930d Mon Sep 17 00:00:00 2001 From: Griffin Downs <35574547+grdowns@users.noreply.github.com> Date: Tue, 22 Jan 2019 13:24:00 -0800 Subject: [PATCH 34/35] Fix CLI mismatch for downgrading (#3065) --- Extension/src/LanguageServer/extension.ts | 21 ++++++++++++++++++++- Extension/src/packageVersion.ts | 5 ++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index d6de0a0d76..ae9df20d3c 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -22,6 +22,7 @@ import { Range } from 'vscode-languageclient'; import { ChildProcess, spawn, execSync } from 'child_process'; import * as tmp from 'tmp'; import { getTargetBuildInfo } from '../githubAPI'; +import { PackageVersion } from '../packageVersion'; let prevCrashFile: string; let clients: ClientCollection; @@ -266,7 +267,25 @@ async function installVsix(vsixLocation: string, updateChannel: string): Promise return Promise.reject(new Error('Failed to find VS Code script')); } - // Install the VSIX + // 1.28.0 changes the CLI for making installations + let userVersion: PackageVersion = new PackageVersion(vscode.version); + let breakingVersion: PackageVersion = new PackageVersion('1.28.0'); + if (userVersion.isGreaterThan(breakingVersion, 'insider')) { + return new Promise((resolve, reject) => { + let process: ChildProcess; + try { + process = spawn(vsCodeScriptPath, ['--install-extension', vsixLocation, '--force']); + if (process.pid === undefined) { + throw new Error(); + } + } catch (error) { + reject(new Error('Failed to launch VS Code script process for installation')); + return; + } + resolve(); + }); + } + return new Promise((resolve, reject) => { let process: ChildProcess; try { diff --git a/Extension/src/packageVersion.ts b/Extension/src/packageVersion.ts index 422596b1fb..7033a78950 100644 --- a/Extension/src/packageVersion.ts +++ b/Extension/src/packageVersion.ts @@ -40,9 +40,8 @@ export class PackageVersion { } } - public isGreaterThan(other: PackageVersion): boolean { - // PackageVersions cannot be compared if either have a suffix that is not 'insiders' - if ((this.suffix && !this.suffix.startsWith('insiders')) || (other.suffix && !other.suffix.startsWith('insiders'))) { + public isGreaterThan(other: PackageVersion, suffixStr: string = 'insiders'): boolean { + if ((this.suffix && !this.suffix.startsWith(suffixStr)) || (other.suffix && !other.suffix.startsWith(suffixStr))) { return false; } From ec9270f5a98ced87c0cfa413acd92963e9c33355 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Tue, 22 Jan 2019 14:25:09 -0800 Subject: [PATCH 35/35] Update ReleaseNotes. (#3067) --- Extension/ReleaseNotes.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Extension/ReleaseNotes.html b/Extension/ReleaseNotes.html index e9718e8103..8eaca692d6 100644 --- a/Extension/ReleaseNotes.html +++ b/Extension/ReleaseNotes.html @@ -205,8 +205,8 @@

Microsoft C/C++ Extension for VS Code

-

October 2018 Update

-
Thank you for installing the C/C++ extension. In the October update, we finished our semantic-aware implementation of Go To Definition. We also added IntegratedTerminal support for debugging.
+

January 2019 Update

+
Thank you for installing the C/C++ extension. In the January update, we added documentation comments for hover, completion, and signature help.

Additional features and bug fixes are detailed in the full release notes.
@@ -231,9 +231,9 @@

Getting Started