jiebi/CodeConvo huggingface dataset:
Change:
setupTitlePolling(); function getArgs() { <ins> if (process.env['PTYSHELLCMDLINE']) { return process.env['PTYSHELLCMDLINE']; } </ins> var args = []; var i = 0; while (process.env['PTYSHELLARG' + i]) {

Discussion:
<!-- Do you have a question? Please ask it on ---create a new terminal with the following shell args ! Executing this on a folder that contains a folder results in the following error message: Using the following args (observer the additional quote around the command) results in the same error ! Executing this in a command shell () works: ! As does on powershell (without the extra double quotes): !
Could it be that the command line somehow get changed / corrupted until it is passed to the process.
I'm guessing this is an issue with the  function in node-pty.
Could be, but please note that I pass one arg for the command line. So instead of ["dir", "test folder"] which would need proper escaping I pass [""dir "test folder"""] which is exactly one arg and already proper escaped.
I inspected the 's command line when spawned and it looks like this (removed /c to keep it alive) ! Looks like some double quotes got escaped :-)
Actually I didn't quote the command correctly. It should be quoted so the JS string in debugger looks like . Passing this to the terminal still results in  characters on the command line: ! Executing from a powershell command prompt results in ! which looks correct (no  to escape ")
I think I can reproduce this in node-pty by running the following: Output: A similar example however works fine on Linux using
Fixed upstream , still want to verify it within VS Code before pushing it.
this should be good to go now, you'll want to update node_modules/node-pty and then set as a that will be used as is. Example: Let me know if you have any issues.
why is the string option only supported under Windows. You need to escape under Mac and Linux as well. Under these OSes there are even three different kind of space escapings so the code can't simply take one (see ). IMO we need to let users control this.
I was under the impression this only really applies to cmd/Windows. From Do you have a particular use case that fails in on macOS or Linux?

may be I am not understanding it correctly but here is what I like to allow users do to for an example to run a command in a shell that takes args with spaces in it: : escpae using  for a single space : escape using weak quoting : escape using strong quoting How would I pass such a command line to a shell I start under Mac / Linux?
Aren't they all basically the same thing? Is there a reason for using anything other than ? That's all the terminal shell/shellArgs support and I haven't seen any complaints so far.
According to " and ' have a very different semantic. So is there a way for me to pass args and tell the shell to not do any quoting. So if I pass will it respect the quoting and leave the string untouched?
Is this what you mean? ! Force in dev build. Add this to !
Yes. So how would I pass this to a shellLaunchConfig in code in terms of args? Like this: ["-c", "ls -ls 'a b'"] and not one string args like under Windows ?
Yes, and map 1:1 to the and
thanks!
Change:
const terminalGroupService = accessor.get(ITerminalGroupService); const result: ITerminalInstance[] = []; <del> // Get inline tab instance if (terminalGroupService.lastAccessedMenu === 'inline-tab') { </del> <ins> const list = listService.lastFocusedList; // Get selected tab list instance(s) const selections = list?.getSelection(); // Get inline tab instance if there are not tab list selections #196578 if (terminalGroupService.lastAccessedMenu === 'inline-tab' && !selections?.length) { </ins> const instance = terminalGroupService.activeInstance; return instance ? [terminalGroupService.activeInstance] : undefined; } <del> // Get tab list instance if (!listService.lastFocusedList?.getSelection()) { </del> <ins> if (!list || !selections) { </ins> return undefined; } <del> const selections = listService.lastFocusedList.getSelection(); const focused = listService.lastFocusedList.getFocus(); </del> <ins> const focused = list.getFocus(); </ins> if (focused.length === 1 && !selections.includes(focused[0])) { // focused length is always a max of 1

Discussion:
From testing Steps to Reproduce: multiple terminals multiple terminals in the terminal view to change their color to red the terminals still select, select again time run instead Bug Only a single terminal at a time is reset
Change:
private static readonly ZOOM_LEVEL_SETTING_KEY = 'window.zoomLevel'; private static readonly ZOOM_PER_WINDOW_SETTING_KEY = 'window.zoomPerWindow'; <del> private static readonly MAX_ZOOM_LEVEL = 8; private static readonly MIN_ZOOM_LEVEL = -8; </del> constructor(desc: Readonly<IAction2Options>) { super(desc); }

Discussion:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version Version: 1.68.0 (user setup) Commit: Date: 2022-06-08T11:44:16.822Z Electron: 17.4.7 Chromium: 98.0.4758.141 16.13.0 V8: 9.8.177.13-electron.0 OS: Windows_NT x64 10.0. Steps to Reproduce: is not in F11 fullscreen mode. the Settings GUI, set window.zoomLevel to a negative value (e.g. -3) add an extra 0 (e.g. -30) setting is automatically applied, which leads to a state where the entire UI disappears. Clicking anywhere in the window minimizes the window. F11 fullscreen mode appears to fix this situation and the UI becomes visible again(albeit very tiny at the -30 zoom level). My initial take is this could be fixed with a sane lower bounds on window.zoomLevel. However, it appears that part of the issue is also that as window.zoomLevel becomes more negative(zooms out), the Menu Bar becomes larger. At high magnitude negative values, the Menu Bar increases in size to the point where it takes up the entire window and prevents user input. Ex.) window.zoomLevel: -20 . ! Ex.) window.zoomLevel: -30. At this level, the Menu Bar minimize "-" icon takes up the whole window.

