jiebi/CodeConvo huggingface dataset:
Code change:
export class NotebookOutlineEntryFactory { private cellOutlineEntryCache: Record<string, entryDesc[]> = {}; <del> private readonly cachedMarkdownOutlineEntries = new WeakMap<ICellViewModel, { alternativeId: number; headers: { depth: number, text: string }[] }>(); </del> <ins> private readonly cachedMarkdownOutlineEntries = new WeakMap<ICellViewModel, { alternativeId: number; headers: { depth: number; text: string }[] }>(); </ins> constructor( private readonly executionStateService: INotebookExecutionStateService ) { }

Related discussion:
text: Open notebook with a header, code cell, and symbols in the code cell: # 1: symbols appear as a child of the header md cell, and the code cell is not present in the outline. # 2: changing the filter settings to remove code cells or symbols does not recompute the outline. Fixes: For # 1: an outline provider was being created with the incorrect target (sticky scroll was created with a QuickPick target), and this was being retrieved for the outline pane incorrectly. For # 2: one of the locations an outline change event is fired was shifted and subsequently removed, meaning that the outline did not recompute to reflect the filtered-out cells.
Code change:
return; } <ins> if (this.isPasting) { return; } </ins> const builtinCompletionsConfig = this._configurationService.getValue<ITerminalSuggestConfiguration>(terminalSuggestConfigSection).builtinCompletions; if (!this._codeCompletionsRequested && builtinCompletionsConfig.pwshCode) { this._onAcceptedCompletion.fire(SuggestAddon.requestEnableCodeCompletionsSequence);

Related discussion:
text: Steps to Reproduce: text into PowerShell (with Terminal suggest enabled) see batched pasting behavior
maybe related to
Haha, I think this is it triggering completions while the pasted text is being send then kicking in. Pastes should never trigger completions so let's track that here.
When verifying make sure you're on macOS.
Code change:
export interface UriComponents { scheme: string; <del> authority: string; path: string; query: string; fragment: string; </del> <ins> authority?: string; path?: string; query?: string; fragment?: string; } export function isUriComponents(thing: any): thing is UriComponents { if (!thing || typeof thing !== 'object') { return false; } return typeof (<UriComponents>thing).scheme === 'string' && (typeof (<UriComponents>thing).authority === 'string' || typeof (<UriComponents>thing).authority === 'undefined') && (typeof (<UriComponents>thing).path === 'string' || typeof (<UriComponents>thing).path === 'undefined') && (typeof (<UriComponents>thing).query === 'string' || typeof (<UriComponents>thing).query === 'undefined') && (typeof (<UriComponents>thing).fragment === 'string' || typeof (<UriComponents>thing).fragment === 'undefined'); </ins> } interface UriState extends UriComponents { $mid: MarshalledId.Uri; <del> external: string; fsPath: string; _sep: 1 | undefined; </del> <ins> external?: string; fsPath?: string; _sep?: 1; </ins> } const _pathSepMarker = isWindows ? 1 : undefined;

Related discussion:
text: Following test throws: I found this while investigating At that point the editor component is quite broken because of a lot of errors being thrown. Notice how not even a tab shows for the editor: <img width="1058" alt="image" src="https://user-"
that should already throw because at least a scheme is needed. It doesn't because was designed to be the runtime counter part of which never produces such output so some IPC deserialisation cost can be saved.
, that works for me and will also throw when we get bad objects into such as the from
Yeah, my plan is to add an argument like we have in other URI-places. It will default to true and only IPC should be relaxed
Not doing that because it actually already exists as . I believe the adoption/migration task is to use instead of whenever getting uri components from storage or esp from command arguments. Tho, there is one special case for which is that it automatically uses when the scheme is missing. We could make that configurable but a check for might make this obsolete
Closing this after and the ask to use when creating uri from "untrusted" sources
I will see to adopt , I forgot we had it
Code change:
throw e; } <del> let label; if (claims.name && claims.email) { label = `${claims.name} - ${claims.email}`; } else { label = claims.email ?? claims.unique_name ?? claims.preferred_username ?? 'user@example.com'; } </del> const id = `${claims.tid}/${(claims.oid ?? (claims.altsecid ?? '' + claims.ipd ?? ''))}`; const sessionId = existingId || `${id}/${randomUUID()}`; this._logger.trace(`[${scopeData.scopeStr}] '${sessionId}' Token response parsed successfully.`);

