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