jiebi/CodeConvo huggingface dataset:
Change:
} const snippet = new SnippetParser().parse(item.insertText.snippet); <del> insertText = snippet.toString(); snippetInfo = { snippet: item.insertText.snippet, range: range }; </del> <ins> if (snippet.children.length === 1 && snippet.children[0] instanceof Text) { insertText = snippet.children[0].value; snippetInfo = undefined; } else { insertText = snippet.toString(); snippetInfo = { snippet: item.insertText.snippet, range: range }; } </ins> } else { assertNever(item.insertText); }

Discussion:
Testing when accepting the next word in a python file, the entire line is accepted, whereas typescript will only accept the next word.
Change:
(): T; } <del> export async function retry<T>(task: ITask<Promise<T>>, delay: number, retries: number): Promise<T> { </del> <ins> export async function retry<T>(task: ITask<Promise<T>>, delay: number, retries: number, onBeforeRetry?: () => Promise<unknown>): Promise<T> { </ins> let lastError: Error | undefined; for (let i = 0; i < retries; i++) { try { <ins> if (i > 0 && typeof onBeforeRetry === 'function') { try { await onBeforeRetry(); } catch (error) { console.warn(`onBeforeRetry failed with: ${error}`); } } </ins> return await task(); } catch (error) { lastError = error;

Discussion:
It looks like the smoke test had a generic startup error caused by a TLS stream (maybe a https request?)
This is from using the module to download VSCode: did you see this before?
One idea would be to wrap is a , similar to this call: But I am not 100% sure that method can be just retried like that.
If we depend on a library and that fails, I suggest the retry logic be in the library itself.
Added retry logic, but would be nice to get this from natively.
Change:
} else { stream.next(); } <ins> } else if (ch === star) { stream.backUp(1); if (stream.peek() === slash) { return; } else { stream.next(); } </ins> } } <del> // We are at an opening brace. We need to include its selector, but with one nonspace character is enough. while (!stream.sof() && String.fromCharCode(stream.backUp(1)).match(/s/)) { } startPosition = stream.pos; </del> <ins> // We are at an opening brace. We need to include its selector. // We need one non whitespace character, that's not commented and is not a block { } currentLine = stream.pos.line; openBracesRemaining = 0; while (!stream.sof()) { // Find a nonspace character while (!stream.sof() && String.fromCharCode(stream.backUp(1)).match(/s/)) { } if (stream.sof()) { break; } let characterFound = stream.peek(); // Check if such character is end of comment. if (characterFound === slash) { let ch = stream.backUp(1); if (ch === star) { stream.pos = findOpeningCommentBeforePosition(document, stream.pos) || startPosition; } else { stream.next(); } continue; } // In not CSS stylesheets, we need to skip singleLine comments. if (!isCSS && stream.pos.line !== currentLine) { currentLine = stream.pos.line; let startLineComment = document.lineAt(currentLine).text.indexOf('//'); if (startLineComment > -1 && startLineComment < stream.pos.character) { stream.pos = new vscode.Position(currentLine, startLineComment); continue; } } // Here, we know we are not in a comment if (characterFound === closeBrace) { openBracesRemaining++; } else if (!openBracesRemaining) { if (characterFound === openBrace) { return; } else { break; } } else if (characterFound === openBrace) { openBracesRemaining--; } } if (!stream.sof()) { startPosition = stream.pos; } </ins> try { return parseStylesheet(new DocumentStreamReader(document, startPosition, new vscode.Range(startPosition, endPosition))); } catch (e) {

Discussion:
In a scss file with more than 1000 lines, add the below Try an emmet abbreviation after the above. Observe that no completions are provided Reproducible only in Insiders and not in Stable
The same happens in this case: We need to improve how to look for the selector of a rule.
Change:
this.statusbarHeight = isStatusbarHidden ? 0 : this.partLayoutInfo.statusbar.height; this.titlebarHeight = isTitlebarHidden ? 0 : this.partLayoutInfo.titlebar.height / getZoomFactor(); // adjust for zoom prevention <del> const previousMaxPanelHeight = this.sidebarHeight - this.partLayoutInfo.editor.minHeight; </del> this.sidebarHeight = this.workbenchSize.height - this.statusbarHeight - this.titlebarHeight; let sidebarSize = new Dimension(this.sidebarWidth, this.sidebarHeight);

Discussion:
VSCode Version: Code 1.19.2 (, 2018-01-10T15:55:03.538Z) OS Version: Windows_NT x64 10.0. Extensions: ExtensionVersion ------ code-gnu-global0.2.2 vscode-clang0.2.2 cpptools0.14.5 Description: The terminal panel automatically maximized when I resize the window. I think this was caused by the method of maximizing this panel. Maybe it was like this: And when I resize the window to be less high, the condition is reached because I only changed the window's height, didn't change the panel's. Although this is not a serious problem, I still feel annoyed as I should use my mouse to click the button each time I do so. Hope you can fix this Steps to Reproduce: an empty window, no folder open needed the powershell terminal, and make it longer(x-axis) the window on a top corner, either left-top or right-top(You can drag it there using mouse or using keyboard Win+Right,Win+Up) By now, you can see the maximize button has changed <!-- Launch with to check. --Reproduces without extensions: Yes
I acknowledge this bug and we accpet PRs that fix this code pointer Easy repro steps panel size of whole vscode window such that the panel thinks it is maximized size of hwole vscode window, panel remains maximized and occupies most of space
I'd like to take this. Will drop a PR.
Just to clarify and document the issue, I'm uploading a gif. !
yes that is exactly the issue, thanks for providing a gif
I just opened a PR. Please check.
Change:
import { IDisposable, dispose, Disposable } from 'vs/base/common/lifecycle'; import { Event, Emitter } from 'vs/base/common/event'; <del> import { EventType, addDisposableListener, addClass, removeClass, isAncestor, getClientArea, position, size } from 'vs/base/browser/dom'; </del> <ins> import { EventType, addDisposableListener, addClass, removeClass, isAncestor, getClientArea, position, size, EventHelper } from 'vs/base/browser/dom'; </ins> import { onDidChangeFullscreen, isFullscreen, getZoomFactor } from 'vs/base/browser/browser'; import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; import { Registry } from 'vs/platform/registry/common/platform'; <del> import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; </del> <ins> import { isWindows, isLinux, isMacintosh, isWeb } from 'vs/base/common/platform'; </ins> import { pathsToEditors } from 'vs/workbench/common/editor'; import { SidebarPart } from 'vs/workbench/browser/parts/sidebar/sidebarPart'; import { PanelPart } from 'vs/workbench/browser/parts/panel/panelPart';

Discussion:
Steps: right click into explorer root node you see native and custom menu ! Looks like the new tree is not preventing default and bubbling of event like the old tree did?
Change:
import { INativeHostService } from 'vs/platform/native/common/native'; import { toErrorMessage } from 'vs/base/common/errorMessage'; import { IProductService } from 'vs/platform/product/common/productService'; <ins> import { isCancellationError } from 'vs/base/common/errors'; </ins> const shellCommandCategory: ILocalizedString = { value: localize('shellCommand', "Shell Command"), original: 'Shell Command' };

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 (It's happening for fresh installation) <!-- 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.85.1 OS Version: Macbook M1 Pro - Sonoma 14.2.1 Steps to Reproduce: VSCode Darwin build from downloads page - (Mac .zip Apple Silicon) Shell command: Install 'code' command in PATH cancel for the below prompt <img width="1136" alt="Screenshot 2024-01-02 at 7 35 58 PM" src=""It should display that shell command was not completed successfully. Instead it shows command successfully <img width="1136" alt="Screenshot 2024-01-02 at 7 38 19 PM" src=""
Change:
onKeyDown.filter(e => e.keyCode === KeyCode.Space).on(this.onSpace, this, this.disposables); } <del> if (_options.keyboardNavigationLabelProvider && _options.contextViewProvider) { </del> <ins> if ((_options.findWidgetEnabled ?? true) && _options.keyboardNavigationLabelProvider && _options.contextViewProvider) { </ins> this.findController = new FindController(this, this.model, this.view, filter!, _options.contextViewProvider); this.focusNavigationFilter = node => this.findController!.shouldAllowFocus(node); this.onDidChangeFindOpenState = this.findController.onDidChangeOpenState;

Discussion:
Type: <bBug</bFilter tests for the current doc is no longer working. is doing nothing in the test explorer. It seems that all filter are broken. For example is also not possible. <img width="344" alt="CleanShot 2022-07-25 at 11 14 38 src="https://user-"VS Code version: Code - Insiders 1.70.0-insider (Universal) (, 2022-07-25T05:27:27.755Z) OS version: Darwin x64 21.5.0 Modes: <details<summarySystem Info</summary </detailsExtensions disabled<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
/assign
Change:
return await this._editorModelReference.object.saveAs(target); } <del> override isSaving(): boolean { if (this.isDirty() && !this.hasCapability(EditorInputCapabilities.Untitled) && this.filesConfigurationService.getAutoSaveMode() === AutoSaveMode.AFTER_SHORT_DELAY) { return true; // will be saved soon } return super.isSaving(); } </del> private async _suggestName(provider: NotebookProviderInfo, suggestedFilename: string) { // guess file extensions const firstSelector = provider.selectors[0];

Discussion:
Filing this issue here to keep in mind and planned for the current iteration.
good call - custom editors do not get saved if they are closed <1s after an edit, so I'll just revert that change. Notebooks do get saved tho, and we have reduced to only a simple provider now, so it's probably taken care of through the working copy service. I can keep looking to make sure we're not trying to dispose of it early tho
For notebooks, it looks like an extra reference is held to the working copy while it is dirty, so it isn't disposed until after it is saved and becomes non-dirty. So, this looks safe for notebooks from what I can see, but let me know if there's still something else I should be looking at.
yes, that piece is critical and should be sufficient from a working copy perspective. Working copies are meant to be somewhat independent from the editors they are edited in. For example, you can change working copies and save them all without any opened editor. We do this for example in text files to support workspace edits over many files, such as search/replace. For notebook working copies, the key question is whether there is anything setup/disposed during the lifecycle of a notebook editor that is required for the save to function? In other words, is there any kind of disposal happening when a notebook editor closes that is required to implement the methods that the working copy needs for saving? Essentially, does method work (cc
oh, I forgot one other case: it is possible for the save operation to fail. In that case, we force reopen the file (at least as far as I can remember). So the additional test to make is whether this works: auto save is on notebook is changed and quickly closed save fails (something we probably can best test running out of sources, for example throwing in  for certain paths) does the notebook reopen? how does the user deal with the error now? Implementation for text files is here: Edit: just tested this and it seems the notebook is not immediately reopened, though you get an error notification.
I played around with this myself and I'm planning to revert because: after the save fails, the file no longer shows dirty at all - there is no error state for the notebook editor, so it always claims that it is just about to save. That makes it hard to understand that there are unsaved changes.
Change:
getExtension(id: string): Promise<IExtensionDescription | undefined>; /** <ins> * Returns `true` if the given extension can be added. Otherwise `false`. * @param extension An extension */ canAddExtension(extension: IExtensionDescription): boolean; /** * Returns `true` if the given extension can be removed. Otherwise `false`. * @param extension An extension */ canRemoveExtension(extension: IExtensionDescription): boolean; /** </ins> * Read all contributions to an extension point. */ readExtensionPointContributions<T>(extPoint: IExtensionPoint<T>): Promise<ExtensionPointContribution<T>[]>;

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:
// Crash reporter configureCrashReporter(); <del> // Remove global paths from the node module lookup (TODO@esm does this work in ESM?) </del> <ins> // Remove global paths from the node module lookup (node.js only) </ins> bootstrapNode.removeGlobalNodeModuleLookupPaths(); // Enable ASAR in our forked processes

Discussion:
Today we have a method to reduce global paths for module lookup in We have to revisit if this solution still works when ESM is on by default. Refs:
This actually still seems to work even in ESM for the reason we it. A test with an extension prints (taken from ): vs.
Change:
const viewColumn = window.activeTextEditor && window.activeTextEditor.viewColumn || ViewColumn.One; <del> if (!left) { return await commands.executeCommand<void>('vscode.open', right, viewColumn); } </del> const opts: TextDocumentShowOptions = { <ins> preserveFocus: true, preview: preview, </ins> viewColumn };

Discussion:
VSCode Version: Code - Insiders 1.13.0-insider (, 2017-05-26T05:14:23.944Z) OS Version: Windows_NT ia32 10.0. Currently you can multi-select items in the Git files view and if you right-click, the & menu items will only open the file/change of the focused item, with the stage/unstage command work with the whole selection. It would be great to have these 2 command act upon the whole selection.
Change:
import { workspace, window, languages, commands, ExtensionContext, extensions, Uri, ColorInformation, Diagnostic, StatusBarAlignment, TextEditor, TextDocument, FormattingOptions, CancellationToken, FoldingRange, <del> ProviderResult, TextEdit, Range, Position, Disposable, CompletionItem, CompletionList, CompletionContext, Hover, MarkdownString, FoldingContext, DocumentSymbol, SymbolInformation, l10n, TextEditorOptions </del> <ins> ProviderResult, TextEdit, Range, Position, Disposable, CompletionItem, CompletionList, CompletionContext, Hover, MarkdownString, FoldingContext, DocumentSymbol, SymbolInformation, l10n </ins> } from 'vscode'; import { LanguageClientOptions, RequestType, NotificationType, FormattingOptions as LSPFormattingOptions,

Discussion:
Testing Should be exposed using a code action (specifically a source action) instead of as a setting? Some advantages: We can reuse the existing setting instead of adding a new one Sorting will play nicer with other source actions since users can configure the order in which the actions run Users can trigger source actions through the context menu or with keybindings
Hey that's a good idea! I'll discuss it with the team. What do you think ?
Yes, makes sense!
Change:
} } <del> private _getLanguageDefinedShouldAutoClose(languageId: string): (ch: string) => boolean { const autoCloseBeforeSet = this.languageConfigurationService.getLanguageConfiguration(languageId).getAutoCloseBeforeSet(); </del> <ins> private _getLanguageDefinedShouldAutoClose(languageId: string, forQuotes: boolean): (ch: string) => boolean { const autoCloseBeforeSet = this.languageConfigurationService.getLanguageConfiguration(languageId).getAutoCloseBeforeSet(forQuotes); </ins> return c => autoCloseBeforeSet.indexOf(c) !== -1; }

Discussion:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Can the addition of the closing curly brace be whenever the opening curly brace is automatically initiated in an f-string in python? currently this doesn't happen and i need to add the closing curly brace when done - this feature would be useful --
Please add more details, e.g. a code sample.
apologies - I actually had but for some reason the main body of text wasn't posted. please see a below a code example - thank you. This is the current way in which the curly brace is interpreted in an f string. As you can see when you enter the opening curly brace, the closing one is not automatically inserted and i have to enter it manually.. it would be incredibly useful if the closing brace was automatically (in the same way automatic closing of brackets and braces is achieved outside of the print statement in the editor) to achieve something like: having said this - this is a trivial feature request, but i find myself using this a lot
is defined as bracket pair, also for when in strings, so I believe it should work.
Thank you for the reply! Hmm this doesn't for me unfortunately, is there a setting that needs to be activated?
does autoclose in strings in general e.g. https://user- But not at the position before the closing e.g. https://user- Relevant code:
ha! thank you, this is really interesting - i can confirm that it works when entering before the closing - funny because i have only ever really required the the braces before the closing comma (because this then creates a whitespace between the statement and the answer which is intended for visual purposes will this be treated as a bug to fix? again this obviously isn't critical. happy to close. thanks
This cannot be fixed at the moment. The behaviour is controlled by the autoCloseBefore property in the language configuration file, but quotes are not appropriate for that property. JavaScript and TypeScript make an exception for backticks.
Change:
this._createXterm(); if (platform.isWindows) { <del> this._processReady.then(() => this._windowsShellHelper = new WindowsShellHelper(this._processId, this._shellLaunchConfig.executable, this, this._xterm)); </del> <ins> this._processReady.then(() => { if (!this._isDisposed) { this._windowsShellHelper = new WindowsShellHelper(this._processId, this._shellLaunchConfig.executable, this, this._xterm); } }); </ins> } // Only attach xterm.js to the DOM if the terminal panel has been opened before.

Discussion:
Steps to reproduce: and kill terminal very quickly This can likely happen when the terminal is killed during a call.
I can still repro this with the same stack, I don't think the PR fixes the right issue. It fails on this line, because is null: A null xterm object is passed into the constructor, which implies that the terminal instance was disposed, so I think the problem is the terminalInstance being disposed while is running:
Change:
} if (typeof propItems.pattern === 'string') { <del> const patternRegex = new RegExp(propItems.pattern); </del> <ins> const patternRegex = new RegExp(propItems.pattern, 'u'); </ins> arrayValue.forEach(v => { if (!patternRegex.test(v)) { message +=

Discussion:
I have a configuration property in my extension's with the following definition: That regex is a valid unicode regex that works in the node REPL, but it doesn't work properly in the VS Code settings editor: <img width="474" alt="Screenshot 2023-08-31 at 9 11 30 AM" src=""Are these patterns evaluated with the unicode flag on? If not, can that feature be or enabled?
The Unicode flag isn't used at this time. Code pointer
Is this something that is going to be picked up in an upcoming release?
Thanks for fixing this so quickly! It works for me on: Version: 1.83.0-insider Commit: Date: 2023-09-25T10:44:46.038Z Electron: 25.8.2 ElectronBuildId: Chromium: 114.0.5735.289 18.15.0 V8: 11.4.183.29-electron.0 OS: Darwin arm64 22.6.0
Marking this as verified based on author's comment
Change:
keyboardNavigationLabelProvider: instantiationService.createInstance(TreeKeyboardNavigationLabelProvider), accessibilityProvider: instantiationService.createInstance(ListAccessibilityProvider), filter: this.filter, <del> findWidgetEnabled: false </del> <ins> findWidgetEnabled: false, openOnSingleClick: false, </ins> }) as TestingObjectTree<FuzzyScore>;

Discussion:
Testing microsoft/vscode-python Here: !
ideas on this? I provided the path to the file so the "Go to test..." works ( confirm if this is not the case). Thanks!
This works fine via double click but for example does not open on macOS. This works in other trees as standard gesture to open. To make this easy to adopt for trees, I think we have a convention in custom trees, not sure if they are used here. do you remember?
Yes, if you set the command of the tree item in extension provided trees to or then we do some magic and respect the arguments to those commands as outlined at and also respect things like double click and ctrl+click. Here is how we pass the click properties to those commands:
Change:
this.domNode.style.border = `1px solid ${asCssVariable(editorHoverBorder)}`; this.domNode.style.color = asCssVariable(editorHoverForeground); <del> this.toDispose.push(this.tree.onDidChangeContentHeight(() => this.layoutTreeAndContainer(false))); </del> <ins> this.toDispose.push(this.tree.onDidChangeContentHeight(() => { if (!this.isUpdatingTree) { // Don't do a layout in the middle of the async setInput this.layoutTreeAndContainer(); } })); </ins> this.registerListeners(); this.editor.addContentWidget(this);

Discussion:
an object that has many long property values There is no scrollbar the prototype There is a scrollbar !
Probably only with the horizontalscrolling setting enabled? I know that's a bit tricky
What's the setting for that? I don't have any scroll setting that appears debug related enabled. Just sticky scroll for the editor.
I think you have set, right?
No I do not.
Change:
import { ITextDocument } from './types/textDocument'; import { Disposable } from './util/dispose'; import { isMarkdownFile } from './util/file'; <ins> import { Schemes } from './util/schemes'; </ins> import { MdDocumentInfoCache } from './util/workspaceCache'; import { IMdWorkspace } from './workspace';

Discussion:
while testing a markdown file with a header a notebook with a markdown cell and link to that header the link in the rendered markdown result: vscode attempts to navigate to a file named note that both auto-complete and find references for the header work correctly for that link.
Change:
} private registerListeners(): void { <del> this._register(addDisposableListener(this.window, 'unload', () => { this._onDidClose.fire(); </del> <ins> this._register(addDisposableListener(this.window, 'beforeunload', () => { this._onWillClose.fire(); </ins> })); this._register(addDisposableListener(this.window, 'unhandledrejection', e => {

Discussion:
Testing It would be great if we can have a command to bring back those editors to the main window.
I think that should actually be the default behaviour when you just close the window. That will prevent ugly confirmation dialogs for dirty editors when you attempt to close the floating window.
Verification: open a floating window with some editors (e.g. by dragging an editor tab out of the window) close the floating window, e.g. from the X window button verify all editors of the floating window are moved back to the main window