jiebi/CodeConvo huggingface dataset:
Change:
// after tests have run, we shutdown the host this._gracefulExit(error || (typeof failures === 'number' && failures > 0) ? 1 /* ERROR */ : 0 /* OK */); <del> }); </del> <ins> }; const runResult = testRunner!.run(extensionTestsPath, oldTestRunnerCallback); // Using the new API `run(): Promise<void>` if (runResult && runResult.then) { runResult .then(() => { c(); this._gracefulExit(0); }) .catch((err) => { e(err); this._gracefulExit(1); }); } </ins> }); }

Discussion:
Testing create a TS extension as described in and look at 'runTests' is called with testRunnerPath. The hover of says: ts import as testRunner from 'vscode/lib/testrunner'; module.exports = testRunner; Looking at I don't see a testRunner exported.
Ok, thanks. But now my question is about What is the ? How does the user define it? Is it necessary? Why do we use the style. Our APIs typically use Promises...
So the testRunner is the module name passed to . Did we change the contract? Before it had to export a now it has to export a ?
We didn't. That's what the old test runner does: We use the old API since we don't want to break backwards compat. I'd suggest we come up with a better API (see my comment here: ), but it has to be a different name, such as . Here's the relevant code:
I don't really like us having to have this API, but for people who are still importing from , if they don't migrate we don't want to break them.
Actually, for people who have been importing from , they haven't used the signature directly. So if we do add a better signature with a different name such as , we might not need to expose .
The change is to add a new function signature for : When the function returns a promise, wait for the promise, otherwise use the old logic.
Change:
"category": "%command.category%", "title": "%command.accept.all-current%", "original": "Accept All Current", <del> "command": "merge-conflict.accept.all-current" </del> <ins> "command": "merge-conflict.accept.all-current", "enablement": "!isMergeEditor" </ins> }, { "category": "%command.category%", "title": "%command.accept.all-incoming%", "original": "Accept All Incoming", <del> "command": "merge-conflict.accept.all-incoming" </del> <ins> "command": "merge-conflict.accept.all-incoming", "enablement": "!isMergeEditor" </ins> }, { "category": "%command.category%", "title": "%command.accept.all-both%", "original": "Accept All Both", <del> "command": "merge-conflict.accept.all-both" </del> <ins> "command": "merge-conflict.accept.all-both", "enablement": "!isMergeEditor" </ins> }, { "category": "%command.category%", "title": "%command.accept.current%", "original": "Accept Current", <del> "command": "merge-conflict.accept.current" </del> <ins> "command": "merge-conflict.accept.current", "enablement": "!isMergeEditor" </ins> }, { "category": "%command.category%", "title": "%command.accept.incoming%", "original": "Accept Incoming", <del> "command": "merge-conflict.accept.incoming" </del> <ins> "command": "merge-conflict.accept.incoming", "enablement": "!isMergeEditor" </ins> }, { "category": "%command.category%", "title": "%command.accept.selection%", "original": "Accept Selection", <del> "command": "merge-conflict.accept.selection" </del> <ins> "command": "merge-conflict.accept.selection", "enablement": "!isMergeEditor" </ins> }, { "category": "%command.category%", "title": "%command.accept.both%", "original": "Accept Both", <del> "command": "merge-conflict.accept.both" </del> <ins> "command": "merge-conflict.accept.both", "enablement": "!isMergeEditor" </ins> }, { "category": "%command.category%",

Discussion:
This is quite confusing: ! FYI
I believe we can't unify but the "old" merge commands should be disabled for the merge editor
does that mean we can fully hide the commands from the command palette when the merge editor is opened? if so
Change:
} stopExtensionHost(): void { } <ins> canAddExtension(): boolean { return false; } canRemoveExtension(): boolean { return false; } </ins> } suite('CommandService', function () {

Discussion:
Testing install eamodio.remotehub restart code and open from console with in the explorer, note that the title shows install the . It contains only a contribution, which is a dynamic contribution point Note that you are asked to reload: There should not be such a prompt. Interestingly the explorer label has already changed to , that means the contribution has received a delta
Change:
this.usedDebugTypes.add(s.configuration.type); })); <del> this.updateTaskLabels(); </del> <ins> updateTaskScheduler.schedule(); </ins> } private registerListeners(): void {

Discussion:
a repo in :bug: see this !
This is expected if the repo that you open has tasks that run on . Could you pls provide me with a repo for which this happens that doesn't have those?
seeing this dialog when I just open a folder, so wondering if something with workspace trust has changed recently. No changes with tasks recently could explain this. !
Doesn't repro in , repros in : Bad: Good:
found these task PRs in that time frame: ,
found it also happens in an empty window on desktop
Still seeing this in (and also RemoteHub on desktop) with the changes in !
This is coming from -here. perhaps we don't want to do that for the or only do that in trusted workspaces? !
Change:
import { ThemeIcon } from 'vs/base/common/themables'; import { Disposable } from 'vs/base/common/lifecycle'; import { clamp } from 'vs/base/common/numbers'; <del> import { autorun, autorunWithStore, derived, IObservable, ISettableObservable, ITransaction, observableValue, transaction } from 'vs/base/common/observable'; </del> <ins> import { autorun, derived, IObservable, ISettableObservable, ITransaction, observableValue, transaction } from 'vs/base/common/observable'; </ins> import { noBreakWhitespace } from 'vs/base/common/strings'; import { isDefined } from 'vs/base/common/types'; import { EditorExtensionsRegistry, IEditorContributionDescription } from 'vs/editor/browser/editorExtensions';

Discussion:
Testing Possibly a regression since I thought this was fixed before. <img width="239" alt="CleanShot 2022-09-27 at 12 01 10 src="https://user-"
Change:
*--------------------------------------------------------------------------------------------*/ import { Barrier } from 'vs/base/common/async'; <ins> import { toErrorMessage } from 'vs/base/common/errorMessage'; </ins> import { Emitter } from 'vs/base/common/event'; import { Disposable } from 'vs/base/common/lifecycle'; import { Schemas } from 'vs/base/common/network';

Discussion:
Testing Open a folder that has a image in an empty profile Install Luna Paint Extension Edit the image using Luna Paint and do not save Switch the profile to another profile Reason is empty <img width="573" alt="image" src=""
Good catch, there is an error thrown but I fail to remember the reason in that case. It should be: !
Change:
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; <ins> import { optional } from 'vs/platform/instantiation/common/instantiation'; </ins> import { IMarkerService } from 'vs/platform/markers/common/markers'; import { IEditorContribution } from 'vs/editor/common/editorCommon'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';

Discussion:
Editor contrib should not depend on file service, which is not available in browser.
Leave it to for merging, marking it as optional can avoid dependency on file server in standalone editor.
Change:
return Promise.all(promises); }); <ins> this._currentResolveCodeLensSymbolsPromise = resolvePromise; </ins> this._currentResolveCodeLensSymbolsPromise.then(() => { if (this._currentCodeLensModel) { // update the cached state with new resolved items this._codeLensCache.put(model, this._currentCodeLensModel); } this._oldCodeLensModels.clear(); // dispose old models once we have updated the UI with the current model <del> this._currentResolveCodeLensSymbolsPromise = undefined; </del> <ins> if (resolvePromise === this._currentResolveCodeLensSymbolsPromise) { this._currentResolveCodeLensSymbolsPromise = undefined; } </ins> }, err => { onUnexpectedError(err); // can also be cancellation! <del> this._currentResolveCodeLensSymbolsPromise = undefined; </del> <ins> if (resolvePromise === this._currentResolveCodeLensSymbolsPromise) { this._currentResolveCodeLensSymbolsPromise = undefined; } </ins> }); } }

Discussion:
Issue Type: <bBug</bTypeScript references code lenses the VS Code Code base, open the line: After type a comma then and re-type again Bug Suggestions take forever to come in Computing the references in TypeScript can potentially be expensive. This is caused because the method is not being as aggressively canceled when the document changes as I expect it to be (and as I believe it used to be) We can workaround this on the TS side but it seems like unexpected behavior /cc VS Code version: Code - OSS Dev 1.41.0 (Commit unknown, Date unknown) OS version: Darwin x64 18.7.0 <details<summarySystem Info</summary </details<!-- generated by issue reporter --
Adds a TS specific fix. Whenever the document changes, we now aggressively cancel all existing code lens requests against the TS server for that document
I believe nothing has changed here - at least not as far as my recent memory goes... Cancellation happens after 250ms which isn't aggressive but should also not be perceived as overly slow. Are those 250ms the delay you were seeing?
the delay is more like several seconds. It could be because we now provide references code lenses for object members, which adds a lot more references for TS to compute.
hm... but the delay/debounce on the by this... Does work happens on the extension host thread (not the tsserver-process) so that the cancellation doesn't come through until the event loop is free again?
Ok, so after more digging, I don't think is related to the debounce. Instead it seems some calls to are not ever canceled when the document changes. Here's the basic sequence I see on the extension host side: The issue is that the first batch of resolve requests (40-49) are not cancelled when they should be Resolving individual TS code lenses can take around a second in some cases
Nice find and kudos for digging through that code
Change:
super({ id: REVEAL_RUNNING_CELL, title: localize('revealRunningCell', "Go To Running Cell"), <ins> tooltip: localize('revealRunningCell', "Go To Running Cell"), shortTitle: localize('revealRunningCellShort', "Go To"), </ins> precondition: NOTEBOOK_HAS_RUNNING_CELL, menu: [ {

Discussion:
Testing Set to Resize the window so that it's just big enough for the labels to appear Run a cell Notice that the labels in the toolbar disappeared I don't know what the best solution for this would be, if there's any Since a new icon + label are to the toolbar when running a cell, this issue is bound to happen for window dimensions that straddle the line between labels being displayed and hidden (and that's not even considering translations). https://user-
Basically by design, a shorter label for "Go to Running Cell" would help. Would just "Go To" (with the full label in tooltip) and with the spinning icon be clear? Any other ideas to mitigate it
I think the spinning icon is a good enough indicator. Even if we address the issue with "Go To", it might happen in languages with a longer translated label.
Are you saying the button shouldn't have a label in the toolbar?
Oh no, I meant to say that the current solution is good enough.
Change:
return dragData.id !== targetCompositeId; } <del> // ... to another composite location const draggedViews = this.viewDescriptorService.getViewContainerModel(currentContainer)!.allViewDescriptors; // ... all views must be movable return !draggedViews.some(view => !view.canMoveView); </del> <ins> return true; </ins> } else { // Dragging an individual view

Discussion:
Support moving debug and extensions viewlets to other locations. At present these cannot be moved because the views contained in them are not movable. But that should not stop moving the complete view container. CC
Figured out that there are issues moving Remote container viewlet and it is because the views infrastructure re-create the ViewPaneContainer on move and wrongly assumes itself as a single-ton and adding the remote help ext point handler again which throws an error.
/duplicate
Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for . See also our . Happy Coding!
Change:
} }; } <ins> this.identityProvider = options.identityProvider; </ins> } setChildren(

Discussion:
Issue Type: <bBug</bTesting Repo settings editor to the section click to switch to instead of Bug TOC is collapsed. Any scrolling causes the TOC to be expanded at the correctly again VS Code version: Code - Insiders 1.31.0-insider (, 2019-01-29T06:13:57.866Z) OS version: Darwin x64 18.2.0 <details<summarySystem Info</summary </details<!-- generated by issue reporter --
Probably another case of The TOC tree sometimes maintains its selection/expansion state, sometimes not.
Hey should expansion state be preserved using the string identity? was for focus/selection, this is for expansion state.
Adding myself so I don't forget about this.
Let's merge this early June:
Thanks
Change:
this.toolbarContainer = toolbarRowElement.appendChild($('.dialog-toolbar')); } <ins> private getAriaLabel(): string { let typeLabel = nls.localize('dialogInfoMessage', 'Info'); switch (this.options.type) { case 'error': nls.localize('dialogErrorMessage', 'Error'); break; case 'warning': nls.localize('dialogWarningMessage', 'Warning'); break; case 'pending': nls.localize('dialogPendingMessage', 'In Progress'); break; case 'none': case 'info': case 'question': default: break; } return `${typeLabel}: ${this.message} ${this.options.detail || ''}`; } </ins> updateMessage(message: string): void { if (this.messageDetailElement) { this.messageDetailElement.innerText = message;

Discussion:
From Get a modal dialog in the web Notice how you can nicely focus any of the buttons, however the content of the dialog message is never read out, thus the dialog is not accessible. How this should work: Dialog should have an aria label and have focus It shuld use active descendent to let the screen reader know that focus is passed to one of the buttons
I am using the button widgets, are notifications not accessible either or are they doing something special?
Can you clarify what you mean exactly? Notifications announce themselves as ARIA alert when they open:
I misread the initial issue, I thought the bug was that the buttons were not read, not the actual message.
Thanks for fixing, let's add a bug label so we get this verified.
Change:
} }, 200); } <ins> private getSelectedPids() { return this.tree?.getSelection()?.map(e => { if (!e || !('pid' in e)) { return undefined; } return e.pid; }).filter(e => !!e) as number[]; } </ins> } function createCodiconStyleSheet() {

Discussion:
Depends on This is common for process explorers on Windows at least, might also make sense to bring this to Linux.
This should be doable now that has landed via
Change:
let guess = guessMimeTypes('/some/path/dot.monaco.xml'); assert.deepEqual(guess, ['text/other', 'text/plain']); }); <ins> test('Filename Suggestion - Suggest prefix only when there are no relevant extensions', () => { const id = 'plumbus0'; const mime = `text/${id}`; for (let extension of ['one', 'two']) { registerTextMime({ id, mime, extension }); } let suggested = suggestFilename('shleem', 'Untitled-1'); assert.equal(suggested, 'Untitled-1'); }); test('Filename Suggestion - Suggest prefix with first extension that begins with a dot', () => { const id = 'plumbus1'; const mime = `text/${id}`; for (let extension of ['plumbus', '.shleem', '.gazorpazorp']) { registerTextMime({ id, mime, extension }); } let suggested = suggestFilename('plumbus1', 'Untitled-1'); assert.equal(suggested, 'Untitled-1.shleem'); }); test('Filename Suggestion - Suggest first relevant extension when there are none that begin with a dot', () => { const id = 'plumbus2'; const mime = `text/${id}`; for (let extension of ['plumbus', 'shleem', 'gazorpazorp']) { registerTextMime({ id, mime, extension }); } let suggested = suggestFilename('plumbus2', 'Untitled-1'); assert.equal(suggested, 'plumbus'); }); test('Filename Suggestion - Should ignore user-configured associations', () => { registerTextMime({ id: 'plumbus3', mime: 'text/plumbus3', extension: 'plumbus', userConfigured: true }); registerTextMime({ id: 'plumbus3', mime: 'text/plumbus3', extension: '.shleem', userConfigured: true }); registerTextMime({ id: 'plumbus3', mime: 'text/plumbus3', extension: '.gazorpazorp', userConfigured: false }); let suggested = suggestFilename('plumbus3', 'Untitled-1'); assert.equal(suggested, 'Untitled-1.gazorpazorp'); registerTextMime({ id: 'plumbus4', mime: 'text/plumbus4', extension: 'plumbus', userConfigured: true }); registerTextMime({ id: 'plumbus4', mime: 'text/plumbus4', extension: '.shleem', userConfigured: true }); registerTextMime({ id: 'plumbus4', mime: 'text/plumbus4', extension: '.gazorpazorp', userConfigured: true }); suggested = suggestFilename('plumbus4', 'Untitled-1'); assert.equal(suggested, 'Untitled-1'); }); </ins> });

