jiebi/CodeConvo huggingface dataset:
Change:
} } <ins> async copyLastCommandOutput(): Promise<void> { const commands = this.capabilities.get(TerminalCapability.CommandDetection)?.commands; if (!commands || commands.length === 0) { return; } const command = commands[commands.length - 1]; if (!command?.hasOutput) { return; } const output = command.getOutput(); if (output) { await this._clipboardService.writeText(output); } } </ins> get selection(): string | undefined { return this.xterm && this.hasSelection() ? this.xterm.raw.getSelection() : undefined; }

Discussion:
<!-- 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. --The awesome shell integration makes it really easy to rerun commands and copy the output from those commands. However, it seems one can only copy the output if the line the command was executed from is still within the scroll limit of the terminal. For some very long runs this is inconvenient. It would be really nice to be able to: output of last command from a terminal output of any command in the history of that terminal, if it is available to be copied Both without having to scroll to the point the command was executed.
Once there is too much data we no longer have access to it. Sounds like you probably want to increase the size of your scrollback. This is what I use: All the memory for the buffer gets reserved ahead of time for performance reasons so this will increase RAM usage by a fixed amount per terminal you have open. I like the idea of having a command for copying the output of the last command that you could hook up to a keybinding
You can also get the output from a command via and then click the output/document icon <img width="644" alt="Screen Shot 2022-06-14 at 12 31 30 PM" src="https://user-"These are only stored for the session, but might help you. I don't believe we get rid of commands that are outside of the scrollback, do we?
I don't think so but we do lose access to their output
I wonder if the command name should change makes you think the command would be copied but instead this is to copy the output
Change:
import { Disposable } from 'vscode-notebook-renderer/events'; import { URI } from 'vscode-uri'; import { ConfigurationManager, ValidateEnabled } from '../configuration'; <del> import { VsCodeClientWorkspace } from '../workspace'; </del> const defaultDiagnosticOptions: md.DiagnosticOptions = { validateFileLinks: md.DiagnosticLevel.ignore,

Discussion:
<!-- 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. --I was testing the server on neovim. I noticed the requires a lot from the client. Would it be possible to bundle default implementations of and all other custom requests to make the server self-contained?
I'd take a PR that does this (likely using service injection) but the current design is deliberate lets the client bring their own parser versionThe custom file messages means the server is not restricted to working with local files. Ideally the LSP would also include this functionality but right now it does not
I can make a PR. Wouldn't it be simpler to add a setting for a custom tokenizer? Then call with or make a request?
makes this easier to use the server as a library. For a client that doesn't want to implement the custom messages we use, you'd instead want to use the new version of which lets you pass in your own parser and workspace implementations
Change:
return []; } <ins> private getSettingsOverrideStyles(): string { const previewSettings = vscode.workspace.getConfiguration('markdown')['preview']; if (!previewSettings) { return ''; } const {fontFamily, fontSize, lineHeight} = previewSettings; return [ '<style>', 'body {', fontFamily ? `font-family: ${fontFamily};` : '', +fontSize > 0 ? `font-size: ${fontSize}px;` : '', +lineHeight > 0 ? `line-height: ${lineHeight};` : '', '}', '</style>'].join('n'); } </ins> public provideTextDocumentContent(uri: vscode.Uri): Thenable<string> { return vscode.workspace.openTextDocument(vscode.Uri.parse(uri.query)).then(document => { const scrollBeyondLastLine = vscode.workspace.getConfiguration('editor')['scrollBeyondLastLine'];

Discussion:
VSCode Version: 0.10.11 OS Version: Windows 7 64bit ! !
I think this should be a separate setting because a font that works for code might not work for reading text.
Correct me if I'm wrong, but isn't this already covered by the markdown styles setting? Result: ! Do we really need a setting to inject a default font?
good point, however enabling this setting for markdown () disables any other style being used for markdown preview. fyi this is a workaround for the problem, you could actually create a CSS file that contains the font style.
Well if we support overriding the default styles piecemeal like suggested wouldn't we end up with settings for many things? Here's a list I can think of off the top of my head: font-family font-size line-spacing background-color ... etc This non-exhaustive list would just start cluttering the configuration, perhaps the default stylesheet should be exposed so minimal tweaking can occur? Perhaps this could be solved with a command / extension to dump the default stylesheet into and add it to the styles? Then anyone can make their minimal tweaks without losing all the default styling?
And I think if we could support this for the command? That means we can add setting for the font family of previewed html?
Change:
await this.model.branch(name); } <ins> @command('git.merge') async merge(): Promise<void> { const config = workspace.getConfiguration('git'); const checkoutType = config.get<string>('checkoutType') || 'all'; const includeRemotes = checkoutType === 'all' || checkoutType === 'remote'; const heads = this.model.refs.filter(ref => ref.type === RefType.Head) .map(ref => new MergeItem(ref)); const remoteHeads = (includeRemotes ? this.model.refs.filter(ref => ref.type === RefType.RemoteHead) : []) .map(ref => new MergeItem(ref)); const picks = [...heads, ...remoteHeads]; const placeHolder = localize('select a branch to merge from', 'Select a branch to merge from'); const choice = await window.showQuickPick<MergeItem>(picks, { placeHolder }); if (!choice) { return; } await this.model.merge(choice.label); } </ins> @command('git.pull') async pull(): Promise<void> { const remotes = this.model.remotes;

Discussion:
It does not currently appear possible to merge local git branches in VS Code. Quite a common workflow is to have a "development" branch to develop new features on (or alternatively have feature specific branches). When the development is finished, the development branch is then merged into the "master" branch before release. This can be done via the integrated terminal, but as VS Code's git implementation is so wizzy, it would be great to be able to replicate this workflow using the GUI.
I can't believe there aren't more for this... what are the current alternatives? An extension, or have you guys set up a task for this?
+1, I think that feature might be considered priority for the git extension, it's a really nice implementation and with merging, would be perfect. No news?
It'd be lovely to be able to trigger a merge from the command palette, e.g. cmd + shift + p Select a branch to merge from via search-dropdown Any opportunity to avoid having to dip back into the command line is lovely. Thanks in advance!
Weird it is still not implemented and even weirder since we can create and change branch. It spoils the git integration in Code as if the feature was unfinished. We can still rely on built-in terminal or extension but it is not a consistent Code workflow Same for git stash
I also would like to see a Git Merge implemented eventually without going in the console. you might be interested to know that there's an open PR to which will hopefully land soon. There's actually also a PR for but changes were asked over a month ago and it wasn't done yet, so it might not land.
Fixed in
Change:
})); disposables.add(Event.once(this.lifecycleService.onDidShutdown)(() => disposables.dispose())); <del> // Layout disposables.add(auxiliaryWindow.onDidLayout(dimension => { </del> <ins> // Layout: specifically `onWillLayout` to have a chance // to build the aux editor part before other components // have a chance to react. disposables.add(auxiliaryWindow.onWillLayout(dimension => { </ins> const titlebarPartHeight = titlebarPart?.height ?? 0; titlebarPart?.layout(dimension.width, titlebarPartHeight, 0, 0);