Related discussion:
text: <!-- 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?: No. Related to extension api <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.79.0-insider OS Version: Macintosh; Intel Mac OS X 1340 Getting a session for a Microsoft account for the default tenant, and also getting a session for the account but for a specific tenant results in two items for the same account appearing in the Accounts menu. <img width="546" alt="image" src=""Steps to Reproduce: First call with the following scopes: . And another call to with these scopes: I want to point out that the account objects on the returned sessions are actually different: <br<details<summaryMicrosoft Authentication provider logs</summary<p</p</detailscc:
These accounts aren't duplicate, they are sessions that exist for each signed-in tenant. I think the best solution would be to change the account label to . This would match what the Azure portal does. <img width="201" alt="image" src=""I think this is an important change to make because this really doesn't look good and is confusing to users. Especially when users are trying to sign out. The screenshot below is after I sign in with a single Microsoft account that has 4 tenants. Having 4 tenants is not uncommon. <img width="515" alt="image" src=""
Yeah this goes back to that "technically they're different accounts because they're in different tenants" thing. I'm inclined to agree with you and dedupe per-label.
Although that would present better, I think deduping on the label wouldn't be great unless you made the label more standard across tenants.
Code change:
throw e; } <del> let label; if (claims.name && claims.email) { label = `${claims.name} - ${claims.email}`; } else { label = claims.email ?? claims.unique_name ?? claims.preferred_username ?? 'user@example.com'; } </del> const id = `${claims.tid}/${(claims.oid ?? (claims.altsecid ?? '' + claims.ipd ?? ''))}`; const sessionId = existingId || `${id}/${randomUUID()}`; this._logger.trace(`[${scopeData.scopeStr}] '${sessionId}' Token response parsed successfully.`);

