Question: viewState: ISettingsEditorViewState, settingsOrderByTocIndex: Map<string, number> | null, isWorkspaceTrusted: boolean, <del> @IWorkbenchConfigurationService private readonly configurationService: IWorkbenchConfigurationService, </del> <ins> @IWorkbenchConfigurationService configurationService: IWorkbenchConfigurationService, </ins> @IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService, @ILanguageService languageService: ILanguageService, @IUserDataProfileService userDataProfileService: IUserDataProfileService,

<!-- 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. --This proposal affects Settings editor (Settings UI) users and extension authors. The search in the Settings editor currently shows results sorted by the table of contents so that commonly used settings can show up at the top, and so search results can be grouped by the entries in the table of contents. The change to sort the settings by table of contents was made as part of and However, the Settings editor performs two searches per query: the first search finds settings based on keyword matching, and the second search attempts to find relevant settings using similarity search algorithms. As a result, the second search is prone to finding less relevant settings, especially when the user had a specific keyword in mind. Because the Settings editor currently orders settings by the table of contents, the less relevant results from the second search sometimes end up showing above the keyword match results because they appear first in the table of contents. As an example, if I search "title bar style" in the Settings editor, actually shows up fifth due to table of contents sorting: ! This issue proposes reverting the settings search so that the keyword matches always appear at the top of the search results again. As part of this proposal, and would regress and become out of scope. In other words, ordering the search results so that keyword matches always appear first would break grouping the search results by the table of contents entries, but would make it so that users hopefully don't have to scroll down as much to find what they were looking for. Implementing this proposal would also break sorting extension search results by the settings order numbers given by the extension author in their extension's file. I noticed that the issue of having to scroll down to find a keyword match is made worse when the Settings editor is "small", such as when I restore/shrink the VS Code window. Screenreader users might also have to tab down more search results to get to the one they want. Feel free to upvote the proposal if you'd like to see it implemented, or downvote it if you'd like the settings search results ordering to remain the way it currently is. You're also welcome to comment on this issue with alternative suggestions for how the search results should be shown within the Settings editor.


Question: viewState: ISettingsEditorViewState, settingsOrderByTocIndex: Map<string, number> | null, isWorkspaceTrusted: boolean, <del> @IWorkbenchConfigurationService private readonly configurationService: IWorkbenchConfigurationService, </del> <ins> @IWorkbenchConfigurationService configurationService: IWorkbenchConfigurationService, </ins> @IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService, @ILanguageService languageService: ILanguageService, @IUserDataProfileService userDataProfileService: IUserDataProfileService,

Pinging authors of the issues above along with those who I have seen express interest in reverting the behaviour:
Another idea I have rather than doing a full revert is to use table of contents order as a last resort sorting key for the keyword matches. Therefore, keyword matches in the title could come before keyword matches in the description, and the settings that all have a description-only keyword match could be sorted amongst themselves by table of contents order. With this concept, some extension settings could preserve their order, but an extension setting found by keyword matching would still always come before an extension setting found by a similarity algorithm.
To revert the search results in the Settings editor to order by keyword matches first in the Visual Studio Code extension, you can follow these steps Open the Settings editor: You can do this by pressing the Ctrl+, (Windows, Linux) or Cmd+, (macOS) keyboard shortcut, or by clicking on the gear icon in the Activity Bar and selecting "Settings" from the dropdown menu. Search for the "workbench.settings.settingsSearchTocBehavior" setting: In the search bar at the top of the Settings editor, type "workbench.settings.settingsSearchTocBehavior". Change the value of the setting to "hide": Click on the dropdown menu next to the setting and select "hide". This will disable the table of contents ordering and prioritize keyword matches. Restart Visual Studio Code: To apply the changes, you need to restart Visual Studio Code. Once you restart, the search results in the Settings editor will be ordered by keyword matches first.
that behaviour was implemented as part of , and yes, it is a workaround in a sense. This proposal is on ordering results by keyword matches first even when the table of contents is shown.
Try doing this way In the file, add the following property to the contributes section: { "name": "revert-settings-search-to-keyword-matches-first", "version": "1.0.0", "description": "Reverts settings search in the Settings editor to order results by keyword matches first.


Question: viewState: ISettingsEditorViewState, settingsOrderByTocIndex: Map<string, number> | null, isWorkspaceTrusted: boolean, <del> @IWorkbenchConfigurationService private readonly configurationService: IWorkbenchConfigurationService, </del> <ins> @IWorkbenchConfigurationService configurationService: IWorkbenchConfigurationService, </ins> @IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService, @ILanguageService languageService: ILanguageService, @IUserDataProfileService userDataProfileService: IUserDataProfileService,

", "publisher": "your-name", "categories": ["Settings"], "activationEvents": ["onStartup"], "contributes": { "configuration": { "properties": { "search.settings.sortByKeywordMatchesFirst": { "type": "boolean", "default": true } } } }, "main": "" } the extension's main script file, add the following code: const vscode = require('vscode'); vscode.extensions.onDidChangeConfiguration(() ={ const sortByKeywordMatchesFirst = vscode.workspace.getConfiguration('search').get('settings.sortByKeywordMatchesFirst'); // Update the Settings editor's search sorting algorithm here. });
Since I am coming from , it would be important to me that the order determined by the extension is retained when only " is called (as you also suggested in ). This then serves as a filter for the items in the base order. If you then place a keyword behind it, you can search "smartly" again.
Verification notes: for title bar style should show the setting first no matter what value is set to. for should show the CSS category first, followed by the LESS category, and lastly by the SCSS category.


Question: import { EditorOption } from 'vs/editor/common/config/editorOptions'; import * as platform from 'vs/base/common/platform'; import { MenuRegistry } from 'vs/platform/actions/common/actions'; <ins> import { CancellationTokenSource } from 'vs/base/common/cancellation'; </ins> // sticky suggest widget which doesn't disappear on focus out and such let _sticky = false;

Issue Type: <bBug</bLike what the heading says, inserting a code snippet anywhere in the code file causes an autoscroll. This is a slight inconvenience, as while inserting snippets, viewing code above it is desirable, causing us to rescroll into view. So adding an option to revert to the functionality in the stable release would be preferred VS Code version: Code - Insiders 1.46.0-insider (, 2020-05-07T16:36:39.681Z) OS version: Linux x64 5.4.38-1-MANJARO <details<summarySystem Info</summary </details<details<summaryExtensions (4)</summaryExtensionVersion ------ cpptools0.27.1 Go0.14.1 material-icon-theme4.1.0 material-theme3.5.0 (1 theme extensions excluded) </details<!-- generated by issue reporter --
Yeah - that's a regression from a recent change to keep the position stable when additional edits are inserted...
is the item that caused this regression.
fixed via
Yep, it works fine now. Thanks a lot!
This bug has been fixed in to 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 pallette to check), and leave a comment letting us know what isn't working as expected. Happy Coding!
/verified


Question: import { EditorOption } from 'vs/editor/common/config/editorOptions'; import * as platform from 'vs/base/common/platform'; import { MenuRegistry } from 'vs/platform/actions/common/actions'; <ins> import { CancellationTokenSource } from 'vs/base/common/cancellation'; </ins> // sticky suggest widget which doesn't disappear on focus out and such let _sticky = false;

This is somewhat the opposite of and the acknowledgement that computing additional text edits for all items upfront is too demanding. This issue is only about and the goal is a pragmatic solution, similar to the one that we have for . Idea accept an unresolved completion proceed with insertion as usual set up a content change listener resolve the items once resolved check if additional edits overlap with "concurrent" changes. when they overlap, do nothing otherwise proceed
The first version for this is now merged to master, it's a pragmatic approach that's better then not resolving but worst than (costly) upfront resolving. Items to followup on [ ] telemetry and follow up issues [ ] - TS issue for having incomplete items [ ] [ ] java for returning very few (resolved) completions, e.g doing the right thing
/cc - My understanding is that Java resolves all items upfront, e.g compute additional text edits during "provide", and that it is quite expensive and therefore Java only returns a small amount of items. Is that correct? Could Java return results faster when additional text edits are computed during resolve (and therefore only for selected items)?
Yes. I think so! is the dev who was working on Java completion. I believe he can provide more insights toward this topic. // cc
this is exactly the behavior that used to have, ie compute all the completion items first (fast), then the text edits were computed during resolveCompletion. We were asked to not do that as and changed to return a small subset of completion items (with incomplete=true), with full text edits computed upfront. The user experience is definitely not as good as with our initial implementation.
To be clear, computing any Java textedit upfront is costly when returning 100+ items (and we can return several thousands items). We'd prefer if the async insertion of textedits covered all textedits, not just the additional ones.
The requirements discussed in are still true and there are no plans to change that. There is (which might be derived from ) and . The former () is inserted at the cursor and must be inserted synchronous to accepting a completion (we cannot block typing while waiting for that). The latter () is meant for things like import-statements and we now want to relax that, e.g it can come late and we try to apply those edits despite the user having typed more.


Question: import { EditorOption } from 'vs/editor/common/config/editorOptions'; import * as platform from 'vs/base/common/platform'; import { MenuRegistry } from 'vs/platform/actions/common/actions'; <ins> import { CancellationTokenSource } from 'vs/base/common/cancellation'; </ins> // sticky suggest widget which doesn't disappear on focus out and such let _sticky = false;

When exactly does run, is it only when an item gets highlighted in the menu? Can't tell from the docs. I only need to generate for the completion item the user ends up applying -- doing it for other items is unnecessary work that's bogging down the extension host, and I will have to implement yielding. I assume no one would need to generate before a completion item is applied? Is there any kind of completion applied event we can hook into to work around this for the time being?
That's exactly what is about . Today, there is no guarantee that is ever called because its original design is to provide data for the suggest details widget. However, we see that (amongst other things) are computed during resolve and leads to subtle bugs (because don't always call resolve or always await it) Well, is the problem if you do not generate them upfront. select suggestion synchronously inserts the string starts for additional text edits continues to type quickly and all over the place -call eventually returns but it is unclear if the edits are still valid because the state changed many types in-between Solutions: Won't work because in JS you cannot wait for another "thread" or "process", the world always keeps turning Implement a full -solution because this is two entities "typing" concurrently in the same document. However, it will feel awkward because the user doesn't expect to be such a scenario. approach that tries to apply additional edits if possible but inserts the "main edit" (insertText) always synchronously. () "if possible" is currently defined as "no edit has occurred before the first additional edit". That works well if you use additional edits for things like imports or prefixes (which is the indented use-case) but won't work if additional text edits change the main edit, like appending a call-operators with arguments etc
I mean JS can't block but ignoring typing while awaiting is possible -- I was imagining that VSCode would keep the completions menu open and ignore any typing until is resolved and all text edits applied for the accepted item. Obviously this would be bad if resolving takes a long time, but the API has cancelation tokens already, so the UI would just need to show a spinner/cancel icon, and also cancel if the user presses ESC or navigates to a different editor, for a decent UX.


