Code change:
if (temp) { return this.userDataProfilesService.createNamedProfile(`${profileName} ${this.getProfileNameIndex(profileName)}`, { ...options, transient: temp }); } <del> enum ImportProfileChoice { Overwrite = 0, CreateNew = 1, Cancel = 2 } const { result } = await this.dialogService.prompt<ImportProfileChoice>({ </del> <ins> const { confirmed } = await this.dialogService.confirm({ </ins> type: Severity.Info, <del> message: localize('profile already exists', "Profile with name '{0}' already exists. Do you want to overwrite it?", profileName), buttons: [ { label: localize({ key: 'overwrite', comment: ['&& denotes a mnemonic'] }, "&&Overwrite"), run: () => ImportProfileChoice.Overwrite }, { label: localize({ key: 'create new', comment: ['&& denotes a mnemonic'] }, "&&Create New Profile"), run: () => ImportProfileChoice.CreateNew }, ], cancelButton: { run: () => ImportProfileChoice.Cancel } }); if (result === ImportProfileChoice.Overwrite) { return profile; } if (result === ImportProfileChoice.Cancel) { return undefined; } // Create new profile const name = await this.quickInputService.input({ placeHolder: localize('name', "Profile name"), title: localize('create new title', "Create New Profile"), value: `${profileName} ${this.getProfileNameIndex(profileName)}`, validateInput: async (value: string) => { if (this.userDataProfilesService.profiles.some(p => p.name === value)) { return localize('profileExists', "Profile with name {0} already exists.", value); } return undefined; } </del> <ins> message: localize('profile already exists', "Profile with name '{0}' already exists. Do you want to replace its contents?", profileName), primaryButton: localize({ key: 'overwrite', comment: ['&& denotes a mnemonic'] }, "&&Replace") </ins> }); <del> if (!name) { </del> <ins> if (!confirmed) { </ins> return undefined; } <del> return this.userDataProfilesService.createNamedProfile(name); </del> <ins> return profile.isDefault ? profile : this.userDataProfilesService.updateProfile(profile, options); </ins> } else { return this.userDataProfilesService.createNamedProfile(profileName, { ...options, transient: temp }); }

Related discussion:
text: I would think this is not a good one to start at and recommend to look for issues labelled with or
I really want to try out.. just to experience and I think I would be able to do it. Even if it's not a good first issue I have contributed to other open source repos. Can I?
Sure, here is the starting point
Thanks a lot for this I was checking your PR with the user-profile feature implementation.. For now I'm just figuring out stuff that is already present. Just a single doubt that I had was about the merging of profiles.. would the editor be like a merge editor that opens whenever we get a merge conflict on git..? Or something else with checkboxes on which settings to get imported from each of the sides(current and imported one)? I'll try my best
For the sake of simplicity, during conflicts, I would simply override with the new one.
Also
Note to self: see for manual workaround.
You can now import and replace any existing profile (including Default profile) from new Profiles Editor UI
To verify: Create a profile A and configure with some settings and extensions Export the profile A to the disk Change some settings and extensions in the profile Import the profile A You should be able to import the profile with name A replacing the existing profile
When I export the profile, install some new extensions, then import the profile with the same name, I would expect the installed extensions to disappear from my extensions list, but that doesn't seem to be the case
It is working for me, ie., I only see the extension from the imported profile. After importing, extensions are getting replaced. Can you please share the exact steps to repro?
Using vscode 1.92.2, I can't figure out how to get to that UI. Where do I find it?
search settings for "profiles experimental"
Thank you!