jiebi/CodeConvo huggingface dataset:
Change:
} getDecorationOption(isCollapsed: boolean, isHidden: boolean, isManual: boolean): IModelDecorationOptions { <del> if (isHidden // is inside another collapsed region || this.showFoldingControls === 'never') { </del> <ins> if (isHidden) { // is inside another collapsed region </ins> return FoldingDecorationProvider.HIDDEN_RANGE_DECORATION; } <ins> if (this.showFoldingControls === 'never') { if (isCollapsed) { return this.showFoldingHighlights ? FoldingDecorationProvider.NO_CONTROLS_COLLAPSED_HIGHLIGHTED_RANGE_DECORATION : FoldingDecorationProvider.NO_CONTROLS_COLLAPSED_RANGE_DECORATION; } return FoldingDecorationProvider.NO_CONTROLS_EXPANDED_RANGE_DECORATION; } </ins> if (isCollapsed) { return isManual ? (this.showFoldingHighlights ? FoldingDecorationProvider.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION : FoldingDecorationProvider.MANUALLY_COLLAPSED_VISUAL_DECORATION)

Discussion:
Expected: only gutter controls are removed, background and ellipsis - preserved Actual: The background color no longer applied & the ellipsis is missing on the folded lines.VS Code Version: 1.70.0 (user setup) OS Version: Windows_NT x64 10.0.
Change:
shellArgs: withNullAsUndefined(options.shellArgs), cwd: withNullAsUndefined(options.cwd), env: withNullAsUndefined(options.env), <del> icon: withNullAsUndefined(options.iconPath), </del> <ins> icon: withNullAsUndefined(asTerminalIcon(options.iconPath)), </ins> initialText: withNullAsUndefined(options.message), strictEnv: withNullAsUndefined(options.strictEnv), hideFromUser: withNullAsUndefined(options.hideFromUser),

Discussion:
Testing Ran into this verifying a different issue, the API says that ThemeIcons are assignable in the TerminalOptions but they are not !
Change:
restartExtensionHost(): void { } startExtensionHost(): void { } stopExtensionHost(): void { } <ins> canAddExtension(): boolean { return false; } canRemoveExtension(): boolean { return false; } </ins> } export class TestMenuService implements IMenuService {

Discussion:
Testing install eamodio.remotehub restart code and open from console with in the explorer, note that the title shows install the . It contains only a contribution, which is a dynamic contribution point Note that you are asked to reload: There should not be such a prompt. Interestingly the explorer label has already changed to , that means the contribution has received a delta
Change:
} export const WORKSPACE_RECOMMENDATIONS_VIEW_ID = 'workbench.views.extensions.workspaceRecommendations'; <ins> export const OUTDATED_EXTENSIONS_VIEW_ID = 'workbench.views.extensions.searchOutdated'; </ins> export const TOGGLE_IGNORE_EXTENSION_ACTION_ID = 'workbench.extensions.action.toggleIgnoreExtension'; export const SELECT_INSTALL_VSIX_EXTENSION_COMMAND_ID = 'workbench.extensions.action.installVSIX'; export const INSTALL_EXTENSION_FROM_VSIX_COMMAND_ID = 'workbench.extensions.command.installFromVSIX';

Discussion:
Testing Maybe a button to the right of the view header: !
Lets have action in the view header like below <img width="341" alt="image" src="https://user-"
Change:
editor.pushUndoStop(); editor.executeCommands(COMMENT_SELECTED_CELLS_ID, commands); editor.pushUndoStop(); <ins> editor.setSelection(selection); </ins> }); }

Discussion:
Testing 1) select a cell 2) cmd+/ -cell commented 3) ESC 4) cmd+/ -nothing 5) arrow-up 6) Cmd+/ -nothing 7) Shift + arrow-up 8) Cmd+/ -two cells commented I don't really understand in which mode I'm in after step 3 and 5. I would expect Cmd+/ to work in those states.

Testing 1) set a selection within a given cell 2) ESC -cell gets focus 3) Cmd+/ -selection from step 1 is lost and all content of the cell is selected 4) Arrow-up or down 5) Cmd+/ -now you have two cells with fully selected content I would expect that the selection from step 1 is retained/restored. And, if I don't have a selection after step 3, no selection would be visible.
It looks like step 2 still causes the selection to be lost and step 3 still comments out everything.
pair verified with
Change:
} await this._revertChanges(textEditor, [...changes.slice(0, index), ...changes.slice(index + 1)]); <ins> const firstStagedLine = changes[index].modifiedStartLineNumber - 1; textEditor.selections = [new Selection(firstStagedLine, 0, firstStagedLine, 0)]; </ins> } @command('git.revertSelectedRanges', { diff: true })

