jiebi/CodeConvo huggingface dataset:
Change:
'--verbose': localize('verbose', "Print verbose output (implies --wait)."), '-w, --wait': localize('wait', "Wait for the window to be closed before returning."), '--list-extensions': localize('listExtensions', "List the installed extensions."), <del> '--install-extension <extension>': localize('installExtension', "Installs an extension."), '--uninstall-extension <extension>': localize('uninstallExtension', "Uninstalls an extension."), </del> <ins> '--install-extension <ext>': localize('installExtension', "Installs an extension."), '--uninstall-extension <ext>': localize('uninstallExtension', "Uninstalls an extension."), </ins> '-v, --version': localize('version', "Print version."), '-h, --help': localize('help', "Print usage.") }; <del> function formatOptions(options: { [name: string]: string; }): string { return Object.keys(options) .reduce((r, key) => r.concat([`  ${ key }`, `      ${ options[key] }`]), []).join('n'); </del> <ins> export function formatOptions(options: { [name: string]: string; }, columns: number): string { let keys = Object.keys(options); let argLength = Math.max.apply(null, keys.map(k => k.length)) + 2/*left padding*/ + 1/*right padding*/; if (columns - argLength < 25) { // Use a condensed version on narrow terminals return keys.reduce((r, key) => r.concat([`  ${ key }`, `      ${ options[key] }`]), []).join('n'); } let descriptionColumns = columns - argLength - 1; let result = ''; keys.forEach(k => { let wrappedDescription = wrapText(options[k], descriptionColumns); let keyPadding = (<any>' ').repeat(argLength - k.length - 2/*left padding*/); if (result.length > 0) { result += 'n'; } result += '  ' + k + keyPadding + wrappedDescription[0]; for (var i = 1; i < wrappedDescription.length; i++) { result += 'n' + (<any>' ').repeat(argLength) + wrappedDescription[i]; } }); return result; </ins> } <del> export const helpMessage = `Visual Studio Code v${ pkg.version } </del> <ins> function wrapText(text: string, columns: number) : string[] { let lines = []; while (text.length) { let index = text.length < columns ? text.length : text.lastIndexOf(' ', columns); let line = text.slice(0, index).trim(); text = text.slice(index); lines.push(line); } return lines; } export function buildHelpMessage(version: string): string { let columns = (<any>process.stdout).isTTY ? (<any>process.stdout).columns : 80; return `Visual Studio Code v${ version } </ins> Usage: ${ executable } [arguments] [paths...] Options: <del> ${formatOptions(optionsHelp)}`; </del>  No newline at end of file <ins> ${formatOptions(optionsHelp, columns)}`; } </ins>  No newline at end of file

Discussion:
cc Standard sized (80 width) terminal: ! This is what is was like before: !
do you have any reason against using a community lib for this if I get the deps approved?
Not at all... I just think that the hard 80 column wrap is an unnecessary remnant of the past, given the resizing capabilities of terminal emulators of today.
yeah, I believe the community libs like yargs size the column dynamically but keep formatting similar to what it was like before.
Change:
overflow: hidden; max-height: calc(20 * 22px); padding-bottom: 5px; <ins> /* match border radius of quick input widget */ border-top-left-radius: 5px; border-top-right-radius: 5px; </ins> } .quick-input-list .quick-input-list-entry {

Discussion:
! I can click on them
Took a different approach with this... instead they are clickable, but they cause the list to scroll that separator up to the top (and they also clear focus).
Fixed in
Change:
this.container.classList.remove('noExtensions'); reset(leftColumn, startList.getDomElement(), recentList.getDomElement()); reset(rightColumn, featuredExtensionList.getDomElement(), gettingStartedList.getDomElement()); <del> recentList.setLimit(5); </del> } else { this.container.classList.add('noExtensions'); reset(leftColumn, startList.getDomElement(), recentList.getDomElement()); reset(rightColumn, gettingStartedList.getDomElement()); <del> recentList.setLimit(10); </del> } setTimeout(() => this.categoriesPageScrollbar?.scanDomNode(), 50); };

Discussion:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: No (Extension Bisect does not identify a particular extension) <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.74.3 OS Version: Windows_NT x64 10.0. (Windows 10 22H2) Whenever I open a new window, I want to quickly open one of my recent folders by clicking an item in the Recent section of the welcome page. And so often, instead, I open a walkthrough by accident because walkthroughs are lazily loaded and cause the Recent section to move to the left. Typically, the walkthroughs take 3 seconds to load after the Recent section is shown. This is a small issue but still impedes my productivity/satisfaction with this awesome product. :-) ! Possible ideas for mitigation: change the layout so that Recent items are always shown on the left (avoid content jumping at all) maintain a cache of walkthrough items? provide a setting to disable the display of walkthroughs on the welcome page
Nice, thank you!
Change:
} this._rebaseCommit = rebaseCommit; <ins> commands.executeCommand('setContext', 'gitRebaseInProgress', !!this._rebaseCommit); </ins> } get rebaseCommit(): Commit | undefined {

Discussion:
Testing Currently the command is always in the command palette. I would expect it to appear only when I am in the middle of a rebase. Not sure if we could introduce some context keys which would be true when we are in the middle of the rebase. And then use those context keys as part of the commands clause
Since triggering it outside of a rebase produces this expected error. Do we polish the message, since it looks a bit strange with the double !
Verification steps: Launch VS Code and close existing folder if needed Verify that command is not available in the command palette Open a Git repository Verify that command is not available in the command palette Switch to the SCM viewlet, and click on --- Verify that an information notification is displayed noting that there is no rebase in progress Use the steps from to rebase a topic branch on top of the main branch Verify that command is available in the command palette Invoke the command from the command palette Verify that command is available in the command palette
Change:
quickpick.hide(); s(); <del> }); quickpick.onDidChangeActive(themes => selectTheme(themes[0]?.theme, false)); quickpick.onDidHide(() => { </del> <ins> })); disposables.add(quickpick.onDidChangeActive(themes => selectTheme(themes[0]?.theme, false))); disposables.add(quickpick.onDidHide(() => { </ins> if (!isCompleted) { selectTheme(currentTheme, true); s(); } quickpick.dispose(); <del> disposables.dispose(); }); quickpick.onDidTriggerItemButton(e => { </del> <ins> })); disposables.add(quickpick.onDidTriggerItemButton(e => { </ins> if (isItem(e.item)) { const extensionId = e.item.theme?.extensionData?.extensionId; if (extensionId) {

Discussion:
Quick pickers are itself disposables, as well as the events they provide. Noticed a few leaks around picker instances and/or events: //cc
There's already a that is called when the picker hides. Isn't that good enough?
see the various events (those beginning with ) and how they are not getting disposed.
But they are going to an emitter that is owned by the quickpick. Disposing the quickpick is also disposed all its emitters. There's no real leak here.
my understanding is that an that gets disposed (when you dispose the quick picker) does not dispose the -functions it had returned, i.e. this code is not running: But maybe or can also chime in.
Yes - an emitter doesn't dispose its listeners. you basically rely on GC'ing here and I am uncertain if that actually works (e.g some disposables are tracked centrally for later blaming). I understand your motives but we generally dispose all the things
Change:
return new ExtHostLogOutputChannel(id, name, logger, this.proxy, extension); } <del> private getDefaultLogLevel(extension: IExtensionDescription): LogLevel { let logLevel: LogLevel | undefined; const logLevelValue = this.initData.environment.extensionLogLevel?.find(([identifier]) => ExtensionIdentifier.equals(extension.identifier, identifier))?.[1]; if (logLevelValue) { logLevel = parseLogLevel(logLevelValue); } return logLevel ?? this.logService.getLevel(); } </del> private createExtensionLogDirectory(extension: IExtensionDescription): Thenable<URI> { let extensionLogDirectoryPromise = this.extensionLogDirectoryPromise.get(extension.identifier.value); if (!extensionLogDirectoryPromise) {

Discussion:
Testing I have two "onDidChangeLogLevel" listeners: one on "" and one on my channel and I'm setting the log levels with this action: ! In the test items description you said: log level change is being propagated in env and also in your log output channel For me only the listener on "" fires.
Change:
}, LAUNCHING_DURATION); } <ins> private _sendPtyDataToXterm(message: { type: string, content: string }): void { if (!this._xterm) { return; } if (message.type === 'data') { this._xterm.write(message.content); } } </ins> private _onPtyProcessExit(exitCode: number): void { // Prevent dispose functions being triggered multiple times if (this._isExiting) {

Discussion:
From
For January we decided to keep the task in the core. So there is no need to make this 'public' API now. May be it would be good to first experiment a little with the new API.
just to make sure, were you thinking of using a prompt (press any key to close) that can be reused? Or a terminal that executes something, the pty process dies and just sits there ("dead") until another task command is sent?
I would like to achieve the following: create a new terminal and allow terminal reuse (could be an additional option) without actually running a terminal right away (if necessary we could run it as well) run a command in the terminal. This will create the actual shell process. Usually the shell would be started with /c receive an exit event when the shell exists reuse the terminal to run another command in the terminal which creates a new shell process. Use case if for a build task: if the user runs the build tasks 3 times in a row I would like to have one terminal (e.g. on entry in the drop down in the terminal pane) which contains the output of all three task runs.
I have one additional question. Does the terminal require to run a shell or would the terminal be able to run any other arbitrary process (for example a ).
I got it working to run an arbitrary program. Only drawback is that I needed to specify the full path to the program (e.g. ). Any idea why this is the case?
do you mean the shell path you're using is and it's not working like that? I guess the resolution stuff is contained within , I would think it would probably be safest to always wrap the command within or . Wrapping the command means the process will die when it finishes so I don't see a downside?
the only problem is argument passing with spaces contained. If you call node directly then you pass the args as a string[]. If you call the for example you need to construct a single string with proper arg quoting to ensure everything works when for example the command to call contains spaces. And you save a process :-)
could this be useful for Python terminal execution?
Change:
<ins> // ATTENTION - THIS DIRECTORY CONTAINS THIRD PARTY OPEN SOURCE MATERIALS: [{ "name": "textmate/toml.tmbundle", "version": "0.0.0", "license": "TextMate Bundle License", "repositoryURL": "https://github.com/textmate/toml.tmbundle", "licenseDetail": [ "Copyright (c) https://github.com/infininight and https://github.com/mojombo", "Permission to copy, use, modify, sell and distribute this", "software is granted. This software is provided "as is" without", "express or implied warranty, and with no claim as to its", "suitability for any purpose", "", "An exception is made for files in readable text which contain their own license information, or files where an accompanying", "file exists (in the same directory) with a “-license” suffix added to the base-name name of the original file, and an extension .", "of txt, html, or similar. For example “tidy” is accompanied by “tidy-license.txt”." ] }] </ins>

Discussion:
I have found as a related issue, but that seems to only tackle support in markdown files. I am suggesting that VSCode support the file extension. It should be very similar to the syntax, and is something I would be willing to tackle in a PR.
Yes, we would take a PR for this. Look at the or the extensions for examples. We pull in the grammars used in these extension from existing repos so that we don't have to maintain them in the VS Code repo. Both the or the extensions provide examples of this in their npm script
Perfect. I have found: , and will submit a PR later today. Thanks for the tip
After further discussion with the VS Code team, we have decided to revert this addition with See that commit for an explanation of why we feel this is the correct decision for guiding users to a better toml experience and for maintaining VS Code itself
Change:
onDidDeleteNode?: (node: ITreeNode<T, TFilterData>) => void ): Iterator<ITreeElement<T | null>> { const insertedElements = new Set<T | null>(); <ins> const insertedElementIds = new Set<string>(); </ins> const _onDidCreateNode = (node: ITreeNode<T, TFilterData>) => { insertedElements.add(node.element); this.nodes.set(node.element, node); <ins> if (this.identityProvider) { const id = this.identityProvider.getId(node.element).toString(); insertedElementIds.add(id); this.nodesByIdentity.set(id, node); } </ins> if (onDidCreateNode) { onDidCreateNode(node); }

Discussion:
Issue Type: <bBug</bTesting Repo settings editor to the section click to switch to instead of Bug TOC is collapsed. Any scrolling causes the TOC to be expanded at the correctly again VS Code version: Code - Insiders 1.31.0-insider (, 2019-01-29T06:13:57.866Z) OS version: Darwin x64 18.2.0 <details<summarySystem Info</summary </details<!-- generated by issue reporter --
Probably another case of The TOC tree sometimes maintains its selection/expansion state, sometimes not.
Hey should expansion state be preserved using the string identity? was for focus/selection, this is for expansion state.
Adding myself so I don't forget about this.
Let's merge this early June:
Thanks
Change:
import { restoreWalkthroughsConfigurationKey, RestoreWalkthroughsConfigurationValue } from 'vs/workbench/contrib/welcomeGettingStarted/browser/startupPage'; import { GettingStartedDetailsRenderer } from 'vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedDetailsRenderer'; import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility'; <ins> import { renderLabelWithIcons } from 'vs/base/browser/ui/iconLabel/iconLabels'; </ins> const SLIDE_TRANSITION_TIME_MS = 250; const configurationKey = 'workbench.startupEditor';

Discussion:
This is a bug in the . In general, the extension API allows icons to be embedded in text by referencing them inside of . This functionality does not work consistently in the walkthroughs API. <!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: N/A; this is a bug in the extension API VS Code Version: 1.69 OS Version: macOS 12.4 Steps to Reproduce: a walkthrough step in your extension, e.g. "walkthroughs": [ { "id": "welcome", "title": "Example $(github)", "description": "See? The icon looks nice, doesn't it?", "steps": [ { "id": "example-step", "title": "Example step", "description": "Example description", "media": { "image": "", "altText": "" } } ] } ] 2 Observe that the icon in the title ( in the example above) renders correctly in the Open Walkthrough… quickpick list: <img width="372" alt="Screen Shot 2022-07-12 at 10 21 08 AM" src="https://user-"up the walkthrough and observe that the icon is not rendered, and instead you see the literal string : <img width="508" alt="Screen Shot 2022-07-12 at 10 22 09 AM" src="https://user-"
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.69.1. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Yes, it still exists in 1.69.1.
Thanks for the remarkably fast turnaround time, appreciate you.

Still see this in Version: 1.70.0-insider (user setup) Commit: Date: 2022-07-27T05:16:37.759Z OS: Windows_NT x64 10.0. ! ! ! generate a new TypeScript extension with add the snippet from the issue description to the
I only fixed the icon in the place that it didn't work in the issue description, sound like I have a few more places to fix :)
LGTM in the menu, in the walkthrough title, and in a step. <img width="984" alt="image" src="https://user-"
Change:
// set count badge this.setCountBadge(); <del> // set mergeChanges context commands.executeCommand('setContext', 'git.mergeChanges', merge.map(item => item.resourceUri)); </del> this._onDidChangeStatus.fire(); this._sourceControl.commitTemplate = await this.getInputTemplate();

Discussion:
have a merge conflict have multiple repos open open a file with conflicts :bug: depending on which repo was refreshed last the blue button shows/hides
This is because the command runs in the scope of a single  and thereby competes with others. I have copied an here and I am unsure where the good place to set context keys is
Which blue button are you describing and how is it supposed to act? (just trying to verify)
Change:
} refreshTabLabels(title: string | undefined, eventSource: TitleEventSource): void { <ins> const reset = !title; </ins> title = this._updateTitleProperties(title, eventSource); const titleChanged = title !== this._title; this._title = title; <del> this._labelComputer?.refreshLabel(); </del> <ins> this._labelComputer?.refreshLabel(reset); </ins> this._setAriaLabel(this.xterm?.raw, this._instanceId, this._title); if (this._titleReadyComplete) {

Discussion:
Testing a terminal tab title setting your terminal to "foo" to set the name to blank string to, but I would expect it to just use my default from 1.
We discussed this and want to require a title.
I don't mean that blank titles should be allowed. I more meant how do I get back to the default I set in settings after I renamed the terminal, I feel I would expect it to let me delete my custom name and then it would use the default
You can reset the setting by clicking on the gear - is that what you mean?
No I meant is there a way to reset the terminal title to be the value of my setting instead of my custom named one?
We currently don't support going backward like that. I'll appropriately rename this issue for more discussion in October because I also wondered about this and discussed it with
Thanks sorry if I wasn't clear . My suggested UX would just be to have that be the default if you were attempt to have a blank name
oh - yes Brigit caught that case and I fixed it. so if it's set to '' or 'any number of spaces', it'll now show the process name. might've misunderstood what you were saying
But shouldn't it show whatever my setting states the default is rather than just the process name?
Sorry, the difference between our issues is she is talking about the setting I'm talking about the terminal title itself and not the setting. I want a blank rename of a terminal to reset to the value of my setting
I thought your setting was set to ''
confused - you can't set it to blank. we don't allow that
!
So my request is if my setting is and I name a terminal "foo". How do I reset "foo" back to the value of . My suggestion was that if you attempted to submit a blank name that would automatically reset to the value of your setting.
yep the name of this issue now reflects that. we'll see what says about that.
and I discussed it and it makes sense to do this
Change:
const result = new Map<string, IWebExtension>(); const extensionInfos: IExtensionInfo[] = []; await Promise.all(extensionGalleryResources.map(async extensionGalleryResource => { <del> const webExtension = await this.toWebExtensionFromExtensionGalleryResource(extensionGalleryResource); result.set(webExtension.identifier.id.toLowerCase(), webExtension); extensionInfos.push({ id: webExtension.identifier.id, version: webExtension.version }); </del> <ins> try { const webExtension = await this.toWebExtensionFromExtensionGalleryResource(extensionGalleryResource); result.set(webExtension.identifier.id.toLowerCase(), webExtension); extensionInfos.push({ id: webExtension.identifier.id, version: webExtension.version }); } catch (error) { this.logService.info(`Ignoring additional builtin extension from gallery resource ${extensionGalleryResource.toString()} because there is an error while converting it into web extension`, getErrorMessage(error)); } </ins> })); const galleryExtensions = await this.galleryService.getExtensions(extensionInfos, CancellationToken.None); for (const galleryExtension of galleryExtensions) {

Discussion:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.87.0-insider OS Version: Windows 11 Enterprise Steps to Reproduce: this url to open a VS Code extension: {other_parameters} will open the , then there's no reaction Previously, we could use the URL to open and automatically install and activate this extension, proceeding with the subsequent URL handling process. Now, even installation cannot be carried out.
What's an example of a full URL where you see this? Only certain allowlisted extension/publishers are allowed there
Hi This issue has already manifested in the production environment (1.86.2 ), and it is hoped that the priority can be elevated. Here is a sample url: {extension_name}/{query} Previously, our extension could be automatically installed by opening this URL. However, it seems that can't install extension now.
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
/verified