mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Vscode merge (#4582)
* Merge from vscode 37cb23d3dd4f9433d56d4ba5ea3203580719a0bd * fix issues with merges * bump node version in azpipe * replace license headers * remove duplicate launch task * fix build errors * fix build errors * fix tslint issues * working through package and linux build issues * more work * wip * fix packaged builds * working through linux build errors * wip * wip * wip * fix mac and linux file limits * iterate linux pipeline * disable editor typing * revert series to parallel * remove optimize vscode from linux * fix linting issues * revert testing change * add work round for new node * readd packaging for extensions * fix issue with angular not resolving decorator dependencies
This commit is contained in:
@@ -292,31 +292,47 @@ export interface EncodedTokensProvider {
|
||||
function isEncodedTokensProvider(provider: TokensProvider | EncodedTokensProvider): provider is EncodedTokensProvider {
|
||||
return provider['tokenizeEncoded'];
|
||||
}
|
||||
|
||||
function isThenable<T>(obj: any): obj is Thenable<T> {
|
||||
if (typeof obj.then === 'function') {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tokens provider for a language (manual implementation).
|
||||
*/
|
||||
export function setTokensProvider(languageId: string, provider: TokensProvider | EncodedTokensProvider): IDisposable {
|
||||
export function setTokensProvider(languageId: string, provider: TokensProvider | EncodedTokensProvider | Thenable<TokensProvider | EncodedTokensProvider>): IDisposable {
|
||||
let languageIdentifier = StaticServices.modeService.get().getLanguageIdentifier(languageId);
|
||||
if (!languageIdentifier) {
|
||||
throw new Error(`Cannot set tokens provider for unknown language ${languageId}`);
|
||||
}
|
||||
let adapter: modes.ITokenizationSupport;
|
||||
if (isEncodedTokensProvider(provider)) {
|
||||
adapter = new EncodedTokenizationSupport2Adapter(provider);
|
||||
} else {
|
||||
adapter = new TokenizationSupport2Adapter(StaticServices.standaloneThemeService.get(), languageIdentifier, provider);
|
||||
const create = (provider: TokensProvider | EncodedTokensProvider) => {
|
||||
if (isEncodedTokensProvider(provider)) {
|
||||
return new EncodedTokenizationSupport2Adapter(provider);
|
||||
} else {
|
||||
return new TokenizationSupport2Adapter(StaticServices.standaloneThemeService.get(), languageIdentifier!, provider);
|
||||
}
|
||||
};
|
||||
if (isThenable<TokensProvider | EncodedTokensProvider>(provider)) {
|
||||
return modes.TokenizationRegistry.registerPromise(languageId, provider.then(provider => create(provider)));
|
||||
}
|
||||
return modes.TokenizationRegistry.register(languageId, adapter);
|
||||
return modes.TokenizationRegistry.register(languageId, create(provider));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the tokens provider for a language (monarch implementation).
|
||||
*/
|
||||
export function setMonarchTokensProvider(languageId: string, languageDef: IMonarchLanguage): IDisposable {
|
||||
let lexer = compile(languageId, languageDef);
|
||||
let adapter = createTokenizationSupport(StaticServices.modeService.get(), StaticServices.standaloneThemeService.get(), languageId, lexer);
|
||||
return modes.TokenizationRegistry.register(languageId, adapter);
|
||||
export function setMonarchTokensProvider(languageId: string, languageDef: IMonarchLanguage | Thenable<IMonarchLanguage>): IDisposable {
|
||||
const create = (languageDef: IMonarchLanguage) => {
|
||||
return createTokenizationSupport(StaticServices.modeService.get(), StaticServices.standaloneThemeService.get(), languageId, compile(languageId, languageDef));
|
||||
};
|
||||
if (isThenable<IMonarchLanguage>(languageDef)) {
|
||||
return modes.TokenizationRegistry.registerPromise(languageId, languageDef.then(languageDef => create(languageDef)));
|
||||
}
|
||||
return modes.TokenizationRegistry.register(languageId, create(languageDef));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user