Discussion:
<!-- Please search existing issues to avoid creating duplicates. --Step 0. Version 1.35.0 with extensions disabled. Step 1. Open a file with changes committed in git Step 2. Use ALT+F3 to navigate to the next change in-line Step 3. Click Revert Change Step 4. find the line number you were on and move your cursor there, then hit ALT+F3 again <!-- Describe the feature you'd like. --I would like vscode to remember where I was whenever I revert a change, then return me to that place, so that I can see the change disappear and so that I can proceed using hotkey to the next change.
We might just have to set the cursor in that position, should be simple. Would you like to submit a PR?
I can take a look at this.. As this will be my first pull request here in vscode repo, I will require some help. Do let me know a good starting point for this..
Hi, I would like to work on this issue. I'll submit a PR soon.
Do we want to fix this for 'stage change' functionality too? It behaves now the same way as 'revert change' - it starts searching from the beginning, instead of placing cursor in staged line position.
Sounds good.
Change:
} private getWindowTitle(): string { <del> let title = this.doGetWindowTitle(); </del> <ins> let title = this.doGetWindowTitle() || this.productService.nameLong; let { prefix, suffix } = this.getTitleDecorations(); if (prefix) { title = `${prefix} ${title}`; } if (suffix) { title = `${title} ${suffix}`; } // Replace non-space whitespace title = title.replace(/[^S ]/g, ' '); return title; } getTitleDecorations() { let prefix: string | undefined; let suffix: string | undefined; </ins> if (this.properties.prefix) { <del> title = `${this.properties.prefix} ${title || this.productService.nameLong}`; </del> <ins> prefix = this.properties.prefix; } if (this.environmentService.isExtensionDevelopment) { prefix = !prefix ? WindowTitle.NLS_EXTENSION_HOST : `${WindowTitle.NLS_EXTENSION_HOST} - ${prefix}`; </ins> } if (this.properties.isAdmin) { <del> title = `${title || this.productService.nameLong} ${WindowTitle.NLS_USER_IS_ADMIN}`; </del> <ins> suffix = WindowTitle.NLS_USER_IS_ADMIN; </ins> } if (!this.properties.isPure) { <del> title = `${title || this.productService.nameLong} ${WindowTitle.NLS_UNSUPPORTED}`; </del> <ins> suffix = !suffix ? WindowTitle.NLS_UNSUPPORTED : `${suffix} ${WindowTitle.NLS_UNSUPPORTED}`; </ins> } <del> if (this.environmentService.isExtensionDevelopment) { title = `${WindowTitle.NLS_EXTENSION_HOST} - ${title || this.productService.nameLong}`; } // Replace non-space whitespace title = title.replace(/[^S ]/g, ' '); return title; </del> <ins> return { prefix, suffix }; </ins> } updateProperties(properties: ITitleProperties): void {

Discussion:
With that setting set, I am missing the "[Extension Development Host]" title on the window, which is helpful for identifying that special window. In general, I guess the whole is missing - is there a plan to show that along with the menu? If not can we keep the [Extension Development Host] hint somewhere?
Today it only shows on hover. I am open for suggestion but it isn't trivial as the static window title can be very long, is configurable. Maybe show the "special decorations", like [Extension Dev..] etc, in the title menu
Change:
return provider; } <del> private async withReadProvider(resource: URI): Promise<IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability | IFileSystemProviderWithFileReadStreamCapability | IFileSystemProviderWithFileReadCapability> { </del> <ins> private async withReadProvider(resource: URI): Promise<IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability | IFileSystemProviderWithFileReadStreamCapability> { </ins> const provider = await this.withProvider(resource); <del> if (hasOpenReadWriteCloseCapability(provider) || hasReadWriteCapability(provider) || hasFileReadStreamCapability(provider) || hasFileReadCapability(provider)) { </del> <ins> if (hasOpenReadWriteCloseCapability(provider) || hasReadWriteCapability(provider) || hasFileReadStreamCapability(provider)) { </ins> return provider; } <del> throw new Error(`Filesystem provider for scheme '${resource.scheme}' neither has FileReadWrite, FileReadStream, FileOpenReadWriteClose nor Readonly capability which is needed for the read operation.`); </del> <ins> throw new Error(`Filesystem provider for scheme '${resource.scheme}' neither has FileReadWrite, FileReadStream nor FileOpenReadWriteClose capability which is needed for the read operation.`); </ins> } private async withWriteProvider(resource: URI): Promise<IFileSystemProviderWithFileReadWriteCapability | IFileSystemProviderWithOpenReadWriteCloseCapability> {

Discussion:
Refs: I do not understand this condition: How does that make sure a method exists? The only check for this that is valid currently is , the is just a detail of the file system and not a capability.
This looks like an actual typo to me or missing code review, not sure the consequences, as it could lead to errors when wrongly asserting, so maybe moving to August for investigation.
TLDR I misunderstood how the declared capabilities relate to the actual declared methods and the meaning of . For context, this change came in through and the intention of this change was to support the scenario where an has declared but not : since is optional in the interface and the capability requires both and to be implemented: I made this change because when implementing a with but not , this would result in throwing here: I see how it's possible that a which has check does not have a method implemented. Additionally I see that we have other examples of how to handle the requirement of a readonly filesystem which implements both and , e.g.: I am reverting Apologies for the incorrect code change and thank you for pointing this out.
Change:
return; } <ins> const addRemote = new AddRemoteItem(this); </ins> const branchName = repository.HEAD && repository.HEAD.name || ''; <del> const selectRemote = async () => { const picks = repository.remotes.map(r => r.name); const placeHolder = localize('pick remote', "Pick a remote to publish the branch '{0}' to:", branchName); return await window.showQuickPick(picks, { placeHolder }); }; const choice = remotes.length === 1 ? remotes[0].name : await selectRemote(); </del> <ins> const picks = [...repository.remotes.map(r => ({ label: r.name, description: '' })), addRemote]; const placeHolder = localize('pick remote', "Pick a remote to publish the branch '{0}' to:", branchName); const choice = await window.showQuickPick(picks, { placeHolder }); </ins> if (!choice) { return; } <del> await repository.pushTo(choice, branchName, true); </del> <ins> let remote = choice.label; if (choice === addRemote) { const newRemote = await this.addRemote(repository); if (newRemote) { remote = newRemote; } else { return; } } await repository.pushTo(remote, branchName, true); </ins> } @command('git.ignore')

Discussion:
To address the original issue in more directly, it would be great if this worked: Create a new branch Run the "Publish branch" command See the "Pick a remote..." prompt Select a "Add New Remote" option The remote is and the branch is pushed to that remote Is that what you originally had in mind
I would like to take this.
yep that was it.
Change:
import { CellRevealType, IActiveNotebookEditor, ICellViewModel, INotebookEditorOptions, INotebookViewCellsUpdateEvent } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { NotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookEditor'; import { CellKind } from 'vs/workbench/contrib/notebook/common/notebookCommon'; <del> import { IOutline, IOutlineComparator, IOutlineCreator, IOutlineListConfig, IOutlineService, IQuickPickDataSource, IQuickPickOutlineElement, OutlineChangeEvent, OutlineConfigKeys, OutlineTarget } from 'vs/workbench/services/outline/browser/outline'; </del> <ins> import { IOutline, IOutlineComparator, IOutlineCreator, IOutlineListConfig, IOutlineService, IQuickPickDataSource, IQuickPickOutlineElement, OutlineChangeEvent, OutlineConfigCollapseItemsValues, OutlineConfigKeys, OutlineTarget } from 'vs/workbench/services/outline/browser/outline'; </ins> import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions'; import { Registry } from 'vs/platform/registry/common/platform'; import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle';

Discussion:
Testing Setting Open a github issue notebook You get: <img width="283" alt="image" src="https://user-"
Change:
tsServerLog = { type: 'file', uri: logFilePath }; args.push('--logVerbosity', TsServerLogLevel.toString(configuration.tsServerLogLevel)); <del> args.push('--logFile', logFilePath.fsPath); </del> <ins> args.push('--logFile', `"${logFilePath.fsPath}"`); </ins> } } }

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 <!-- 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.86.0 OS Version: Darwin x64 23.2.0 Steps to Reproduce: custom node: any ts project. . The log file is not generated actually.
After attaching to the tsserver with , I see a strange error:
I set "typescript.tsserver.nodePath" to be a script which echos its CLI args and it also shows that the spaces aren't be escaped properly in This looks like a bug in ( which will likely be broken for any Mac user, including one that commented on the original PR
This should already be fixed:
I'll double-check when I get a free moment, but I swear I had updated to the latest version of VSCode when I was testing last week.
I've verified my installation is up-to-date and I still am getting a TSServer crash. I can't find any relevant logs that would indicate the cause of failure. What I do know is that using my (TS 5.2.2) works fine. <img width="1198" alt="" src=""
I found another bug, the log file path is also not being escaped if one has enabled. All of my logs are being written to rather than
this is still an issue as of VSCode 1.88.0
Also I just noticed the description of contains Can you update your review process to ensure that someone with a MacOS machine tests changes?
The ts server seems to just crash and attempt to start in a loop forever. nothing is in the log folder from the logs. my settings:
Can confirm this still crashes on windows.

