Question: { actionViewItemProvider: action => this.actionViewItemProvider(action as Action), actionRunner: this.actionRunner, <del> classNames: 'toolbar-toggle-pickReactions', </del> <ins> classNames: ['toolbar-toggle-pickReactions', ...Codicon.reactions.classNamesArray], </ins> anchorAlignmentProvider: () => AnchorAlignment.RIGHT } );

Microsoft/vscode Tested using VoiceOver on MacOS Issues The add reaction button on the right side is currently read out atWhen focusing on a reaction in the context menu, it is read as just the emoji name. Github instead reads each option asThe existing reactions do not have helpful voice text. They should be read as the reaction name and number of reactionsThe add reaction button the right of existing reactions also does not have helpful voice over labels
This is now read as "Toggle Reaction" Since this uses a context menu, this is intentional. Menus don't have special aria labels. This now reads a more useful "Toggle reaction, x reactions with y" message. Same as above since this is a menu.
This seems improved but I can't get it to read the menu when I tab from the comment to the react menu button. It doesn't read anything when I use the arrow keys to move focus between menu buttons. If I expand the menu with space, then it reads the menu name. It looks like this, so I guess voiceover is stuck on the full comment context even though focus has moved. Not a voiceover expert though, is that an issue or should I be using other nav keys anyway? <img width="610" alt="image" src="https://user-"


Question: description: localize('chatSampleRequest', "When the user clicks this participant in `/help`, this text will be submitted to the participant."), type: 'string' }, <ins> when: { description: localize('chatParticipantWhen', "A condition which must be true to enable this participant."), type: 'string' }, </ins> commands: { markdownDescription: localize('chatCommandsDescription', "Commands available for this chat participant, which the user can invoke with a `/`."), type: 'array',

The static "when" clause on chat participants should be moved to the set of things that are finalized.
what would happen when a participant becomes "disabled" after having been interacted with? Evaluating going from to and to again
It would just stop showing up in the suggest widget and you wouldn't be able to invoke it. But it can still show up in your conversation thread. Same as if you uninstall a chat extension.
Verify that can be set and used on the chat participant contribution in without api proposal needed. Easiest to use the .


Question: value: this.state.text.value, placeholderText: localize('testExplorerFilter', "Filter (e.g. text, !exclude, @tag)"), }, <del> history: this.history.get([]) </del> <ins> history </ins> })); this._register(attachSuggestEnabledInputBoxStyler(input, this.themeService));

Issue Type: <bFeature Request</b The Test Explorer filter should be preserved if a window reload occurs, rather than resetting to default. This behavior could be gated by a setting. ! VS Code version: Code - Insiders 1.65.0-insider (, 2022-02-16T05:16:18.653Z) OS version: WindowsNT x64 10.0. Restricted Mode: No <details<summarySystem Info</summary </details<details<summaryExtensions (32)</summaryExtensionVersion ------ vscode-color0.4.5 vscode-opennewinstance0.0.12 gitlens11.7.0 filter-lines1.0.0 EditorConfig0.16.4 prettier-vscode9.2.0 copilot-nightly1.7.5030 remotehub0.24.0 gc-excelviewer4.0.50 todo-tree0.0.215 vscode-drawio1.6.4 change-case1.0.2 vscode-peacock4.0.0 git-graph1.30.0 vscode-azurefunctions1.6.0 vscode-azureresourcegroups0.4.0 vscode-docker1.19.0 remote-containers0.222.0 azure-account0.10.0 powershell-preview2022.2.1 indent-rainbow8.2.2 docthis0.8.2 pester-test2021.10.2 vscode-commons0.0.6 vscode-yaml1.4.0 vscode-inline-values-powershell0.0.5 errorlens3.4.1 vscode-icons11.10.0 codetour0.0.58 gistfs0.3.0 gitmoji-vscode1.0.9 better-align1.1.6 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
That makes sense.
I'm still able to reproduce this with the latest mainline build. May I pick this up since it's still open?
Sure!


Question: } } <del> // Clear attrs, reset cursor position, clear right </del> <ins> // Get the line content of the command from the terminal </ins> const content = this._serializeAddon.serialize({ range: { start: stickyScrollLineStart + rowOffset,

Testing So I was testing the terminal sticky scroll and I noticed that the sticky code block disappears in an abrupt manner when the beginning (not the end) of the multiline terminal command, reaches the end of the scope. To give more context about what I mean, I the GIF below. I was sort of expecting the code block to start disappearing when the line reached the end of the output for that command. I noticed that the code block disappeared however when the line reached the end of the output for that run. I don't think this is a problem per say, it's a different manner of animating sticky scroll. I was just wondering if this is intended? I think the potential issue with this approach is that the sticky scroll block is hiding the next terminal command and its output while you are scrolling until it disappears. In the editor, sticky scroll starts disappearing progressively when the bottom of the last block/line touches the end of the scope. Perhaps we could explore something similar?
This is actually a bug, it's meant to scroll up as in the editor and was doing that at some point. Note that it's not as smooth as the editor since there's no "partial line scrolling" in the terminal
Repro that demonstrates more clearly what's happening: Run: Run: Run: when scrolling, sticky scroll from a command should never obscure the command below it like this: !
I see the prompt line sort of being obscured here


Question: * interval. */ KillSpawnSpacingDuration = 50, <del> /** * Writing large amounts of data can be corrupted for some reason, after looking into this is * appears to be a race condition around writing to the FD which may be based on how powerful * the hardware is. The workaround for this is to space out when large amounts of data is being * written to the terminal. See https://github.com/microsoft/vscode/issues/38137 */ WriteMaxChunkSize = 50, </del> /** * How long to wait between chunk writes. */

<!-- 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.77.3 OS Version: Ubuntu 20.04.6 Steps to Reproduce: VSCode on an Ubuntu computer (or on Windows using WSL) the built-in terminal the command and paste the following 39-character string into nano: : nano shows the error message "Unknown Sequence". Can no longer interact with the terminal, need to kill it and open a new one More details: nano version 4.8 This does not happen in nano using an external terminal. Only in VSCode's built-in terminal This does not happen for any other length of string, even other multiples of 39 This does not happen in other CLI text editors, such as vim
I can confirm this issue on Windows using WSL.
It happens with other 39 long strings as well. It also happens when not using WSL. Copying more characters solves the problem. For us it also happens with multiples of 39 (e.g. 156 characters, line breaks included)
When trace logs are enabled this is the exact sequence we send: Compared to 1 less : Note that the 200/201 wrapped around it is bracketed paste mode (which I just a way to disable so that may help ). So this seems to be either a problem with one of nano, conpty or node-pty.
I also just ran into this. I'm on Windows 10, using Remote - SSH plugin to connect to an Ubuntu 22.04 server. Right-click to paste in Nano, terminal locks up, have to Kill it.


Question: * interval. */ KillSpawnSpacingDuration = 50, <del> /** * Writing large amounts of data can be corrupted for some reason, after looking into this is * appears to be a race condition around writing to the FD which may be based on how powerful * the hardware is. The workaround for this is to space out when large amounts of data is being * written to the terminal. See https://github.com/microsoft/vscode/issues/38137 */ WriteMaxChunkSize = 50, </del> /** * How long to wait between chunk writes. */

Add/remove one character from the string and try again, works.
We closed this issue because we in the foreseeable future. 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 . Thanks for your understanding, and happy coding!
i opened a bug on gnu nano's bugtracker:
I think I found a workaround, but haven't tested it: vscode , nano doesn't deal well with across writes and it is apparently difficult to fix in nano. vscode could split writes differently, using this algorithm that keeps escape sequences at the beginning and end unsplit (like bracketed pastes):
great info, we should definitely do this . I'll probably tweak your proposal a little to try catch escape sequences in the middle too.
I don't expect input sizes to be 50 bytes except when pasting, when pasting there should only ever be an escape sequence at the beginning and end, never in the middle (terminal apps are unlikely to deal well with pasting a string containing escape sequences anyway).
unless I missed something in the issue you linked, it's not that they need to be on the boundaries of the text but need to be included entirely in that string and not clipped?
yes, escape sequences need to be contained entirely in one write syscall. basically I am saying you shouldn't have escape sequences in the middle of a long input, so you don't need to look for them to avoid splitting them, they should only occur towards the ends of a long input or in a shorter input.
Nano's workaround was released in Nano 8.0:


Question: storageId: 'workbench.explorer.views.state', icon: explorerViewIcon, alwaysUseContainerInfo: true, <ins> hideIfEmpty: true, </ins> order: 0, openCommandActionDescriptor: { id: VIEWLET_ID,

Testing open search viewlet drag explorer (activity icon) into search pane all explorer views are now in the search pane it is not possible to drag the file/folder view back into the explorer https://user-
verified since the empty explorer is gone


Question: storageId: 'workbench.explorer.views.state', icon: explorerViewIcon, alwaysUseContainerInfo: true, <ins> hideIfEmpty: true, </ins> order: 0, openCommandActionDescriptor: { id: VIEWLET_ID,

Testing have search view open drag the explorer icon onto it the explorer (and npm script) views show the explorer icon stays in the activity bar, the view is empty https://user-


Question: if($set.Add($artifactName)) { Write-Host "Processing artifact: '$artifactName. Downloading from: $($_.resource.downloadUrl)" <ins> $extractPath = "$env:AGENT_TEMPDIRECTORY/$artifactName.zip" </ins> try { <del> Invoke-RestMethod $_.resource.downloadUrl -OutFile "$env:AGENT_TEMPDIRECTORY/$artifactName.zip" -Headers @{ </del> <ins> Invoke-RestMethod $_.resource.downloadUrl -OutFile $extractPath -Headers @{ </ins> Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" <del> } -MaximumRetryCount 5 -RetryIntervalSec 1  | Out-Null </del> <ins> } -MaximumRetryCount 5 -RetryIntervalSec 1 -TimeoutSec 300 | Out-Null </ins> <del> Expand-Archive -Path "$env:AGENT_TEMPDIRECTORY/$artifactName.zip" -DestinationPath $env:AGENT_TEMPDIRECTORY | Out-Null </del> <ins> Write-Host "Extracting artifact: '$extractPath'" Expand-Archive -Path $extractPath -DestinationPath $env:AGENT_TEMPDIRECTORY | Out-Null </ins> } catch { Write-Warning $_ $set.Remove($artifactName) | Out-Null

Notice how in the step was stuck in the following line for at around 2 hours: This could either be from or from . Maybe we should put a log between those. In any case, my bets go against the former... which can be resolved with the  option. WDYT? cc
You're a PowerShell pro now!


Question: item: { command: { id: TerminalCommandId.SelectDefaultProfile, <del> title: { value: localize('workbench.action.terminal.selectDefaultProfile', "Select Default Profile"), original: 'Select Default Profile' } </del> <ins> title: { value: localize('workbench.action.terminal.selectDefaultProfile', "Select Default Profile"), original: 'Select Default Profile' }, </ins> }, <del> group: TerminalTabContextMenuGroup.Configure </del> <ins> group: '3_configure' </ins> } }, {

Could look like this, but have and/or tasks entries as well as a one. Hiding it by default is a good way to avoid cluttering the action bar - so people only see it if they want to <img width="285" alt="Screen Shot 2022-09-30 at 12 56 57 PM" src="https://user-"
cc
Talked w Kai and we're thinking to instead add a action to the terminal dropdown which aligns with the menu and will aid in discoverability !


Question: const content = []; content.push(this._descriptionForCommand(TerminalCommandId.FocusAccessibleBuffer, localize('focusAccessibleTerminalView', 'The Focus Accessible Terminal View ({0}) command enables screen readers to read terminal contents.'), localize('focusAccessibleTerminalViewNoKb', 'The Focus Terminal Accessible View command enables screen readers to read terminal contents and is currently not triggerable by a keybinding.'))); content.push(localize('preserveCursor', 'Customize the behavior of the cursor when toggling between the terminal and accessible view with `terminal.integrated.accessibleViewPreserveCursorPosition.`')); <ins> if (!this._configurationService.getValue(TerminalSettingId.AccessibleViewFocusOnCommandExecution)) { content.push(localize('focusViewOnExecution', 'Enable `terminal.integrated.accessibleViewFocusOnCommandExecution` to automatically focus the terminal accessible view when a command is executed in the terminal.')); } </ins> if (this._instance.shellType === WindowsShellType.CommandPrompt) { content.push(localize('commandPromptMigration', "Consider using powershell instead of command prompt for an improved experience")); }

Type: <bFeature Request</bCC Please consider auto-activiating accessible view in terminal when user hit enter key. In most cases, screen reader users want to open accessible view after executing command in terminal. Thus, pressing Enter key can do: the current command to terminal. Accessible View immediately. Rather than having this as the default mode, we could consider adding this as a custom user setting. VS Code version: Code - Insiders 1.85.0-insider (, 2023-11-02T09:02:24.464Z) OS version: Windows_NT x64 10.0. Modes: <!-- generated by issue reporter --
This makes sense. let us know if you have any thoughts.
I imagine this mode can boost user productivity because VSCode now sends user typing in Accessible View directly to the active terminal. If this mode is , users will experience more seamless round trip between terminal input and accessible view without having to press Alt+F2 and ESC.
To verify, enable . Run a command in the terminal. The accessible view should open.


Question: constructor(modulePath: string, args?: string[] | undefined, options?: UtilityProcessOptions); postMessage(channel: string, message: any, transfer?: Electron.MessagePortMain[]): void; kill(signal?: number | string): boolean; <del> on(event: 'exit', listener: (code: number | undefined) => void): this; </del> <ins> on(event: 'exit', listener: (event: Electron.Event, code: number) => void): this; </ins> on(event: 'spawn', listener: () => void): this; } }

Found this stack while scanning through some failing smoke test runs From Deepak:
What are some verification steps for this issue?
I did check logs last week and could no longer find this.


Question: constructor(modulePath: string, args?: string[] | undefined, options?: UtilityProcessOptions); postMessage(channel: string, message: any, transfer?: Electron.MessagePortMain[]): void; kill(signal?: number | string): boolean; <del> on(event: 'exit', listener: (code: number | undefined) => void): this; </del> <ins> on(event: 'exit', listener: (event: Electron.Event, code: number) => void): this; </ins> on(event: 'spawn', listener: () => void): this; } }

I noticed this in smoke test runner logs leading me to think that the type of the exit code is not a but an now?


Question: constructor(modulePath: string, args?: string[] | undefined, options?: UtilityProcessOptions); postMessage(channel: string, message: any, transfer?: Electron.MessagePortMain[]): void; kill(signal?: number | string): boolean; <del> on(event: 'exit', listener: (code: number | undefined) => void): this; </del> <ins> on(event: 'exit', listener: (event: Electron.Event, code: number) => void): this; </ins> on(event: 'spawn', listener: () => void): this; } }

Type: <bBug</bIn the most recent insiders version, audio cues no longer play. I ensured that the audio cues I expect are enabled (e.g. error) and entered the following json as an example: I ensured that the error was reported when moving through errors with f8, yet the cue doesn't play when I come across the line with up/down arrow keys VS Code version: Code - Insiders 1.71.0-insider (, 2022-08-05T07:36:58.753Z) OS version: Windows_NT x64 10.0. Modes: Sandboxed: No <!-- generated by issue reporter --
cc
We didn't touch anything there the last months, maybe it is caused by an electron update. Will investigate for the next release.
I can reproduce this. Easy repros steps: 1 list audio cues command cues do not produce sound Works fine on latest stable. Does not work on Insiders. fyi since most likely caused by Electron update (thus adding label). Maybe our future planned ffmpeg change will fix this? thanks a lot for reporting this, and sorry about this breakage.
You're welcome, I'm running insiders for a reason Looking forward to a fix.
Let me also assign since we will now support would you like that all our audio cues are in format? If yes, would you like me to reach out to our sound designer for this? Thanks
can you track the conversion in a separate issue, this particular issue is a regression with the ffmpeg build shipped with internal builds. There was a recent build architecture change and it impacted this. I would like to close this issue as part of the next Electron version update :)
makes sense, thanks! There is actually already this one which we can use for the conversion
The same problem using code-insiders into a fedora workstation 36.
It is working again with orca.
lovely, thanks for confirming. Adding verified label.
For me it also works like a charm on Windows.
For some reason I can't explain, this issue seems to have returned on my fedora workstation. No sound is played when I move the cursor to lines that contain breakpoints, errors and etc. Version: 1.71.0-insider Commit:
Confirmed on Windows. Could tests for this be somehow?


Question: constructor(modulePath: string, args?: string[] | undefined, options?: UtilityProcessOptions); postMessage(channel: string, message: any, transfer?: Electron.MessagePortMain[]): void; kill(signal?: number | string): boolean; <del> on(event: 'exit', listener: (code: number | undefined) => void): this; </del> <ins> on(event: 'exit', listener: (event: Electron.Event, code: number) => void): this; </ins> on(event: 'spawn', listener: () => void): this; } }

Sorry for the regression, but this is a temporary expected breakage because we are updating our supported audio formats , audio cues will be updated to new format this iteration as part of /cc
Sorry about that We just pushed a fix, and the VS Code insiders from tomorrow will have the fix.
Thanks Given this feature turns out to be pretty important for us visually impaired users, would it be possible to create a system test for this? I assume it should be possible to throw a audio cue at FFMPEG and make it fail if the sound doesn't play?
that's a good idea. However I leave this up to since he is driving this from engineering and would have better ideas how we could test it exactly.
We would need a way to ask the OS if an application played some sound.
It works again, at least on my environment. Thanks.
awesome, thanks for letting us know.
I can confirm that it works here as well. Hopefully it stays that way


Question: constructor(modulePath: string, args?: string[] | undefined, options?: UtilityProcessOptions); postMessage(channel: string, message: any, transfer?: Electron.MessagePortMain[]): void; kill(signal?: number | string): boolean; <del> on(event: 'exit', listener: (code: number | undefined) => void): this; </del> <ins> on(event: 'exit', listener: (event: Electron.Event, code: number) => void): this; </ins> on(event: 'spawn', listener: () => void): this; } }

<!-- 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.66.0 (x64) OS Version: 10.0. Build (Window 10) Steps to Reproduce: VS Code (or use the shortcut ) the first miliseconds after opening a new instance of VS Code, a "Window 7"-like window frame layout appears, before the usual VS Code look shows up (see the attached GIF). The GIF below first shows the expected behavior, opening version 1.65.0, followed by the current behavior of version 1.66.0. ! The two executables were downloaded from: and
Refs
that's the reason I went back to 1.65, frames are so annoying.
Hi just a small update: I've downloaded the latest VS Code Insiders and the problem now only appears when launching VS Code for the first time, but no longer when opening new windows from a running instance of it.
This issue persists in the new latest version release, .
The issue persists in today's release, .
Since the related bug in the Electron repo has a label, and today's VSCode uses , I believe we will be experiencing this bug for months.
The upstream Electron issue is at The issue was introduced in Electron v14.0.0-beta.5 and the commit that introduced the issue is The PR fixes the issue where frameless resizable windows show Windows 7 frames during startup, but there's a larger issue that is still unresolved even with that PR.


Question: constructor(modulePath: string, args?: string[] | undefined, options?: UtilityProcessOptions); postMessage(channel: string, message: any, transfer?: Electron.MessagePortMain[]): void; kill(signal?: number | string): boolean; <del> on(event: 'exit', listener: (code: number | undefined) => void): this; </del> <ins> on(event: 'exit', listener: (event: Electron.Event, code: number) => void): this; </ins> on(event: 'spawn', listener: () => void): this; } }

I also searched through the thousands of to see whether they had anything to do with the issue, but I didn't find anything relevant even after reverting several suspicious commits. Running with Electron v14.0.0-beta.5 or newer on Windows 10 reproduces the issue. The PR fixes the issue for frameless resizable windows by calling at an earlier stage of program initialization. Assume the window is frameless and resizable. Then, the program sets to earlier in , and the following occurs: is not run, meaning is not removed from the style set in Line 62. This style parameter is passed in to a call at . is not run. Instead, the block above is run, which adds a style to the style passed into the call. , because of these styles being passed in, after the window is shown, we get a single message, and no messages after. NC in this case refers to non-client area, which is the frame. DWM stands for desktop windows manager. After adding a long of 30 seconds to the call above, I was able to use Spy++ to log messages to that window and see the following: I have also attached full logs to the end of this comment. For frameless windows that cannot resize, even if we call earlier, because the program would pass in , for the and calls above, the style would not be in the styles sent to the calls. As a result, what I see in Spy++ is being toggled three times, and several calls that result in messages being emitted. Using Spy++, I confirmed that the calls have the flag set. I have searched the Chromium and Electron codebases for and (as well as ) to see why the frame might be rendering more often when is not passed in. However, I haven't found anything within the codebase itself. Searching Windows documentation, I found the following: causes to be sent. Reference: However, I'm not sure whether this could explain the difference in behaviour between resizable and non-resizable windows. can pass in or to send to the window, which is why I searched for those two constants within the codebase. Reference: Also, Chromium handles by returning at , which I assume causes the message to occur. Also, Electron calls at .


Question: constructor(modulePath: string, args?: string[] | undefined, options?: UtilityProcessOptions); postMessage(channel: string, message: any, transfer?: Electron.MessagePortMain[]): void; kill(signal?: number | string): boolean; <del> on(event: 'exit', listener: (code: number | undefined) => void): this; </del> <ins> on(event: 'exit', listener: (event: Electron.Event, code: number) => void): this; </ins> on(event: 'spawn', listener: () => void): this; } }

I noticed that if I don't call there, the Windows 7 frame doesn't show up, but then the Electron window doesn't render with the proper style (see ). I also noticed that when the Windows 7 frame shows up, it has the style of whatever was passed into that specific call. For example, if I add to the call, then for a second I see a Windows 7 frame with applied. I also tried creating a minimal project in VS to reproduce the issue but wasn't successful. The frame that rendered seemed to have a Windows 10 style rather than a Windows 7 one. I also tried registering a listener in for the messages, and it did seem to get hit, though I couldn't do anything with it. There's also the mysterious , but I wasn't able to apply it to resolve the issue.
The PR that linked above (partially based on ) should resolve the issue for VS Code Insiders and hence close this issue, but there's still more I'd like to investigate, especially for frameless non-resizable windows. I some lines to log the hwnd and style passed into each relevant and call. One example of the styles that show up: There's also another window being created really early, but I don't think it influences the issue. Good scenario (meaning no frame showing) with set to and staying Bad scenario with set to then Bad scenario with set to and staying The call with style causes the Windows 7 frame to render, and its style corresponds to is actually the same style just with , once again showing how mysterious the constant is. While working on , I also noticed that changing the order of the calls seemed to fix the issue for frameless non-resizable windows. In particular, on the Electron side, in , if I first called to pretend that the window is resizable, and then called (where ) after the call around line 365, then the issue is resolved even for frameless non-resizable windows. However, this workaround delays the call to hundreds of lines later, and I wouldn't be surprised if it would cause a regression elsewhere. Just like in the log file of the good case of the previous comment, only shows up once, rather than three times. For completeness, here are the logs with the styles for this scenario, excluding the logs: In this case, the style never comes up!


Question: constructor(modulePath: string, args?: string[] | undefined, options?: UtilityProcessOptions); postMessage(channel: string, message: any, transfer?: Electron.MessagePortMain[]): void; kill(signal?: number | string): boolean; <del> on(event: 'exit', listener: (code: number | undefined) => void): this; </del> <ins> on(event: 'exit', listener: (event: Electron.Event, code: number) => void): this; </ins> on(event: 'spawn', listener: () => void): this; } }

I also tried delaying the call and calling instead of , but that doesn't work because it fails to pass to the call as well as the first call, both of which need for the frame not to render: can be used to change the non-client (NC) rendering policy and hence result in a call. However, I did not find any references to within the Electron and Chromium codebases that were actually called when running my minimal repro.
lets continue the investigation in
<!-- 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