Discussion:
VSCode Version: 1.26.1 My extension provides syntax highlighting for the following files: <img width="147" alt="screen shot 2018-08-29 at 19 48 37" src="https://user-"When saving a new "Todo" file this will be the suggested name: <img width="368" alt="screen shot 2018-08-29 at 19 47 53" src="https://user-"Which doesn't really make sense, IMHO it should work like this: the first extension that starts with a dot, and suggest no extension starts with a dot pick the first one and suggest instead of
I would accept a reasonably small PR to fix this.
Change:
const bottomElement = Math.floor((this._disassembledInstructions.scrollTop + this._disassembledInstructions.renderHeight) / this.fontInfo.lineHeight); if (index > topElement && index < bottomElement) { // Inside the viewport, don't do anything here <del> return; </del> } else if (index <= topElement && index > topElement - 5) { // Not too far from top, review it at the top <del> return this._disassembledInstructions.reveal(index, 0); </del> <ins> this._disassembledInstructions.reveal(index, 0); </ins> } else if (index >= bottomElement && index < bottomElement + 5) { // Not too far from bottom, review it at the bottom <del> return this._disassembledInstructions.reveal(index, 1); </del> <ins> this._disassembledInstructions.reveal(index, 1); </ins> } else { // Far from the current viewport, reveal it <del> return this._disassembledInstructions.reveal(index, 0.5); </del> <ins> this._disassembledInstructions.reveal(index, 0.5); } if (focus) { this._disassembledInstructions.domFocus(); this._disassembledInstructions.setFocus([index]); </ins> } } else if (this._debugService.state === State.Stopped) { // Address is not provided or not in the table currently, clear the table // and reload if we are in the state where we can load disassembly. <del> return this.reloadDisassembly(address); </del> <ins> this.reloadDisassembly(address); </ins> } }

Discussion:
Testing fyi Single click on the instruction breakpoint properly reveals that instruction breakpoint - great. Double click should pass focus to the disassembly view. Just like we do for regular breakpoints
Will fix this.
Change:
} export const config = { <del> version: product.electronRepository ? '22.4.5' : util.getElectronVersion(), </del> <ins> version: product.electronRepository ? '22.4.7' : util.getElectronVersion(), </ins> productAppName: product.nameLong, companyName: 'Microsoft Corporation', copyright: 'Copyright (C) 2023 Microsoft. All rights reserved',

Discussion:
This works on web e.g. but does not work in desktop, either with a desktop git clone or with RemoteHub. The last time this happened it was due to a regression in the list of enabled codecs for our Electron builds.
Sorry for the breakage, the changes from has not been to Electron = 22 versions yet. It will be addressed in new builds this week.
Addressed in
Reopening because of
Change:
}); } <ins> async updateMarkdownPreviewSelectionState(cellId: any, isSelected: boolean) { if (this._disposed) { return; } this._sendMessageToWebview({ type: 'updateMarkdownPreviewSelectionState', id: cellId, isSelected }); } async updateMarkdownPreviewDecpratopms(cellId: any, isSelected: boolean) { if (this._disposed) { return; } this._sendMessageToWebview({ type: 'updateMarkdownPreviewSelectionState', id: cellId, isSelected }); } </ins> async initializeMarkdown(cells: Array<{ cellId: string, content: string }>) { await this._loaded;

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. --- VS Code Version: 1.54-Insiders OS Version: macOS open a GitHub issue notebook cmd+shift+o navigate down only code cells are highlighted https://user- <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes/No <!-- 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 direct to the extension publisher. The 'Help Report Issue' dialog can assist with this. --

Verifying in the vscode repo across some of the markdown headers ! If I put them into edit mode, then I see the background change on multiselect
I guess you don't see this issue when commenting out from the workspace setting?
Yeah, that's correct! I see everything get highlighted as expected when that setting is off
The root cause is that the for webview backed markdown cells has a height of zero. This element gets the correct background color during selection, but is not visible due to the height. We have zero height so that you can click through to the webview instead of to the cell I will prototype telling the cell in the webview if it is selected or not. Then we can add styling inside the webview to show selection state
Change:
} //#endregion <ins> //#region Deprecated support export enum DiagnosticTag { /** * Deprecated or obsolete code * * Can be used to style with strikeout or other "obsolete" styling. See: * https://github.com/microsoft/vscode/issues/50972 */ Deprecated = 2, } //#endregion </ins> }

Discussion:
Now that has been to the API, I would like to support the proposal from to use it for tagging deprecated items. I figure the associated styling might be a strikethrough as proposed in but you guys can work that out separately.
I would be interested in helping out here with this and perhaps even . Without a lot of context, I assume this issue is specifically to add a new enum member here: I could open a PR that adds a member, if that's the case. edit: Looks like more applicable location would be and then opening a similar PR to
Yes, is the way to go. Find your way along usages/implementations of
Thanks, I'll work on that today.
Leaving this open so that we discuss this in the API sync
API has been finalised.