UNPKG

@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
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 };