From 5ef859f6fccfc3f552c437858ef725e2a9c57f91 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 27 Aug 2018 14:08:44 +0200 Subject: [PATCH] use `getOrCreateMode` and move api to proposed-stage first --- src/vs/editor/common/services/languagesRegistry.ts | 4 ---- src/vs/editor/common/services/modeService.ts | 1 - src/vs/editor/common/services/modeServiceImpl.ts | 9 --------- src/vs/vscode.d.ts | 2 -- src/vs/vscode.proposed.d.ts | 9 ++++++++- .../api/electron-browser/mainThreadLanguages.ts | 10 +++++++--- src/vs/workbench/api/node/extHost.api.impl.ts | 1 + 7 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/vs/editor/common/services/languagesRegistry.ts b/src/vs/editor/common/services/languagesRegistry.ts index 1b205df4857..2407a23a855 100644 --- a/src/vs/editor/common/services/languagesRegistry.ts +++ b/src/vs/editor/common/services/languagesRegistry.ts @@ -211,10 +211,6 @@ export class LanguagesRegistry { return Object.keys(this._nameMap); } - public isRegisteredModeExact(modeId: string): boolean { - return hasOwnProperty.call(this._languages, modeId); - } - public getLanguageName(modeId: string): string { if (!hasOwnProperty.call(this._languages, modeId)) { return null; diff --git a/src/vs/editor/common/services/modeService.ts b/src/vs/editor/common/services/modeService.ts index fa8e601c672..1ae09f60a3f 100644 --- a/src/vs/editor/common/services/modeService.ts +++ b/src/vs/editor/common/services/modeService.ts @@ -46,6 +46,5 @@ export interface IModeService { getMode(commaSeparatedMimetypesOrCommaSeparatedIds: string): IMode; getOrCreateMode(commaSeparatedMimetypesOrCommaSeparatedIds: string): TPromise; getOrCreateModeByLanguageName(languageName: string): TPromise; - getOrCreateModeByLanguageId(modeId: string): TPromise; getOrCreateModeByFilenameOrFirstLine(filename: string, firstLine?: string): TPromise; } diff --git a/src/vs/editor/common/services/modeServiceImpl.ts b/src/vs/editor/common/services/modeServiceImpl.ts index fb39206e64b..e9ad869c00d 100644 --- a/src/vs/editor/common/services/modeServiceImpl.ts +++ b/src/vs/editor/common/services/modeServiceImpl.ts @@ -132,15 +132,6 @@ export class ModeServiceImpl implements IModeService { }); } - public getOrCreateModeByLanguageId(modeId: string): TPromise { - return this._onReady().then(() => { - if (!this._registry.isRegisteredModeExact(modeId)) { - modeId = 'plaintext'; - } - return this._getOrCreateMode(modeId); - }); - } - private _getModeIdByLanguageName(languageName: string): string { const modeIds = this._registry.getModeIdsFromLanguageName(languageName); diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 53b0914085c..607f418e181 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -7375,8 +7375,6 @@ declare module 'vscode' { */ export namespace languages { - export function changeLanguage(document: TextDocument, languageId: string): Thenable; - /** * Return the identifiers of all known languages. * @return Promise resolving to an array of identifier strings. diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 59949ab60c9..3a2231552c5 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -5,7 +5,6 @@ // This is the place for API experiments and proposal. -import { QuickPickItem } from 'vscode'; declare module 'vscode' { @@ -13,6 +12,14 @@ declare module 'vscode' { export function sampleFunction(): Thenable; } + export namespace languages { + + /** + * + */ + export function changeLanguage(document: TextDocument, languageId: string): Thenable; + } + //#region Rob: search provider /** diff --git a/src/vs/workbench/api/electron-browser/mainThreadLanguages.ts b/src/vs/workbench/api/electron-browser/mainThreadLanguages.ts index e23ae89db8f..a2637e73c3e 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadLanguages.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadLanguages.ts @@ -39,8 +39,12 @@ export class MainThreadLanguages implements MainThreadLanguagesShape { if (!model) { return TPromise.wrapError(new Error('Invalid uri')); } - let mode = this._modeService.getOrCreateModeByLanguageId(languageId); - this._modelService.setMode(model, mode); - return TPromise.as(null); + return this._modeService.getOrCreateMode(languageId).then(mode => { + if (mode.getId() !== languageId) { + return TPromise.wrapError(new Error(`Unknown language id: ${languageId}`)); + } + this._modelService.setMode(model, mode); + return undefined; + }); } } diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index ac686a4878f..d976ff3289e 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -259,6 +259,7 @@ export function createApiFactory( return extHostLanguages.getLanguages(); }, changeLanguage(document: vscode.TextDocument, languageId: string): TPromise { + checkProposedApiEnabled(extension); return extHostLanguages.changeLanguage(document.uri, languageId); }, match(selector: vscode.DocumentSelector, document: vscode.TextDocument): number { -- GitLab