src/vs/workbench/contrib/welcome/gettingStarted/browser/gettingStartedService.ts/GettingStartedService/selectNewEntry
class GettingStartedService:	public async selectNewEntry(categories: IGettingStartedNewMenuEntryDescriptorCategory[]) {
		const disposables = new DisposableStore();
		const qp = this.quickInputService.createQuickPick();
		qp.title = localize('createNew', "Create New...");
		qp.matchOnDetail = true;
		qp.matchOnDescription = true;

		if (this.newMenuItems
			.filter(entry => categories.includes(entry.category)).length === 1) {
			const selection = this.newMenuItems
				.filter(entry => categories.includes(entry.category))[0];

			if (selection) {
				if (selection.action.runCommand) {
					await this.commandService.executeCommand(selection.action.runCommand);
				} else if (selection.action.invokeFunction) {
					await this.instantiationService.invokeFunction<unknown>(selection.action.invokeFunction);
				}
			}
		}

		const refreshQp = () => {
			const items: (((IQuickPickItem & IGettingStartedNewMenuEntryDescriptor) | IQuickPickSeparator))[] = [];
			let lastSeparator: IGettingStartedNewMenuEntryDescriptorCategory | undefined;
			this.newMenuItems
				.filter(entry => categories.length === 0 || categories.includes(entry.category))
				.filter(entry => this.contextService.contextMatchesRules(entry.when))
				.forEach((entry) => {
					const command = entry.action.runCommand;
					const keybinding = this.keybindingService.lookupKeybinding(command || '', this.contextService);
					if (lastSeparator !== entry.category && categories.length !== 1) {
						items.push({
							type: 'separator',
							label: displayCategory[entry.category]
						});
						lastSeparator = entry.category;
					}
					items.push({
						...entry,
						label: entry.title,
						type: 'item',
						keybinding,
						buttons: command ? [
							{
								iconClass: 'codicon codicon-gear',
								tooltip: localize('change keybinding', "Configure Keybinding")
							}
						] : [],
						detail: entry.description,
						description: entry.from,
					});
				});
			qp.items = items;
		};
		refreshQp();

		disposables.add(this.onDidAddNewEntry(() => refreshQp()));

		disposables.add(qp.onDidAccept(async e => {
			const selected = qp.selectedItems[0] as (IQuickPickItem & IGettingStartedNewMenuEntryDescriptor);
			if (selected) {
				if (selected.action.runCommand) {
					await this.commandService.executeCommand(selected.action.runCommand);
				} else if (selected.action.invokeFunction) {
					await this.instantiationService.invokeFunction<unknown>(selected.action.invokeFunction);
				}
			}
		}));

		disposables.add(qp.onDidHide(() => {
			qp.dispose();
			disposables.dispose();
		}));

		disposables.add(qp.onDidTriggerItemButton(e => {
			qp.hide();
			this.commandService.executeCommand('workbench.action.openGlobalKeybindings', (e.item as any).action.runCommand);
		}));

		qp.show();
	}