Add two alternative language-changing interface functions

This commit is contained in:
mechatroner
2018-08-03 00:48:14 -04:00
parent 2582f425b6
commit 2eabbee449
11 changed files with 76 additions and 10 deletions

View File

@@ -5,7 +5,9 @@
'use strict';
import { TPromise } from 'vs/base/common/winjs.base';
import URI, { UriComponents } from 'vs/base/common/uri';
import { IModeService } from 'vs/editor/common/services/modeService';
import { IModelService } from 'vs/editor/common/services/modelService';
import { MainThreadLanguagesShape, MainContext, IExtHostContext } from '../node/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
@@ -13,12 +15,15 @@ import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostC
export class MainThreadLanguages implements MainThreadLanguagesShape {
private _modeService: IModeService;
private _modelService: IModelService;
constructor(
extHostContext: IExtHostContext,
@IModeService modeService: IModeService
@IModeService modeService: IModeService,
@IModelService modelService: IModelService
) {
this._modeService = modeService;
this._modelService = modelService;
}
public dispose(): void {
@@ -27,4 +32,15 @@ export class MainThreadLanguages implements MainThreadLanguagesShape {
$getLanguages(): TPromise<string[]> {
return TPromise.as(this._modeService.getRegisteredModes());
}
$setLanguageById(resource: UriComponents, languageId: string): TPromise<void> {
const uri = URI.revive(resource);
let model = this._modelService.getModel(uri);
if (!model) {
return TPromise.wrapError(new Error('Invalid uri'));
}
let mode = this._modeService.getOrCreateModeByLanguageId(languageId);
this._modelService.setMode(model, mode);
return TPromise.as(null);
}
}