Discussion:
Testing a workspace a tab into a new floating window in a couple times using keyboard shortcuts the zoom status bar item to zoom out. When the zoom out happens, the status bar item will move further right, as expected because everything is getting small. However, the hover itself moved further left. I would expect it to either stay under my cursor (ideal) or move with the status bar item. !
It also moves around unexpectedly when I zoom in.
My cursor isn't showing properly in this gif, but I think you can get the idea. !
<!-- 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:
this.textModelService.createModelReference(CellUri.generateCellPropertyUri(this.cell.originalDocument.uri, this.cell.original.handle, Schemas.vscodeNotebookCellMetadata)), this.textModelService.createModelReference(CellUri.generateCellPropertyUri(this.cell.modifiedDocument.uri, this.cell.modified.handle, Schemas.vscodeNotebookCellMetadata)) ]); <ins> if (this._isDisposed) { originalMetadataModel.dispose(); modifiedMetadataModel.dispose(); return; } </ins> this._metadataEditorDisposeStore.add(originalMetadataModel); this._metadataEditorDisposeStore.add(modifiedMetadataModel); const vm = this._metadataEditor.createViewModel({ original: originalMetadataModel.object.textEditorModel, modified: modifiedMetadataModel.object.textEditorModel }); <ins> this._metadataEditor.setModel(vm); </ins> // Reduces flicker (compute this before setting the model) // Else when the model is set, the height of the editor will be x, after diff is computed, then height will be y. // & that results in flicker. await vm.waitForDiff(); <del> this._metadataEditor.setModel(vm); </del> <ins> if (this._isDisposed) { return; } </ins> this.cell.metadataHeight = this._metadataEditor.getContentHeight();

