jiebi/CodeConvo huggingface dataset:
Code change:
I was trying to copying a new setting in the problems hover and it was extremely painful to do so: https://user-
This is editor hover and hence assigning to
FWIW this works fine for me on Windows.

Related discussion:
text: } private _setCurrentResult(hoverResult: HoverResult | null): void { <ins> if (this._currentResult === hoverResult) { // avoid updating the DOM to avoid resetting the user selection return; } </ins> if (hoverResult && hoverResult.messages.length === 0) { hoverResult = null; }
Code change:
I was trying to copying a new setting in the problems hover and it was extremely painful to do so: https://user-
This is editor hover and hence assigning to
FWIW this works fine for me on Windows.

Related discussion:
text: if (fragment.hasChildNodes()) { if (highlightRange) { const highlightDecoration = this._editor.createDecorationsCollection(); <del> try { this._isChangingDecorations = true; highlightDecoration.set([{ range: highlightRange, options: ContentHoverController._DECORATION_OPTIONS }]); } finally { this._isChangingDecorations = false; } </del> <ins> highlightDecoration.set([{ range: highlightRange, options: ContentHoverController._DECORATION_OPTIONS }]); </ins> disposables.add(toDisposable(() => { <del> try { this._isChangingDecorations = true; highlightDecoration.clear(); } finally { this._isChangingDecorations = false; } </del> <ins> highlightDecoration.clear(); </ins> })); }
Code change:
I was trying to copying a new setting in the problems hover and it was extremely painful to do so: https://user-
This is editor hover and hence assigning to
FWIW this works fine for me on Windows.

Related discussion:
text: public readonly isComplete: boolean ) { } <del> public filter(anchor: HoverAnchor): HoverResult | null { </del> <ins> public filter(anchor: HoverAnchor): HoverResult { </ins> const filteredMessages = this.messages.filter((m) => m.isValidForHoverAnchor(anchor)); <ins> if (filteredMessages.length === this.messages.length) { return this; } </ins> return new FilteredHoverResult(this, this.anchor, filteredMessages, this.isComplete); } }
Code change:
I was trying to copying a new setting in the problems hover and it was extremely painful to do so: https://user-
This is editor hover and hence assigning to
FWIW this works fine for me on Windows.

Related discussion:
text: super(anchor, messages, isComplete); } <del> public override filter(anchor: HoverAnchor): HoverResult | null { </del> <ins> public override filter(anchor: HoverAnchor): HoverResult { </ins> return this.original.filter(anchor); } }
Code change:
Issue Type: <bBug</bI wanted to be able to copy the call stack through a keyboard shortcut so I created a binding for but found that it doesn't do anything. I tried different combinations of clauses and ensured that my keystroke was not being captured by something else but still no luck. Invoking the command directly in my extension like so also did not work and the thenable resolved to . The comment and post imply this should work outside of the callstack context so I've filed this as a bug as opposed to a feature request for a keyboard shortcut to copy the call stack. VS Code version: Code 1.63.2 (Universal) (, 2021-12-15T09:37:28.172Z) OS version: Darwin x64 21.2.0 Restricted Mode: No <details<summarySystem Info</summary </details<details<summaryExtensions (15)</summaryExtensionVersion ------ vscode-bazel0.5.0 arm1.5.2 vscode-diff1.4.2 fig0.10.1 misc-additions1.0.2 lldb-vscode0.1.0 jupyter2021.11. remote-ssh0.68.0 remote-ssh-edit0.68.0 vscode-remote-extensionpack0.21.0 cpptools1.7.1 errorlens3.4.1 vim1.21.10 clang-format1.9.0 material-theme3.13.6 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
The comment in code applies to the commands in general but that particular command can't be called globally currently. It copies a callstack from one thread and there can be multiple callstacks available so one has to selected to copy. Do you want the keybinding to work on the focused thread, or does that not help?
Yes, defaulting to the focused thread was my expectation.

Related discussion:
text: return thread.getCallStack().find(sf => sf.getId() === context.frameId); } } <ins> } else { return debugService.getViewModel().focusedStackFrame; </ins> } return undefined;
Code change:
Issue Type: <bBug</bI wanted to be able to copy the call stack through a keyboard shortcut so I created a binding for but found that it doesn't do anything. I tried different combinations of clauses and ensured that my keystroke was not being captured by something else but still no luck. Invoking the command directly in my extension like so also did not work and the thenable resolved to . The comment and post imply this should work outside of the callstack context so I've filed this as a bug as opposed to a feature request for a keyboard shortcut to copy the call stack. VS Code version: Code 1.63.2 (Universal) (, 2021-12-15T09:37:28.172Z) OS version: Darwin x64 21.2.0 Restricted Mode: No <details<summarySystem Info</summary </details<details<summaryExtensions (15)</summaryExtensionVersion ------ vscode-bazel0.5.0 arm1.5.2 vscode-diff1.4.2 fig0.10.1 misc-additions1.0.2 lldb-vscode0.1.0 jupyter2021.11. remote-ssh0.68.0 remote-ssh-edit0.68.0 vscode-remote-extensionpack0.21.0 cpptools1.7.1 errorlens3.4.1 vim1.21.10 clang-format1.9.0 material-theme3.13.6 </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
The comment in code applies to the commands in general but that particular command can't be called globally currently. It copies a callstack from one thread and there can be multiple callstacks available so one has to selected to copy. Do you want the keybinding to work on the focused thread, or does that not help?
Yes, defaulting to the focused thread was my expectation.

