UNPKG

sussudio

Version:

An unofficial VS Code Internal API

62 lines (61 loc) 2.72 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { coalesce } from "../../../base/common/arrays.mjs"; import { toDisposable } from "../../../base/common/lifecycle.mjs"; import { Registry } from "../../registry/common/platform.mjs"; export var DefaultQuickAccessFilterValue; (function (DefaultQuickAccessFilterValue) { /** * Keep the value as it is given to quick access. */ DefaultQuickAccessFilterValue[DefaultQuickAccessFilterValue["PRESERVE"] = 0] = "PRESERVE"; /** * Use the value that was used last time something was accepted from the picker. */ DefaultQuickAccessFilterValue[DefaultQuickAccessFilterValue["LAST"] = 1] = "LAST"; })(DefaultQuickAccessFilterValue || (DefaultQuickAccessFilterValue = {})); export const Extensions = { Quickaccess: 'workbench.contributions.quickaccess' }; export class QuickAccessRegistry { providers = []; defaultProvider = undefined; registerQuickAccessProvider(provider) { // Extract the default provider when no prefix is present if (provider.prefix.length === 0) { this.defaultProvider = provider; } else { this.providers.push(provider); } // sort the providers by decreasing prefix length, such that longer // prefixes take priority: 'ext' vs 'ext install' - the latter should win this.providers.sort((providerA, providerB) => providerB.prefix.length - providerA.prefix.length); return toDisposable(() => { this.providers.splice(this.providers.indexOf(provider), 1); if (this.defaultProvider === provider) { this.defaultProvider = undefined; } }); } getQuickAccessProviders() { return coalesce([this.defaultProvider, ...this.providers]); } getQuickAccessProvider(prefix) { const result = prefix ? (this.providers.find(provider => prefix.startsWith(provider.prefix)) || undefined) : undefined; return result || this.defaultProvider; } clear() { const providers = [...this.providers]; const defaultProvider = this.defaultProvider; this.providers = []; this.defaultProvider = undefined; return () => { this.providers = providers; this.defaultProvider = defaultProvider; }; } } Registry.add(Extensions.Quickaccess, new QuickAccessRegistry());