jiebi/CodeConvo huggingface dataset:
Change:
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { ActiveCursorHasCommentingRange, CommentController, ID } from 'vs/workbench/contrib/comments/browser/commentsController'; import { IRange, Range } from 'vs/editor/common/core/range'; <ins> import { INotificationService } from 'vs/platform/notification/common/notification'; </ins> export class NextCommentThreadAction extends EditorAction { constructor() {

Discussion:
[x] Indicate when a document has commentable ranges Aria status when a document is opened [x] Add keyboard shortcut for adding a comment [x] Provide commands to go to next and previous commentable range [x] Add an accessible help menu to the comment widget Esc dismisses widget Lists go to next/previous commentable range commands + keyboard shortcuts Lists command and keyboard shortcut to add a comment Lists keyboard shortcut to execute the comment primary action and what the primary action is [x] The Comments view should respect the enter/space = reveal+focus/reveal [x] Make the comment widget toolbar always visible when in screen reader mode
Related to
is the last part of this, and it's almost done!
Mr.KITSANAPAN MEEKEAW
Change:
return model.accessibilityProvider && model.accessibilityProvider.getAriaLabel(element); } <ins> public getPosInSet(tree: ITree, element: any): string { const model = this.modelProvider.getModel(); return String(model.entries.indexOf(element) + 1); } public getSetSize(): string { const model = this.modelProvider.getModel(); return String(model.entries.length); } </ins> } export class Filter implements IFilter {

Discussion:
The tree/list is virtualized and as such a screen reader cannot make a correct statement on the number of entries. We should leverage and for that purpose within the tree and list widgets. The widgets know the number of elements to render and the currently selected items position in the set. /cc
Makes sense, I can look into it in june
Accidently closed this by PR which only address the list widget, still gotta do it for the tree
After looking into this with we have fixed this issue for the , however for the tree the situation is a bit more complex: It is not exactly specified what the and should be with respect to the tree structure. Should they be absolute or only relative to the siblings. In both of the cases we have an issue that the tree smartly chooses the minimal set of elements that need to be re-rendered, so if an element A gets removed and element B is above it, B will not get re-rendered and will still have the wrong attribute. Due to that we would need a bigger refactoring in order to fix this for the tree. So renaming this issue and pushing it to backlog for now.
The originating issue -- -- came in w.r.t. the Command Palette that displays a list. perhaps the root issue is that the implementation of the Command Palette uses a tree to display a list and that makes it difficult to express the list to Screen Readers ?
+1 for making the command palette use the list. I could also look into this when I get cycles if does not mind.
yeah +1 for using list for quick open, that would be very nice . I hope there are no things in tree that quick open depends on.
I have created this issue to track it
Change:
import * as assert from 'assert'; import { join } from 'path'; <del> import { CancellationTokenSource, commands, MarkdownString, TabInputNotebook, Position, QuickPickItem, Selection, StatusBarAlignment, TextEditor, TextEditorSelectionChangeKind, TextEditorViewColumnChangeEvent, TabInputText, Uri, ViewColumn, window, workspace, TabInputTextDiff } from 'vscode'; </del> <ins> import { CancellationTokenSource, commands, MarkdownString, TabInputNotebook, Position, QuickPickItem, Selection, StatusBarAlignment, TextEditor, TextEditorSelectionChangeKind, TextEditorViewColumnChangeEvent, TabInputText, Uri, ViewColumn, window, workspace, TabInputTextDiff, UIKind, env } from 'vscode'; </ins> import { assertNoRpc, closeAllEditors, createRandomFile, pathEquals } from '../utils';

Discussion:
Honestly you might want to avoid touching a notebook (or maybe any webview editor) in an integration test. We have had a lot of issues with webviews in integration tests and don't run notebook tests in the web. Test that with a unit test if possible
It's hard to easily test this with unit tests because there are a lot of editor setup and other stuff that goes on to ensure the end to end tab model is correct. I can remove the notebook piece but then I worry if notebooks or any other non-text type could regress and we wouldn't know
You could also just skip the test in web
Again, in web
Also in web for
/closedWith
Change:
const viewContainerModel = this.viewDescriptorService.getViewContainerModel(viewContainer); state.push({ id: compositeItem.id, name: viewContainerModel.title, pinned: compositeItem.pinned, order: compositeItem.order, visible: compositeItem.visible }); placeholders.push({ id: compositeItem.id, name: this.getCompositeActions(compositeItem.id).activityAction.label }); <ins> } else { state.push({ id: compositeItem.id, name: compositeItem.name, pinned: compositeItem.pinned, order: compositeItem.order, visible: compositeItem.visible }); </ins> } }

