diff --git a/src/vs/editor/contrib/indentation/common/indentation.ts b/src/vs/editor/contrib/indentation/common/indentation.ts index cace93da42e7c72595c623b7402150497dd45b64..975b171ba437e8d53cd635b62c1c8760cd7cf18c 100644 --- a/src/vs/editor/contrib/indentation/common/indentation.ts +++ b/src/vs/editor/contrib/indentation/common/indentation.ts @@ -86,7 +86,24 @@ export class ChangeIndentationSizeAction extends EditorAction { } } +export class ToggleRenderWhitespaceAction extends EditorAction { + static ID = 'editor.action.toggleRenderWhitespace'; + + constructor(descriptor: IEditorActionDescriptorData, editor: ICommonCodeEditor) { + super(descriptor, editor); + } + + public run(): TPromise { + this.editor.updateOptions({ + renderWhitespace: !this.editor.getConfiguration().renderWhitespace + }); + + return TPromise.as(true); + } +} + // register actions CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(IndentationToSpacesAction, IndentationToSpacesAction.ID, nls.localize('indentationToSpaces', "Convert Indentation to Spaces"))); CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(IndentationToTabsAction, IndentationToTabsAction.ID, nls.localize('indentationToTabs', "Convert Indentation to Tabs"))); CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(ChangeIndentationSizeAction, ChangeIndentationSizeAction.ID, nls.localize('changeIndentationSize', "Change Tab Size for Current File"))); +CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(ToggleRenderWhitespaceAction, ToggleRenderWhitespaceAction.ID, nls.localize('toggleRenderWhitespace', "Toggle Render Whitespace"))); diff --git a/src/vs/workbench/browser/parts/editor/editorStatus.ts b/src/vs/workbench/browser/parts/editor/editorStatus.ts index c567b3e900ca224ba1cda9199162a4b14c7731b9..8b9e68abde79eeb6352b55d1f6ce5637317d0cbd 100644 --- a/src/vs/workbench/browser/parts/editor/editorStatus.ts +++ b/src/vs/workbench/browser/parts/editor/editorStatus.ts @@ -23,7 +23,7 @@ import {IDisposable, combinedDispose} from 'vs/base/common/lifecycle'; import {ICommonCodeEditor} from 'vs/editor/common/editorCommon'; import {ICodeEditor, IDiffEditor} from 'vs/editor/browser/editorBrowser'; import {EndOfLineSequence, ITokenizedModel, EditorType, IEditorSelection, ITextModel, IDiffEditorModel, IEditor} from 'vs/editor/common/editorCommon'; -import {ChangeIndentationSizeAction, IndentationToSpacesAction, IndentationToTabsAction} from 'vs/editor/contrib/indentation/common/indentation'; +import {ChangeIndentationSizeAction, IndentationToSpacesAction, IndentationToTabsAction, ToggleRenderWhitespaceAction} from 'vs/editor/contrib/indentation/common/indentation'; import {EventType, ResourceEvent, EditorEvent, TextEditorSelectionEvent} from 'vs/workbench/common/events'; import {BaseTextEditor} from 'vs/workbench/browser/parts/editor/textEditor'; import {IEditor as IBaseEditor} from 'vs/platform/editor/common/editor'; @@ -714,7 +714,7 @@ export interface IChangeEOLEntry extends IPickOpenEntry { eol: EndOfLineSequence; } -export class ChangeIndentationAction extends Action { +class ChangeIndentationAction extends Action { public static ID = 'workbench.action.editor.changeIndentation'; public static LABEL = nls.localize('changeIndentation', "Change Indentation"); @@ -738,7 +738,7 @@ export class ChangeIndentationAction extends Action { } const control = activeEditor.getControl(); - return this.quickOpenService.pick([control.getAction(ChangeIndentationSizeAction.ID), control.getAction(IndentationToSpacesAction.ID), control.getAction(IndentationToTabsAction.ID)], { + return this.quickOpenService.pick([control.getAction(ChangeIndentationSizeAction.ID), control.getAction(IndentationToSpacesAction.ID), control.getAction(IndentationToTabsAction.ID), control.getAction(ToggleRenderWhitespaceAction.ID)], { placeHolder: nls.localize('pickAction', "Select Action") }).then(action => action && action.run()); }