Related discussion:
text: In that case, I think changing the label to be just email would be best. Then all of these sessions in my example screenshot could be grouped as one. If you deduped per-label with the current labelling it would show two accounts, one that represents 3 tenants, and another representing another single tenant. That would still be pretty confusing. IMO there's two options: Dedupe by email and hide all tenant related stuff. Signing out of that account removes all sessions associated with that email, regardless of tenant. Don't dedupe at all, instead include the tenant display name in the label as .
says this works!
Code change:
} async sendText(text: string, addNewLine: boolean): Promise<void> { <del> // Apply bracketed paste sequences if the terminal has the mode enabled, this will prevent // the text from triggering keybindings https://github.com/microsoft/vscode/issues/153592 if (this.xterm?.raw.modes.bracketedPasteMode) { text = `x1b[200~${text}x1b[201~`; } </del> // Normalize line endings to 'enter' press. text = text.replace(/r?n/g, 'r'); if (addNewLine && text[text.length - 1] !== 'r') {

Related discussion:
text: <!-- Do Not Delete This! featurerequesttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Describe the feature you'd like. --Several shells (, , ) include vi mode keybindings. It's common for users to rebind vi escape to something like , , or . When interfacing with the shell, VS Code behaves as if it were a user typing keys, which may trigger vi escape if file names or other text input to the shell contains the escape sequence. To show the problematic behavior (assuming the shell is ): Include these lines in your In VS Code, try to run a Python file named . VS Code enters this file name into the shell, which triggers the escape sequence and causes the shell to interpret following the as vi normal mode commands. If VS Code input text to the shell with bracketed paste, this would not happen.
Not sure if this is related, but I use Spectacle to move and resize my windows. It used to work perfectly, but now, since today's update, I cannot use my shortcut to resize my VSCode instance. The shortcuts I used were control+option+command+(left/right/down/up) to move and resize, and option+command+f to toggle fullscreen(not fullscreen but resized as fullscreen). These shortcuts do nothing in VSCode and are not triggered anymore through Spectacle
Can you clarify how you're running the file? I think I understand the problem, sending text to the terminal via extension API or run active file, etc. are triggering the keybinding but wrapping them in bracketed paste would fix it. It should be safe to wrap in the bracketed paste sequences provided the mode is enabled in the terminal. that sounds like a different issue, maybe related to Electron.
Thank you, I'm gonna post this as a new issue.
I'm running the file using Run -Start Debugging, selecting 'Python File' as the debug configuration. VS Code then enters this into the shell: The file is supposed to be called but my shell sees (my escape sequence) and then stops at .
Code change:
} async sendText(text: string, addNewLine: boolean): Promise<void> { <del> // Apply bracketed paste sequences if the terminal has the mode enabled, this will prevent // the text from triggering keybindings https://github.com/microsoft/vscode/issues/153592 if (this.xterm?.raw.modes.bracketedPasteMode) { text = `x1b[200~${text}x1b[201~`; } </del> // Normalize line endings to 'enter' press. text = text.replace(/r?n/g, 'r'); if (addNewLine && text[text.length - 1] !== 'r') {

Related discussion:
text: Thanks for confirming, we should be able to include the fix in 1.70 (too late for 1.69 unfortunately)
This caused a regression unfortunately so reopening The actual fix is more involved than I thought, we will need to be able to pass in a flag for whether to wrap in bracketed paste mode into the sendSequence command, internal API, extension API. An extension could wrap what it's sending in bracketed paste mode now but that won't work when the shell isn't in bracketed paste mode and the extension is not able to determine that.
We closed this issue because we in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider. If you wonder what we are up to, please see our and . Thanks for your understanding, and happy coding!
Code change:
); } <del> for (const [profileName, value] of Object.entries(configProfiles || {})) { if (value === null) { detectedProfiles.delete(profileName); } detectedProfiles.set(profileName, value); } </del> <ins> applyConfigProfilesToMap(configProfiles, detectedProfiles); </ins> const resultProfiles: ITerminalProfile[] = await transformToTerminalProfiles(detectedProfiles.entries(), statProvider, logService, variableResolver, workspaceFolder);

