提交 71ccf693 编写于 作者: J Johannes Rieken

allow Thenable also in monaco api

上级 653280d1
......@@ -221,7 +221,7 @@ export interface IState {
* to that type `T`. In addition, `null` and `undefined` can be returned - either directly or from a
* thenable.
*/
export type ProviderResult<T> = T | undefined | null | Promise<T | undefined | null>;
export type ProviderResult<T> = T | undefined | null | Thenable<T | undefined | null>;
/**
* A hover represents additional information for a symbol or word. Hovers are
......@@ -1405,7 +1405,7 @@ export interface ITokenizationRegistry {
/**
* Register a promise for a tokenization support.
*/
registerPromise(language: string, promise: Promise<ITokenizationSupport>): Promise<IDisposable>;
registerPromise(language: string, promise: Thenable<ITokenizationSupport>): Thenable<IDisposable>;
/**
* Get the tokenization support for a language.
......@@ -1417,7 +1417,7 @@ export interface ITokenizationRegistry {
* Get the promise of a tokenization support for a language.
* `null` is returned if no support is available and no promise for the support has been registered yet.
*/
getPromise(language: string): Promise<ITokenizationSupport> | null;
getPromise(language: string): Thenable<ITokenizationSupport> | null;
/**
* Set the new color map that all tokens will use in their ColorId binary encoded bits for foreground and background.
......
......@@ -11,7 +11,7 @@ import { ColorId, ITokenizationRegistry, ITokenizationSupport, ITokenizationSupp
export class TokenizationRegistryImpl implements ITokenizationRegistry {
private _map: { [language: string]: ITokenizationSupport };
private _promises: { [language: string]: Promise<IDisposable> };
private _promises: { [language: string]: Thenable<IDisposable> };
private readonly _onDidChange: Emitter<ITokenizationSupportChangedEvent> = new Emitter<ITokenizationSupportChangedEvent>();
public readonly onDidChange: Event<ITokenizationSupportChangedEvent> = this._onDidChange.event;
......@@ -43,7 +43,7 @@ export class TokenizationRegistryImpl implements ITokenizationRegistry {
});
}
public registerPromise(language: string, supportPromise: Promise<ITokenizationSupport | null>): Promise<IDisposable> {
public registerPromise(language: string, supportPromise: Thenable<ITokenizationSupport | null>): Thenable<IDisposable> {
const promise = this._promises[language] = supportPromise.then(support => {
delete this._promises[language];
if (support) {
......@@ -55,7 +55,7 @@ export class TokenizationRegistryImpl implements ITokenizationRegistry {
return promise;
}
public getPromise(language: string): Promise<ITokenizationSupport> | null {
public getPromise(language: string): Thenable<ITokenizationSupport> | null {
const support = this.get(language);
if (support) {
return Promise.resolve(support);
......
......@@ -9,7 +9,7 @@ import { onUnexpectedExternalError } from 'vs/base/common/errors';
import { registerDefaultLanguageCommand } from 'vs/editor/browser/editorExtensions';
import { Position } from 'vs/editor/common/core/position';
import { ITextModel } from 'vs/editor/common/model';
import { DefinitionLink, DefinitionProviderRegistry, ImplementationProviderRegistry, TypeDefinitionProviderRegistry, DeclarationProviderRegistry } from 'vs/editor/common/modes';
import { DefinitionLink, DefinitionProviderRegistry, ImplementationProviderRegistry, TypeDefinitionProviderRegistry, DeclarationProviderRegistry, ProviderResult } from 'vs/editor/common/modes';
import { LanguageFeatureRegistry } from 'vs/editor/common/modes/languageFeatureRegistry';
......@@ -17,7 +17,7 @@ function getDefinitions<T>(
model: ITextModel,
position: Position,
registry: LanguageFeatureRegistry<T>,
provide: (provider: T, model: ITextModel, position: Position) => DefinitionLink | DefinitionLink[] | null | undefined | Promise<DefinitionLink | DefinitionLink[] | null | undefined>
provide: (provider: T, model: ITextModel, position: Position) => ProviderResult<DefinitionLink | DefinitionLink[]>
): Promise<DefinitionLink[]> {
const provider = registry.ordered(model);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册