Question:
It does fire for folder on move and delete. According to the reason lies here: The code goes directly to the file service. Since we correctly report move and delete for folders I think we should report create as well.
Some background: I want to adopt this in LSP but specing that this only works for move and delete of folders sounds a little silly. So I want to make sure that there is either a very compelling reason or there is some ack. that we will fix it in the future.
We currently have no related method such as for folders that the explorer could use here: If we support this, I guess one question in terms of API breakage is wether it is fine to let and emit events for folders too while they currently only emit for files. If we think this is fine, then I think this would be a relatively simple change to make.
I don't consider that breakage, it's a bug fix esp. given that move and delete already fire events for both
Verification: write an extension that registers to and and verify you see both events when you right click into the explorer and create a new folder.
Thanks for fixing!

//#region File operations <del> async create(resource: URI, contents?: VSBuffer | VSBufferReadable | VSBufferReadableStream, options?: { overwrite?: boolean }): Promise<IFileStatWithMetadata> { </del> <ins> create(resource: URI, contents?: VSBuffer | VSBufferReadable | VSBufferReadableStream, options?: { overwrite?: boolean }): Promise<IFileStatWithMetadata> { return this.doCreateFileOrFolder(resource, true, contents, options); } createFolder(resource: URI, options?: { overwrite?: boolean }): Promise<IFileStatWithMetadata> { return this.doCreateFileOrFolder(resource, false); } async doCreateFileOrFolder(resource: URI, isFile: boolean, contents?: VSBuffer | VSBufferReadable | VSBufferReadableStream, options?: { overwrite?: boolean }): Promise<IFileStatWithMetadata> { </ins> // validate create operation before starting <del> const validateCreate = await this.fileService.canCreateFile(resource, options); if (validateCreate instanceof Error) { throw validateCreate; </del> <ins> if (isFile) { const validateCreate = await this.fileService.canCreateFile(resource, options); if (validateCreate instanceof Error) { throw validateCreate; } </ins> } // file operation participant


Question:
It does fire for folder on move and delete. According to the reason lies here: The code goes directly to the file service. Since we correctly report move and delete for folders I think we should report create as well.
Some background: I want to adopt this in LSP but specing that this only works for move and delete of folders sounds a little silly. So I want to make sure that there is either a very compelling reason or there is some ack. that we will fix it in the future.
We currently have no related method such as for folders that the explorer could use here: If we support this, I guess one question in terms of API breakage is wether it is fine to let and emit events for folders too while they currently only emit for files. If we think this is fine, then I think this would be a relatively simple change to make.
I don't consider that breakage, it's a bug fix esp. given that move and delete already fire events for both
Verification: write an extension that registers to and and verify you see both events when you right click into the explorer and create a new folder.
Thanks for fixing!

// now actually create on disk let stat: IFileStatWithMetadata; try { <del> stat = await this.fileService.createFile(resource, contents, { overwrite: options?.overwrite }); </del> <ins> if (isFile) { stat = await this.fileService.createFile(resource, contents, { overwrite: options?.overwrite }); } else { stat = await this.fileService.createFolder(resource); } </ins> } catch (error) { // error event


Question:
It does fire for folder on move and delete. According to the reason lies here: The code goes directly to the file service. Since we correctly report move and delete for folders I think we should report create as well.
Some background: I want to adopt this in LSP but specing that this only works for move and delete of folders sounds a little silly. So I want to make sure that there is either a very compelling reason or there is some ack. that we will fix it in the future.
We currently have no related method such as for folders that the explorer could use here: If we support this, I guess one question in terms of API breakage is wether it is fine to let and emit events for folders too while they currently only emit for files. If we think this is fine, then I think this would be a relatively simple change to make.
I don't consider that breakage, it's a bug fix esp. given that move and delete already fire events for both
Verification: write an extension that registers to and and verify you see both events when you right click into the explorer and create a new folder.
Thanks for fixing!