Seems to work fine for me on Mac. Taking a look now
Seems risky to fix given that this areas has caused problems before so moving to June
<!-- 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!
Change:
import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey'; import { FindReplaceState } from 'vs/editor/contrib/find/browser/findState'; <del> import { ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal'; </del> <ins> import { ITerminalGroupService, ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal'; </ins> import { TerminalContextKeys } from 'vs/workbench/contrib/terminal/common/terminalContextKey'; <ins> import { TerminalLocation } from 'vs/platform/terminal/common/terminal'; </ins> export class TerminalFindWidget extends SimpleFindWidget { protected _findInputFocused: IContextKey<boolean>;

Discussion:
Testing <img width="1445" alt="image" src="https://user-"
The widget is open in your screenshot
!
Wrong screenshot again. Here you go <img width="1419" alt="image" src="https://user-"
Thanks, but I cannot repro this - could you pls attach a gif?
Have a split terminal Focus in second terminal and open find widget and search for some text to show highlights Focus in first terminal and press escape
Change:
case Parts.SIDEBAR_PART: this.sidebarWidth = this.sidebarWidth + sizeChangePxWidth; // Sidebar can not become smaller than MIN_PART_WIDTH <del> if (this.layoutEditorGroupsVertically && (this.workbenchSize.width - this.sidebarWidth < visibleEditors * MIN_EDITOR_PART_WIDTH)) { this.sidebarWidth = (this.workbenchSize.width - visibleEditors * MIN_EDITOR_PART_WIDTH); </del> <ins> if (this.layoutEditorGroupsVertically && (this.workbenchSize.width - this.sidebarWidth < visibleEditorCount * MIN_EDITOR_PART_WIDTH)) { this.sidebarWidth = (this.workbenchSize.width - visibleEditorCount * MIN_EDITOR_PART_WIDTH); </ins> } doLayout = true; break; case Parts.PANEL_PART: <del> this.panelHeight = this.panelHeight + sizeChangePxHeight; this.panelWidth = this.panelWidth + sizeChangePxWidth; </del> <ins> if (panelPosition === Position.BOTTOM) { this.panelHeight = this.panelHeight + sizeChangePxHeight; } else if (panelPosition === Position.RIGHT) { this.panelWidth = this.panelWidth + sizeChangePxWidth; } </ins> doLayout = true; break; case Parts.EDITOR_PART: // If we have one editor we can cheat and resize sidebar with the negative delta <del> const visibleEditorCount = this.editorService.getVisibleEditors().length; </del> <ins> // If the sidebar is not visible and panel is, resize panel main axis with negative Delta </ins> if (visibleEditorCount === 1) { <del> this.sidebarWidth = this.sidebarWidth - sizeChangePxWidth; doLayout = true; </del> <ins> if (this.partService.isVisible(Parts.SIDEBAR_PART)) { this.sidebarWidth = this.sidebarWidth - sizeChangePxWidth; doLayout = true; } else if (this.partService.isVisible(Parts.PANEL_PART)) { if (panelPosition === Position.BOTTOM) { this.panelHeight = this.panelHeight - sizeChangePxHeight; } else if (panelPosition === Position.RIGHT) { this.panelWidth = this.panelWidth - sizeChangePxWidth; } doLayout = true; } </ins> } else { const stacks = this.editorGroupService.getStacksModel(); const activeGroup = stacks.positionOfGroup(stacks.activeGroup);

Discussion:
Code / Insiders All OS Part resize logic with one editor and panel. Editor with focus, just panel does not resize. To be clear and honest, this is my logic bug that actually is independent and pre-existing from the vertical panel addition. My issue not ;-) The bug is more obvious with vertical panel. Steps to Reproduce: code with one editor, panel open , sidebar hidden editor, try Increase/Decrease commands - editor does not resize panel, try resize - panel resizes correctly Testing : I know you guys are testing and working on panel issues. While not a panel issued directly this bug is more noticeable with vertical panel so your guys call on PR integration... Fixed with PR
thanks for pointing this out and thanks for providing a PR. However since this behavior is already there in stable and since there are a lot of moving parts currently in the panel area I will postpone this to November. When we can discuss on how to best fix this and then I can also review you PR. Hope that makes sense. Thanks
Yup. I will try to get the fix for command support with split windows for the same time.
Change:
<ins> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // https://github.com/microsoft/vscode/blob/6cb34eb22385bc93ab25aa2e5113f59c7a2299ac/src/vs/platform/extensions/common/extensionValidator.ts export interface IParsedVersion { hasCaret: boolean; hasGreaterEquals: boolean; majorBase: number; majorMustEqual: boolean; minorBase: number; minorMustEqual: boolean; patchBase: number; patchMustEqual: boolean; preRelease: string | null; } export interface INormalizedVersion { majorBase: number; majorMustEqual: boolean; minorBase: number; minorMustEqual: boolean; patchBase: number; patchMustEqual: boolean; notBefore: number; /* milliseconds timestamp, or 0 */ isMinimum: boolean; } const VERSION_REGEXP = /^(^|>=)?((d+)|x).((d+)|x).((d+)|x)(-.*)?$/; const NOT_BEFORE_REGEXP = /^-(d{4})(d{2})(d{2})$/; export function isValidVersionStr(version: string): boolean { version = version.trim(); return (version === '*' || VERSION_REGEXP.test(version)); } export function parseVersion(version: string): IParsedVersion | null { if (!isValidVersionStr(version)) { return null; } version = version.trim(); if (version === '*') { return { hasCaret: false, hasGreaterEquals: false, majorBase: 0, majorMustEqual: false, minorBase: 0, minorMustEqual: false, patchBase: 0, patchMustEqual: false, preRelease: null }; } const m = version.match(VERSION_REGEXP); if (!m) { return null; } return { hasCaret: m[1] === '^', hasGreaterEquals: m[1] === '>=', majorBase: m[2] === 'x' ? 0 : parseInt(m[2], 10), majorMustEqual: (m[2] === 'x' ? false : true), minorBase: m[4] === 'x' ? 0 : parseInt(m[4], 10), minorMustEqual: (m[4] === 'x' ? false : true), patchBase: m[6] === 'x' ? 0 : parseInt(m[6], 10), patchMustEqual: (m[6] === 'x' ? false : true), preRelease: m[8] || null }; } export function normalizeVersion(version: IParsedVersion | null): INormalizedVersion | null { if (!version) { return null; } const majorBase = version.majorBase; const majorMustEqual = version.majorMustEqual; const minorBase = version.minorBase; let minorMustEqual = version.minorMustEqual; const patchBase = version.patchBase; let patchMustEqual = version.patchMustEqual; if (version.hasCaret) { if (majorBase === 0) { patchMustEqual = false; } else { minorMustEqual = false; patchMustEqual = false; } } let notBefore = 0; if (version.preRelease) { const match = NOT_BEFORE_REGEXP.exec(version.preRelease); if (match) { const [, year, month, day] = match; notBefore = Date.UTC(Number(year), Number(month) - 1, Number(day)); } } return { majorBase: majorBase, majorMustEqual: majorMustEqual, minorBase: minorBase, minorMustEqual: minorMustEqual, patchBase: patchBase, patchMustEqual: patchMustEqual, isMinimum: version.hasGreaterEquals, notBefore, }; } </ins>

Discussion:
When developing extension the warning in : is wrong because it doesn't check if the extension is supported on older VSCode versions: