@codingame/monaco-vscode-extensions-service-override
Version:
VSCode public API plugged on the monaco editor - extensions service-override
103 lines (99 loc) • 4.67 kB
JavaScript
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
import { basename } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
import { ITextModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/resolverService.service';
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
import { TextFileEditorModelState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/textfile/common/textfiles';
import { ITextFileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/textfile/common/textfiles.service';
var CustomTextEditorModel_1;
let CustomTextEditorModel = CustomTextEditorModel_1 = class CustomTextEditorModel extends Disposable {
static async create(instantiationService, viewType, resource) {
return instantiationService.invokeFunction(async accessor => {
const textModelResolverService = accessor.get(ITextModelService);
const model = await textModelResolverService.createModelReference(resource);
return instantiationService.createInstance(CustomTextEditorModel_1, viewType, resource, model);
});
}
constructor(
viewType,
_resource,
_model,
textFileService,
_labelService,
extensionService
) {
super();
this.viewType = viewType;
this._resource = _resource;
this._model = _model;
this.textFileService = textFileService;
this._labelService = _labelService;
this._onDidChangeOrphaned = this._register(( new Emitter()));
this.onDidChangeOrphaned = this._onDidChangeOrphaned.event;
this._onDidChangeReadonly = this._register(( new Emitter()));
this.onDidChangeReadonly = this._onDidChangeReadonly.event;
this._onDidChangeDirty = this._register(( new Emitter()));
this.onDidChangeDirty = this._onDidChangeDirty.event;
this._onDidChangeContent = this._register(( new Emitter()));
this.onDidChangeContent = this._onDidChangeContent.event;
this._register(_model);
this._textFileModel = this.textFileService.files.get(_resource);
if (this._textFileModel) {
this._register(
this._textFileModel.onDidChangeOrphaned(() => this._onDidChangeOrphaned.fire())
);
this._register(
this._textFileModel.onDidChangeReadonly(() => this._onDidChangeReadonly.fire())
);
}
this._register(this.textFileService.files.onDidChangeDirty(e => {
if (isEqual(this.resource, e.resource)) {
this._onDidChangeDirty.fire();
this._onDidChangeContent.fire();
}
}));
this._register(extensionService.onWillStop(e => {
e.veto(true, ( localize(
8487,
"An extension provided text editor for '{0}' is still open that would close otherwise.",
this.name
)));
}));
}
get resource() {
return this._resource;
}
get name() {
return basename(this._labelService.getUriLabel(this._resource));
}
isReadonly() {
return this._model.object.isReadonly();
}
get backupId() {
return undefined;
}
get canHotExit() {
return true;
}
isDirty() {
return this.textFileService.isDirty(this.resource);
}
isOrphaned() {
return !!this._textFileModel?.hasState(TextFileEditorModelState.ORPHAN);
}
async revert(options) {
return this.textFileService.revert(this.resource, options);
}
saveCustomEditor(options) {
return this.textFileService.save(this.resource, options);
}
async saveCustomEditorAs(resource, targetResource, options) {
return !!(await this.textFileService.saveAs(resource, targetResource, options));
}
};
CustomTextEditorModel = CustomTextEditorModel_1 = ( __decorate([( __param(3, ITextFileService)), ( __param(4, ILabelService)), ( __param(5, IExtensionService))], CustomTextEditorModel));
export { CustomTextEditorModel };