mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-17 23:35:54 +01:00
align whitespace menu option with setting (#306483)
* align render whitespace menu option (https://github.com/microsoft/vscode/issues/305883) * Use descriptive titles and shortTitle for render whitespace mode commands Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/d7e269a5-e4e5-4d4c-967d-2b2c9f09b835 Co-authored-by: joshspicer <23246594+joshspicer@users.noreply.github.com> * Move submenu registration into Action2 menu property, remove duplicate MenuRegistry calls Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/68d6d9ff-b7a9-41b1-89f7-3c561b677802 Co-authored-by: joshspicer <23246594+joshspicer@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -100,6 +100,7 @@ export class MenuId {
|
|||||||
static readonly EditorTabsBarShowTabsSubmenu = new MenuId('EditorTabsBarShowTabsSubmenu');
|
static readonly EditorTabsBarShowTabsSubmenu = new MenuId('EditorTabsBarShowTabsSubmenu');
|
||||||
static readonly EditorTabsBarShowTabsZenModeSubmenu = new MenuId('EditorTabsBarShowTabsZenModeSubmenu');
|
static readonly EditorTabsBarShowTabsZenModeSubmenu = new MenuId('EditorTabsBarShowTabsZenModeSubmenu');
|
||||||
static readonly EditorActionsPositionSubmenu = new MenuId('EditorActionsPositionSubmenu');
|
static readonly EditorActionsPositionSubmenu = new MenuId('EditorActionsPositionSubmenu');
|
||||||
|
static readonly EditorRenderWhitespaceSubmenu = new MenuId('EditorRenderWhitespaceSubmenu');
|
||||||
static readonly EditorSplitMoveSubmenu = new MenuId('EditorSplitMoveSubmenu');
|
static readonly EditorSplitMoveSubmenu = new MenuId('EditorSplitMoveSubmenu');
|
||||||
static readonly ExplorerContext = new MenuId('ExplorerContext');
|
static readonly ExplorerContext = new MenuId('ExplorerContext');
|
||||||
static readonly ExplorerContextShare = new MenuId('ExplorerContextShare');
|
static readonly ExplorerContextShare = new MenuId('ExplorerContextShare');
|
||||||
|
|||||||
@@ -4,12 +4,104 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { localize, localize2 } from '../../../../nls.js';
|
import { localize, localize2 } from '../../../../nls.js';
|
||||||
import { Action2, MenuId, registerAction2 } from '../../../../platform/actions/common/actions.js';
|
import { Action2, MenuId, MenuRegistry, registerAction2 } from '../../../../platform/actions/common/actions.js';
|
||||||
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
|
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
|
||||||
import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
|
import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
|
||||||
import { Categories } from '../../../../platform/action/common/actionCommonCategories.js';
|
import { Categories } from '../../../../platform/action/common/actionCommonCategories.js';
|
||||||
import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
|
import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
|
||||||
|
|
||||||
|
const renderWhitespaceSetting = 'editor.renderWhitespace';
|
||||||
|
|
||||||
|
class RenderWhitespaceNoneAction extends Action2 {
|
||||||
|
static readonly ID = 'editor.action.renderWhitespace.none';
|
||||||
|
constructor() {
|
||||||
|
super({
|
||||||
|
id: RenderWhitespaceNoneAction.ID,
|
||||||
|
title: localize2('renderWhitespace.setNone', "Set Render Whitespace to None"),
|
||||||
|
shortTitle: localize2('renderWhitespace.none', "None"),
|
||||||
|
category: Categories.View,
|
||||||
|
f1: false,
|
||||||
|
toggled: ContextKeyExpr.equals(`config.${renderWhitespaceSetting}`, 'none'),
|
||||||
|
menu: { id: MenuId.EditorRenderWhitespaceSubmenu, group: '1_config', order: 1 },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
override run(accessor: ServicesAccessor): Promise<void> {
|
||||||
|
return accessor.get(IConfigurationService).updateValue(renderWhitespaceSetting, 'none');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class RenderWhitespaceBoundaryAction extends Action2 {
|
||||||
|
static readonly ID = 'editor.action.renderWhitespace.boundary';
|
||||||
|
constructor() {
|
||||||
|
super({
|
||||||
|
id: RenderWhitespaceBoundaryAction.ID,
|
||||||
|
title: localize2('renderWhitespace.setBoundary', "Set Render Whitespace to Boundary"),
|
||||||
|
shortTitle: localize2('renderWhitespace.boundary', "Boundary"),
|
||||||
|
category: Categories.View,
|
||||||
|
f1: false,
|
||||||
|
toggled: ContextKeyExpr.equals(`config.${renderWhitespaceSetting}`, 'boundary'),
|
||||||
|
menu: { id: MenuId.EditorRenderWhitespaceSubmenu, group: '1_config', order: 2 },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
override run(accessor: ServicesAccessor): Promise<void> {
|
||||||
|
return accessor.get(IConfigurationService).updateValue(renderWhitespaceSetting, 'boundary');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class RenderWhitespaceSelectionAction extends Action2 {
|
||||||
|
static readonly ID = 'editor.action.renderWhitespace.selection';
|
||||||
|
constructor() {
|
||||||
|
super({
|
||||||
|
id: RenderWhitespaceSelectionAction.ID,
|
||||||
|
title: localize2('renderWhitespace.setSelection', "Set Render Whitespace to Selection"),
|
||||||
|
shortTitle: localize2('renderWhitespace.selection', "Selection"),
|
||||||
|
category: Categories.View,
|
||||||
|
f1: false,
|
||||||
|
toggled: ContextKeyExpr.equals(`config.${renderWhitespaceSetting}`, 'selection'),
|
||||||
|
menu: { id: MenuId.EditorRenderWhitespaceSubmenu, group: '1_config', order: 3 },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
override run(accessor: ServicesAccessor): Promise<void> {
|
||||||
|
return accessor.get(IConfigurationService).updateValue(renderWhitespaceSetting, 'selection');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class RenderWhitespaceTrailingAction extends Action2 {
|
||||||
|
static readonly ID = 'editor.action.renderWhitespace.trailing';
|
||||||
|
constructor() {
|
||||||
|
super({
|
||||||
|
id: RenderWhitespaceTrailingAction.ID,
|
||||||
|
title: localize2('renderWhitespace.setTrailing', "Set Render Whitespace to Trailing"),
|
||||||
|
shortTitle: localize2('renderWhitespace.trailing', "Trailing"),
|
||||||
|
category: Categories.View,
|
||||||
|
f1: false,
|
||||||
|
toggled: ContextKeyExpr.equals(`config.${renderWhitespaceSetting}`, 'trailing'),
|
||||||
|
menu: { id: MenuId.EditorRenderWhitespaceSubmenu, group: '1_config', order: 4 },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
override run(accessor: ServicesAccessor): Promise<void> {
|
||||||
|
return accessor.get(IConfigurationService).updateValue(renderWhitespaceSetting, 'trailing');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class RenderWhitespaceAllAction extends Action2 {
|
||||||
|
static readonly ID = 'editor.action.renderWhitespace.all';
|
||||||
|
constructor() {
|
||||||
|
super({
|
||||||
|
id: RenderWhitespaceAllAction.ID,
|
||||||
|
title: localize2('renderWhitespace.setAll', "Set Render Whitespace to All"),
|
||||||
|
shortTitle: localize2('renderWhitespace.all', "All"),
|
||||||
|
category: Categories.View,
|
||||||
|
f1: false,
|
||||||
|
toggled: ContextKeyExpr.equals(`config.${renderWhitespaceSetting}`, 'all'),
|
||||||
|
menu: { id: MenuId.EditorRenderWhitespaceSubmenu, group: '1_config', order: 5 },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
override run(accessor: ServicesAccessor): Promise<void> {
|
||||||
|
return accessor.get(IConfigurationService).updateValue(renderWhitespaceSetting, 'all');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class ToggleRenderWhitespaceAction extends Action2 {
|
class ToggleRenderWhitespaceAction extends Action2 {
|
||||||
|
|
||||||
static readonly ID = 'editor.action.toggleRenderWhitespace';
|
static readonly ID = 'editor.action.toggleRenderWhitespace';
|
||||||
@@ -17,25 +109,16 @@ class ToggleRenderWhitespaceAction extends Action2 {
|
|||||||
constructor() {
|
constructor() {
|
||||||
super({
|
super({
|
||||||
id: ToggleRenderWhitespaceAction.ID,
|
id: ToggleRenderWhitespaceAction.ID,
|
||||||
title: {
|
title: localize2('toggleRenderWhitespace', "Toggle Render Whitespace"),
|
||||||
...localize2('toggleRenderWhitespace', "Toggle Render Whitespace"),
|
|
||||||
mnemonicTitle: localize({ key: 'miToggleRenderWhitespace', comment: ['&& denotes a mnemonic'] }, "&&Render Whitespace"),
|
|
||||||
},
|
|
||||||
category: Categories.View,
|
category: Categories.View,
|
||||||
f1: true,
|
f1: true,
|
||||||
toggled: ContextKeyExpr.notEquals('config.editor.renderWhitespace', 'none'),
|
|
||||||
menu: {
|
|
||||||
id: MenuId.MenubarAppearanceMenu,
|
|
||||||
group: '4_editor',
|
|
||||||
order: 4
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
override run(accessor: ServicesAccessor): Promise<void> {
|
override run(accessor: ServicesAccessor): Promise<void> {
|
||||||
const configurationService = accessor.get(IConfigurationService);
|
const configurationService = accessor.get(IConfigurationService);
|
||||||
|
|
||||||
const renderWhitespace = configurationService.getValue<string>('editor.renderWhitespace');
|
const renderWhitespace = configurationService.getValue<string>(renderWhitespaceSetting);
|
||||||
|
|
||||||
let newRenderWhitespace: string;
|
let newRenderWhitespace: string;
|
||||||
if (renderWhitespace === 'none') {
|
if (renderWhitespace === 'none') {
|
||||||
@@ -44,8 +127,20 @@ class ToggleRenderWhitespaceAction extends Action2 {
|
|||||||
newRenderWhitespace = 'none';
|
newRenderWhitespace = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
return configurationService.updateValue('editor.renderWhitespace', newRenderWhitespace);
|
return configurationService.updateValue(renderWhitespaceSetting, newRenderWhitespace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
registerAction2(RenderWhitespaceNoneAction);
|
||||||
|
registerAction2(RenderWhitespaceBoundaryAction);
|
||||||
|
registerAction2(RenderWhitespaceSelectionAction);
|
||||||
|
registerAction2(RenderWhitespaceTrailingAction);
|
||||||
|
registerAction2(RenderWhitespaceAllAction);
|
||||||
registerAction2(ToggleRenderWhitespaceAction);
|
registerAction2(ToggleRenderWhitespaceAction);
|
||||||
|
|
||||||
|
MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, {
|
||||||
|
submenu: MenuId.EditorRenderWhitespaceSubmenu,
|
||||||
|
title: localize('renderWhitespace', "Render Whitespace"),
|
||||||
|
group: '4_editor',
|
||||||
|
order: 4
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user