Discussion:
If the diff element is disposed while the diff element is being resolved/built, then we might end up leaking the text models. Here its possible that the element was disposed just after the first line, i.e. once the promise resolves the element has been disposed. Thus leaking the text models. We have similar code in other parts and handle this correctly.
Change:
font-style: italic; } <del> .monaco-workbench .monaco-list-row .expression .lazy-button { display: none; border-radius: 5px; padding: 3px; } .monaco-workbench .monaco-list-row .expression.lazy .lazy-button { display: inline; } </del> .monaco-workbench .debug-inline-value { background-color: var(--vscode-editor-inlineValuesBackground); color: var(--vscode-editor-inlineValuesForeground);

Discussion:
The new lazy variable evaluation button line-height or dimensions appear to be too large. The button creates frequent gaps in-between node items and creates unsightly misalignment. This is not a settings font issue because the issue appeared with the change to the lazy evaluation button in version 1.67.1. This new button does not improve JavaScript debugging. The ellipsis button did not do this. Version: 1.67.1 (user setup) Commit: Date: 2022-05-06T12:37:03.389Z Electron: 17.4.1 Chromium: 98.0.4758.141 16.13.0 V8: 9.8.177.13-electron.0 OS: Windows_NT x64 10.0. Does this issue occur when all extensions are disabled?: Yes Steps to Reproduce: JavaScript object to console window the gaps between expandable nodes any collapsed variable to evaluate. The item will jump and become misaligned. !
Hey is there a reason that the variables view tree is 22px tall while the hover variables rows are 18px tall? I just noticed this.
I think the idea is to make the debugHover tree smaller, while the other trees in views should be larger. The problem here seems to be that the debugHover reuses the and by that the height of the hover items is 22. So the height should be configurable, and debugHover should be able to say to the variableDelagate that the height is 18 in this case.
The variables tree in the debug hover is correctly sized. It's just a CSS issue on that one button. I guess it's intentional, and that's fine, so I'll just fix the css.
okey. Thanks for fixing
This broke the alignment of the lazy button in the debug console because the text wraps there
Change:
} else { template.deprecationWarningElement.innerText = deprecationText; } <ins> template.deprecationWarningElement.prepend($('.codicon.codicon-error')); </ins> template.containerElement.classList.toggle('is-deprecated', !!deprecationText); this.renderValue(element, <ISettingItemTemplate>template, onChange);

