Change:
We are filling the "View" menu more and more with text editor specific things: ! Bringing this up as a UX issue to think about if this is scaling going forward. Especially in the context of VSCode supporting custom editors and notebooks, I think this may not be the right solution, at the minimum maybe have a sub menu? //cc
Would a menu item like make sense either in the first group or at the end?
Putting it near the top would give its submenu more vertical space to grow into.
To clarify, would that capture just these items? if so. Seems like it would fit nicely under . <img width="285" alt="CleanShot 2022-08-18 at 11 08 21 src="https://user-"
Here's to clarify what I meant: if we look at the "categories" it makes sense to be placed in the first group: ! but, it also seems like it would fit inside of the other submenu groups even though they are different categories: !
The second option is what I had in mind since it feels more closely aligned to how the editor is configured. The first section roughly seems like a place to do something once vs. toggling elements on/off.
The argument against that is those two items (Appearance and Editor Layout) are layout specific, whereas these would be feature toggles, so a little different.
Yes, +1 for grouping into a category. I think somewhere close to "Editor Layout" is OK since that applies to editors. One thing to consider is that afaik these toggles only apply to text editors, not all editors.
As pointed out, this has a high chance of causing anger for a minor beautification. Based on his experience, he would not move forward with this for the most popular commands in the menu. This looks to be Word Wrap. Should we keep word wrap where it is and add a submenu entry below that named: "Additional Editor Options"
As a gut reaction it feels strange to split these out into a single option + all others folded into a submenu. Would these still be in this section? <img width="223" alt="CleanShot 2022-10-20 at 08 45 18 src="https://user-"Or would everything be put back at the bottom like it was before? If so I might argue for us to simply revert to what was there before vs. some in-between solution. <img width="319" alt="CleanShot 2022-10-20 at 08 46 14 src="https://user-"
I would guess it makes sense to keep it on the bottom. It seems the original problem is that we keep adding to this list so we cannot scale it. So having the top/high-use ones in the main entry and overflowing has some merit, but I agree that in between feels strange.
was your experience in the top level menu or for a context menu entry? if it was a context menu, I would imagine the usage was significantly higher, but I'd like to verify that through data. Could you share the command id?
Yeah, those was the editor context menu. It's already one or two years ago but I remember folks missed some but not all peek actions. Like peek references/definition are popular but peek implementation isn't etc. We decided all go-to commands are more popular than any peek command. That looks nice/stable but wasn't a good choice. That's why I am in favour of a hybrid approach
Works for me, thanks!

Discussion:
import { ICommandService } from 'vs/platform/commands/common/commands'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { OpenRecentAction } from 'vs/workbench/browser/actions/windowActions'; <ins> import { isICommandActionToggleInfo } from 'vs/platform/action/common/action'; </ins> export type IOpenRecentAction = IAction & { uri: URI; remoteAuthority?: string };

this.insertActionsBefore(action, target); // use mnemonicTitle whenever possible <del> const title = typeof action.item.title === 'string' </del> <ins> let title = typeof action.item.title === 'string' </ins> ? action.item.title : action.item.title.mnemonicTitle ?? action.item.title.value;

target.push(new SubmenuAction(action.id, mnemonicMenuLabel(title), submenuActions)); } } else { <ins> if (isICommandActionToggleInfo(action.item.toggled)) { title = action.item.toggled.mnemonicTitle ?? action.item.toggled.title ?? title; } </ins> const newAction = new Action(action.id, mnemonicMenuLabel(title), action.class, action.enabled, () => this.commandService.executeCommand(action.id)); newAction.tooltip = action.tooltip; newAction.checked = action.checked;