Discussion:
https://user- Steps to Reproduce: the panel, see the comments tab the comments tab, reload the window :bug: comments panel keeps re-appearing Version: 1.68.0-insider (Universal) Commit: Date: 2022-05-13T17:25:40.854Z Electron: 17.4.3 Chromium: 98.0.4758.141 16.13.0 V8: 9.8.177.13-electron.0 OS: Darwin arm64 21.4.0
does the file you have open have a comment in it? We show the comments view the first time you open a file that contains comments (once per reload).
no comments, regardless of what workspace I am in it always appears (even in an empty workspace) <img width="475" alt="CleanShot 2022-05-31 at 08 10 17 src="https://user-"
I'm not sure what's going on here, maybe you know. The Comments view is actually registered with , so I'm surprised it's even possible to hide the view. Is there anything else I need to do to prevent it from hiding or, even better, to respect the hide after reload?
The action takes is hiding the View Container so that's why it is hideable. There isn't anything that you can set on the View Container to prevent the hiding. I am also at a loss. can you "Export Settings as a Profile"? the profile should have the stored information about your views and view containers
hmm I don't see anything alarming in there, but I can now reproduce it ... but I don't get it in an empty workspace
is there any logging that can be in views to help narrow this down? I don't think there's anything else I can do from comments.
after lots of debugging, I think I have a fairly simple fix in the PR above.
Change:
if (typeof minimum === 'number') { r = Math.max(minimum, r); } <ins> if (typeof maximum === 'number') { r = Math.min(maximum, r); } </ins> return r; } }  No newline at end of file

