jiebi/CodeConvo huggingface dataset:
Code change:
Set color customizations for the peek widget: 29: ! 30: ! Candidate or 1.30.1 maybe?
Grrr, another regression... I am for putting this into 1.30.1
I have pushed a fix to master and I have created we think having for for is good enough, otherwise the PR can be merged for

Related discussion:
text: } const resultsSelectedBackground = theme.getColor(peekViewResultsSelectionBackground); if (resultsSelectedBackground) { <del> collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-tree.focused .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) { background-color: ${resultsSelectedBackground}; }`); </del> <ins> collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { background-color: ${resultsSelectedBackground}; }`); </ins> } const resultsSelectedForeground = theme.getColor(peekViewResultsSelectionForeground); if (resultsSelectedForeground) { <del> collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-tree.focused .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) { color: ${resultsSelectedForeground} !important; }`); </del> <ins> collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { color: ${resultsSelectedForeground} !important; }`); </ins> } const editorBackground = theme.getColor(peekViewEditorBackground); if (editorBackground) {
Code change:
While creating a user snippet, the rule must be like this: If I want to show a lot of description, I must write a huge string which includes many escape characters like this: It maybe a good idea that option receive a list value, like the :
The Version infomations: Code Version: 1.30.1 (user setup) Commit: Date: 2018-12-18T18:12:07.165Z Electron: 2.0.12 Chrome: 61.0.3163.100 8.9.3 V8: 6.1.534.41 OS: Windows_NT x64 10.0.
Can you guide me on resolving this issue?
sure, checkout , and

Related discussion:
text: }, description: { description: nls.localize('snippetSchema.json.description', 'The snippet description.'), <del> type: 'string' </del> <ins> type: ['string', 'array'] </ins> } }, additionalProperties: false
Code change:
While creating a user snippet, the rule must be like this: If I want to show a lot of description, I must write a huge string which includes many escape characters like this: It maybe a good idea that option receive a list value, like the :
The Version infomations: Code Version: 1.30.1 (user setup) Commit: Date: 2018-12-18T18:12:07.165Z Electron: 2.0.12 Chrome: 61.0.3163.100 8.9.3 V8: 6.1.534.41 OS: Windows_NT x64 10.0.
Can you guide me on resolving this issue?
sure, checkout , and

Related discussion:
text: body = body.join('n'); } <ins> if (Array.isArray(description)) { description = description.join('n'); } </ins> if ((typeof prefix !== 'string' && !Array.isArray(prefix)) || typeof body !== 'string') { return; }
Code change:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

Related discussion:
text: return; } <del> if (this.extension.type !== ExtensionType.User) { this.enabled = false; this.class = UpdateAction.DisabledClass; this.label = this.getLabel(); return; } </del> const canInstall = await this.extensionsWorkbenchService.canInstall(this.extension); const isInstalled = this.extension.state === ExtensionState.Installed;
Code change:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

