jiebi/CodeConvo huggingface dataset:
Change:
const viewBox = this.submenuContainer.getBoundingClientRect(); const { top, left } = this.calculateSubmenuMenuLayout(new Dimension(window.innerWidth, window.innerHeight), Dimension.lift(viewBox), entryBoxUpdated, this.expandDirection); <del> this.submenuContainer.style.left = `${left}px`; this.submenuContainer.style.top = `${top}px`; </del> <ins> // subtract offsets caused by transform parent this.submenuContainer.style.left = `${left - viewBox.left}px`; this.submenuContainer.style.top = `${top - viewBox.top}px`; </ins> this.submenuDisposables.add(addDisposableListener(this.submenuContainer, EventType.KEY_UP, e => { let event = new StandardKeyboardEvent(e);

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 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.60.1 OS Version: web The issue occurs when trying to intergrate VSCode (or Monaco) into a parent element. Steps to Reproduce: Replace the with: and . click the editor and move the mouse to a context menu item with submenu. submenu is in incorrect position. ! Reason: This is because ancestor of fixed descendants. Here is the code that causes the issue: A PR has been made for this issue.
Is it expected that the menu shows up far away from the hamburger icon in the top left? !
please file a separate issue as this fix was targeted for submenus in monaco
Change:
this._register(webviewEditor.onDidChangeViewState(() => { this.update(); <ins> this.webviewEditor.webview.postMessage({ type: 'setActive', value: this.webviewEditor.active }); </ins> })); this._register(webviewEditor.onDidDispose(() => {

Discussion:
Repo an image to the side of a text editor with the text editor focused click into the image editor to focus it Bug The first click ends up zooming the image. Clicking should only zoom when the editor is already focused
Here's the relevant code about click handling in the image preview:
If focus is required for zoom, then the cursor when hovering over the image preview should be the default arrow cursor when unfocused, currently it is the zoom-in cursor. Also zooming with the mouse wheel should not be allowed when unfocused. Thoughts?
Fixed by
I'm still seeing the first click zoom. Steps: a typescript file. a gif gif to the right so that both typescript and gif are visible and side by side in typescript. in gif Expected: no zoom Actual: it zooms on the click in the gif in (5).
I'm not able to reproduce. Have tried on both insiders 1.40.0 and OSS. Does this only occur with gifs for you?
I can repo this. You may need to click back and forth multiple times trigger the error
I'm still not able to. Will try more tomorrow. A possible cause might be that the event is fired before the event on the first click. This could be tested by checking the order of execution for the corresponding event handlers in . I'll do it if I manage to reproduce the bug.
Change:
if (debugIconBreakpointDisabledColor) { collector.addRule(` ${icons.allBreakpoints.map(b => `.monaco-workbench ${ThemeIcon.asCSSSelector(b.disabled)}`).join(',n		')} { <del> color: ${debugIconBreakpointDisabledColor} !important; </del> <ins> color: ${debugIconBreakpointDisabledColor}; </ins> } `); }

Discussion:
If I focus the callstack row, I can't read "Paused on breakpoint" or see the debug command buttons with the new list focus color !
Thanks for fixing
For verification: start a debug session and verify that selecting a call stack row shows the icons correctly in dark/light. Also ensure the icons in the toolbar (docked and floating) appear correctly.
Change:
overrideStyles: { listBackground: NOTIFICATIONS_BACKGROUND }, <del> accessibilityProvider: { getAriaLabel(element: INotificationViewItem): string { if (!element.source) { return localize('notificationAriaLabel', "{0}, notification", element.message.raw); } return localize('notificationWithSourceAriaLabel', "{0}, source: {1}, notification", element.message.raw, element.source); }, getWidgetAriaLabel(): string { return options.widgetAriaLabel ?? localize('notificationsList', "Notifications List"); }, getRole(): AriaRole { return 'dialog'; // https://github.com/microsoft/vscode/issues/82728 } } </del> <ins> accessibilityProvider: this.instantiationService.createInstance(NotificationAccessibilityProvider, options) </ins> } ));

Discussion:
Testing Repro: some notifications and focus one. You should hear a hint about opening the notification in the accessible view. !
Oh, this is because it's not focused. I found this a little confusing as the info message doesn't say it's a notification or anything so how would a new user know how to answer the question?
I'm still hitting this sometimes when the notification is focused as well No verbosity settings are set here: !
When this happens alt+f2 doesn't work It might be something off with context keys?
Proof: !
I was also going to report this - I triggered this notification and selected it to focus it, but I didn't get a hint: !
I have occasionally found that this does not work when I have the screen reader text view open. Can you try with that closed and speech on / volume up?
Is that the speech viewer / text box shows in his screenshots? I didn't have that open in my flow afaik.
I need to add to the aria label - currently, it's just to the free floating notification element
It's better now, but the hint still doesn't show up if the notification appears and the user tabs to it. The hint shows up if the user tabs to the button, but then Alt+F2 doesn't work while the user is on the button. Good: the screen reader optimized button. the notification. the show notification command. is properly displayed. Bad notifications from the notifications center. the screen reader optimized button. tab until the focus is on the notification. Enable tab moves focus mode if needed. :bug: The hint doesn't show up, and pressing Alt+F2 doesn't work. tab until the focus is on the Yes button. :bug: The hint shows up, but pressing Alt+F2 doesn't work. Let me know if you're able to reproduce the issue and whether it's worth reopening.
Thanks I'll probably wait to see if this is an issue screen reader users encounter.
Change:
.monaco-workbench .part.titlebar > .titlebar-container > .titlebar-center > .window-title > .command-center .action-item.command-center-center .action-item.command-center-quick-pick { display: flex; <ins> justify-content: start; overflow: hidden; margin: auto; max-width: 600px; </ins> } .monaco-workbench .part.titlebar > .titlebar-container > .titlebar-center > .window-title > .command-center .action-item.command-center-center .action-item.command-center-quick-pick .search-icon {

Discussion:
From <img width="777" alt="image" src=""Seems less useful to see the middle of the editor name, instead of the beginning
Looks like I need a CSS style that says "center unless too wide"
I didn't try it but I think that is a valid strategy <img width="422" alt="image" src=""
But what if github copilot would just automatically show up in this issue like "hey, I have an idea..."
Change:
import 'vs/css!./renameInputField'; import { ContentWidgetPositionPreference, ICodeEditor, IContentWidget, IContentWidgetPosition } from 'vs/editor/browser/editorBrowser'; import { EditorOption } from 'vs/editor/common/config/editorOptions'; <ins> import { IDimension } from 'vs/editor/common/core/dimension'; </ins> import { Position } from 'vs/editor/common/core/position'; import { IRange } from 'vs/editor/common/core/range'; import { ScrollType } from 'vs/editor/common/editorCommon';

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 VS Code Version: trunk commit OS Version: Win 11 Steps to Reproduce: using Monaco standalone inside an Excel add-in (Advanced Formula Environment, developed by Microsoft Research) have a page in our add-in where we create ~hundred Monaco editors at once, in a scrollable pane (one per cell - with the editor showing the contents of the cell as a "file"). have a nasty performance issue where we would like to call to register keybindings on each editor. However - we instead have to do that lazily when the editor first receives focus. This is because it takes ~10ms just to register the actions on the editor (and if you have 100+ Monaco editors, that's prohibitive). is the call stack that accounts for 75% of the cost of instantiating a Monaco editor!! StandaloneCodeEditor.addAction StandaloneKeybindingService.addDynamicKeybinding onDidUpdateKeybindings notification RenameInputField, updateLabel method (registered for the update-keybindings event in getDomNode) real issue here, is that even when you're not doing any renaming at all, the RenameInputField is always inserted into the DOM, and is registered to keep that DOM up-to-date via keybinding notifications. Clearly, this is wasteful: we should only be keeping the DOM updated with the keybindings when the rename widget is visible. There should be no DOM manipulation at all in a callback like onDidUpdateKeybindings! I have a PR to fix this issue (subject to approval). This cuts the cost of addActions dramatically, enabling us to instantiate many Monaco editors an order of magnitude more quickly. Inside StandaloneCodeEditor.addAction, there is a direct call to Later within the same method however, inside , there is an identical call to . This results in duplicate registration of the command - the LinkedList holding the commands ends up with multiple identical nodes.

Is this a bug in ? It seems to be harmless but surely unintentional.
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.75.1. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Change:
this._register(dom.addStandardDisposableListener(this._contentDomNode.domNode, 'keydown', (e) => { if (e.keyCode === KeyCode.Escape) { this.hide(); <del> instance.focus(); </del> <ins> _instance.focus(); </ins> } })); <del> this._register(instance.onDidFocus(() => this.hide())); </del> <ins> this._register(_instance.onDidFocus(() => this.hide())); </ins> this._markdownRenderer = this._register(instantiationService.createInstance(MarkdownRenderer, {})); }

Discussion:
Shell integration offers many improvements to the terminal experience and makes it more accessible via commands like . reported that he and many others use which does not have shell integration. Should we include a hint in the help menu that the experience could be better when we detect a screen reader & ?
I think this will improve the discoverability! Voting for this idea.
On windows, Create a terminal - via for example. run . Verify that you see a message about migrating to use powershell.
Change:
return false; // resource must not be pending to save } <del> if (this.filesConfigurationService.getAutoSaveMode() === AutoSaveMode.AFTER_SHORT_DELAY && !fileModel?.hasState(TextFileEditorModelState.ERROR)) { </del> <ins> if (resource.scheme !== Schemas.untitled && this.filesConfigurationService.getAutoSaveMode() === AutoSaveMode.AFTER_SHORT_DELAY && !fileModel?.hasState(TextFileEditorModelState.ERROR)) { </ins> // leave models auto saved after short delay unless <del> // the save resulted in an error </del> <ins> // the save resulted in an error and not for untitled // that are not auto-saved anyway </ins> return false; }

Discussion:
A bug in our tracker for dirty models, somehow never reported but obvious in an issue I noticed with Copilot. The end result is that you see a dirty indicator e.g. in the explorer but no editor that is opening and associated with it. Steps:
Tried to look at the steps to repro but seems the link to the copilot issue is broken or at least I am not able to access it.
I'm still getting this with copilot nightly in insiders <img width="652" alt="image" src="https://user-"
Please note that my change does not fix the Copilot issue. The steps to verify are unclear: it is expected when you see an untitled editor opening. You must test with auto save on.
Setting back verified label based on the screenshot.
Change:
private readonly _hasAssociatedFilePath: boolean, readonly viewType: string, private readonly _workingCopyManager: IFileWorkingCopyManager<NotebookFileWorkingCopyModel, NotebookFileWorkingCopyModel>, <del> @ILifecycleService lifecycleService: ILifecycleService, </del> @IFilesConfigurationService private readonly _filesConfigurationService: IFilesConfigurationService ) { super();

Discussion:
a new notebook (or new image with Luna editor) and also a new text file all the editors dirty hotexit is off the window, selecting "don't save" when prompted to revert all working copies -open the window - the text editor is gone (closed during shut down), but the other editors are open and blank.
This is why I thought the revert behavior was broken in I think it would be much better if an interactive window closed when it was reverted.
this is really up to the editor itself to decide whether to close the editor when the underlying working copy is reverted or not. Generally working copies try to stay as agnostic as possible to editors. There is only very few exceptions when it comes to restoring backups. Untitled editors listen to working copies getting reverted to self-dispose: This in turn, will close the editor. I suggest you go down a similar path. fyi for custom editors
fixed for notebook/Interactive window editor. - did you want another issue to track this for custom editors?
Yes that would be great
Change:
assert.equal(linkHandler.preprocessPath('/absolute/path/file3'), '/absolute/path/file3'); }); }); <ins> test('gitDiffLinkRegex', () => { // The platform is irrelevant because the links generated by Git are the same format regardless of platform const linkHandler = new TestTerminalLinkHandler(new TestXterm(), Platform.Linux, null!, null!, null!, null!); function assertAreGoodMatches(matches: RegExpMatchArray | null) { if (matches) { assert.equal(matches.length, 2); assert.equal(matches[1], 'src/file1'); } else { assert.fail(); } } // Happy cases assertAreGoodMatches('--- a/src/file1'.match(linkHandler.gitDiffLinkPreImageRegex)); assertAreGoodMatches('--- a/src/file1             '.match(linkHandler.gitDiffLinkPreImageRegex)); assertAreGoodMatches('+++ b/src/file1'.match(linkHandler.gitDiffLinkPostImageRegex)); assertAreGoodMatches('+++ b/src/file1             '.match(linkHandler.gitDiffLinkPostImageRegex)); // Make sure /dev/null isn't a match assert.equal(linkHandler.gitDiffLinkPreImageRegex.test('--- /dev/null'), false); assert.equal(linkHandler.gitDiffLinkPreImageRegex.test('--- /dev/null           '), false); assert.equal(linkHandler.gitDiffLinkPostImageRegex.test('+++ /dev/null'), false); assert.equal(linkHandler.gitDiffLinkPostImageRegex.test('+++ /dev/null          '), false); }); </ins> });

Discussion:
Example:
Do you mind if I take on this issue? I assume the request is to make and Ctrl-clickable such that the links open the correct versions of the files.
sounds good. The link registration is done here and it's based on regexs: We basically want the and parts to be matched, but ignored as part of the link.
I'm having a bit of trouble with getting the two git blob IDs and , which are necessary to get the correct versions of the files. I tried to write a multi-line regex for that captures the blob IDs in groups, along with the paths we want to link, but currently only runs the regex on a per line basis (by iterating through the buffer), not on the whole content of the terminal. So the regex didn't find any matches. I also tried to get the blob IDs by parsing the contents of the terminal manually, but doesn't seem to offer a public interface to retrieve the contents. I do see but I don't want to rely on an internal implementation to do something like this. How do you suggest I proceed? Should I submit a PR to to allow multi-line regex in ?
I'm having a bit of trouble with getting the two git blob IDs and , which are necessary to get the correct versions of the files. Oh I wouldn't go that far, just pointing both links to the current version of the file would be good enough start with.
Ah I see, that's a lot simpler to do. Will open a PR soon.
Change:
assert.strictEqual(participationCounter, 1); }); <ins> test('Save Participant, calling save from within is unsupported but does not explode (sync save)', async function () { await workingCopy.resolve(); await testSaveFromSaveParticipant(workingCopy, false); }); test('Save Participant, calling save from within is unsupported but does not explode (async save)', async function () { await workingCopy.resolve(); await testSaveFromSaveParticipant(workingCopy, true); }); async function testSaveFromSaveParticipant(workingCopy: StoredFileWorkingCopy<TestStoredFileWorkingCopyModel>, async: boolean): Promise<void> { assert.strictEqual(accessor.workingCopyFileService.hasSaveParticipants, false); const disposable = accessor.workingCopyFileService.addSaveParticipant({ participate: async () => { if (async) { await timeout(10); } await workingCopy.save({ force: true }); } }); assert.strictEqual(accessor.workingCopyFileService.hasSaveParticipants, true); await workingCopy.save({ force: true }); disposable.dispose(); } </ins> test('revert', async () => { await workingCopy.resolve(); workingCopy.model?.updateContents('hello revert');

Discussion:
This is a follow-up from and describes the problem that save participants causing a save operation
reproduced when undoing some fixes (applying the fix below)
fyi
Change:
} // 1.txt=>2.txt <del> let prefixFileNoNameRegex = RegExp('(d+)(..*)$'); </del> <ins> let prefixFileNoNameRegex = RegExp('^(d+)(..*)$'); </ins> if (!isFolder && name.match(prefixFileNoNameRegex)) { return name.replace(prefixFileNoNameRegex, (match, g1?, g2?) => { let number = parseInt(g1);

Discussion:
Issue Type: <bBug</bI have a file named F1000-v117.au3. When copying/pasting the file, it creates a file named F1001-v117.au3. This is not the expected result. F1000 is the name of the file and not a version number that should be incremented. Changing the regex within the incrementFileName function fixes the issue. Basically, make sure the first section of the file name is numeric only. to VS Code version: Code 1.25.1 (, 2018-07-11T15:43:11.471Z) OS version: WindowsNT ia32 6.1.7601 <details<summarySystem Info</summary </details<!-- generated by issue reporter --
PR for this is welcome It would be great if the PR contains a unit test fyi
I'll take a look tomorrow.
is the expected result right?
Actually it seems like other cases are broken now. Have a file , copy and paste it The new file is , in 1.26 it was
Thanks for finding that Due to that I had to revert the original fix. So now copying gives However this issue is now not fixed, but it was like that in previous stable so nothing urgent -removing mielstone let me know if you want to fix your fix and provide a working PR. Thanks
Hey guys, I took a crack at fixing this regex have some questions on how the naming / number schema works and I want to make sure I have an understanding of the naming schema. We have our cases here: suffix: prefix: single number: no number: ends with number: mixed (new case / why the above PR broke): prefixed with number: The issue is that mixing letters and numbers triggers the prefix regex which incorrectly increments the number. But all the different variations of prefix / suffix and single number / mixed with letters make this particularly tricky. It seems like edits need to be made to existing regexes to ensure that they are matching digit only groups. However, the above PR regex edits and the edits I've made consistently break other regexes. Any ideas or considerations here?

This issue is being closed to keep the number of issues in our inbox on a manageable level, we are closing issues that are not going to be addressed in the foreseeable future: We look at the number of votes the issue has received and the number of duplicate issues filed. More details . If you disagree and feel that this issue is crucial: We are happy to listen and to reconsider. If you wonder what we are up to, please see our and guidelines. Thanks for your understanding and happy coding!
Change:
protected _profilesObject: UserDataProfilesObject | undefined; protected get profilesObject(): UserDataProfilesObject { if (!this._profilesObject) { <del> const profiles = this.enabled ? this.getStoredProfiles().map<IUserDataProfile>(storedProfile => toUserDataProfile(basename(storedProfile.location), storedProfile.name, storedProfile.location, { shortName: storedProfile.shortName, useDefaultFlags: storedProfile.useDefaultFlags })) : []; </del> <ins> const profiles = []; if (this.enabled) { for (const storedProfile of this.getStoredProfiles()) { if (!storedProfile.name || !isString(storedProfile.name) || !storedProfile.location) { this.logService.warn('Skipping the invalid stored profile', storedProfile.location || storedProfile.name); continue; } profiles.push(toUserDataProfile(basename(storedProfile.location), storedProfile.name, storedProfile.location, { shortName: storedProfile.shortName, useDefaultFlags: storedProfile.useDefaultFlags })); } } </ins> let emptyWindow: IUserDataProfile | undefined; const workspaces = new ResourceMap<IUserDataProfile>(); const defaultProfile = toUserDataProfile(hash(this.environmentService.userRoamingDataHome.path).toString(16), localize('defaultProfile', "Default"), this.environmentService.userRoamingDataHome);

Discussion:
Testing Try to import this profile file: Restart VS Code. Observe that VS Code does not load anymore.
Change:
import { ContextMenuController } from 'vs/editor/contrib/contextmenu/contextmenu'; import { MenuPreventer } from 'vs/workbench/parts/codeEditor/electron-browser/menuPreventer'; import { SnippetController2 } from 'vs/editor/contrib/snippet/snippetController2'; <ins> import { isMacintosh } from 'vs/base/common/platform'; </ins> interface SearchInputEvent extends Event { target: HTMLInputElement;

Discussion:
We do the same for search, settings, keybindings, etc.
Attempting to do on settings (old and new) and keybindings in Insiders and not seeing anything happen. Just works, but that conflicts with the normal use of to reach the end of the input field. In Search however, works and takes you through history. Are we still in the process of moving to everywhere or are we doing something else now?
Could we maybe rename to just and use it everywhere?
On input fields that don't have history like settings and keybindings, it's just down. We could add bindings for ctrl+down for those fields too to be consistent, although I like down a lot more anyway.
I don't think it helps to have a common command for this because it's going to be different in every case.
Should extensions also be just down, given there's no history?
I think so.
Might be an issue if we want to show history in Extensions input box in future.
Note to verifier: Down arrow from the extension search box is now expected to take you to the first result
Tested on MacOS, cmd down arrow goes to end of text box instead of focusing the list