Discussion:
Testing Steps to Reproduce: the integrated terminal trying to set: , accidentally enter Bug ! Terminal contents start leaking outside of the panel. I also think we should set a maximum terminal font size just as we do for the minimum terminal font size
As a bit of polish the json schema could also include these ranges so a warning will appear in the settings panel.
Hi, I'd like to take this Issue up and make a PR. Thanks in advance PS: I'm new to Open Source and would like your support.
great! There's already a minimum value (), we just need to find a good maximum and add it there. Right now I'm thinking somewhere between 20 and 30 should be the default as that's getting into the ridiculously large territory. There are instructions for building the project here
Hi I've created a and would like your comments. Thanks for the great support.
Should it match the editor max font size? The editor has some max, not sure what it is, but I can now make the text much larger in the editor than the terminal.
Change:
return !this.debuggerWhen || this.contextKeyService.contextMatchesRules(this.debuggerWhen); } <del> get uiMessages() { return this.debuggerContribution.uiMessages; </del> <ins> get strings() { return this.debuggerContribution.strings ?? (this.debuggerContribution as any).uiMessages; </ins> } interestedInLanguage(languageId: string): boolean {

Discussion:
Continuing This is just a flag in Example: In this case, vscode is in control of when and where to show this message.
Is a good name? Drop the ?
If I see some "messages" related to a debugger, I first think of something like DAP messages. I would only use this property to drive some feature in the UI and it feels good to tie it to that. But if feels awkward I don't have a strong opinion.
Change:
let regex: RegExp | null = null; <del> if (isFalsyOrWhitespace(serializedValue)) { console.warn('missing regexp-value for =~-expression'); } else { </del> <ins> if (!isFalsyOrWhitespace(serializedValue)) { </ins> const start = serializedValue.indexOf('/'); const end = serializedValue.lastIndexOf('/'); <del> if (start === end || start < 0 /* || to < 0 */) { console.warn(`bad regexp-value '${serializedValue}', missing /-enclosure`); } else { </del> <ins> if (start !== end && start >= 0) { </ins> const value = serializedValue.slice(start + 1, end); const caseIgnoreFlag = serializedValue[end + 1] === 'i' ? 'i' : ''; try { regex = new RegExp(value, caseIgnoreFlag); <del> } catch (e) { console.warn(`bad regexp-value '${serializedValue}', parse error: ${e}`); } </del> <ins> } catch (_e) { } </ins> } } <ins> if (regex === null) { throw this._errExpectedButGot('REGEX', expr); } </ins> return ContextKeyRegexExpr.create(key, regex); }

Discussion:
Looks like has some statements. This is fair for local development but shouldn't be shipping in the product.
Change:
// If TS returns an explicit replacement range, we should use it for both types of completion return { <del> inserting: replaceRange, </del> <ins> inserting: new vscode.Range(replaceRange.start, this.position), </ins> replacing: replaceRange, }; }

Discussion:
Accepting suggestion/completion with is removing completion suffix. Given is cursor Typing in and accepting completion results in in 1.85.1, now it results in ( is removed). Version: 1.86.0-insider Commit: Date: 2024-01-09T10:06:54.001Z Electron: 27.2.1 ElectronBuildId: Chromium: 118.0.5993.159 18.17.1 V8: 11.8.172.18-electron.0 OS: Darwin arm64 23.2.0 TS 5.3.2
Unsure if this is a bug and new/changed (the 2nd video has a different code sample) but debugging shows that insert and replace ranges are about replacing the current word. <img width="1352" alt="Screenshot 2024-01-10 at 15 43 24" src=""
Reproed with the same code both in stable & insiders: /
Copyright (c) Microsoft Corporation and GitHub. All rights reserved.
-------------/ const example = { foo: 1, bar: 2, jar: 3, }; for (const { foo, |bar } of [example]) { (foo, bar); }
isn't this just a editor setting? completion.replace vs insert or something
completion.replace vs insert or something I copied my current settings in insiders to stable and still behavior was different between them.
This happens on an empty profile, and does not require actually accepting the suggestion (see my linked issue)
Change:
} return entries; }); <del> return this.quickInputService.pick(pickEntries, { placeHolder, matchOnDescription: true, onDidTriggerItemButton: context => { let task = context.item.task; this.quickInputService.cancel(); if (ContributedTask.is(task)) { this.customize(task, undefined, true); } else if (CustomTask.is(task)) { this.openConfig(task); } } }, cancellationToken).then(async (selection) => { if (cancellationToken.isCancellationRequested) { // canceled when there's only one task const task = (await pickEntries)[0]; if ((<any>task).task) { selection = <TaskQuickPickEntry>task; } } if (!selection) { return; </del> <ins> const picker: IQuickPick<TaskQuickPickEntry> = this.quickInputService.createQuickPick(); picker.placeholder = placeHolder; picker.matchOnDescription = true; picker.ignoreFocusOut = true; picker.onDidTriggerItemButton(context => { let task = context.item.task; this.quickInputService.cancel(); if (ContributedTask.is(task)) { this.customize(task, undefined, true); } else if (CustomTask.is(task)) { this.openConfig(task); } }); picker.busy = true; const progressManager = this._providerProgressManager; const progressTimeout = setTimeout(() => { if (progressManager) { progressManager.showProgress = (stillProviding) => { let message = undefined; if (stillProviding.length > 0) { message = nls.localize('pickProgressManager.description', 'Getting tasks from extensions. {0} extension(s) remaining: {1}', stillProviding.length, stillProviding.join(', ')); } picker.description = message; }; progressManager.addOnDoneListener(() => { picker.focusOnInput(); picker.customButton = false; }); if (!progressManager.isDone) { picker.customLabel = nls.localize('taskQuickPick.cancel', "Cancel Remaining Extensions"); picker.onDidCustom(() => { this._providerProgressManager?.cancel(); }); picker.customButton = true; } </ins> } <del> return selection; </del> <ins> }, 1000); pickEntries.then(entries => { clearTimeout(progressTimeout); progressManager?.dispose(); picker.busy = false; picker.items = entries; }); picker.show(); return new Promise<TaskQuickPickEntry | undefined | null>(resolve => { this._register(picker.onDidAccept(async () => { let selection = picker.selectedItems ? picker.selectedItems[0] : undefined; if (cancellationToken.isCancellationRequested) { // canceled when there's only one task const task = (await pickEntries)[0]; if ((<any>task).task) { selection = <TaskQuickPickEntry>task; } } picker.dispose(); if (!selection) { resolve(); } resolve(selection); })); </ins> }); }

Discussion:
We have a temporary fix for the release for but we need to do something better long term.
while working on quick access for tasks I noticed that we seem to be having 2 pickers for the same thing (?): Task quick open: ! "Run Task" picker: ! Is that intentional? Should the one be merged into the other?
Yes, they do not share much code :( as part of improving the quick pick I will converge them.
sounds good, please only change  and leave the other one because I plan to delete those old ones soon.
Change:
"tas-client-umd": "0.1.5", "vscode-oniguruma": "1.6.1", "vscode-textmate": "7.0.1", <del> "xterm": "4.19.0-beta.47", </del> <ins> "xterm": "4.19.0-beta.49", </ins> "xterm-addon-search": "0.9.0-beta.37", "xterm-addon-unicode11": "0.4.0-beta.3", "xterm-addon-webgl": "0.12.0-beta.36"

Discussion:
Theme pictured is Sapphire. ! Possibly related to Code pointer
Blending colors in vscode yields rgba format, so we should add that support to !
issue
Repro for this is to set the following settings and try find in terminal:

Started seeing this yesterday: !
This seems to be related to my theme, probably same root cause as
Repro for this is to set the following settings and try find in terminal:
Change:
"scope": [ "entity.name.function", "support.function", <del> "support.constant.handlebars" </del> <ins> "support.constant.handlebars", "source.powershell variable.other.member" </ins> ], "settings": { "foreground": "#795E26"

Discussion:
One of the first things I noticed when switching from Sublime Text 3 to VSCode for PowerShell code is VSCode doesn't change the syntax highlighting color for methods. In Sublime Text 3 and PowerShell IDE, methods use a separate color. VSCode method color is the same color as variables. Below, both editors are using the same TextMate color scheme: Sublime Text 3: ! VSCode: ! I am hoping someone with more experience in VSCode might have a temporary workaround in until there's an official fix for this. Wishful thinking.. but something like: below: VSCode Version: 1.36.1 (user setup) OS Version: (Windows 10 64bit) Steps to Reproduce: Open PowerShell code that has PowerShell methods
You can use the "Developer: Inspect TM scope" to get the correct scope for your setting: <img width="388" alt="textmatescope" src="https://user-"You could also make your own theme that does colors the way you want.
We try to keep VS Code lean and we think the functionality you're asking for is great for a VS Code extension. Maybe you can already find one that suits you in the . Just in case, in a few simple steps you can get started . See also our guidelines. Happy Coding!
I'll fix it for the default themes.
Thank you for the tip to use "Developer: Inspect TM scope". This was extremely helpful.
Change:
{ "command": "github.copyVscodeDevLink", "title": "Copy vscode.dev Link" <del> }, { "command": "github.copyVscodeDevLinkFile", "title": "Copy vscode.dev Link" </del> <ins> }, { "command": "github.copyVscodeDevLinkFile", "title": "Copy vscode.dev Link" }, { "command": "github.openOnVscodeDev", "title": "Open on vscode.dev" } ], "continueEditSession": [ { "command": "github.openOnVscodeDev", "when": "github.hasGitHubRepo" </ins> } ], "menus": {

Discussion:
Testing Clone a git repository Open git repository in VS Code desktop Make a change to one or more files Invoke the command You are presented with an empty picker <img width="736" alt="image" src="https://user-"
Change:
}, ] ], <del> enabled: this.state.repositoryHasChanges && !this.state.isActionRunning </del> <ins> enabled: this.state.repositoryHasChanges && !this.state.isCommitInProgress </ins> }; }

