diff --git a/src/vs/editor/common/services/languageService.ts b/src/vs/editor/common/services/languageService.ts index a1fedffc7a2..96f64e7f74e 100644 --- a/src/vs/editor/common/services/languageService.ts +++ b/src/vs/editor/common/services/languageService.ts @@ -35,7 +35,8 @@ export interface ILanguageService { onLanguagesMaybeChanged: Event; // --- reading - isRegisteredMode(mimetypeOrModeId: string): boolean; + isRegisteredLanguageId(languageId: string): boolean; + isRegisteredMimeType(mimeType: string): boolean; getRegisteredModes(): string[]; getRegisteredLanguageNames(): string[]; getExtensions(alias: string): string[]; diff --git a/src/vs/editor/common/services/languageServiceImpl.ts b/src/vs/editor/common/services/languageServiceImpl.ts index f8074989124..1ad8f8205a0 100644 --- a/src/vs/editor/common/services/languageServiceImpl.ts +++ b/src/vs/editor/common/services/languageServiceImpl.ts @@ -76,8 +76,12 @@ export class LanguageService extends Disposable implements ILanguageService { super.dispose(); } - public isRegisteredMode(mimetypeOrModeId: string): boolean { - return this._registry.isRegisteredMode(mimetypeOrModeId); + public isRegisteredLanguageId(languageId: string): boolean { + return this._registry.isRegisteredLanguageId(languageId); + } + + public isRegisteredMimeType(mimeType: string): boolean { + return this._registry.isRegisteredMimeType(mimeType); } public getRegisteredModes(): string[] { diff --git a/src/vs/editor/common/services/languagesRegistry.ts b/src/vs/editor/common/services/languagesRegistry.ts index eb3297c614c..51897867f20 100644 --- a/src/vs/editor/common/services/languagesRegistry.ts +++ b/src/vs/editor/common/services/languagesRegistry.ts @@ -257,13 +257,12 @@ export class LanguagesRegistry extends Disposable { } } - public isRegisteredMode(mimetypeOrModeId: string): boolean { - // Is this a known mime type ? - if (hasOwnProperty.call(this._mimeTypesMap, mimetypeOrModeId)) { - return true; - } - // Is this a known mode id ? - return hasOwnProperty.call(this._languages, mimetypeOrModeId); + public isRegisteredLanguageId(languageId: string): boolean { + return hasOwnProperty.call(this._languages, languageId); + } + + public isRegisteredMimeType(mimeType: string): boolean { + return hasOwnProperty.call(this._mimeTypesMap, mimeType); } public getRegisteredModes(): string[] { diff --git a/src/vs/editor/standalone/common/monarch/monarchLexer.ts b/src/vs/editor/standalone/common/monarch/monarchLexer.ts index 1ce3050ba93..ed5c6ef154f 100644 --- a/src/vs/editor/standalone/common/monarch/monarchLexer.ts +++ b/src/vs/editor/standalone/common/monarch/monarchLexer.ts @@ -859,7 +859,12 @@ export class MonarchTokenizer implements modes.ITokenizationSupport { } private _locateMode(mimetypeOrModeId: string): string | null { - if (!mimetypeOrModeId || !this._languageService.isRegisteredMode(mimetypeOrModeId)) { + if (!mimetypeOrModeId) { + return null; + } + const isRegisteredLanguageId = this._languageService.isRegisteredLanguageId(mimetypeOrModeId); + const isRegisteredMimeType = this._languageService.isRegisteredMimeType(mimetypeOrModeId); + if (!isRegisteredLanguageId && !isRegisteredMimeType) { return null; } diff --git a/src/vs/workbench/contrib/snippets/browser/snippetsService.ts b/src/vs/workbench/contrib/snippets/browser/snippetsService.ts index 56888c34fb4..ae2d95c2b22 100644 --- a/src/vs/workbench/contrib/snippets/browser/snippetsService.ts +++ b/src/vs/workbench/contrib/snippets/browser/snippetsService.ts @@ -63,7 +63,7 @@ namespace snippetExt { return null; } - if (!isFalsyOrWhitespace(snippet.language) && !languageService.isRegisteredMode(snippet.language)) { + if (!isFalsyOrWhitespace(snippet.language) && !languageService.isRegisteredLanguageId(snippet.language)) { extension.collector.error(localize( 'invalid.language', "Unknown language in `contributes.{0}.language`. Provided value: {1}", diff --git a/src/vs/workbench/services/textMate/browser/abstractTextMateService.ts b/src/vs/workbench/services/textMate/browser/abstractTextMateService.ts index 97902f3a825..f42d8e52a59 100644 --- a/src/vs/workbench/services/textMate/browser/abstractTextMateService.ts +++ b/src/vs/workbench/services/textMate/browser/abstractTextMateService.ts @@ -337,7 +337,7 @@ export abstract class AbstractTextMateService extends Disposable implements ITex } private _validateGrammarExtensionPoint(extensionLocation: URI, syntax: ITMSyntaxExtensionPoint, collector: ExtensionMessageCollector): boolean { - if (syntax.language && ((typeof syntax.language !== 'string') || !this._languageService.isRegisteredMode(syntax.language))) { + if (syntax.language && ((typeof syntax.language !== 'string') || !this._languageService.isRegisteredLanguageId(syntax.language))) { collector.error(nls.localize('invalid.language', "Unknown language in `contributes.{0}.language`. Provided value: {1}", grammarsExtPoint.name, String(syntax.language))); return false; }