jiebi/CodeConvo huggingface dataset:
Change:
return result; } <del> private async initializeConfiguration(): Promise<void> { </del> <ins> private async initializeConfiguration(trigger: boolean): Promise<void> { </ins> await this.defaultConfiguration.initialize(); const [, application, user] = await Promise.all([

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?: not applicable <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.79.0-insider OS Version: Windows 11 x64 Steps to Reproduce: an extension that implements a FileSystemProvider and serves a file containing a setting. a workspace that uses this FSP. that the setting has no effect until the workspace is reloaded. I will prepare a branch of fsprovider-sample to demonstrate the issue.
Repro steps: project () and VSIX (). an empty profile and install the VSIX into it. no folder or workspace open, run . Explorer find and open that though this specifies a font size of 24 it is displayed in the default font size. and observe that the font size is now correct. !
/assign I will submit a PR to fix this.
<!-- 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!
/verified
Change:
const templateData = renderer.renderTemplate(stickyElement); renderer.renderElement(nodeCopy, stickyNode.startIndex, templateData, stickyNode.height); <del> const mouseListenerDisposable = this.registerMouseListeners(stickyElement, stickyNode, currentWidgetHeight); </del> // Remove the element from the DOM when state is disposed const disposable = toDisposable(() => { renderer.disposeElement(nodeCopy, stickyNode.startIndex, templateData, stickyNode.height); renderer.disposeTemplate(templateData); <del> mouseListenerDisposable.dispose(); </del> stickyElement.remove(); }); return { element: stickyElement, disposable }; } <del> private registerMouseListeners(stickyElement: HTMLElement, stickyNode: StickyScrollNode<T, TFilterData>, currentWidgetHeight: number): IDisposable { return addDisposableListener(stickyElement, 'mouseup', (e: MouseEvent) => { const isRightClick = e.button === 2; if (isRightClick) { return; } if (isMonacoCustomToggle(e.target as HTMLElement) || isActionItem(e.target as HTMLElement)) { return; } // Timeout 0 ensures that the tree handles the click event first this._mouseUpTimerDisposable.value = disposableTimeout(() => { const elementTop = this.view.getElementTop(stickyNode.startIndex); // We can't rely on the current sticky node's position // because the node might be partially scrolled under the widget const previousStickyNodeBottom = currentWidgetHeight; this.view.scrollTop = elementTop - previousStickyNodeBottom; this.view.setFocus([stickyNode.startIndex]); this.view.setSelection([stickyNode.startIndex]); }, 0); }); } </del> private setVisible(visible: boolean): void { this._rootDomNode.style.display = visible ? 'block' : 'none'; } dispose(): void { <del> this._mouseUpTimerDisposable.dispose(); </del> this._previousState?.dispose(); this._rootDomNode.remove(); }

Discussion:
Testing Repro: a node in a tree that is fairly deep. a parent node. that there's a slight flicker. Consecutive collapse/expands don't have that, only the first. ]()
Change:
* * @param document Document being pasted into * @param ranges Range in the {@linkcode document} to paste into. <del> * @param dataTransfer The {@link DataTransfer data transfer} associated with the paste. This object is only valid for the duration of the paste operation. </del> <ins> * @param dataTransfer The {@link DataTransfer data transfer} associated with the paste. This object is only * valid for the duration of the paste operation. </ins> * @param context Additional context for the paste. * @param token A cancellation token. * <del> * @return Set of potential {@link DocumentPasteEdit edits} that can apply the paste. </del> <ins> * @return Set of potential {@link DocumentPasteEdit edits} that can apply the paste. Only a single returned * {@linkcode DocumentPasteEdit} is applied at a time. If multiple edits are returned from all providers, then * the first is automatically applied and a widget is shown that lets the user switch to the other edits. </ins> */ provideDocumentPasteEdits?(document: TextDocument, ranges: readonly Range[], dataTransfer: DataTransfer, context: DocumentPasteEditContext, token: CancellationToken): ProviderResult<T[]>;

Discussion:
Testing I cloned the vscode-extension-samples repository and tried to return two edits instead of one. Only the first one appears to take effect. I am wondering if this is expected? I guess I was expecting both edits to be applied since it is possible to return an array from the method.
The thought occurred to me that the edits would appear in the paste widget, and I verified this was indeed the case. I guess, by reading the TS docs I didn't catch on that this would happen
Aside from the above comment, on reading the JS Docs, the following thoughts came to mind: For the class , I was looking at the method . Consider the following code: Do the kinds and intersect here? Or is the intersection evaluated per part, so that the above do not intersect but the below kinds do? I noticed the refers to file dropping in its JS Doc. I was wondering if this is intended? The JS Doc above the field says . The same line more-or-less can be found under .
This is expected. Each is one potential way of applying the paste. We only apply one at a time and the first one is auto applied , the kinds are scoped hierarchies of parts. When we talk about intersection, only the second example would return true. The first one would not as the two top level parts and are not the same. I'll add an example in the docs to make this more clear it applies but for pasting files. I'll change the word
Change:
} showTerminalAccessibilityHelp(): void { <del> this.activeInstance?.showAccessibilityHelp(); </del> <ins> this.getActiveOrCreateInstance().then((instance) => { this._terminalGroupService.showPanel(); instance.showAccessibilityHelp(); }); </ins> } requestStartExtensionTerminal(proxy: ITerminalProcessExtHostProxy, cols: number, rows: number): Promise<ITerminalLaunchError | undefined> {

Discussion:
Testing When invoked from the command palette, should this either and show a terminal and show the menu be shown in the command palette unless a terminal is already open
It shouldn't be shown unless a terminal is open and focused
The first option might be better? We can just run get active or create like a bunch of other terminal commands.
My argument against doing so is the command palette is already overloaded and you have to know what to search for to get it to show up, which means it's unlikely 1) to be discovered or 2) to increase discoverability.
my argument is if you search for "accessibility", the results are quite small and this is a valuable addition to discover terminal accessibilty features: <img width="304" alt="image" src="https://user-"Up to you, let's do this in Feb though.
Should Show Terminal Accessibility Help be showing the dialog inside a terminal that's running a task? !
Good question, but yes I think we should show it in whatever the active instance is.
Change:
anchorAxisAlignment: delegate.anchorAxisAlignment, render: (container) => { <ins> this.lastContainer = container; </ins> const className = delegate.getMenuClassName ? delegate.getMenuClassName() : ''; if (className) {

Discussion:
click to open context menu in text editor +P to open quick open :bug: both context menu and quick open are dismissed !
re: context menu
This is not a regression so assigning to december
I'm going to pass to you for your take. Here's what I found out. When we show the command palette that causes the editor context menu to trigger the hide: This hide, focuses the editor... but in doing so, that causes the Quick Pick's didBlur to hide: which will hide the quick pick if is set to which is the default. This behavior with context menus seems to repro: Always in context menus of the editor Only with custom menus (not native menus) in the rest of the product (tree views, Account/Gear menu, etc)
Two actions here: needs to be removed or handled better (passing that to or menus should follow the logic: if ESC/selection, focus what was previously focused. If dismissed due to focus lost, don't restore focus (this goes to
my suspicion is that the editor contribution is old and unnecessary as the behavior is built-in to the menu widget. Removing it, we can centralize the logic to the menu widget.
re-opening as we still have some work to do on the custom menu side
Change:
test('Aggressive inline completions when typing within line #146948', async function () { <del> const completions: SuggestInlineCompletions = insta.createInstance(SuggestInlineCompletions, (id: EditorOption) => editor.getOption(id)); </del> <ins> const completions: SuggestInlineCompletions = insta.createInstance(SuggestInlineCompletions, (id) => editor.getOption(id)); </ins> { // (1,3), end of word -> suggestions

Discussion:
Due to an oversight, does not enforce arguments or its return type. Fixing this exposes around 80 typings errors in our codebase that should be addressed To fix this issue in your code: , comment out the . (Do not check in this change. I will check in the change to the signature once all error have been fixed) look at the file assigned to you and fix the type error (you may need to restart the compile since we are changing such a core type) [x] — [x] — [x] — [x] — [x] — [x] — [x] — [ ] — [ ] — [ ] — [ ] — [x] — [x] — [x] — [x] — [x] — [x] — [ ] — [x] —
Change:
// https://github.com/microsoft/vscode/issues/3025 const excludeOutOfWorkspaceEvents = typeof globPattern === 'string'; <ins> // 1.84.x introduces new proposed API for a watcher to set exclude // rules. When this is provided, we turn the file watcher into correlation // mode and ignore any event that does not match the correlation ID. const excludeUncorrelatedEvents = Array.isArray(options?.excludes) && options.excludes.length > 0; </ins> const subscription = dispatcher(events => { if (typeof events.session === 'number' && events.session !== this.session) { <del> return; // ignore events from other file watchers </del> <ins> return; // ignore events from other file watchers that are in correlation mode } if (excludeUncorrelatedEvents && typeof events.session === 'undefined') { return; // ignore events from other non-correlating file watcher when we are in correlation mode </ins> } if (!options?.ignoreCreateEvents) {

Discussion:
Testing Extension Event Log
I actually wasn't sure if the glob pattern was supposed to be excluding this file in the default watcher excludes but even specifying the glob directly like this doesn't exclude:
the default exclude is actually so that we can still detect changes to top level folder. So your first observation is actually expected. It would only ignore for deeper folder structures within .
Your second case is a nice find though: you provide an explicit exclude list and the events that you see are actually from the default workspace file watcher. should address that.
Change:
/** * The icon for this task in the terminal tabs list */ <del> icon?: { id: string; color?: string }; </del> <ins> icon?: { id?: string; color?: string }; </ins> } export enum RunOnOptions {

Discussion:
Testing I the following to the "Core - Build" task in this repo: The color shows in the "Run Task" quick pick, but not in the terminal tabs (I tried reloading, but still no color). !
the color will only take effect the next time you run the task - don't think it's worth listening to the config and updating. we don't do that for existing terminals either when an icon or color is set for their profile <img width="1291" alt="Screen Shot 2022-06-28 at 12 06 04 PM" src="https://user-"
Alex mentioned , I actually reproduced the icon and color not applying when testing also
I'm guessing it's just on tasks run via ? It works when running Core - Build explicitly but not ctrl+shift+b: !
should work for dependsOn tasks
works w ctrl+shift+b for other default build tasks () https://user-
works w ctrl+shift+b and the VS Code build task for me https://user-
can you pls send me the exact task config this isn't working for?
it's was just what was shown in the screenshot, the small change to . Might be related to Windows somehow then if you don't see it?
not sure why I can't reproduce it, but could be fixed by
I can still repro this in the latest insiders.
yes so can on Windows. we're going to debug
are there any task load messages in the output channel?
or any way the build task on windows is handled specially?
If there's an issue reading tasks from then an error should be logged to the tasks output channel, and I don't have any. The Run Build Task command shouldn't be handled any differently here, and I confirmed that this isn't build specific by making this keybinding:
to verify: set an icon for a dependency task
If I just set the icon color it now changes the icon away from the tools icon (its still the tools icon in the task quick pick): !
Change:
} else if (followup.kind === 'command') { button.element.classList.add('interactive-followup-command'); } <ins> button.element.ariaLabel = localize('followUpAriaLabel', "Follow up question: {0}", followup.title); </ins> const label = followup.kind === 'reply' ? '$(sparkle) ' + (followup.title || followup.message) : followup.title;

Discussion:
Users in the fable study weren't sure if the question was asking them something (given it's a chat experience) or if it was actionable. Could we use a better icon to indicate this? Should we add static text: ? We should also add to the aria label.
Is this just something where you might not be sure what it is, then you click it, and you instantly find out, and then it's no longer a question? That's how UX has to work sometimes. Not opposed to an aria label. Sounds like it's about screenreader and also sighted users though (since you mentioned an icon) If we changed the icon, something with the "submit" button might help? Or putting the question in quotes?
The copilot sparkle icon is redundant IMO, since this question exists within the copilot chat panel. Yes, a submit / run icon would be better I think to indicate what will happen. The current styling makes it look like a link, so a user might think clicking on that could do any number of things.
!
I don't really like that one, sorry, I don't think "run" is the right meaning
I don't love it either. Other ideas?
Maybe submit? But otherwise I think "sparkle" makes sense for "send this to the magic AI"
We're within the copilot chat panel already - so not sure the sparkle is necessary.
It's just blue text that does something very different than all the other blue text, so I think it needs something to differentiate it, and I think the sparkle works as well as anything
It differentiates it but doesn't give any indication of what will happen. That's what users have reported.
Well I don't have any other ideas
any ideas for a better icon here?
I think we can mention follow ups in the accessibility help dialog.
To verify: in the chat input box, and make sure you it contains "In the input box, navigate to the suggested follow up question (Shift+Tab) and press Enter to run it." with a screen reader on, focus the input box. to the suggested question and verify that the aria label indicates it's a suggested question.
Change:
import { CancellationToken } from 'vs/base/common/cancellation'; import { attachStylerCallback } from 'vs/platform/theme/common/styler'; import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; <del> import { InputBox, MessageType } from 'vs/base/browser/ui/inputbox/inputBox'; </del> import { Emitter, Event } from 'vs/base/common/event'; import { MenuRegistry, MenuId, isIMenuItem } from 'vs/platform/actions/common/actions'; import { IListAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget';

Discussion:
Follow up from I have a completion item provider for context keys. For the keybindings UI this isn't working yet and what's needed is the simple editor widget as the input when authoring when-clauses a similar completion item provider (using internal API) that uses the same data source ()
Started using (Code Editor) for when input and I am seeing following issues with the code editor widget is showing far away from the editor. <img width="858" alt="image" src="https://user-"listen on key and accept the when text. This is causing problem when I am accepting an option from suggest list using Enter. Is there a way to prevent this to happen? / Your expertise would be very helpful here. You can find changes here -
Pretty sure that you need to use the keybindings service instead, e.g don't listen to keydown/up event directly ops... that seems very wrong, both widgets are normal content/overlay widgets
Right. I am using keybindings to accept/reject when expression changes. And it fixed the second issue. Thanks. Issue with suggest widget is only pending.
Investigated the issue with overflow content widget misplacement and here is what I found: This seems to be a bug with editor overflowing content widget value set to . According to the docs, when position value is set to fixed then the position of the element will be relative to its containing block, which is In keybindings editor, the table widget (extending list widget) has the ancestor rows element with and css property set. Hence overflowing content widgets are drawn relative to the table rows element. This can be confirmed by disabling the on the table widget that does not set above css properties. This means, embedding a code editor widget inside any node that has these css properties set will break the position of the overflowing content widgets CC / for editor related. CC for table/list related. Can you please let me know what is the right way to proceed here. Does it makes sense to disable for keybindings table? Or this shall has to be fixed in editor?
It seems the trick is to use option in the code editor. But it seems to work only for content widgets but not for overlay widgets - like suggest element details. Using the same for overlay widgets fixes it.

For now disabled table transformations and created a separate PR to fix it in the editor -
Verify that while editing when column in keyboard shortcuts editor shows the list of context key suggestions.
I see this is implemented but it's also mostly broken because it doesn't work with prefixes
Change:
font-weight: bold; } <del> .monaco-editor .zone-widget .zone-widget-container.exception-widget .message { </del> <ins> .monaco-editor .zone-widget .zone-widget-container.exception-widget .description, .monaco-editor .zone-widget .zone-widget-container.exception-widget .stack-trace { </ins> font-family: Monaco, Menlo, Consolas, "Droid Sans Mono", "Inconsolata", "Courier New", monospace, "Droid Sans Fallback"; <ins> } .monaco-editor .zone-widget .zone-widget-container.exception-widget .stack-trace { </ins> margin-top: 0.5em; }

Discussion:
<!-- Do you have a question? Please ask it on --- Tests: VSCode Version: 1.11.0-insider OS Version: Windows Steps to Reproduce: debug as node app. Observe: exception widget is not showing. It does if I throw new Error ('Hello World')
Change:
]; } <del> private displayCurrentPath(inputBox: InputBox, initialRelPath: string, fileKind: FileKind, projectFolderName: string = '') { </del> <ins> private displayCurrentPath(inputBox: InputBox, initialRelPath: string, projectFolderName: string = '', actionID: string) { </ins> if (inputBox.validate()) { const value = inputBox.value; <del> if (value && value.search(/[/]/) !== -1) {	// only show if there's a slash </del> <ins> if (value && /.[/]./.test(value)) {	// only show if there's at least one slash enclosed in the string </ins> let displayPath = path.normalize(path.join(projectFolderName, initialRelPath, value)); displayPath = rtrim(displayPath, paths.nativeSep); <del> const fileType: string = FileKind[fileKind].toLowerCase(); </del> <ins> const indexLastSlash: number = displayPath.lastIndexOf(paths.nativeSep); const name: string = displayPath.substring(indexLastSlash + 1); const leadingPathPart: string = displayPath.substring(0, indexLastSlash); let msg: string; switch (actionID) { case 'workbench.files.action.createFileFromExplorer': msg = nls.localize('createFileFromExplorerInfoMessage', "Create file **{0}** in **{1}**", name, leadingPathPart); break; case 'workbench.files.action.renameFile': msg = nls.localize('renameFileFromExplorerInfoMessage', "Move and rename to **{0}**", displayPath); break; case 'workbench.files.action.createFolderFromExplorer':	// fallthrough default: msg = nls.localize('createFolderFromExplorerInfoMessage', "Create folder **{0}** in **{1}**", name, leadingPathPart); } </ins> inputBox.showMessage({ type: MessageType.INFO, <del> content: nls.localize('constructedPath', "Create {0} in **{1}**", fileType, displayPath), </del> <ins> content: msg, </ins> formatContent: true }); }

Discussion:
Testing Have a file in a folder : Like this: ! Right click and rename Type Observe the message: ! That message is wrong, because pressing Enter will create a folder and then move file into it.
I think the message can be improved but the behavior is by design
Yeah, that's what I'm trying to say, that the help message is wrong

Testing Have a folder hierarchy Create a new file and type The help message reads: Pressing Enter will create a file in The help message hints that would be a folder, but will be a file. I suggest something like: in this case ! !