model1.dispose(); }); <ins> test('createFolder', async function () { let eventCounter = 0; let correlationId: number | undefined = undefined; const resource = toResource.call(this, '/path/folder'); const participant = accessor.workingCopyFileService.addFileOperationParticipant({ participate: async (files, operation) => { assert.equal(files.length, 1); const file = files[0]; assert.equal(file.target.toString(), resource.toString()); assert.equal(operation, FileOperation.CREATE); eventCounter++; } }); const listener1 = accessor.workingCopyFileService.onWillRunWorkingCopyFileOperation(e => { assert.equal(e.files.length, 1); const file = e.files[0]; assert.equal(file.target.toString(), resource.toString()); assert.equal(e.operation, FileOperation.CREATE); correlationId = e.correlationId; eventCounter++; }); const listener2 = accessor.workingCopyFileService.onDidRunWorkingCopyFileOperation(e => { assert.equal(e.files.length, 1); const file = e.files[0]; assert.equal(file.target.toString(), resource.toString()); assert.equal(e.operation, FileOperation.CREATE); assert.equal(e.correlationId, correlationId); eventCounter++; }); await accessor.workingCopyFileService.createFolder(resource); assert.equal(eventCounter, 3); participant.dispose(); listener1.dispose(); listener2.dispose(); }); </ins> async function testEventsMoveOrCopy(files: { source: URI, target: URI }[], move?: boolean): Promise<number> { let eventCounter = 0;


Question:
It does fire for folder on move and delete. According to the reason lies here: The code goes directly to the file service. Since we correctly report move and delete for folders I think we should report create as well.
Some background: I want to adopt this in LSP but specing that this only works for move and delete of folders sounds a little silly. So I want to make sure that there is either a very compelling reason or there is some ack. that we will fix it in the future.
We currently have no related method such as for folders that the explorer could use here: If we support this, I guess one question in terms of API breakage is wether it is fine to let and emit events for folders too while they currently only emit for files. If we think this is fine, then I think this would be a relatively simple change to make.
I don't consider that breakage, it's a bug fix esp. given that move and delete already fire events for both
Verification: write an extension that registers to and and verify you see both events when you right click into the explorer and create a new folder.
Thanks for fixing!

move(_source: URI, _target: URI, _overwrite?: boolean): Promise<IFileStatWithMetadata> { return Promise.resolve(null!); } copy(_source: URI, _target: URI, _overwrite?: boolean): Promise<IFileStatWithMetadata> { return Promise.resolve(null!); } createFile(_resource: URI, _content?: VSBuffer | VSBufferReadable, _options?: ICreateFileOptions): Promise<IFileStatWithMetadata> { return Promise.resolve(null!); } <del> createFolder(_resource: URI): Promise<IFileStatWithMetadata> { throw new Error('not implemented'); } </del> <ins> createFolder(_resource: URI): Promise<IFileStatWithMetadata> { return Promise.resolve(null!); } </ins> onDidChangeFileSystemProviderRegistrations = Event.None;


Question:
It does fire for folder on move and delete. According to the reason lies here: The code goes directly to the file service. Since we correctly report move and delete for folders I think we should report create as well.
Some background: I want to adopt this in LSP but specing that this only works for move and delete of folders sounds a little silly. So I want to make sure that there is either a very compelling reason or there is some ack. that we will fix it in the future.
We currently have no related method such as for folders that the explorer could use here: If we support this, I guess one question in terms of API breakage is wether it is fine to let and emit events for folders too while they currently only emit for files. If we think this is fine, then I think this would be a relatively simple change to make.
I don't consider that breakage, it's a bug fix esp. given that move and delete already fire events for both
Verification: write an extension that registers to and and verify you see both events when you right click into the explorer and create a new folder.
Thanks for fixing!

getDirty(resource: URI): IWorkingCopy[] { return []; } create(resource: URI, contents?: VSBuffer | VSBufferReadable | VSBufferReadableStream, options?: { overwrite?: boolean | undefined; } | undefined): Promise<IFileStatWithMetadata> { throw new Error('Method not implemented.'); } <ins> createFolder(resource: URI): Promise<IFileStatWithMetadata> { throw new Error('Method not implemented.'); } </ins> move(files: { source: URI; target: URI; }[], options?: { overwrite?: boolean }): Promise<IFileStatWithMetadata[]> { throw new Error('Method not implemented.'); }


Question:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --This would prevent needing to convert the to a string only for it to be parsed back into a later on, and is friendlier to developers.
proposed or finalized?

* @param pattern A file glob pattern like `*.{ts,js}` that will be matched on file paths * relative to the base path. */ <del> constructor(base: WorkspaceFolder | string, pattern: string) </del> <ins> constructor(base: Uri | WorkspaceFolder | string, pattern: string) </ins> } /**


Question:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --This would prevent needing to convert the to a string only for it to be parsed back into a later on, and is friendlier to developers.
proposed or finalized?

pattern: string; <del> constructor(base: vscode.WorkspaceFolder | string, pattern: string) { </del> <ins> constructor(base: URI | vscode.WorkspaceFolder | string, pattern: string) { </ins> if (typeof base !== 'string') { <del> if (!base || !URI.isUri(base.uri)) { </del> <ins> if (!base || !URI.isUri(base) && !URI.isUri(base.uri)) { </ins> throw illegalArgument('base'); } }


Question:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --This would prevent needing to convert the to a string only for it to be parsed back into a later on, and is friendlier to developers.
proposed or finalized?

if (typeof base === 'string') { this.base = base; <ins> } else if (URI.isUri(base)) { this.baseFolder = base; this.base = base.fsPath; </ins> } else { this.baseFolder = base.uri; this.base = base.uri.fsPath;


Question:
Update: reproduces in web + desktop Steps to Reproduce: a Codespace until it is loaded various activity bar items that open menus (gear menu, accounts, main menu, home indicator) = somehow the accounts menu only opens for me after a delay, as if something was resolved when clicking? !
This still reproduces
does this still repro? maybe its imperceptible to me?
Yeah still seems slightly delayed to me, can we not check the code and see if a longer running promise prevents the menu from showing?
looks like we fetch session info every time, so this probably adds some delay. maybe this can be cached and updated separately
Yeah that seems like a reasonable ask since it goes to the extension host and back, today.
This issue has existed since 2 years! But only recently have I encountered this.

import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { createAndFillInActionBarActions } from 'vs/platform/actions/browser/menuEntryActionViewItem'; import { getCurrentAuthenticationSessionInfo } from 'vs/workbench/services/authentication/browser/authenticationService'; <del> import { AuthenticationSession, IAuthenticationService } from 'vs/workbench/services/authentication/common/authentication'; </del> <ins> import { AuthenticationSessionAccount, IAuthenticationService } from 'vs/workbench/services/authentication/common/authentication'; </ins> import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IProductService } from 'vs/platform/product/common/productService';


Question:
Update: reproduces in web + desktop Steps to Reproduce: a Codespace until it is loaded various activity bar items that open menus (gear menu, accounts, main menu, home indicator) = somehow the accounts menu only opens for me after a delay, as if something was resolved when clicking? !
This still reproduces
does this still repro? maybe its imperceptible to me?
Yeah still seems slightly delayed to me, can we not check the code and see if a longer running promise prevents the menu from showing?
looks like we fetch session info every time, so this probably adds some delay. maybe this can be cached and updated separately
Yeah that seems like a reasonable ask since it goes to the extension host and back, today.
This issue has existed since 2 years! But only recently have I encountered this.

import { ICredentialsService } from 'vs/platform/credentials/common/credentials'; import { IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile'; import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; <ins> import { ILogService } from 'vs/platform/log/common/log'; </ins> export class ViewContainerActivityAction extends ActivityAction {


Question:
Update: reproduces in web + desktop Steps to Reproduce: a Codespace until it is loaded various activity bar items that open menus (gear menu, accounts, main menu, home indicator) = somehow the accounts menu only opens for me after a delay, as if something was resolved when clicking? !
This still reproduces
does this still repro? maybe its imperceptible to me?
Yeah still seems slightly delayed to me, can we not check the code and see if a longer running promise prevents the menu from showing?
looks like we fetch session info every time, so this probably adds some delay. maybe this can be cached and updated separately
Yeah that seems like a reasonable ask since it goes to the extension host and back, today.
This issue has existed since 2 years! But only recently have I encountered this.

static readonly ACCOUNTS_VISIBILITY_PREFERENCE_KEY = 'workbench.activity.showAccounts'; <ins> private readonly groupedAccounts: Map<string, (AuthenticationSessionAccount & { canSignOut: boolean })[]> = new Map(); private readonly problematicProviders: Set<string> = new Set(); private initialized = false; private sessionFromEmbedder = getCurrentAuthenticationSessionInfo(this.credentialsService, this.productService); </ins> constructor( action: ActivityAction, contextMenuActionsProvider: () => IAction[],


Question:
Update: reproduces in web + desktop Steps to Reproduce: a Codespace until it is loaded various activity bar items that open menus (gear menu, accounts, main menu, home indicator) = somehow the accounts menu only opens for me after a delay, as if something was resolved when clicking? !
This still reproduces
does this still repro? maybe its imperceptible to me?
Yeah still seems slightly delayed to me, can we not check the code and see if a longer running promise prevents the menu from showing?
looks like we fetch session info every time, so this probably adds some delay. maybe this can be cached and updated separately
Yeah that seems like a reasonable ask since it goes to the extension host and back, today.
This issue has existed since 2 years! But only recently have I encountered this.

@IStorageService private readonly storageService: IStorageService, @IKeybindingService keybindingService: IKeybindingService, @ICredentialsService private readonly credentialsService: ICredentialsService, <ins> @ILogService private readonly logService: ILogService </ins> ) { super(MenuId.AccountsContext, action, contextMenuActionsProvider, true, colors, activityHoverOptions, themeService, hoverService, menuService, contextMenuService, contextKeyService, configurationService, environmentService, keybindingService); <ins> this.registerListeners(); this.initialize(); } private registerListeners(): void { this._register(this.authenticationService.onDidRegisterAuthenticationProvider(async (e) => { await this.addAccountsFromProvider(e.id); })); this._register(this.authenticationService.onDidUnregisterAuthenticationProvider((e) => { this.groupedAccounts.delete(e.id); this.problematicProviders.delete(e.id); })); this._register(this.authenticationService.onDidChangeSessions(async e => { const promises = []; for (const changed of e.event.changed) { promises.push(this.addOrUpdateAccount(e.providerId, changed.account)); } for (const added of e.event.added) { promises.push(this.addOrUpdateAccount(e.providerId, added.account)); } const result = await Promise.allSettled(promises); for (const r of result) { if (r.status === 'rejected') { this.logService.error(r.reason); } } for (const removed of e.event.removed) { this.removeAccount(e.providerId, removed.account); } })); } // This function exists to ensure that the accounts are added for auth providers that had already been registered // before the menu was created. private async initialize(): Promise<void> { const providerIds = this.authenticationService.getProviderIds(); const results = await Promise.allSettled(providerIds.map(providerId => this.addAccountsFromProvider(providerId))); // Log any errors that occurred while initializing. We try to be best effort here to show the most amount of accounts for (const result of results) { if (result.status === 'rejected') { this.logService.error(result.reason); } } this.initialized = true; </ins> } <ins> //#region overrides </ins> protected override async resolveMainMenuActions(accountsMenu: IMenu, disposables: DisposableStore): Promise<IAction[]> { await super.resolveMainMenuActions(accountsMenu, disposables); <del> const otherCommands = accountsMenu.getActions(); </del> const providers = this.authenticationService.getProviderIds(); <del> const allSessions = providers.map(async providerId => { try { const sessions = await this.authenticationService.getSessions(providerId); const groupedSessions: { [label: string]: AuthenticationSession[] } = {}; sessions.forEach(session => { if (groupedSessions[session.account.label]) { groupedSessions[session.account.label].push(session); } else { groupedSessions[session.account.label] = [session]; } }); </del> <ins> const otherCommands = accountsMenu.getActions(); let menus: IAction[] = []; </ins> <del> return { providerId, sessions: groupedSessions }; } catch { return { providerId }; </del> <ins> for (const providerId of providers) { if (!this.initialized) { const noAccountsAvailableAction = disposables.add(new Action('noAccountsAvailable', localize('loading', "Loading..."), undefined, false)); menus.push(noAccountsAvailableAction); break; } const providerLabel = this.authenticationService.getLabel(providerId); const accounts = this.groupedAccounts.get(providerId); if (!accounts) { if (this.problematicProviders.has(providerId)) { const providerUnavailableAction = disposables.add(new Action('providerUnavailable', localize('authProviderUnavailable', '{0} is currently unavailable', providerLabel), undefined, false)); menus.push(providerUnavailableAction); // try again in the background so that if the failure was intermittent, we can resolve it on the next showing of the menu try { await this.addAccountsFromProvider(providerId); } catch (e) { this.logService.error(e); } } continue; </ins> } <del> }); const result = await Promise.all(allSessions); let menus: IAction[] = []; const authenticationSession = await getCurrentAuthenticationSessionInfo(this.credentialsService, this.productService); result.forEach(sessionInfo => { const providerDisplayName = this.authenticationService.getLabel(sessionInfo.providerId); if (sessionInfo.sessions) { Object.keys(sessionInfo.sessions).forEach(accountName => { const manageExtensionsAction = disposables.add(new Action(`configureSessions${accountName}`, localize('manageTrustedExtensions', "Manage Trusted Extensions"), '', true, () => { return this.authenticationService.manageTrustedExtensionsForAccount(sessionInfo.providerId, accountName); })); const signOutAction = disposables.add(new Action('signOut', localize('signOut', "Sign Out"), '', true, () => { return this.authenticationService.removeAccountSessions(sessionInfo.providerId, accountName, sessionInfo.sessions[accountName]); })); </del> <ins> for (const account of accounts) { const manageExtensionsAction = disposables.add(new Action(`configureSessions${account.label}`, localize('manageTrustedExtensions', "Manage Trusted Extensions"), undefined, true, () => { return this.authenticationService.manageTrustedExtensionsForAccount(providerId, account.label); })); </ins> <del> const providerSubMenuActions = [manageExtensionsAction]; </del> <ins> const providerSubMenuActions: Action[] = [manageExtensionsAction]; </ins> <del> const hasEmbedderAccountSession = sessionInfo.sessions[accountName].some(session => session.id === (authenticationSession?.id)); if (!hasEmbedderAccountSession || authenticationSession?.canSignOut) { providerSubMenuActions.push(signOutAction); } </del> <ins> if (account.canSignOut) { const signOutAction = disposables.add(new Action('signOut', localize('signOut', "Sign Out"), undefined, true, async () => { const allSessions = await this.authenticationService.getSessions(providerId); const sessionsForAccount = allSessions.filter(s => s.account.id === account.id); return await this.authenticationService.removeAccountSessions(providerId, account.label, sessionsForAccount); })); providerSubMenuActions.push(signOutAction); } </ins> <del> const providerSubMenu = new SubmenuAction('activitybar.submenu', `${accountName} (${providerDisplayName})`, providerSubMenuActions); menus.push(providerSubMenu); }); } else { const providerUnavailableAction = disposables.add(new Action('providerUnavailable', localize('authProviderUnavailable', '{0} is currently unavailable', providerDisplayName))); menus.push(providerUnavailableAction); </del> <ins> const providerSubMenu = new SubmenuAction('activitybar.submenu', `${account.label} (${providerLabel})`, providerSubMenuActions); menus.push(providerSubMenu); </ins> } <del> }); </del> <ins> } </ins> if (providers.length && !menus.length) { const noAccountsAvailableAction = disposables.add(new Action('noAccountsAvailable', localize('noAccounts', "You are not signed in to any accounts"), undefined, false));


Question:
Update: reproduces in web + desktop Steps to Reproduce: a Codespace until it is loaded various activity bar items that open menus (gear menu, accounts, main menu, home indicator) = somehow the accounts menu only opens for me after a delay, as if something was resolved when clicking? !
This still reproduces
does this still repro? maybe its imperceptible to me?
Yeah still seems slightly delayed to me, can we not check the code and see if a longer running promise prevents the menu from showing?
looks like we fetch session info every time, so this probably adds some delay. maybe this can be cached and updated separately
Yeah that seems like a reasonable ask since it goes to the extension host and back, today.
This issue has existed since 2 years! But only recently have I encountered this.

return actions; } <ins> //#endregion //#region groupedAccounts helpers private async addOrUpdateAccount(providerId: string, account: AuthenticationSessionAccount): Promise<void> { const accounts = this.groupedAccounts.get(providerId); const existingAccount = accounts?.find(a => a.id === account.id); if (existingAccount) { if (existingAccount.label !== account.label) { existingAccount.label = account.label; } return; } const sessionFromEmbedder = await this.sessionFromEmbedder; // If the session stored from the embedder allows sign out, then we can treat it and all others as sign out-able let canSignOut = !!sessionFromEmbedder?.canSignOut; if (!canSignOut) { if (sessionFromEmbedder?.id) { const sessions = (await this.authenticationService.getSessions(providerId)).filter(s => s.account.id === account.id); canSignOut = !sessions.some(s => s.id === sessionFromEmbedder.id); } else { // The default if we don't have a session from the embedder is to allow sign out canSignOut = true; } } if (!accounts) { this.groupedAccounts.set(providerId, [{ ...account, canSignOut }]); return; } accounts.push({ ...account, canSignOut }); } private removeAccount(providerId: string, account: AuthenticationSessionAccount): void { const accounts = this.groupedAccounts.get(providerId); if (!accounts) { return; } const index = accounts.findIndex(a => a.id === account.id); if (index === -1) { return; } accounts.splice(index, 1); if (accounts.length === 0) { this.groupedAccounts.delete(providerId); } } private async addAccountsFromProvider(providerId: string): Promise<void> { try { const sessions = await this.authenticationService.getSessions(providerId); this.problematicProviders.delete(providerId); const result = await Promise.allSettled(sessions.map(s => this.addOrUpdateAccount(providerId, s.account))); for (const r of result) { if (r.status === 'rejected') { this.logService.error(r.reason); } } } catch (e) { this.logService.error(e); this.problematicProviders.add(providerId); } } //#endregion </ins> } export interface IProfileActivity extends IActivity {


Question:
Update: reproduces in web + desktop Steps to Reproduce: a Codespace until it is loaded various activity bar items that open menus (gear menu, accounts, main menu, home indicator) = somehow the accounts menu only opens for me after a delay, as if something was resolved when clicking? !
This still reproduces
does this still repro? maybe its imperceptible to me?
Yeah still seems slightly delayed to me, can we not check the code and see if a longer running promise prevents the menu from showing?
looks like we fetch session info every time, so this probably adds some delay. maybe this can be cached and updated separately
Yeah that seems like a reasonable ask since it goes to the extension host and back, today.
This issue has existed since 2 years! But only recently have I encountered this.

import { Event } from 'vs/base/common/event'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; <ins> export interface AuthenticationSessionAccount { label: string; id: string; } </ins> export interface AuthenticationSession { id: string; accessToken: string; <del> account: { label: string; id: string; }; </del> <ins> account: AuthenticationSessionAccount; </ins> scopes: ReadonlyArray<string>; idToken?: string; }


Question: The find widget's update history is wrapped in a delayer promise which can cause an unhandled promise rejection when the widget is getting disposed of if the delayer's completion promise hasn't been cleanup up. This can happen if the editor is closed before the find widget has time to finish closing. This change addressed the issue by handling the rejected promise returned by . <!-- 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: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.51.1 OS Version: macOS Steps to Reproduce: new editor. -F to open the find widget. to close the find widget and quickly close the editor before the widget has time to close.

} private _delayedUpdateHistory() { <del> this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)); </del> <ins> this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(undefined, onUnexpectedError); </ins> } private _updateHistory() {


Question:
We have been seeing a bunch of remote issues where the remote extension host burns a lot of CPU. I think it is caused by our port scanning code, which executes even if the setting is false. See Possible issues: / Other: ? ? ? *
Looks like we need to work on our indentation and ensuring that we break lines once they go past the edge of the screen for the sake of readability
I could reproduce some increased CPU usage of the remote extension host using the project linked to i.e.
In insiders, you can now temporarily disable the port scanning code by adding this line to your .bashrc file, then restarting the VS Code server on your remote:
Once we have an insiders build I'll start commenting in each of the issues asking folks to try out the workaround in insiders.
Keeping open for now so that the issue can be found more easily.
Closing since the fix is available in insiders.
Verified that cpu usage was reasonable when running the petclinic app

import { exec } from 'child_process'; import * as resources from 'vs/base/common/resources'; import * as fs from 'fs'; <ins> import * as pfs from 'vs/base/node/pfs'; </ins> import { isLinux } from 'vs/base/common/platform'; import { IExtHostTunnelService, TunnelDto } from 'vs/workbench/api/common/extHostTunnelService'; import { asPromise } from 'vs/base/common/async'; import { Event, Emitter } from 'vs/base/common/event'; import { TunnelOptions, TunnelCreationOptions } from 'vs/platform/remote/common/tunnel'; import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'; <ins> import { promisify } from 'util'; import { MovingAverage } from 'vs/base/common/numbers'; </ins> class ExtensionTunnel implements vscode.Tunnel { private _onDispose: Emitter<void> = new Emitter();


Question:
We have been seeing a bunch of remote issues where the remote extension host burns a lot of CPU. I think it is caused by our port scanning code, which executes even if the setting is false. See Possible issues: / Other: ? ? ? *
Looks like we need to work on our indentation and ensuring that we break lines once they go past the edge of the screen for the sake of readability
I could reproduce some increased CPU usage of the remote extension host using the project linked to i.e.
In insiders, you can now temporarily disable the port scanning code by adding this line to your .bashrc file, then restarting the VS Code server on your remote:
Once we have an insiders build I'll start commenting in each of the issues asking folks to try out the workaround in insiders.
Keeping open for now so that the issue can be found more easily.
Closing since the fix is available in insiders.
Verified that cpu usage was reasonable when running the petclinic app

) { super(); this._proxy = extHostRpc.getProxy(MainContext.MainThreadTunnelService); <del> if (initData.remote.isRemote && initData.remote.authority && !process.env['VSCODE_DISABLE_PROC_READING']) { </del> <ins> if (initData.remote.isRemote && initData.remote.authority) { </ins> this.registerCandidateFinder(); } }


Question:
We have been seeing a bunch of remote issues where the remote extension host burns a lot of CPU. I think it is caused by our port scanning code, which executes even if the setting is false. See Possible issues: / Other: ? ? ? *
Looks like we need to work on our indentation and ensuring that we break lines once they go past the edge of the screen for the sake of readability
I could reproduce some increased CPU usage of the remote extension host using the project linked to i.e.
In insiders, you can now temporarily disable the port scanning code by adding this line to your .bashrc file, then restarting the VS Code server on your remote:
Once we have an insiders build I'll start commenting in each of the issues asking folks to try out the workaround in insiders.
Keeping open for now so that the issue can be found more easily.
Closing since the fix is available in insiders.
Verified that cpu usage was reasonable when running the petclinic app

return this._proxy.$getTunnels(); } <del> registerCandidateFinder(): void { // Every two seconds, scan to see if the candidate ports have changed; if (isLinux) { let oldPorts: { host: string, port: number, detail: string }[] | undefined = undefined; setInterval(async () => { const newPorts = await this.findCandidatePorts(); if (!oldPorts || (JSON.stringify(oldPorts) !== JSON.stringify(newPorts))) { oldPorts = newPorts; this._proxy.$onFoundNewCandidates(oldPorts.filter(async (candidate) => await this._showCandidatePort(candidate.host, candidate.port, candidate.detail))); return; } }, 2000); </del> <ins> private calculateDelay(movingAverage: number) { // Some local testing indicated that the moving average might be between 50-100 ms. return Math.max(movingAverage * 20, 2000); } async registerCandidateFinder(): Promise<void> { // Regularly scan to see if the candidate ports have changed. if (!isLinux) { return; } let movingAverage = new MovingAverage(); let oldPorts: { host: string, port: number, detail: string }[] | undefined = undefined; while (1) { const startTime = new Date().getTime(); const newPorts = await this.findCandidatePorts(); const timeTaken = new Date().getTime() - startTime; movingAverage.update(timeTaken); if (!oldPorts || (JSON.stringify(oldPorts) !== JSON.stringify(newPorts))) { oldPorts = newPorts; await this._proxy.$onFoundNewCandidates(oldPorts.filter(async (candidate) => await this._showCandidatePort(candidate.host, candidate.port, candidate.detail))); } await (new Promise<void>(resolve => setTimeout(() => resolve(), this.calculateDelay(movingAverage.value)))); </ins> } }


Question:
We have been seeing a bunch of remote issues where the remote extension host burns a lot of CPU. I think it is caused by our port scanning code, which executes even if the setting is false. See Possible issues: / Other: ? ? ? *
Looks like we need to work on our indentation and ensuring that we break lines once they go past the edge of the screen for the sake of readability
I could reproduce some increased CPU usage of the remote extension host using the project linked to i.e.
In insiders, you can now temporarily disable the port scanning code by adding this line to your .bashrc file, then restarting the VS Code server on your remote:
Once we have an insiders build I'll start commenting in each of the issues asking folks to try out the workaround in insiders.
Keeping open for now so that the issue can be found more easily.
Closing since the fix is available in insiders.
Verified that cpu usage was reasonable when running the petclinic app

let tcp: string = ''; let tcp6: string = ''; try { <del> tcp = fs.readFileSync('/proc/net/tcp', 'utf8'); tcp6 = fs.readFileSync('/proc/net/tcp6', 'utf8'); </del> <ins> tcp = await pfs.readFile('/proc/net/tcp', 'utf8'); tcp6 = await pfs.readFile('/proc/net/tcp6', 'utf8'); </ins> } catch (e) { // File reading error. No additional handling needed. }


Question:
We have been seeing a bunch of remote issues where the remote extension host burns a lot of CPU. I think it is caused by our port scanning code, which executes even if the setting is false. See Possible issues: / Other: ? ? ? *
Looks like we need to work on our indentation and ensuring that we break lines once they go past the edge of the screen for the sake of readability
I could reproduce some increased CPU usage of the remote extension host using the project linked to i.e.
In insiders, you can now temporarily disable the port scanning code by adding this line to your .bashrc file, then restarting the VS Code server on your remote:
Once we have an insiders build I'll start commenting in each of the issues asking folks to try out the workaround in insiders.
Keeping open for now so that the issue can be found more easily.
Closing since the fix is available in insiders.
Verified that cpu usage was reasonable when running the petclinic app

}); })); <del> const procChildren = fs.readdirSync('/proc'); const processes: { pid: number, cwd: string, cmd: string }[] = []; </del> <ins> const procChildren = await pfs.readdir('/proc'); const processes: { pid: number, cwd: string, cmd: string }[] = []; </ins> for (let childName of procChildren) { try { const pid: number = Number(childName); const childUri = resources.joinPath(URI.file('/proc'), childName); <del> const childStat = fs.statSync(childUri.fsPath); </del> <ins> const childStat = await pfs.stat(childUri.fsPath); </ins> if (childStat.isDirectory() && !isNaN(pid)) { <del> const cwd = fs.readlinkSync(resources.joinPath(childUri, 'cwd').fsPath); const cmd = fs.readFileSync(resources.joinPath(childUri, 'cmdline').fsPath, 'utf8'); </del> <ins> const cwd = await promisify(fs.readlink)(resources.joinPath(childUri, 'cwd').fsPath); const cmd = await pfs.readFile(resources.joinPath(childUri, 'cmdline').fsPath, 'utf8'); </ins> processes.push({ pid, cwd, cmd }); } } catch (e) {


Question:
VSCode Version: 1.52.1 OS Version: Windows 10 Steps to Reproduce: a WebView tab, such as the Markdown preview. click on it in the Open Editors Section, and select "Select for Compare". click on any other item and select "Compare with Selected". ! Does this issue occur when all extensions are disabled?: Yes
//cc not sure we have a context key to use here already
Code pointer We would need to use that context key for all the compare context menu actions in the Open Editors view
isn't this just a matter of using for this command? We seem to be using this also to limit commands such as "Copy"?
you are correct, I checked and this is indeed the context key we needed here.
Will have to revert this due to
PR:
/verified

// Menu registration - open editors <ins> const isFileOrUntitledResourceContextKey = ContextKeyExpr.or(ResourceContextKey.IsFileSystemResource, ResourceContextKey.Scheme.isEqualTo(Schemas.untitled)); </ins> const openToSideCommand = { id: OPEN_TO_SIDE_COMMAND_ID, title: nls.localize('openToSide', "Open to the Side")


Question:
VSCode Version: 1.52.1 OS Version: Windows 10 Steps to Reproduce: a WebView tab, such as the Markdown preview. click on it in the Open Editors Section, and select "Select for Compare". click on any other item and select "Compare with Selected". ! Does this issue occur when all extensions are disabled?: Yes
//cc not sure we have a context key to use here already
Code pointer We would need to use that context key for all the compare context menu actions in the Open Editors view
isn't this just a matter of using for this command? We seem to be using this also to limit commands such as "Copy"?
you are correct, I checked and this is indeed the context key we needed here.
Will have to revert this due to
PR:
/verified

group: 'navigation', order: 10, command: openToSideCommand, <del> when: ContextKeyExpr.or(ResourceContextKey.IsFileSystemResource, ResourceContextKey.Scheme.isEqualTo(Schemas.untitled)) </del> <ins> when: isFileOrUntitledResourceContextKey </ins> }); MenuRegistry.appendMenuItem(MenuId.OpenEditorsContext, {


Question:
VSCode Version: 1.52.1 OS Version: Windows 10 Steps to Reproduce: a WebView tab, such as the Markdown preview. click on it in the Open Editors Section, and select "Select for Compare". click on any other item and select "Compare with Selected". ! Does this issue occur when all extensions are disabled?: Yes
//cc not sure we have a context key to use here already
Code pointer We would need to use that context key for all the compare context menu actions in the Open Editors view
isn't this just a matter of using for this command? We seem to be using this also to limit commands such as "Copy"?
you are correct, I checked and this is indeed the context key we needed here.
Will have to revert this due to
PR:
/verified

group: '3_compare', order: 20, command: compareResourceCommand, <del> when: ContextKeyExpr.and(ResourceContextKey.HasResource, ResourceSelectedForCompareContext, WorkbenchListDoubleSelection.toNegated()) </del> <ins> when: ContextKeyExpr.and(ResourceContextKey.HasResource, ResourceSelectedForCompareContext, isFileOrUntitledResourceContextKey, WorkbenchListDoubleSelection.toNegated()) </ins> }); const selectForCompareCommand = {


Question:
VSCode Version: 1.52.1 OS Version: Windows 10 Steps to Reproduce: a WebView tab, such as the Markdown preview. click on it in the Open Editors Section, and select "Select for Compare". click on any other item and select "Compare with Selected". ! Does this issue occur when all extensions are disabled?: Yes
//cc not sure we have a context key to use here already
Code pointer We would need to use that context key for all the compare context menu actions in the Open Editors view
isn't this just a matter of using for this command? We seem to be using this also to limit commands such as "Copy"?
you are correct, I checked and this is indeed the context key we needed here.
Will have to revert this due to
PR:
/verified

group: '3_compare', order: 30, command: selectForCompareCommand, <del> when: ContextKeyExpr.and(ResourceContextKey.HasResource, WorkbenchListDoubleSelection.toNegated()) </del> <ins> when: ContextKeyExpr.and(ResourceContextKey.HasResource, isFileOrUntitledResourceContextKey, WorkbenchListDoubleSelection.toNegated()) </ins> }); const compareSelectedCommand = {


Question:
VSCode Version: 1.52.1 OS Version: Windows 10 Steps to Reproduce: a WebView tab, such as the Markdown preview. click on it in the Open Editors Section, and select "Select for Compare". click on any other item and select "Compare with Selected". ! Does this issue occur when all extensions are disabled?: Yes
//cc not sure we have a context key to use here already
Code pointer We would need to use that context key for all the compare context menu actions in the Open Editors view
isn't this just a matter of using for this command? We seem to be using this also to limit commands such as "Copy"?
you are correct, I checked and this is indeed the context key we needed here.
Will have to revert this due to
PR:
/verified

group: '3_compare', order: 30, command: compareSelectedCommand, <del> when: ContextKeyExpr.and(ResourceContextKey.HasResource, WorkbenchListDoubleSelection) </del> <ins> when: ContextKeyExpr.and(ResourceContextKey.HasResource, WorkbenchListDoubleSelection, isFileOrUntitledResourceContextKey) </ins> }); MenuRegistry.appendMenuItem(MenuId.OpenEditorsContext, {


Question:
Testing Create multiple editor groups Ensure that the selected tab is not the first one in the editor group Start dragging the sash so that there is not enough room to wrap tabs Notice how the name of the tab that is visible jitters as it switches between the name of the first tab, and the name of the selected tab !
Yeah I was not able to figure out what triggers this and was even suspecting a browser bug (though didn't follow up). //cc
I see this being related to: is called we enable wrapping we disable wrapping right after because we figure out the space is too limited somehow the scrollbar is now in a bad spot and needs a proper reset to avoid flicker
I was able to find the origin of the bug in : wrapping is activated even when there is no space due to the actions right to the last tab. In the next call, it is disabled again, because the action's size is considered in that case. Constantly switching between wrapping and not wrapping makes it behave weird. I'll make a PR.

if (this.accessor.partOptions.wrapTabs) { const visibleTabsWidth = tabsContainer.offsetWidth; const allTabsWidth = tabsContainer.scrollWidth; <ins> const lastTabFitsWrapped = () => { const lastTab = this.getLastTab(); if (!lastTab) { return true; // no tab always fits } return lastTab.offsetWidth <= (dimensions.available.width - editorToolbarContainer.offsetWidth); }; </ins> // If tabs wrap or should start to wrap (when width exceeds visible width) // we must trigger `updateWrapping` to set the `last-tab-margin-right` // accordingly based on the number of actions. The margin is important to // properly position the last tab apart from the actions <del> if (tabsWrapMultiLine || allTabsWidth > visibleTabsWidth) { </del> <ins> // // We already check here if the last tab would fit when wrapped given the // editor toolbar will also show right next to it. This ensures we are not // enabling wrapping only to disable it again in the code below (this fixes // flickering issue https://github.com/microsoft/vscode/issues/115050) if (tabsWrapMultiLine || (allTabsWidth > visibleTabsWidth && lastTabFitsWrapped())) { </ins> updateTabsWrapping(true); } // Tabs wrap multiline: remove wrapping under certain size constraint conditions if (tabsWrapMultiLine) { <del> const lastTab = this.getLastTab(); </del> if ( (tabsContainer.offsetHeight > dimensions.available.height) ||											// if height exceeds available height (allTabsWidth === visibleTabsWidth && tabsContainer.offsetHeight === TabsTitleControl.TAB_HEIGHT) ||	// if wrapping is not needed anymore <del> (lastTab && lastTab.offsetWidth > (dimensions.available.width - editorToolbarContainer.offsetWidth))	// if editor actions occupy too much space </del> <ins> (!lastTabFitsWrapped())																					// if last tab does not fit anymore </ins> ) { updateTabsWrapping(false); }


Question:
Issue Type: <bBug</bRepro a terminal both terminals, run some kind of script that outputs text that horizontally fills the terminal resize the left terminal to make the right one smaller Bug For a half second during the resize, the content of two terminals end up overlapping https://user- VS Code version: Code - Insiders 1.53.0-insider (, 2021-01-26T05:12:23.287Z) OS version: Darwin x64 20.2.0 Remote OS version: Linux x64 5.4.0-1036-azure <details<summarySystem Info</summary </details<!-- generated by issue reporter --
I think this is just a problem with the dom renderer?
Oh yeah, I had set. There's a slight amount of overlap with canvas renderer (specifically the sash border seems to overlap with a few characters of the terminal for a few hundred ms at most), but it is much better
Should probably use on each pane, that should fix.

.monaco-workbench .pane-body.integrated-terminal .split-view-view { box-sizing: border-box; <ins> overflow: hidden; </ins> } /* border-color is set by theme key terminal.border */