Discussion:
Create a commit. While the commit runs, the sync button spins as if it's syncing . The one in the statusbar does not. !
Change:
} if (termInfo.config !== config) { <ins> if (cleanupOthersByName) { terminal.dispose(); } </ins> return null; }

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: --It's the second time it happened. First time was a fresh project so as I didn't investigate further. I thought I messed up somehow. Second time I lost some datasets and got close to lose some code. I found the culprit so I hope it won't to me a third time. <!-- Use Help Report Issue to prefill these. --Version: 1.48.2 (system setup) Electron: 7.3.2 V8: 7.8.279.23-electron.0 OS: WindowsNT x64 10.0. Steps to Reproduce: a debugging session, that open a fresh python debug console terminal debugging session terminate in python debug console terminal: pressing enter, so the command don't execute but sit there a new debugging session VS code will then reuse the 'python debug console terminal' previously open, with my un-executed command still sitting there. It do its business as usually and inputting: resulting the command: and Poof my whole project is gone <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No
We should clear any input before executing a command.
I agree, I'm quite suprise it was not the case already. Waiting for the fix. There is the possibility of setting the debug console to be spawn in the debug output tab. In ’’ ’"console": "internalConsole"’
I'm now cancelling the input with Control-C. This should work on all platforms and for all shells.
Perfect, thanks for your work
The fix for this causes Reverting for the release.
Same thing happens with the C++/CMake extension when pressing F5.
Change:
// Run and add a bunch of cells for (let i = 0; i < 10; i++) { <del> await addCellAndRun(`print ${i}`, notebookEditor.notebook); </del> <ins> await addCellAndRun(`print ${i}`, notebookEditor.notebook, i); </ins> } // Verify visible range has the last cell