Question: import { EditorOption } from 'vs/editor/common/config/editorOptions'; import * as platform from 'vs/base/common/platform'; import { MenuRegistry } from 'vs/platform/actions/common/actions'; <ins> import { CancellationTokenSource } from 'vs/base/common/cancellation'; </ins> // sticky suggest widget which doesn't disappear on focus out and such let _sticky = false;

I think this would be less confusing for users too; it's the only way it would be clear when VSCode is completely done applying the completion. I think many users would be confused if imports usually get but not when they resume typing too soon. FWIW I can syncronously generate the additional text edits I need, so I'd be happy if there were an API to synchronously generate them when the completion item is accepted. I know not everyone would be able to generate them sync though.
Also I know my questions may have seemed redundant, but I hadn't seen anyone on this thread point out that it would be ideal to avoid ever computing additional text edits (or even the primary insert text) for unselected completions. Since can get called before any item is accepted (I assume, since it seems to be for showing additional details in the menu), I'd think any solution via could still result in unnecessarily generating additional edits that are ultimately discarded.
The golden rule is that "you can always type inside the editor". Ignoring typing is not a good solution and will bug users. Just think of quick suggest and auto accept characters - you don't want the editor to stop typing just because an extension is taking a little longer (+50ms). To be precise you should have written "typing at or before the offset at which additional edits are going to happen" I honestly think the majority can generate them synchronously but this happens in the extension host process or the language server process, and all of that might happen on a different machine and there is no way to synchronously transport that into the UI.
re with the current changes you should be able to have a "simple insert text", say , and compute an additional text edit, like , that goes in front of it so that you eventually have . Right? Or am I missing something?
that might actually be a good idea ;-) In practice though, we might need to revisit the way the principal TextEdit is computed (i.e rewrite a bunch of stuff from upstream JDT)
I get the desire to be able to always be able to type inside the editor and agree that's an important principle. The only reason I think this case is an exception is that: The user would probably want to wait for all edits to get applied anyway.


Question: import { EditorOption } from 'vs/editor/common/config/editorOptions'; import * as platform from 'vs/base/common/platform'; import { MenuRegistry } from 'vs/platform/actions/common/actions'; <ins> import { CancellationTokenSource } from 'vs/base/common/cancellation'; </ins> // sticky suggest widget which doesn't disappear on focus out and such let _sticky = false;

Seems unlikely that people would want to get the main edit without the additional edits By making the operation cancelable, you can still go back to typing immediately if you so desire. I certainly wouldn't want to block the user from typing without recourse (as you know, I feel frustrated that happens currently when using Vim extensions) On the other hand, I guess it's unlikely that the additional text edits would overlap whatever the user continues typing...
I hadn't thought about auto accept characters though, that's a good point. That's something I don't have experience with. Also considering that VSCode could pop up a warning if it has to bail on inserting additional edits, it's not a big deal if it ever happens
I remember that we have some new data points regarding the time consumption in different stages of code completion in Can you share that data and see how we can tune it with this change?
For Java language server, below is a sample of call tree when triggering completion. (time value is larger than expected because of extra overhead from JProfiler) ! Total time of completion stage mainly consists of three parts: competion candidates in JDT to CompletionItems (calc textEdits, additionalTextEdits, etc.) --- calc an incomplete list of only 50 items by default (the full list can contain thousands) --- here calculating import statements costs a lot of time server-side code snippets (not much related to this topic) I did a simple experiment on java language server, with vscode-insider built on 2020-5-15. I was using spring-petclinic, which is not a big one, but with some dependencies. Type a initial letter, e.g. "O", and observe perf of completion and resolve. Do multiple times for statistics. Calculating additionalTextEdits async in resolve stage does decrease the time cost a lot. textEdits and additionalTextEdits are calculated during completion stage. completion: ~150 ms resolve(avg of top 10 items): ~10 ms Now I simply move a bunch of textedit calculation from "completion" stage into "resolve" stage. completion: ~100 ms resolve(avg of top 10 items): ~17 ms !
I just realized that can return a thenable, but I assume that would delay the appearance of the entire menu?
Closing as we haven't seen issues with the new pragmatic approach and the plan is to stick with it.


Question: import { EditorOption } from 'vs/editor/common/config/editorOptions'; import * as platform from 'vs/base/common/platform'; import { MenuRegistry } from 'vs/platform/actions/common/actions'; <ins> import { CancellationTokenSource } from 'vs/base/common/cancellation'; </ins> // sticky suggest widget which doesn't disappear on focus out and such let _sticky = false;

so how do servers know that clients support lazy-loading of additional textedits? Surely this should be a client capability advertised by vscode (that needs to be specced in the LSP)
is the right person for that and you should probably create a follow up issue in the LSP land
corresponding LSP feature request created here please add more details if I miss anything.
Thanks
To verify: use TypeScript have a suggestion that will import a symbol make sure that suggestion isn't first or focused in the UI use the mouse(!) to select the suggestion make sure the import is there make sure undo, redo works as expected


Question: if (highlights) { return { label, <del> description: getStateLabel(session.state), </del> highlights: { label: highlights }, accept: (keyMod, event) => { this._debugService.focusStackFrame(undefined, undefined, session, { explicit: true });

Testing !
I just noticed that is not localized and is not meant for display. That means that "Label" was not a good name for that function, but we can either just remove the state or find the code that drives the state label in the callstack.
Actually, it seems that only displays , , or , which is probably not super useful to the user anyways. It seems like the info like is only available on each thread, and a debug session can have multiple threads. Perhaps we should just remove the state for now.


Question: private _shouldFocus: boolean; private _colorPicker: ColorPickerWidget | null; private _renderDisposable: IDisposable | null; <ins> private _preferBelow: boolean; </ins> constructor( editor: ICodeEditor,

Issue Type: <bFeature Request</bI want the message could display under the variables it refers to. Because the message box blocks the code over the current line. Thank you. VS Code version: Code 1.36.1 (, 2019-07-08T22:59:35.033Z) OS version: Windows_NT x64 10.0.


Question: import { ICommandService } from 'vs/platform/commands/common/commands'; import { ContextKeyExpr, ContextKeyExpression, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { Disposable } from 'vs/base/common/lifecycle'; <del> import { IUserDataSyncEnablementService } from 'vs/platform/userDataSync/common/userDataSync'; </del> <ins> import { EXTENSIONS_SYNC_CONTEXT_KEY, IUserDataSyncEnablementService } from 'vs/platform/userDataSync/common/userDataSync'; </ins> import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'; import { URI } from 'vs/base/common/uri'; import { joinPath } from 'vs/base/common/resources';

I don't think the state of walkthrough progress is synced between machines, so I see this on each new machine I setup: !
Again, we do try to sync the state but there may be a race where it's not available in time. I'll investigate more..
Fixed it by adding the context to the installation event when extensions are synced by settings sync. Walk through component shall simply ignore walk through for those extensions which are installed by settings sync (irrespective of the walk through state is synced or not).


Question: } // Save selection <del> const selection = this.widget?.getSelection(); </del> <ins> const selection = new Set<Marker>(); for (const marker of this.widget.getSelection()) { if (marker instanceof ResourceMarkers) { marker.markers.forEach(m => selection.add(m)); } else if (marker instanceof Marker || marker instanceof MarkerTableItem) { selection.add(marker); } } // Save focus const focus = new Set<Marker>(); for (const marker of this.widget.getFocus()) { if (marker instanceof Marker || marker instanceof MarkerTableItem) { focus.add(marker); } } </ins> // Create new widget this.createWidget(this.widgetContainer); this.refreshPanel(); // Restore selection <del> if (selection && selection.length > 0 && (selection[0] instanceof Marker || selection[0] instanceof MarkerTableItem)) { </del> <ins> if (selection.size > 0) { this.widget.setMarkerSelection(Array.from(selection), Array.from(focus)); </ins> this.widget.domFocus(); <del> this.widget.setMarkerSelection(selection[0]); </del> } }

Testing Not sure if this lack of functionality blocks anything truly useful, but at least in the treeview, you can multi-select problems and copy them to the clipboard. In the table view you can't.
This also has the side effect of losing a multi-select that you may have had in the treeview.
what was the thinking for enabling multi-select in the problems treeview? Was there a particular scenario or this is what the default behaviour is for a treeview? If there is a real scenario, than we should enable multi-select in the table as well.
You can copy multiple problems is the primary use case.
that makes sense. Thanks!


Question: iconClass: ThemeIcon.asClassName(searchOpenInFileIcon), tooltip: localize('QuickSearchOpenInFile', "Open File") }], <ins> trigger: async (): Promise<TriggerAction> => { await this.handleAccept(fileMatch, {}); return TriggerAction.CLOSE_PICKER; }, </ins> }); const results: Match[] = fileMatch.matches() ?? [];

! quick search. over a file name pick item and click the button to open the file. happens :bug:


