jiebi/CodeConvo huggingface dataset:
Code change:
} public static moveToBeginningOfLine(config: CursorConfiguration, model: ICursorSimpleModel, cursor: SingleCursorState, inSelectionMode: boolean): SingleMoveOperationResult { <del> let lineNumber = cursor.selection.startLineNumber; </del> <ins> let lineNumber = cursor.position.lineNumber; </ins> let minColumn = model.getLineMinColumn(lineNumber); let firstNonBlankColumn = model.getLineFirstNonWhitespaceColumn(lineNumber) || minColumn; let column: number; <del> if (cursor.selection.startColumn === firstNonBlankColumn) { </del> <ins> let relevantColumnNumber = cursor.position.column; if (relevantColumnNumber === firstNonBlankColumn) { </ins> column = minColumn; } else { column = firstNonBlankColumn;

Related discussion:
text: VSCode Version: Code - Insiders 1.8.0-insider (, 2016-12-09T12:05:39.439Z) OS Version: Linux x64 4.8.0-28-generic Extensions: Steps to Reproduce: an untitled file and add content: the cursor after the shift, press down and then end, the selection should be shift, press home, the selection should be but it is because the select went to the start of the wrong line.
This used to work till yesterday... something broke. I'm pressing <kbdend</kbdafter going 3 lines above, and the cursor goes to the end of the selectionStart line. !
Code change:
@ILogService logService: ILogService ) { super(lifecycleMainService, configurationService, environmentService, requestService, logService); <ins> } initialize(): void { super.initialize(); </ins> this.onRawError(this.onError, this, this.disposables); this.onRawUpdateAvailable(this.onUpdateAvailable, this, this.disposables); this.onRawUpdateDownloaded(this.onUpdateDownloaded, this, this.disposables);

Related discussion:
text: run you'll notice that in the main process before creating the renderer the update service takes its time (~5-10ms). while that's not much it seems unnecessary and "block" the renderer for no good reason <img width="1101" alt="Screenshot 2020-01-31 at 14 45 07" src="https://user-"
This is only problematic in macOS where calls into the native which blocks.
Thanks
Code change:
// this._logService.debug('match found without corresponding matchIndex', match, matcher); break; } <ins> const originalLink = link; const cachedLinkResult = map.get(originalLink); if (cachedLinkResult && !this._testing) { if (typeof cachedLinkResult !== 'string') { result.push(cachedLinkResult); } break; } </ins> // Get index, match.index is for the outer match which includes negated chars // therefore we cannot use match.index directly, instead we search the position

Related discussion:
text: Logging errors from the file service I notice that the terminal seems to stat the terminal prompt multiple times: ! Notice the at the end of the file path.
When you hover a line in the terminal links are resolved, one of the link providers gets confirmation on whether it's a file or directory and gives a high confidence link (underline shows when you hover without cmd) and on macOS we treat as a valid path character. This is how it's always worked. but we could cache this stat result with a TTL (10s?) so it doesn't spam so many stat calls and will be able to return the link faster on successive hovers.
Code change:
return localize('trustedFolderWithHostAriaLabel', "{0} on {1}, trusted", this.labelService.getUriLabel(item.uri), hostLabel); }, getWidgetAriaLabel: () => localize('trustedFoldersAndWorkspaces', "Trusted Folders & Workspaces") <ins> }, identityProvider: { getId(element: ITrustedUriItem) { return element.uri.toString(); }, </ins> } } ) as WorkbenchTable<ITrustedUriItem>;