Discussion:
I think we should understand why execution time seems to get slower and slower the more cells there are. Check out this video, it looks as if things get slower and slower: ! Originally posted by in
This test is running the "Run All" command, not the "run one cell" command...
Change:
const elementsToRender = []; while (currentEntry) { <ins> if (currentEntry.level === 7) { // level 7 represents a comment in python, which we don't want to render currentEntry = currentEntry.parent; continue; } </ins> const lineToRender = this.createStickyElement(currentEntry, partial); newMap.set(currentEntry, lineToRender); elementsToRender.unshift(lineToRender);

Discussion:
Tested on Windows 11. Yep, I also found it confusing as to when a sticky header would appear. Scrolling through in the testing repo, I had to scroll several times past before it would appear in the sticky scroll UI. I would have expected the header to be displayed right after it scrolled out the top of the view port. I also saw that headers higher in the hierarchy such as would disappear and reappear. Shouldn't the H2s remain as the H3s change? Originally posted by in
Somewhat related to visible range issues and multiple md cells with headers in a row.
Change:
this._contentWidget?.focus(); } <ins> public focusHoverPartWithIndex(index: number): void { this._contentWidget?.focusHoverPartWithIndex(index); } </ins> public scrollUp(): void { this._contentWidget?.scrollUp(); }

Discussion:
Testing on Linux Open a hover with multiple parts Tab to focus one of the hover parts Open accessible view/help Esc to close it Now the whole hover is focused, instead of the individual part I'd focused
Verified with GitLens's editor hover
Change:
} runEditorCommand(_accessor: ServicesAccessor, editor: ICodeEditor) { <del> const stickyScrollController = StickyScrollController.get(editor); if (stickyScrollController) { stickyScrollController.focus(); } </del> <ins> StickyScrollController.get(editor)?.focus(); </ins> } }

Discussion:
Testing around an open file in the editor with Stick Scroll enabled. Sticky Scroll Try to move focus out of Sticky Scroll. Tried pressing . Tried running "Focus Sticky Scroll" command a second time. Only way to get focus back to the editor is to select a level and press . I think should put you back into the editor
Change:
return this.installExtension(manifest, location, options); } <del> protected override async getCompatibleVersion(extension: IGalleryExtension, fetchCompatibleVersion: boolean, includePreRelease: boolean): Promise<IGalleryExtension | null> { const compatibleExtension = await super.getCompatibleVersion(extension, fetchCompatibleVersion, includePreRelease); </del> <ins> protected override async getCompatibleVersion(extension: IGalleryExtension, sameVersion: boolean, includePreRelease: boolean): Promise<IGalleryExtension | null> { const compatibleExtension = await super.getCompatibleVersion(extension, sameVersion, includePreRelease); </ins> if (compatibleExtension) { return compatibleExtension; }

Discussion:
Version: 1.65.0-insider (user setup) Commit: Date: 2022-02-11T05:19:13.554Z Electron: 16.0.8 Chromium: 96.0.4664.110 16.9.1 V8: 9.6.180.21-electron.0 OS: Windows_NT x64 10.0. Steps to Reproduce: an extension (such as the C/C++ extension) that uses platform-specific VSIX's in the marketplace. a Remote WSL workspace. Install that extension into the remote. the extension UI for the instance installed remotely, try to select "Install Another Version..." or "Install Another Prerelease Version..." This results in an error: ! (There is a similar error in latest non-insider version, 1.64.2)
Can you please enable the log level to trace and provide following logs while performing this action? Log (Shared) Log (Window) Log (Remote)
When this repro's, I see the following in (with and is set to . I do not see any such setting as ) : is similar: was not logged to for this repro.
You can use following command to set log level to trace
Log (Shared): Log (Windows): Log (Remote Server): Log (Remote Extension Host): Please re-open. Please don't block waiting for me to provide information. This bug is extremely easy to reproduce.
Please re-open.
To verify: Open a remote window (make sure local and remote are on different Operating Systems) Install C++ extension Install another version of C++ extension (right click on the extension and you will see this action) Make sure another version is installed.