Question: "filenames": [ "git-rebase-todo" ], <ins> "filenamePatterns": [ "**/rebase-merge/done" ], </ins> "configuration": "./languages/git-rebase.language-configuration.json" }, {

<!-- 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. --Do not see similar issues here: Steps to Reproduce: interactive rebase click tab, "Copy path" file picker, paste path path file name from to . This is a file that git uses to track what is done. "Language mode" should be "Git Rebase Message" but it is not. I am using worktrees, but I don't think this is related, since has proper language detection.


Question: const href = a.getAttribute('data-href'); if (href) { if (href.startsWith(variableRefUrl)) { <del> const title = href.slice(variableRefUrl.length); </del> <ins> const title = decodeURIComponent(href.slice(variableRefUrl.length)); </ins> a.parentElement!.replaceChild( renderResourceWidget(a.textContent!, title), a);

<img width="377" alt="image" src=""
Verification step- just use a variable in a multiroot workspace, and check that you have the right blue background when it's rendered in the request.
Works great. Slightly related - why do we just render the blue background while I am typing the request, but do not render it blue when the request is sent. This was always the behaviour and is unrelated to MR workspace. I am just curious !
If it was used correctly, it will have the blue background. Did you pick the file from the picker, or just type the text?
Picked from file picker.
Oh no!
Apparently I didn't test this as thoroughly as I should have. Some files now break the markdown link. Need to rework this in main for debt week but there is an easy fix for now.
For verification, we should test with Files in a multiroot workspace In single folder window Files at the top level of the workspace And under a folder
Since the PR has been merged yesterday, this issue will be closed, for verification.


Question: const content = model.main; if (!input.resource.path.endsWith('.md')) { <del> safeInnerHtml(this.content, content); </del> <ins> safeInnerHtml(this.content, content, { ALLOW_UNKNOWN_PROTOCOLS: true }); </ins> this.updateSizeClasses(); this.decorateContent();

<!-- 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. --<!-- 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.93.0-insider (user setup) Commit: Date: 2024-09-04T13:13:15.344Z Electron: 30.4.0 ElectronBuildId: Chromium: 124.0.6367.243 20.15.1 V8: 12.4.254.20-electron.0 OS: Windows_NT x64 10.0. OS Version: Windows 11 Insiders Steps to Reproduce: in the first paragraph doesn't appear to be a link, which I was surprised about: ! I hover over it, I see it's supposed to be a link, but clicking on it does nothing: ! The other docs links at the bottom of the playground appear correctly as links and do open when I click on them: !
This seems related to the bookmark issue we had in the release notes. The other bookmark links in the interactive playground don't work either.
Fixed the toc links. Need another fix for the documentation link too (which use command uris)
The Editor Playground is not showing at all anymore in the latest insiders. When selecting the Editor Playground menu item, a black editor comes up.
hm working from oss builds. Insiders, it seems like the error is:
Actually unrelated. Seems like a duplicate of and fixed by


Question: <del> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#f6f6f6;}.icon-canvas-transparent{opacity:0;}.icon-disabled-grey{fill:#848484;}</style></defs><title>breakpoint-unverified</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M12.632,8A4.632,4.632,0,1,1,8,3.368,4.638,4.638,0,0,1,12.632,8Z"/></g><g id="iconBg"><path class="icon-disabled-grey" d="M8,4.211A3.789,3.789,0,1,0,11.789,8,3.788,3.788,0,0,0,8,4.211ZM8,10.79A2.79,2.79,0,1,1,10.79,8,2.794,2.794,0,0,1,8,10.79Z"/></g></svg> </del>  No newline at end of file <ins> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#f6f6f6;}.icon-canvas-transparent{opacity:0;}.icon-disabled-grey{fill:#848484;}</style></defs><title>breakpoint-unverified</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M12.632,8A4.632,4.632,0,1,1,8,3.368,4.638,4.638,0,0,1,12.632,8Z"/></g><g id="iconBg"><path class="icon-disabled-grey" d="M8,4.211A3.789,3.789,0,1,0,11.79,8,3.788,3.788,0,0,0,8,4.211ZM8,10.29A2.29,2.29,0,1,1,10.29,8,2.292,2.292,0,0,1,8,10.29Z"/></g></svg> </ins>  No newline at end of file

When creating a breakpoint in an active debug session and this breakpoint cannot be verified, the resulting icon is almost invisible: ! The problem is that the icon's stroke is too thin. In previous versions the icon had a thicker stroke: ! I suggest that we restore the previous icon.
Agree that it is a bit too light. I do not just want to take the previous icon since the color and style are different. Thus it would be great if could tackle this Also fyi
Not quite as strong as in the 'before' above, but stronger. Marking verified. !


Question: }); } exports.config = { <del> version: product.electronRepository ? '22.4.5' : util.getElectronVersion(), </del> <ins> version: product.electronRepository ? '22.4.6' : util.getElectronVersion(), </ins> productAppName: product.nameLong, companyName: 'Microsoft Corporation', copyright: 'Copyright (C) 2023 Microsoft. All rights reserved',

This works on web e.g. but does not work in desktop, either with a desktop git clone or with RemoteHub. The last time this happened it was due to a regression in the list of enabled codecs for our Electron builds.
Sorry for the breakage, the changes from has not been to Electron = 22 versions yet. It will be addressed in new builds this week.
Addressed in
Reopening because of


Question: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.207.tgz#9c3310ebace2952903d05dcaba8abe3a4ed44c01" integrity sha512-piH7MJDJp4rJCduWbVvmUd59AUne1AFBJ8JaRQvk0KzNTSUnZrVXHCZc+eg+CGE4OujkcLJznhGKD6tuAshj5Q== <del> electron@22.3.5: version "22.3.5" resolved "https://registry.yarnpkg.com/electron/-/electron-22.3.5.tgz#a53a318cbb25a44914dfedd30a9ad6120632197f" integrity sha512-CTdnoTbO3sDiMv47TX3ZO640Ca57v1qpiqGChFF8oZbtfHuQjTPPaE4hsoynf22wwnBiyJNL41DpB/pfp9USnA== </del> <ins> electron@22.3.6: version "22.3.6" resolved "https://registry.yarnpkg.com/electron/-/electron-22.3.6.tgz#ab79a2da20e83b02ec9cbb22a4069468e6949b4f" integrity sha512-/1/DivFHH5AWa/uOuqpkeg12/jjicjkBU8kYv70oeqRFwXzoyuJhgwlzER4jZXnbGjF5Nxz9900oXq/QzAViAw== </ins> dependencies: "@electron/get" "^2.0.0" "@types/node" "^16.11.26"


Question: accessibleViewService.show({ verbositySettingKey: AccessibilityVerbositySettingId.Chat, <del> provideContent(): string { return responseContent; }, </del> <ins> provideContent(): string { return responseContent!; }, </ins> onClose() { verifiedWidget.reveal(focusedItem); if (chatInputFocused) {

One way of resolving this would be repeating the position information when I press any of the commands, even if there is no change. Another possibility would be to prevent the widget from refocusing when I am in the first / last element, and I try to move beyond that element. In that way pressing the next command will not produce any feedback if I am in the last one, and the previous will not produce any feedback if I am in the first one. Does it make sense? In any case, this would be a refinement, not something that would prevent someone from using the feature. Originally posted by in
Something else to consider when fine tuning the responses. Right now, position information is announced using an alert in macOS, and a status message in Windows. This is a situation where it makes sense to use an alert in all platforms so that screen readers prioritize this over other events. For example, right now JAWS is announcing position information after reannouncing the widget.
Huh, I'm using for all platforms here which appears to be platform agnostic I think it might just be a JAWS issue - does this repro when using NVDA?
It doesn't, but NVDA handles aria-live differently. You may be right dough. I'll debug NVDA on Monday and we'll know for sure which event it is seeing. JAWS may be simply prioritizing the focus event.
Friendly ping! Looks like this issue requires some further steps to be verified. Please provide us with the steps necessary to verify this issue.
Focus an accessible view for which there are several elements (like chat responses or notifications). Verify that if you are on the first or last element, pressing next or previous does not result in repeated alerts. it should not notify the screen reader user as nothing has changed.
Note to verifier there's an issue to disable these actions when they cannot be taken, which is the better fix.
Verified. With NVDA, if I press enter on the Next button while on the last chat response, the focus goes back to the response text instead of staying on the button, though that might be by design.


Question: } class BarrierAction extends Action { <del> constructor(barrier: Barrier, action: Action) { </del> <ins> constructor(barrier: Barrier, action: Action, notificationService: INotificationService) { </ins> super(action.id, action.label, action.class, action.enabled, async () => { <del> await action.run(); </del> <ins> try { await action.run(); } catch (error) { notificationService.error(error); throw error; } </ins> barrier.open(); }); }

<!-- 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.76.0 OS Version: macOS 11.6.2 Version: 1.76.0 Commit: Date: 2023-03-01T10:23:45.993Z Electron: 19.1.11 Chromium: 102.0.5005.196 16.14.2 V8: 10.2.154.26-electron.0 OS: Darwin x64 20.6.0 Sandboxed: No Summary When creating a profile with a name such as "Typescript / Javascript", the following happens: When exporting as a Gist, no result dialog shows ("there was trouble" / "created profile successfully") and a validation error is outputted in the logs When exporting to a local file, the text after the last forward slash is set as the filename. With the above example, it'd be " " To reproduce: a profile: Settings cog -"Profile ([...])" the profile: Select "Export Profile..." -"Export" the "name the profile" step, enter a name with a forward slash in like so: "Typescript / Javascript" either method for exporting: gist or local Expected results: If you select local: a system save prompt with the name you entered pre-set in the filename field If you select gist: A success dialog with a link to the website prefilled with your config Actual results: If you select local: only the text after the last forward slash is in the filename field If you select gist: No dialog shows.


Question: } class BarrierAction extends Action { <del> constructor(barrier: Barrier, action: Action) { </del> <ins> constructor(barrier: Barrier, action: Action, notificationService: INotificationService) { </ins> super(action.id, action.label, action.class, action.enabled, async () => { <del> await action.run(); </del> <ins> try { await action.run(); } catch (error) { notificationService.error(error); throw error; } </ins> barrier.open(); }); }

The following error is in the "output" window, under "Window": I can only test this on a macOS device, I haven't tried this on a Windows or other Linux device and I feel like (with the area in mind - filesystems etc) these issues could manifest differently or not even be an issue there. I'm assuming validation on the inputbox for the name will be required because filesystems (and Gist? not sure) don't typically support forward slashes in file names. Thanks and if you're reading this, have a great weekend :)
Gists do no accept in the name. Replaced with .


Question: } return this.addExtensionToWorkspaceConfig(workspaceConfig, extensionId, shouldRecommend).then(() => { <del> this.notificationService.info(localize('AddToWorkspaceUnwantedRecommendations.success', 'The extension was successfully added to this workspace's unwanted recommendations.')); </del> <ins> this.notificationService.prompt(Severity.Info, localize('AddToWorkspaceUnwantedRecommendations.success', 'The extension was successfully added to this workspace's unwanted recommendations.'), [{ label: localize('viewChanges', "View Changes"), run: () => this.openWorkspaceConfigurationFile(workspaceConfig) }]); </ins> }, err => { this.notificationService.error(localize('AddToWorkspaceRecommendations.failure', 'Failed to write. {0}', err)); });

testing It would be nice to have a link on this prompt to open the workspace . that way i can see what was done. !
Link in the text mostly is not possible, as that works only for actual links. We might have to add a button that says which opens the file that was edited.


Question: i = wrappedLineStart; lines.unshift(getXtermLineContent(buffer, wrappedLineStart, wrappedLineEnd, cols)); if (!match) { <del> match = lines.join('n').match(matcher); wrappedLines++; </del> <ins> match = lines[0].match(matcher); </ins> } <del> if (wrappedLines >= linesToCheck) { </del> <ins> if (lines.length >= linesToCheck) { </ins> break; } }

going to keep track of examples here to see if there's a pattern <img width="1112" alt="Screenshot 2023-01-23 at 2 12 18 PM" src="https://user-"
far right terminal <img width="1120" alt="Screenshot 2023-01-23 at 3 07 17 PM" src="https://user-"
middle terminal !
far right terminal !
far right terminal <img width="1076" alt="Screenshot 2023-01-24 at 1 59 40 PM" src="https://user-"
right terminal <img width="1644" alt="Screenshot 2023-01-24 at 2 22 27 PM" src="https://user-"
right terminal !
here are the lines when there's not a quick fix result - it contains after which we don't account for here !
Seeing this frequently: <img width="726" alt="image" src="https://user-"
I think we just need to include the to fix this
or better yet, remove and just look for the link
ok I see the issue. when lines are wrapped a lot, we need to search more lines - setting the length to 10/15 fixes it even when the terminal is quite narrow
I see it on non-wrapped lines, I'm not sure I understand what you mean with the To?
The to comment above was actually wrong. What's happened in the screen shot above is we abort the search early - after looking at only 5 lines. When it's actually on line 9
this goes wrong when we break before reaching the content IE when line count length
I tried pushing up a new branch using pwsh in the integrated terminal on Windows, and the lightbulb did not show. !
you have shell integration disabled, it won't work at all there.
also make sure to not move issues to the next milestone, this one was marked important
Working much better now, but just reproduced !
Just happened and captured the trace log (escape sequence log would be better): <img width="806" alt="image" src="https://user-"
I've seen this not work twice today already for create PR !
even though the lightbulb didn't appear here, there was a match found !


Question: i = wrappedLineStart; lines.unshift(getXtermLineContent(buffer, wrappedLineStart, wrappedLineEnd, cols)); if (!match) { <del> match = lines.join('n').match(matcher); wrappedLines++; </del> <ins> match = lines[0].match(matcher); </ins> } <del> if (wrappedLines >= linesToCheck) { </del> <ins> if (lines.length >= linesToCheck) { </ins> break; } }

the match always happens, the lightbulb doesn't show up though until I resize the terminal
this happens when the have not yet been resolved by the time occurs ! !
I think we should be calling at the end of
have seen the create PR not show up 3 times today. resizing doesn't cause it to show up, which means our match range is wrong/ there isn't a match
this says unreleased, but was merged before the current version of insider's (5 hours ago) was released. create with PR still failing !
insider's is based on the release branch, so I was confused
<!-- UNABLETOLOCATECOMMITMESSAGE issue --Issue marked as unreleased but unable to locate closing commit in issue timeline. You can manually reference a commit by commenting , or directly add the label if you know this has already been releaased


Question: ensureNoDisposablesAreLeakedInTestSuite(); <ins> let config: TestConfigurationService; </ins> setup(() => { testDisposables = new DisposableStore(); instantiationService = setupInstantiationService(testDisposables); <del> const config = new TestConfigurationService({ </del> <ins> config = new TestConfigurationService({ </ins> [NotebookSetting.anchorToFocusedCell]: 'auto' }); instantiationService.stub(IConfigurationService, config); });

Ideas to experiment with: Don't shrink a cell while it is executing -less jumpy as output is replaced change the anchor heuristic from "if the resizing cell is partially visible" to "if the cell's output will shrink out of view" Anchor to a focused cell if the focus is in the cell's editor cc
For the new heuristics we are adding (growing upwards or downwards), they should probably be interrupted the moment users start to scroll, for example, if I scroll manually to a specific position, I would expect the scroll top not to change.
I disagree - That could mean if you have a cell focused and anchored, and you scroll to get it higher in the view, it would then start getting pushed down as the previous cell grows.
If I scroll to get it lower in the view, as I want to read the cells above, and since it's still in the view and focused/anchored, the cells I was reading will then pushed upwards, right? This feels unnatural compared to how browser handles scrolling or Terminal. Terminal scenario might be closer to this, as it usually sticks to the bottom when the shell is streaming outputs, but the very moment we scroll upwards, it stops sticking to the bottom.


Question: break; } <ins> // HACK: In order to support both links containing [ and ] characters as well as the // `<file>[<line>, <col>]` pattern, we need to detect the part after the comma and fix // up the link here as before that will be matched as a regular file path. if (link.match(/[d+,$/)) { const partialText = text.slice(rex.lastIndex); const suffixMatch = partialText.match(/^ d+]/); if (suffixMatch) { link += suffixMatch[0]; } } </ins> // Adjust the link range to exclude a/ and b/ if it looks like a git diff if ( // --- a/foo/bar

<!-- 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.71.0-insider OS Version: macOS Big Sur 11.6 Steps to Reproduce: a link in terminal containing "[" or "]" characters (ex. ) to cmd+click the link, observe that it is split on those characters. For example, links to , , , , and . In reality this is one valid path (nextjs uses "[ ]" to identify parameters in URLs) <img width="526" alt="Screen Shot 2022-09-22 at 5 12 00 PM" src="https://user-"
This works for urls: ! Not local paths: !
reported that it does (kind of) work: ! We would need to review all link detectors for this.
This happens with local links because [] are currently excluded chars:


Question: <del> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#f6f6f6;}.icon-canvas-transparent{opacity:0;}.icon-disabled-grey{fill:#848484;}</style></defs><title>breakpoint-function-unverified</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M13.7,13H2.3L8,2.741Z"/></g><g id="iconBg"><path class="icon-disabled-grey" d="M8,4.8,4,12h8ZM8,6.859,10.3,11H5.7Z"/></g></svg> </del>  No newline at end of file <ins> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><defs><style>.icon-canvas-transparent,.icon-vs-out{fill:#f6f6f6;}.icon-canvas-transparent{opacity:0;}.icon-disabled-grey{fill:#848484;}</style></defs><title>breakpoint-function-unverified</title><g id="canvas"><path class="icon-canvas-transparent" d="M16,0V16H0V0Z"/></g><g id="outline" style="display: none;"><path class="icon-vs-out" d="M13.95,13H2.05L8,2.291Z"/></g><g id="iconBg"><path class="icon-disabled-grey" d="M8,4.35,3.75,12h8.5ZM8,6.924l2.125,3.826H5.875Z"/></g></svg> </ins>  No newline at end of file


Question: test('TerminalRenderer.write should fire Terminal.onData', (done) => { const reg1 = window.onDidOpenTerminal(terminal => { reg1.dispose(); <del> const reg2 = terminal.onData(data => { </del> <ins> const reg2 = terminal.onDidWriteData(data => { </ins> assert.equal(data, 'bar'); reg2.dispose(); const reg3 = window.onDidCloseTerminal(() => {

re see
same for
Same is true for Wanted to reuse the issue but didn't read all comments. Ignore mine. already mentioned it.
I'll change them to ,


Question: 0 : this.viewContext.notebookOptions.getLayoutConfiguration().markdownFoldHintHeight; } <del> updateOptions(e: NotebookOptionsChangeEvent) { </del> <ins> override updateOptions(e: NotebookOptionsChangeEvent) { super.updateOptions(e); </ins> if (e.cellStatusBarVisibility || e.insertToolbarPosition || e.cellToolbarLocation) { this._updateTotalHeight(this._computeTotalHeight()); }

Type: <bBug</bDelete a notebook file in a git repo Open it from the SCM view It's editable ;( VS Code version: Code - Insiders 1.94.0-insider (Universal) (, 2024-09-11T05:04:03.124Z) OS version: Darwin arm64 23.6.0 Modes: <!-- generated by issue reporter --
Fixed by


Question: anyOf: [ { type: 'boolean', <del> description: nls.localize('fontLigatures', "Enables/Disables font ligatures."), </del> <ins> description: nls.localize('fontLigatures', "Enables/Disables font ligatures ('calt' and 'liga' font features). Change this to a string for fine-grained control of the 'font-feature-settings' CSS property."), </ins> }, { type: 'string', <del> description: nls.localize('fontFeatureSettings', "Explicit font-feature-settings.") </del> <ins> description: nls.localize('fontFeatureSettings', "Explicit 'font-feature-settings' CSS property. A boolean can be passed instead if one only needs to turn on/off ligatures.") </ins> } ], <del> description: nls.localize('fontLigaturesGeneral', "Configures font ligatures or font features."), </del> <ins> description: nls.localize('fontLigaturesGeneral', "Configures font ligatures or font features. Can be either a boolean to enable/disable ligatures or a string for the value of the CSS 'font-feature-settings' property."), </ins> default: false } );

Issue Type: <bBug</bRepro settings editor, search for Bugs <img width="588" alt="Screen Shot 2020-03-16 at 10 04 28 PM" src="https://user-"In the settings UI: If I don't know what ligatures are, the description is not useful. Maybe link to our documentation? The description also does not explain the font features part. Maybe have an example? I have to use the settings json editor to actually change this setting. I suspect the most common use of this setting is turning it on or off In the settings json editor: It was not clear to me at first how to configure the font features (for a while, I thought it was supposed to be an object instead of a string) If you have and hover over the string, the description of what this string does is very generic VS Code version: Code - Insiders 1.44.0-insider (, 2020-03-16T07:10:59.884Z) OS version: Darwin x64 19.3.0 <details<summarySystem Info</summary </details<!-- generated by issue reporter --
<!-- -96bd-47a8-a0e8- --This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our . Happy Coding!
I'm moving this to backlog since this is more of debt/polish item (it's not one we'd expect users to search out and vote for)


Question: */ showConstructors?: boolean; /** <ins> * Show deprecated-suggestions. */ showDeprecated?: boolean; /** </ins> * Show field-suggestions. */ showFields?: boolean;

I'd like a setting to optionally prevent deprecated things from showing up in intellisense suggestions. For example, I'd like a way to prevent from being suggested here, so that I don't use it despite a non-deprecated version being available. ! My linter can catch it, but it'd be even nicer never to see the deprecated option. There are several documentation systems that use the tag: JSDoc: TSDoc: JavaDoc: Yard (for Ruby): Other systems use different, similar tags. I'm not sure if this is an issue for the VSCode core, or for something language-specific.
Sorry if this is a duplicate or is already possible. There are enough issues here and questions/answers on Stack Overflow that it's hard to be confident. This issue is related:
Not showing deprecated suggestions can be implemented by individual language extensions today (not striking out but tracks that). Adding just to see this is something we want better VS Code api support for in some way Otherwise, we can track this as a feature request for js/s
I'd say this is a dupe of and it would be us adding some API flag and then allows users to configure how the suggest UX is handling that flag
/duplicate of
Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for existing issues . See also our guidelines. Happy Coding!
Okay, that makes sense. What does "js/s" mean?
is it possible to add a setting like , so I can disable it to prevent deprecated from showing up in suggestions list?
Hey any update on that?
Verify that the setting exists and that it filters deprecated elements from IntelliSense


Question: } <del> export class SuggestInlineCompletions implements InlineCompletionsProvider<InlineCompletionResults> { </del> <ins> export class SuggestInlineCompletions extends Disposable implements InlineCompletionsProvider<InlineCompletionResults> { </ins> private _lastResult?: InlineCompletionResults;

<!-- 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: Windows 11 OS Version: 1.75.1 Steps to Reproduce: Using the following settings: ! ! a typescript file within a method/function following gets output (might have to navigate through some of the suggestions) even though snippets are off: !
Thanks for the patience. I cannot reproduce, please share more of your settings that might influence this. Also share data in a copy-paste friendly way (text over images)
Here are the settings that I am using to reproduce (all extensions disabled ): Once typing and going to the 3rd suggestion, I get this as a suggestion: !
Thanks for clarifying, looks like we aren't passing the filter here:
I can't figure out how to get that ghost text to show up for suggestions to verify this. I've never seen that ghost text for anything but copilot completions Do I need a suggestion provider extension?
You are right. I made a refactoring after this fix and that broke this feature Thanks for the diligence on this one!
To verify, use the steps from Make sure no snippets completions are ghost-texted with and that they are when the setting is set accordingly
I still cannot get snippet completions to show up
You need to say what you are trying because I do see them working just fine <img width="922" alt="Screenshot 2024-01-26 at 18 14 32" src=""
This works correctly for me now, no snippets with , and they do show up without it.
Bang on.


Question: } <del> export class SuggestInlineCompletions implements InlineCompletionsProvider<InlineCompletionResults> { </del> <ins> export class SuggestInlineCompletions extends Disposable implements InlineCompletionsProvider<InlineCompletionResults> { </ins> private _lastResult?: InlineCompletionResults;

The whole point is that the -setting is honored also for ghost suggestions
: <img width="1792" alt="Screenshot 2024-01-26 at 9 19 47 AM" src=""
this is about ghost text, please see and the comment linked from there
there was a syntax error in my file, so the settings did not get applied. Now it works


Question: "terminal.ansiBrightMagenta": "#6c71c4", "terminal.ansiBrightCyan": "#93a1a1", "terminal.ansiBrightWhite": "#fdf6e3", <ins> // Set terminal background explicitly, otherwise selection becomes invisible when the // terminal is in the side bar "terminal.background": "#FDF6E3", </ins> // Interactive Playground "walkThrough.embeddedEditorBackground": "#00000014" },

Issue Type: <bBug</bAfter upgrading to 1.68, text selection in the integrated terminal does not show selected text. This is purely a visual glitch, as I can still copy what I had selected on the terminal. My colleague has the same version but does not have this issue, so I'm wondering if it's an issue introduced through my update. VS Code version: Code 1.68.1 (, 2022-06-14T12:48:58.283Z) OS version: WindowsNT x64 10.0. Restricted Mode: No <details<summarySystem Info</summary </details<details<summaryExtensions (42)</summaryExtensionVersion ------ project-manager12.6.0 github-markdown-preview0.3.0 markdown-checkbox0.3.2 markdown-emoji0.2.1 markdown-footnotes0.0.7 markdown-mermaid1.14.0 markdown-preview-github-styles1.0.1 markdown-yaml-preamble0.1.0 keymapceditor-vsc0.7.7 gitignore0.7.0 doxdocgen1.4.0 transformer1.12.1 git-extension-pack0.1.3 githistory0.6.19 gitlens12.1.1 EditorConfig0.16.4 align-mode0.0.21 better-cpp-syntax1.15.18 cmake-language-support-vscode0.0.4 theme-karyfoundation-themes26.2.1 vscode-docker1.22.0 vscode-dotnet-runtime1.5.0 python2022.8.0 vscode-pylance2022.6.20 jupyter2022.5.


Question: "terminal.ansiBrightMagenta": "#6c71c4", "terminal.ansiBrightCyan": "#93a1a1", "terminal.ansiBrightWhite": "#fdf6e3", <ins> // Set terminal background explicitly, otherwise selection becomes invisible when the // terminal is in the side bar "terminal.background": "#FDF6E3", </ins> // Interactive Playground "walkThrough.embeddedEditorBackground": "#00000014" },

jupyter-keymap1.0.0 jupyter-renderers1.0.8 remote-containers0.238.2 remote-ssh0.82.1 remote-ssh-edit0.80.0 remote-wsl0.66.3 vscode-remote-extensionpack0.21.0 cmake-tools1.11.26 cpptools1.10.7 cpptools-extension-pack1.2.0 makefile-tools0.5.0 indent-rainbow8.3.1 vscode-pbtxt0.0.4 cmake0.0.17 vim1.22.2 clang-format1.9.0 vscode-open-in-github1.3.6 (5 theme extensions excluded) </details<details<summaryA/B Experiments</summary</details<!-- generated by issue reporter --
Same issue, I'm using theme. When I switch to a different theme the selection is visible. Looks like a theme issue.
Can you reproduce the issue in Insider's? I see selection in Insider's when using solarized light, but it does seem pretty light !
I believe we're implementing solarized light correctly here and that's how it's meant to work. If you're not a fan of the low contrast selection you can change it with this setting: Otherwise change to a theme that you prefer. Let me know if I misunderstood and the selection is actually not visible (not just subtle).
I was using the theme for a while and I was used to the low contrast on selection. It was quite ok on my screen TBH. Now there's no visible selection. Here I've selected "Counting objects". I've actually pasted it from the terminal instead of typing to be sure. ! I don't think this issue is ready for closing.
Do you have any settings set and does changing help?
I strive to work on defaults. No settings in Setting to true causes selected letters to become slightly lighter, but no background. "si" selected ! Not sure if it has anything to do with it, but the issue seems to have started after the recent update (via PPA on an ubuntu flavor). After updating I didn't restart immediately, but attempted to open an image and everything crashed. Restarted after that and noticed selection not working a bit later.
Some more things to try: Does closing all windows and running fix it?


Question: "terminal.ansiBrightMagenta": "#6c71c4", "terminal.ansiBrightCyan": "#93a1a1", "terminal.ansiBrightWhite": "#fdf6e3", <ins> // Set terminal background explicitly, otherwise selection becomes invisible when the // terminal is in the side bar "terminal.background": "#FDF6E3", </ins> // Interactive Playground "walkThrough.embeddedEditorBackground": "#00000014" },

If not, can you share your full file? Running the Generate color theme from current settings command will let us see if there's something weird going on with the theme
Confirming this is only happening in Solarized Light
Disabling GPU doesn't help <details</summary{ "window.menuBarVisibility": "toggle", "editor.minimap.enabled": false, "[javascript]": { "editor.defaultFormatter": "vscode.typescript-language-features" }, "javascript.updateImportsOnFileMove.enabled": "always", "[json]": { "editor.defaultFormatter": "" }, "[typescript]": { "editor.defaultFormatter": "vscode.typescript-language-features" }, "": "stuff=", "explorer.confirmDelete": false, "explorer.confirmDragAndDrop": false, "[html]": { "editor.defaultFormatter": "" }, "[jsonc]": { "editor.defaultFormatter": "" }, "workbench.colorTheme": "Solarized Light", "editor.inlineSuggest.enabled": true, "editor.renderWhitespace": "none", "[css]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } } </details<details<summarycolor theme from current settings</summary</details
I can't reproduce based on those settings so I'm a bit stumped on what to do with this one
So I checked the terminal background on the screenshot and it's which is exactly the same color as the default selection color. the dump I pasted above had in it, which seems odd. But since you didn't raise it, I'm assuming it's supposed to mean the actual background is the one of the panel inside which the terminal is working. What I also noticed about the terminal panel is it's no longer giving me the option to move it to the bottom of the window, which is odd, but most of all when I right-click, it no longer says "move terminal right" as an option, but "move sidebar". I checked, and means I will no longer see my selection. Conclusion is what ends up being the color behind terminal text. The theme should probably set terminal background or change the selection color as a fix. I wonder what else breaks because terminal is now a sidebar not something else.
Ah ok, thanks for looking into it. Because of this, setting the terminal background explicitly is a good solution for now.


Question: "terminal.ansiBrightMagenta": "#6c71c4", "terminal.ansiBrightCyan": "#93a1a1", "terminal.ansiBrightWhite": "#fdf6e3", <ins> // Set terminal background explicitly, otherwise selection becomes invisible when the // terminal is in the side bar "terminal.background": "#FDF6E3", </ins> // Interactive Playground "walkThrough.embeddedEditorBackground": "#00000014" },

I doubt it happens in many other themes since contrast is usually pretty high but I'll check Solarized Dark as well when fixing.


Question: .filter((renderableMatch): renderableMatch is URI => (renderableMatch !== null)); } <del> export function findInFilesCommand(accessor: ServicesAccessor, args: IFindInFilesArgs = {}) { </del> <ins> export async function findInFilesCommand(accessor: ServicesAccessor, _args: IFindInFilesArgs = {}) { </ins> const searchConfig = accessor.get(IConfigurationService).getValue<ISearchConfiguration>().search; <ins> const viewsService = accessor.get(IViewsService); const args: IFindInFilesArgs = {}; if (Object.keys(_args).length !== 0) { // resolve variables in the same way as in // https://github.com/microsoft/vscode/blob/8b76efe9d317d50cb5b57a7658e09ce6ebffaf36/src/vs/workbench/contrib/searchEditor/browser/searchEditorActions.ts#L152-L158 const configurationResolverService = accessor.get(IConfigurationResolverService); const historyService = accessor.get(IHistoryService); const workspaceContextService = accessor.get(IWorkspaceContextService); const activeWorkspaceRootUri = historyService.getLastActiveWorkspaceRoot(Schemas.file); const lastActiveWorkspaceRoot = activeWorkspaceRootUri ? withNullAsUndefined(workspaceContextService.getWorkspaceFolder(activeWorkspaceRootUri)) : undefined; for (const entry of Object.entries(_args)) { const name = entry[0]; const value = entry[1]; if (value !== undefined) { (args as any)[name as any] = (typeof value === 'string') ? await configurationResolverService.resolveAsync(lastActiveWorkspaceRoot, value) : value; } } } </ins> const mode = searchConfig.mode; if (mode === 'view') { <del> const viewsService = accessor.get(IViewsService); </del> openSearchView(viewsService, false).then(openedView => { if (openedView) { const searchAndReplaceWidget = openedView.searchAndReplaceWidget;

I try to add a keybinding with ${selectedText}. but it will resloved as a normal string. Steps to Reproduce: ! Version: 1.75.0 (user setup) Commit: OS: Windows_NT x64 10.0. Sandboxed: No
would you happen to know why the variable isn't resolving to a value here? Is there something that the command must contain to resolve variables?
The decision for whether variables should be resolved in a command needs to be made on a per command bases. If you want, you can run your commands arguments through the variable resolve when your command is called. For example, the terminal uses the variable resolver here:
From It would be great if more variable resolution was achieved in keybindings - I think it has been requested many times.
verif steps: a keybinding for : that the keybinding correctly sets to the current path.


Question: export interface IAccessibleViewService { readonly _serviceBrand: undefined; show(provider: IAccessibleContentProvider): void; <ins> showAccessibleViewHelp(): void; </ins> next(): void; previous(): void; goToSymbol(): void;

accessible view go to symbol picker are closed sometimes (when there's more than one item) cc


Question: super.render(container); addClass(container, 'switch-terminal'); this._register(attachStylerCallback(this.themeService, { selectBorder }, colors => { <del> container.style.border = colors.selectBorder ? `1px solid ${colors.selectBorder}` : ''; </del> <ins> container.style.borderColor = colors.selectBorder ? `${colors.selectBorder}` : ''; </ins> })); }

The select box in the panel header should have a white background: ! This is similar to the recent breakage with the simple editor widget background color in SCM and extensions views.
To Verify: to an obvious color. that terminal and output select boxes are using these when they are in their default locations in panel.


Question: // The comments in the regex below use real strings/numbers for better readability, here's // the legend: <del> // - Path = foo // - Row  = 339 // - Col  = 12 </del> <ins> // - Path    = foo // - Row     = 339 // - Col     = 12 // - RowEnd  = 341 // - ColEnd  = 14 </ins> // // These all support single quote ' in the place of " and [] in the place of () const lineAndColumnRegexClauses = [

The : This doesn't currently work in VSCode. It does support a very wide range of formats and I don't recall ever seeing this format before (even from GNU tools) so I suspect nobody else uses it. Nonetheless it's easy to add support in VSCode. See
Doesn't seem to work, see <img width="825" alt="Screenshot 2023-08-29 at 14 41 05" src=""
The PR intentionally left that out: But it should be easy to add so will leave this open.


Question: } if (statWithoutTrailing && statWithoutTrailing.isDirectory) { this.badPath = undefined; <del> // At this point we know it's a directory and can add the trailing path separator if (!this.endsWithSlash(inputUriDirname.path)) { inputUriDirname = resources.addTrailingPathSeparator(inputUriDirname); } </del> <ins> inputUriDirname = this.tryAddTrailingSeparatorToDirectory(inputUriDirname, statWithoutTrailing); </ins> return await this.updateItems(inputUriDirname, false, resources.basename(valueUri)) ? UpdateResult.UpdatedWithTrailing : UpdateResult.Updated; } }

Repro: Windows open test resolver window folder everything except !
I'm not able to reproduce this, even when I select the entire series of subfolders before before deleting. Is this on a VM?
No folder, just test resolver. It's an easy repro for me: ! Code - OSS about: Version: 1.69.0 Commit: Unknown Date: Unknown Electron: 18.3.5 Chromium: 100.0.4896.160 16.13.2 V8: 10.0.139.17-electron.0 OS: Windows_NT x64 10.0.
Your slashes are going the wrong way, which is suspicious. How do you launch Code - OSS?
and then new test resolver window command
I've repro'd the slashes, but nothing I try will cause the missing directories to repro. Only difference I see is that I am on Windows 11 and you are on 10. Can you try swapping the separator on the resource label formatter? If that doesn't resolve it then we'll set up some time to debug.
I'm on Windows 11 too, 21H2, .739
Regardless of the value above it doesn't work for both and . Is there anywhere of interest I can debug into? Where does the trigger character code live?
We debugged into this together, seems related to the being (or ) and not
After our debugging yesterday this started to feel familiar:


Question: this._storageListener = this._storageService.onDidChangeValue(e => { const shared = e.scope === StorageScope.GLOBAL; if (shared && this._sharedStorageKeysToWatch.has(e.key)) { <del> try { this._proxy.$acceptValue(shared, e.key, this._getValue(shared, e.key)); } catch (error) { // ignore parsing errors that can happen } </del> <ins> this._proxy.$acceptValue(shared, e.key, this._getValue(shared, e.key)); </ins> } }); }

<!-- Please search existing issues to avoid creating duplicates. --- VS Code version: 1.59.1 Extension version (available under the Extensions sidebar): v2021.8. OS and version: Linux x64 5.13.11-1-MANJARO Python version (& distribution if applicable, e.g. Anaconda): 3.9 Type of virtual environment used (N/A ...): virtualenvwrapper Relevant/affected Python-related VS Code extensions and their versions: pylance v2021.8.3, jupyter v2021.8., Visual Studio IntelliCode v1.2.14 Value of the setting: Pylance from the VS Code marketplace to see if that fixes your issue] Extension loads successfuly Extension does not load, console reports "Unexpected token ' in JSON at position " [NOTE: Self-contained, minimal reproducing code samples are extremely helpful and will expedite addressing your issue] the extension by clicking a .py file <!-- Note: If you think a GIF of what is happening would be helpful, consider tools like , or . --<details<summaryOutput for <codePython</codein the <codeOutput</codepanel (<codeView</code→<codeOutput</code, change the drop-down the upper-right of the <codeOutput</codepanel to <codePython</code) </summary<p</p</details
Looks like you might have a bad update. Do the following to remove stale versions of the extension: Python extension (if you have pylance uninstall it first). all instances of VS Code. to, (on windows) or on Linux/Mac. any folder with the name starting with VS Code, and install Python extension (also pylance if you uninstalled it in step 1).
I followed all steps, but nothing changed. should I try to install older version of python ext?
Hi Can you try installing an older version of the Python extension, and if it doesn't work can you try a different version of VS Code (either an old one or the Insiders build)?
I've installed python extension , jupyter and no pylance. here's the log: As you said I'm going to install older version of vscode
Hi Did you try installing an older version of VS Code?
FYI - This looks like some JSON stored via the became corrupt.


Question: this._storageListener = this._storageService.onDidChangeValue(e => { const shared = e.scope === StorageScope.GLOBAL; if (shared && this._sharedStorageKeysToWatch.has(e.key)) { <del> try { this._proxy.$acceptValue(shared, e.key, this._getValue(shared, e.key)); } catch (error) { // ignore parsing errors that can happen } </del> <ins> this._proxy.$acceptValue(shared, e.key, this._getValue(shared, e.key)); </ins> } }); }

The JSON is written a few lines lower, so it is unexpected that the value is corrupted. This might indicate some kind of bug in the storage layer. I don't remember writing that code, did you perhaps write that? Do you think it is so important such to fail extension activation when the JSON is corrupt, or should we catch that exception and return ?
I would suggest to be more resilient in extension activation as you suggest and fallback to an empty object here if any error rises from but log it as error: This is the first time I hear about a problem with persisting data into SQLite. However, seeing makes me think that this is not an officially supported Linux distribution.
curious if you could share the following 2 files with me (via e-mail is fine: find it on ). Steps: open the VSCode window where this issue happens View Command Palette =Log Storage Database Contents Help Toggle Dev Tools Find the 2 paths for the DBs send both files to me
I can still see the original issue in vscode-insiders v1.61.0-insider
whats the exact version you are on? And is it the issue that the extension fails to activate?
Version: 1.61.0-insider (user setup) Commit: Date: 2021-09-16T08:31:28.161Z Electron: 13.4.0 Chrome: 91.0.4472.164 14.16.0 V8: 9.1.269.39-electron.0 OS: WindowsNT x64 10.0. python extension: v2021.9. Error 2021-09-16 17:51:12: Error discovering pytest tests: [SyntaxError: Unexpected token S in JSON at position at (<anonymous) at a.runTestDiscovery (PATH.vscode-insidersextensionsms-outclient) at runMicrotasks (<anonymous) at processTicksAndRejections () at async (index 0) at async _.refreshTestData (PATH.vscode-insidersextensionsms-outclient) at async v.refreshTestDataInternal (PATH.vscode-insidersextensionsms-outclient)] { stdout: '[{"rootid": ".", "root": "...
I fixed the issue as reported in that extensions fail to activate when the contents in storage fail to get parsed.


Question: this._storageListener = this._storageService.onDidChangeValue(e => { const shared = e.scope === StorageScope.GLOBAL; if (shared && this._sharedStorageKeysToWatch.has(e.key)) { <del> try { this._proxy.$acceptValue(shared, e.key, this._getValue(shared, e.key)); } catch (error) { // ignore parsing errors that can happen } </del> <ins> this._proxy.$acceptValue(shared, e.key, this._getValue(shared, e.key)); </ins> } }); }

What you report here seems different to me. Looks like the python extension is calling on something that is not valid JSON? Have you asked the Python extension what this could be?
I see, I'll create a new issue. thanks


Question: <ins> { "information_for_contributors": [ "This file has been converted from https://github.com/dart-lang/dart-syntax-highlight/blob/master/grammars/dart.json", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], "version": "https://github.com/dart-lang/dart-syntax-highlight/commit/65f211722c85e9fdf0aa658d5663e6ccaf2ebe25", "name": "Dart", "scopeName": "source.dart", "patterns": [ { "name": "meta.preprocessor.script.dart", "match": "^(#!.*)$" }, { "name": "meta.declaration.dart", "begin": "^w*b(library|import|part of|part|export)b", "beginCaptures": { "0": { "name": "keyword.other.import.dart" } }, "end": ";", "endCaptures": { "0": { "name": "punctuation.terminator.dart" } }, "patterns": [ { "include": "#strings" }, { "include": "#comments" }, { "name": "keyword.other.import.dart", "match": "b(as|show|hide)b" } ] }, { "include": "#comments" }, { "include": "#punctuation" }, { "include": "#annotations" }, { "include": "#keywords" }, { "include": "#constants-and-special-vars" }, { "include": "#strings" } ], "repository": { "dartdoc": { "patterns": [ { "match": "([.*?])", "captures": { "0": { "name": "variable.name.source.dart" } } }, { "match": "^ {4,}(?![ *]).*", "captures": { "0": { "name": "variable.name.source.dart" } } }, { "contentName": "variable.other.source.dart", "begin": "```.*?$", "end": "```" }, { "match": "(`.*?`)", "captures": { "0": { "name": "variable.other.source.dart" } } }, { "match": "(`.*?`)", "captures": { "0": { "name": "variable.other.source.dart" } } }, { "match": "(* ((    ).*))$", "captures": { "2": { "name": "variable.other.source.dart" } } }, { "match": "(*    .*)$" } ] }, "comments": { "patterns": [ { "name": "comment.block.empty.dart", "match": "/**/", "captures": { "0": { "name": "punctuation.definition.comment.dart" } } }, { "include": "#comments-doc-oldschool" }, { "include": "#comments-doc" }, { "include": "#comments-inline" } ] }, "comments-doc-oldschool": { "patterns": [ { "name": "comment.block.documentation.dart", "begin": "/**", "end": "*/", "patterns": [ { "include": "#comments-doc-oldschool" }, { "include": "#comments-block" }, { "include": "#dartdoc" } ] } ] }, "comments-doc": { "patterns": [ { "name": "comment.block.documentation.dart", "begin": "///", "while": "^s*///", "patterns": [ { "include": "#dartdoc" } ] } ] }, "comments-inline": { "patterns": [ { "include": "#comments-block" }, { "match": "((//).*)$", "captures": { "1": { "name": "comment.line.double-slash.dart" } } } ] }, "comments-block": { "patterns": [ { "name": "comment.block.dart", "begin": "/*", "end": "*/", "patterns": [ { "include": "#comments-block" } ] } ] }, "annotations": { "patterns": [ { "name": "storage.type.annotation.dart", "match": "@[a-zA-Z]+" } ] }, "constants-and-special-vars": { "patterns": [ { "name": "constant.language.dart", "match": "(?<!$)b(true|false|null)b(?!$)" }, { "name": "variable.language.dart", "match": "(?<!$)b(this|super)b(?!$)" }, { "name": "constant.numeric.dart", "match": "(?<!$)b((0(x|X)[0-9a-fA-F]*)|(([0-9]+.?[0-9]*)|(.[0-9]+))((e|E)(+|-)?[0-9]+)?)b(?!$)" }, { "name": "support.class.dart", "match": "(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*|boolb|numb|intb|doubleb|dynamicb)" }, { "match": "([_$]*[a-z][a-zA-Z0-9_$]*)(<|(|s+=>)", "captures": { "1": { "name": "entity.name.function.dart" } } } ] }, "keywords": { "patterns": [ { "name": "keyword.cast.dart", "match": "(?<!$)basb(?!$)" }, { "name": "keyword.control.catch-exception.dart", "match": "(?<!$)b(try|on|catch|finally|throw|rethrow)b(?!$)" }, { "name": "keyword.control.dart", "match": "(?<!$)b(break|case|continue|default|do|else|for|if|in|return|switch|while)b(?!$)" }, { "name": "keyword.control.dart", "match": "(?<!$)b(sync(*)?|async(*)?|await|yield(*)?)b(?!$)" }, { "name": "keyword.control.dart", "match": "(?<!$)bassertb(?!$)" }, { "name": "keyword.control.new.dart", "match": "(?<!$)b(new)b(?!$)" }, { "name": "keyword.declaration.dart", "match": "(?<!$)b(abstract|class|enum|extends|extension|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)b(?!$)" }, { "name": "keyword.operator.dart", "match": "(?<!$)b(is!?)b(?!$)" }, { "name": "keyword.operator.ternary.dart", "match": "?|:" }, { "name": "keyword.operator.bitwise.dart", "match": "(<<|>>>?|~|^|||&)" }, { "name": "keyword.operator.assignment.bitwise.dart", "match": "((&|^|||<<|>>>?)=)" }, { "name": "keyword.operator.closure.dart", "match": "(=>)" }, { "name": "keyword.operator.comparison.dart", "match": "(==|!=|<=?|>=?)" }, { "name": "keyword.operator.assignment.arithmetic.dart", "match": "(([+*/%-]|~)=)" }, { "name": "keyword.operator.assignment.dart", "match": "(=)" }, { "name": "keyword.operator.increment-decrement.dart", "match": "(--|++)" }, { "name": "keyword.operator.arithmetic.dart", "match": "(-|+|*|/|~/|%)" }, { "name": "keyword.operator.logical.dart", "match": "(!|&&|||)" }, { "name": "storage.modifier.dart", "match": "(?<!$)b(static|final|const|required|late)b(?!$)" }, { "name": "storage.type.primitive.dart", "match": "(?<!$)b(?:void|var)b(?!$)" } ] }, "string-interp": { "patterns": [ { "match": "$(([a-zA-Z0-9_]+)|{([^{}]+)})", "captures": { "2": { "name": "variable.parameter.dart" }, "3": { "name": "variable.parameter.dart" } } }, { "name": "constant.character.escape.dart", "match": "." } ] }, "strings": { "patterns": [ { "name": "string.interpolated.triple.double.dart", "begin": "(?<!r)"""", "end": """"(?!")", "patterns": [ { "include": "#string-interp" } ] }, { "name": "string.interpolated.triple.single.dart", "begin": "(?<!r)'''", "end": "'''(?!')", "patterns": [ { "include": "#string-interp" } ] }, { "name": "string.quoted.triple.double.dart", "begin": "r"""", "end": """"(?!")" }, { "name": "string.quoted.triple.single.dart", "begin": "r'''", "end": "'''(?!')" }, { "name": "string.interpolated.double.dart", "begin": "(?<!|r)"", "end": """, "patterns": [ { "name": "invalid.string.newline", "match": "n" }, { "include": "#string-interp" } ] }, { "name": "string.quoted.double.dart", "begin": "r"", "end": """, "patterns": [ { "name": "invalid.string.newline", "match": "n" } ] }, { "name": "string.interpolated.single.dart", "begin": "(?<!|r)'", "end": "'", "patterns": [ { "name": "invalid.string.newline", "match": "n" }, { "include": "#string-interp" } ] }, { "name": "string.quoted.single.dart", "begin": "r'", "end": "'", "patterns": [ { "name": "invalid.string.newline", "match": "n" } ] } ] }, "punctuation": { "patterns": [ { "name": "punctuation.comma.dart", "match": "," }, { "name": "punctuation.terminator.dart", "match": ";" }, { "name": "punctuation.dot.dart", "match": "." } ] } } } </ins>  No newline at end of file

Following on from comments at , it would be good to have basic Dart language configuration as a built-in extension in VS Code, allowing things like syntax highlighting to in the case where the Dart extension is not installed (for example a Live Share client that hasn't installed it) or is disabled (for example in an Untrusted workspace). From : There is a Dart Team-owned grammar here that can be used - it's the (except for a small bug fix that I'll file an upstream PR for shortly): Great! Though what's the advantage of depending on the built-in extension? I try to support a few-versions-old VS Code where possible (so wouldn't do that for a few versions) but also the extension is published to open- for use by other clients so the dependency may complicate things (if they don't have the same built-in). I'd probably do some investigation into this before removing anything from Dart-Code then (it sounds like there's no downside to having the grammar/config provided by both for a period anyway). (fyi
It also works without a dependency, but only because the extension is built-in. No problem if the Dart extension keeps the grammar and language configurations for a while until it is all settled. Do you want to look into a PR or should I?
If it's easier/quicker for you to do, feel free. Otherwise I'm happy to do it but may need some pointers for how built-in extensions are set up.
I pushed the PR We have a new built-in language :-)
Super, thanks! For future reference - for changes to the language config I can send a PR to , and for grammar changes I can run (after the changes are landed in the upstream dart-lang repo)?
I just noticed in the it has the path but this doesn't seem to match the location of the file ?
Good catch, thanks. Pushed the fix:
For grammar changes, I'll pull them in about once per month so you can just rely on that if you want. If there's a change that needs to be picked up sooner than that, then feel free to make an issue an @ mention me and I'll pull in the change earlier.
Perfect, thanks!
is this support in the Code May Update (1.57) that just went out?
Yes, in microsoft/vscode you can tell what release an issue is in by looking at the Milestone. !
Yep!


Question: <ins> { "information_for_contributors": [ "This file has been converted from https://github.com/dart-lang/dart-syntax-highlight/blob/master/grammars/dart.json", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], "version": "https://github.com/dart-lang/dart-syntax-highlight/commit/65f211722c85e9fdf0aa658d5663e6ccaf2ebe25", "name": "Dart", "scopeName": "source.dart", "patterns": [ { "name": "meta.preprocessor.script.dart", "match": "^(#!.*)$" }, { "name": "meta.declaration.dart", "begin": "^w*b(library|import|part of|part|export)b", "beginCaptures": { "0": { "name": "keyword.other.import.dart" } }, "end": ";", "endCaptures": { "0": { "name": "punctuation.terminator.dart" } }, "patterns": [ { "include": "#strings" }, { "include": "#comments" }, { "name": "keyword.other.import.dart", "match": "b(as|show|hide)b" } ] }, { "include": "#comments" }, { "include": "#punctuation" }, { "include": "#annotations" }, { "include": "#keywords" }, { "include": "#constants-and-special-vars" }, { "include": "#strings" } ], "repository": { "dartdoc": { "patterns": [ { "match": "([.*?])", "captures": { "0": { "name": "variable.name.source.dart" } } }, { "match": "^ {4,}(?![ *]).*", "captures": { "0": { "name": "variable.name.source.dart" } } }, { "contentName": "variable.other.source.dart", "begin": "```.*?$", "end": "```" }, { "match": "(`.*?`)", "captures": { "0": { "name": "variable.other.source.dart" } } }, { "match": "(`.*?`)", "captures": { "0": { "name": "variable.other.source.dart" } } }, { "match": "(* ((    ).*))$", "captures": { "2": { "name": "variable.other.source.dart" } } }, { "match": "(*    .*)$" } ] }, "comments": { "patterns": [ { "name": "comment.block.empty.dart", "match": "/**/", "captures": { "0": { "name": "punctuation.definition.comment.dart" } } }, { "include": "#comments-doc-oldschool" }, { "include": "#comments-doc" }, { "include": "#comments-inline" } ] }, "comments-doc-oldschool": { "patterns": [ { "name": "comment.block.documentation.dart", "begin": "/**", "end": "*/", "patterns": [ { "include": "#comments-doc-oldschool" }, { "include": "#comments-block" }, { "include": "#dartdoc" } ] } ] }, "comments-doc": { "patterns": [ { "name": "comment.block.documentation.dart", "begin": "///", "while": "^s*///", "patterns": [ { "include": "#dartdoc" } ] } ] }, "comments-inline": { "patterns": [ { "include": "#comments-block" }, { "match": "((//).*)$", "captures": { "1": { "name": "comment.line.double-slash.dart" } } } ] }, "comments-block": { "patterns": [ { "name": "comment.block.dart", "begin": "/*", "end": "*/", "patterns": [ { "include": "#comments-block" } ] } ] }, "annotations": { "patterns": [ { "name": "storage.type.annotation.dart", "match": "@[a-zA-Z]+" } ] }, "constants-and-special-vars": { "patterns": [ { "name": "constant.language.dart", "match": "(?<!$)b(true|false|null)b(?!$)" }, { "name": "variable.language.dart", "match": "(?<!$)b(this|super)b(?!$)" }, { "name": "constant.numeric.dart", "match": "(?<!$)b((0(x|X)[0-9a-fA-F]*)|(([0-9]+.?[0-9]*)|(.[0-9]+))((e|E)(+|-)?[0-9]+)?)b(?!$)" }, { "name": "support.class.dart", "match": "(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*|boolb|numb|intb|doubleb|dynamicb)" }, { "match": "([_$]*[a-z][a-zA-Z0-9_$]*)(<|(|s+=>)", "captures": { "1": { "name": "entity.name.function.dart" } } } ] }, "keywords": { "patterns": [ { "name": "keyword.cast.dart", "match": "(?<!$)basb(?!$)" }, { "name": "keyword.control.catch-exception.dart", "match": "(?<!$)b(try|on|catch|finally|throw|rethrow)b(?!$)" }, { "name": "keyword.control.dart", "match": "(?<!$)b(break|case|continue|default|do|else|for|if|in|return|switch|while)b(?!$)" }, { "name": "keyword.control.dart", "match": "(?<!$)b(sync(*)?|async(*)?|await|yield(*)?)b(?!$)" }, { "name": "keyword.control.dart", "match": "(?<!$)bassertb(?!$)" }, { "name": "keyword.control.new.dart", "match": "(?<!$)b(new)b(?!$)" }, { "name": "keyword.declaration.dart", "match": "(?<!$)b(abstract|class|enum|extends|extension|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)b(?!$)" }, { "name": "keyword.operator.dart", "match": "(?<!$)b(is!?)b(?!$)" }, { "name": "keyword.operator.ternary.dart", "match": "?|:" }, { "name": "keyword.operator.bitwise.dart", "match": "(<<|>>>?|~|^|||&)" }, { "name": "keyword.operator.assignment.bitwise.dart", "match": "((&|^|||<<|>>>?)=)" }, { "name": "keyword.operator.closure.dart", "match": "(=>)" }, { "name": "keyword.operator.comparison.dart", "match": "(==|!=|<=?|>=?)" }, { "name": "keyword.operator.assignment.arithmetic.dart", "match": "(([+*/%-]|~)=)" }, { "name": "keyword.operator.assignment.dart", "match": "(=)" }, { "name": "keyword.operator.increment-decrement.dart", "match": "(--|++)" }, { "name": "keyword.operator.arithmetic.dart", "match": "(-|+|*|/|~/|%)" }, { "name": "keyword.operator.logical.dart", "match": "(!|&&|||)" }, { "name": "storage.modifier.dart", "match": "(?<!$)b(static|final|const|required|late)b(?!$)" }, { "name": "storage.type.primitive.dart", "match": "(?<!$)b(?:void|var)b(?!$)" } ] }, "string-interp": { "patterns": [ { "match": "$(([a-zA-Z0-9_]+)|{([^{}]+)})", "captures": { "2": { "name": "variable.parameter.dart" }, "3": { "name": "variable.parameter.dart" } } }, { "name": "constant.character.escape.dart", "match": "." } ] }, "strings": { "patterns": [ { "name": "string.interpolated.triple.double.dart", "begin": "(?<!r)"""", "end": """"(?!")", "patterns": [ { "include": "#string-interp" } ] }, { "name": "string.interpolated.triple.single.dart", "begin": "(?<!r)'''", "end": "'''(?!')", "patterns": [ { "include": "#string-interp" } ] }, { "name": "string.quoted.triple.double.dart", "begin": "r"""", "end": """"(?!")" }, { "name": "string.quoted.triple.single.dart", "begin": "r'''", "end": "'''(?!')" }, { "name": "string.interpolated.double.dart", "begin": "(?<!|r)"", "end": """, "patterns": [ { "name": "invalid.string.newline", "match": "n" }, { "include": "#string-interp" } ] }, { "name": "string.quoted.double.dart", "begin": "r"", "end": """, "patterns": [ { "name": "invalid.string.newline", "match": "n" } ] }, { "name": "string.interpolated.single.dart", "begin": "(?<!|r)'", "end": "'", "patterns": [ { "name": "invalid.string.newline", "match": "n" }, { "include": "#string-interp" } ] }, { "name": "string.quoted.single.dart", "begin": "r'", "end": "'", "patterns": [ { "name": "invalid.string.newline", "match": "n" } ] } ] }, "punctuation": { "patterns": [ { "name": "punctuation.comma.dart", "match": "," }, { "name": "punctuation.terminator.dart", "match": ";" }, { "name": "punctuation.dot.dart", "match": "." } ] } } } </ins>  No newline at end of file

An easy way to test it's working is to disable the Dart/Flutter extensions (accept the prompt to reload), then open a Dart file. You'll now still get syntax highlighting (note: you won't get analysis or much other editor functionality, that requires the Dart extension). <img width="650" alt="Screenshot 2021-06-14 at 15 52 25" src="https://user-"
Yeah I just did, and it works great :-)


Question: graphLine: register('graph-line', 0xebe2), graphScatter: register('graph-scatter', 0xebe3), pieChart: register('pie-chart', 0xebe4), <del> bracket: register('bracket', 0xebe4), </del> bracketDot: register('bracket-dot', 0xebe5), bracketError: register('bracket-error', 0xebe6), lockSmall: register('lock-small', 0xebe7),

Type: <bBug</ba TS file at the language status item in the status bar Bug The bracket icon is instead rendered as a pie chart icon <img width="222" alt="Screenshot 2023-01-18 at 1 28 37 PM" src="https://user-"VS Code version: Code - Insiders 1.75.0-insider (Universal) (, 2023-01-18T08:53:10.224Z) OS version: Darwin x64 22.2.0 Modes: Sandboxed: Yes <details<summarySystem Info</summary </details<!-- generated by issue reporter --
Looks like the id for got duplicated:


Question: const handleTitleClickOrTouch = (e: MouseEvent | GestureEvent): void => { let target: HTMLElement; if (e instanceof MouseEvent) { <del> if (e.button !== 0) { return undefined; // only for left mouse click </del> <ins> if (e.button !== 0 || (isMacintosh && e.ctrlKey)) { return undefined; // only for left mouse click (ctrl+click on macos is right-click) </ins> } target = e.target as HTMLElement;

<!-- 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.71.0 () OS Version: macOS 12.5.1 (21G83) Steps to Reproduce: any file on . the filename tab on the "Editor", hold + Click on it (the same as a right-click or two-finger click on macOS). See the image below ! Expected: it opens the context menu with options about the file. Actual: it blinks the context menu for a fraction of a second. A screencast of the problem: ! The problem doesn't happen on VS Code desktop.
I can reproduce, and maybe is an issue that would reproduce on desktop too but we use native menus there and not custom menus.
is this ctrl+click behavior mac specific?
I am not entirely sure, but so far, we have only seen reports about this issue on macOS.
Yes, Macs by default consider CTRL+Click a right click. This works across the entire OS.
This is great, thanks for the fix!


Question: import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IShellLaunchConfig, TerminalExitReason, TerminalLocation, TerminalSettingId } from 'vs/platform/terminal/common/terminal'; import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService'; <del> import { ILifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycle'; </del> <ins> import { ILifecycleService, ShutdownReason, WillShutdownEvent } from 'vs/workbench/services/lifecycle/common/lifecycle'; </ins> import { ConfirmOnKill } from 'vs/workbench/contrib/terminal/common/terminal'; import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration';

Type: <bBug</bis enabled. Ensure is set to , or (any option that will restore the last open window after quiting and re-opening VSCode). a terminal in the editor area, e.g. using the command "Terminal: Create New Terminal in Editor Area". Type something into the terminal e.g. . VSCode via "Developer: Reload Window". Note that the terminal tab in the editor area is still there (restored) after the window is reloaded. This is the expected behavior. VSCode then reopen the application. Note that the terminal tab is not present (is not restored) when the window is restored (and since there is no terminal tab, there is also nowhere to restore the session to ) . This is unexpected behavior as previously this terminal tab would be restored into the editor area, with its session history, even after quitting and reopening VSCode. Another terminal persistence bug on 1.74.0, also related to killing terminals: VS Code version: Code 1.74.0 (, 2022-12-05T16:37:54.581Z) OS version: Darwin arm64 22.2.0 Modes: Sandboxed: No <details<summarySystem Info</summary </details<details<summaryExtensions (16)</summaryExtensionVersion ------ vscode-neovim0.0.94 calva2.0.321 file-browser0.2.11 portal0.35.0 viml0.1.7 prettier-vscode9.10.3 vscode-htmlhint1.0.4 vscode-sshfs1.25.0 ssh-config-syntax-highlighter0.0.4 sqltools0.26.0 sqltools-driver-pg0.4.0 errorlens3.6.0 learn-vim0.0.28 vspacecode0.10.10 whichkey0.11.3 markdown-all-in-one3.5.0 </details<!-- generated by issue reporter --
I cannot reproduce that in Insider's https://user-
have you typed in the terminal before reloading? if not, that's by design
Pardon me I was unclear in the original writeup. The problem occurs in step 4 and is now reflected in edits above. Thank you! Regarding the direct question: yes, I have typed in the terminal before reloading.


Question: import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IShellLaunchConfig, TerminalExitReason, TerminalLocation, TerminalSettingId } from 'vs/platform/terminal/common/terminal'; import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService'; <del> import { ILifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycle'; </del> <ins> import { ILifecycleService, ShutdownReason, WillShutdownEvent } from 'vs/workbench/services/lifecycle/common/lifecycle'; </ins> import { ConfirmOnKill } from 'vs/workbench/contrib/terminal/common/terminal'; import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration';

/duplicate
Reviving editor-area terminals was working great in 1.73.x. This was marked as a duplicate of a feature request. Is it not a regression?
Created a PR with a possible fix
VSCode v1.74.2 occurs the same problem, does the fix takes effect or I need to config some settings?
The fix will be available in 1.75 release or you can try it in insiders


Question: ...this.createExtHostOutputChannel(name, channelPromise), trace(value: string, ...args: any[]): void { validate(); <del> channelPromise.then(channel => channel.info(value, ...args)); </del> <ins> channelPromise.then(channel => channel.trace(value, ...args)); </ins> }, debug(value: string, ...args: any[]): void { validate();

Testing an extension that logs some infos and some debugs. the extensions log and see the infos "Developer: Set Log Level..." and choose "Debug" something in the extension that causes the debug logs to happen. at the log again and see that the debug logs are not there.
Error and trace also don't log.


Question: "cssnano": "^4.1.11", "debounce": "^1.0.0", "deemon": "^1.8.0", <del> "electron": "19.1.8", </del> <ins> "electron": "19.1.9", </ins> "eslint": "8.7.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-jsdoc": "^39.3.2",

Type: <bBug</bwhen I do a ctrl-f and run search replace. When I put in a & to search for and a & with a new line it crashes visual studio code and once and a while my whole os VS Code version: Code 1.74.0 (, 2022-12-05T16:47:18.476Z) OS version: Linux x64 6.0.6--generic Modes: Sandboxed: No <details<summarySystem Info</summary </details<details<summaryExtensions (41)</summaryExtensionVersion ------ language-x86-64-assembly3.0.0 vscode-intelephense-client1.8.2 compare-view0.10.0 vscode-eslint2.2.6 prettier-vscode9.10.3 theme-editor1.9.0 vscode-docker1.23.2 isort2022.8.0 python2022.20.1 vscode-pylance2022.12.20 jupyter2022.11.