Refresh master with initial release/0.24 snapshot (#332)

* Initial port of release/0.24 source code

* Fix additional headers

* Fix a typo in launch.json
This commit is contained in:
Karl Burtram
2017-12-15 15:38:57 -08:00
committed by GitHub
parent 271b3a0b82
commit 6ad0df0e3e
7118 changed files with 107999 additions and 56466 deletions

View File

@@ -94,8 +94,8 @@ export class ThemeRule {
return aParentScopesLen - bParentScopesLen;
}
for (let i = 0; i < aParentScopesLen; i++) {
var aLen = a.parentScopes[i].length;
var bLen = b.parentScopes[i].length;
const aLen = a.parentScopes[i].length;
const bLen = b.parentScopes[i].length;
if (aLen !== bLen) {
return aLen - bLen;
}

View File

@@ -105,6 +105,8 @@ export class TextMateService implements ITextMateService {
private _themeService: IWorkbenchThemeService;
private _scopeRegistry: TMScopeRegistry;
private _injections: { [scopeName: string]: string[]; };
private _injectedEmbeddedLanguages: { [scopeName: string]: IEmbeddedLanguagesMap[]; };
private _languageToScope: Map<string, string>;
private _styleElement: HTMLStyleElement;
@@ -123,6 +125,7 @@ export class TextMateService implements ITextMateService {
this._scopeRegistry = new TMScopeRegistry();
this.onDidEncounterLanguage = this._scopeRegistry.onDidEncounterLanguage;
this._injections = {};
this._injectedEmbeddedLanguages = {};
this._languageToScope = new Map<string, string>();
this._grammarRegistry = new Registry({
@@ -237,6 +240,16 @@ export class TextMateService implements ITextMateService {
}
injections.push(syntax.scopeName);
}
if (syntax.embeddedLanguages) {
for (let injectScope of syntax.injectTo) {
let injectedEmbeddedLanguages = this._injectedEmbeddedLanguages[injectScope];
if (!injectedEmbeddedLanguages) {
this._injectedEmbeddedLanguages[injectScope] = injectedEmbeddedLanguages = [];
}
injectedEmbeddedLanguages.push(syntax.embeddedLanguages);
}
}
}
let modeId = syntax.language;
@@ -271,6 +284,15 @@ export class TextMateService implements ITextMateService {
return TPromise.wrapError<ICreateGrammarResult>(new Error(nls.localize('no-tm-grammar', "No TM Grammar registered for this language.")));
}
let embeddedLanguages = this._resolveEmbeddedLanguages(languageRegistration.embeddedLanguages);
let injectedEmbeddedLanguages = this._injectedEmbeddedLanguages[scopeName];
if (injectedEmbeddedLanguages) {
for (const injected of injectedEmbeddedLanguages.map(this._resolveEmbeddedLanguages.bind(this))) {
for (const scope of Object.keys(injected)) {
embeddedLanguages[scope] = injected[scope];
}
}
}
let languageId = this._modeService.getLanguageIdentifier(modeId).id;
let containsEmbeddedLanguages = (Object.keys(embeddedLanguages).length > 0);
return new TPromise<ICreateGrammarResult>((c, e, p) => {

View File

@@ -10,7 +10,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'
import { IGrammar } from 'vscode-textmate';
import { LanguageId } from 'vs/editor/common/modes';
export var ITextMateService = createDecorator<ITextMateService>('textMateService');
export const ITextMateService = createDecorator<ITextMateService>('textMateService');
export interface ITextMateService {
_serviceBrand: any;