Discussion:
<img width="769" alt="CleanShot 2021-10-13 at 14 40 36 src="https://user-"When we show a deprecated message we should use an icon since we shouldn't use color alone to assign meaning for accessibility.
Any suggestions for an icon?
<img src="https://user-"Verification steps: a deprecated setting in the like the settings UI and search for the setting that the deprecated message has an icon and passes color contrast ratio of 3:1 for the icon and 4.5:1 for the text
Change:
"libc.so.6(GLIBC_2.9)(64bit)", "libxcb.so.1()(64bit)", "libxkbfile.so.1()(64bit)", <del> "libsecret-1.so.0()(64bit)" </del> <ins> "libsecret-1.so.0()(64bit)", "libgbm.so.1()(64bit)" </ins> ], "aarch64": [ "libpthread.so.0()(aarch64)",

Discussion:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- 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.48.2- -1.49.0- OS Version: Ubuntu 20.04.1 LTS Steps to Reproduce: -dev not installed and install code1.48.2- --VSCode works apt update; apt-upgrade VSCode to 1.49.0- --VSCode fails with: /usr/share/code/bin/../code: error while loading shared libraries: cannot open shared object file: No such file or directory install libgbm-dev --VSCode works Expected: upgrade checks for dependency and installs missing library
new Electron 9 dep needs to be declared here?
I didn't know about this dependency configuration in the codebase, yes adding should be sufficient. It is a new dependency for chromium 83 to use memory buffers in gpu code path.
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!
Tested this by upgrading from 1.48.2 to 1.50.1
Change:
this._focusTracker = this._register(trackFocus(this._container)); this._register(this._focusTracker.onDidFocus(() => this._focusedContextKey.set(true))); <del> this._register(this._focusTracker.onDidBlur(() => { this._focusedContextKey.set(false); if (!this.inlineChatWidget.responseContent) { this.hide(); } })); </del> <ins> this._register(this._focusTracker.onDidBlur(() => this._focusedContextKey.set(false))); </ins> this.hide(); }

