Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { localize, localize2 } from '../../../../nls.js';
7
import { Action2, MenuId, registerAction2 } from '../../../../platform/actions/common/actions.js';
8
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
9
import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
10
import { Categories } from '../../../../platform/action/common/actionCommonCategories.js';
11
import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
12
13
class ToggleRenderWhitespaceAction extends Action2 {
14
15
static readonly ID = 'editor.action.toggleRenderWhitespace';
16
17
constructor() {
18
super({
19
id: ToggleRenderWhitespaceAction.ID,
20
title: {
21
...localize2('toggleRenderWhitespace', "Toggle Render Whitespace"),
22
mnemonicTitle: localize({ key: 'miToggleRenderWhitespace', comment: ['&& denotes a mnemonic'] }, "&&Render Whitespace"),
23
},
24
category: Categories.View,
25
f1: true,
26
toggled: ContextKeyExpr.notEquals('config.editor.renderWhitespace', 'none'),
27
menu: {
28
id: MenuId.MenubarAppearanceMenu,
29
group: '4_editor',
30
order: 4
31
}
32
});
33
}
34
35
override run(accessor: ServicesAccessor): Promise<void> {
36
const configurationService = accessor.get(IConfigurationService);
37
38
const renderWhitespace = configurationService.getValue<string>('editor.renderWhitespace');
39
40
let newRenderWhitespace: string;
41
if (renderWhitespace === 'none') {
42
newRenderWhitespace = 'all';
43
} else {
44
newRenderWhitespace = 'none';
45
}
46
47
return configurationService.updateValue('editor.renderWhitespace', newRenderWhitespace);
48
}
49
}
50
51
registerAction2(ToggleRenderWhitespaceAction);
52
53