Question: templateData.actionBar.context = <TreeViewItemHandleArg>{ $treeViewId: this.treeViewId, $treeItemHandle: node.handle }; <del> const menuActions = this.menus.getResourceActions(node); if (menuActions.menu) { templateData.elementDisposable.add(menuActions.menu); } </del> <ins> const menuActions = this.menus.getResourceActions(node, templateData.elementDisposable); </ins> templateData.actionBar.push(menuActions.actions, { icon: true, label: false }); if (this._actionRunner) {

<!-- 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: V1.81.1 OS Version: Linux kkuser-virtual-machine 5.15.0-83-generic ~20.04.1-Ubuntu SMP Mon Aug 21 14:00:49 UTC 2023 x8664 x8664 x8664 GNU/Linux Steps to Reproduce: are constant changes in attribute states in the treeview calls to () functions result in memory leakage
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.82.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
<!-- 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!


Question: transformOptimization: false, //(isMacintosh && isNative) || getTitleBarStyle(this.configurationService, this.environmentService) === 'native', initialSize: this._dimension, styleController: (_suffix: string) => { return this._list; }, <del> overrideStyles: this._listStyleOverride, </del> <ins> overrideStyles: { listBackground: notebookEditorBackground, listActiveSelectionBackground: notebookEditorBackground, listActiveSelectionForeground: foreground, listFocusAndSelectionBackground: notebookEditorBackground, listFocusAndSelectionForeground: foreground, listFocusBackground: notebookEditorBackground, listFocusForeground: foreground, listHoverForeground: foreground, listHoverBackground: notebookEditorBackground, listHoverOutline: focusBorder, listFocusOutline: focusBorder, listInactiveSelectionBackground: notebookEditorBackground, listInactiveSelectionForeground: foreground, listInactiveFocusBackground: notebookEditorBackground, listInactiveFocusOutline: notebookEditorBackground, }, </ins> accessibilityProvider: { getAriaLabel: (element: CellViewModel) => { if (!this.viewModel) {

I opened the Settings editor, hovered over a setting, and noticed a new grey line appear to the left of the settings. This issue occurs with the default light and dark themes. !
I found that when calling , if we don't pass in the style override anymore, it will be reset to default I put this fix for notebook but I wonder if it's unexpected
Thanks for figuring that out. We shouldn't update options that are not set, that a regression. I fixed that with and updated your code to back what it was. Is different, it's about the indent guides which were disabled previously by not providing any colors. With my change we complete your colors with the default colors, which IMO is the right thing to do. is a simple fix. But I think we should not use the colors for that but the already existing option. I'm working on a follow up PR, but that needs to be reviewed by who is out today.


Question: *--------------------------------------------------------------------------------------------*/ import { DataTransfers, IDragAndDropData } from 'vs/base/browser/dnd'; <del> import { $, addDisposableListener, animate, Dimension, getContentHeight, getContentWidth, getTopLeftOffset, getWindow, isAncestor, isHTMLElement, scheduleAtNextAnimationFrame } from 'vs/base/browser/dom'; </del> <ins> import { $, addDisposableListener, animate, Dimension, getContentHeight, getContentWidth, getTopLeftOffset, getWindow, isAncestor, isHTMLElement, isSVGElement, scheduleAtNextAnimationFrame } from 'vs/base/browser/dom'; </ins> import { DomEmitter } from 'vs/base/browser/event'; import { IMouseWheelEvent } from 'vs/base/browser/mouseEvent'; import { EventType as TouchEventType, Gesture, GestureEvent } from 'vs/base/browser/touch';

Testing <img width="290" alt="image" src=""I feel like this context menu should not show up in this case - and in fact, it doesn't if you right click on the commit message to the right... it just repros when you right click on the graph part (the dots, or the lines)


Question: } private async enterProfile(profile: IUserDataProfile, preserveData: boolean, reloadMessage?: string): Promise<void> { <del> if (this.environmentService.remoteAuthority) { </del> <ins> const isRemoteWindow = !!this.environmentService.remoteAuthority; if (!isRemoteWindow) { this.extensionService.stopExtensionHosts(); } // In a remote window update current profile before reloading so that data is preserved from current profile if asked to preserve await this.userDataProfileService.updateCurrentProfile(profile, preserveData); if (isRemoteWindow) { </ins> const result = await this.dialogService.confirm({ type: 'info', message: reloadMessage ?? localize('reload message', "Switching a settings profile requires reloading VS Code."),

Type: <bBug</bDev Container with default or the prefered profile a new profile from Current Profile Settings After reloading the window you get a message to install the remote containers extension and when opening the profile in a local workspace you can see that no extensions and no settings where copied from the old profile. VS Code version: Code - Insiders 1.70.0-insider (, 2022-07-08T05:20:13.606Z) OS version: WindowsNT x64 10.0. Modes: Restricted Connection to 'vscode-remote' could not be established No remote extension installed to resolve dev-container. <details<summarySystem Info</summary Connection to 'vscode-remote' could not be established No remote extension installed to resolve dev-container. </detailsExtensions: none <!-- generated by issue reporter --


Question: identityProvider: new FileIdentityProvider(), keyboardNavigationLabelProvider: new FileNavigationLabelProvider(), accessibilityProvider: this._instantiationService.createInstance(FileAccessibilityProvider), <ins> showNotFoundMessage: false, </ins> overrideStyles: { listBackground: breadcrumbsPickerBackground },

Type: <bBug</ba file for which a DocumentSymbolProvider will return some items, for example on the filename in the breadcrumb, then type Ctrl/Cmd+F. The list filter widget looks OK, though it hides the first filename in the list ( ought to help with this once merged). the same but one item to the right in the breadcrumb. The filter widget is transparent. ! VS Code version: Code - Insiders 1.71.0-insider (, 2022-08-22T05:16:19.478Z) OS version: Windows_NT x64 10.0. Modes: Sandboxed: Yes <!-- generated by issue reporter --
/assign
Easier steps: <kbdCtrl F</kbdon an outline breadcrumb
I still see this. It looks like the background of the find widget gets removed, but the contents still scroll up out of the breadcrumbs widget
Did you test this in dev? Because we still didn't get an Insiders build with the fix.


Question: identityProvider: new FileIdentityProvider(), keyboardNavigationLabelProvider: new FileNavigationLabelProvider(), accessibilityProvider: this._instantiationService.createInstance(FileAccessibilityProvider), <ins> showNotFoundMessage: false, </ins> overrideStyles: { listBackground: breadcrumbsPickerBackground },

Originally posted by in
This also happens if step 5 is omitted and Search mode is used. The problem seems to be that to put the 'No elements found.' warning message under the find-in-list's input widget a ContextView is created immediately below it. But when find is occurring in a breadcrumb list, that list is itself in a ContextView which gets hidden and cleared immediately before the one for the warning message is shown. The warning message appears in the top left of the VS Code window in a very narrow column. See below, where I open , click on the filename in the breadcrumb to get a list of sibling filenames, then type "z" which isn't present in any of the filenames. !


Question: this._register(this.tree.onDidChangeContentHeight(() => { if (this.tree.scrollHeight !== this.previousTreeScrollHeight) { <del> const lastElementWasVisible = this.tree.scrollTop + this.tree.renderHeight >= this.previousTreeScrollHeight; </del> <ins> // Due to rounding, the scrollTop + renderHeight will not exactly match the scrollHeight. // Consider the tree to be scrolled all the way down if it is within 2px of the bottom. const lastElementWasVisible = this.tree.scrollTop + this.tree.renderHeight >= this.previousTreeScrollHeight - 2; </ins> if (lastElementWasVisible) { setTimeout(() => { // Can't set scrollTop during this event listener, the list might overwrite the change

Splitting from Clone mock-debug Run the tests Resize the window so the debug console has lots of wrapping Run the tests again After a few tests run, the Debug Console will stop scrolling down automatically and just remain part-way through. <img width="838" alt="Screenshot 2021-02-25 at 12 08 28" src="https://user-"
thanks for steps I can reproduce this. here I am hitting the limitation of what the tree gives me. Currently I use the following heurisitc to figure out if the last element is visible in the tree However that does not give the correct result when elements are wrapped and take additional lines. So I could either somehow update that check, or I could use the . I would just care if there are elements after the last visible element, but I could not figure out any tree api to get next neighbour of the last visible element. Might I be missing something? Let me know what you think, thanks.
What 3 values does it return in that case?
In this step we are good: In the next step we are no longer good:
and me investigated into this and it seems to be related to how async code is handled on the list side. Thus assigning this to on-deck and once finds time he can look into a fix or recommend a workaround for me on the Debug Console side.
Any progress on this issue? Would be great to not have to manually scroll down during the debug session.
Not to my knowledge. I've been told a small trick though In the debug console, hit Shift+Tab to move focus from the input box to the output list. Now you can just hit End once to move to the end of the list.
thanks for the tip, but going through all that hassle every single time I type in a command in the debug console or try to inspect a variable by printing out its type is simply not worth it. are there any viable workarounds to this? I believe it makes the debug console pretty much impossible to use for the average python developer.
Workaround is As for progress, we plan to fix this however not sure when. did an initial investigation and it proved more complex than anticipated.
Thanks for your valuable feedback. This works for me. I should probably add that should be to the and not the Just out of curiosity, doesn't that basically solve the problem?


Question: this._register(this.tree.onDidChangeContentHeight(() => { if (this.tree.scrollHeight !== this.previousTreeScrollHeight) { <del> const lastElementWasVisible = this.tree.scrollTop + this.tree.renderHeight >= this.previousTreeScrollHeight; </del> <ins> // Due to rounding, the scrollTop + renderHeight will not exactly match the scrollHeight. // Consider the tree to be scrolled all the way down if it is within 2px of the bottom. const lastElementWasVisible = this.tree.scrollTop + this.tree.renderHeight >= this.previousTreeScrollHeight - 2; </ins> if (lastElementWasVisible) { setTimeout(() => { // Can't set scrollTop during this event listener, the list might overwrite the change

What else is there to fix?
Setting wordWrap to false will not display all output. The line before print(True) is only partially visible. !
Setting to false also hide the last line (image). It happens when an exception is thrown (e.g., ) Please fix this! !
any update?
That () was a super annoying bug, but today i found this thread and turned off (turned on by default) and it scrolls down automatically!
Please god if you exists, please re-create the universe except this terrible bug. The bug makes us sad every minutes in Flutter-based development...
I want to have auto-scroll with word wrap functionality. This is very annoying bug.
Maybe this got worse recently, but I am seeing it happen with no wrapping involved, just the simplest single-line output. I think I have a fix. Basically add an item, call updateChildren list renders the item off screen. getHeight returns an estimate that is off by 1px dynamic height is not probed because it is offscreen in tries to scroll to the bottom, but using a scrollHeight measurement that is off by 1px item is rendered, dynamic height is probed, size is fixed, but that means the list is no longer scrolled all the way down, so stops autoscrolling I have an easy workaround to watch for content height change events from the list and update the scroll at this point. I think only Debug Console needs this feature - if it's ever needed anywhere else, we should implement it inside the List.
The issue still occurs. I have to manually scroll down to see the newest logs.
Yep, me too. I've turned off wordWrap and smartScrollin my and I still have to scroll down in the interactive console whenever I run code :( - specifcally, when I run code from the interactive console 'Type python code here and press Enter to run' line, as opposed to when I use a keyboard shortcut to send a selection of code to the interactive console (that seems to scroll okay, unless it is a long output - then it doesn't scroll either way). Print(5) for me, run directly from the interactive console, doesn't auto-scroll enough to see the output, even with these settings here:
can you share a code snippet that reproduces the issue? I don't see an issue.


Question: this._register(this.tree.onDidChangeContentHeight(() => { if (this.tree.scrollHeight !== this.previousTreeScrollHeight) { <del> const lastElementWasVisible = this.tree.scrollTop + this.tree.renderHeight >= this.previousTreeScrollHeight; </del> <ins> // Due to rounding, the scrollTop + renderHeight will not exactly match the scrollHeight. // Consider the tree to be scrolled all the way down if it is within 2px of the bottom. const lastElementWasVisible = this.tree.scrollTop + this.tree.renderHeight >= this.previousTreeScrollHeight - 2; </ins> if (lastElementWasVisible) { setTimeout(() => { // Can't set scrollTop during this event listener, the list might overwrite the change

it sounds like you might be using the interactive window which is not what this issue is about. If so, that is
I'm debugging Flutter apps with option which sometimes outputs a lot of lines of logs at once. I suspect that breaks it. When the log density is normal, it works.
How can the fix be tested? Do we need to build from source or is it in the Insiders version?
It went out in the latest stable update. If you're still seeing the issue I can reopen it and investigate a little more
I set up a flutter app and tried debugging it in verbose mode, but it doesn't do anything unusual and I don't see an issue. Also tried some other cases with different types of log messages printed very quickly. are you able to share the app? Or if not, a screen recording of the console, or screenshot of the point where it stops scrolling might help
So, basically wrapped lines considered as single line, therefore it miscalculating how many lines to scroll by?
I'm not seeing an issue with wrapped lines anymore
I'm not sure this is particularly helpful information (besides maybe helping confirm there's still an issue), but I was just able to reproduce this with a Flutter project (on current stable), but have been unable to repro again while recording. It happened while Flutter was doing checks (it prints a lot of very verbose output with all the HTTP requests to the Pub API). I've tried clearing my Pub cache and modifying my pubspec (with so Flutter would re-check Pub packages when the debug session starts), but have been unable to trigger it again (nor could I repro with the original steps using mock-debug above).
Oh, perhaps noteworthy, when it did happen (sorry I didn't take screenshot, I thought it would be easy to repro!), the last few lines printed were a very long line (a large JSON payload) followed by 1 or 2 short (unwrapped) lines.
Issue is still happening. I can't find a good pattern to suspect and reproduce it. All I remember is I had disabled the content wrap setting to give it a shot on my wide screen. Reverting it later did not help. I was doing Flutter development on VSCode for 3 years, and from that day, I'm getting this very annoying bug.


Question: this._register(this.tree.onDidChangeContentHeight(() => { if (this.tree.scrollHeight !== this.previousTreeScrollHeight) { <del> const lastElementWasVisible = this.tree.scrollTop + this.tree.renderHeight >= this.previousTreeScrollHeight; </del> <ins> // Due to rounding, the scrollTop + renderHeight will not exactly match the scrollHeight. // Consider the tree to be scrolled all the way down if it is within 2px of the bottom. const lastElementWasVisible = this.tree.scrollTop + this.tree.renderHeight >= this.previousTreeScrollHeight - 2; </ins> if (lastElementWasVisible) { setTimeout(() => { // Can't set scrollTop during this event listener, the list might overwrite the change

Can you share the project, or the exact log text that causes it so I can try to reproduce it?
I have a fix which I think only affects the case when wordwrap is disabled. From this thread, I'm not sure whether anyone was still seeing an issue with wordwrap enabled. It got a lot easier to repro after my fix for fixed an issue with sizing.
Here's the code I was using to repro the issue: and
I can't repro now, but I saw this again a few days ago, but I do not have wordWrap set, it's on the default (). If I see it again, is there any useful info I can get from it (other than a shareable repro ofc, assuming I can't make one).


Question: .pipe(replace('@@LICENSE@@', product.licenseName)) .pipe(rename('usr/share/appdata/' + product.applicationName + '.appdata.xml')); <ins> const workspaceMime = gulp.src('resources/code-workspace.xml', { base: '.' }) .pipe(replace('@@NAME_LONG@@', product.nameLong)) .pipe(replace('@@NAME@@', product.applicationName)) .pipe(rename('usr/share/mime/packages/' + product.applicationName + '-workspace.xml')); </ins> const icon = gulp.src('resources/linux/code.png', { base: '.' }) .pipe(rename('usr/share/pixmaps/' + product.linuxIconName + '.png'));

A Visual Studio Code workspace file is currently recognised in Linux as a normal plain text file. This is because there isn't a MIME type for this file. Applications can provide additional MIME types as described here: Not having a MIME type has a couple of issues, for example the files are shown as plain text files in the GUI, which makes it hard to distinguish source code files from the workspace file. This slows down navigating to a workspace and opening it. Find the workspace in the following screenshot ! It's currently impossible to theme such a file because it's not seen as a different MIME type:
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.461 --<!-- potentialduplicatescomment --
This also means that you can't make double clicking the workspace from a file browser open it in vscode, unless you're OK with all text files opening in vscode, which is probably not what most folks want.
This bug has been fixed in to the latest release of ! you can help us out by confirming things are working as expected in the latest Insiders release. If things look good, please leave a comment with the text to let us know. If not, please ensure you're on version of Insiders (today's or later - you can use in the command pallete to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
Hi can you verify this issue? Check out the previous comment.
I tried to verify this but am not sure how to do this myself. I've not used desktop linux extensively; I tried reinstalling Insiders from the on Lubuntu to see if it associated files with VS Code, but that didn't happen.
Verified by installing insiders from on Ubuntu and was able to see mimetype and set a custom icon ! upon uninstalling it was removed.


Question: }, "brackets": [ ["<!--", "-->"], <del> ["<", ">"], </del> ["{", "}"], ["(", ")"] ],

<!-- 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.76.0 OS Version: Windows 10 The most recent VS Code update broke bracket colorization for PHP files, when you close a PHP tag then open it again before using a closing bracket. Steps to Reproduce: a PHP file a PHP open tag , open a bracket with , use an end tag , step 2, but with a closed bracket show as red, and the coloured line that joins the brackets doesn't show. Note: The red brackets are normally only used for errors, so it makes it look like there's errors in the file Screenshot: !
Same problem here on Unbutu! Could you fix it please?
Same error on ubuntu Ubuntu 22.04.2 LTS
Also happens if you just have the opening tag but no closing tag at the end: !
Hello, thank you to open this topic. I have the same issue while writing PHP code on VSC. It would be great if could be fixed. Have a nice day !!
Same issue here on Mac OS 13.2.1
Same here
For anyone who needs this fix before the next update: Add this to your settings JSON (fix via PR )
I have a similar issue using math equations in markdown, the image on the left is version 1.76 and the one on the right is 1.75.1, both of them with the same settings (by sharing them). The fix suggested by did not resolve my problem. Should I open a new issue since it is a different language and context? !


Question: }, "brackets": [ ["<!--", "-->"], <del> ["<", ">"], </del> ["{", "}"], ["(", ")"] ],

Possibly related on Stack Overflow:
Related: :
Same issue with me
You should scope it to language, otherwise the bracket setting applys to all languages
The update and modified settings as suggested by didn't solve the issue I mentioned in . Might be related to . Below is the today's insiders version w/o any extensions with the same issue despite even scoping the brackets as suggested by above. !
omh same here lol..


Question: let ranges: Range[] | undefined; for (const placeholder of placeholdersWithEqualIndex) { <ins> if (placeholder.isFinalTabstop) { // ignore those break; } </ins> if (!ranges) { ranges = [];

<!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.33.1 OS Version: Windows_NT x64 10.0. Steps to Reproduce: a new user snippet file for the project. The one I encounter the issue with is: the snippet and attempt to press TAB after writing the first variable cursor does not move to the next stop, instead a tab character is The desired behavior would be for the cursor to move to the next tab stop. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes
Seems to work just fine for me... Any special keybinding or setting? !
The action you took is not the problem I encounter and does indeed work the same way for me. Could you try to edit "SystemName", the first tab stop, then press TAB to go to "Required Components"? vsCode just inserts a tab character after whatever I wrote instead of going to the next tab stop.
Ok, thanks for clarifying. For some reason snippet mode stops when making that edit... Not sure why
I have encountered similar issue, however, I could add a single blank space in the snippet which "fixed" the tab navigation. Also, my example is far simpler. See
This is a regression from I will revert that change and re-open the corresponding issue (which is much more rare than these issues)
Thank you for fixing this, looking forward to the next release.


Question: icon: new ThemeIcon('cloud') }); break; <ins> case ref.startsWith('tag: refs/tags/'): references.push({ id: ref.substring('tag: '.length), name: ref.substring('tag: refs/tags/'.length), revision: commit.hash, icon: new ThemeIcon('tag') }); break; </ins> } } <del> return references; </del> <ins> return references.sort(compareSourceControlHistoryItemRef); </ins> } private async resolveHEADMergeBase(): Promise<Branch | undefined> {

Testing I wonder how well it scales to show multiple tag icons, why not find a new icon that resembles multiple tags: !
I like that. Adding as that would require a new Codicon...
!
Or just show one tag in the row, but show all of them on hover like you do now.
How about showing one badge pert type (ex: branch, remote branch, tag) and a number indicating how many they are. That way there is no need create new icons that would cause further confusion.
I am actually not entirely sure what value there is to distinguish 1 tag from N tags? I would just show 1 icon if there is any tag.
Seems reasonable. Let's start with that and see how things go.


Question: command: showWindowLogActionId, }, async (progress) => { progress.report({ message: localize('Importing profile', "{0} ({1})...", title, profileTemplate.name) }); <del> const profile = await this.getProfileToImport(profileTemplate, temporaryProfile); if (!profile) { return undefined; } </del> <ins> return this.importAndSwitchWithProgress(profileTemplate, temporaryProfile, extensions, extensionsDisabled, message => progress.report({ message: `${title} (${profileTemplate.name}): ${message}` })); }); } </ins> <del> if (profileTemplate.settings) { progress.report({ message: localize('progress settings', "{0} ({1}): Applying Settings...", title, profileTemplate.name) }); await this.instantiationService.createInstance(SettingsResource).apply(profileTemplate.settings, profile); } if (profileTemplate.keybindings) { progress.report({ message: localize('progress keybindings', "{0} ({1}): Applying Keyboard Shortcuts...", title, profileTemplate.name) }); await this.instantiationService.createInstance(KeybindingsResource).apply(profileTemplate.keybindings, profile); } if (profileTemplate.tasks) { progress.report({ message: localize('progress tasks', "{0} ({1}): Applying Tasks...", title, profileTemplate.name) }); await this.instantiationService.createInstance(TasksResource).apply(profileTemplate.tasks, profile); } if (profileTemplate.snippets) { progress.report({ message: localize('progress snippets', "{0} ({1}): Applying Snippets...", title, profileTemplate.name) }); await this.instantiationService.createInstance(SnippetsResource).apply(profileTemplate.snippets, profile); } if (profileTemplate.globalState) { progress.report({ message: localize('progress global state', "{0} ({1}): Applying State...", title, profileTemplate.name) }); await this.instantiationService.createInstance(GlobalStateResource).apply(profileTemplate.globalState, profile); } if (profileTemplate.extensions && extensions) { progress.report({ message: localize('progress extensions', "{0} ({1}): Applying Extensions...", title, profileTemplate.name) }); await this.instantiationService.createInstance(ExtensionsResource, extensionsDisabled).apply(profileTemplate.extensions, profile); } </del> <ins> private async importAndSwitchWithProgress(profileTemplate: IUserDataProfileTemplate, temporaryProfile: boolean, extensions: boolean, extensionsDisabled: boolean, progress: (message: string) => void): Promise<IUserDataProfile | undefined> { const profile = await this.getProfileToImport(profileTemplate, temporaryProfile); if (!profile) { return undefined; } </ins> <del> progress.report({ message: localize('switching profile', "{0} ({1}): Applying...", title, profileTemplate.name) }); await this.userDataProfileManagementService.switchProfile(profile); return profile; }); </del> <ins> if (profileTemplate.settings) { progress(localize('progress settings', "Applying Settings...")); await this.instantiationService.createInstance(SettingsResource).apply(profileTemplate.settings, profile); } if (profileTemplate.keybindings) { progress(localize('progress keybindings', "{0}ying Keyboard Shortcuts...")); await this.instantiationService.createInstance(KeybindingsResource).apply(profileTemplate.keybindings, profile); } if (profileTemplate.tasks) { progress(localize('progress tasks', "Applying Tasks...")); await this.instantiationService.createInstance(TasksResource).apply(profileTemplate.tasks, profile); } if (profileTemplate.snippets) { progress(localize('progress snippets', "Applying Snippets...")); await this.instantiationService.createInstance(SnippetsResource).apply(profileTemplate.snippets, profile); } if (profileTemplate.globalState) { progress(localize('progress global state', "Applying State...")); await this.instantiationService.createInstance(GlobalStateResource).apply(profileTemplate.globalState, profile); } if (profileTemplate.extensions && extensions) { progress(localize('progress extensions', "Applying Extensions...")); await this.instantiationService.createInstance(ExtensionsResource, extensionsDisabled).apply(profileTemplate.extensions, profile); } progress(localize('switching profile', " Applying...")); await this.userDataProfileManagementService.switchProfile(profile); return profile; </ins> } private async resolveProfileContent(resource: URI): Promise<string | null> {

Testing I started the Troubleshoot issue flow and it took a long time to create my initial profile. All I had was a status bar item which took me a while to discover (I actually thought something else went wrong). I would love to see and editor / web view better guiding me through that process by: listing the steps and adding check marks when done showing me the number of bisects still necessary giving me a final report.
<img width="258" alt="capture" src=""
We should also have a UI to always stop the process (see ) for a situation where this is useful
I now see that there is a notification for each step. This makes it better, so may be a simple thing to do is to show a notificatio with progress when the profile is created instead of a simple status bar item.
Actually, setting up the trouble shooting profile should be fast and instant.
Was not for me :-(
Following notification is shown now !


Question: this._primaryAction = new MenuEntryActionViewItem(primaryAction, undefined, _keybindingService, _notificationService, _contextKeyService, _themeService, _contextMenuProvider); this._dropdown = new DropdownMenuActionViewItem(dropdownAction, dropdownMenuActions, this._contextMenuProvider, { menuAsChild: true, <del> classNames: ['codicon', 'codicon-chevron-down'], </del> <ins> classNames: ['codicon', 'codicon-chevron-down', className], </ins> keybindingProvider: this._options?.getKeyBinding }); }

Could look like this, but have and/or tasks entries as well as a one. Hiding it by default is a good way to avoid cluttering the action bar - so people only see it if they want to <img width="285" alt="Screen Shot 2022-09-30 at 12 56 57 PM" src="https://user-"
cc
Talked w Kai and we're thinking to instead add a action to the terminal dropdown which aligns with the menu and will aid in discoverability !


Question: @ILogService private readonly logService: ILogService, @IWorkspacesManagementMainService private readonly workspacesManagementMainService: IWorkspacesManagementMainService, @ILifecycleMainService private readonly lifecycleMainService: ILifecycleMainService, <del> @IApplicationStorageMainService private readonly applicationStorageMainService: IApplicationStorageMainService </del> <ins> @IApplicationStorageMainService private readonly applicationStorageMainService: IApplicationStorageMainService, @IDialogMainService private readonly dialogMainService: IDialogMainService </ins> ) { super();

Type: <bBug</bany open windows. to File Open Recent and click Clear Recently Opened. VS Code version: Code 1.83.1 (, 2023-10-10T23:46:55.789Z) OS version: Darwin x64 20.6.0
<!-- 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


Question: } const commandService = accessor.get(ICommandService); <ins> const logService = accessor.get(ILogService); let i = 0; </ins> try { <del> for (const cmd of args.commands) { await this._runCommand(commandService, cmd); </del> <ins> for (; i < args.commands.length; ++i) { const cmd = args.commands[i]; logService.debug(`runCommands: executing ${i}-th command: ${JSON.stringify(cmd)}`); const r = await this._runCommand(commandService, cmd); logService.debug(`runCommands: executed ${i}-th command with return value: ${JSON.stringify(r)}`); </ins> } } catch (err) { <ins> logService.debug(`runCommands: executing ${i}-th command resulted in an error: ${err instanceof Error ? err.message : JSON.stringify(err)}`); </ins> notificationService.error(err); } }

Testing edit keybindings leave out args or have an empty array of commands trigger the command, nothing happens. This is expected but I wonder if an information/guiding message should be shown that the keybinding needs some commands to be useful?


Question: * @return A human-readable string which is presented as diagnostic message. * Return `undefined`, `null`, or the empty string when 'value' is valid. */ <del> validateInput?(value: string): string | undefined | null | Thenable<string | undefined | null>; </del> <ins> validateInput?(value: string): string | InputBoxValidationMessage | undefined | null | Thenable<string | InputBoxValidationMessage | undefined | null>; </ins> } /**

<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --We already have this feature in Core: where you can return where . Truth be told, this already works in API today though it's not officially a part of the API today (so it could change at any moment). For example, I can do: <img width="738" alt="image" src="https://user-"with it goes from: to it goes from: to
ref
Created a TPI so moving this to April for Finalization.


Question: .suggest-input-container .monaco-editor, .suggest-input-container .monaco-editor .lines-content { <del> background: none; </del> <ins> background: none !important; </ins> }

open test explorer notice that the input has the wrong background color, e.g it has two background colors <img width="455" alt="Screenshot 2023-11-15 at 14 29 05" src=""
What theme are you using? I can see the slight difference in your screenshot, but inspecting things I'm not seeing any backgrounds being applied to that action / menu bar
Like, any light theme?
Still confused on the latest Insiders for me in e.g. solarized light: <img width="725" alt="image" src=""Does it reproduce on a fresh user-data-dir for you? If so, are you able to do a quick devtools inspect and give a hint as to what styling is being applied that makes monaco input have a different background color?
I see. It doesn't show with an empty profile but I also don't have any setting that screams test explorer background color
Could you bisect your user settings or share them so I can play around?
This seems to be because I have the test explorer in the secondary sidebar. There is some settings that controls this but I have no clue which one it is <img width="2188" alt="Screenshot 2023-12-12 at 18 02 53" src=""
CSS is fun


Question: registerThemingParticipant((theme, collector) => { let rulerColor = theme.getColor(editorRuler); if (rulerColor) { <del> collector.addRule(`.monaco-editor .view-ruler { background-color: ${rulerColor}; }`); </del> <ins> collector.addRule(`.monaco-editor .view-ruler { --box-shadow-color: ${rulerColor}; }`); </ins> } });

The rulers and indent guides do not display well on high pixel density displays VSCode Version: Version 1.21.0 (1.21.0) OS Version: macOS Sierra 10.12.6 (16G1212) Steps to Reproduce: out editor Does this issue occur when all extensions are disabled?: Yes Example !


Question: @IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService, @IProductService private readonly productService: IProductService, @IEditorGroupsService private readonly editorGroupService: IEditorGroupsService, <ins> @IEditorService private readonly editorService: IEditorService, </ins> @IWorkbenchLayoutService private readonly layoutService: IWorkbenchLayoutService, @IPaneCompositePartService private readonly paneCompositeService: IPaneCompositePartService, @IWorkingCopyService private readonly workingCopyService: IWorkingCopyService,

Reproduced on OSS, Mac Steps to Reproduce: Code OSS a file cmd+w Closes the window Bisect points to this commit -
I can reproduce and this is likely context keys not being set properly because conditionally closes the window if no active editor. !
There are context keys that are now loose, for example
Follow up work


Question: }); return true; })); <ins> this._register(AccessibilityHelpAction.addImplementation(115, 'accessible-view', accessor => { accessor.get(IAccessibleViewService).showAccessibleViewHelp(); return true; }, accessibleViewIsShown)); </ins> } }

accessible view go to symbol picker are closed sometimes (when there's more than one item) cc


Question: */ sticky?: boolean; /** <ins> * Controls how long the hover is visible after you hovered out of it. * Require sticky setting to be true. */ hidingDelay?: number; /** </ins> * Should the hover be shown above the line if possible? * Defaults to false. */

Currently the hover disappear as soon as the mouse leaves the content hover. Sometimes the user leaves briefly the content hover. The ask is to wait until some times (ex. 500 ms) has passed before measuring whether the mouse is within the hover or not, then make the hover disappear or not.
This would be quite helpful in resizing the hover (because it's easy to go out of the hover when aiming for the angle to hover with a mouse). But I would think 500 ms is too much for that use case


Question: } .extension-list-item > .details > .footer > .monaco-action-bar > .actions-container .action-label:not(.icon) { <del> border-radius: 0; </del> <ins> border-radius: 2px; </ins> } .extension-list-item > .details > .footer > .monaco-action-bar > .actions-container .extension-action.label {

<img width="603" alt="image" src="https://user-"
!


Question: this._findInput = this._register(new ContextScopedFindInput(null, this._contextViewService, { label: NLS_FIND_INPUT_LABEL, placeholder: NLS_FIND_INPUT_", <ins> validation: (value: string): InputBoxMessage | null => { if (value.length === 0 || !this._findInput.getRegex()) { return null; } try { /* tslint:disable-next-line:no-unused-expression */ new RegExp(value); return null; } catch (e) { return { content: e.message }; } } </ins> }, contextKeyService, showOptionButtons)); // Find History with update delayer

We can add the same regex validator for the terminal find widget input box if the underling regex engine is JavaScript regex. Close this one if we are using another regex engine somehow in
So in the terminal widget show things like this and reject the search? <img width="238" alt="screen shot 2018-10-11 at 11 58 06 am" src="https://user-"
I would like to try and work on this feature. Could someone tell me where to start working on this feature?
the terminal find widget code is here: It extends the SimpleFindWidget: Not sure where the validator is but I'd look around the and files.


Question: import { IExtensionRecommendationNotificationService, RecommendationsNotificationResult, RecommendationSource } from 'vs/platform/extensionRecommendations/common/extensionRecommendations'; import { distinct } from 'vs/base/common/arrays'; import { DisposableStore } from 'vs/base/common/lifecycle'; <ins> import { CellUri } from 'vs/workbench/contrib/notebook/common/notebookCommon'; </ins> type FileExtensionSuggestionClassification = { userReaction: { classification: 'SystemMetaData', purpose: 'FeatureInsight' };

Testing the steps in the test plan item to create an interactive window I get a notification saying there are extensions on the marketplace that can handle . I feel like this is unnecessary noise
Which extension is it recommending?
The marketplace query is ext:interactive when I click on Search Marketplace !
I forgot that we had this but we automatically query show this when there are extensions in the marketplace that match the query . I'm curious about how this works, it seems overly sensitive since these extensions don't use that file extension, seems that it just matches based on keywords? I think the only way to avoid it here is to change the extension that the interactive window uses, which is probably fine.
Discussed with and even if we picked an extension that isn't yet in use, we can't prevent extensions from introducing collisions later. What about the following (essentially, parse the notebook URI from the cell URI, and check if it's an untitled://, file:// or vscode-remote:// URI based on the notebook URI instead)?
What will the interactive window be? It won't pass that check?
Is the motive here is to not show any recommendations for this resource?
Yeah we don't want to show the '.interactive' file recommendation because it's not actually a file on disk. The interactive notebook schema is 'interactive'.
Then we shall be filtering out in our recommendations logic as you recommended above.


Question: } else { type = TerminalBuiltinLinkType.LocalFile; } <ins> // Offset the buffer range if the link range was trimmed const trimRange = trimRangeMap.get(linkStat.link); if (trimRange) { bufferRange.end.x -= trimRange; if (bufferRange.end.x < 0) { bufferRange.end.y--; bufferRange.end.x += this.xterm.cols; } } </ins> links.push({ text: linkStat.link, uri: linkStat.uri,

<!-- 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.71.0-insider OS Version: macOS Big Sur 11.6 Steps to Reproduce: a link in terminal containing "[" or "]" characters (ex. ) to cmd+click the link, observe that it is split on those characters. For example, links to , , , , and . In reality this is one valid path (nextjs uses "[ ]" to identify parameters in URLs) <img width="526" alt="Screen Shot 2022-09-22 at 5 12 00 PM" src="https://user-"
This works for urls: ! Not local paths: !
reported that it does (kind of) work: ! We would need to review all link detectors for this.
This happens with local links because [] are currently excluded chars:


Question: if (profile && !profile.isTransient && this.newProfileElement) { this.removeNewProfile(); <del> this.onDidChangeProfiles({ added: [profile], removed: [], updated: [], all: this.userDataProfilesService.profiles }); </del> <ins> const existing = this._profiles.find(([p]) => p.name === profile.name); if (existing) { this._onDidChange.fire(existing[0]); } else { this.onDidChangeProfiles({ added: [profile], removed: [], updated: [], all: this.userDataProfilesService.profiles }); } </ins> } return profile;

<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --when you import a profile file, vscode will create a new profile but not overwrite current one or merge it to current one Actually I don't need so many profiles, the default profile is enough for me. sometimes I just want to import a keybinding settings from some one, and keep my other settings after I import it, WHAT HAPPEND!!!, all my other settings and extension are gone!!! This is unreasonable! what vscode should do is merging(or overwriting) new keybinding to my old one!! <!-- Describe the feature you'd like. --
Can I have a try on this? I'm new to contributing to this repo but want to try out stuff and get along with starting out at the same time..
Edit: Ignore this, I misread this with other issue
Just wondering is not this same as Can you please distinguish your ask from the other?
partially like But I request more flexibility: Suppose current profile is profile X (X can be default or user profile) when I import A profile, that will be: A.keybinding, A.UI, A.extensions ..... and I choose A.keybindings only to import what I expect: there are 2 options for user when importing: option 1 - merge to current profile, (so X profile's keybindings overwritten but other part of settings kept) option 2 - or create a new profile partially basing on what imported (this is what VSCode currently does )
<!-- -96bd-47a8-a0e8- --This feature request is now a candidate for our backlog. The community has 60 days to the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our . Happy Coding!
<!-- -c9e0-7adb-d31b- --:slightlysmilingface: This feature request received a sufficient number of community upvotes and we moved it to our backlog. To learn more about how we handle feature requests, please see our . Happy Coding!
?


Question: if (profile && !profile.isTransient && this.newProfileElement) { this.removeNewProfile(); <del> this.onDidChangeProfiles({ added: [profile], removed: [], updated: [], all: this.userDataProfilesService.profiles }); </del> <ins> const existing = this._profiles.find(([p]) => p.name === profile.name); if (existing) { this._onDidChange.fire(existing[0]); } else { this.onDidChangeProfiles({ added: [profile], removed: [], updated: [], all: this.userDataProfilesService.profiles }); } </ins> } return profile;

I would think this is not a good one to start at and recommend to look for issues labelled with or
I really want to try out.. just to experience and I think I would be able to do it. Even if it's not a good first issue I have contributed to other open source repos. Can I?
Sure, here is the starting point
Thanks a lot for this I was checking your PR with the user-profile feature implementation.. For now I'm just figuring out stuff that is already present. Just a single doubt that I had was about the merging of profiles.. would the editor be like a merge editor that opens whenever we get a merge conflict on git..? Or something else with checkboxes on which settings to get imported from each of the sides(current and imported one)? I'll try my best
For the sake of simplicity, during conflicts, I would simply override with the new one.
Also
Note to self: see for manual workaround.
You can now import and replace any existing profile (including Default profile) from new Profiles Editor UI
To verify: Create a profile A and configure with some settings and extensions Export the profile A to the disk Change some settings and extensions in the profile Import the profile A You should be able to import the profile with name A replacing the existing profile
When I export the profile, install some new extensions, then import the profile with the same name, I would expect the installed extensions to disappear from my extensions list, but that doesn't seem to be the case
It is working for me, ie., I only see the extension from the imported profile. After importing, extensions are getting replaced. Can you please share the exact steps to repro?
Using vscode 1.92.2, I can't figure out how to get to that UI. Where do I find it?
search settings for "profiles experimental"
Thank you!


Question: id: FOCUS_OUT_OUTPUT_COMMAND_ID, title: localize('focusOutputOut', 'Focus Out Active Cell Output'), keybinding: { <del> when: NOTEBOOK_EDITOR_FOCUSED, </del> <ins> when: ContextKeyExpr.and(NOTEBOOK_EDITOR_FOCUSED, NOTEBOOK_OUTPUT_FOCUSED), </ins> primary: KeyMod.CtrlCmd | KeyCode.UpArrow, mac: { primary: KeyMod.WinCtrl | KeyMod.CtrlCmd | KeyCode.UpArrow, }, weight: KeybindingWeight.WorkbenchContrib

Testing Ctrl+[RightLeft] Ctrl+Up — put the cell in edit mode and focused the editor, I expected it to move the focus to the preview cell without changing the selection (like Windows Explorer) Ctrl+Down — seems to scroll down slowly. Again I expected it to move the focus to the next cell without changing the selection
It seems the ctrl+arrows are already being used by actions.
Meaning expand/collapse headers? Why? If I understand correctly, this is basically what arrow up/down by themselves are already doing, right? ctrl+up/down are matching the editor by scrolling without moving focus. Except that they are double-booked with focus in/out of output, which maybe should only happen when focus is in the editor
I think the only thing to fix here is that ctrl+up invokes when focus is not in the output, and focuses the editor.


Question: if (!isUndefined(e.enabled)) { button.enabled = action.enabled; } <ins> if (!isUndefined(e.label)) { button.label = action.label; } </ins> })); } }


Question: if (!isUndefined(e.enabled)) { button.enabled = action.enabled; } <ins> if (!isUndefined(e.label)) { button.label = action.label; } </ins> })); } }


Question: import { IWorkbenchExtensionEnablementService, EnablementState } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { areSameExtensions } from 'vs/platform/extensionManagement/common/extensionManagementUtil'; import { createDecorator, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; <del> import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; </del> <ins> import { INotificationService } from 'vs/platform/notification/common/notification'; </ins> import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; import { IURLHandler, IURLService, IOpenURLOptions } from 'vs/platform/url/common/url'; import { IHostService } from 'vs/workbench/services/host/browser/host'; <del> import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; </del> <ins> import { IExtensionService, toExtensionDescription } from 'vs/workbench/services/extensions/common/extensions'; </ins> import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { Registry } from 'vs/platform/registry/common/platform';

Open following url Install dialog is shown asking user to install and open extension <img width="275" alt="image" src="https://user-"- After clicking on install, following prompt is shown <img width="454" alt="image" src="https://user-"Second prompt seems to be unnecessary. It is expected to open the URL after installing


Question: this.enabledDisposables.dispose(); this.enabledDisposables = new DisposableStore(); <ins> this.previousPattern = this.pattern; </ins> this.onDidChangeValue(''); this.tree.domFocus();

Testing When find box is not visible and I just type but there are multiple results, then maybe allow me via keybindings (F3?) to go to next/prev result?
You mean using the type navigation feature? I think this would be too implicit. I don't know of any other native widget doing something like this.
I think the editor has a way to navigate in find results even without showing find. i think in that mode it only puts the search toggles up in a little overlay.
The editor opens up the widget once again, when pressing <kbdF3</kbd. Yeah we can do that.
I think the tree does the same, I had tried and it showed the input box, but it was empty though.
Yeah. Renamed this to remember the input across usages, which is what the editor does.


Question: // Only allow history navigation when the input is empty. // (If this model change happened as a result of a history navigation, this is canceled out by a call in this.navigateHistory) const model = this._inputEditor.getModel(); <del> const inputHasText = !!model && model.getValueLength() > 0; </del> <ins> const inputHasText = !!model && model.getValue().trim().length > 0; </ins> this.inputEditorHasText.set(inputHasText); // If the user is typing on a history entry, then reset the onHistoryEntry flag so that history navigation can be disabled

Just asked hi: ! Expected: ! Version: 1.88.0-insider (user setup) Commit: Date: 2024-03-25T05:49:32.344Z Electron: 28.2.6 ElectronBuildId: Chromium: 120.0.6099.291 18.18.2 V8: 12.0.267.19-electron.0 OS: Windows_NT x64 10.0. GitHub Copilot Chat v0.14. (pre-release)
because of
To verify configure have a very wide view port ask AI to change some code make sure the input widget is full width of the zone widget


Question: // Only allow history navigation when the input is empty. // (If this model change happened as a result of a history navigation, this is canceled out by a call in this.navigateHistory) const model = this._inputEditor.getModel(); <del> const inputHasText = !!model && model.getValueLength() > 0; </del> <ins> const inputHasText = !!model && model.getValue().trim().length > 0; </ins> this.inputEditorHasText.set(inputHasText); // If the user is typing on a history entry, then reset the onHistoryEntry flag so that history navigation can be disabled

cmd+i now cmd+backspace invokes instead of deleting the line in the text editor The ChatWidget is writing its context keys to the editor's ContextKeyService, so we need a scoped CKS at some point, either inside the ChatWidget or outside in the inline widgets
pushing a fix to use a scoped CKS but this does look like debt. Isn't a better fix to reset context keys when hiding/dispose the chat widget?
I don't think those context keys should be applied on the editor at all, they are intended to just be active inside the widget's dom tree.


Question: constructor() { super({ <del> id: 'workbench.action.clearCommandHistory', title: { value: localize('clearCommandHistory', "Clear Command History"), original: 'Clear Command History' }, </del> <ins> id: 'workbench.action.clearPreviousSessionCommandHistory', title: { value: localize('clearPreviousSessionCommandHistory', "Clear Previous Session Command History"), original: 'Clear Previous Session Command History' }, </ins> f1: true }); }

Testing Linux some commands in your terminal 1 Terminal Clear Command History 1 Terminal run recent commands the commands are still there, nothing got cleared !
This is by design as clearing history only clears the previous session commands. We don't discard the current session as they're all in the active terminal marked by decorations. It does however clear the active terminal's current session history from the previous session history (which hides by default as they would duplicate the content).
I find this very counterintuitive... As no other clear command in VS Code behaves that way.
I cleared recently opened and the active windows still show up, this is essentially the same thing the terminal history is doing: !
On macOS, i run , and when i run again, i can see all the commands, including those from the previous session. <img width="802" alt="Screen Shot 2022-02-24 at 11 07 24 AM" src="https://user-"
I agree that it's a little confusing. Perhaps we should say instead?
I now get the clear command history and a clear previous session command history command. Neither command seems to be clearing the command history. I'm on Windows with pwsh. !
the change you made was to the quickaccess code, this is nothing to do with the terminal so we need to revert that
can you help with verification steps for this one. Since I do not see the "Clear Command History" in quick pick. Does this only appear on Linux?
the title of the command is
thanks. After running that commend I still see the recent commands. So the command history is not cleared. Is this expected?
I still see previous session history commands given to the terminal after running the command.
is the group called or is it or something similar? Only the first is expected to be cleared. This worked fine for me just now.


Question: _classifier = new CharacterClassifier<CharacterClass>(CharacterClass.None); // allow-any-unicode-next-line <del> const FORCE_TERMINATION_CHARACTERS = ', t<>'"、。｡､，．：；‘〈「『〔（［｛｢｣｝］）〕』」〉’｀～…'; </del> <ins> const FORCE_TERMINATION_CHARACTERS = ' t<>'"、。｡､，．：；‘〈「『〔（［｛｢｣｝］）〕』」〉’｀～…'; </ins> for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) { _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), CharacterClass.ForceTermination); } <del> const CANNOT_END_WITH_CHARACTERS = '.;:'; </del> <ins> const CANNOT_END_WITH_CHARACTERS = '.,;:'; </ins> for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) { _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), CharacterClass.CannotEndIn); }

<!-- 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.75.1 OS Version: Windows 11 Steps to Reproduce: a link in the terminal of the form the link would be automatically detected correctly and made clickable (although in the debug tab, by contrast, it was not detected properly). version 1.75.0, the link detection wrongly terminates at the so the link cannot be easily clicked to open it. I appreciate that you can never please all the people all the time with URL guessing, but I thought it was worth mentioning given that it used to work fine, and to be fair all the characters , and are standard normal URL code points and always have been.
Can repro after, not before: !
This is actually a regression in monaco's link detection which the terminal leverages for uris: 74: <img width="259" alt="image" src="https://user-"75: ! So this was unrelated to the recent terminal link improvements which focused on file detection
introduced this change to fix
Commas are used pretty often in certain links, not sure how advanced the detection is but it could be improved by only treating it as a separator if after a / or if the word before has a period?
GitHub also doesn't split at comma: , I'd probably revert the fix, but I'm fine with either. Up to you
This issue doesn't just affect the links in the terminal. It also applies to , and files (and maybe more).


Question: _classifier = new CharacterClassifier<CharacterClass>(CharacterClass.None); // allow-any-unicode-next-line <del> const FORCE_TERMINATION_CHARACTERS = ', t<>'"、。｡､，．：；‘〈「『〔（［｛｢｣｝］）〕』」〉’｀～…'; </del> <ins> const FORCE_TERMINATION_CHARACTERS = ' t<>'"、。｡､，．：；‘〈「『〔（［｛｢｣｝］）〕』」〉’｀～…'; </ins> for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) { _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), CharacterClass.ForceTermination); } <del> const CANNOT_END_WITH_CHARACTERS = '.;:'; </del> <ins> const CANNOT_END_WITH_CHARACTERS = '.,;:'; </ins> for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) { _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), CharacterClass.CannotEndIn); }

VS Code Version: 1.75.1 OS Version: Windows 10 Steps to reproduce: a file and paste the following code into it: an file and paste the following url into it: . both cases the link detection wrongly terminates at the so the link cannot be easily clicked to open it.
:+1: I'm OK to revert.


Question: // "foo",339 // "foo",339:12 // "foo",339.12 <del> `(?::| |['"],)${r()}([:.]${c()})?` + eolSuffix, </del> <ins> // "foo",339.12-14 // "foo",339.12-341.14 `(?::| |['"],)${r()}([:.]${c()}(?:-(?:${re()}.)?${ce()})?)?` + eolSuffix, </ins> // The quotes below are optional          [#171652] // "foo", line 339                        [#40468] // "foo", line 339, col 12

The : This doesn't currently work in VSCode. It does support a very wide range of formats and I don't recall ever seeing this format before (even from GNU tools) so I suspect nobody else uses it. Nonetheless it's easy to add support in VSCode. See
Doesn't seem to work, see <img width="825" alt="Screenshot 2023-08-29 at 14 41 05" src=""
The PR intentionally left that out: But it should be easy to add so will leave this open.


Question: type: AccessibleViewType; } <ins> export const accessibilityHelpIsShown = new RawContextKey<boolean>('accessibilityHelpIsShown', false, true); </ins> class AccessibleView extends Disposable { private _editorWidget: CodeEditorWidget; <ins> private _accessiblityHelpIsShown: IContextKey<boolean>; </ins> get editorWidget() { return this._editorWidget; } private _editorContainer: HTMLElement; <del> private _keyListener: IDisposable | undefined; </del> constructor( @IOpenerService private readonly _openerService: IOpenerService, @IInstantiationService private readonly _instantiationService: IInstantiationService, @IConfigurationService private readonly _configurationService: IConfigurationService, @IModelService private readonly _modelService: IModelService, <del> @IContextViewService private readonly _contextViewService: IContextViewService </del> <ins> @IContextViewService private readonly _contextViewService: IContextViewService, @IContextKeyService private readonly _contextKeyService: IContextKeyService </ins> ) { super(); <ins> this._accessiblityHelpIsShown = accessibilityHelpIsShown.bindTo(this._contextKeyService); </ins> this._editorContainer = document.createElement('div'); this._editorContainer.classList.add('accessible-view'); const codeEditorWidgetOptions: ICodeEditorWidgetOptions = {

It doesn't matter in this case, but note that you collect all the keyListener disposables in the store of the AccessibleView class (even if you dispose them in , but the disposable is still in the disposableStore). This can lead to memory leaks. I can really recommend to compose components according to their life times. I think here the lifetime of the rendered content is owned by the caller of (the caller is supposed to call on the result). So the disposable returned by should be owned by whatever you return in . I suggest to create a DisposableStore in render, push the key listener to it once the text model resolves and return the disposable store at the end of render (also add the to the store). Also, note that the getTextModel promise can resolve after the caller called dispose. Originally posted by in


Question: })); this._register(this.preview.onScroll((scrollInfo) => { <del> topmostLineMonitor.setPreviousEditorLine(scrollInfo); </del> <ins> topmostLineMonitor.setPreviousStaticEditorLine(scrollInfo); </ins> })); this._register(topmostLineMonitor.onDidChanged(event => {

Issue Type: <bBug</bI have been using for a long time. Currently I end up with a LOT of inadvertant selections when working in two side-by-side editor groups and switching back and forth between them using the mouse. The reason is that the editor scrolls 5 lines every time I click into it. VS Code version: Code - Insiders 1.58.0-insider (, 2021-06-11T05:22:19.992Z) OS version: Darwin arm64 20.5.0 Restricted Mode: No Remote OS version: Linux x64 5.4.0-1046-azure <!-- generated by issue reporter --
I cannot reproduce. Does this reproduce for you when disabling all extensions? (The editor exposes a API to extensions). I have recently also got which seems incredibly similar, but I am having a hard time reproducing any of the jumping that is described. Here I am trying two side-by-side editor groups: https://user-
This reproduces only when the language mode of the files are set to markdown. I think this has to do with how the markdown extension is using the vscode API. But I think it should not use that API at all if no markdown preview is rendered. But it would also be interesting to test what the experience is when the preview is rendered. Given this doesn't reproduce with txt files, I'm optimistically giving this to you. Steps to reproduce: define open two md files side-by-side (preferably without word wrapping to see the top line number change) click on the editor tab of each one on every click, the editor scrolls up by 5 lines https://user-
Could you please take a look at this since you were looking into markdown syncing last iteration?
It seems like it's a bug coming from the scroll syncing between the static and text editor changes that I made a while ago. I'll try to make a PR to fix this soon.


Question: return this._wordToLineNumbersMap; } <ins> private updateHoverConfiguration(): void { const stackFrame = this.debugService.getViewModel().focusedStackFrame; const model = this.editor.getModel(); if (model) { this.applyHoverConfiguration(model, stackFrame); } } </ins> private applyHoverConfiguration(model: ITextModel, stackFrame: IStackFrame | undefined): void { if (stackFrame && this.uriIdentityService.extUri.isEqual(model.uri, stackFrame.source.uri)) { if (this.altListener) {

<!-- 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. --I'm currently implementing hit conditions in vscode-php-debug. Xdebug has very limited conditions it supports and we need to signal the user if they typed something unsupported. If a breakpoint has such a condition we try to return that in the field in the setBreakpointResponse/body/breakpoints. There is the implementation line: I noticed that the message is only visible when hovering with the mouse over the unverified breakpoint and only when the DAP isn't in a running state. If the adapter is in a breakpoint, there is no indication why this breakpoint isn't valid. Steps to Reproduce: and build vscode-php-debug from branch . a PHP debug Optionally add under setting. a breakpoint with hit condition "blabla". breakpoint should be unverified, hovering over it should show the message. Messages exchanged until now: launchResponse initializedEvent setBreakpointsRequest (see full message below) setBreakpointsResponse setFunctionBreakpointsRequest setFunctionBreakpointsResponse setExceptionBreakpointsRequest setExceptionBreakpointsResponse configurationDoneRequest configurationDoneResponse threadsRequest threadsResponse () a PHP process that will cause the debug adapter to move into running state. Following messages will be exchanged: ThreadEvent () StoppedEvent () threadsRequest threadsResponse () stackTraceRequest stackTraceResponse threadsRequest threadsResponse () scopesRequest scopesResponse variablesRequest variablesResponse this point hovering over the unverified breakpoint will not show the message.