Related discussion:
text: Type: <bBug</bWhen pressing to collapse all nodes in a list view it leaves selection in such a state that you cannot expand nodes with until you do something to change the selection. ! I believe what's happening is is leaving the originally selected node selected. So after executing the command you end up with 2 selections, your original selection plus the last root node in the list. The original selection is the primary selection, and if it has no children does not have anything to expand and is a no-op. As a user it looks like you have the root node selected, which has children to expand, but pressing does nothing. Pressing then expands the list to reveal your original selection and you see that you unexpectedly have multiple selections. The current behavior of appears to be: Leave the originally selected node selected Add a second selection to the last root node in the list The expected behavior here is: Move selection to the root node of your currently selected node Ideally this also retains multiple selection: each selection is moved to the root node of that selection. VS Code version: Code - Insiders 1.76.0-insider (, 2023-02-10T16:22:19.445Z) OS version: WindowsNT x64 10.0. Modes: Sandboxed: Yes <details<summarySystem Info</summary </detailsExtensions: none<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Looking at this again in the File Explorer it looks like the selection highlight is left on the where the original selection was despite the fact that the node is now in a different position. However, the "real" selection is still on the node. This means it looks like one thing is highlighted and pressing opens a different thing.
Just submitted a PR for this. Could you please review it?
What is the behavior supposed to be? Here's what I see: keyboard to focus a tree node that has a parent to collapse all moves to the whole tree and arrow down takes me to the first tree element. Right arrow does nothing.
The current behavior sort-of fixes the issue, insofar as is dodges it by doing something less desirable - moves selection to the whole tree. Imo, selection should remain on the root node(s) of whichever tree branch selection is currently in.
Code change:
return localize('trustedFolderWithHostAriaLabel', "{0} on {1}, trusted", this.labelService.getUriLabel(item.uri), hostLabel); }, getWidgetAriaLabel: () => localize('trustedFoldersAndWorkspaces', "Trusted Folders & Workspaces") <ins> }, identityProvider: { getId(element: ITrustedUriItem) { return element.uri.toString(); }, </ins> } } ) as WorkbenchTable<ITrustedUriItem>;

Related discussion:
text: I think this is what the previous behavior was trying to do, it just had an issue with leaving selection in a bad state. A couple examples ([x] denotes current selection): Start state End state, after Stat state End state
I agree, feel free to send an issue for it. Your observations are the fixed state. Here's the entire story: Marking it as verified.
Code change:
return localize('trustedFolderWithHostAriaLabel', "{0} on {1}, trusted", this.labelService.getUriLabel(item.uri), hostLabel); }, getWidgetAriaLabel: () => localize('trustedFoldersAndWorkspaces', "Trusted Folders & Workspaces") <ins> }, identityProvider: { getId(element: ITrustedUriItem) { return element.uri.toString(); }, </ins> } } ) as WorkbenchTable<ITrustedUriItem>;

