jiebi/CodeConvo huggingface dataset:
Change:
<!-- 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.86.0 OS Version: macOS 14.2.1 Steps to Reproduce: the Monokai Dimmed theme a .less file that the syntax higlighting colors are very different to the previous release This is what the less syntax highlighting looked like in v1.85.2 with the Monokai Dimmed theme enabled: ! And this is what it looks like in 1.86.0: ! The main problem is that property names are now the same color as property values that are keywords - e.g. , & - but it's also a bit annoying that LESS variables are no longer a uniform color. I've checked a few other color themes and they don't seem to have this problem. This is a bit of a guess but maybe Monokai Dimmed needs to be updated following the changes introduced in ?
Yes, agree, this needs an update here:

Discussion:
}, { "name": "CSS ID", <del> "scope": "meta.selector.css entity.other.attribute-name.id", </del> <ins> "scope": "meta.selector entity.other.attribute-name.id", </ins> "settings": { "fontStyle": "", "foreground": "#9872A2"

}, { "name": "CSS Property Name", <del> "scope": "support.type.property-name.css", </del> <ins> "scope": "support.type.property-name", </ins> "settings": { "fontStyle": "", "foreground": "#676867"

}, { "name": "CSS Property Value", <del> "scope": "meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css", </del> <ins> "scope": "meta.property-group support.constant.property-value, meta.property-value support.constant.property-value", </ins> "settings": { "fontStyle": "", "foreground": "#C7444A"
Change:
<!-- 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.87.0-insider OS Version: Windows 11 Enterprise Steps to Reproduce: this url to open a VS Code extension: {other_parameters} will open the , then there's no reaction Previously, we could use the URL to open and automatically install and activate this extension, proceeding with the subsequent URL handling process. Now, even installation cannot be carried out.
What's an example of a full URL where you see this? Only certain allowlisted extension/publishers are allowed there
Hi This issue has already manifested in the production environment (1.86.2 ), and it is hoped that the priority can be elevated. Here is a sample url: {extension_name}/{query} Previously, our extension could be automatically installed by opening this URL. However, it seems that can't install extension now.
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
/verified

Discussion:
const result = new Map<string, IWebExtension>(); const extensionInfos: IExtensionInfo[] = []; await Promise.all(extensionGalleryResources.map(async extensionGalleryResource => { <del> const webExtension = await this.toWebExtensionFromExtensionGalleryResource(extensionGalleryResource); result.set(webExtension.identifier.id.toLowerCase(), webExtension); extensionInfos.push({ id: webExtension.identifier.id, version: webExtension.version }); </del> <ins> try { const webExtension = await this.toWebExtensionFromExtensionGalleryResource(extensionGalleryResource); result.set(webExtension.identifier.id.toLowerCase(), webExtension); extensionInfos.push({ id: webExtension.identifier.id, version: webExtension.version }); } catch (error) { this.logService.info(`Ignoring additional builtin extension from gallery resource ${extensionGalleryResource.toString()} because there is an error while converting it into web extension`, getErrorMessage(error)); } </ins> })); const galleryExtensions = await this.galleryService.getExtensions(extensionInfos, CancellationToken.None); for (const galleryExtension of galleryExtensions) {
Change:
Type: <bBug</bI am not sure if this a feature request or a bug. When I create Python snippets with a name longer than 60 characters, fuzzy search is disabled for these snippets. Steps to reproduce to Python snippets JSON file a snippet with name: "a very long name which has more than sixty chars to trigger the problem" to "Insert snippet" in a python file snippet can only be found when the search string matches the snippet name exactly, i.e. "a very long" will narrow the search result down to the snippet, while "avelo" will exclude the snippet from the search results. In case this is the current behavior, I would like to make the case that in fields like data science, many people have large collections of snippets for generating different plots etc. Even in the age of Copilot, these remain useful :) To distinguish between many snippets, longer and descriptive titles are often very useful. Thank you for considering this issue! VS Code version: Code - Insiders 1.87.0-insider (, 2024-02-05T05:46:48.601Z) OS version: Linux x64 6.5.0-15-generic Modes: <details<summarySystem Info</summary </details<details<summaryExtensions (19)</summaryExtensionVersion ------ vscode-neovim1.6.0 vscode-eslint2.4.4 copilot1.159.0 copilot-chat0.12.0 fuzzy-search0.0.3 black-formatter2024.1. debugpy2024.1. python2024.1. vscode-pylance2023.12.1 jupyter2024.2. jupyter-keymap1.1.2 jupyter-renderers1.0.17 vscode-jupyter-cell-tags0.1.8 remote-ssh0.109. remote-ssh-edit0.86.0 remote-explorer0.5. remote-server1.6. my-vscode-utils0.0.2 pyexec0.0.1 </details<!-- generated by issue reporter --
this seems to be an issue with QP and its default search/filtering
For the time being you could use completions for this <img width="632" alt="Screenshot 2024-02-09 at 15 19 46" src=""
Thanks for the very quick response! Including the snippets in the intellisense suggestions is in principle a good idea! Personally, I prefer having this turned off to avoid having too many distracting items in my completions. So if this same sort of fuzzy matching could be allowed in the Quick Pick, that would be awesome :)
Looks intentional... though that was 7 years ago! Let's move cautiously here as this code is used in a lot of places... first step, I'll go ahead and just trim the string to 60. This shouldn't impact perf much because we already said 60 is our limit. In the future we can consider removing that check.

Discussion:
return null; } <ins> // TODO: Consider removing this check </ins> if (camelCaseWord.length > 60) { <del> return null; </del> <ins> camelCaseWord = camelCaseWord.substring(0, 60); </ins> } const analysis = analyzeCamelCaseWord(camelCaseWord);
Change:
<img width="642" alt="image" src=""
How do you repro this? We don't show the hint for readonly editors:
an file 1 -My guess is we don't re-evaluate the change

Discussion:
this.toDispose.push(this.editor.onDidChangeModelContent(() => this.update())); this.toDispose.push(this.inlineChatService.onDidChangeProviders(() => this.update())); this.toDispose.push(this.editor.onDidChangeModelDecorations(() => this.update())); <ins> this.toDispose.push(this.editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => { if (e.hasChanged(EditorOption.readOnly)) { this.update(); } })); </ins> this.toDispose.push(this.configurationService.onDidChangeConfiguration(e => { if (e.affectsConfiguration(emptyTextEditorHintSetting)) { this.update();
Change:
Repro: 3 cells the middle one the empty space at the bottom of the notebook undo it doesn't work, clicking in between cells does work though
Specifically, undo only works when focused on a cell container. Focus within a cell (code or markdown) editor and in the notebook editor both do not handle the undo.

Discussion:
_log(loggerService, '[Revive Webview] Notebook editor backlayer webview is not focused, bypass'); return; } <ins> // If none of the outputs have focus, then webview is not focused const view = editor.getViewModel(); if (view && view.viewCells.every(cell => !cell.outputIsFocused && !cell.outputIsHovered)) { return; } </ins> const webview = editor.getInnerWebview(); _log(loggerService, '[Revive Webview] Notebook editor backlayer webview is focused');

} }; }; <ins> function getOutputContainer(event: FocusEvent | MouseEvent) { for (const node of event.composedPath()) { if (node instanceof HTMLElement && node.classList.contains('output')) { return { id: node.id }; } } return; } let lastFocusedOutput: { id: string } | undefined = undefined; const handleOutputFocusOut = (event: FocusEvent) => { const outputFocus = event && getOutputContainer(event); if (!outputFocus) { return; } // Possible we're tabbing through the elements of the same output. // Lets see if focus is set back to the same output. lastFocusedOutput = undefined; setTimeout(() => { if (lastFocusedOutput?.id === outputFocus.id) { return; } postNotebookMessage<webviewMessages.IOutputBlurMessage>('outputBlur', outputFocus); }, 0); }; </ins> // check if an input element is focused within the output element <del> const checkOutputInputFocus = () => { </del> <ins> const checkOutputInputFocus = (e: FocusEvent) => { lastFocusedOutput = getOutputContainer(e); </ins> const activeElement = window.document.activeElement; if (!activeElement) { return;

return; } <del> let outputFocus: { id: string } | undefined = undefined; for (const node of event.composedPath()) { if (node instanceof HTMLElement && node.classList.contains('output')) { outputFocus = { id: node.id }; break; } } </del> <ins> const outputFocus = lastFocusedOutput = getOutputContainer(event); </ins> for (const node of event.composedPath()) { if (node instanceof HTMLAnchorElement && node.href) { if (node.href.startsWith('blob:')) {

window.document.body.addEventListener('click', handleInnerClick); window.document.body.addEventListener('focusin', checkOutputInputFocus); <ins> window.document.body.addEventListener('focusout', handleOutputFocusOut); </ins> interface RendererContext extends rendererApi.RendererContext<unknown> { readonly onDidChangeSettings: Event<RenderOptions>;
Change:
I find these labels hard to figure out: ! I suggest:
i'll probably remove these altogether since they're not useful
Yes
pointed out that since this is called out in the release notes, I should wait to remove it until there's a replacement IE until we have a universal command
but at least align the labels? "Voice: Start / Stop Dictation in Terminal" <img width="718" alt="image" src=""
is the editor one going to become a generic that can be used anywhere? Chatting with the other day, since we announced the terminal feature as a non-preview we were going to wait until your dictation work works in the terminal as well. Unless we're not on the same page?

Discussion:
registerActiveInstanceAction({ id: TerminalCommandId.StartVoice, <del> title: localize2('workbench.action.terminal.startVoice', "Start Terminal Voice"), </del> <ins> title: localize2('workbench.action.terminal.startDictation', "Start Dictation in Terminal"), </ins> precondition: ContextKeyExpr.and(HasSpeechProvider, sharedWhenClause.terminalAvailable), f1: true, run: (activeInstance, c, accessor) => {

registerActiveInstanceAction({ id: TerminalCommandId.StopVoice, <del> title: localize2('workbench.action.terminal.stopVoice', "Stop Terminal Voice"), </del> <ins> title: localize2('workbench.action.terminal.stopDictation', "Stop Dictation in Terminal"), </ins> precondition: ContextKeyExpr.and(HasSpeechProvider, sharedWhenClause.terminalAvailable), f1: true, run: (activeInstance, c, accessor) => {
Change:
Keeping this open as the main tracking issue as I keep an eye on error telemetry. Been quiet and haven't seen any entries in the errors site since early Feb with +
Closing this as fixed by the above linked PR's. Error telem has been quiet with no entries for ~4 weeks.

Discussion:
private _stopAll(): void { // Remove any existing decorations <ins> // TODO: @Yoyokrazy - this triggers as notebooks scroll, causing highlights to disappear momentarily. </ins> this._removeAllDecorations(); // Cancel any renderDecorationsTimer

private _run(): void { let workerRequestIsValid; <del> if (!this.editor.hasWidgetFocus()) { // no focus (new nb cell, etc) </del> <ins> if (!this.editor.hasTextFocus()) { // no focus (new nb cell, etc) </ins> if (WordHighlighter.query === null) { // no previous query, nothing to highlight return;
Change:
Type: <bBug</bSteps to reproduce: a non-empty PROMPTCOMMAND string or array in a new terminal in vs-code , observe that this variable has a value Details: On l. 278 of , a loop is run as , but has not been declared local to the function. As a result, the shell environment retains the variable containing the last element of the original PROMPTCOMMAND array. Fix: Line 278 could be prepended with a declaration so that the variable doesn't leak out of the function scope. VS Code version: Code 1.86.1 (, 2024-02-07T09:07:19.849Z) OS version: Linux x64 6.1.60--g03a802b9a072 Modes: Unsupported <details<summarySystem Info</summary </details<details<summaryExtensions (26)</summaryExtensionVersion ------ increment-selection0.2.0 Bookmarks13.4.2 insert-unicode0.15.1 systemd-unit-file1.0.6 markdown-table-prettify3.6.0 vscode-edit-csv0.8.3 markdown-shortcuts0.12.0 debugpy2024.0.0 isort2023.10.1 python2024.0.1 vscode-pylance2024.2.1 jupyter2024.1.1 jupyter-keymap1.1.2 jupyter-renderers1.0.17 vscode-jupyter-cell-tags0.1.8 vscode-jupyter-slideshow0.1.5 adwaita-theme1.1.0 regex-text-gen0.14.0 snippets-ranger1.8.0 edit-with-shell1.3.0 markdown-preview-enhanced0.8.11 rewrap1.16.3 system-viewer1.1.1 pdf1.2.2 change-case1.0.0 markdown-all-in-one3.6.2 (1 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
verified that is not defined here !

Discussion:
__vsc_restore_exit_code "${__vsc_status}" # Evaluate the original PROMPT_COMMAND similarly to how bash would normally # See https://unix.stackexchange.com/a/672843 for technique <ins> local cmd </ins> for cmd in "${__vsc_original_prompt_command[@]}"; do eval "${cmd:-}" done
Change:
No steps yet, but it happened twice today that I have seen stale decorations, e.g after pull <img width="1367" alt="Screenshot 2024-02-14 at 12 26 08" src=""

Discussion:
constructor(private readonly repository: Repository) { this.disposables.push(window.registerFileDecorationProvider(this)); <del> repository.historyProvider.onDidChangeCurrentHistoryItemGroupBase(this.onDidChangeCurrentHistoryItemGroupBase, this, this.disposables); </del> <ins> repository.historyProvider.onDidChangeCurrentHistoryItemGroup(this.onDidChangeCurrentHistoryItemGroup, this, this.disposables); </ins> } <del> private async onDidChangeCurrentHistoryItemGroupBase(): Promise<void> { </del> <ins> private async onDidChangeCurrentHistoryItemGroup(): Promise<void> { </ins> const newDecorations = new Map<string, FileDecoration>(); await this.collectIncomingChangesFileDecorations(newDecorations); const uris = new Set([...this.decorations.keys()].concat([...newDecorations.keys()]));

private readonly _onDidChangeCurrentHistoryItemGroup = new EventEmitter<void>(); readonly onDidChangeCurrentHistoryItemGroup: Event<void> = this._onDidChangeCurrentHistoryItemGroup.event; <del> private readonly _onDidChangeCurrentHistoryItemGroupBase = new EventEmitter<void>(); readonly onDidChangeCurrentHistoryItemGroupBase: Event<void> = this._onDidChangeCurrentHistoryItemGroupBase.event; </del> private readonly _onDidChangeDecorations = new EventEmitter<Uri[]>(); readonly onDidChangeFileDecorations: Event<Uri[]> = this._onDidChangeDecorations.event;

set currentHistoryItemGroup(value: SourceControlHistoryItemGroup | undefined) { this._currentHistoryItemGroup = value; this._onDidChangeCurrentHistoryItemGroup.fire(); <del> this.logger.trace('GitHistoryProvider:onDidRunGitStatus - currentHistoryItemGroup:', JSON.stringify(value)); </del> } private historyItemDecorations = new Map<string, FileDecoration>();

return; } <ins> this._HEAD = this.repository.HEAD; </ins> // Check if HEAD does not support incoming/outgoing (detached commit, tag) if (!this.repository.HEAD?.name || !this.repository.HEAD?.commit || this.repository.HEAD.type === RefType.Tag) { this.logger.trace('GitHistoryProvider:onDidRunGitStatus - HEAD does not support incoming/outgoing'); this.currentHistoryItemGroup = undefined; <del> this._HEAD = this.repository.HEAD; </del> return; }

} : undefined }; <del> // Check if Upstream has changed if (force || this._HEAD?.upstream?.name !== this.repository.HEAD?.upstream?.name || this._HEAD?.upstream?.remote !== this.repository.HEAD?.upstream?.remote || this._HEAD?.upstream?.commit !== this.repository.HEAD?.upstream?.commit) { this.logger.trace(`GitHistoryProvider:onDidRunGitStatus - Upstream has changed (${force})`); this._onDidChangeCurrentHistoryItemGroupBase.fire(); } this._HEAD = this.repository.HEAD; </del> <ins> this.logger.trace(`GitHistoryProvider:onDidRunGitStatus - currentHistoryItemGroup (${force}): ${JSON.stringify(this.currentHistoryItemGroup)}`); </ins> } async provideHistoryItems(historyItemGroupId: string, options: SourceControlHistoryOptions): Promise<SourceControlHistoryItem[]> {
Change:
Branch - ben/editor-working-sets-api-command
here are steps: enable the new setting to open a folder that has a git repo and checkout to a branch open some editors checkout back to the main branch (editor layout should change) =this stack trace appears Since we are planning to build this feature for April, I would appreciate a quick look from you.
I am pushing a fix, during the working set transition there is a brief moment when there are no editor groups...
<!-- AUTHORVERIFICATIONREQUEST --This bug has been fixed in the latest release of ! you can help us out by commenting if things are now working as expected. If things still don't seem right, please ensure you're on version of Insiders (today's or later - you can use in the command palette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!

Discussion:
* Builds the model from scratch based on the current state of the editor service. */ private _createTabsModel(): void { <ins> if (this._editorGroupsService.groups.length === 0) { return; // skip this invalid state, it may happen when the entire editor area is transitioning to other state ("editor working sets") } </ins> this._tabGroupModel = []; this._groupLookup.clear(); this._tabInfoLookup.clear();
Change:
I had a notebook opened (just fine), then did some coding and when coming back to the notebook editor it was totally broken <img width="1551" alt="Screenshot 2024-02-15 at 15 30 56" src=""
It's strange that throws. With that said, an exception should not break the whole notebook.
Verified with code review, simple try catch around the problem exception line

Discussion:
return; } <del> const options = this.codeEditorService.resolveDecorationOptions(e, true); if (options.afterContentClassName || options.beforeContentClassName) { const cssRules = this.codeEditorService.resolveDecorationCSSRules(e); if (cssRules !== null) { for (let i = 0; i < cssRules.length; i++) { // The following ways to index into the list are equivalent if ( ((cssRules[i] as CSSStyleRule).selectorText.endsWith('::after') || (cssRules[i] as CSSStyleRule).selectorText.endsWith('::after')) && (cssRules[i] as CSSStyleRule).cssText.indexOf('top:') > -1 ) { // there is a `::before` or `::after` text decoration whose position is above or below current line // we at least make sure that the editor top padding is at least one line const editorOptions = this.configurationService.getValue<IEditorOptions>('editor'); updateEditorTopPadding(BareFontInfo.createFromRawSettings(editorOptions, PixelRatio.getInstance(this.targetWindow).value).lineHeight + 2); decorationTriggeredAdjustment = true; break; </del> <ins> try { const options = this.codeEditorService.resolveDecorationOptions(e, true); if (options.afterContentClassName || options.beforeContentClassName) { const cssRules = this.codeEditorService.resolveDecorationCSSRules(e); if (cssRules !== null) { for (let i = 0; i < cssRules.length; i++) { // The following ways to index into the list are equivalent if ( ((cssRules[i] as CSSStyleRule).selectorText.endsWith('::after') || (cssRules[i] as CSSStyleRule).selectorText.endsWith('::after')) && (cssRules[i] as CSSStyleRule).cssText.indexOf('top:') > -1 ) { // there is a `::before` or `::after` text decoration whose position is above or below current line // we at least make sure that the editor top padding is at least one line const editorOptions = this.configurationService.getValue<IEditorOptions>('editor'); updateEditorTopPadding(BareFontInfo.createFromRawSettings(editorOptions, PixelRatio.getInstance(this.targetWindow).value).lineHeight + 2); decorationTriggeredAdjustment = true; break; } </ins> } } } <ins> decorationCheckSet.add(e); } catch (_ex) { // do not throw and break notebook </ins> } <del> decorationCheckSet.add(e); </del> }; this._register(this.codeEditorService.onDecorationTypeRegistered(onDidAddDecorationType)); this.codeEditorService.listDecorationTypes().forEach(onDidAddDecorationType);
Change:
The extension preview page does not ignore arguments after the initial whitespace separated languageId as seen in Github's markdown and both VSCode's builtin Markdown extensions all text after the whitespace separator is ignored (note: should fail) Github: json { "key": "value" } json textmate { "key": "value" } json-textmate { "key": "value" } ` Markdown code: ! Markdown preview: ! Extension page preview: ! you can download as a simple test extension PR:

Discussion:
return; } <del> const languageId = languageService.getLanguageIdByLanguageName(lang); </del> <ins> const languageId = languageService.getLanguageIdByLanguageName(lang) ?? languageService.getLanguageIdByLanguageName(lang.split(/s+|:|,|(?!^){|?]/, 1)[0]); </ins> const html = await tokenizeToString(languageService, code, languageId); callback(null, `<code>${html}</code>`); });