src/vs/workbench/browser/parts/editor/editorStatus.ts/EditorStatus/showIndentationPicker
class EditorStatus:	private async showIndentationPicker(): Promise<unknown> {
		const activeTextEditorControl = getCodeEditor(this.editorService.activeTextEditorControl);
		if (!activeTextEditorControl) {
			return this.quickInputService.pick([{ label: localize('noEditor', "No text editor active at this time") }]);
		}

		if (this.editorService.activeEditor?.hasCapability(EditorInputCapabilities.Readonly)) {
			return this.quickInputService.pick([{ label: localize('noWritableCodeEditor', "The active code editor is read-only.") }]);
		}

		const picks: QuickPickInput<IQuickPickItem & { run(): void }>[] = [
			assertIsDefined(activeTextEditorControl.getAction(IndentUsingSpaces.ID)),
			assertIsDefined(activeTextEditorControl.getAction(IndentUsingTabs.ID)),
			assertIsDefined(activeTextEditorControl.getAction(ChangeTabDisplaySize.ID)),
			assertIsDefined(activeTextEditorControl.getAction(DetectIndentation.ID)),
			assertIsDefined(activeTextEditorControl.getAction(IndentationToSpacesAction.ID)),
			assertIsDefined(activeTextEditorControl.getAction(IndentationToTabsAction.ID)),
			assertIsDefined(activeTextEditorControl.getAction(TrimTrailingWhitespaceAction.ID))
		].map((a: IEditorAction) => {
			return {
				id: a.id,
				label: a.label,
				detail: (Language.isDefaultVariant() || a.label === a.alias) ? undefined : a.alias,
				run: () => {
					activeTextEditorControl.focus();
					a.run();
				}
			};
		});

		picks.splice(3, 0, { type: 'separator', label: localize('indentConvert', "convert file") });
		picks.unshift({ type: 'separator', label: localize('indentView', "change view") });

		const action = await this.quickInputService.pick(picks, { placeHolder: localize('pickAction', "Select Action"), matchOnDetail: true });
		return action?.run();
	}