/// import { TextDocumentContentChangeEvent, TextDocumentSaveReason } from 'vscode-languageserver-protocol'; import { CancellationToken, CancellationTokenSource, DisposableCollection, Emitter, Event, Resource, ResourceVersion } from '@tartjs/core/lib/common'; import { Position, Range } from 'vscode-languageserver-types'; import { Saveable, SaveOptions } from '@tartjs/core/lib/browser/saveable'; import { MonacoToProtocolConverter } from './monaco-to-protocol-converter'; import { ProtocolToMonacoConverter } from './protocol-to-monaco-converter'; import { EditorPreferences } from '@tartjs/editor/lib/browser/editor-preference'; import { EncodingMode, FindMatch, FindMatchesOptions, TextEditorDocument } from '@tartjs/editor/lib/browser/editor'; export { TextDocumentSaveReason }; type ITextEditorModel = monaco.editor.ITextEditorModel; export interface WillSaveMonacoModelEvent { readonly model: MonacoEditorModel; readonly reason: TextDocumentSaveReason; readonly options?: SaveOptions; waitUntil(thenable: Thenable): void; } export interface MonacoModelContentChangedEvent { readonly model: MonacoEditorModel; readonly contentChanges: TextDocumentContentChangeEvent[]; } export declare class MonacoEditorModel implements ITextEditorModel, TextEditorDocument { protected readonly resource: Resource; protected readonly m2p: MonacoToProtocolConverter; protected readonly p2m: ProtocolToMonacoConverter; protected readonly editorPreferences?: EditorPreferences; autoSave: 'on' | 'off'; autoSaveDelay: number; suppressOpenEditorWhenDirty: boolean; lineNumbersMinChars: number; readonly onWillSaveLoopTimeOut = 1500; protected bufferSavedVersionId: number; protected model: monaco.editor.IModel; protected readonly resolveModel: Promise; protected readonly toDispose: DisposableCollection; protected readonly toDisposeOnAutoSave: DisposableCollection; protected readonly onDidChangeContentEmitter: Emitter; readonly onDidChangeContent: Event; protected readonly onDidSaveModelEmitter: Emitter; readonly onDidSaveModel: Event; protected readonly onWillSaveModelEmitter: Emitter; readonly onWillSaveModel: Event; protected readonly onDidChangeValidEmitter: Emitter; readonly onDidChangeValid: Event; protected readonly onDidChangeEncodingEmitter: Emitter; readonly onDidChangeEncoding: Event; protected resourceVersion: ResourceVersion | undefined; protected readonly onDirtyChangedEmitter: Emitter; protected pendingOperation: Promise; protected syncCancellationTokenSource: CancellationTokenSource; protected ignoreDirtyEdits: boolean; protected saveCancellationTokenSource: CancellationTokenSource; protected ignoreContentChanges: boolean; protected readonly contentChanges: TextDocumentContentChangeEvent[]; private preferredEncoding; private contentEncoding; constructor(resource: Resource, m2p: MonacoToProtocolConverter, p2m: ProtocolToMonacoConverter, editorPreferences?: EditorPreferences); /** * Use `valid` to access it. * Use `setValid` to mutate it. */ protected _valid: boolean; /** * Whether it is possible to load content from the underlying resource. */ get valid(): boolean; protected _dirty: boolean; get dirty(): boolean; get onDirtyChanged(): Event; get uri(): string; protected _languageId: string | undefined; get languageId(): string; get version(): number; get lineCount(): number; get readOnly(): boolean; get onDispose(): monaco.IEvent; get textEditorModel(): monaco.editor.IModel; dispose(): void; setEncoding(encoding: string, mode: EncodingMode): Promise; getEncoding(): string | undefined; /** * It's a hack to dispatch close notification with an old language id, don't use it. */ setLanguageId(languageId: string | undefined): void; /** * Return selected text by Range or all text by default */ getText(range?: Range): string; positionAt(offset: number): Position; offsetAt(position: Position): number; /** * Retrieves a line in a text document expressed as a one-based position. */ getLineContent(lineNumber: number): string; getLineMaxColumn(lineNumber: number): number; /** * Find all matches in an editor for the given options. * @param options the options for finding matches. * * @returns the list of matches. */ findMatches(options: FindMatchesOptions): FindMatch[]; load(): Promise; save(options?: SaveOptions): Promise; sync(): Promise; revert(options?: Saveable.RevertOptions): Promise; createSnapshot(): object; applySnapshot(snapshot: { value: string; }): void; protected setPreferredEncoding(encoding: string): boolean; protected updateContentEncoding(): void; /** * #### Important * Only this method can create an instance of `monaco.editor.IModel`, * there should not be other calls to `monaco.editor.createModel`. */ protected initialize(value: string | monaco.editor.ITextBufferFactory): void; protected setValid(valid: boolean): void; protected setDirty(dirty: boolean): void; protected run(operation: () => Promise): Promise; protected cancelSync(): CancellationToken; protected doSync(token: CancellationToken): Promise; protected readContents(): Promise; protected markAsDirty(): void; protected doAutoSave(): void; protected cancelSave(): CancellationToken; protected scheduleSave(reason: TextDocumentSaveReason, token?: CancellationToken, overwriteEncoding?: boolean, options?: SaveOptions): Promise; protected pushContentChanges(contentChanges: TextDocumentContentChangeEvent[]): void; protected fireDidChangeContent(event: monaco.editor.IModelContentChangedEvent): void; protected asContentChangedEvent(event: monaco.editor.IModelContentChangedEvent): MonacoModelContentChangedEvent; protected asTextDocumentContentChangeEvent(change: monaco.editor.IModelContentChange): TextDocumentContentChangeEvent; protected applyEdits(operations: monaco.editor.IIdentifiedSingleEditOperation[], options?: Partial): void; protected updateModel(doUpdate: () => T, options?: Partial): T; protected doSave(reason: TextDocumentSaveReason, token: CancellationToken, overwriteEncoding?: boolean, options?: SaveOptions): Promise; protected fireWillSaveModel(reason: TextDocumentSaveReason, token: CancellationToken, options?: SaveOptions): Promise; protected fireDidSaveModel(): void; protected trace(): void; private updateSavedVersionId; } export declare namespace MonacoEditorModel { interface ApplyEditsOptions { ignoreDirty: boolean; ignoreContentChanges: boolean; } }