Adopts "containsBalancedBrackets" flag from vscode/text-mate.

This commit is contained in:
Henning Dieterichs
2022-04-07 00:42:19 +02:00
parent bba6c56123
commit 9aaa850fe4
8 changed files with 67 additions and 7 deletions

View File

@@ -133,6 +133,16 @@ export abstract class AbstractTextMateService extends Disposable implements ITex
validLanguageId = grammar.language;
}
function asStringArray(array: unknown, defaultValue: string[]): string[] {
if (!Array.isArray(array)) {
return defaultValue;
}
if (!array.every(e => typeof e === 'string')) {
return defaultValue;
}
return array;
}
this._grammarDefinitions.push({
location: grammarLocation,
language: validLanguageId ? validLanguageId : undefined,
@@ -140,6 +150,8 @@ export abstract class AbstractTextMateService extends Disposable implements ITex
embeddedLanguages: embeddedLanguages,
tokenTypes: tokenTypes,
injectTo: grammar.injectTo,
balancedBracketSelectors: asStringArray(grammar.balancedBracketScopes, ['*']),
unbalancedBracketSelectors: asStringArray(grammar.unbalancedBracketScopes, []),
});
if (validLanguageId) {

View File

@@ -25,6 +25,8 @@ export interface IValidGrammarDefinitionDTO {
embeddedLanguages: IValidEmbeddedLanguagesMap;
tokenTypes: IValidTokenTypeMap;
injectTo?: string[];
balancedBracketSelectors: string[];
unbalancedBracketSelectors: string[];
}
export interface ICreateData {
@@ -143,6 +145,8 @@ export class TextMateWorker {
embeddedLanguages: def.embeddedLanguages,
tokenTypes: def.tokenTypes,
injectTo: def.injectTo,
balancedBracketSelectors: def.balancedBracketSelectors,
unbalancedBracketSelectors: def.unbalancedBracketSelectors,
};
});
this._grammarFactory = this._loadTMGrammarFactory(grammarDefinitions);