Related discussion:
text: import { IExtensionManifestPropertiesService } from 'vs/workbench/services/extensions/common/extensionManifestPropertiesService'; import { IExtensionService, IExtensionsStatus } from 'vs/workbench/services/extensions/common/extensions'; import { ExtensionEditor } from 'vs/workbench/contrib/extensions/browser/extensionEditor'; <ins> import { isWeb } from 'vs/base/common/platform'; </ins> interface IExtensionStateProvider<T> { (extension: Extension): T;
Code change:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

Related discussion:
text: if (!this.gallery || !this.local) { return false; } <del> if (this.type !== ExtensionType.User) { return false; } </del> if (!this.local.preRelease && this.gallery.properties.isPreReleaseVersion) { return false; }
Code change:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

Related discussion:
text: this.queryLocal().then(() => { this.resetIgnoreAutoUpdateExtensions(); this.eventuallyCheckForUpdates(true); <del> // Always auto update builtin extensions if (!this.isAutoUpdateEnabled()) { </del> <ins> // Always auto update builtin extensions in web if (isWeb && !this.isAutoUpdateEnabled()) { </ins> this.autoUpdateBuiltinExtensions(); } });
Code change:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

Related discussion:
text: } const infos: IExtensionInfo[] = []; for (const installed of this.local) { <del> if (installed.type === ExtensionType.User && (!onlyBuiltin || installed.isBuiltin)) { </del> <ins> if (!onlyBuiltin || installed.isBuiltin) { </ins> infos.push({ ...installed.identifier, preRelease: !!installed.local?.preRelease }); } }
Code change:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

Related discussion:
text: assert.strictEqual(extension.outdated, true); }); <del> test('extension is not outdated when local is built in and older than gallery', () => { </del> <ins> test('extension is outdated when local is built in and older than gallery', () => { </ins> const extension = instantiationService.createInstance(Extension, () => ExtensionState.Installed, undefined, aLocalExtension('somext', { version: '1.0.0' }, { type: ExtensionType.System }), aGalleryExtension('somext', { version: '1.0.1' })); <del> assert.strictEqual(extension.outdated, false); </del> <ins> assert.strictEqual(extension.outdated, true); </ins> }); test('extension is outdated when local and gallery are on same version but on different target platforms', () => {
Code change:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

Related discussion:
text: }); test('findFiles', () => { <del> return vscode.workspace.findFiles('*.png').then((res) => { </del> <ins> return vscode.workspace.findFiles('**/*.png').then((res) => { assert.equal(res.length, 2); assert.equal(basename(vscode.workspace.asRelativePath(res[0])), 'image.png'); }); }); test('findFiles, exclude', () => { return vscode.workspace.findFiles('**/*.png', '**/sub/**').then((res) => { </ins> assert.equal(res.length, 1); assert.equal(basename(vscode.workspace.asRelativePath(res[0])), 'image.png'); });
Code change:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

Related discussion:
text: disregardSearchExcludeSettings: true, disregardIgnoreFiles: true, includePattern, <ins> excludePattern: typeof excludePatternOrDisregardExcludes === 'string' ? excludePatternOrDisregardExcludes : undefined, </ins> _reason: 'startFileSearch' });
Code change:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

Related discussion:
text: const query = queryBuilder.file(folders, { _reason: 'checkExists', includePattern: includes.join(', '), <ins> expandPatterns: true, </ins> exists: true });
Code change:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

Related discussion:
text: if (options.includePattern) { includeSearchPathsInfo = options.expandPatterns ? this.parseSearchPaths(options.includePattern) : <del> { pattern: patternListToIExpression(...splitGlobPattern(options.includePattern)) }; </del> <ins> { pattern: patternListToIExpression(options.includePattern) }; </ins> } let excludeSearchPathsInfo: ISearchPathsInfo = {}; if (options.excludePattern) { excludeSearchPathsInfo = options.expandPatterns ? this.parseSearchPaths(options.excludePattern) : <del> { pattern: patternListToIExpression(...splitGlobPattern(options.excludePattern)) }; </del> <ins> { pattern: patternListToIExpression(options.excludePattern) }; </ins> } // Build folderQueries from searchPaths, if given, otherwise folderResources
Code change:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

Related discussion:
text: }); }); <del> test('splits glob pattern even with expandPatterns disabled', () => { </del> <ins> test('does not split glob pattern when expandPatterns disabled', () => { </ins> assertEqualQueries( queryBuilder.file([ROOT_1_URI], { includePattern: '**/foo, **/bar' }), {
Code change:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

Related discussion:
text: }], type: QueryType.File, includePattern: { <del> '**/foo': true, '**/bar': true </del> <ins> '**/foo, **/bar': true </ins> } }); });
Code change:
Open a folder Create untitled file with some content Quit vscode Open vscode Two windows are opened, one has the folder +untitled file, other is an empty window + untitled file. So the same untitled file is opened in two windows.
I could only repro this with an empty window: Code via finder all files/folders an untitled file, add changes +q Code via finder <img width="490" alt="screen shot 2019-03-07 at 5 42 14 pm" src="https://user-"
Moving this to as the last who touched this code.
for some reason the  array has multiple entries for the same window?
Temporally until update is not yet, for prevent backup window add to settings "window.restoreWindows": "none"
When set , then every close & start VSCode will multiple windows (1 -2, 2 -4, 4 -6, and so on). Fix is needed ASAP.
this change is not in the recovery build yet pending right?
Pushed.
I saw this by downgrading from 1.32.2 to 1.31.1, then upgrading back. But I don't think we care about that.
I can confirm that this issue is fixed in the latest 1.32.2 release! Thanks! But another one what I noticed: VS Code one existing document Optional: Open a new tab or new window with a new tab and type anything and do NOT save this new file VS Code -Open VS Code Now all tabs are correctly restored! VS Code a File from Windows Explorer with right-click and open in VS Code All tabs should re-opened (Tabs/files from Step 2., 3. and 7.) Only the unsaved file from step 3. and the one from the Windows Explorer, step 7. are opened. And the last session (int this example, file from step 1. is lost! Is this wanted or can this be configured?
Confirm fix and also above bug with 1.32.2 and 1.32.3. Could You report this as new issue? Now session is partially broken :-(
thanks. Please see

Related discussion:
text: } // Handle empty to restore <del> if (emptyToRestore.length > 0) { emptyToRestore.forEach(emptyWindowBackupInfo => { </del> <ins> const allEmptyToRestore = arrays.distinct(emptyToRestore, info => info.backupFolder); // prevent duplicates if (allEmptyToRestore.length > 0) { allEmptyToRestore.forEach(emptyWindowBackupInfo => { </ins> const remoteAuthority = emptyWindowBackupInfo.remoteAuthority; const fileInputsForWindow = (fileInputs && fileInputs.remoteAuthority === remoteAuthority) ? fileInputs : undefined;
Code change:
Issue Type: <bFeature Request</bHere's what I have tried using as a reference: In the settings page, "command" doesn't show up as a link, just plain text. It would be nice if command links were supported like regular URL links. VS Code version: Code 1.32.3 (, 2019-03-14T22:46:48.547Z) OS version: Darwin x64 18.2.0
I assume you want this in the settings UI.
That's correct. A clickable command link above the field.
Sure, out of curiosity, what sort of command would you use this for?
The property/setting I'm trying to use this for is a directory path containing some directories. And the command is a refresh command that will pick up the latest setting value and do some parsing of the contained directories. I know I could use to detect changes and trigger the command automatically but I want to allow the user to refresh manually.
Are you avoiding because it might trigger while the user is not done typing, or is there a different reason?
Yes, that's the main reason.
I would like to second this. My use case is: My extension involves authenticating with a server, and I have built a web-view for this. This authentication process is too complicated to handle through native VSCode settings (I want to validate the server, there might be 2FA, etc, etc) However, since users have an expectation of seeing their settings in the settings UI, I would like to display the server that the user has authenticated to in the settings UI as a read only property. This requires me to have a description which says "You can modify this value by doing X" And overall, it seems like a better user experience to have that description be "you can modify this by clicking " and having open my webview, rather than: "you can modify this setting by selecting the X command in the command palette"

Related discussion:
text: // Rewrite `#editor.fontSize#` to link format text = fixSettingLinks(text); <del> const renderedMarkdown = renderMarkdown({ value: text }, { </del> <ins> const renderedMarkdown = renderMarkdown({ value: text, isTrusted: true }, { </ins> actionHandler: { callback: (content: string) => { if (startsWith(content, '#')) {
Code change:
Maybe you've already thought about this but it would be useful to be able to create a new folder in the simplified file dialog. This could be a button in the title bar or a confirmation step when a folder that doesn't exist was typed. Creating a folder and opening it, and creating a folder and saving a file in it, are common workflows so it would be useful to be able to do those in one step.
For the meantime:
Hey thanks for the mention! This was a feature I personally needed for quite some time - we all basically do those steps mentioned by on a daily basis so I decided to code an extension for it. Even though the extension already works great, I am actually working on it right now and adding a new feature which will allow it to create new folders using the Simple file dialogs - regardless of user setting, see . If anyone's interested, I think I'll manage to finish it by tomorrow.
I've been busy with work and other projects but after a long wait, I worked really hard and managed to finish my npm module for Visual Studio Code that implements the aforementioned behavior and shows a custom QuickPick that allows browsing and creating folders from the Command Palette, even nested/recursive folders. The extension that implements this package is available at repo. Not perfect (yet) but it works.
Also create new file in Open File dialog would be useful.
Saving is good. Opening hasn't been implemented -- should there be a new issue for that?

Related discussion:
text: // Filename not allowed this.filePickBox.validationMessage = nls.localize('remoteFileDialog.validateBadFilename', 'Please enter a valid file name.'); return Promise.resolve(false); <del> } else if (!statDirname || !statDirname.isDirectory) { </del> <ins> } else if (!statDirname) { </ins> // Folder to save in doesn't exist <ins> const message = nls.localize('remoteFileDialog.validateCreateDirectory', 'The folder {0} does not exist. Would you like to create it?', resources.basename(resources.dirname(uri))); return this.yesNoPrompt(uri, message); } else if (!statDirname.isDirectory) { </ins> this.filePickBox.validationMessage = nls.localize('remoteFileDialog.validateNonexistentDir', 'Please enter a path that exists.'); return Promise.resolve(false); }
Code change:
When picking a Formatter to run for a file type, it'd be nice to see what extension is providing each formatter. This can make it easier to choose which formatter I want to use, or to open an issue to request that the extension use a more obvious name for their formatter :) (in this case, the Ruby extension accidentally provides the legacy formatter as well as the "current" formatter at the same time). When in a situation like this, I'm not sure which to choose: <img width="621" alt="Screen Shot 2019-04-07 at 6 20 49 PM" src="https://user-"Maybe have the extension name de-emphasized like the "Configured Tab Size" text in the indentation dropdown?: <img width="615" alt="Screen Shot 2019-04-07 at 8 29 28 PM" src="https://user-"
We use the 'displayName' or 'name' (when not having the former) but it seems that there are multiple extensions with the same name... We should be more precise in that case.

Related discussion:
text: const picks = formatter.map((formatter, index) => { return <IIndexedPick>{ index, <del> label: formatter.displayName || formatter.extensionId || '?' </del> <ins> label: formatter.displayName || formatter.extensionId || '?', description: formatter.extensionId && formatter.extensionId.value </ins> }; }); const langName = this._modeService.getLanguageName(document.getModeId()) || document.getModeId();
Code change:
Description Currently, when editing a file, the command <kbdctrl</kbd+<kbdshift</kbd+<kbda</kbd(toggle block comment) generates the following comment placeholder . I wonder if it might be also wise to include this as an auto-closing pair so that when users attempt to write the closing is automatically like other languages (ex: Typescript).
This issue is caused by an extension, please file it with the repository (or contact) the extension has linked in its overview in VS Code or the for VS Code. See also our guidelines. Happy Coding!
I'm not quite sure as to who or where the owner is for the extension. Looking at the I noticed multiple past updates to support additional features. Isn't the proposed feature request present in the issue similar to those past updates?
Oh, you are right. This part is us, not the extension. Sorry for the confusion...
Looks like a good change to me. Feel free to make a pull request.
Not able to reproduce ctrl+shift+a not having any effect.
I assume you are editing a file, but sorry the keybinding I mentioned is for Linux, on macOS for example the keybinding is . The easiest way to test is to simply run the command from the menu 🡒 :)
Got it, in windows it is Shift+Alt+A.
I forgot to mention I won't be able to submit a PR myself due to my company policy. If anyone would like to take on the issue, please feel free to do so :)
In that case, I am more than happy to make a pull request for this. Thanks for the information. I will submit one soon.
thank you!

Related discussion:
text: { "open": "{", "close": "}" }, { "open": "(", "close": ")" }, { "open": "'", "close": "'", "notIn": ["string", "comment"] }, <del> { "open": """, "close": """, "notIn": ["string"] } </del> <ins> { "open": """, "close": """, "notIn": ["string"] }, { "open": "/*", "close": " */", "notIn": ["string", "comment"] } </ins> ], "surroundingPairs": [ ["{", "}"],
Code change:
a TypeScript file open (with some code in it) the outline to jump to the beginning of a method something somewhere the cursor jump to the beginning of the previously jumped-to function as soon as you stop pressing keys for .5 seconds Yes (both in insiders & stable) Version: 1.34.0-insider (user setup) Commit: Date: 2019-04-26T13:39:29.623Z Electron: 3.1.8 Chrome: 66.0.3359.181 10.2.0 V8: 6.6.346.32 OS: Windows_NT x64 10.0.
It seems that the tree send a selection change event after updating children (which happens because markers changed). I will look into a workaround, e.g being but it seems like a tree issue <img width="777" alt="Screenshot 2019-04-29 at 10 33 24" src="https://user-"

Related discussion:
text: return; } <ins> this._set(nodes, false, browserEvent); } private _set(nodes: ITreeNode<T, any>[], silent: boolean, browserEvent?: UIEvent): void { </ins> this.nodes = [...nodes]; this.elements = undefined; this._nodeSet = undefined; <del> const that = this; this._onDidChange.fire({ get elements() { return that.get(); }, browserEvent }); </del> <ins> if (!silent) { const that = this; this._onDidChange.fire({ get elements() { return that.get(); }, browserEvent }); } </ins> } get(): T[] {
Code change:
a TypeScript file open (with some code in it) the outline to jump to the beginning of a method something somewhere the cursor jump to the beginning of the previously jumped-to function as soon as you stop pressing keys for .5 seconds Yes (both in insiders & stable) Version: 1.34.0-insider (user setup) Commit: Date: 2019-04-26T13:39:29.623Z Electron: 3.1.8 Chrome: 66.0.3359.181 10.2.0 V8: 6.6.346.32 OS: Windows_NT x64 10.0.
It seems that the tree send a selection change event after updating children (which happens because markers changed). I will look into a workaround, e.g being but it seems like a tree issue <img width="777" alt="Screenshot 2019-04-29 at 10 33 24" src="https://user-"

Related discussion:
text: insertedNodes.forEach(node => dfs(node, insertedNodesVisitor)); const nodes: ITreeNode<T, any>[] = []; <ins> let silent = true; </ins> for (const node of this.nodes) { const id = this.identityProvider.getId(node.element).toString();