Related discussion:
text: Testing focus on trusted URI list of items tab to navigate to the X to remove an item. Press to trigger removal nicely gets removed from the list, however focus is lost Focus should be preserved in the list on the neighbour item (example: checkout how Explorer does that when deleting a file). I thought this would be tackled via
The trust editor does a lot of full page re-rendering which I should improve (remove) so I doubt this is an issue with the table widget itself.
Code change:
private globalExcludePattern?: glob.ParsedExpression; <del> constructor(private config: IFileQuery, private provider: FileSearchProviderNew, private sessionToken?: unknown) { </del> <ins> constructor(private config: IFileQuery, private provider: FileSearchProviderNew, private sessionLifecycle?: SessionLifecycle) { </ins> this.filePattern = config.filePattern; this.includePattern = config.includePattern && glob.parse(config.includePattern); this.maxResults = config.maxResults || undefined;

Related discussion:
text: a traditional . , listen for debugging the extension, open a file picker, then close it. session token's never gets triggered when the session is done (aka when the file picker is closed) :bug: This contradicts
regression from
Code change:
private globalExcludePattern?: glob.ParsedExpression; <del> constructor(private config: IFileQuery, private provider: FileSearchProviderNew, private sessionToken?: unknown) { </del> <ins> constructor(private config: IFileQuery, private provider: FileSearchProviderNew, private sessionLifecycle?: SessionLifecycle) { </ins> this.filePattern = config.filePattern; this.includePattern = config.includePattern && glob.parse(config.includePattern); this.maxResults = config.maxResults || undefined;

Related discussion:
text: Testing The type cannot be used with because that requires objects (no primitives). We should accommodate for that and change the API accordingly.
Code change:
pull(): Promise<void> { return this._repository.pull(); } <ins> push(head: Branch): Promise<void> { return this._repository.push(head); } pushTo(remote?: string, name?: string, setUpstream: boolean = false): Promise<void> { return this._repository.pushTo(remote, name, setUpstream); } </ins> } export class ApiGit implements Git {

Related discussion:
text: Right now we can do pull but not push with Git's API . We are looking into allowing users to create pull request from the extension but without this API, we can only execute git command ourselves. Not sure about the cost of adding this API, the shape of in my mind can be like .
Fixed by
Code change:
static readonly DebugWatchContext = new MenuId('DebugWatchContext'); static readonly DebugToolBar = new MenuId('DebugToolBar'); static readonly EditorContext = new MenuId('EditorContext'); <ins> static readonly SimpleEditorContext = new MenuId('SimpleEditorContext'); </ins> static readonly EditorContextCopy = new MenuId('EditorContextCopy'); static readonly EditorContextPeek = new MenuId('EditorContextPeek'); static readonly EditorTitle = new MenuId('EditorTitle');

Related discussion:
text: re focus SCM input show context menu the is a entry "Command Palette..." which is awkward <img width="703" alt="image" src="https://user-"
Related to this, on my system that context menu also gives me entries that have been contributed by a couple of my extensions.
Same issue on macOS as well
This happens across all our inputs which use the Editor. IMO we should not include all those contributions and should just have , & in that menu. What's the simplest way towards this
The "Command Palette..." should potentially have a better context key for , not :
Thanks! But this is actually only half of the story. As mentions, extension contributed commands show up: ! Should we file issues to these extensions, suggesting to change their clauses?
It might be better/simpler to have another menu id, something like or even something SCM specific
To reproduce, you can use:
Code change:
return this.input.selectionEnd === this.input.value.length && this.input.selectionStart === this.input.selectionEnd; } <del> public getSelection(): IRange | null { const selectionStart = this.input.selectionStart; if (selectionStart === null) { return null; } const selectionEnd = this.input.selectionEnd ?? selectionStart; return { start: selectionStart, end: selectionEnd, }; } </del> public enable(): void { this.input.removeAttribute('disabled'); }

Related discussion:
text: open normal quick pick () type notice you want symbol search and select the cursor is random, within the word, and doesn't select the previous input anymore
Code change:
widgetPosition = this._editor.getSelection().getStartPosition().delta(-1); } <del> let needsMargin = false; </del> if (initialRender) { this._zone.value.setContainerMargins(); }

Related discussion:
text: I think we used to indent inline chat to the indentation level of the line: ! Steps: have an indented line press enter to be on an empty line (still indented) press to bring up inline chat
Code change:
if (!this.url) { return Promise.resolve(undefined); } return this.requestService.request({ url: this.url }, CancellationToken.None).then(context => { // The update server replies with 204 (No Content) when no // update is available - that's all we want to know.

Related discussion:
text: run you'll notice that in the main process before creating the renderer the update service takes its time (~5-10ms). while that's not much it seems unnecessary and "block" the renderer for no good reason <img width="1101" alt="Screenshot 2020-01-31 at 14 45 07" src="https://user-"
This is only problematic in macOS where calls into the native which blocks.
Thanks
Code change:
}); } <ins> disposeElement(element: ActionBarCell, index: number, templateData: IActionBarTemplateData, height: number | undefined) { templateData.elementDisposable.dispose(); } </ins> disposeTemplate(templateData: IActionBarTemplateData): void { <ins> templateData.label.dispose(); </ins> templateData.actionBar.dispose(); templateData.elementDisposable.dispose(); <ins> templateData.button?.dispose(); </ins> } }