Related discussion:
text: handler: async (accessor: ServicesAccessor, _: string, context: CallStackContext | unknown) => { const textResourcePropertiesService = accessor.get(ITextResourcePropertiesService); const clipboardService = accessor.get(IClipboardService); <del> const frame = getFrame(accessor.get(IDebugService), context); </del> <ins> const debugService = accessor.get(IDebugService); const frame = getFrame(debugService, context); </ins> if (frame) { const eol = textResourcePropertiesService.getEOL(frame.source.uri); await clipboardService.writeText(frame.thread.getCallStack().map(sf => sf.toString()).join(eol));
Code change:
We should not sync this Should this be per terminal instance? No We should persist similar to recent commands as well Should persisted entries work across different shells? Probably We should invalidate entries similar to commands Let's support removing entries, using a icon that shows only on active and hovered item Let's not use the x for failed, we can improve visualizing errors later on

Related discussion:
text: import { ITerminalCommand, TerminalCapability } from 'vs/workbench/contrib/terminal/common/capabilities/capabilities'; import { TerminalCapabilityStoreMultiplexer } from 'vs/workbench/contrib/terminal/common/capabilities/terminalCapabilityStore'; import { IEnvironmentVariableInfo } from 'vs/workbench/contrib/terminal/common/environmentVariable'; <del> import { getCommandHistory } from 'vs/workbench/contrib/terminal/common/history'; </del> <ins> import { getCommandHistory, getDirectoryHistory } from 'vs/workbench/contrib/terminal/common/history'; </ins> import { DEFAULT_COMMANDS_TO_SKIP_SHELL, INavigationMode, ITerminalBackend, ITerminalProcessManager, ITerminalProfileResolverService, ProcessState, ShellIntegrationExitCode, TerminalCommandId, TERMINAL_CREATION_COMMANDS, TERMINAL_VIEW_ID } from 'vs/workbench/contrib/terminal/common/terminal'; import { TerminalContextKeys } from 'vs/workbench/contrib/terminal/common/terminalContextKey'; import { formatMessageForTerminal } from 'vs/workbench/contrib/terminal/common/terminalStrings';
Code change:
We should not sync this Should this be per terminal instance? No We should persist similar to recent commands as well Should persisted entries work across different shells? Probably We should invalidate entries similar to commands Let's support removing entries, using a icon that shows only on active and hovered item Let's not use the x for failed, we can improve visualizing errors later on

Related discussion:
text: this._cwd = e; this._xtermOnKey?.dispose(); this.refreshTabLabels(this.title, TitleEventSource.Config); <ins> this._instantiationService.invokeFunction(getDirectoryHistory)?.add(e, null); </ins> }); } else if (e === TerminalCapability.CommandDetection) { this.capabilities.get(TerminalCapability.CommandDetection)?.onCommandFinished(e => {
Code change:
We should not sync this Should this be per terminal instance? No We should persist similar to recent commands as well Should persisted entries work across different shells? Probably We should invalidate entries similar to commands Let's support removing entries, using a icon that shows only on active and hovered item Let's not use the x for failed, we can improve visualizing errors later on

Related discussion:
text: for (const label of cwds) { items.push({ label }); } items = items.reverse(); <ins> // Gather previous session history const history = this._instantiationService.invokeFunction(getDirectoryHistory); const previousSessionItems: IQuickPickItem[] = []; // Only add previous session item if it's not in this session for (const [label] of history.entries) { if (!cwds.includes(label)) { previousSessionItems.push({ label, buttons: [removeFromCommandHistoryButton] }); } } if (previousSessionItems.length > 0) { items.push( { type: 'separator', label: 'previous sessions' }, ...previousSessionItems ); } </ins> } if (items.length === 0) { return;
Code change:
We should not sync this Should this be per terminal instance? No We should persist similar to recent commands as well Should persisted entries work across different shells? Probably We should invalidate entries similar to commands Let's support removing entries, using a icon that shows only on active and hovered item Let's not use the x for failed, we can improve visualizing errors later on

Related discussion:
text: return new Promise<void>(r => { quickPick.onDidTriggerItemButton(async e => { if (e.button === removeFromCommandHistoryButton) { <del> this._instantiationService.invokeFunction(getCommandHistory)?.remove(e.item.label); } const selectedCommand = (e.item as Item).command; const output = selectedCommand?.getOutput(); if (output && selectedCommand?.command) { const textContent = await outputProvider.provideTextContent(URI.from( { scheme: TerminalOutputProvider.scheme, path: `${selectedCommand.command}... ${fromNow(selectedCommand.timestamp, true)}`, fragment: output, query: `terminal-output-${selectedCommand.timestamp}-${this.instanceId}` })); if (textContent) { await this._editorService.openEditor({ resource: textContent.uri }); </del> <ins> if (type === 'command') { this._instantiationService.invokeFunction(getCommandHistory)?.remove(e.item.label); } else { this._instantiationService.invokeFunction(getDirectoryHistory)?.remove(e.item.label); } } else { const selectedCommand = (e.item as Item).command; const output = selectedCommand?.getOutput(); if (output && selectedCommand?.command) { const textContent = await outputProvider.provideTextContent(URI.from( { scheme: TerminalOutputProvider.scheme, path: `${selectedCommand.command}... ${fromNow(selectedCommand.timestamp, true)}`, fragment: output, query: `terminal-output-${selectedCommand.timestamp}-${this.instanceId}` })); if (textContent) { await this._editorService.openEditor({ resource: textContent.uri }); } </ins> } } quickPick.hide();
Code change:
We should not sync this Should this be per terminal instance? No We should persist similar to recent commands as well Should persisted entries work across different shells? Probably We should invalidate entries similar to commands Let's support removing entries, using a icon that shows only on active and hovered item Let's not use the x for failed, we can improve visualizing errors later on

Related discussion:
text: return commandHistory; } <ins> let directoryHistory: ITerminalPersistedHistory<null> | undefined = undefined; export function getDirectoryHistory(accessor: ServicesAccessor): ITerminalPersistedHistory<null> { if (!directoryHistory) { directoryHistory = accessor.get(IInstantiationService).createInstance(TerminalPersistedHistory, 'dirs') as TerminalPersistedHistory<null>; } return directoryHistory; } </ins> export class TerminalPersistedHistory<T> extends Disposable implements ITerminalPersistedHistory<T> { private readonly _entries: LRUCache<string, T>; private _timestamp: number = 0;
Code change:
Testing !
We'll need to repro on mac and look at the sequences to verify whether this is an issue or we're going the right thing.
I think this is working as designed since it's just padding on the top, however we could check the location of the terminal view and if it's on either side, top align the terminal instead of bottom aligning it.

Related discussion:
text: .monaco-workbench .pane-body.integrated-terminal .xterm { /* All terminals have at least 10px left/right edge padding and 2 padding on the bottom (so underscores on last line are visible */ padding: 0 10px 2px; <del> /* Bottom align the terminal withing the split pane */ </del> <ins> /* Bottom align the terminal within the split pane */ </ins> position: absolute; bottom: 0; left: 0; right: 0; } <ins> .terminal-side-view .terminal.xterm { /* Top align the terminal within the split pane when the panel is vertical */ top: 0; } </ins> .monaco-workbench .editor-instance .terminal-wrapper.fixed-dims .xterm, .monaco-workbench .pane-body.integrated-terminal .terminal-wrapper.fixed-dims .xterm { position: static;
Code change:
Testing !
We'll need to repro on mac and look at the sequences to verify whether this is an issue or we're going the right thing.
I think this is working as designed since it's just padding on the top, however we could check the location of the terminal view and if it's on either side, top align the terminal instead of bottom aligning it.

Related discussion:
text: const $ = dom.$; <del> const FIND_FOCUS_CLASS = 'find-focused'; const STATUS_ICON_WIDTH = 30; const SPLIT_ANNOTATION_WIDTH = 30; </del> <ins> const enum CssClass { ViewIsVertical = 'terminal-side-view', FindFocus = 'find-focused' } const enum WidthConstants { StatusIcon = 30, SplitAnnotation = 30 } </ins> export class TerminalTabbedView extends Disposable {
Code change:
Testing !
We'll need to repro on mac and look at the sequences to verify whether this is an issue or we're going the right thing.
I think this is working as designed since it's just padding on the top, however we could check the location of the terminal view and if it's on either side, top align the terminal instead of bottom aligning it.

Related discussion:
text: this._register(this._themeService.onDidColorThemeChange(theme => this._updateTheme(theme))); this._updateTheme(); <del> this._findWidget.focusTracker.onDidFocus(() => this._terminalContainer.classList.add(FIND_FOCUS_CLASS)); this._findWidget.focusTracker.onDidBlur(() => this._terminalContainer.classList.remove(FIND_FOCUS_CLASS)); </del> <ins> this._findWidget.focusTracker.onDidFocus(() => this._terminalContainer.classList.add(CssClass.FindFocus)); this._findWidget.focusTracker.onDidBlur(() => this._terminalContainer.classList.remove(CssClass.FindFocus)); </ins> this._attachEventListeners(parentElement, this._terminalContainer); this._terminalGroupService.onDidChangePanelOrientation((orientation) => { this._panelOrientation = orientation; <ins> if (this._panelOrientation === Orientation.VERTICAL) { this._terminalContainer.classList.add(CssClass.ViewIsVertical); } else { this._terminalContainer.classList.remove(CssClass.ViewIsVertical); } </ins> }); this._splitView = new SplitView(parentElement, { orientation: Orientation.HORIZONTAL, proportionalLayout: false });
Code change:
Testing !
We'll need to repro on mac and look at the sequences to verify whether this is an issue or we're going the right thing.
I think this is working as designed since it's just padding on the top, however we could check the location of the terminal view and if it's on either side, top align the terminal instead of bottom aligning it.

Related discussion:
text: private _getAdditionalWidth(instance: ITerminalInstance): number { // Size to include padding, icon, status icon (if any), split annotation (if any), + a little more const additionalWidth = 40; <del> const statusIconWidth = instance.statusList.statuses.length > 0 ? STATUS_ICON_WIDTH : 0; const splitAnnotationWidth = (this._terminalGroupService.getGroupForInstance(instance)?.terminalInstances.length || 0) > 1 ? SPLIT_ANNOTATION_WIDTH : 0; </del> <ins> const statusIconWidth = instance.statusList.statuses.length > 0 ? WidthConstants.StatusIcon : 0; const splitAnnotationWidth = (this._terminalGroupService.getGroupForInstance(instance)?.terminalInstances.length || 0) > 1 ? WidthConstants.SplitAnnotation : 0; </ins> return additionalWidth + splitAnnotationWidth + statusIconWidth; }
Code change:
Testing have no terminals, no panel visible reload vs code :bug: the open detected link, open last link commands are in command palette

Related discussion:
text: disposables.push(server.onServerStart(path => { <del> defaultStatus.text = '$(flame) Runnning'; </del> <ins> defaultStatus.text = '$(flame) Running'; </ins> defaultStatus.command = 'o.pickProjectAndStart'; defaultStatus.color = ''; render();
Code change:
I have a profile for PowerShell using the and once I enable the the prompt is no longer loading. With it enabled I see this prompt: ! When I disable I get my expected prompt: ! My prompt function within my PowerShell profile:
this is happening because line is throwing because there is no history in a newly created session
champion , should be able to handle this early next week
i could do a pr
also, here you should use and check if the CWD is a filesystem path. like:
that would be awesome! I'm fairly new to pwsh so any comments on the rest of the script would be appreciated too
Under what cases would the file system not be available?
the provider could be something other than filesystem, like the registry, certificate or environment you can see them if you run
just tried , neat
We probably want to keep the CWD even on non-filesystem providers actually, just give it a different scheme or something in that case to let VS Code differentiate it from a regular path. That way we would still get the cwd folder showing up in the tab: !
also, is it only supposed to support powershell 7 and not win PS?
Yep, no windows powershell
does vscode also supports osc 9;9 for CWD Tracking like win term?
some discussion on the topic in , my plan is to move us over to using our own custom sequences to avoid shell integration getting confused and give us freedom to change what them as we please.
let me know if I'm missing something though, I don't think running another terminal's shell integration script is particularly useful. Instead, you would use the arg injection or set it up manually (docs aren't written yet).
I see you have the sequences we support in your profile, these would break when we action as we'd probably move to use
yeah, I will probably remove them after the chages in and get into a release
Good to hear, let us know if you hit any other problems as I have a pretty simple pwsh setup
Can confirm latest build resolves this now on Inisiders: !

Related discussion:
text: #   Licensed under the MIT License. See License.txt in the project root for license information. # --------------------------------------------------------------------------------------------- <del> $Global:__VSCodeOriginalPrompt = (Get-Command Prompt).ScriptBlock </del> <ins> $Global:__VSCodeOriginalPrompt = $function:Prompt </ins> function Global:__VSCode-Get-LastExitCode { <del> if ($? -eq $True) { return "0" } </del> <ins> if ($? -eq $True) { return 0 } </ins> # TODO: Should we just return a string instead? <del> return "-1" </del> <ins> return -1 </ins> } function Global:Prompt() {
Code change:
I am doing Remote Development, and have a few Source Control Repositories. In the Source Control pane, I have all the repositories listed in the Source Control section. One of the repositories has a file that I want to discard. It is listed under "Untracked Changes", under the repository it is in. If I click the "Discard Changes" button on the line with the file, I am prompted for confirmation, as I expect. But, if I click the same button on the line above the file -- the "Discard All Untracked Changes" button on the "Untracked Changes" header line under the repository I want -- then I am first shown a "Choose a repository" dropdown that lists all the repositories. I don't understand why this choice is needed, since I clicked the "Discard All Untracked Changes" button on the Untracked Changes for a specific repository -- why must I select this repository again? If I choose the repository, I am still shown the same (or similar) confirmation dialog as I was before, so the selection does not seem to be needed for confirmation. Clicking the plus ("+") button (i.e., Stage All Untracked Changes) on the Untracked Changes line seems to have the same issue.
Thank you!

Related discussion:
text: return liveRepository; } <del> if (hint === repository.mergeGroup || hint === repository.indexGroup || hint === repository.workingTreeGroup) { </del> <ins> if (hint === repository.mergeGroup || hint === repository.indexGroup || hint === repository.workingTreeGroup || hint === repository.untrackedGroup) { </ins> return liveRepository; } }