Discussion:
Caused by Repro: terminal /cmd+i terminal buffer, the inline chat should remain ! The reason I think this is currently bad behavior is because the terminal inline chat is more persistent than the inline chat, being more akin to the post-response editor inline chat. I ran into this naturally when opening inline chat and realizing I needed to copy something. I'm not a fan of the behavior of hiding when focusing anywhere in , but the main problem case is clicking into the terminal.
I assume in the case you mentioned, you had already typed input? The editor will only hide the widget if there's been no input and there's no response. I think we should follow suit here. So the bug that I will fix is it closes when there's been input.
It should also not hide when the accessibility help dialog is being shown
Now the one in the editor does NOT hide even when it's empty, so fine with me now to follow suit
Change:
await this._openResource(resource); } <del> private async _openResource(resource: Resource): Promise<void> { </del> <ins> private async _openResource(resource: Resource, preview?: boolean): Promise<void> { </ins> const left = this.getLeftResource(resource); const right = this.getRightResource(resource); const title = this.getTitle(resource);

Discussion:
VSCode Version: Code - Insiders 1.13.0-insider (, 2017-05-26T05:14:23.944Z) OS Version: Windows_NT ia32 10.0. Currently you can multi-select items in the Git files view and if you right-click, the & menu items will only open the file/change of the focused item, with the stage/unstage command work with the whole selection. It would be great to have these 2 command act upon the whole selection.
Change:
# Send the IsWindows property if the environment looks like Windows if [[ "$(uname -s)" =~ ^CYGWIN*|MINGW*|MSYS* ]]; then builtin printf 'e]633;P;IsWindows=Truea' <ins> __vsc_is_windows=1 else __vsc_is_windows=0 </ins> fi # Allow verifying $BASH_COMMAND doesn't have aliases resolved via history when the right HISTCONTROL

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. --Version: 1.89.0-insider (user setup) Commit: Date: 2024-04-15T05:50:22.934Z Electron: 28.2.8 ElectronBuildId: Chromium: 120.0.6099.291 18.18.2 V8: 12.0.267.19-electron.0 OS: Windows_NT x64 10.0. Steps to Reproduce: Git Bash with shell integration enabled a command to split the terminal !
I can work on fixing this since I created the issue adding git bash shell integration
Hi this issue still happens on the stable(1.89.1) and insider build(1.90.0). System info: Version: 1.89.1 (user setup) Commit: Date: 2024-05-07T05:13:33.891Z Electron: 28.2.8 ElectronBuildId: Chromium: 120.0.6099.291 18.18.2 V8: 12.0.267.19-electron.0 OS: Windows_NT x64 10.0. !
Change:
@IContextKeyService private readonly contextKeyService: IContextKeyService) { super(); <del> registerConfiguration(this.productService.quality !== 'stable'); </del> <ins> const enable = this.extensionGalleryService.isEnabled() && (this.productService.remoteExtensionTips ?? false) && this.productService.quality !== 'stable'; registerConfiguration(enable); </ins> const remoteExtensionTips = { ...this.productService.remoteExtensionTips, ...this.productService.virtualWorkspaceExtensionTips }; this.remoteExtensionMetadata = Object.values(remoteExtensionTips).filter(value => value.showInStartEntry === true).map(value => { return { id: value.extensionId, installed: false, friendlyName: value.friendlyName, remoteCommands: [], isPlatformCompatible: false, dependencies: [] };

Discussion:
Testing I think I am wrongly being asked to install extensions now, but when I do need to install an extension, it would be nice to show a progress bar somewhere while this runs <img width="642" alt="image" src="https://user-"Or if I am going to be waiting for a bit, you might run the progress in a modal dialog or non-modal notification instead of a quickpick
somewhat related: FWIW I did see a progression bar while the extension was installing on Windows

Testing After you click on e.g. Remote Repositories and you don't have the extension installed, the picker is still displayed with the options while the installation is in progress. Because the options there aren't very responsive during installation, maybe it's worth hiding them and only show the "installing" progress bar? !

Testing to... ! to Tunnel... a Tunnel window reloads the window is connecting to that chosen tunnel, click ! the window connects to the tunnel, click again ! (same as last pic) This is different than if I didn't take Step 4. Observe: to... ! to Tunnel... a Tunnel window reloads the window connects to the tunnel, click ! I think I would expect the 2nd and 3rd images to be this ^ as well.

Testing a OSS build without the marketplace in the welcome screen bug ! I see an empty quick pick
Change:
test('pick - basecase', async () => { const item = { label: 'foo' }; <ins> const wait = setupWaitTilShownListener(controller); </ins> const pickPromise = controller.pick([item, { label: 'bar' }]); <del> // wait a bit to let the pick get set up. await wait(200); </del> <ins> await wait; </ins> controller.accept(); const pick = await pickPromise; assert.strictEqual(pick, item); }); test('pick - activeItem is honored', async () => { const item = { label: 'foo' }; <ins> const wait = setupWaitTilShownListener(controller); </ins> const pickPromise = controller.pick([{ label: 'bar' }, item], { activeItem: item }); <del> // wait a bit to let the pick get set up. await wait(200); </del> <ins> await wait; </ins> controller.accept(); const pick = await pickPromise; assert.strictEqual(pick, item); }); test('input - basecase', async () => { <ins> const wait = setupWaitTilShownListener(controller); </ins> const inputPromise = controller.input({ value: 'foo' }); <del> // wait a bit to let the pick get set up. await wait(200); </del> <ins> await wait; </ins> controller.accept(); const value = await inputPromise; assert.strictEqual(value, 'foo'); });

Discussion:
Again: I think these tests need to stop using an arbritrary timeout of 200 ms and find a different way of figuring out.
Change:
return this._zone.value.widget.hasFocus(); } <ins> moveHunk(next: boolean) { this.focus(); this._strategy?.move?.(next); } </ins> populateHistory(up: boolean) { const len = InlineChatController._promptHistory.length; if (len === 0) {

Discussion:
open inline chat have it make multiple hunks (hint: ask it to use a util that needs to be imported) there is no gesture to visit all hunks except for accepting/discarding them... This can also help with accessibility when using the move
To verify let inline chat make multiple changes, e.g ask it to import a util or let is change the label of two actions make sure the inline chat status says "N changes" (n=2) select and to navigate between the changes