提交 5ef859f6 编写于 作者: J Johannes Rieken

use `getOrCreateMode` and move api to proposed-stage first

上级 bd02bdbc
......@@ -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;
......
......@@ -46,6 +46,5 @@ export interface IModeService {
getMode(commaSeparatedMimetypesOrCommaSeparatedIds: string): IMode;
getOrCreateMode(commaSeparatedMimetypesOrCommaSeparatedIds: string): TPromise<IMode>;
getOrCreateModeByLanguageName(languageName: string): TPromise<IMode>;
getOrCreateModeByLanguageId(modeId: string): TPromise<IMode>;
getOrCreateModeByFilenameOrFirstLine(filename: string, firstLine?: string): TPromise<IMode>;
}
......@@ -132,15 +132,6 @@ export class ModeServiceImpl implements IModeService {
});
}
public getOrCreateModeByLanguageId(modeId: string): TPromise<IMode> {
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);
......
......@@ -7375,8 +7375,6 @@ declare module 'vscode' {
*/
export namespace languages {
export function changeLanguage(document: TextDocument, languageId: string): Thenable<void>;
/**
* Return the identifiers of all known languages.
* @return Promise resolving to an array of identifier strings.
......
......@@ -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<any>;
}
export namespace languages {
/**
*
*/
export function changeLanguage(document: TextDocument, languageId: string): Thenable<void>;
}
//#region Rob: search provider
/**
......
......@@ -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<void>(new Error(`Unknown language id: ${languageId}`));
}
this._modelService.setMode(model, mode);
return undefined;
});
}
}
......@@ -259,6 +259,7 @@ export function createApiFactory(
return extHostLanguages.getLanguages();
},
changeLanguage(document: vscode.TextDocument, languageId: string): TPromise<void> {
checkProposedApiEnabled(extension);
return extHostLanguages.changeLanguage(document.uri, languageId);
},
match(selector: vscode.DocumentSelector, document: vscode.TextDocument): number {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册