Related discussion:
text: Testing I'm wondering if there's a way to add a schema so that users can get descriptions on the various fields they can use while creating a new profile. I also realize that the keys represent profile names, so that might make it harder to validate/provide descriptions for them. I guess the description for the keys would go under in that case, though there already is a long description for that field.
this would be nice, looked into it a bit but we're not sure how to set it up for such an object. We essentially want to enforce something like
would you be the right person to ask about schemas for settings?
You can use the property to specify the shape of all properties regardless of the key. An example is the setting: If there are constraints on the key, you can use :
Code change:
}, () => this.extensionManagementService.uninstallExtensions(extensionsToUninstall).then(() => undefined)); } <ins> private getAllPackExtensionsToUninstall(extension: ILocalExtension, installed: IExtension[], checked: ILocalExtension[] = []): ILocalExtension[] { if (checked.some(e => areSameExtensions(e.identifier, extension.identifier))) { return []; } checked.push(extension); const extensionsPack = extension.manifest.extensionPack ?? []; if (extensionsPack.length) { const packedExtensions: ILocalExtension[] = []; for (const i of installed) { if (i.local && !i.isBuiltin && extensionsPack.some(id => areSameExtensions({ id }, i.identifier))) { packedExtensions.push(i.local); } } const packOfPackedExtensions: ILocalExtension[] = []; for (const packedExtension of packedExtensions) { packOfPackedExtensions.push(...this.getAllPackExtensionsToUninstall(packedExtension, installed, checked)); } return [...packedExtensions, ...packOfPackedExtensions]; } return []; } </ins> private getErrorMessageForUninstallingAnExtensionWithDependents(extension: IExtension, dependents: IExtension[]): string { if (dependents.length === 1) { return nls.localize('singleDependentUninstallError', "Cannot uninstall '{0}' extension alone. '{1}' extension depends on this. Do you want to uninstall all these extensions?", extension.displayName, dependents[0].displayName);

Related discussion:
text: From ! It took me a while to be able to use Copilot again. Here are the steps I took (also captured in the attached video): Reloaded VS Code Clicked "Show Extension" from the toast above, I'm brought to Copilot Chat extension in Extensions view Clicked "Uninstall" for Chat extension, nothing would happen Decided to instead search Copilot in Extensions view (thought maybe I was having issues by trying to uninstall Chat without touching Completions, though I would've expected a toast telling me that) After searching, the Copilot extensions automatically start to update Need to restart just Copilot (not chat), so I click to restart I try to uninstall Copilot Chat again, but nothing happens again Reload VS Code again Search for Copilot again in the Extensions view I can now uninstall Copilot (though I initiated the uninstall from the Copilot extension rather than Chat)
Verification steps are in
Code change:
} } <del> class SelectionToWatchExpressionsAction extends EditorAction { </del> <ins> export class SelectionToWatchExpressionsAction extends EditorAction { public static readonly ID = 'editor.debug.action.selectionToWatch'; public static readonly LABEL = nls.localize('addToWatch', "Add to Watch"); </ins> constructor() { super({ <del> id: 'editor.debug.action.selectionToWatch', label: nls.localize('addToWatch', "Add to Watch"), alias: 'Add to Watch', </del> <ins> id: SelectionToWatchExpressionsAction.ID, label: SelectionToWatchExpressionsAction.LABEL, alias: 'Debug: Add to Watch', </ins> precondition: ContextKeyExpr.and(EditorContextKeys.hasNonEmptySelection, CONTEXT_IN_DEBUG_MODE, EditorContextKeys.editorTextFocus), contextMenuOpts: { group: 'debug',

Related discussion:
text: When I press Ctrl+Shift+P to open the command panel and type "", it shows "No matching commands". So I can't execute this command by Ctrl+Shift+P. I can only bind a shortcut key to this command and then execute it via the shortcut key. I think this is a bug that the command panel search is incomplete.
Please edit this issue title to become:
indicates it may already be there and you just need to know what the command text is.
OK, but according to my observation, there are other commands that cannot be found in the panel. For example, "".
The issue I raised is different from him. His issue is that the shortcut key does not work after binding. My issue is that I can't find the command in the command panel. In fact, some other commands cannot be found, indicating that the search of the command panel is incomplete.
Some commands never appear in the Command Palette because they define their clause as
I open the page where I set the keyboard shortcut and see that their when clause is - not false.
Sorry, I wasn't clear. This is what I am referring to.
I read your link and I probably understand. Please set the when clause of "" to "inDebugMode" instead of false. This is more in line with our needs.
Looks like that command is missing from here: is also missing.
/confirm
I will submit a PR
Thanks!
Code change:
} public get capabilities(): WorkingCopyCapabilities { <del> return 0; </del> <ins> return WorkingCopyCapabilities.None; </ins> } public isDirty(): boolean {

Related discussion:
text: <!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: head OS Version: n/a This is a bug/inconsistency in the VSC codebase, which is currently obscured because of the specific way the code is written. This wouldn't really matter, but when using a build step that generates files for dependencies, the gets evaluated down to and compilation fails. And overall, it'd be nice for the types to align in a sensible way. Steps to Reproduce: , replace with Expected: compiles fine Actual: there are a number of errors like Property 'getFirstLineText' does not exist on type 'never'. The intersection 'this &amp; IResolvedTextFileEditorModel' was reduced to 'never' because property 'capabilities' has conflicting types in some (2339)TextFileEditorModelIWorkingCopyIResolvedTextFileEditorModelthis.isResolved() is known to be true) says capabilities should be a readonly 2. <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes
Since this seems to concern only you with your specific setup, wanna do a PR to fix this?
I would be more than happy to, but I'm not sure what approach you'd find (in)appropriate. could type in as a number instead of an enum (since checks against it are anyways done via bitwise-and) could change in to actually be 2 instead of 0 (though it seems like you also use 0 for this field in other places like , and somehow TSC doesn't care...) could add a enum value of 0 to , since it seems like that's how you use it. I'm leaning towards approach 3. What are your thoughts?
Yeah I think we can give 3. a try in a PR.
Code change:
}) .text(this.feedback).attr('required', 'required') .on('keyup', () => { <del> $charCounter.text('(' + (FeedbackDropdown.MAX_FEEDBACK_CHARS - this.feedbackDescriptionInput.value.length) + ' ' + nls.localize("characters left", "characters left") + ')'); </del> <ins> $charCounter.text(this.getCharCountText(this.feedbackDescriptionInput.value.length)); </ins> this.feedbackDescriptionInput.value ? this.sendButton.removeAttribute('disabled') : this.sendButton.attr('disabled', ''); }) .appendTo($form).domFocus().getHTMLElement();

Related discussion:
text: To reproduce. click smiley in the bottom right of editor window. The feedback form should appear enter several characters, press "Enter" (the new line should appear) continue entering characters while you can You should stop at "1 characters left" (declensions?) After that you will not be able to enter anything On the screenshot. There's a newline after "1". I reached the end of input and unable to enter more characters. But counter still says "1 characters left": <img width="468" alt="" src=""Mac OS 10.10.5 Yosemite
This is interesting. I created this to reproduce the behavior. do you have any thoughts on this? Here are a couple ideas we've talked about before. 1 - Remove the text area completely and replace with just the tweet button. This makes sense because we're submitting to twitter anyways. 2 - Hack the text area element to get better behavior. This would involve looking for new line characters based on the batter described by OP. I'm not a fan of this as it seems error prone. If we go with option 1, I'll work with Brad and get some design love on the form. any thoughts? I created PR to fix the "s" on singular count issue.
Thanks for your amazing job and thanks for asking! :blush: If the "Tweet" button will not require having a Twitter account, then it's a solution, I guess. I feel a bit weird reporting those super-tiny issues that still require developers time. Is the related (then we should star it)? Probably even disabling line breaks (like turning into line input) could be a solution.
Yes that is the exact issue. Starred it! I thought about disabling line breaks, but I think it would be a good thing for the user to do, considering Twitter supports line breaks. The Tweet button wouldn't require a Twitter account, but once the Tweet button takes them to twitter they would need to login.
Well, the need to login on Twitter is a requirement to have a Twitter account :blush: I wouldn't think it's a good UX :relaxed:
Right. Unfortunately Twitter doesn't support anonymous tweets.
After some internal discussion we decided to go with a dialog redesign. Will work with our UX designer to get some help.
Closing as it will be fixed with .
Code change:
import { CommandsRegistry, ICommandHandler, ICommandService } from 'vs/platform/commands/common/commands'; import { ConfigurationTarget, IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ConfigurationScope, Extensions as ConfigurationExtensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry'; <del> import { ContextKeyEqualsExpr, ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; </del> <ins> import { ContextKeyAndExpr, ContextKeyEqualsExpr, ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; </ins> import { IFileService } from 'vs/platform/files/common/files'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions';

Related discussion:
text: Just to confirm that if you are aware that this change will not show the keybinding for Search view anymore at following places: <img width="367" alt="image" src="https://user-"<img width="161" alt="image" src="https://user-"Not sure if it is intended. Originally posted by in
Code change:
import { DiffEditorEditors } from 'vs/editor/browser/widget/diffEditorWidget2/diffEditorEditors'; import { DiffEditorViewModel } from 'vs/editor/browser/widget/diffEditorWidget2/diffEditorViewModel'; import { appendRemoveOnDispose } from 'vs/editor/browser/widget/diffEditorWidget2/utils'; <del> import { EditorLayoutInfo } from 'vs/editor/common/config/editorOptions'; </del> <ins> import { EditorLayoutInfo, EditorOption } from 'vs/editor/common/config/editorOptions'; </ins> import { LineRange } from 'vs/editor/common/core/lineRange'; import { Position } from 'vs/editor/common/core/position'; import { OverviewRulerZone } from 'vs/editor/common/viewModel/overviewZoneManager';

Related discussion:
text: This has been fixed for notebook diffs but is still an issue for text diffs: <img width="115" alt="image" src="https://user-"