/// export namespace Ace { export type NewLineMode = 'auto' | 'unix' | 'windows'; export interface Anchor extends EventEmitter { getPosition(): Position; getDocument(): Document; setPosition(row: number, column: number, noClip?: boolean): void; detach(): void; attach(doc: Document): void; } export interface Document extends EventEmitter { setValue(text: string): void; getValue(): string; createAnchor(row: number, column: number): Anchor; getNewLineCharacter(): string; setNewLineMode(newLineMode: NewLineMode): void; getNewLineMode(): NewLineMode; isNewLine(text: string): boolean; getLine(row: number): string; getLines(firstRow: number, lastRow: number): string[]; getAllLines(): string[]; getLength(): number; getTextRange(range: Range): string; getLinesForRange(range: Range): string[]; insert(position: Position, text: string): Position; insert(position: {row: number, column: number}, text: string): Position; insertInLine(position: Position, text: string): Position; insertNewLine(position: Point): Point; clippedPos(row: number, column: number): Point; clonePos(pos: Point): Point; pos(row: number, column: number): Point; insertFullLines(row: number, lines: string[]): void; insertMergedLines(position: Position, lines: string[]): Point; remove(range: Range): Position; removeInLine(row: number, startColumn: number, endColumn: number): Position; removeFullLines(firstRow: number, lastRow: number): string[]; removeNewLine(row: number): void; replace(range: Range, text: string): Position; applyDeltas(deltas: Delta[]): void; revertDeltas(deltas: Delta[]): void; applyDelta(delta: Delta, doNotValidate?: boolean): void; revertDelta(delta: Delta): void; indexToPosition(index: number, startRow: number): Position; positionToIndex(pos: Position, startRow?: number): number; } export interface FoldLine { folds: Fold[]; range: Range; start: Point; end: Point; shiftRow(shift: number): void; addFold(fold: Fold): void; containsRow(row: number): boolean; walk(callback: Function, endRow?: number, endColumn?: number): void; getNextFoldTo(row: number, column: number): null | { fold: Fold, kind: string }; addRemoveChars(row: number, column: number, len: number): void; split(row: number, column: number): FoldLine; merge(foldLineNext: FoldLine): void; idxToPosition(idx: number): Point; } export interface Fold { range: Range; start: Point; end: Point; foldLine?: FoldLine; sameRow: boolean; subFolds: Fold[]; setFoldLine(foldLine: FoldLine): void; clone(): Fold; addSubFold(fold: Fold): Fold; restoreRange(range: Range): void; } interface Folding { getFoldAt(row: number, column: number, side: number): Fold; getFoldsInRange(range: Range): Fold[]; getFoldsInRangeList(ranges: Range[]): Fold[]; getAllFolds(): Fold[]; getFoldStringAt(row: number, column: number, trim?: number, foldLine?: FoldLine): string | null; getFoldLine(docRow: number, startFoldLine?: FoldLine): FoldLine | null; getNextFoldLine(docRow: number, startFoldLine?: FoldLine): FoldLine | null; getFoldedRowCount(first: number, last: number): number; addFold(placeholder: string | Fold, range?: Range): Fold; addFolds(folds: Fold[]): void; removeFold(fold: Fold): void; removeFolds(folds: Fold[]): void; expandFold(fold: Fold): void; expandFolds(folds: Fold[]): void; unfold(location: null | number | Point | Range, expandInner?: boolean): Fold[] | undefined; isRowFolded(docRow: number, startFoldRow?: FoldLine): boolean; getFoldRowEnd(docRow: number, startFoldRow?: FoldLine): number; getFoldRowStart(docRow: number, startFoldRow?: FoldLine): number; getFoldDisplayLine(foldLine: FoldLine, endRow: number | null, endColumn: number | null, startRow: number | null, startColumn: number | null): string; getDisplayLine(row: number, endColumn: number | null, startRow: number | null, startColumn: number | null): string; toggleFold(tryToUnfold?: boolean): void; getCommentFoldRange(row: number, column: number, dir: number): Range | undefined; foldAll(startRow?: number, endRow?: number, depth?: number): void; setFoldStyle(style: string): void; getParentFoldRangeData(row: number, ignoreCurrent?: boolean): { range?: Range, firstRange: Range }; toggleFoldWidget(toggleParent?: boolean): void; updateFoldWidgets(delta: Delta): void; } export interface Range { start: Point; end: Point; isEqual(range: Range): boolean; toString(): string; contains(row: number, column: number): boolean; compareRange(range: Range): number; comparePoint(p: Point): number; containsRange(range: Range): boolean; intersects(range: Range): boolean; isEnd(row: number, column: number): boolean; isStart(row: number, column: number): boolean; setStart(row: number, column: number): void; setEnd(row: number, column: number): void; inside(row: number, column: number): boolean; insideStart(row: number, column: number): boolean; insideEnd(row: number, column: number): boolean; compare(row: number, column: number): number; compareStart(row: number, column: number): number; compareEnd(row: number, column: number): number; compareInside(row: number, column: number): number; clipRows(firstRow: number, lastRow: number): Range; extend(row: number, column: number): Range; isEmpty(): boolean; isMultiLine(): boolean; clone(): Range; collapseRows(): Range; toScreenRange(session: EditSession): Range; moveBy(row: number, column: number): void; } export interface EditSessionOptions { wrap: "off" | "free" | "printmargin" | boolean | number; wrapMethod: 'code' | 'text' | 'auto'; indentedSoftWrap: boolean; firstLineNumber: number; useWorker: boolean; useSoftTabs: boolean; tabSize: number; navigateWithinSoftTabs: boolean; foldStyle: 'markbegin' | 'markbeginend' | 'manual'; overwrite: boolean; newLineMode: NewLineMode; mode: string; } export interface VirtualRendererOptions { animatedScroll: boolean; showInvisibles: boolean; showPrintMargin: boolean; printMarginColumn: number; printMargin: boolean | number; showGutter: boolean; fadeFoldWidgets: boolean; showFoldWidgets: boolean; showLineNumbers: boolean; displayIndentGuides: boolean; highlightIndentGuides: boolean; highlightGutterLine: boolean; hScrollBarAlwaysVisible: boolean; vScrollBarAlwaysVisible: boolean; fontSize: number; fontFamily: string; maxLines: number; minLines: number; scrollPastEnd: boolean; fixedWidthGutter: boolean; customScrollbar: boolean; theme: string; hasCssTransforms: boolean; maxPixelHeight: number; useSvgGutterIcons: boolean; showFoldedAnnotations: boolean; } export interface MouseHandlerOptions { scrollSpeed: number; dragDelay: number; dragEnabled: boolean; focusTimeout: number; tooltipFollowsMouse: boolean; } export interface EditorOptions extends EditSessionOptions, MouseHandlerOptions, VirtualRendererOptions { selectionStyle: string; highlightActiveLine: boolean; highlightSelectedWord: boolean; readOnly: boolean; copyWithEmptySelection: boolean; cursorStyle: 'ace' | 'slim' | 'smooth' | 'wide'; mergeUndoDeltas: true | false | 'always'; behavioursEnabled: boolean; wrapBehavioursEnabled: boolean; enableAutoIndent: boolean; enableBasicAutocompletion: boolean | Completer[]; enableLiveAutocompletion: boolean | Completer[]; liveAutocompletionDelay: number; liveAutocompletionThreshold: number; enableSnippets: boolean; autoScrollEditorIntoView: boolean; keyboardHandler: string | null; placeholder: string; value: string; session: EditSession; relativeLineNumbers: boolean; enableMultiselect: boolean; enableKeyboardAccessibility: boolean; } export interface SearchOptions { needle: string | RegExp; preventScroll: boolean; backwards: boolean; start: Range; skipCurrent: boolean; range: Range; preserveCase: boolean; regExp: boolean; wholeWord: boolean; caseSensitive: boolean; wrap: boolean; } export interface EventEmitter { once(name: string, callback: Function): void; setDefaultHandler(name: string, callback: Function): void; removeDefaultHandler(name: string, callback: Function): void; on(name: string, callback: Function, capturing?: boolean): void; addEventListener(name: string, callback: Function, capturing?: boolean): void; off(name: string, callback: Function): void; removeListener(name: string, callback: Function): void; removeEventListener(name: string, callback: Function): void; removeAllListeners(name?: string): void; } export interface Point { row: number; column: number; } export interface Delta { action: 'insert' | 'remove'; start: Point; end: Point; lines: string[]; } export interface Annotation { row?: number; column?: number; text: string; type: string; } export interface MarkerGroupItem { range: Range; className: string; } export class MarkerGroup { constructor(session: EditSession); setMarkers(markers: MarkerGroupItem[]): void; getMarkerAtPosition(pos: Position): MarkerGroupItem; } export interface Command { name?: string; bindKey?: string | { mac?: string, win?: string }; readOnly?: boolean; exec: (editor: Editor, args?: any) => void; } export type CommandLike = Command | ((editor: Editor) => void); export interface KeyboardHandler { handleKeyboard: Function; } export interface MarkerLike { range?: Range; type: string; renderer?: MarkerRenderer; clazz: string; inFront: boolean; id: number; update?: (html: string[], // TODO maybe define Marker class marker: any, session: EditSession, config: any) => void; } export type MarkerRenderer = (html: string[], range: Range, left: number, top: number, config: any) => void; export interface Token { type: string; value: string; index?: number; start?: number; } interface BaseCompletion { score?: number; meta?: string; caption?: string; docHTML?: string; docText?: string; completerId?: string; } export interface SnippetCompletion extends BaseCompletion { snippet: string; } export interface ValueCompletion extends BaseCompletion { value: string; } export type Completion = SnippetCompletion | ValueCompletion export interface Tokenizer { removeCapturingGroups(src: string): string; createSplitterRegexp(src: string, flag?: string): RegExp; getLineTokens(line: string, startState: string | string[]): Token[]; } interface TokenIterator { getCurrentToken(): Token; getCurrentTokenColumn(): number; getCurrentTokenRow(): number; getCurrentTokenPosition(): Point; getCurrentTokenRange(): Range; stepBackward(): Token; stepForward(): Token; } export type HighlightRule = {defaultToken: string} | {include: string} | {todo: string} | { token: string | string[] | ((value: string) => string); regex: string | RegExp; next?: string; push?: string; comment?: string; caseInsensitive?: boolean; } export type HighlightRulesMap = Record; export type KeywordMapper = (keyword: string) => string; export interface HighlightRules { addRules(rules: HighlightRulesMap, prefix?: string): void; getRules(): HighlightRulesMap; embedRules(rules: (new () => HighlightRules) | HighlightRulesMap, prefix: string, escapeRules?: boolean, append?: boolean): void; getEmbeds(): string[]; normalizeRules(): void; createKeywordMapper(map: Record, defaultToken?: string, ignoreCase?: boolean, splitChar?: string): KeywordMapper; } export interface FoldMode { foldingStartMarker: RegExp; foldingStopMarker?: RegExp; getFoldWidget(session: EditSession, foldStyle: string, row: number): string; getFoldWidgetRange(session: EditSession, foldStyle: string, row: number, forceMultiline?: boolean): Range | undefined; indentationBlock(session: EditSession, row: number, column?: number): Range | undefined; openingBracketBlock(session: EditSession, bracket: string, row: number, column: number, typeRe?: RegExp): Range | undefined; closingBracketBlock(session: EditSession, bracket: string, row: number, column: number, typeRe?: RegExp): Range | undefined; } type BehaviorAction = (state: string, action: string, editor: Editor, session: EditSession, text: string) => {text: string, selection: number[]} | Range | undefined; type BehaviorMap = Record>; export interface Behaviour { add(name: string, action: string, callback: BehaviorAction): void; addBehaviours(behaviours: BehaviorMap): void; remove(name: string): void; inherit(mode: SyntaxMode | (new () => SyntaxMode), filter: string[]): void; getBehaviours(filter: string[]): BehaviorMap; } export interface Outdent { checkOutdent(line: string, input: string): boolean; autoOutdent(doc: Document, row: number): number | undefined; } export interface SyntaxMode { HighlightRules: new () => HighlightRules; foldingRules?: FoldMode; $behaviour?: Behaviour; $defaultBehaviour?: Behaviour; lineCommentStart?: string; getTokenizer(): Tokenizer; toggleCommentLines(state: any, session: EditSession, startRow: number, endRow: number): void; toggleBlockComment(state: any, session: EditSession, range: Range, cursor: Point): void; getNextLineIndent(state: any, line: string, tab: string): string; checkOutdent(state: any, line: string, input: string): boolean; autoOutdent(state: any, doc: Document, row: number): void; // TODO implement WorkerClient types createWorker(session: EditSession): any; createModeDelegates(mapping: { [key: string]: string }): void; transformAction: BehaviorAction; getKeywords(append?: boolean): Array; getCompletions(state: string, session: EditSession, pos: Point, prefix: string): Completion[]; } type AfterLoadCallback = (err: Error | null, module: unknown) => void; type LoaderFunction = (moduleName: string, afterLoad: AfterLoadCallback) => void; export interface Config { get(key: string): any; set(key: string, value: any): void; all(): { [key: string]: any }; moduleUrl(name: string, component?: string): string; setModuleUrl(name: string, subst: string): string; setLoader(cb: LoaderFunction): void; setModuleLoader(name: string, onLoad: Function): void; loadModule(moduleName: string | [string, string], onLoad?: (module: any) => void): void; init(packaged: any): any; defineOptions(obj: any, path: string, options: { [key: string]: any }): Config; resetOptions(obj: any): void; setDefaultValue(path: string, name: string, value: any): void; setDefaultValues(path: string, optionHash: { [key: string]: any }): void; } export interface OptionsProvider { setOptions(optList: { [key: string]: any }): void; getOptions(optionNames?: string[] | { [key: string]: any }): { [key: string]: any }; setOption(name: string, value: any): void; getOption(name: string): any; } export interface UndoManager { addSession(session: EditSession): void; add(delta: Delta, allowMerge: boolean, session: EditSession): void; addSelection(selection: string, rev?: number): void; startNewGroup(): void; markIgnored(from: number, to?: number): void; getSelection(rev: number, after?: boolean): { value: string, rev: number }; getRevision(): number; getDeltas(from: number, to?: number): Delta[]; undo(session: EditSession, dontSelect?: boolean): void; redo(session: EditSession, dontSelect?: boolean): void; reset(): void; canUndo(): boolean; canRedo(): boolean; bookmark(rev?: number): void; isAtBookmark(): boolean; hasUndo(): boolean; hasRedo(): boolean; isClean(): boolean; markClean(rev?: number): void; } export interface Position { row: number, column: number } export interface EditSession extends EventEmitter, OptionsProvider, Folding { selection: Selection; // TODO: define BackgroundTokenizer on(name: 'changeFold', callback: (obj: { data: Fold, action: string }) => void): Function; on(name: 'changeScrollLeft', callback: (scrollLeft: number) => void): Function; on(name: 'changeScrollTop', callback: (scrollTop: number) => void): Function; on(name: 'tokenizerUpdate', callback: (obj: { data: { first: number, last: number } }) => void): Function; on(name: 'change', callback: () => void): Function; on(name: 'changeTabSize', callback: () => void): Function; setOption(name: T, value: EditSessionOptions[T]): void; getOption(name: T): EditSessionOptions[T]; readonly doc: Document; setDocument(doc: Document): void; getDocument(): Document; resetCaches(): void; setValue(text: string): void; getValue(): string; getSelection(): Selection; getState(row: number): string; getTokens(row: number): Token[]; getTokenAt(row: number, column: number): Token | null; setUndoManager(undoManager: UndoManager): void; markUndoGroup(): void; getUndoManager(): UndoManager; getTabString(): string; setUseSoftTabs(val: boolean): void; getUseSoftTabs(): boolean; setTabSize(tabSize: number): void; getTabSize(): number; isTabStop(position: Position): boolean; setNavigateWithinSoftTabs(navigateWithinSoftTabs: boolean): void; getNavigateWithinSoftTabs(): boolean; setOverwrite(overwrite: boolean): void; getOverwrite(): boolean; toggleOverwrite(): void; addGutterDecoration(row: number, className: string): void; removeGutterDecoration(row: number, className: string): void; getBreakpoints(): string[]; setBreakpoints(rows: number[]): void; clearBreakpoints(): void; setBreakpoint(row: number, className: string): void; clearBreakpoint(row: number): void; addMarker(range: Range, className: string, type: "fullLine" | "screenLine" | "text" | MarkerRenderer, inFront?: boolean): number; addDynamicMarker(marker: MarkerLike, inFront: boolean): MarkerLike; removeMarker(markerId: number): void; getMarkers(inFront?: boolean): {[id: number]: MarkerLike}; highlight(re: RegExp): void; highlightLines(startRow: number, endRow: number, className: string, inFront?: boolean): Range; setAnnotations(annotations: Annotation[]): void; getAnnotations(): Annotation[]; clearAnnotations(): void; getWordRange(row: number, column: number): Range; getAWordRange(row: number, column: number): Range; setNewLineMode(newLineMode: NewLineMode): void; getNewLineMode(): NewLineMode; setUseWorker(useWorker: boolean): void; getUseWorker(): boolean; setMode(mode: string | SyntaxMode, callback?: () => void): void; getMode(): SyntaxMode; setScrollTop(scrollTop: number): void; getScrollTop(): number; setScrollLeft(scrollLeft: number): void; getScrollLeft(): number; getScreenWidth(): number; getLineWidgetMaxWidth(): number; getLine(row: number): string; getLines(firstRow: number, lastRow: number): string[]; getLength(): number; getTextRange(range: Range): string; insert(position: Position, text: string): void; remove(range: Range): void; removeFullLines(firstRow: number, lastRow: number): void; undoChanges(deltas: Delta[], dontSelect?: boolean): void; redoChanges(deltas: Delta[], dontSelect?: boolean): void; setUndoSelect(enable: boolean): void; replace(range: Range, text: string): void; moveText(fromRange: Range, toPosition: Position, copy?: boolean): void; indentRows(startRow: number, endRow: number, indentString: string): void; outdentRows(range: Range): void; moveLinesUp(firstRow: number, lastRow: number): void; moveLinesDown(firstRow: number, lastRow: number): void; duplicateLines(firstRow: number, lastRow: number): void; setUseWrapMode(useWrapMode: boolean): void; getUseWrapMode(): boolean; setWrapLimitRange(min: number, max: number): void; adjustWrapLimit(desiredLimit: number): boolean; getWrapLimit(): number; setWrapLimit(limit: number): void; getWrapLimitRange(): { min: number, max: number }; getRowLineCount(row: number): number; getRowWrapIndent(screenRow: number): number; getScreenLastRowColumn(screenRow: number): number; getDocumentLastRowColumn(docRow: number, docColumn: number): number; getdocumentLastRowColumnPosition(docRow: number, docColumn: number): Position; getRowSplitData(row: number): string | undefined; getScreenTabSize(screenColumn: number): number; screenToDocumentRow(screenRow: number, screenColumn: number): number; screenToDocumentColumn(screenRow: number, screenColumn: number): number; screenToDocumentPosition(screenRow: number, screenColumn: number, offsetX?: number): Position; documentToScreenPosition(docRow: number, docColumn: number): Position; documentToScreenPosition(position: Position): Position; documentToScreenColumn(row: number, docColumn: number): number; documentToScreenRow(docRow: number, docColumn: number): number; getScreenLength(): number; destroy(): void; } export interface KeyBinding { setDefaultHandler(handler: KeyboardHandler): void; setKeyboardHandler(handler: KeyboardHandler): void; addKeyboardHandler(handler: KeyboardHandler, pos?: number): void; removeKeyboardHandler(handler: KeyboardHandler): boolean; getKeyboardHandler(): KeyboardHandler; getStatusText(): string; onCommandKey(e: any, hashId: number, keyCode: number): boolean; onTextInput(text: string): boolean; } interface CommandMap { [name: string]: Command; } type execEventHandler = (obj: { editor: Editor, command: Command, args: any[] }) => void; export interface CommandManager extends EventEmitter { byName: CommandMap, commands: CommandMap, on(name: 'exec', callback: execEventHandler): Function; on(name: 'afterExec', callback: execEventHandler): Function; once(name: string, callback: Function): void; setDefaultHandler(name: string, callback: Function): void; removeDefaultHandler(name: string, callback: Function): void; on(name: string, callback: Function, capturing?: boolean): void; addEventListener(name: string, callback: Function, capturing?: boolean): void; off(name: string, callback: Function): void; removeListener(name: string, callback: Function): void; removeEventListener(name: string, callback: Function): void; exec(command: string, editor: Editor, args: any): boolean; toggleRecording(editor: Editor): void; replay(editor: Editor): void; addCommand(command: Command): void; addCommands(command: Command[]): void; removeCommand(command: Command | string, keepCommand?: boolean): void; removeCommands(command: Command[]): void; bindKey(key: string | { mac?: string, win?: string}, command: CommandLike, position?: number): void; bindKeys(keys: {[s: string]: Function}): void; parseKeys(keyPart: string): {key: string, hashId: number}; findKeyCommand(hashId: number, keyString: string): string | undefined; handleKeyboard(data: {}, hashId: number, keyString: string, keyCode: string | number): void | {command: string}; getStatusText(editor: Editor, data: {}): string; } export interface VirtualRenderer extends OptionsProvider, EventEmitter { readonly container: HTMLElement; readonly scroller: HTMLElement; readonly content: HTMLElement; readonly characterWidth: number; readonly lineHeight: number; readonly scrollLeft: number; readonly scrollTop: number; readonly $padding: number; setOption(name: T, value: VirtualRendererOptions[T]): void; getOption(name: T): VirtualRendererOptions[T]; setSession(session: EditSession): void; updateLines(firstRow: number, lastRow: number, force?: boolean): void; updateText(): void; updateFull(force?: boolean): void; updateFontSize(): void; adjustWrapLimit(): boolean; setAnimatedScroll(shouldAnimate: boolean): void; getAnimatedScroll(): boolean; setShowInvisibles(showInvisibles: boolean): void; getShowInvisibles(): boolean; setDisplayIndentGuides(display: boolean): void; getDisplayIndentGuides(): boolean; setShowPrintMargin(showPrintMargin: boolean): void; getShowPrintMargin(): boolean; setPrintMarginColumn(showPrintMargin: boolean): void; getPrintMarginColumn(): boolean; setShowGutter(show: boolean): void; getShowGutter(): boolean; setFadeFoldWidgets(show: boolean): void; getFadeFoldWidgets(): boolean; setHighlightGutterLine(shouldHighlight: boolean): void; getHighlightGutterLine(): boolean; getContainerElement(): HTMLElement; getMouseEventTarget(): HTMLElement; getTextAreaContainer(): HTMLElement; getFirstVisibleRow(): number; getFirstFullyVisibleRow(): number; getLastFullyVisibleRow(): number; getLastVisibleRow(): number; setPadding(padding: number): void; setScrollMargin(top: number, bottom: number, left: number, right: number): void; setHScrollBarAlwaysVisible(alwaysVisible: boolean): void; getHScrollBarAlwaysVisible(): boolean; setVScrollBarAlwaysVisible(alwaysVisible: boolean): void; getVScrollBarAlwaysVisible(): boolean; freeze(): void; unfreeze(): void; updateFrontMarkers(): void; updateBackMarkers(): void; updateBreakpoints(): void; setAnnotations(annotations: Annotation[]): void; updateCursor(): void; hideCursor(): void; showCursor(): void; scrollSelectionIntoView(anchor: Position, lead: Position, offset?: number): void; scrollCursorIntoView(cursor: Position, offset?: number): void; getScrollTop(): number; getScrollLeft(): number; getScrollTopRow(): number; getScrollBottomRow(): number; scrollToRow(row: number): void; alignCursor(cursor: Position | number, alignment: number): number; scrollToLine(line: number, center: boolean, animate: boolean, callback: () => void): void; animateScrolling(fromValue: number, callback: () => void): void; scrollToY(scrollTop: number): void; scrollToX(scrollLeft: number): void; scrollTo(x: number, y: number): void; scrollBy(deltaX: number, deltaY: number): void; isScrollableBy(deltaX: number, deltaY: number): boolean; textToScreenCoordinates(row: number, column: number): { pageX: number, pageY: number}; pixelToScreenCoordinates(x: number, y: number): {row: number, column: number, side: 1|-1, offsetX: number}; visualizeFocus(): void; visualizeBlur(): void; showComposition(position: number): void; setCompositionText(text: string): void; hideComposition(): void; setGhostText(text: string, position: Point): void; removeGhostText(): void; setTheme(theme: string, callback?: () => void): void; getTheme(): string; setStyle(style: string, include?: boolean): void; unsetStyle(style: string): void; setCursorStyle(style: string): void; setMouseCursor(cursorStyle: string): void; attachToShadowRoot(): void; destroy(): void; } export interface Selection extends EventEmitter { moveCursorWordLeft(): void; moveCursorWordRight(): void; fromOrientedRange(range: Range): void; setSelectionRange(match: any): void; getAllRanges(): Range[]; addRange(range: Range): void; isEmpty(): boolean; isMultiLine(): boolean; setCursor(row: number, column: number): void; setAnchor(row: number, column: number): void; getAnchor(): Position; getCursor(): Position; isBackwards(): boolean; getRange(): Range; clearSelection(): void; selectAll(): void; setRange(range: Range, reverse?: boolean): void; selectTo(row: number, column: number): void; selectToPosition(pos: any): void; selectUp(): void; selectDown(): void; selectRight(): void; selectLeft(): void; selectLineStart(): void; selectLineEnd(): void; selectFileEnd(): void; selectFileStart(): void; selectWordRight(): void; selectWordLeft(): void; getWordRange(): void; selectWord(): void; selectAWord(): void; selectLine(): void; moveCursorUp(): void; moveCursorDown(): void; moveCursorLeft(): void; moveCursorRight(): void; moveCursorLineStart(): void; moveCursorLineEnd(): void; moveCursorFileEnd(): void; moveCursorFileStart(): void; moveCursorLongWordRight(): void; moveCursorLongWordLeft(): void; moveCursorBy(rows: number, chars: number): void; moveCursorToPosition(position: any): void; moveCursorTo(row: number, column: number, keepDesiredColumn?: boolean): void; moveCursorToScreen(row: number, column: number, keepDesiredColumn: boolean): void; toJSON(): SavedSelection | SavedSelection[]; fromJSON(selection: SavedSelection | SavedSelection[]): void; } interface SavedSelection { start: Point; end: Point; isBackwards: boolean; } var Selection: { new(session: EditSession): Selection; } export interface TextInput { resetSelection(): void; setAriaOption(activeDescendant: string, role: string): void; } export interface Editor extends OptionsProvider, EventEmitter { container: HTMLElement; renderer: VirtualRenderer; id: string; commands: CommandManager; keyBinding: KeyBinding; session: EditSession; selection: Selection; textInput: TextInput; on(name: 'blur', callback: (e: Event) => void): void; on(name: 'input', callback: () => void): void; on(name: 'change', callback: (delta: Delta) => void): void; on(name: 'changeSelectionStyle', callback: (obj: { data: string }) => void): void; on(name: 'changeSession', callback: (obj: { session: EditSession, oldSession: EditSession }) => void): void; on(name: 'copy', callback: (obj: { text: string }) => void): void; on(name: 'focus', callback: (e: Event) => void): void; on(name: 'paste', callback: (obj: { text: string }) => void): void; on(name: 'mousemove', callback: (e: any) => void): void; on(name: 'mouseup', callback: (e: any) => void): void; on(name: 'mousewheel', callback: (e: any) => void): void; on(name: 'click', callback: (e: any) => void): void; on(name: 'guttermousedown', callback: (e: any) => void): void; on(name: 'gutterkeydown', callback: (e: any) => void): void; onPaste(text: string, event: any): void; setOption(name: T, value: EditorOptions[T]): void; getOption(name: T): EditorOptions[T]; setKeyboardHandler(keyboardHandler: string, callback?: () => void): void; setKeyboardHandler(keyboardHandler: KeyboardHandler|null): void; getKeyboardHandler(): string; setSession(session: EditSession | undefined): void; getSession(): EditSession; setValue(val: string, cursorPos?: number): string; getValue(): string; getSelection(): Selection; resize(force?: boolean): void; setTheme(theme: string, callback?: () => void): void; getTheme(): string; setStyle(style: string): void; unsetStyle(style: string): void; getFontSize(): string; setFontSize(size: number|string): void; focus(): void; isFocused(): boolean; blur(): void; getSelectedText(): string; getCopyText(): string; execCommand(command: string | string[], args?: any): boolean; insert(text: string, pasted?: boolean): void; setOverwrite(overwrite: boolean): void; getOverwrite(): boolean; toggleOverwrite(): void; setScrollSpeed(speed: number): void; getScrollSpeed(): number; setDragDelay(dragDelay: number): void; getDragDelay(): number; setSelectionStyle(val: string): void; getSelectionStyle(): string; setHighlightActiveLine(shouldHighlight: boolean): void; getHighlightActiveLine(): boolean; setHighlightGutterLine(shouldHighlight: boolean): void; getHighlightGutterLine(): boolean; setHighlightSelectedWord(shouldHighlight: boolean): void; getHighlightSelectedWord(): boolean; setAnimatedScroll(shouldAnimate: boolean): void; getAnimatedScroll(): boolean; setShowInvisibles(showInvisibles: boolean): void; getShowInvisibles(): boolean; setDisplayIndentGuides(display: boolean): void; getDisplayIndentGuides(): boolean; setShowPrintMargin(showPrintMargin: boolean): void; getShowPrintMargin(): boolean; setPrintMarginColumn(showPrintMargin: number): void; getPrintMarginColumn(): number; setReadOnly(readOnly: boolean): void; getReadOnly(): boolean; setBehavioursEnabled(enabled: boolean): void; getBehavioursEnabled(): boolean; setWrapBehavioursEnabled(enabled: boolean): void; getWrapBehavioursEnabled(): boolean; setShowFoldWidgets(show: boolean): void; getShowFoldWidgets(): boolean; setFadeFoldWidgets(fade: boolean): void; getFadeFoldWidgets(): boolean; remove(dir?: 'left' | 'right'): void; removeWordRight(): void; removeWordLeft(): void; removeLineToEnd(): void; splitLine(): void; setGhostText(text: string, position: Point): void; removeGhostText(): void; transposeLetters(): void; toLowerCase(): void; toUpperCase(): void; indent(): void; blockIndent(): void; blockOutdent(): void; sortLines(): void; toggleCommentLines(): void; toggleBlockComment(): void; modifyNumber(amount: number): void; removeLines(): void; duplicateSelection(): void; moveLinesDown(): void; moveLinesUp(): void; moveText(range: Range, toPosition: Point, copy?: boolean): Range; copyLinesUp(): void; copyLinesDown(): void; getFirstVisibleRow(): number; getLastVisibleRow(): number; isRowVisible(row: number): boolean; isRowFullyVisible(row: number): boolean; selectPageDown(): void; selectPageUp(): void; gotoPageDown(): void; gotoPageUp(): void; scrollPageDown(): void; scrollPageUp(): void; scrollToRow(row: number): void; scrollToLine(line: number, center: boolean, animate: boolean, callback: () => void): void; centerSelection(): void; getCursorPosition(): Point; getCursorPositionScreen(): Point; getSelectionRange(): Range; selectAll(): void; clearSelection(): void; moveCursorTo(row: number, column: number): void; moveCursorToPosition(pos: Point): void; jumpToMatching(select: boolean, expand: boolean): void; gotoLine(lineNumber: number, column: number, animate: boolean): void; navigateTo(row: number, column: number): void; navigateUp(times?: number): void; navigateDown(times?: number): void; navigateLeft(times?: number): void; navigateRight(times?: number): void; navigateLineStart(): void; navigateLineEnd(): void; navigateFileEnd(): void; navigateFileStart(): void; navigateWordRight(): void; navigateWordLeft(): void; replace(replacement: string, options?: Partial): number; replaceAll(replacement: string, options?: Partial): number; getLastSearchOptions(): Partial; find(needle: string | RegExp, options?: Partial, animate?: boolean): Ace.Range | undefined; findNext(options?: Partial, animate?: boolean): void; findPrevious(options?: Partial, animate?: boolean): void; findAll(needle: string | RegExp, options?: Partial, additive?: boolean): number; undo(): void; redo(): void; destroy(): void; setAutoScrollEditorIntoView(enable: boolean): void; completers: Completer[]; } type CompleterCallback = (error: any, completions: Completion[]) => void; interface Completer { identifierRegexps?: Array, getCompletions(editor: Editor, session: EditSession, position: Point, prefix: string, callback: CompleterCallback): void; getDocTooltip?(item: Completion): undefined | string | Completion; cancel?(): void; id?: string; triggerCharacters?: string[] } export class AceInline { show(editor: Editor, completion: Completion, prefix: string): void; isOpen(): void; hide(): void; destroy(): void; } interface CompletionOptions { matches?: Completion[]; } type CompletionProviderOptions = { exactMatch?: boolean; ignoreCaption?: boolean; } type CompletionRecord = { all: Completion[]; filtered: Completion[]; filterText: string; } | CompletionProviderOptions type GatherCompletionRecord = { prefix: string; matches: Completion[]; finished: boolean; } type CompletionCallbackFunction = (err: Error | undefined, data: GatherCompletionRecord) => void; type CompletionProviderCallback = (err: Error | undefined, completions: CompletionRecord, finished: boolean) => void; export class CompletionProvider { insertByIndex(editor: Editor, index: number, options: CompletionProviderOptions): boolean; insertMatch(editor: Editor, data: Completion, options: CompletionProviderOptions): boolean; completions: CompletionRecord; gatherCompletions(editor: Editor, callback: CompletionCallbackFunction): boolean; provideCompletions(editor: Editor, options: CompletionProviderOptions, callback: CompletionProviderCallback): void; detach(): void; } export class Autocomplete { constructor(); autoInsert?: boolean; autoSelect?: boolean; autoShown?: boolean; exactMatch?: boolean; inlineEnabled?: boolean; parentNode?: HTMLElement; emptyMessage?(prefix: String): String; getPopup(): AcePopup; showPopup(editor: Editor, options: CompletionOptions): void; detach(): void; destroy(): void; } type AcePopupNavigation = "up" | "down" | "start" | "end"; export class AcePopup { constructor(parentNode: HTMLElement); setData(list: Completion[], filterText: string): void; getData(row: number): Completion; getRow(): number; getRow(line: number): void; hide(): void; show(pos: Point, lineHeight: number, topdownOnly: boolean): void; tryShow(pos: Point, lineHeight: number, anchor: "top" | "bottom" | undefined, forceShow?: boolean): boolean; goTo(where: AcePopupNavigation): void; } } export const version: string; export const config: Ace.Config; export function require(name: string): any; export function edit(el: Element | string, options?: Partial): Ace.Editor; export function createEditSession(text: Ace.Document | string, mode: Ace.SyntaxMode): Ace.EditSession; export const VirtualRenderer: { new(container: HTMLElement, theme?: string): Ace.VirtualRenderer; }; export const EditSession: { new(text: string | Ace.Document, mode?: Ace.SyntaxMode): Ace.EditSession; }; export const UndoManager: { new(): Ace.UndoManager; }; export const Editor: { new(): Ace.Editor; }; export const Range: { new(startRow: number, startColumn: number, endRow: number, endColumn: number): Ace.Range; fromPoints(start: Ace.Point, end: Ace.Point): Ace.Range; comparePoints(p1: Ace.Point, p2: Ace.Point): number; }; type InlineAutocompleteAction = "prev" | "next" | "first" | "last"; type TooltipCommandFunction = (editor: Ace.Editor) => T; interface TooltipCommand extends Ace.Command { enabled: TooltipCommandFunction | boolean, getValue?: TooltipCommandFunction, type: "button" | "text" | "checkbox" iconCssClass: string, cssClass: string } export class InlineAutocomplete { constructor(); getInlineRenderer(): Ace.AceInline; getInlineTooltip(): CommandBarTooltip; getCompletionProvider(): Ace.CompletionProvider; show(editor: Ace.Editor): void; isOpen(): boolean; detach(): void; destroy(): void; goTo(action: InlineAutocompleteAction): void; tooltipEnabled: boolean; commands: Record getIndex(): number; setIndex(value: number): void; getLength(): number; getData(index?: number): Ace.Completion | undefined; updateCompletions(options: Ace.CompletionOptions): void; } export class CommandBarTooltip { constructor(parentElement: HTMLElement); registerCommand(id: string, command: TooltipCommand): void; attach(editor: Ace.Editor): void; updatePosition(): void; update(): void; isShown(): boolean; getAlwaysShow(): boolean; setAlwaysShow(alwaysShow: boolean): void; detach(): void; destroy(): void; }