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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.71.2 OS Version: macOS Monterey 12.5.1 (21G83) Steps to Reproduce: file named the file to the title of the file's editor tab <img width="199" alt="image" src="https://user-"Is still , not the new name . until reopen the file. But rename to is ok. Also reanme to is ok. Just rename to is not ok.
Can you try to reproduce with our nightly insider builds? You can give our preview releases a try from:
rename to is not ok. rename to is ok. It seems that some intersting things work wrong here.
Can you try to run where is an empty folder? This will ensure Code is starting with a fresh data directory, e.g. no specific settings and without any extensions running.
As you see, nothing changed.
Hm yeah I think I see it too, the first rename works fine but then renaming back does not work, is that what you see?
this is a funny one and indeed a regression from our work to always go through the editor resolver when resolving editors and not go through the as a shortcut. Steps open an empty folder with 1 file open the file rename it from the explorer to verify the tab label updates rename it from the explorer to the label does not update Here is how it used to be the rename operation will eventually hit since this is a default text editor we would directly use we figure out that we have an existing editor input so we do not create a new one however we update its preferred resource this triggers a label change event that will update the tab label =this works every time you rename, irrespective of going back and forward of the name Here is how it is today we also end up in however we always now go to the editor resolver (which imho is good) the editor resolver however does not consider the input to be a new input after the first rename because the canonical resource is still how it was in the begining, it will do an early return as such, the inputs preferred resource is never updated Now I am actually not so sure how to fix this. I am a bit worried that updating the method to respect resource path casing may break other behaviour that relies on the current behaviour. Maybe the resolver should not be so clever to do an early return? Why do we do this?
Yeah maybe, I think it was to prevent creating too many inputs and calling unnecessary factories when things are not actually changing at all. I guess we could always remove the early return and see what breaks.
At least for text file editors, there is caching so that we do not end up with an editor input each time, but I think the same issue already exists today: if you do not have a tab as active and the editor resolver is used to bring up that editor, we would delegate the decision whether to create an editor input or not to the provider and so its up to the provider imho to do the caching.
Sorry, got caught up in other work and missed this. Will attempt a fix early in debt week for the November release as it is too risky to go in this late

assert.strictEqual(untitledEditorFactoryCalled, 0); assert.strictEqual(diffEditorFactoryCalled, 0); <del> assert.ok(!lastEditorFactoryEditor); </del> assert.ok(!lastUntitledEditorFactoryEditor); assert.ok(!lastDiffEditorFactoryEditor);


Question:
Open terminal and run command After it finishes, there is a freeze. Some times I see window is not responding dialog Now type command Freezes again Here is the profile that is captured while running command Here is the profile that is captured while running command I have set to
getOutputMatch can be too expensive: ! Is some quick fix not working on just a small line range?
The second one: !
Oh none of the quick fixes use offset or length currently. We should force that, otherwise the regex will run on every line.