At this level, the setting input box also de-focuses, preventing the user from pressing backspace to remove the extra 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!
Change:
isRevealed: true }; <del> // Consider editor selection and overwrite the state with it if (opts.seedSearchStringFromSelection && this._editor.getConfiguration().contribInfo.find.seedSearchStringFromSelection) { </del> <ins> if (opts.seedSearchStringFromSelection) { </ins> let selectionSearchString = getSelectionSearchString(this._editor); if (selectionSearchString) { if (this._state.isRegex) {

Discussion:
VSCode Version: Code 1.17.2 (, 2017-10-16T13:47:41.889Z) OS Version: Darwin x64 17.0.0 Extensions: ExtensionVersion ------ unity-tools0.1.9 unity-debug1.2.1 vscode-eslint1.3.2 python0.7.0 cpptools0.14.0 csharp1.12.1 mono-debug0.15.7 vscode-arduino0.2.9 Steps to Reproduce: the user setting "": false, text in a document command-e command-f Expected results: VS Code matches the standard Mac text find behavior, where command-e populates the search pasteboard with the current selection, but doesn't show the find panel. Pressing command-f thereafter shows the find panel, revealing what I put in there with command-e. Actual results: pressing command-e shows the find panel and doesn't populate the search pasteboard Plx to allow me to match the macOS standard behavior! Is my favest! <!-- Launch with to check. --Reproduces without extensions: Yes
Change:
) { const remoteAgentConnection = remoteAgentService.getConnection(); if (remoteAgentConnection) { <del> const extensionManagementService = new class extends ExtensionManagementChannelClient implements IProfileAwareExtensionManagementService { get onProfileAwareInstallExtension() { return super.onInstallExtension; } get onProfileAwareDidInstallExtensions() { return super.onDidInstallExtensions; } get onProfileAwareUninstallExtension() { return super.onUninstallExtension; } get onProfileAwareDidUninstallExtension() { return super.onDidUninstallExtension; } readonly onDidChangeProfile = Event.None; }(remoteAgentConnection.getChannel<IChannel>('extensions')); </del> <ins> const extensionManagementService = instantiationService.createInstance(RemoteExtensionManagementService, remoteAgentConnection.getChannel<IChannel>('extensions')); </ins> this.remoteExtensionManagementServer = { id: 'remote', extensionManagementService,

Discussion:
<!-- 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: stable from sources Regression in current september release Steps to Reproduce: server, open workbench in browser settings sync some extension remote server logs cc
Change:
// Hook Listener for mode changes this.activeEditorListeners.add(activeCodeEditor.onDidChangeModelLanguage((event: IModelLanguageChangedEvent) => { <del> this.onModeChange(activeCodeEditor); </del> <ins> this.onModeChange(activeCodeEditor, activeInput); </ins> })); // Hook Listener for content changes

Discussion:
Refs: ! vs ! We probably need some generic way (via ?) to have the classes detect the editor that is opened. Currently that one is probably probing for file editor and untitled editor inputs.
What all should be present? Position makes sense, possibly tab size. I'm not sure if encoding or line ending make sense, and mode probably doesn't make sense (one wouldn't change the mode).
Yeah, likely only a subset - those that make sense.
Added the status bar entries, but no clean way to configure which entries show for a given editor. Currently the "Search Result" mode will show and be clickable, but choosing results doesn't actually do anything. (aborts out at ) put up to fix that.
Change:
constructor(client: ITypescriptServiceClient) { this._disposable = vscode.Disposable.from( client.onDidBeginInstallTypings(e => this._onBegin(e.eventId)), <del> client.onDidEndInstallTypings(e => this._onEndOrTimeout(e.eventId)) ); </del> <ins> client.onDidEndInstallTypings(e => this._onEndOrTimeout(e.eventId)), client.onTypesInstallerInitializationFailed(_ => this.onTypesInstallerInitializationFailed())); </ins> } dispose(): void {

Discussion:
VSCode Version: Code 1.10.0 (, 2017-03-01T17:09:34.031Z) OS Version: Linux x64 4.5.5-300.fc24.x86_64 Extensions: none Steps to Reproduce: -Does not show type-specific proposals There is a single file in the cache: with just the empty object in it. /cc
The root cause seems to be that is not installed. I'm investigating this on other platforms as well
Two issues are tracking this on the TypeScript side: No error being generated: Add error message to typings install failure:
With TS 2.2.2 insiders we just picked up, an error notification is now generated in this case. It still does not have a good user facing message about not having npm installed. That is being tracked by
We don't handle the new event from the TS Server yet.
Change:
} public provideDebugConfigurations(folderUri: uri | undefined, type: string): TPromise<any[]> { <del> return TPromise.join(this.providers.filter(p => p.type === type && p.provideDebugConfigurations).map(p => p.provideDebugConfigurations(folderUri))) .then(results => results.reduce((first, second) => first.concat(second), [])); </del> <ins> return this.activateDebuggers('onDebugInitialConfigurations') .then(() => TPromise.join(this.providers.filter(p => p.type === type && p.provideDebugConfigurations).map(p => p.provideDebugConfigurations(folderUri))) .then(results => results.reduce((first, second) => first.concat(second), []))); </ins> } public provideDebugAdapter(session: IDebugSession, folderUri: uri | undefined, config: IConfig): TPromise<IAdapterDescriptor | undefined> {

Discussion:
Problem: install Java debugger open a folder with no switch to debug view and press gear button Observe: it looks like nothing is happening but in reality Java is initialising and starting Java language server. After a long time the debug env drop down appears. Analysis: Building the debug env drop down seems to activate all debug extensions. Solution: We should try to build the debug env drop down list only from declarative information found in the No debugger extensions should be activated for this. /cc
I acknowledge the bug, however due to how the code is structured on my side this would require a refactoring in the method which I am not so keen on doing because we have better fine grained events as a workaround. Thus pushing this to the backlog
Fixed in latest via
My mistake, acutally this is not fixed via that commit
How's going on for this bug? One more customer reported that they still see Java language server running on the bottom when developing a python file. It is strange. Thank you.
I have cleaned up the activation events and this is now fixed via However since this change is a bit delicate I would prefer to have the whole milestone to self host on it in insiders before we release it in stable. Due to that I will merge the PR in 4 days, so it is included in the next week insider, however it will be only in the october stable release (in a month).
Using our process explorer, I still see the java debugger extension being activated in this case. There is also a slight delay when clicking on the gear
After looking deeper into this, it is fine since the java debugger is activating onDebugInitialConfigurations since it is providing the initial configurations dynamically. Thus we have to activate it since we do not know which debugger the user will chose. Closing as designed. To verify: debug a node program, and verify that the java extension does not get activated
Change:
} if (e.element instanceof InstructionBreakpoint) { const disassemblyView = await this.editorService.openEditor(DisassemblyViewInput.instance); <del> (disassemblyView as DisassemblyView).goToAddress(e.element.instructionReference); </del> <ins> // Focus on double click (disassemblyView as DisassemblyView).goToAddress(e.element.instructionReference, e.browserEvent instanceof MouseEvent && e.browserEvent.detail === 2); </ins> } if (e.browserEvent instanceof MouseEvent && e.browserEvent.detail === 2 && e.element instanceof FunctionBreakpoint && e.element !== this.inputBoxData?.breakpoint) { // double click

Discussion:
Testing fyi Single click on the instruction breakpoint properly reveals that instruction breakpoint - great. Double click should pass focus to the disassembly view. Just like we do for regular breakpoints
Will fix this.
Change:
private _refreshListeners = this._register(new MutableDisposable()); private _state: OverlayState = OverlayState.Off; <del> private _maxLineCount: number = 5; </del> <ins> private _rawMaxLineCount: number = 5; </ins> constructor( private readonly _instance: ITerminalInstance,

Discussion:
Testing I ran the following command which is a powershell command that spans 8 lines. In this case sticky scroll can fill the entire terminal. One thing we do for sticky scroll in the tree is we allow sticky scroll to take a maximum of 40% of the view height. If the widget takes more than 40% of the height, we start dropping some of the sticky lines. In that case you could possibly have a at the end of the last line to indicate to the user that there is more to the command than can be shown. powershell command: (is new line) used setting !
I was a little torn on this, I was thinking if a user says they want 10 lines then maybe we should respect that (up a maximum of rows - 1 which isn't the case now). I see there is some logic here in the editor: ! Though it only updates on scroll, not resize: ! Do you also use a max of 40% there?
Your case might be a bit different to the tree. Trees appear in many different locations. One tree might fill the entire height of the editor in one view and another tree view might be much smaller. This would lead the user to have a large max sticky item value to be able to see many nodes in the large tree but he would probably not want it to fill the entire view in the smaller tree view cases. This is maybe a bit different to the terminal where a users usually only has one terminal. I think you should at least guarantee that one line of the terminal is visible.
Hey we do not have such a logic in the editor sticky scroll although it is a very interesting idea and it may be worthwhile to look into it.
Change:
import * as platform from 'vs/base/common/platform'; import { AbstractGotoLineQuickAccessProvider } from 'vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess'; import * as nls from 'vs/nls'; <del> import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; </del> import { ConfigurationScope, Extensions as ConfigurationExtensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';

Discussion:
I came across this: Can we by now remove it? Seems quite old:
Yes, this can be removed!
Change:
if (!hoverWidget || hoverWidget.isDisposed) { hoverWidget = new UpdatableHoverWidget(hoverDelegate, target || htmlElement, delay > 0); await hoverWidget.update(typeof content === 'function' ? content() : content, focus, options); <ins> htmlElement.setAttribute('custom-hover-active', 'true'); </ins> } }, delay); };

Discussion:
macOS, VS Code Insiders into explorer focus via keyboard hover does not show. There is no command to trigger the custom hover to show Like the activity bar, we have to make sure that the custom hover can be accessed in the tree/list only with the keyboard.
Would you suggest adding a keybinding to toggle the visibility of the custom hover of the html element which has focus?
Yeah, ideally it is . The same shortcut that we use in the editor for showing the hover. So it is consistent and easy for user to understand that there is one shortcut which does the right thing everywhere.
Isn't this a duplicate of ? Btw we seem to be having this support for extension provided trees at least:
I think it's good to have this one separate to .
Solving this for all trees/lists is pretty hard as the tree/list does not know anything about the underlying elements being rendered. For extension trees it is much easier as they all consist of a label which the creates and controls.
One option could be to utilize the to get the tooltip. Currently it already provides
After further discussions we came to the conclusion that we would use the DOM tree to figure out if there is any custom hovers available and trigger the hover by dispatching a mouse event on the HTMLElement. This might seem rather hacky but it ensures the consumers of the tree only have to support hover once and lets the tree handle keyboard triggers. Handling focus is still tricky and a open problem. Until this focus problem is properly fixed the treeview will keep it's own implementation which directly uses the hover service and moves the focus into the hover. The treeview implementation of this has it's own flaws but will b kept for the meantime to not cause regressions.
Change:
}); } <ins> getObjectFiles(ref: string): Promise<LsTreeElement[]> { return this.run(Operation.GetObjectFiles, () => this.repository.lstree(ref)); } </ins> getObjectDetails(ref: string, filePath: string): Promise<{ mode: string; object: string; size: number }> { return this.run(Operation.GetObjectDetails, () => this.repository.getObjectDetails(ref, filePath)); }

Discussion:
Verification steps: Open a folder/workspace that contains a git repository Modify an existing file, and save it Add a new file, add some contents to it, and save it Invoke the "Git: Stash (Include Untracked)" command, and create a new stash Invoke the "Git: View Stash", and pick the stash that you have created Confirm that all files from the stash have the correct content
Change:
this._revealFirst = true; <ins> this._modifiedResourceDisposableStore.clear(); </ins> this._modifiedResourceDisposableStore.add(Event.any(this._model.original.notebook.onDidChangeContent, this._model.modified.notebook.onDidChangeContent)(e => { if (this._model !== null) { this.updateLayout();

Discussion:
Issue Type: <bBug</bRepro a notebook in the diff view (tested with the github issues notebook) down to another file bug In dev tools, see: VS Code version: Code - OSS Dev 1.55.0 (Commit unknown, Date unknown) OS version: Darwin x64 20.3.0 <details<summarySystem Info</summary </details<details<summaryExtensions (23)</summaryExtensionVersion ------ docs-view0.0.9 vscode-eslint2.1.14 EditorConfig0.16.4 vscode-pull-request-github0.23.1 svg1.4.5 template-string-converter0.4.7 git-graph1.29.0 vscode-language-pack-de1.54.1 vscode-dotnet-runtime1.0.0 vscode-edge-devtools1.1.3 python2021.2. jupyter2021.3. remote-containers0.163.0 remote-ssh0.64.0 remote-ssh-edit0.64.0 azure-account0.9.6 cpptools1.2.2 hexeditor1.4.0 vscode-github-issue-notebooks0.0.68 vscode-markdown-notebook0.0.14 debugger-for-chrome4.12.12 debugger-for-edge1.0.15 shader-toy0.10.15 </details<!-- generated by issue reporter --
I believe that webviews in diff editors are being leaked at the moment. For normal notebooks, I see the webview disposed of in the method: However I don't see the same in notebookTextDiffEditor
Hm, now I'm just more confused. It seems the webviews are not disposed of when the diff editor is closed (and is not fired on the either). However they are disposed of when another notebook diff editor is opened The root cause of this issue is that the webview is no longer in the dom but it also isn't disposed. We then try posting a message to it which causes an exception. Here's the call stack that triggers this error: !
I started to see leaks of recently, which is likely a regression, and probably in the logic.
Change:
__vsc_precmd() { __vsc_command_complete "$__vsc_status" <ins> __vsc_current_command="" </ins> __vsc_update_prompt }

Discussion:
This is a follow up from which worked around the majority case of an issue. See the workaround: The proper fix will involve sending both the exit code and the history ID over to VS Code which will then do what's happening now but also have the correct exit code to set, instead of assuming it's the last command's exit code. We should write a little script as part of this that alternates exit codes by setting/unsetting an environment variable so it's easier to test and verify.
The issue being worked around is actually caused by or being included in .
Good test case from
To verify: some commands , they should all show up in current session ctrl+c in between some commands, including typing out a command and hitting ctrl+c to abandon it , the lines with ctrl+c shouldn't show up several times, failed and success should match whether the exception was thrown.