12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- import { Emitter } from '../../../base/common/event.js';
- import { toDisposable } from '../../../base/common/lifecycle.js';
- export class TokenizationRegistryImpl {
- constructor() {
- this._map = new Map();
- this._promises = new Map();
- this._onDidChange = new Emitter();
- this.onDidChange = this._onDidChange.event;
- this._colorMap = null;
- }
- fire(languages) {
- this._onDidChange.fire({
- changedLanguages: languages,
- changedColorMap: false
- });
- }
- register(language, support) {
- this._map.set(language, support);
- this.fire([language]);
- return toDisposable(() => {
- if (this._map.get(language) !== support) {
- return;
- }
- this._map.delete(language);
- this.fire([language]);
- });
- }
- registerPromise(language, supportPromise) {
- let registration = null;
- let isDisposed = false;
- this._promises.set(language, supportPromise.then(support => {
- this._promises.delete(language);
- if (isDisposed || !support) {
- return;
- }
- registration = this.register(language, support);
- }));
- return toDisposable(() => {
- isDisposed = true;
- if (registration) {
- registration.dispose();
- }
- });
- }
- getPromise(language) {
- const support = this.get(language);
- if (support) {
- return Promise.resolve(support);
- }
- const promise = this._promises.get(language);
- if (promise) {
- return promise.then(_ => this.get(language));
- }
- return null;
- }
- get(language) {
- return (this._map.get(language) || null);
- }
- setColorMap(colorMap) {
- this._colorMap = colorMap;
- this._onDidChange.fire({
- changedLanguages: Array.from(this._map.keys()),
- changedColorMap: true
- });
- }
- getColorMap() {
- return this._colorMap;
- }
- getDefaultBackground() {
- if (this._colorMap && this._colorMap.length > 2 /* DefaultBackground */) {
- return this._colorMap[2 /* DefaultBackground */];
- }
- return null;
- }
- }
|