addNewLine?: boolean; } <ins> /** * A matcher that runs on a sub-section of a terminal command's output */ </ins> export interface ITerminalOutputMatcher { <ins> /** * A string or regex to match against the unwrapped line. */ </ins> lineMatcher: string | RegExp; <del> anchor?: 'top' | 'bottom'; offset?: number; length?: number; </del> <ins> /** * Which side of the output to anchor the {@link offset} and {@link length} against. */ anchor: 'top' | 'bottom'; /** * How far from either the top or the bottom of the butter to start matching against. */ offset: number; /** * The number of rows to match against, this should be as small as possible for performance * reasons. */ length: number; </ins> } export interface IXtermTerminal {


Question:
Open terminal and run command After it finishes, there is a freeze. Some times I see window is not responding dialog Now type command Freezes again Here is the profile that is captured while running command Here is the profile that is captured while running command I have set to
getOutputMatch can be too expensive: ! Is some quick fix not working on just a small line range?
The second one: !
Oh none of the quick fixes use offset or length currently. We should force that, otherwise the regex will run on every line.

export function gitSimilarCommand(): ITerminalContextualActionOptions { return { commandLineMatcher: GitCommandLineRegex, <del> outputMatcher: { lineMatcher: GitSimilarOutputRegex, anchor: 'bottom' }, </del> <ins> outputMatcher: { lineMatcher: GitSimilarOutputRegex, anchor: 'bottom', offset: 0, length: 3 }, </ins> actionName: (matchResult: ContextualMatchResult) => matchResult.outputMatch ? `Run git ${matchResult.outputMatch[1]}` : ``, exitStatus: false, getActions: (matchResult: ContextualMatchResult, command: ITerminalCommand) => {


Question:
Open terminal and run command After it finishes, there is a freeze. Some times I see window is not responding dialog Now type command Freezes again Here is the profile that is captured while running command Here is the profile that is captured while running command I have set to
getOutputMatch can be too expensive: ! Is some quick fix not working on just a small line range?
The second one: !
Oh none of the quick fixes use offset or length currently. We should force that, otherwise the regex will run on every line.

return { actionName: (matchResult: ContextualMatchResult) => matchResult.outputMatch ? `Free port ${matchResult.outputMatch[1]}` : '', commandLineMatcher: AnyCommandLineRegex, <del> outputMatcher: !isWindows ? { lineMatcher: FreePortOutputRegex, anchor: 'bottom' } : undefined, </del> <ins> // TODO: Support free port on Windows https://github.com/microsoft/vscode/issues/161775 outputMatcher: isWindows ? undefined : { lineMatcher: FreePortOutputRegex, anchor: 'bottom', offset: 0, length: 20 }, exitStatus: false, </ins> getActions: (matchResult: ContextualMatchResult, command: ITerminalCommand) => { const port = matchResult?.outputMatch?.[1]; if (!port) {


Question:
Open terminal and run command After it finishes, there is a freeze. Some times I see window is not responding dialog Now type command Freezes again Here is the profile that is captured while running command Here is the profile that is captured while running command I have set to
getOutputMatch can be too expensive: ! Is some quick fix not working on just a small line range?
The second one: !
Oh none of the quick fixes use offset or length currently. We should force that, otherwise the regex will run on every line.

return { actionName: (matchResult: ContextualMatchResult) => matchResult.outputMatch ? `Git push ${matchResult.outputMatch[1]}` : '', commandLineMatcher: GitPushCommandLineRegex, <del> outputMatcher: { lineMatcher: GitPushOutputRegex, anchor: 'bottom' }, </del> <ins> outputMatcher: { lineMatcher: GitPushOutputRegex, anchor: 'bottom', offset: 0, length: 5 }, </ins> exitStatus: false, getActions: (matchResult: ContextualMatchResult, command: ITerminalCommand) => { const branch = matchResult?.outputMatch?.[1];


Question:
Open terminal and run command After it finishes, there is a freeze. Some times I see window is not responding dialog Now type command Freezes again Here is the profile that is captured while running command Here is the profile that is captured while running command I have set to
getOutputMatch can be too expensive: ! Is some quick fix not working on just a small line range?
The second one: !
Oh none of the quick fixes use offset or length currently. We should force that, otherwise the regex will run on every line.

return { actionName: (matchResult: ContextualMatchResult) => matchResult.outputMatch ? `Create PR for ${matchResult.outputMatch[1]}` : '', commandLineMatcher: GitPushCommandLineRegex, <del> outputMatcher: { lineMatcher: GitCreatePrOutputRegex, anchor: 'bottom' }, </del> <ins> outputMatcher: { lineMatcher: GitCreatePrOutputRegex, anchor: 'bottom', offset: 0, length: 5 }, </ins> exitStatus: true, getActions: (matchResult: ContextualMatchResult, command?: ITerminalCommand) => { if (!command) {


Question:
Testing clone a repo from within VS Code when done a notification is shown IMO a modal is the better choice of UI because this something I am awaiting and wanting to take action on <img width="1527" alt="Screenshot 2022-09-27 at 11 15 02" src="https://user-"
it makes sense to me. please let me know if you have any concerns. Thanks!
, as having notifications snoozed always, I was missing this notification but I think it should be modal as it is part of a flow that I triggered.
No concerns with using a modal

choices.push(addToWorkspace); } <del> const result = await window.showInformationMessage(message, ...choices); </del> <ins> const result = await window.showInformationMessage(message, { modal: true }, ...choices); </ins> action = result === open ? PostCloneAction.Open : result === openNewWindow ? PostCloneAction.OpenNewWindow


Question: Testing The feature is called . But it does more than fetch, it also pulls. Fetch typically only 'downloads' commits, but does not update any branches. Maybe the proper name would be:

"default": false, "description": "%config.rebaseWhenSync%" }, <del> "git.fetchBeforeCheckout": { </del> <ins> "git.pullBeforeCheckout": { </ins> "type": "boolean", "scope": "resource", "default": false, <del> "description": "%config.fetchBeforeCheckout%" </del> <ins> "description": "%config.pullBeforeCheckout%" </ins> }, "git.fetchOnPull": { "type": "boolean",


Question: Testing The feature is called . But it does more than fetch, it also pulls. Fetch typically only 'downloads' commits, but does not update any branches. Maybe the proper name would be:

"config.rebaseWhenSync": "Force git to use rebase when running the sync command.", "config.confirmEmptyCommits": "Always confirm the creation of empty commits for the 'Git: Commit Empty' command.", "config.fetchOnPull": "When enabled, fetch all branches when pulling. Otherwise, fetch just the current one.", <del> "config.fetchBeforeCheckout": "Controls whether a branch that does not have outgoing commits is fast-forwarded before it is checked out.", </del> <ins> "config.pullBeforeCheckout": "Controls whether a branch that does not have outgoing commits is fast-forwarded before it is checked out.", </ins> "config.pullTags": "Fetch all tags when pulling.", "config.pruneOnFetch": "Prune when fetching.", "config.autoStash": "Stash any changes before pulling and restore them after successful pull.",


Question: Testing The feature is called . But it does more than fetch, it also pulls. Fetch typically only 'downloads' commits, but does not update any branches. Maybe the proper name would be:

} const config = workspace.getConfiguration('git', Uri.file(this.repository.root)); <del> const fetchBeforeCheckout = config.get<boolean>('fetchBeforeCheckout', false) === true; </del> <ins> const pullBeforeCheckout = config.get<boolean>('pullBeforeCheckout', false) === true; </ins> <del> if (fetchBeforeCheckout) { </del> <ins> if (pullBeforeCheckout) { </ins> await this.repository.fastForwardBranch(this.ref.name!); }


Question:
Testing I wonder if we should run the command to save all files (not untitled files) before triggering the "Continue on" fully? I think ensuring that dirty files are saved but also that the data was synced up before opening the workspace elsewhere would be best?
I am not presented with any options after running the command - perhaps we shouldn't show that in the command palette unless there are some or add an action that helps me get some options? !
Should we say here? !

import { sha1Hex } from 'vs/base/browser/hash'; import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; import { IActivityService, NumberBadge } from 'vs/workbench/services/activity/common/activity'; <ins> import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; </ins> registerSingleton(IEditSessionsLogService, EditSessionsLogService, InstantiationType.Delayed); registerSingleton(IEditSessionsStorageService, EditSessionsWorkbenchService, InstantiationType.Delayed);


Question:
Testing I wonder if we should run the command to save all files (not untitled files) before triggering the "Continue on" fully? I think ensuring that dirty files are saved but also that the data was synced up before opening the workspace elsewhere would be best?
I am not presented with any options after running the command - perhaps we shouldn't show that in the command palette unless there are some or add an action that helps me get some options? !
Should we say here? !

@ILifecycleService private readonly lifecycleService: ILifecycleService, @IStorageService private readonly storageService: IStorageService, @IActivityService private readonly activityService: IActivityService, <ins> @IEditorService private readonly editorService: IEditorService, </ins> ) { super();


Question:
Testing I wonder if we should run the command to save all files (not untitled files) before triggering the "Continue on" fully? I think ensuring that dirty files are saved but also that the data was synced up before opening the workspace elsewhere would be best?
I am not presented with any options after running the command - perhaps we shouldn't show that in the command palette unless there are some or add an action that helps me get some options? !
Should we say here? !

// Run the store action to get back a ref let ref: string | undefined; if (shouldStoreEditSession) { <del> ref = await that.progressService.withProgress({ location: ProgressLocation.Notification, type: 'syncing', title: localize('store your edit session', 'Storing your edit session...') }, async () => that.storeEditSession(false)); </del> <ins> ref = await that.storeEditSession(false); </ins> } let uri = workspaceUri ?? await that.pickContinueEditSessionDestination();


Question:
Testing I wonder if we should run the command to save all files (not untitled files) before triggering the "Continue on" fully? I think ensuring that dirty files are saved but also that the data was synced up before opening the workspace elsewhere would be best?
I am not presented with any options after running the command - perhaps we shouldn't show that in the command palette unless there are some or add an action that helps me get some options? !
Should we say here? !

} else if (ref !== undefined) { this.notificationService.warn(localize('no edit session content for ref', 'Could not resume edit session contents for ID {0}.', ref)); } <del> this.logService.info(ref !== undefined ? `Aborting resuming edit session as no edit session content is available to be applied from ref ${ref}.` : `Aborting resuming edit session as no edit session content is available to be applied`); </del> <ins> this.logService.info(`Aborting resuming edit session as no edit session content is available to be applied from ref ${ref}.`); </ins> return; } const editSession = data.editSession;


Question:
Testing I wonder if we should run the command to save all files (not untitled files) before triggering the "Continue on" fully? I think ensuring that dirty files are saved but also that the data was synced up before opening the workspace elsewhere would be best?
I am not presented with any options after running the command - perhaps we shouldn't show that in the command palette unless there are some or add an action that helps me get some options? !
Should we say here? !

const folders: Folder[] = []; let hasEdits = false; <ins> // Save all saveable editors before building edit session contents await this.editorService.saveAll(); </ins> for (const repository of this.scmService.repositories) { // Look through all resource groups and compute which files were added/modified/deleted const trackedUris = this.getChangedResources(repository); // A URI might appear in more than one resource group


Question:
Testing I wonder if we should run the command to save all files (not untitled files) before triggering the "Continue on" fully? I think ensuring that dirty files are saved but also that the data was synced up before opening the workspace elsewhere would be best?
I am not presented with any options after running the command - perhaps we shouldn't show that in the command palette unless there are some or add an action that helps me get some options? !
Should we say here? !

import { ITextModelService } from 'vs/editor/common/services/resolverService'; import { ILifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycle'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; <ins> import { IEditorService, ISaveAllEditorsOptions } from 'vs/workbench/services/editor/common/editorService'; </ins> const folderName = 'test-folder'; const folderUri = URI.file(`/${folderName}`);


Question:
Testing I wonder if we should run the command to save all files (not untitled files) before triggering the "Continue on" fully? I think ensuring that dirty files are saved but also that the data was synced up before opening the workspace elsewhere would be best?
I am not presented with any options after running the command - perhaps we shouldn't show that in the command palette unless there are some or add an action that helps me get some options? !
Should we say here? !

instantiationService.stub(ITextModelService, new class extends mock<ITextModelService>() { override registerTextModelContentProvider = () => ({ dispose: () => { } }); }); <ins> instantiationService.stub(IEditorService, new class extends mock<IEditorService>() { override saveAll = async (_options: ISaveAllEditorsOptions) => true; }); </ins> editSessionsContribution = instantiationService.createInstance(EditSessionsContribution); });


Question:
Testing I think the merge editor CodeLens actions are the only examples I've seen of icons being used—not sure they are obvious/big enough to really be of much value here. Is there any prior art for using them? <img width="269" alt="CleanShot 2022-09-27 at 11 42 19 src="https://user-"<img width="244" alt="CleanShot 2022-09-27 at 11 43 33 src="https://user-"
I can remove them. Personally I like them, as they give a non-textual clue about what is going to happen.
Why don't we start with the minimal text and then we can always choose to add them (or something else) back. Harder to remove things once they are in.

if (!state.conflicting && !state.isInputIncluded(inputNumber)) { result.push( !state.isInputIncluded(inputNumber) <del> ? command(localize('accept', "$(pass) Accept {0}", inputData.title), async () => { </del> <ins> ? command(localize('accept', "Accept {0}", inputData.title), async () => { </ins> transaction((tx) => { model.setState( modifiedBaseRange,


Question:
Testing I think the merge editor CodeLens actions are the only examples I've seen of icons being used—not sure they are obvious/big enough to really be of much value here. Is there any prior art for using them? <img width="269" alt="CleanShot 2022-09-27 at 11 42 19 src="https://user-"<img width="244" alt="CleanShot 2022-09-27 at 11 43 33 src="https://user-"
I can remove them. Personally I like them, as they give a non-textual clue about what is going to happen.
Why don't we start with the minimal text and then we can always choose to add them (or something else) back. Harder to remove things once they are in.

); }); }) <del> : command(localize('remove', "$(error) Remove {0}", inputData.title), async () => { </del> <ins> : command(localize('remove', "Remove {0}", inputData.title), async () => { </ins> transaction((tx) => { model.setState( modifiedBaseRange,


Question:
Testing I think the merge editor CodeLens actions are the only examples I've seen of icons being used—not sure they are obvious/big enough to really be of much value here. Is there any prior art for using them? <img width="269" alt="CleanShot 2022-09-27 at 11 42 19 src="https://user-"<img width="244" alt="CleanShot 2022-09-27 at 11 43 33 src="https://user-"
I can remove them. Personally I like them, as they give a non-textual clue about what is going to happen.
Why don't we start with the minimal text and then we can always choose to add them (or something else) back. Harder to remove things once they are in.

if (modifiedBaseRange.canBeCombined && state.isEmpty) { result.push( state.input1 && state.input2 <del> ? command(localize('removeBoth', "$(error) Remove Both"), async () => { </del> <ins> ? command(localize('removeBoth', "Remove Both"), async () => { </ins> transaction((tx) => { model.setState( modifiedBaseRange,


Question:
Testing I think the merge editor CodeLens actions are the only examples I've seen of icons being used—not sure they are obvious/big enough to really be of much value here. Is there any prior art for using them? <img width="269" alt="CleanShot 2022-09-27 at 11 42 19 src="https://user-"<img width="244" alt="CleanShot 2022-09-27 at 11 43 33 src="https://user-"
I can remove them. Personally I like them, as they give a non-textual clue about what is going to happen.
Why don't we start with the minimal text and then we can always choose to add them (or something else) back. Harder to remove things once they are in.

); }); }) <del> : command(localize('acceptBoth', "$(pass) Accept Both"), async () => { </del> <ins> : command(localize('acceptBoth', "Accept Both"), async () => { </ins> transaction((tx) => { model.setState( modifiedBaseRange,


Question:
Testing I think the merge editor CodeLens actions are the only examples I've seen of icons being used—not sure they are obvious/big enough to really be of much value here. Is there any prior art for using them? <img width="269" alt="CleanShot 2022-09-27 at 11 42 19 src="https://user-"<img width="244" alt="CleanShot 2022-09-27 at 11 43 33 src="https://user-"
I can remove them. Personally I like them, as they give a non-textual clue about what is going to happen.
Why don't we start with the minimal text and then we can always choose to add them (or something else) back. Harder to remove things once they are in.

const stateToggles: IContentWidgetAction[] = []; if (state.input1) { <del> result.push(command(localize('remove', "$(error) Remove {0}", model.input1.title), async () => { </del> <ins> result.push(command(localize('remove', "Remove {0}", model.input1.title), async () => { </ins> transaction((tx) => { model.setState( modifiedBaseRange,


Question:
Testing I think the merge editor CodeLens actions are the only examples I've seen of icons being used—not sure they are obvious/big enough to really be of much value here. Is there any prior art for using them? <img width="269" alt="CleanShot 2022-09-27 at 11 42 19 src="https://user-"<img width="244" alt="CleanShot 2022-09-27 at 11 43 33 src="https://user-"
I can remove them. Personally I like them, as they give a non-textual clue about what is going to happen.
Why don't we start with the minimal text and then we can always choose to add them (or something else) back. Harder to remove things once they are in.

); } if (state.input2) { <del> result.push(command(localize('remove', "$(error) Remove {0}", model.input2.title), async () => { </del> <ins> result.push(command(localize('remove', "Remove {0}", model.input2.title), async () => { </ins> transaction((tx) => { model.setState( modifiedBaseRange,


Question:
Testing I think the merge editor CodeLens actions are the only examples I've seen of icons being used—not sure they are obvious/big enough to really be of much value here. Is there any prior art for using them? <img width="269" alt="CleanShot 2022-09-27 at 11 42 19 src="https://user-"<img width="244" alt="CleanShot 2022-09-27 at 11 43 33 src="https://user-"
I can remove them. Personally I like them, as they give a non-textual clue about what is going to happen.
Why don't we start with the minimal text and then we can always choose to add them (or something else) back. Harder to remove things once they are in.

if (state.conflicting) { result.push( <del> command(localize('resetToBase', "$(error) Reset to base"), async () => { </del> <ins> command(localize('resetToBase', "Reset to base"), async () => { </ins> transaction((tx) => { model.setState( modifiedBaseRange,


Question:
Testing ! I would have expected it to be centered.... though this could just be this codicon.
Is this happening with all codicons or just this one?
I can see it for codicons. Fixing it

justify-content: center; align-items: center; font-size: 14px; <del> line-height: 16px; </del> border-radius: 8px; }


Question:
<img width="364" alt="image" src="https://user-"I think this dialog could get some UX love. If we want to keep the very long primary button label, I would use title casing to be consistent with other dialog buttons. But I also think just having "Accept Merge" is fine, given the message in the dialog points out about the conflicts. //cc
Now that I see this dialog: <img width="291" alt="image" src="https://user-"I think we can align both How about: "Accept with Conflicts" using in the dialog "The file contains unhandled conflicts"
PR:

*--------------------------------------------------------------------------------------------*/ import { Codicon } from 'vs/base/common/codicons'; <ins> import { basename } from 'vs/base/common/resources'; </ins> import { URI, UriComponents } from 'vs/base/common/uri'; import { localize } from 'vs/nls'; import { ILocalizedString } from 'vs/platform/action/common/action';


Question:
<img width="364" alt="image" src="https://user-"I think this dialog could get some UX love. If we want to keep the very long primary button label, I would use title casing to be consistent with other dialog buttons. But I also think just having "Accept Merge" is fine, given the message in the dialog points out about the conflicts. //cc
Now that I see this dialog: <img width="291" alt="image" src="https://user-"I think we can align both How about: "Accept with Conflicts" using in the dialog "The file contains unhandled conflicts"
PR:

if (viewModel.model.unhandledConflictsCount.get() > 0) { const confirmResult = await dialogService.confirm({ type: 'info', <del> message: localize('mergeEditor.acceptMerge.unhandledConflicts', "There are still unhandled conflicts. Are you sure you want to accept the merge?"), primaryButton: localize('mergeEditor.acceptMerge.unhandledConflicts.accept', "Complete merge with unhandled conflicts"), </del> <ins> message: localize('mergeEditor.acceptMerge.unhandledConflicts.message', "Do you want to complete the merge of {0}?", basename(inputModel.resultUri)), detail: localize('mergeEditor.acceptMerge.unhandledConflicts.detail', "The file contains unhandled conflicts."), primaryButton: localize('mergeEditor.acceptMerge.unhandledConflicts.accept', "Complete with Conflicts"), </ins> secondaryButton: localize('mergeEditor.acceptMerge.unhandledConflicts.cancel', "Cancel"), });


Question:
Just wondering whether the "Extensions" output channel is actually used for anything? I have checked it when troubleshooting extensions many times and don't think I've ever actually seen any output in there
This is being used by debug adapter Feel free to remove it if you are not using.
Oh, wow No clue about that
I guess it was introduced in , previously showed errors from all extensions, now I think those errors go to other general logs, and probably just this one usage got left behind. any idea if there was some discussion about this in the past? Or I will remove it
not aware of anyone using it. I think we can go ahead and remove it. fyi
bit off-topic here but I was looking around for an issue around a "combined" log (showing the channel inline) - is there such a thing and I'm just missing it? that way I wouldn't have to click around into various logs when I'm trying to figure out what's going on with vscode - I realize I could tail the various files and write a script to make that more convenient I was also thinking maybe an extension could fill that need but then I saw
I think there is an issue to open multiple output channels at once. Please search into our issues.
there are only 10 open issues tagged output - altho this issue is about output and got labeled debug instead - I looked at the debug tagged issues too and didn't see it - should I create one?
Here is the similar request -

*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> import { Promises } from 'vs/base/node/pfs'; </del> import * as cp from 'child_process'; <del> import * as stream from 'stream'; import * as nls from 'vs/nls'; </del> import * as net from 'net'; <del> import * as path from 'vs/base/common/path'; import * as strings from 'vs/base/common/strings'; </del> <ins> import * as stream from 'stream'; </ins> import * as objects from 'vs/base/common/objects'; <ins> import * as path from 'vs/base/common/path'; </ins> import * as platform from 'vs/base/common/platform'; <del> import { ExtensionsChannelId } from 'vs/platform/extensionManagement/common/extensionManagement'; import { IOutputService } from 'vs/workbench/services/output/common/output'; import { IDebugAdapterExecutable, IDebuggerContribution, IPlatformSpecificAdapterContribution, IDebugAdapterServer, IDebugAdapterNamedPipeServer } from 'vs/workbench/contrib/debug/common/debug'; </del> <ins> import * as strings from 'vs/base/common/strings'; import { Promises } from 'vs/base/node/pfs'; import * as nls from 'vs/nls'; </ins> import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'; <ins> import { IDebugAdapterExecutable, IDebugAdapterNamedPipeServer, IDebugAdapterServer, IDebuggerContribution, IPlatformSpecificAdapterContribution } from 'vs/workbench/contrib/debug/common/debug'; </ins> import { AbstractDebugAdapter } from '../common/abstractDebugAdapter'; /**


Question:
Just wondering whether the "Extensions" output channel is actually used for anything? I have checked it when troubleshooting extensions many times and don't think I've ever actually seen any output in there
This is being used by debug adapter Feel free to remove it if you are not using.
Oh, wow No clue about that
I guess it was introduced in , previously showed errors from all extensions, now I think those errors go to other general logs, and probably just this one usage got left behind. any idea if there was some discussion about this in the past? Or I will remove it
not aware of anyone using it. I think we can go ahead and remove it. fyi
bit off-topic here but I was looking around for an issue around a "combined" log (showing the channel inline) - is there such a thing and I'm just missing it? that way I wouldn't have to click around into various logs when I'm trying to figure out what's going on with vscode - I realize I could tail the various files and write a script to make that more convenient I was also thinking maybe an extension could fill that need but then I saw
I think there is an issue to open multiple output channels at once. Please search into our issues.
there are only 10 open issues tagged output - altho this issue is about output and got labeled debug instead - I looked at the debug tagged issues too and didn't see it - should I create one?
Here is the similar request -

private serverProcess: cp.ChildProcess | undefined; <del> constructor(private adapterExecutable: IDebugAdapterExecutable, private debugType: string, private readonly outputService?: IOutputService) { </del> <ins> constructor(private adapterExecutable: IDebugAdapterExecutable, private debugType: string) { </ins> super(); }


Question:
Just wondering whether the "Extensions" output channel is actually used for anything? I have checked it when troubleshooting extensions many times and don't think I've ever actually seen any output in there
This is being used by debug adapter Feel free to remove it if you are not using.
Oh, wow No clue about that
I guess it was introduced in , previously showed errors from all extensions, now I think those errors go to other general logs, and probably just this one usage got left behind. any idea if there was some discussion about this in the past? Or I will remove it
not aware of anyone using it. I think we can go ahead and remove it. fyi
bit off-topic here but I was looking around for an issue around a "combined" log (showing the channel inline) - is there such a thing and I'm just missing it? that way I wouldn't have to click around into various logs when I'm trying to figure out what's going on with vscode - I realize I could tail the various files and write a script to make that more convenient I was also thinking maybe an extension could fill that need but then I saw
I think there is an issue to open multiple output channels at once. Please search into our issues.
there are only 10 open issues tagged output - altho this issue is about output and got labeled debug instead - I looked at the debug tagged issues too and didn't see it - should I create one?
Here is the similar request -

this._onError.fire(error); }); <del> const outputService = this.outputService; if (outputService) { const sanitize = (s: string) => s.toString().replace(/r?n$/mg, ''); // this.serverProcess.stdout.on('data', (data: string) => { // 	console.log('%c' + sanitize(data), 'background: #ddd; font-style: italic;'); // }); this.serverProcess.stderr!.on('data', (data: string) => { const channel = outputService.getChannel(ExtensionsChannelId); channel?.append(sanitize(data)); }); } else { this.serverProcess.stderr!.resume(); } </del> <ins> this.serverProcess.stderr!.resume(); </ins> // finally connect to the DA this.connect(this.serverProcess.stdout!, this.serverProcess.stdin!);


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: (currently at ) OS Version: n/a Steps to Reproduce: the existing code in and turn it into a function that accepts a parameter: that function in , e.g. using . should error, but don't: - According to the error on , requires =1.10.1, but is only enforcing = 1 or = x.10. Granted, there is no yarn v3.10 yet, but there may be someday. And if it actually requires =1.10.1 (and not just =1.10.0) as the error states, it should enforce that as well.
Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.71.2. Please try upgrading to the latest version and checking whether this issue remains. Happy Coding!
Related docs change:

const fs = require('fs'); const cp = require('child_process'); const yarnVersion = cp.execSync('yarn -v', { encoding: 'utf8' }).trim(); <del> const parsedYarnVersion = /^(d+).(d+)./.exec(yarnVersion); </del> <ins> const parsedYarnVersion = /^(d+).(d+).(d+)/.exec(yarnVersion); </ins> const majorYarnVersion = parseInt(parsedYarnVersion[1]); const minorYarnVersion = parseInt(parsedYarnVersion[2]); <del> if (majorYarnVersion < 1 || minorYarnVersion < 10) { console.error('033[1;31m*** Please use yarn >=1.10.1.033[0;0m'); </del> <ins> const patchYarnVersion = parseInt(parsedYarnVersion[3]); if ( majorYarnVersion < 1 || majorYarnVersion === 1 && ( minorYarnVersion < 10 || (minorYarnVersion === 10 && patchYarnVersion < 1) ) || majorYarnVersion >= 2 ) { console.error('033[1;31m*** Please use yarn >=1.10.1 and <2.033[0;0m'); </ins> err = true; }


} } <del> const LINK_REGEX = /[([^]]+)](((?:https?://|command:|file:)[^)s]+)(?: ("|')([^3]+)(3))?)/gi; </del> <ins> const LINK_REGEX = /[([^]]+)](((?:https?://|command:|file:)[^)s]+)(?: (["'])(.+?)(3))?)/gi; </ins> export function parseLinkedText(text: string): LinkedText { const result: LinkedTextNode[] = [];


'...' ]); }); <ins> test('Should match non-greedily', () => { assert.deepStrictEqual(parseLinkedText('a [link text 1](http://link.href "title1") b [link text 2](http://link.href "title2") c').nodes, [ 'a ', { label: 'link text 1', href: 'http://link.href', title: 'title1' }, ' b ', { label: 'link text 2', href: 'http://link.href', title: 'title2' }, ' c', ]); }); </ins> });


Question:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --Hello, I searched for an existing ticket with , but didn't find anything related. <!-- Describe the feature you'd like. --Prior to v1.72.0, the extension sidebar showed which version an extension will be updated to. And when hovering over the extension in the sidebar, or opening the extension in a tab, you could see the currently installed one. That way you could see for example if an update is a major, minor, or patch update, and depending on that dig into the release notes or not. Further in the past, IIRC, the extension sidebar even showed both, installed and target version, which was even more convenient. Now with v1.72.0, I don't see anywhere the target version of an extension update. Many extensions don't keep a proper changelog, so that's not a reliable place to check. Here's an example for vscode-icons, a very popular extension with 12 million installs: ! Only when going to the Marketplace webpage () we see the target version: ! =Feature request: Please make the target version for extension updates visible inside of VS Code again.
Latest version is now shown in the hover. Update button in the extension editor shows the version.

this.instantiationService.createInstance(ReloadAction), this.instantiationService.createInstance(ExtensionStatusLabelAction), this.instantiationService.createInstance(ActionWithDropDownAction, 'extensions.updateActions', '', <del> [[this.instantiationService.createInstance(UpdateAction)], [this.instantiationService.createInstance(SkipUpdateAction)]]), </del> <ins> [[this.instantiationService.createInstance(UpdateAction, true)], [this.instantiationService.createInstance(SkipUpdateAction)]]), </ins> this.instantiationService.createInstance(SetColorThemeAction), this.instantiationService.createInstance(SetFileIconThemeAction), this.instantiationService.createInstance(SetProductIconThemeAction),


Question:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --Hello, I searched for an existing ticket with , but didn't find anything related. <!-- Describe the feature you'd like. --Prior to v1.72.0, the extension sidebar showed which version an extension will be updated to. And when hovering over the extension in the sidebar, or opening the extension in a tab, you could see the currently installed one. That way you could see for example if an update is a major, minor, or patch update, and depending on that dig into the release notes or not. Further in the past, IIRC, the extension sidebar even showed both, installed and target version, which was even more convenient. Now with v1.72.0, I don't see anywhere the target version of an extension update. Many extensions don't keep a proper changelog, so that's not a reliable place to check. Here's an example for vscode-icons, a very popular extension with 12 million installs: ! Only when going to the Marketplace webpage () we see the target version: ! =Feature request: Please make the target version for extension updates visible inside of VS Code again.
Latest version is now shown in the hover. Update button in the extension editor shows the version.

export class UpdateAction extends AbstractUpdateAction { constructor( <ins> private readonly verbose: boolean, </ins> @IExtensionsWorkbenchService override readonly extensionsWorkbenchService: IExtensionsWorkbenchService, @IInstantiationService protected readonly instantiationService: IInstantiationService, ) { super(`extensions.update`, localize('update', "Update"), extensionsWorkbenchService); } <ins> override update(): void { super.update(); if (this.extension) { this.label = this.verbose ? localize('update to', "Update to v{0}", this.extension.latestVersion) : localize('update', "Update"); } } </ins> override async run(): Promise<any> { if (!this.extension) { return;


Question:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --Hello, I searched for an existing ticket with , but didn't find anything related. <!-- Describe the feature you'd like. --Prior to v1.72.0, the extension sidebar showed which version an extension will be updated to. And when hovering over the extension in the sidebar, or opening the extension in a tab, you could see the currently installed one. That way you could see for example if an update is a major, minor, or patch update, and depending on that dig into the release notes or not. Further in the past, IIRC, the extension sidebar even showed both, installed and target version, which was even more convenient. Now with v1.72.0, I don't see anywhere the target version of an extension update. Many extensions don't keep a proper changelog, so that's not a reliable place to check. Here's an example for vscode-icons, a very popular extension with 12 million installs: ! Only when going to the Marketplace webpage () we see the target version: ! =Feature request: Please make the target version for extension updates visible inside of VS Code again.
Latest version is now shown in the hover. Update button in the extension editor shows the version.

actionbar.onDidRun(({ error }) => error && this.notificationService.error(error)); const extensionStatusIconAction = this.instantiationService.createInstance(ExtensionStatusAction); <del> const reloadAction = this.instantiationService.createInstance(ReloadAction); </del> const actions = [ this.instantiationService.createInstance(ExtensionStatusLabelAction), this.instantiationService.createInstance(MigrateDeprecatedExtensionAction, true), <del> reloadAction, </del> <ins> this.instantiationService.createInstance(ReloadAction), </ins> this.instantiationService.createInstance(ActionWithDropDownAction, 'extensions.updateActions', '', <del> [[this.instantiationService.createInstance(UpdateAction)], [this.instantiationService.createInstance(SkipUpdateAction)]]), </del> <ins> [[this.instantiationService.createInstance(UpdateAction, false)], [this.instantiationService.createInstance(SkipUpdateAction)]]), </ins> this.instantiationService.createInstance(InstallDropdownAction), this.instantiationService.createInstance(InstallingLabelAction), this.instantiationService.createInstance(SetLanguageAction),


Question:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --Hello, I searched for an existing ticket with , but didn't find anything related. <!-- Describe the feature you'd like. --Prior to v1.72.0, the extension sidebar showed which version an extension will be updated to. And when hovering over the extension in the sidebar, or opening the extension in a tab, you could see the currently installed one. That way you could see for example if an update is a major, minor, or patch update, and depending on that dig into the release notes or not. Further in the past, IIRC, the extension sidebar even showed both, installed and target version, which was even more convenient. Now with v1.72.0, I don't see anywhere the target version of an extension update. Many extensions don't keep a proper changelog, so that's not a reliable place to check. Here's an example for vscode-icons, a very popular extension with 12 million installs: ! Only when going to the Marketplace webpage () we see the target version: ! =Feature request: Please make the target version for extension updates visible inside of VS Code again.
Latest version is now shown in the hover. Update button in the extension editor shows the version.

this.instantiationService.createInstance(SwitchToPreReleaseVersionAction, true), this.instantiationService.createInstance(ManageExtensionAction) ]; <del> const extensionHoverWidget = this.instantiationService.createInstance(ExtensionHoverWidget, { target: root, position: this.options.hoverOptions.position }, extensionStatusIconAction, reloadAction); </del> <ins> const extensionHoverWidget = this.instantiationService.createInstance(ExtensionHoverWidget, { target: root, position: this.options.hoverOptions.position }, extensionStatusIconAction); </ins> const widgets = [ recommendationWidget,


Question:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --Hello, I searched for an existing ticket with , but didn't find anything related. <!-- Describe the feature you'd like. --Prior to v1.72.0, the extension sidebar showed which version an extension will be updated to. And when hovering over the extension in the sidebar, or opening the extension in a tab, you could see the currently installed one. That way you could see for example if an update is a major, minor, or patch update, and depending on that dig into the release notes or not. Further in the past, IIRC, the extension sidebar even showed both, installed and target version, which was even more convenient. Now with v1.72.0, I don't see anywhere the target version of an extension update. Many extensions don't keep a proper changelog, so that's not a reliable place to check. Here's an example for vscode-icons, a very popular extension with 12 million installs: ! Only when going to the Marketplace webpage () we see the target version: ! =Feature request: Please make the target version for extension updates visible inside of VS Code again.
Latest version is now shown in the hover. Update button in the extension editor shows the version.

import { EnablementState, IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { IExtensionIgnoredRecommendationsService, IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { ILabelService } from 'vs/platform/label/common/label'; <del> import { extensionButtonProminentBackground, ExtensionStatusAction, ReloadAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; </del> <ins> import { extensionButtonProminentBackground, ExtensionStatusAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; </ins> import { IThemeService, ThemeIcon, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; import { EXTENSION_BADGE_REMOTE_BACKGROUND, EXTENSION_BADGE_REMOTE_FOREGROUND } from 'vs/workbench/common/theme'; import { Emitter, Event } from 'vs/base/common/event';


Question:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --Hello, I searched for an existing ticket with , but didn't find anything related. <!-- Describe the feature you'd like. --Prior to v1.72.0, the extension sidebar showed which version an extension will be updated to. And when hovering over the extension in the sidebar, or opening the extension in a tab, you could see the currently installed one. That way you could see for example if an update is a major, minor, or patch update, and depending on that dig into the release notes or not. Further in the past, IIRC, the extension sidebar even showed both, installed and target version, which was even more convenient. Now with v1.72.0, I don't see anywhere the target version of an extension update. Many extensions don't keep a proper changelog, so that's not a reliable place to check. Here's an example for vscode-icons, a very popular extension with 12 million installs: ! Only when going to the Marketplace webpage () we see the target version: ! =Feature request: Please make the target version for extension updates visible inside of VS Code again.
Latest version is now shown in the hover. Update button in the extension editor shows the version.

constructor( private readonly options: ExtensionHoverOptions, private readonly extensionStatusAction: ExtensionStatusAction, <del> private readonly reloadAction: ReloadAction, </del> @IExtensionsWorkbenchService private readonly extensionsWorkbenchService: IExtensionsWorkbenchService, @IHoverService private readonly hoverService: IHoverService, @IConfigurationService private readonly configurationService: IConfigurationService,


Question:
<!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --Hello, I searched for an existing ticket with , but didn't find anything related. <!-- Describe the feature you'd like. --Prior to v1.72.0, the extension sidebar showed which version an extension will be updated to. And when hovering over the extension in the sidebar, or opening the extension in a tab, you could see the currently installed one. That way you could see for example if an update is a major, minor, or patch update, and depending on that dig into the release notes or not. Further in the past, IIRC, the extension sidebar even showed both, installed and target version, which was even more convenient. Now with v1.72.0, I don't see anywhere the target version of an extension update. Many extensions don't keep a proper changelog, so that's not a reliable place to check. Here's an example for vscode-icons, a very popular extension with 12 million installs: ! Only when going to the Marketplace webpage () we see the target version: ! =Feature request: Please make the target version for extension updates visible inside of VS Code again.
Latest version is now shown in the hover. Update button in the extension editor shows the version.

markdown.appendText(`n`); } <ins> if (this.extension.outdated) { markdown.appendMarkdown(localize('updateRequired', "Latest version:")); markdown.appendMarkdown(` <span style="background-color:#8080802B;">** _v${this.extension.latestVersion}_** </span>`); markdown.appendText(`n`); } </ins> const preReleaseMessage = ExtensionHoverWidget.getPreReleaseMessage(this.extension); const extensionRuntimeStatus = this.extensionsWorkbenchService.getExtensionStatus(this.extension); const extensionStatus = this.extensionStatusAction.status; <del> const reloadRequiredMessage = this.reloadAction.enabled ? this.reloadAction.tooltip : ''; </del> <ins> const reloadRequiredMessage = this.extension.reloadRequiredStatus; </ins> const recommendationMessage = this.getRecommendationMessage(this.extension); if (extensionRuntimeStatus || extensionStatus || reloadRequiredMessage || recommendationMessage || preReleaseMessage) {


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: Version: 1.72.1 (Universal) Commit: OS Version: macOS 12.6. Steps to Reproduce: this file: sure it has a extension. all current instances of VS Code it with VS Code with all extensions disabled: around. In a few seconds the editor will lock up. This file has some extremely long lines, around ~65,000. I was under the impression though that VS Code stopped rendering at some cutoff, however. It appears the issue is the syntax highlighting for C#. If I open it as plain text, then I can no longer reproduce the behavior.
Here is a reduced repro: By using the command, I could find that the oniguruma regex engine gets stuck trying to match the regex: which comes from As a workaround, you can reduce the limit for C# files from 20k to something smaller e.g.: We also have the option of reducing C#'s default. We already did that for javascript to 2500.

"update-grammar": "node ../node_modules/vscode-grammar-updater/bin dotnet/csharp-tmLanguage grammars/csharp.tmLanguage ./syntaxes/csharp.tmLanguage.json" }, "contributes": { <ins> "configurationDefaults": { "[csharp]": { "editor.maxTokenizationLineLength": 2500 } }, </ins> "languages": [ { "id": "csharp",


Question:
Repo explorer, collapse the timeline view a breakpoint in  window Bug See the breakpoint being hit even through the contents of the timeline are not visible This is caused by this code: It seems to me we should try to defer this work until the view actually becomes visible
would you be willing to verify for completeness?
Works great!

private expandedSize: number | undefined = undefined; private _headerVisible = true; <ins> private _bodyRendered = false; </ins> private _minimumBodySize: number; private _maximumBodySize: number; private _ariaHeaderLabel: string;


Question:
Repo explorer, collapse the timeline view a breakpoint in  window Bug See the breakpoint being hit even through the contents of the timeline are not visible This is caused by this code: It seems to me we should try to defer this work until the view actually becomes visible
would you be willing to verify for completeness?
Works great!

this.updateHeader(); if (expanded) { <ins> if (!this._bodyRendered) { this.renderBody(this.body); this._bodyRendered = true; } </ins> if (typeof this.animationTimer === 'number') { clearTimeout(this.animationTimer); }


Question:
Repo explorer, collapse the timeline view a breakpoint in  window Bug See the breakpoint being hit even through the contents of the timeline are not visible This is caused by this code: It seems to me we should try to defer this work until the view actually becomes visible
would you be willing to verify for completeness?
Works great!

}); this.body = append(this.element, $('.pane-body')); <del> this.renderBody(this.body); </del> <ins> // Only render the body if it will be visible // Otherwise, render it when the pane is expanded if (!this._bodyRendered && this.isExpanded()) { this.renderBody(this.body); this._bodyRendered = true; } </ins> if (!this.isExpanded()) { this.body.remove();


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.72.2 OS Version: macOS Montery 12.6 Steps to Reproduce: merge editor while rebasing on a branch with a lot of branch pointers or ones with a long name The text from the "Current" column overlaps into the "Incoming" column. Confirmed that it happens with the default theme as well. !
Please try out the latest insiders, this should be fixed.
Still appears to be an issue in the latest insiders ! !

readonly model = this.viewModel.map(m => /** @description model */ m?.model); protected readonly htmlElements = h('div.code-view', [ <del> h('div.title@header', [ </del> <ins> h('div.header@header', [ </ins> h('span.title@title'), h('span.description@description'), h('span.detail@detail'),


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.72.2 OS Version: macOS Montery 12.6 Steps to Reproduce: merge editor while rebasing on a branch with a lot of branch pointers or ones with a long name The text from the "Current" column overlaps into the "Incoming" column. Confirmed that it happens with the default theme as well. !
Please try out the latest insiders, this should be fixed.
Still appears to be an issue in the latest insiders ! !

*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> .monaco-workbench .merge-editor .code-view>.title { </del> <ins> .monaco-workbench .merge-editor .code-view > .header { </ins> padding: 0 10px; height: 30px; display: flex; align-content: center; <ins> overflow: hidden; </ins> } <del> .monaco-workbench .merge-editor .code-view>.title>SPAN { </del> <ins> .monaco-workbench .merge-editor .code-view > .header > span { </ins> align-self: center; text-overflow: ellipsis; overflow: hidden;


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.72.2 OS Version: macOS Montery 12.6 Steps to Reproduce: merge editor while rebasing on a branch with a lot of branch pointers or ones with a long name The text from the "Current" column overlaps into the "Incoming" column. Confirmed that it happens with the default theme as well. !
Please try out the latest insiders, this should be fixed.
Still appears to be an issue in the latest insiders ! !

white-space: nowrap; } <del> .monaco-workbench .merge-editor .code-view>.title>SPAN.title { </del> <ins> .monaco-workbench .merge-editor .code-view > .header > span.title { </ins> flex-shrink: 0; } <del> .monaco-workbench .merge-editor .code-view>.title>SPAN.description { </del> <ins> .monaco-workbench .merge-editor .code-view > .header > span.description { flex-shrink: 0; </ins> display: flex; font-size: 12px; align-items: center; color: var(--vscode-descriptionForeground); } <del> .monaco-workbench .merge-editor .code-view>.title>SPAN.description .codicon { </del> <ins> .monaco-workbench .merge-editor .code-view > .header > span.description .codicon { </ins> font-size: 14px; color: var(--vscode-descriptionForeground); } <del> .monaco-workbench .merge-editor .code-view>.title>SPAN.detail { </del> <ins> .monaco-workbench .merge-editor .code-view > .header > span.detail { </ins> margin-left: auto; <del> flex-shrink: 0; </del> font-size: 12px; color: var(--vscode-descriptionForeground); } <ins> .monaco-workbench .merge-editor .code-view > .header > span.detail .codicon { font-size: 13px; } </ins> /* for input1|2 -> align details to the left  */ <del> .monaco-workbench .merge-editor .code-view.input>.title>SPAN.detail::before { </del> <ins> .monaco-workbench .merge-editor .code-view.input > .header > span.detail::before { </ins> content: '•'; opacity: .5; padding-right: 3px; } <del> .monaco-workbench .merge-editor .code-view.input>.title>SPAN.detail { </del> <ins> .monaco-workbench .merge-editor .code-view.input > .header > span.detail { </ins> margin-left: 0; } <del> .monaco-workbench .merge-editor .code-view.input>.title>SPAN.toolbar { </del> <ins> .monaco-workbench .merge-editor .code-view.input > .header > span.toolbar { flex-shrink: 0; </ins> margin-left: auto; } <del> .monaco-workbench .merge-editor .code-view>.title>SPAN.detail .codicon { font-size: 13px; } .monaco-workbench .merge-editor .code-view>.container { </del> <ins> .monaco-workbench .merge-editor .code-view > .container { </ins> display: flex; flex-direction: row; } <del> .monaco-workbench .merge-editor .code-view>.container>.gutter { </del> <ins> .monaco-workbench .merge-editor .code-view > .container > .gutter { </ins> width: 24px; position: relative; overflow: hidden;


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.72.2 OS Version: macOS Montery 12.6 Steps to Reproduce: merge editor while rebasing on a branch with a lot of branch pointers or ones with a long name The text from the "Current" column overlaps into the "Incoming" column. Confirmed that it happens with the default theme as well. !
Please try out the latest insiders, this should be fixed.
Still appears to be an issue in the latest insiders ! !

flex-grow: 0; } <del> .merge-editor-diff { </del> <ins> .monaco-workbench .merge-editor .merge-editor-diff { </ins> background-color: var(--vscode-mergeEditor-change-background); } <del> .merge-editor-diff-word { </del> <ins> .monaco-workbench .merge-editor .merge-editor-diff-word { </ins> background-color: var(--vscode-mergeEditor-change-word-background); } /* BEGIN: .merge-editor-block */ <del> .merge-editor-block:not(.handled) { </del> <ins> .monaco-workbench .merge-editor .merge-editor-block:not(.handled) { </ins> background-color: var(--vscode-mergeEditor-conflict-unhandledUnfocused-background); } <del> .merge-editor-block:not(.handled):not(.focused) { </del> <ins> .monaco-workbench .merge-editor .merge-editor-block:not(.handled):not(.focused) { </ins> border: 1px solid var(--vscode-mergeEditor-conflict-unhandledUnfocused-border); } <del> .merge-editor-block:not(.handled).focused { </del> <ins> .monaco-workbench .merge-editor .merge-editor-block:not(.handled).focused { </ins> border: 2px solid var(--vscode-mergeEditor-conflict-unhandledFocused-border); } <del> .merge-editor-block.handled:not(.focused) { </del> <ins> .monaco-workbench .merge-editor .merge-editor-block.handled:not(.focused) { </ins> border: 1px solid var(--vscode-mergeEditor-conflict-handledUnfocused-border); } <del> .merge-editor-block.handled:not(.focused).conflicting { </del> <ins> .monaco-workbench .merge-editor .merge-editor-block.handled:not(.focused).conflicting { </ins> background-color: var(--vscode-mergeEditor-conflict-handledUnfocused-background); } <del> .merge-editor-block.handled.focused { </del> <ins> .monaco-workbench .merge-editor .merge-editor-block.handled.focused { </ins> border: 1px solid var(--vscode-mergeEditor-conflict-handledFocused-border); } <del> .merge-editor-block.handled.focused.conflicting { </del> <ins> .monaco-workbench .merge-editor .merge-editor-block.handled.focused.conflicting { </ins> background-color: var(--vscode-mergeEditor-conflict-handledFocused-background); } <del> .merge-editor-simplified.input.i1, .merge-editor-block.use-simplified-decorations.input.i1 { </del> <ins> .monaco-workbench .merge-editor .merge-editor-simplified.input.i1, .merge-editor-block.use-simplified-decorations.input.i1 { </ins> background-color: var(--vscode-mergeEditor-conflict-input1-background); } <del> .merge-editor-simplified.input.i2, .merge-editor-block.use-simplified-decorations.input.i2 { </del> <ins> .monaco-workbench .merge-editor .merge-editor-simplified.input.i2, .merge-editor-block.use-simplified-decorations.input.i2 { </ins> background-color: var(--vscode-mergeEditor-conflict-input2-background); } /* END: .merge-editor-block */ <del> .gutter.monaco-editor>div { </del> <ins> .gutter.monaco-editor > div { </ins> position: absolute; }


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.72.2 OS Version: macOS Montery 12.6 Steps to Reproduce: merge editor while rebasing on a branch with a lot of branch pointers or ones with a long name The text from the "Current" column overlaps into the "Incoming" column. Confirmed that it happens with the default theme as well. !
Please try out the latest insiders, this should be fixed.
Still appears to be an issue in the latest insiders ! !

color: var(--vscode-editorCodeLens-foreground) } <del> .merge-editor-conflict-actions>span, .merge-editor-conflict-actions>a { </del> <ins> .merge-editor-conflict-actions > span, .merge-editor-conflict-actions > a { </ins> user-select: none; -webkit-user-select: none; white-space: nowrap; } <del> .merge-editor-conflict-actions>a { </del> <ins> .merge-editor-conflict-actions > a { </ins> text-decoration: none; } <del> .merge-editor-conflict-actions>a:hover { </del> <ins> .merge-editor-conflict-actions > a:hover { </ins> cursor: pointer; color: var(--vscode-editorLink-activeForeground) !important; } <del> .merge-editor-conflict-actions>a:hover .codicon { </del> <ins> .merge-editor-conflict-actions > a:hover .codicon { </ins> color: var(--vscode-editorLink-activeForeground) !important; }


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.72.2 OS Version: macOS Montery 12.6 Steps to Reproduce: merge editor while rebasing on a branch with a lot of branch pointers or ones with a long name The text from the "Current" column overlaps into the "Incoming" column. Confirmed that it happens with the default theme as well. !
Please try out the latest insiders, this should be fixed.
Still appears to be an issue in the latest insiders ! !

color: var(--vscode-editorCodeLens-foreground); } <del> .merge-editor-conflict-actions>a:hover .codicon::before { </del> <ins> .merge-editor-conflict-actions > a:hover .codicon::before { </ins> cursor: pointer; }


Question: These are a few more unused exports which git blame says have been around since Hello Code, based on I removed a few false positives which are indirectly referenced through the public api exported from these files and which therefore should probably remain public for consumers

import { $, addDisposableListener, append, EventHelper, EventType } from 'vs/base/browser/dom'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { EventType as GestureEventType, Gesture } from 'vs/base/browser/touch'; <del> import { AnchorAlignment, IAnchor, IContextViewProvider } from 'vs/base/browser/ui/contextview/contextview'; </del> <ins> import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview'; </ins> import { IMenuOptions } from 'vs/base/browser/ui/menu/menu'; import { ActionRunner, IAction } from 'vs/base/common/actions'; import { Emitter } from 'vs/base/common/event';


Question: These are a few more unused exports which git blame says have been around since Hello Code, based on I removed a few false positives which are indirectly referenced through the public api exported from these files and which therefore should probably remain public for consumers

(container: HTMLElement): IDisposable | null; } <del> export interface IBaseDropdownOptions { </del> <ins> interface IBaseDropdownOptions { </ins> label?: string; labelRenderer?: ILabelRenderer; } <del> export class BaseDropdown extends ActionRunner { </del> <ins> class BaseDropdown extends ActionRunner { </ins> private _element: HTMLElement; private boxContainer?: HTMLElement; private _label?: HTMLElement;


Question: These are a few more unused exports which git blame says have been around since Hello Code, based on I removed a few false positives which are indirectly referenced through the public api exported from these files and which therefore should probably remain public for consumers

} } <del> export interface IDropdownOptions extends IBaseDropdownOptions { contextViewProvider: IContextViewProvider; } export class Dropdown extends BaseDropdown { private contextViewProvider: IContextViewProvider; constructor(container: HTMLElement, options: IDropdownOptions) { super(container, options); this.contextViewProvider = options.contextViewProvider; } override show(): void { super.show(); this.element.classList.add('active'); this.contextViewProvider.showContextView({ getAnchor: () => this.getAnchor(), render: (container) => { return this.renderContents(container); }, onDOMEvent: (e, activeElement) => { this.onEvent(e, activeElement); }, onHide: () => this.onHide() }); } protected getAnchor(): HTMLElement | IAnchor { return this.element; } protected onHide(): void { this.element.classList.remove('active'); } override hide(): void { super.hide(); this.contextViewProvider?.hideContextView(); } protected renderContents(container: HTMLElement): IDisposable | null { return null; } } </del> export interface IActionProvider { getActions(): readonly IAction[]; }


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.73.0-insider OS Version: KDE Neon 5.26.2 Steps to Reproduce: to settings (UI). for "duplicate". "Explorer: Incremental Naming" to . the file explorer, hold down the key (to copy a file instead of moving) and drag a file to the same directory. Actual result: VSCode hangs until I am presented the "This window is not responding" dialg. Clicking has the same effect as . Expected result: I am telling VSCode to duplicate a file, while I have taken away its algorithm to automatically create new file names. Therefore I might expect VSCode to show a dialog with a text input. The text input would contain the file's current name, which I can alter. Confirming the dialog would copy the file using the new name. Or something to this effect. But maybe that solution is trying to counter a symptom rather than solving the root of the problem. Because how would should VSCode respond when drag-copying multiple files? Maybe the root of the problem is the ability to set "Explorer: Incremental Naming" to in the first place. Maybe VSCode must always have a 'duplicate file naming algorithm' in order to function? Even if it is a one. Removing and using the algorithm as a bare minimum would surely fix the problem. Addendum: The description of states the user "will be prompted to override the existing file". So this might be the expected / intended result.

} <del> export function findValidPasteFileTarget(explorerService: IExplorerService, targetFolder: ExplorerItem, fileToPaste: { resource: URI; isDirectory?: boolean; allowOverwrite: boolean }, incrementalNaming: 'simple' | 'smart' | 'disabled'): URI { let name = resources.basenameOrAuthority(fileToPaste.resource); </del> <ins> export async function findValidPasteFileTarget( explorerService: IExplorerService, fileService: IFileService, dialogService: IDialogService, targetFolder: ExplorerItem, fileToPaste: { resource: URI; isDirectory?: boolean; allowOverwrite: boolean }, incrementalNaming: 'simple' | 'smart' | 'disabled' ): Promise<URI | undefined> { let name = resources.basenameOrAuthority(fileToPaste.resource); </ins> let candidate = resources.joinPath(targetFolder.resource, name); <ins> // In the disabled case we must ask if it's ok to overwrite the file if it exists if (incrementalNaming === 'disabled') { const canOverwrite = await askForOverwrite(fileService, dialogService, candidate); if (!canOverwrite) { return; } } </ins> while (true && !fileToPaste.allowOverwrite) { if (!explorerService.findClosest(candidate)) { 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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.73.0-insider OS Version: KDE Neon 5.26.2 Steps to Reproduce: to settings (UI). for "duplicate". "Explorer: Incremental Naming" to . the file explorer, hold down the key (to copy a file instead of moving) and drag a file to the same directory. Actual result: VSCode hangs until I am presented the "This window is not responding" dialg. Clicking has the same effect as . Expected result: I am telling VSCode to duplicate a file, while I have taken away its algorithm to automatically create new file names. Therefore I might expect VSCode to show a dialog with a text input. The text input would contain the file's current name, which I can alter. Confirming the dialog would copy the file using the new name. Or something to this effect. But maybe that solution is trying to counter a symptom rather than solving the root of the problem. Because how would should VSCode respond when drag-copying multiple files? Maybe the root of the problem is the ability to set "Explorer: Incremental Naming" to in the first place. Maybe VSCode must always have a 'duplicate file naming algorithm' in order to function? Even if it is a one. Removing and using the algorithm as a bare minimum would surely fix the problem. Addendum: The description of states the user "will be prompted to override the existing file". So this might be the expected / intended result.

target = element.isDirectory ? element : element.parent!; } <del> const targetFile = findValidPasteFileTarget(explorerService, target, { resource: fileToPaste, isDirectory: fileToPasteStat.isDirectory, allowOverwrite: pasteShouldMove || incrementalNaming === 'disabled' }, incrementalNaming); if (incrementalNaming === 'disabled') { const canOverwrite = await askForOverwrite(fileService, dialogService, targetFile); if (!canOverwrite) { return; } </del> <ins> const targetFile = await findValidPasteFileTarget( explorerService, fileService, dialogService, target, { resource: fileToPaste, isDirectory: fileToPasteStat.isDirectory, allowOverwrite: pasteShouldMove || incrementalNaming === 'disabled' }, incrementalNaming ); if (!targetFile) { return undefined; </ins> } return { source: fileToPaste, target: targetFile };


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.73.0-insider OS Version: KDE Neon 5.26.2 Steps to Reproduce: to settings (UI). for "duplicate". "Explorer: Incremental Naming" to . the file explorer, hold down the key (to copy a file instead of moving) and drag a file to the same directory. Actual result: VSCode hangs until I am presented the "This window is not responding" dialg. Clicking has the same effect as . Expected result: I am telling VSCode to duplicate a file, while I have taken away its algorithm to automatically create new file names. Therefore I might expect VSCode to show a dialog with a text input. The text input would contain the file's current name, which I can alter. Confirming the dialog would copy the file using the new name. Or something to this effect. But maybe that solution is trying to counter a symptom rather than solving the root of the problem. Because how would should VSCode respond when drag-copying multiple files? Maybe the root of the problem is the ability to set "Explorer: Incremental Naming" to in the first place. Maybe VSCode must always have a 'duplicate file naming algorithm' in order to function? Even if it is a one. Removing and using the algorithm as a bare minimum would surely fix the problem. Addendum: The description of states the user "will be prompted to override the existing file". So this might be the expected / intended result.

if (sourceTargetPairs.length >= 1) { // Move/Copy File if (pasteShouldMove) { <del> const resourceFileEdits = sourceTargetPairs.map(pair => new ResourceFileEdit(pair.source, pair.target)); </del> <ins> const resourceFileEdits = sourceTargetPairs.map(pair => new ResourceFileEdit(pair.source, pair.target, { overwrite: incrementalNaming === 'disabled' })); </ins> const options = { confirmBeforeUndo: configurationService.getValue<IFilesConfiguration>().explorer.confirmUndo === UndoConfirmLevel.Verbose, progressLabel: sourceTargetPairs.length > 1 ? nls.localize({ key: 'movingBulkEdit', comment: ['Placeholder will be replaced by the number of files being moved'] }, "Moving {0} files", sourceTargetPairs.length)


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. --<!-- 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 directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.73.0-insider OS Version: KDE Neon 5.26.2 Steps to Reproduce: to settings (UI). for "duplicate". "Explorer: Incremental Naming" to . the file explorer, hold down the key (to copy a file instead of moving) and drag a file to the same directory. Actual result: VSCode hangs until I am presented the "This window is not responding" dialg. Clicking has the same effect as . Expected result: I am telling VSCode to duplicate a file, while I have taken away its algorithm to automatically create new file names. Therefore I might expect VSCode to show a dialog with a text input. The text input would contain the file's current name, which I can alter. Confirming the dialog would copy the file using the new name. Or something to this effect. But maybe that solution is trying to counter a symptom rather than solving the root of the problem. Because how would should VSCode respond when drag-copying multiple files? Maybe the root of the problem is the ability to set "Explorer: Incremental Naming" to in the first place. Maybe VSCode must always have a 'duplicate file naming algorithm' in order to function? Even if it is a one. Removing and using the algorithm as a bare minimum would surely fix the problem. Addendum: The description of states the user "will be prompted to override the existing file". So this might be the expected / intended result.

// Reuse duplicate action when user copies const explorerConfig = this.configurationService.getValue<IFilesConfiguration>().explorer; <del> const resourceFileEdits = sources.map(({ resource, isDirectory }) => (new ResourceFileEdit(resource, findValidPasteFileTarget(this.explorerService, target, { resource, isDirectory, allowOverwrite: false }, explorerConfig.incrementalNaming), { copy: true }))); </del> <ins> const resourceFileEdits: ResourceFileEdit[] = []; for (const { resource, isDirectory } of sources) { const allowOverwrite = explorerConfig.incrementalNaming === 'disabled'; const newResource = await findValidPasteFileTarget(this.explorerService, this.fileService, this.dialogService, target, { resource, isDirectory, allowOverwrite }, explorerConfig.incrementalNaming ); if (!newResource) { continue; } const resourceEdit = new ResourceFileEdit(resource, newResource, { copy: true, overwrite: allowOverwrite }); resourceFileEdits.push(resourceEdit); } </ins> const labelSufix = getFileOrFolderLabelSufix(sources); await this.explorerService.applyBulkEdit(resourceFileEdits, { confirmBeforeUndo: explorerConfig.confirmUndo === UndoConfirmLevel.Default || explorerConfig.confirmUndo === UndoConfirmLevel.Verbose,


Question: I noticed that there are a couple colors here that are available in : ! but the rest of the colors are available in the monaco workbench : ! these probably should be with the others. possible code pointer:

.monaco-workbench .notebookOverlay .output { position: absolute; height: 0px; <del> font-size: var(--notebook-cell-output-font-size); </del> user-select: text; -webkit-user-select: text; cursor: auto;


Question: I noticed that there are a couple colors here that are available in : ! but the rest of the colors are available in the monaco workbench : ! these probably should be with the others. possible code pointer:

insertToolbarPosition, insertToolbarAlignment, fontSize, <ins> outputFontSize, </ins> focusIndicatorLeftMargin, focusIndicatorGap } = this._notebookOptions.getLayoutConfiguration();


Question: I noticed that there are a couple colors here that are available in : ! but the rest of the colors are available in the monaco workbench : ! these probably should be with the others. possible code pointer:

const fontFamily = this._generateFontFamily(); styleSheets.push(` <del> :root { --notebook-cell-output-font-size: ${fontSize}px; --notebook-cell-output-font-family: ${fontFamily}; </del> <ins> .notebook-editor { --notebook-cell-output-font-size: ${outputFontSize}px; </ins> --notebook-cell-input-preview-font-size: ${fontSize}px; --notebook-cell-input-preview-font-family: ${fontFamily}; }


Question: Type: <bBug</bThe experimental "user profiles" feature uses absolute paths which break when using a (which is done by creating a "data/" folder in VSC's root directory). These paths seem to be stored in "data/user-", at least in part. This makes VSC forget any extensions installed on the default profile as well as any other profiles. It also prevents VSC from finding the settings for any non-default profiles: When trying to edit the settings for a non-default profile, a new "" file is created where VSC expects the file to be. It displays an error message instead if the expected path is invalid (ex. portable installation's drive letter changed). Steps to Reproduce: a portable (.zip) version of VSCode and extract to a folder. an empty "data/" folder inside that folder. VSC and install any extension with the default profile. a second profile. Change some of its settings and install any extension. VSC and move the VSC folder to another location. VSC again. VS Code version: Code - Insiders 1.74.0-insider (, 2022-11-03T18:43:35.409Z) OS version: WindowsNT x64 10.0. Modes: Sandboxed: Yes <details<summarySystem Info</summary </detailsExtensions: none<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --

import { ILogService } from 'vs/platform/log/common/log'; import { IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile'; import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; <ins> import { isObject, isString } from 'vs/base/common/types'; import { Schemas } from 'vs/base/common/network'; </ins> interface IStoredProfileExtension { identifier: IExtensionIdentifier; <del> location: UriComponents; </del> <ins> location: UriComponents | string; </ins> version: string; metadata?: Metadata; }


Question: Type: <bBug</bThe experimental "user profiles" feature uses absolute paths which break when using a (which is done by creating a "data/" folder in VSC's root directory). These paths seem to be stored in "data/user-", at least in part. This makes VSC forget any extensions installed on the default profile as well as any other profiles. It also prevents VSC from finding the settings for any non-default profiles: When trying to edit the settings for a non-default profile, a new "" file is created where VSC expects the file to be. It displays an error message instead if the expected path is invalid (ex. portable installation's drive letter changed). Steps to Reproduce: a portable (.zip) version of VSCode and extract to a folder. an empty "data/" folder inside that folder. VSC and install any extension with the default profile. a second profile. Change some of its settings and install any extension. VSC and move the VSC folder to another location. VSC again. VS Code version: Code - Insiders 1.74.0-insider (, 2022-11-03T18:43:35.409Z) OS version: WindowsNT x64 10.0. Modes: Sandboxed: Yes <details<summarySystem Info</summary </detailsExtensions: none<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --

if (!Array.isArray(storedProfileExtensions)) { throw new Error(`Invalid extensions content in ${file.toString()}`); } <ins> // TODO @sandy081: Remove this migration after couple of releases let migrate = false; </ins> for (const e of storedProfileExtensions) { if (!isStoredProfileExtension(e)) { throw new Error(`Invalid extensions content in ${file.toString()}`); } <ins> let location: URI; if (isString(e.location)) { location = this.resolveExtensionLocation(file, e.location); } else { location = URI.revive(e.location); const relativePath = this.toRelativePath(file, location); if (relativePath) { migrate = true; e.location = relativePath; } } </ins> extensions.push({ identifier: e.identifier, <del> location: URI.revive(e.location), </del> <ins> location, </ins> version: e.version, metadata: e.metadata, }); } <ins> if (migrate) { await this.fileService.writeFile(file, VSBuffer.fromString(JSON.stringify(storedProfileExtensions))); } </ins> } // Update


Question: Type: <bBug</bThe experimental "user profiles" feature uses absolute paths which break when using a (which is done by creating a "data/" folder in VSC's root directory). These paths seem to be stored in "data/user-", at least in part. This makes VSC forget any extensions installed on the default profile as well as any other profiles. It also prevents VSC from finding the settings for any non-default profiles: When trying to edit the settings for a non-default profile, a new "" file is created where VSC expects the file to be. It displays an error message instead if the expected path is invalid (ex. portable installation's drive letter changed). Steps to Reproduce: a portable (.zip) version of VSCode and extract to a folder. an empty "data/" folder inside that folder. VSC and install any extension with the default profile. a second profile. Change some of its settings and install any extension. VSC and move the VSC folder to another location. VSC again. VS Code version: Code - Insiders 1.74.0-insider (, 2022-11-03T18:43:35.409Z) OS version: WindowsNT x64 10.0. Modes: Sandboxed: Yes <details<summarySystem Info</summary </detailsExtensions: none<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --

const storedProfileExtensions: IStoredProfileExtension[] = extensions.map(e => ({ identifier: e.identifier, version: e.version, <del> location: e.location.toJSON(), </del> <ins> location: this.toRelativePath(file, e.location) ?? e.location.toJSON(), </ins> metadata: e.metadata })); await this.fileService.writeFile(file, VSBuffer.fromString(JSON.stringify(storedProfileExtensions)));


Question: Type: <bBug</bThe experimental "user profiles" feature uses absolute paths which break when using a (which is done by creating a "data/" folder in VSC's root directory). These paths seem to be stored in "data/user-", at least in part. This makes VSC forget any extensions installed on the default profile as well as any other profiles. It also prevents VSC from finding the settings for any non-default profiles: When trying to edit the settings for a non-default profile, a new "" file is created where VSC expects the file to be. It displays an error message instead if the expected path is invalid (ex. portable installation's drive letter changed). Steps to Reproduce: a portable (.zip) version of VSCode and extract to a folder. an empty "data/" folder inside that folder. VSC and install any extension with the default profile. a second profile. Change some of its settings and install any extension. VSC and move the VSC folder to another location. VSC again. VS Code version: Code - Insiders 1.74.0-insider (, 2022-11-03T18:43:35.409Z) OS version: WindowsNT x64 10.0. Modes: Sandboxed: Yes <details<summarySystem Info</summary </detailsExtensions: none<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --

}); } <ins> private toRelativePath(extensionsProfileLocation: URI, extensionLocation: URI): string | undefined { // Extension Profile location scheme is always vscode-userdata and Extension location scheme is always file // Hence we need to convert the Extension Profile location scheme to file to resolve the relative path const parent = this.uriIdentityService.extUri.dirname(extensionsProfileLocation).with({ scheme: Schemas.file }); if (this.uriIdentityService.extUri.isEqualOrParent(extensionLocation, parent)) { return this.uriIdentityService.extUri.relativePath(parent, extensionLocation); } return undefined; } private resolveExtensionLocation(extensionsProfileLocation: URI, path: string): URI { // Extension Profile location scheme is always vscode-userdata and Extension location scheme is always file // Hence we need to convert the Extension Profile location scheme to file to resolve extension location return this.uriIdentityService.extUri.joinPath(this.uriIdentityService.extUri.dirname(extensionsProfileLocation), path).with({ scheme: Schemas.file }); } </ins> private _migrationPromise: Promise<IStoredProfileExtension[] | undefined> | undefined; private async migrateFromOldDefaultProfileExtensionsLocation(): Promise<IStoredProfileExtension[] | undefined> { if (!this._migrationPromise) {


Question: Type: <bBug</bThe experimental "user profiles" feature uses absolute paths which break when using a (which is done by creating a "data/" folder in VSC's root directory). These paths seem to be stored in "data/user-", at least in part. This makes VSC forget any extensions installed on the default profile as well as any other profiles. It also prevents VSC from finding the settings for any non-default profiles: When trying to edit the settings for a non-default profile, a new "" file is created where VSC expects the file to be. It displays an error message instead if the expected path is invalid (ex. portable installation's drive letter changed). Steps to Reproduce: a portable (.zip) version of VSCode and extract to a folder. an empty "data/" folder inside that folder. VSC and install any extension with the default profile. a second profile. Change some of its settings and install any extension. VSC and move the VSC folder to another location. VSC again. VS Code version: Code - Insiders 1.74.0-insider (, 2022-11-03T18:43:35.409Z) OS version: WindowsNT x64 10.0. Modes: Sandboxed: Yes <details<summarySystem Info</summary </detailsExtensions: none<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --

} function isStoredProfileExtension(candidate: any): candidate is IStoredProfileExtension { <del> return typeof candidate === 'object' </del> <ins> return isObject(candidate) </ins> && isIExtensionIdentifier(candidate.identifier) <del> && isUriComponents(candidate.location) && candidate.version && typeof candidate.version === 'string'; </del> <ins> && (isUriComponents(candidate.location) || isString(candidate.location)) && candidate.version && isString(candidate.version); </ins> } function isUriComponents(thing: unknown): thing is UriComponents { if (!thing) { return false; } <del> return typeof (<any>thing).path === 'string' && typeof (<any>thing).scheme === 'string'; </del> <ins> return isString((<any>thing).path) && isString((<any>thing).scheme); </ins> }


Question:
This is a follow-up from and describes the problem that save participants causing a save operation
reproduced when undoing some fixes (applying the fix below)
fyi

private versionId = 0; private bufferSavedVersionId: number | undefined; private ignoreDirtyOnModelContentChange = false; <ins> private ignoreSaveFromSaveParticipants = false; </ins> private static readonly UNDO_REDO_SAVE_PARTICIPANTS_AUTO_SAVE_THROTTLE_THRESHOLD = 500; private lastModelContentChangeFromUndoRedo: number | undefined = undefined;


Question:
This is a follow-up from and describes the problem that save participants causing a save operation
reproduced when undoing some fixes (applying the fix below)
fyi

let versionId = this.versionId; this.trace(`doSave(${versionId}) - enter with versionId ${versionId}`); <ins> // Return early if saved from within save participant to break recursion // // Scenario: a save participant triggers a save() on the model if (this.ignoreSaveFromSaveParticipants) { this.trace(`doSave(${versionId}) - exit - refusing to save() recursively from save participant`); return; } </ins> // Lookup any running pending save for this versionId and return it if found // // Scenario: user invoked the save action multiple times quickly for the same contents