if (lens.command) { const title = renderLabelWithIcons(lens.command.title.trim()); if (lens.command.id) { <del> children.push(dom.$('a', { id: String(i) }, ...title)); </del> <ins> children.push(dom.$('a', { id: String(i), title: lens.command.tooltip }, ...title)); </ins> this._commands.set(String(i), lens.command); } else { <del> children.push(dom.$('span', undefined, ...title)); </del> <ins> children.push(dom.$('span', { title: lens.command.tooltip }, ...title)); </ins> } if (i + 1 < lenses.length) { children.push(dom.$('span', undefined, 'u00a0|u00a0'));


Question:
<!-- 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: n/a OS Version: macOS 10.15.7, npm 7.5.0 Steps to Reproduce: to the and read the instructions in the "Integrate" section: a terminal and run the command as indicated: . Expected outcome: installs the freestanding JSON language server. Actual outcome: reports the following: I have attached the cited log file. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: n/a <!-- 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. --
Sorry, that was a typo in the README. Please try
Successfully installed using , thank you very much!

* Submitting pull requests ## Related Projects <del> Many of the core components and extensions to Code live in their own repositories on GitHub. For example, the [node debug adapter](https://github.com/microsoft/vscode-node-debug), the [mono debug adapter](https://github.com/microsoft/vscode-mono-debug). </del> <ins> Many of the core components and extensions to Code live in their own repositories on GitHub. For example, the [node debug adapter](https://github.com/microsoft/vscode-node-debug) and the [mono debug adapter](https://github.com/microsoft/vscode-mono-debug). </ins> For a complete list, please see the [Related Projects](https://github.com/Microsoft/vscode/wiki/Related-Projects) page on our wiki.


Question: <!-- 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. --

unhideMarkdownPreview(cell: ICellViewModel): Promise<void>; hideMarkdownPreview(cell: ICellViewModel): Promise<void>; removeMarkdownPreview(cell: ICellViewModel): Promise<void>; <ins> updateMarkdownPreviewSelectionState(cell: ICellViewModel, isSelected: boolean): Promise<void>; </ins> /** * Render the output in webview layer


Question: <!-- 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. --

await this._webview?.removeMarkdownPreview(cell.id); } <ins> async updateMarkdownPreviewSelectionState(cell: ICellViewModel, isSelected: boolean): Promise<void> { if (!this._webview) { return; } await this._resolveWebview(); await this._webview?.updateMarkdownPreviewSelectionState(cell.id, isSelected); } </ins> async createInset(cell: CodeCellViewModel, output: IInsetRenderOutput, offset: number): Promise<void> { this._insetModifyQueueByOutputId.queue(output.source.model.outputId, async () => { if (!this._webview) {


Question: <!-- 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. --

top: number; } <ins> export interface IUpdateMarkdownPreviewSelectionState { readonly type: 'updateMarkdownPreviewSelectionState', readonly id: string; readonly isSelected: boolean; } </ins> export interface IInitializeMarkdownMessage { type: 'initializeMarkdownPreview'; cells: Array<{ cellId: string, content: string }>;


Question: <!-- 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. --

| IShowMarkdownMessage | IHideMarkdownMessage | IUnhideMarkdownMessage <ins> | IUpdateMarkdownPreviewSelectionState </ins> | IInitializeMarkdownMessage | IViewScrollMarkdownRequestMessage;


Question: <!-- 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. --

padding-left: ${this.options.leftMargin}px; } <ins> #container > div > div.preview.selected { background: var(--vscode-notebook-selectedCellBackground); } </ins> #container > div > div.preview img { max-width: 100%; max-height: 100%;


Question: <!-- 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. --

}); } <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;


Question: <!-- 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. --

} private updateForLayout(element: MarkdownCellViewModel, templateData: MarkdownCellRenderTemplate): void { <del> // templateData.focusIndicatorLeft.style.height = `${element.layoutInfo.indicatorHeight}px`; </del> templateData.focusIndicatorBottom.style.top = `${element.layoutInfo.totalHeight - BOTTOM_CELL_TOOLBAR_GAP - CELL_BOTTOM_MARGIN}px`; const focusSideHeight = element.layoutInfo.totalHeight - BOTTOM_CELL_TOOLBAR_GAP;


Question: <!-- 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. --

} })); <ins> // Update for selection if (this.useRenderer) { this._register(this.notebookEditor.onDidChangeSelection(() => { const selectedCells = this.notebookEditor.getSelectionViewModels(); const isSelected = selectedCells.length > 1 && selectedCells.some(selectedCell => selectedCell === viewCell); this.notebookEditor.updateMarkdownPreviewSelectionState(viewCell, isSelected); })); } // apply decorations </ins> this._register(viewCell.onCellDecorationsChanged((e) => { e.added.forEach(options => { if (options.className) { <del> templateData.rootContainer.classList.add(options.className); </del> <ins> if (this.useRenderer) { this.notebookEditor.deltaCellOutputContainerClassNames(this.viewCell.id, [options.className], []); } else { templateData.rootContainer.classList.add(options.className); } </ins> } }); e.removed.forEach(options => { if (options.className) { <del> templateData.rootContainer.classList.remove(options.className); </del> <ins> if (this.useRenderer) { this.notebookEditor.deltaCellOutputContainerClassNames(this.viewCell.id, [], [options.className]); } else { templateData.rootContainer.classList.remove(options.className); } </ins> } }); })); <del> // apply decorations </del> viewCell.getCellDecorations().forEach(options => { if (options.className) { <del> templateData.rootContainer.classList.add(options.className); </del> <ins> if (this.useRenderer) { this.notebookEditor.deltaCellOutputContainerClassNames(this.viewCell.id, [options.className], []); } else { templateData.rootContainer.classList.add(options.className); } </ins> } });


Question: <!-- 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. --

const data = event.data; let cellContainer = document.getElementById(data.id); if (cellContainer) { <del> cellContainer?.parentElement?.removeChild(cellContainer); </del> <ins> cellContainer.parentElement?.removeChild(cellContainer); } } break; case 'updateMarkdownPreviewSelectionState': { const data = event.data; const previewNode = document.getElementById(`${data.id}_preview`); if (previewNode) { previewNode.classList.toggle('selected', data.isSelected); </ins> } } break;


Question: <!-- 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. --

markdownCellDragEnd(cellId: string, position: { clientY: number }): void { throw new Error('Method not implemented.'); } <ins> updateMarkdownPreviewSelectionState(cell: ICellViewModel, isSelected: boolean): Promise<void> { throw new Error('Method not implemented.'); } </ins> async beginComputeContributedKernels(): Promise<INotebookKernel[]> { return []; }


Question:
<!-- 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.55 OS Version: MacOS Big Sur The unit testing readme instructions for running unit tests from node is missing the --ui tdd flag and doesn't work without it. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- 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. --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.453 --<!-- potentialduplicatescomment --
This is about
Yeah see pull request sorry. I just lumped it into something else.

protected _modifyText(text: string, wordSeparators: string): string { return (text .replace(/(p{Ll})(p{Lu})/gmu, '$1_$2') <del> .replace(/([^b_])(p{Lu})(p{Ll})/gmu, '$1_$2$3') </del> <ins> .replace(/(p{Lu}|p{N})(p{Lu})(p{Ll})/gmu, '$1_$2$3') </ins> .toLocaleLowerCase() ); }


Question:
<!-- 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.55 OS Version: MacOS Big Sur The unit testing readme instructions for running unit tests from node is missing the --ui tdd flag and doesn't work without it. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- 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. --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.453 --<!-- potentialduplicatescomment --
This is about
Yeah see pull request sorry. I just lumped it into something else.

`function helloWorld() { return someGlobalObject.printHelloWorld("en", "utf-8"); } <del> helloWorld();`.replace(/^s+/gm, '') </del> <ins> helloWorld();`.replace(/^s+/gm, ''), `'JavaScript'`, 'parseHTML4String', '_accessor: ServicesAccessor' </ins> ], {}, (editor) => { let model = editor.getModel()!; let uppercaseAction = new UpperCaseAction();


Question:
<!-- 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.55 OS Version: MacOS Big Sur The unit testing readme instructions for running unit tests from node is missing the --ui tdd flag and doesn't work without it. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- 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. --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.453 --<!-- potentialduplicatescomment --
This is about
Yeah see pull request sorry. I just lumped it into something else.

} hello_world();`.replace(/^s+/gm, '')); assertSelection(editor, new Selection(14, 1, 17, 15)); <ins> editor.setSelection(new Selection(18, 1, 18, 13)); executeAction(snakecaseAction, editor); assert.strictEqual(model.getLineContent(18), `'java_script'`); assertSelection(editor, new Selection(18, 1, 18, 14)); editor.setSelection(new Selection(19, 1, 19, 17)); executeAction(snakecaseAction, editor); assert.strictEqual(model.getLineContent(19), 'parse_html4_string'); assertSelection(editor, new Selection(19, 1, 19, 19)); editor.setSelection(new Selection(20, 1, 20, 28)); executeAction(snakecaseAction, editor); assert.strictEqual(model.getLineContent(20), '_accessor: services_accessor'); assertSelection(editor, new Selection(20, 1, 20, 29)); </ins> } );


Question:
<!-- 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.55 OS Version: MacOS Big Sur The unit testing readme instructions for running unit tests from node is missing the --ui tdd flag and doesn't work without it. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- 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. --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.453 --<!-- potentialduplicatescomment --
This is about
Yeah see pull request sorry. I just lumped it into something else.

- use the `--debug` to see an electron window with dev tools which allows for debugging - to run only a subset of tests use the `--run` or `--glob` options <ins> - use `yarn watch` to automatically compile changes </ins> For instance, `./scripts/test.sh --debug --glob **/extHost*.test.js` runs all tests from `extHost`-files and enables you to debug them.


Question:
<!-- 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.55 OS Version: MacOS Big Sur The unit testing readme instructions for running unit tests from node is missing the --ui tdd flag and doesn't work without it. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- 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. --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.453 --<!-- potentialduplicatescomment --
This is about
Yeah see pull request sorry. I just lumped it into something else.

## Run (with node) <del> yarn run mocha --run src/vs/editor/test/browser/controller/cursor.test.ts </del> <ins> yarn run mocha --ui tdd --run src/vs/editor/test/browser/controller/cursor.test.ts </ins> ## Coverage


Question:
The call was removed in
It's weird, seems like in stable we should be leaking terminal processes then but I see them shut down immediately after closing the window in stable...

return this._remoteTerminalChannel.setTerminalLayoutInfo(layout); } <del> public getTerminalLayoutInfo(): Promise<ITerminalsLayoutInfo | undefined> { </del> <ins> public async getTerminalLayoutInfo(): Promise<ITerminalsLayoutInfo | undefined> { await this._remoteTerminalChannel?.listProcesses(true); </ins> if (!this._remoteTerminalChannel) { throw new Error(`Cannot call getActiveInstanceId when there is no remote`); }


Question:
On Windows: a local empty folder an empty a with the following contents: the Markdown preview the link File opens with a strange input, as if its entire path is the file name. Also, if you open from the Explorer, it now appears twice in Quick Open: once normally and another in the weird long format. !
windows? local/wsl? Doesn't repro on macOS so I suspect an issue with how URIs are being created from the markdown.
This is local Windows, updated the steps.
There is some weird encoding going on with that URL, here is what it should look like: And here is what I get:
I'm working on this issue. I've logged out how the Markdown Preview renders the paths to HTML with "Click Here Absolute Path" containing the same link as in the issue: Markdown: HTML Output: The paths are correct though. Plus I think the link should be given as a relative path (ie. ) instead of an absolute path. Giving the absolute path here () is not correct. Btw, I've tried on other IDEs for comparison, they all don't open the absolute path link properly (or open nothing at all). The relative path link always works. Not sure how would you want to tackle this now?
I have a hunch that maybe the issue is somewhat related to
Thanks, for the pointer. I misunderstood the issue at first...

private async onDidClickPreviewLink(href: string) { let [hrefPath, fragment] = decodeURIComponent(href).split('#'); <del> // We perviously already resolve absolute paths. // Now make sure we handle relative file paths </del> if (hrefPath[0] !== '/') { <del> // Fix #93691, use this.resource.fsPath instead of this.resource.path hrefPath = path.join(path.dirname(this.resource.fsPath), hrefPath); </del> <ins> // We perviously already resolve absolute paths. // Now make sure we handle relative file paths const dirnameUri = vscode.Uri.parse(path.dirname(this.resource.path)); hrefPath = vscode.Uri.joinPath(dirnameUri, hrefPath).path; </ins> } else { // Handle any normalized file paths <del> hrefPath = vscode.Uri.parse(hrefPath.replace('/file', '')).fsPath; </del> <ins> hrefPath = vscode.Uri.parse(hrefPath.replace('/file', '')).path; </ins> } const config = vscode.workspace.getConfiguration('markdown', this.resource);


Question:
skipped in
Seems to only flake on Windows
Couldn't reproduce locally
Let's try re-enable in debt week

}); }); <del> // https://github.com/microsoft/vscode/issues/119826 suite.skip('environmentVariableCollection', () => { </del> <ins> suite('environmentVariableCollection', () => { </ins> test('should have collection variables apply to terminals immediately after setting', (done) => { // Text to match on before passing the test const expectedText = [


Question:
<!-- 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: main branch, commit (28 march) OS Version: Linux Component: notebook When a user adds a new cell in a notebook, this created cell is automatically selected. This selection happens in the class (): However, when the user undoes and redoes this action, this new cell is not selected any more. This may be considered as an issue since undo/redo must be an identify function. I think that this issue takes sources in the method () where the current selection operation to do after the cell creation is . If I replace this arrow function by: and I removed the block of it works as expected (build, tests, integration tests OK). Steps to Reproduce: To reproduce the issue automatically, adds this test in (executed by ): I will open a PR to detail the proposal. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes (in development mode). <!-- 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. --
I created a cell, and then undo/redo a bunch on that cell and the selection isn't always the recreated cell
any chance you can do a screen recording of the reproduce?
Can't repro this anymore. Marking as verified. Don't know what happened before. Although there is some screen cheese on many undo redos it's very brief.

assert.strictEqual(count, 0); }); <ins> test('correct cell selection on undo/redo of cell creation', async function () { const resource = await createRandomFile('', undefined, '.vsctestnb'); await vscode.commands.executeCommand('vscode.openWith', resource, 'notebookCoreTest'); await vscode.commands.executeCommand('notebook.cell.insertCodeCellBelow'); await vscode.commands.executeCommand('undo'); const selectionUndo = [...vscode.window.activeNotebookEditor!.selections]; await vscode.commands.executeCommand('redo'); const selectionRedo = vscode.window.activeNotebookEditor!.selections; // On undo, the selected cell must be the upper cell, ie the first one assert.strictEqual(selectionUndo.length, 1); assert.strictEqual(selectionUndo[0].start, 0); assert.strictEqual(selectionUndo[0].end, 1); // On redo, the selected cell must be the new cell, ie the second one assert.strictEqual(selectionRedo.length, 1); assert.strictEqual(selectionRedo[0].start, 1); assert.strictEqual(selectionRedo[0].end, 2); }); </ins> test('editor editing event 2', async function () { const resource = await createRandomFile('', undefined, '.vsctestnb'); await vscode.commands.executeCommand('vscode.openWith', resource, 'notebookCoreTest');


Question:
<!-- 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: main branch, commit (28 march) OS Version: Linux Component: notebook When a user adds a new cell in a notebook, this created cell is automatically selected. This selection happens in the class (): However, when the user undoes and redoes this action, this new cell is not selected any more. This may be considered as an issue since undo/redo must be an identify function. I think that this issue takes sources in the method () where the current selection operation to do after the cell creation is . If I replace this arrow function by: and I removed the block of it works as expected (build, tests, integration tests OK). Steps to Reproduce: To reproduce the issue automatically, adds this test in (executed by ): I will open a PR to detail the proposal. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes (in development mode). <!-- 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. --
I created a cell, and then undo/redo a bunch on that cell and the selection isn't always the recreated cell
any chance you can do a screen recording of the reproduce?
Can't repro this anymore. Marking as verified. Don't know what happened before. Although there is some screen cheese on many undo redos it's very brief.

} async runWithContext(accessor: ServicesAccessor, context: INotebookActionContext): Promise<void> { <del> const newCell = context.notebookEditor.insertNotebookCell(context.cell, this.kind, this.direction, undefined, true); if (newCell) { context.notebookEditor.focusNotebookCell(newCell, 'editor'); } </del> <ins> context.notebookEditor.insertNotebookCell(context.cell, this.kind, this.direction, undefined, true); </ins> } }


Question:
<!-- 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: main branch, commit (28 march) OS Version: Linux Component: notebook When a user adds a new cell in a notebook, this created cell is automatically selected. This selection happens in the class (): However, when the user undoes and redoes this action, this new cell is not selected any more. This may be considered as an issue since undo/redo must be an identify function. I think that this issue takes sources in the method () where the current selection operation to do after the cell creation is . If I replace this arrow function by: and I removed the block of it works as expected (build, tests, integration tests OK). Steps to Reproduce: To reproduce the issue automatically, adds this test in (executed by ): I will open a PR to detail the proposal. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes (in development mode). <!-- 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. --
I created a cell, and then undo/redo a bunch on that cell and the selection isn't always the recreated cell
any chance you can do a screen recording of the reproduce?
Can't repro this anymore. Marking as verified. Don't know what happened before. Although there is some screen cheese on many undo redos it's very brief.

createCell(index: number, source: string, language: string, type: CellKind, metadata: NotebookCellMetadata | undefined, outputs: IOutputDto[], synchronous: boolean, pushUndoStop: boolean = true, previouslyPrimary: number | null = null, previouslyFocused: ICellViewModel[] = []): CellViewModel { const beforeSelections = previouslyFocused.map(e => e.handle); <ins> const endSelections: ISelectionState = { kind: SelectionStateType.Index, focus: { start: index, end: index + 1 }, selections: [{ start: index, end: index + 1 }] }; </ins> this._notebook.applyEdits([ { editType: CellEditType.Replace,


Question:
<!-- 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: main branch, commit (28 march) OS Version: Linux Component: notebook When a user adds a new cell in a notebook, this created cell is automatically selected. This selection happens in the class (): However, when the user undoes and redoes this action, this new cell is not selected any more. This may be considered as an issue since undo/redo must be an identify function. I think that this issue takes sources in the method () where the current selection operation to do after the cell creation is . If I replace this arrow function by: and I removed the block of it works as expected (build, tests, integration tests OK). Steps to Reproduce: To reproduce the issue automatically, adds this test in (executed by ): I will open a PR to detail the proposal. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes (in development mode). <!-- 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. --
I created a cell, and then undo/redo a bunch on that cell and the selection isn't always the recreated cell
any chance you can do a screen recording of the reproduce?
Can't repro this anymore. Marking as verified. Don't know what happened before. Although there is some screen cheese on many undo redos it's very brief.

} ] } <del> ], synchronous, { kind: SelectionStateType.Handle, primary: previouslyPrimary, selections: beforeSelections }, () => undefined, undefined); </del> <ins> ], synchronous, { kind: SelectionStateType.Handle, primary: previouslyPrimary, selections: beforeSelections }, () => endSelections, undefined); </ins> return this._viewCells[index]; }


Question:
<!-- 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.55.0 OS Version: Windows 10 Home 20H2 .867 Steps to Reproduce: run latest version of VS Code, 1.55.0 the list of default WSL profiles and you will find something like "Ubuntu (predet.)" instead of just "Ubuntu". profile is impossible to launch, because there is NO distro named "Ubuntu (predet.)". This happens because , at line 178 of latest snapshot I'm checking, does this: . It should remove other locales, too. I know this is difficult to do because... well, there's plenty of locales. So, in order to get the distribution name, another way should be used. I think it's safe to remove any last element within parentheses from the distro name as returned by , but really another method is available which I think it's safer, but I'm not sure how to write it in TypeScript. I have the following code already written in Python, for a system maintenance script I use in my own system, where I retrieve the installed distribution names from the registry: It's a partial code but well, I think it's self explanatory, and I can provide further information if needed. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- 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. --
Same happens to me with the new version 1.55.0 One temporal solution that I found is to disable the autodetection of the distros and include each one with the profile setting:
hi, at first glance it looks that adding a -q argument to the 'wsl -l' command would be safe... regards
Thanks for the suggestion and the fix. Still, I'll keep an eye on this, just in case Microsoft decides to change command line interface. But so far, so good, and it's simpler than having to read the registry
Just encountered this issue today (after updating Docker for Desktop, but not sure if this has something to do with the issue).
Verified in

if (useWslProfiles) { const distroOutput = await new Promise<string>((resolve, reject) => { // wsl.exe output is encoded in utf16le (ie. A -> 0x4100) <del> cp.exec('wsl.exe -l', { encoding: 'utf16le' }, (err, stdout) => { </del> <ins> cp.exec('wsl.exe -l -q', { encoding: 'utf16le' }, (err, stdout) => { </ins> if (err) { return reject('Problem occurred when getting wsl distros'); }


Question:
<!-- 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.55.0 OS Version: Windows 10 Home 20H2 .867 Steps to Reproduce: run latest version of VS Code, 1.55.0 the list of default WSL profiles and you will find something like "Ubuntu (predet.)" instead of just "Ubuntu". profile is impossible to launch, because there is NO distro named "Ubuntu (predet.)". This happens because , at line 178 of latest snapshot I'm checking, does this: . It should remove other locales, too. I know this is difficult to do because... well, there's plenty of locales. So, in order to get the distribution name, another way should be used. I think it's safe to remove any last element within parentheses from the distro name as returned by , but really another method is available which I think it's safer, but I'm not sure how to write it in TypeScript. I have the following code already written in Python, for a system maintenance script I use in my own system, where I retrieve the installed distribution names from the registry: It's a partial code but well, I think it's self explanatory, and I can provide further information if needed. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- 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. --
Same happens to me with the new version 1.55.0 One temporal solution that I found is to disable the autodetection of the distros and include each one with the profile setting:
hi, at first glance it looks that adding a -q argument to the 'wsl -l' command would be safe... regards
Thanks for the suggestion and the fix. Still, I'll keep an eye on this, just in case Microsoft decides to change command line interface. But so far, so good, and it's simpler than having to read the registry
Just encountered this issue today (after updating Docker for Desktop, but not sure if this has something to do with the issue).
Verified in

if (distroOutput) { const regex = new RegExp(/[r?n]/); const distroNames = distroOutput.split(regex).filter(t => t.trim().length > 0 && t !== ''); <del> // don't need the Windows Subsystem for Linux Distributions header distroNames.shift(); </del> for (let distroName of distroNames) { <del> // Remove default from distro name distroName = distroName.replace(/ (Default)$/, ''); </del> // Skip empty lines if (distroName === '') { continue;


Question: <!-- 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.56.0-insider OS Version: MacOS Big Sur 11.2.3 Steps to Reproduce: Settings and and editor it manually. a rule: editors can't be edited anymore. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- 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. --

this.textArea.setAttribute('aria-haspopup', 'false'); this.textArea.setAttribute('aria-autocomplete', 'both'); <del> if (options.get(EditorOption.domReadOnly)) { </del> <ins> if (options.get(EditorOption.domReadOnly) && options.get(EditorOption.readOnly)) { </ins> this.textArea.setAttribute('readonly', 'true'); }


Question: <!-- 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.56.0-insider OS Version: MacOS Big Sur 11.2.3 Steps to Reproduce: Settings and and editor it manually. a rule: editors can't be edited anymore. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- 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. --

this.textArea.setAttribute('aria-label', this._getAriaLabel(options)); this.textArea.setAttribute('tabindex', String(options.get(EditorOption.tabIndex))); <del> if (e.hasChanged(EditorOption.domReadOnly)) { if (options.get(EditorOption.domReadOnly)) { </del> <ins> if (e.hasChanged(EditorOption.domReadOnly) || e.hasChanged(EditorOption.readOnly)) { if (options.get(EditorOption.domReadOnly) && options.get(EditorOption.readOnly)) { </ins> this.textArea.setAttribute('readonly', 'true'); } else { this.textArea.removeAttribute('readonly');


Question:
editor hover over any link correctly uses and ignores ! VS Code version: Code - Insiders 1.56.0-insider (, 2021-04-16T11:25:09.662Z) OS version: Windows_NT x64 10.0. <!-- generated by issue reporter --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.57 --<!-- potentialduplicatescomment --
can you explain the issue/feature to me a bit more? The way I am understanding it right now, is the behavior I am seeing, so I think I am misunderstanding something. I have this in my settings. This is what I see. Where/when am I expected to see the blue text? <img width="939" alt="Screen Shot 2021-05-07 at 6 43 02 PM" src="https://user-"
when you mouseover the link, like here: !
thanks for clarifying, submitted a PR for this.

import { ModesGlyphHoverWidget } from 'vs/editor/contrib/hover/modesGlyphHover'; import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { IOpenerService } from 'vs/platform/opener/common/opener'; <del> import { editorHoverBackground, editorHoverBorder, editorHoverHighlight, textCodeBlockBackground, textLinkForeground, editorHoverStatusBarBackground, editorHoverForeground } from 'vs/platform/theme/common/colorRegistry'; </del> <ins> import { editorHoverBackground, editorHoverBorder, editorHoverHighlight, textCodeBlockBackground, textLinkForeground, editorHoverStatusBarBackground, editorHoverForeground, textLinkActiveForeground } from 'vs/platform/theme/common/colorRegistry'; </ins> import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { AccessibilitySupport } from 'vs/platform/accessibility/common/accessibility'; import { GotoDefinitionAtPositionEditorContribution } from 'vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition';


Question:
editor hover over any link correctly uses and ignores ! VS Code version: Code - Insiders 1.56.0-insider (, 2021-04-16T11:25:09.662Z) OS version: Windows_NT x64 10.0. <!-- generated by issue reporter --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.57 --<!-- potentialduplicatescomment --
can you explain the issue/feature to me a bit more? The way I am understanding it right now, is the behavior I am seeing, so I think I am misunderstanding something. I have this in my settings. This is what I see. Where/when am I expected to see the blue text? <img width="939" alt="Screen Shot 2021-05-07 at 6 43 02 PM" src="https://user-"
when you mouseover the link, like here: !
thanks for clarifying, submitted a PR for this.

if (link) { collector.addRule(`.monaco-editor .monaco-hover a { color: ${link}; }`); } <ins> const linkHover = theme.getColor(textLinkActiveForeground); if (linkHover) { collector.addRule(`.monaco-editor .monaco-hover a:hover { color: ${linkHover}; }`); } </ins> const hoverForeground = theme.getColor(editorHoverForeground); if (hoverForeground) { collector.addRule(`.monaco-editor .monaco-hover { color: ${hoverForeground}; }`);


Question:
If you "refresh" an item (with children) by calling and the item is not expanded, the method still gets called. should not be called until the item is expanded, otherwise potentially expensive operations can be run for no visible reason (since the children are hidden).
This could result in unexpected behavior. If an extension currently relies on to always update the children then there would be out-of-date tree items.
How would this result in unexpected behavior? If the tree item has not loaded its children, why should calling refresh on it force its children to load?
I'm concerned that some extension authors have come to depend on the current behavior to keep their internal tree structure updated. I suppose we can try it and see if there are any complaints.
I think a change like this would need to happen in the , as at the custom tree view level we have no knowledge of whether a node is currently expanded or not. Is this something you'd be interested in doing?
Not sure I follow. What describes is exactly how the AsyncDataTree works: children aren't resolved until the user expands the parent the first time.
I am looking for a way to call on the AsyncDataTree such that if the tree item passed in to is collapsed, it will: "invalidate" the children or the tree item and not actually call on that tree item rerender the tree item instead of: calling for the tree item rerendering the tree item
Oh I guess I was wrong, what I said only applies to the next level. But the first node is called with will always have its be called. We can maybe add an option here, or even change the default behavior as I see no reason for collapsed tree nodes to need a call.
any update here? This issue causes GitLens to request way more data than desired in multiple cases (before the user expands them that is).
Thank you!
Thanks for the nudge!
Maybe it's easier if you verify this one.
will verify.
FYI, I tested GitLens with this change (in today's insiders) and it looks good to me!

return result; } <ins> if (node !== this.root) { const treeNode = this.tree.getNode(node); if (treeNode.collapsed) { node.hasChildren = !!this.dataSource.hasChildren(node.element!); node.stale = true; return; } } </ins> return this.doRefreshSubTree(node, recursive, viewStateContext); }