Related discussion:
text: To repro, cause the Ports view to rerender several times. This can be done by trying to set a label and escaping out about 8 times.
is this a bad leak? Like does it leak just 1 listener per interaction or does it grow faster than that?
It grows faster than that, but it's probably only a medium bad leak. After 8 table rerenders there are 175 listeners. After ~5 more table rerenders there are 263 listeners. After ~5 more table rerenders there are 351 listeners. After ~5 more table rerenders there are 439 listeners. A table rerender can be triggered through port auto-forwarding. Once when the process is started and the port is forwarded, and once when the process exists and the port is removed. The number of listeners is depended on the number of ports that have been forwarded. My numbers above are with 3 ports.
No more leak, works as expected -verified
Code change:
private _getAccessibleViewHelpDialogContent(providerHasSymbols?: boolean): string { const navigationHint = this._getNavigationHint(); const goToSymbolHint = this._getGoToSymbolHint(providerHasSymbols); <del> const toolbarHint = localize('toolbar', "Navigate to the toolbar (Shift+Tab))."); </del> <ins> const toolbarHint = localize('toolbar', "Navigate to the toolbar (Shift+Tab)."); </ins> const chatHints = this._getChatHints(); let hint = localize('intro', "In the accessible view, you can:n");

Related discussion:
text: Testing In the screenshot below, "Chat: Insert at Cursor" should be "Chat: Insert into New File" !
Code change:
private _getAccessibleViewHelpDialogContent(providerHasSymbols?: boolean): string { const navigationHint = this._getNavigationHint(); const goToSymbolHint = this._getGoToSymbolHint(providerHasSymbols); <del> const toolbarHint = localize('toolbar', "Navigate to the toolbar (Shift+Tab))."); </del> <ins> const toolbarHint = localize('toolbar', "Navigate to the toolbar (Shift+Tab)."); </ins> const chatHints = this._getChatHints(); let hint = localize('intro', "In the accessible view, you can:n");

Related discussion:
text: Testing There's a double close parenthesis here: <img width="305" alt="image" src=""
Also a missing on the line
Code change:
} @command('git.clone') <del> async clone(url?: string): Promise<void> { </del> <ins> async clone(url?: string, parentPath?: string): Promise<void> { </ins> if (!url) { url = await window.showInputBox({ prompt: localize('repourl', "Repository URL"),

Related discussion:
text: <!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --I'm working on a Visual Studio Code extension that's supposed to make it easier to clone a git repository in a user configured directory. The basic idea is that the user configures the directory once (e.g.: in ) and then all the cloned repositories will be placed in this directory. The seems the ideal candidate for implementing something like this (especially now with the new ). However, the only problem is that the command is always asking the user for the destination directory. This feature request is about adding an option to the command which would allow other extensions to clone a repository in a specific directory without showing the dialog. One possible implementation could be as simple as adding another optional argument (for the destination directory) to the command ().
Found a quirk:
Fixing the quirk is fine in the future. Thus pushing it out to the On Deck milestone since Joao is on vacation. please speak up if you disagree.
+1 for this issue. I'm also working on a VS Code extension (specifically the C++ extension here in Redmond). We're working on an experience that involves operating on the files in a repository that the user has cloned via the command, but currently there is no way to know which parent directory was selected. Allowing the repository parent directory to be passed in would solve the problem entirely for us -- I'll be watching this issue closely. :slightlysmilingface:
This has been implemented () and you can already use it in Visual Studio Code version .
Thanks
Since this is already implemented I am closign this issue. Thanks As for the quirk can handle as an independet issue
should this issue be labelled with again? I also wonder if the quirk has been filed as a separate issue.
Code change:
import { CATEGORIES } from 'vs/workbench/common/actions'; import { ActiveGroupEditorsByMostRecentlyUsedQuickAccess } from 'vs/workbench/browser/parts/editor/editorQuickAccess'; import { IOpenerService } from 'vs/platform/opener/common/opener'; <del> import { EditorResolution, IEditorOptions, ITextEditorOptions } from 'vs/platform/editor/common/editor'; </del> <ins> import { EditorResolution, IEditorOptions, IResourceEditorInput, ITextEditorOptions } from 'vs/platform/editor/common/editor'; </ins> import { Schemas } from 'vs/base/common/network'; import { SideBySideEditorInput } from 'vs/workbench/common/editor/sideBySideEditorInput'; import { SideBySideEditor } from 'vs/workbench/browser/parts/editor/sideBySideEditor'; import { IJSONSchema } from 'vs/base/common/jsonSchema'; import { IEditorResolverService } from 'vs/workbench/services/editor/common/editorResolverService'; <ins> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </ins> export const CLOSE_SAVED_EDITORS_COMMAND_ID = 'workbench.action.closeUnmodifiedEditors'; export const CLOSE_EDITORS_IN_GROUP_COMMAND_ID = 'workbench.action.closeEditorsInGroup';

Related discussion:
text: Issue Type: <bBug</bCreating an untitled document (from a file URI amended with the scheme) results in different states depending on whether the document is created with the command or the function. I tried to reduce the problem to a failing test case and failed, but maybe can still be useful for debugging. Create an untitled URI for a new file () Open an editor for that URI with / Type some text Save the file Notice that the save dialog starts with the we had providedCreate a new untitled URI for a new file Open an editor for that URI with Type some text Save the file The save dialog starts with the we had provided, just like with the other method. The save dialog starts with the text we typed instead of the we had provided. VS Code version: Code 1.63.0 (, 2021-12-07T05:16:45.441Z) OS version: Linux x64 5.15.6-200.fc35.x8664 Restricted Mode: No <details<summarySystem Info</summary </details<details<summaryExtensions (38)</summaryExtensionVersion ------ vscode-unfancy-file-icons3.15.0 icons-carbon0.2.4 chalice-icon-theme1.2.16 awk-ide-vscode0.6.2 vscode-fish1.0.24 init-script0.1.3 make-task-provider2.1.1 npm-intellisense1.4.0 path-intellisense2.6.0 vscode-eslint2.2.2 EditorConfig0.16.4 gtk-dark-titlebar1.2.3 vscode-pull-request-github0.34.0 go0.29.0 terraform2.17.0 nix-ide0.1.18 language-julia1.5.6 rust-analyzer0.2.842 git-graph1.30.0 fluent-icons0.0.15 direnv0.3.0 vscode-docker1.18.0 python2021.12. vscode-pylance2021.12.1 jupyter2021.11.
Code change:
import { CATEGORIES } from 'vs/workbench/common/actions'; import { ActiveGroupEditorsByMostRecentlyUsedQuickAccess } from 'vs/workbench/browser/parts/editor/editorQuickAccess'; import { IOpenerService } from 'vs/platform/opener/common/opener'; <del> import { EditorResolution, IEditorOptions, ITextEditorOptions } from 'vs/platform/editor/common/editor'; </del> <ins> import { EditorResolution, IEditorOptions, IResourceEditorInput, ITextEditorOptions } from 'vs/platform/editor/common/editor'; </ins> import { Schemas } from 'vs/base/common/network'; import { SideBySideEditorInput } from 'vs/workbench/common/editor/sideBySideEditorInput'; import { SideBySideEditor } from 'vs/workbench/browser/parts/editor/sideBySideEditor'; import { IJSONSchema } from 'vs/base/common/jsonSchema'; import { IEditorResolverService } from 'vs/workbench/services/editor/common/editorResolverService'; <ins> import { IPathService } from 'vs/workbench/services/path/common/pathService'; </ins> export const CLOSE_SAVED_EDITORS_COMMAND_ID = 'workbench.action.closeUnmodifiedEditors'; export const CLOSE_EDITORS_IN_GROUP_COMMAND_ID = 'workbench.action.closeEditorsInGroup';

Related discussion:
text: jupyter-keymap1.0.0 jupyter-renderers1.0.4 remote-containers0.209.5 remote-ssh0.68.0 remote-ssh-edit0.68.0 vsliveshare1.0.5196 vscode-commons0.0.6 vscode-yaml1.2.2 edit-with-shell1.3.0 lua2.5.3 even-better-toml0.14.2 shellcheck0.18.2 redo0.1.0 (6 theme extensions excluded) </details<!-- generated by issue reporter --
Looks like when you call we treat the URI as the associated resource: But we do not do the same from
I tried this with the following code: and both files saved to the correct paths... but I wasn't prompted at all by a file dialog. Is that expected?
Yes. Untitled with associated path don't ask for a file name, that is the whole idea of "untitled with associated resource" vs. "untitled without associated resource".
Code change:
VSCODE_BUILD_LINUX: ${{ parameters.VSCODE_BUILD_LINUX }} VSCODE_BUILD_LINUX_ALPINE: ${{ parameters.VSCODE_BUILD_LINUX_ALPINE }} <del> - ${{ if or(eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true)) }}: - job: LinuxArm64 </del> <ins> - ${{ if or(eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true), eq(parameters.VSCODE_BUILD_LINUX_ARM64, true)) }}: - job: LinuxGnuARM pool: vscode-1es-linux steps: - template: ./linux/cli-build-linux.yml parameters: VSCODE_QUALITY: ${{ variables.VSCODE_QUALITY }} VSCODE_BUILD_LINUX_ARMHF: ${{ parameters.VSCODE_BUILD_LINUX_ARMHF }} VSCODE_BUILD_LINUX_ARM64: ${{ parameters.VSCODE_BUILD_LINUX_ARM64 }} - ${{ if eq(parameters.VSCODE_BUILD_LINUX_ALPINE_ARM64, true) }}: - job: LinuxAlpineARM64 </ins> pool: vscode-1es-linux-20.04-arm64 <del> variables: VSCODE_ARCH: arm64 </del> steps: - task: NodeTool@0 displayName: Install Node.js

Related discussion:
text: The stage is now a bottleneck to having the platform specific stages run: ! Each job compiles each target serially. We could further parallelize all targets across different jobs. !