UNPKG

typescript-closure-tools

Version:

Command-line tools to convert closure-style JSDoc annotations to typescript, and to convert typescript sources to closure externs files

1,512 lines (1,217 loc) 94.4 kB
// Type definitions for Ace Ajax.org Cloud9 Editor // Project: http://ace.ajax.org/ // Definitions by: Diullei Gomes <https://github.com/Diullei> // Definitions: https://github.com/borisyankov/DefinitelyTyped declare module AceAjax { export interface Delta { action: string; range: Range; text: string; lines: string[]; } export interface EditorCommand { name:string; bindKey:any; exec:Function; } export interface CommandManager { byName; commands; platform: string; addCommands(commands:EditorCommand[]); addCommand(command:EditorCommand); exec(name: string, editor: Editor, args: any); } export interface Annotation { row: number; column: number; text: string; type: string; } export interface TokenInfo { value: string; } export interface Position { row: number; column: number; } export interface KeyBinding { setDefaultHandler(kb); setKeyboardHandler(kb); addKeyboardHandler(kb, pos); removeKeyboardHandler(kb): boolean; getKeyboardHandler(): any; onCommandKey(e, hashId, keyCode); onTextInput(text); } var KeyBinding: { new(editor: Editor): KeyBinding; } export interface TextMode { getTokenizer(): any; toggleCommentLines(state, doc, startRow, endRow); getNextLineIndent (state, line, tab): string; checkOutdent(state, line, input): boolean; autoOutdent(state, doc, row); createWorker(session): any; createModeDelegates (mapping); transformAction(state, action, editor, session, param): any; } //////////////// /// Ace //////////////// /** * The main class required to set up an Ace instance in the browser. **/ export interface Ace { /** * Provides access to require in packed noconflict mode * @param moduleName **/ require(moduleName: string): any; /** * Embeds the Ace editor into the DOM, at the element provided by `el`. * @param el Either the id of an element, or the element itself **/ edit(el: string): Editor; /** * Embeds the Ace editor into the DOM, at the element provided by `el`. * @param el Either the id of an element, or the element itself **/ edit(el: HTMLElement): Editor; /** * Creates a new [[EditSession]], and returns the associated [[Document]]. * @param text {:textParam} * @param mode {:modeParam} **/ createEditSession(text: Document, mode: TextMode): IEditSession; /** * Creates a new [[EditSession]], and returns the associated [[Document]]. * @param text {:textParam} * @param mode {:modeParam} **/ createEditSession(text: string, mode: TextMode): IEditSession; } //////////////// /// Anchor //////////////// /** * Defines the floating pointer in the document. Whenever text is inserted or deleted before the cursor, the position of the cursor is updated. **/ export interface Anchor { on(event: string, fn: (e) => any); /** * Returns an object identifying the `row` and `column` position of the current anchor. **/ getPosition(): Position; /** * Returns the current document. **/ getDocument(): Document; /** * Fires whenever the anchor position changes. * Both of these objects have a `row` and `column` property corresponding to the position. * Events that can trigger this function include [[Anchor.setPosition `setPosition()`]]. * @param e An object containing information about the anchor position. It has two properties: * - `old`: An object describing the old Anchor position * - `value`: An object describing the new Anchor position **/ onChange(e: any); /** * Sets the anchor position to the specified row and column. If `noClip` is `true`, the position is not clipped. * @param row The row index to move the anchor to * @param column The column index to move the anchor to * @param noClip Identifies if you want the position to be clipped **/ setPosition(row: number, column: number, noClip: boolean); /** * When called, the `'change'` event listener is removed. **/ detach(); } var Anchor: { /** * Creates a new `Anchor` and associates it with a document. * @param doc The document to associate with the anchor * @param row The starting row position * @param column The starting column position **/ new(doc: Document, row: number, column: number): Anchor; } //////////////////////////////// /// BackgroundTokenizer //////////////////////////////// /** * Tokenizes the current [[Document `Document`]] in the background, and caches the tokenized rows for future use. * If a certain row is changed, everything below that row is re-tokenized. **/ export interface BackgroundTokenizer { states: any[]; /** * Sets a new tokenizer for this object. * @param tokenizer The new tokenizer to use **/ setTokenizer(tokenizer: Tokenizer); /** * Sets a new document to associate with this object. * @param doc The new document to associate with **/ setDocument(doc: Document); /** * Emits the `'update'` event. `firstRow` and `lastRow` are used to define the boundaries of the region to be updated. * @param firstRow The starting row region * @param lastRow The final row region **/ fireUpdateEvent(firstRow: number, lastRow: number); /** * Starts tokenizing at the row indicated. * @param startRow The row to start at **/ start(startRow: number); /** * Stops tokenizing. **/ stop(); /** * Gives list of tokens of the row. (tokens are cached) * @param row The row to get tokens at **/ getTokens(row: number): TokenInfo[]; /** * [Returns the state of tokenization at the end of a row.]{: #BackgroundTokenizer.getState} * @param row The row to get state at **/ getState(row: number): string; } var BackgroundTokenizer: { /** * Creates a new `BackgroundTokenizer` object. * @param tokenizer The tokenizer to use * @param editor The editor to associate with **/ new(tokenizer: Tokenizer, editor: Editor): BackgroundTokenizer; } //////////////// /// Document //////////////// /** * Contains the text of the document. Document can be attached to several [[EditSession `EditSession`]]s. * At its core, `Document`s are just an array of strings, with each row in the document matching up to the array index. **/ export interface Document { on(event: string, fn: (e) => any); /** * Replaces all the lines in the current `Document` with the value of `text`. * @param text The text to use **/ setValue(text: string); /** * Returns all the lines in the document as a single string, split by the new line character. **/ getValue(): string; /** * Creates a new `Anchor` to define a floating point in the document. * @param row The row number to use * @param column The column number to use **/ createAnchor(row: number, column: number); /** * Returns the newline character that's being used, depending on the value of `newLineMode`. **/ getNewLineCharacter(): string; /** * [Sets the new line mode.]{: #Document.setNewLineMode.desc} * @param newLineMode [The newline mode to use; can be either `windows`, `unix`, or `auto`]{: #Document.setNewLineMode.param} **/ setNewLineMode(newLineMode: string); /** * [Returns the type of newlines being used; either `windows`, `unix`, or `auto`]{: #Document.getNewLineMode} **/ getNewLineMode(): string; /** * Returns `true` if `text` is a newline character (either `\r\n`, `\r`, or `\n`). * @param text The text to check **/ isNewLine(text: string): boolean; /** * Returns a verbatim copy of the given line as it is in the document * @param row The row index to retrieve **/ getLine(row: number): string; /** * Returns an array of strings of the rows between `firstRow` and `lastRow`. This function is inclusive of `lastRow`. * @param firstRow The first row index to retrieve * @param lastRow The final row index to retrieve **/ getLines(firstRow: number, lastRow: number): string[]; /** * Returns all lines in the document as string array. Warning: The caller should not modify this array! **/ getAllLines(): string[]; /** * Returns the number of rows in the document. **/ getLength(): number; /** * [Given a range within the document, this function returns all the text within that range as a single string.]{: #Document.getTextRange.desc} * @param range The range to work with **/ getTextRange(range: Range): string; /** * Inserts a block of `text` and the indicated `position`. * @param position The position to start inserting at * @param text A chunk of text to insert **/ insert(position: Position, text: string): any; /** * Inserts the elements in `lines` into the document, starting at the row index given by `row`. This method also triggers the `'change'` event. * @param row The index of the row to insert at * @param lines An array of strings **/ insertLines(row: number, lines: string[]): any; /** * Inserts a new line into the document at the current row's `position`. This method also triggers the `'change'` event. * @param position The position to insert at **/ insertNewLine(position: Position): any; /** * Inserts `text` into the `position` at the current row. This method also triggers the `'change'` event. * @param position The position to insert at * @param text A chunk of text **/ insertInLine(position: any, text: string): any; /** * Removes the `range` from the document. * @param range A specified Range to remove **/ remove(range: Range): any; /** * Removes the specified columns from the `row`. This method also triggers the `'change'` event. * @param row The row to remove from * @param startColumn The column to start removing at * @param endColumn The column to stop removing at **/ removeInLine(row: number, startColumn: number, endColumn: number): any; /** * Removes a range of full lines. This method also triggers the `'change'` event. * @param firstRow The first row to be removed * @param lastRow The last row to be removed **/ removeLines(firstRow: number, lastRow: number): string[]; /** * Removes the new line between `row` and the row immediately following it. This method also triggers the `'change'` event. * @param row The row to check **/ removeNewLine(row: number); /** * Replaces a range in the document with the new `text`. * @param range A specified Range to replace * @param text The new text to use as a replacement **/ replace(range: Range, text: string): any; /** * Applies all the changes previously accumulated. These can be either `'includeText'`, `'insertLines'`, `'removeText'`, and `'removeLines'`. **/ applyDeltas(deltas: Delta[]); /** * Reverts any changes previously applied. These can be either `'includeText'`, `'insertLines'`, `'removeText'`, and `'removeLines'`. **/ revertDeltas(deltas: Delta[]); /** * Converts an index position in a document to a `{row, column}` object. * Index refers to the "absolute position" of a character in the document. For example: * ```javascript * var x = 0; // 10 characters, plus one for newline * var y = -1; * ``` * Here, `y` is an index 15: 11 characters for the first row, and 5 characters until `y` in the second. * @param index An index to convert * @param startRow=0 The row from which to start the conversion **/ indexToPosition(index: number, startRow: number): Position; /** * Converts the `{row, column}` position in a document to the character's index. * Index refers to the "absolute position" of a character in the document. For example: * ```javascript * var x = 0; // 10 characters, plus one for newline * var y = -1; * ``` * Here, `y` is an index 15: 11 characters for the first row, and 5 characters until `y` in the second. * @param pos The `{row, column}` to convert * @param startRow=0 The row from which to start the conversion **/ positionToIndex(pos: Position, startRow: number): number; } var Document: { /** * Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty. * @param text The starting text **/ new(text?: string): Document; /** * Creates a new `Document`. If `text` is included, the `Document` contains those strings; otherwise, it's empty. * @param text The starting text **/ new(text?: string[]): Document; } //////////////////////////////// /// EditSession //////////////////////////////// /** * Stores all the data about [[Editor `Editor`]] state providing easy way to change editors state. * `EditSession` can be attached to only one [[Document `Document`]]. Same `Document` can be attached to several `EditSession`s. **/ export interface IEditSession { selection: Selection; bgTokenizer: BackgroundTokenizer; doc: Document; on(event: string, fn: (e) => any); findMatchingBracket(position: Position); addFold(text: string, range: Range); getFoldAt(row: number, column: number): any; removeFold(arg: any); expandFold(arg: any); unfold(arg1: any, arg2: boolean); screenToDocumentColumn(row: number, column: number); getFoldDisplayLine(foldLine: any, docRow: number, docColumn: number): any; getFoldsInRange(range: Range): any; highlight(text: string); /** * Sets the `EditSession` to point to a new `Document`. If a `BackgroundTokenizer` exists, it also points to `doc`. * @param doc The new `Document` to use **/ setDocument(doc: Document); /** * Returns the `Document` associated with this session. **/ getDocument(): Document; /** * undefined * @param row The row to work with **/ $resetRowCache(row: number); /** * Sets the session text. * @param text The new text to place **/ setValue(text: string); setMode(mode: string); /** * Returns the current [[Document `Document`]] as a string. **/ getValue(): string; /** * Returns the string of the current selection. **/ getSelection(): Selection; /** * {:BackgroundTokenizer.getState} * @param row The row to start at **/ getState(row: number): string; /** * Starts tokenizing at the row indicated. Returns a list of objects of the tokenized rows. * @param row The row to start at **/ getTokens(row: number): TokenInfo[]; /** * Returns an object indicating the token at the current row. The object has two properties: `index` and `start`. * @param row The row number to retrieve from * @param column The column number to retrieve from **/ getTokenAt(row: number, column: number): TokenInfo; /** * Sets the undo manager. * @param undoManager The new undo manager **/ setUndoManager(undoManager: UndoManager); /** * Returns the current undo manager. **/ getUndoManager(): UndoManager; /** * Returns the current value for tabs. If the user is using soft tabs, this will be a series of spaces (defined by [[EditSession.getTabSize `getTabSize()`]]); otherwise it's simply `'\t'`. **/ getTabString(): string; /** * Pass `true` to enable the use of soft tabs. Soft tabs means you're using spaces instead of the tab character (`'\t'`). * @param useSoftTabs Value indicating whether or not to use soft tabs **/ setUseSoftTabs(useSoftTabs: boolean); /** * Returns `true` if soft tabs are being used, `false` otherwise. **/ getUseSoftTabs(): boolean; /** * Set the number of spaces that define a soft tab; for example, passing in `4` transforms the soft tabs to be equivalent to four spaces. This function also emits the `changeTabSize` event. * @param tabSize The new tab size **/ setTabSize(tabSize: number); /** * Returns the current tab size. **/ getTabSize(): string; /** * Returns `true` if the character at the position is a soft tab. * @param position The position to check **/ isTabStop(position: any): boolean; /** * Pass in `true` to enable overwrites in your session, or `false` to disable. * If overwrites is enabled, any text you enter will type over any text after it. If the value of `overwrite` changes, this function also emites the `changeOverwrite` event. * @param overwrite Defines wheter or not to set overwrites **/ setOverwrite(overwrite: boolean); /** * Returns `true` if overwrites are enabled; `false` otherwise. **/ getOverwrite(): boolean; /** * Sets the value of overwrite to the opposite of whatever it currently is. **/ toggleOverwrite(); /** * Adds `className` to the `row`, to be used for CSS stylings and whatnot. * @param row The row number * @param className The class to add **/ addGutterDecoration(row: number, className: string); /** * Removes `className` from the `row`. * @param row The row number * @param className The class to add **/ removeGutterDecoration(row: number, className: string); /** * Returns an array of numbers, indicating which rows have breakpoints. **/ getBreakpoints(): number[]; /** * Sets a breakpoint on every row number given by `rows`. This function also emites the `'changeBreakpoint'` event. * @param rows An array of row indices **/ setBreakpoints(rows: any[]); /** * Removes all breakpoints on the rows. This function also emites the `'changeBreakpoint'` event. **/ clearBreakpoints(); /** * Sets a breakpoint on the row number given by `rows`. This function also emites the `'changeBreakpoint'` event. * @param row A row index * @param className Class of the breakpoint **/ setBreakpoint(row: number, className: string); /** * Removes a breakpoint on the row number given by `rows`. This function also emites the `'changeBreakpoint'` event. * @param row A row index **/ clearBreakpoint(row: number); /** * Adds a new marker to the given `Range`. If `inFront` is `true`, a front marker is defined, and the `'changeFrontMarker'` event fires; otherwise, the `'changeBackMarker'` event fires. * @param range Define the range of the marker * @param clazz Set the CSS class for the marker * @param type Identify the type of the marker * @param inFront Set to `true` to establish a front marker **/ addMarker(range: Range, clazz: string, type: Function, inFront: boolean); /** * Adds a new marker to the given `Range`. If `inFront` is `true`, a front marker is defined, and the `'changeFrontMarker'` event fires; otherwise, the `'changeBackMarker'` event fires. * @param range Define the range of the marker * @param clazz Set the CSS class for the marker * @param type Identify the type of the marker * @param inFront Set to `true` to establish a front marker **/ addMarker(range: Range, clazz: string, type: string, inFront: boolean); /** * Adds a dynamic marker to the session. * @param marker object with update method * @param inFront Set to `true` to establish a front marker **/ addDynamicMarker(marker: any, inFront: boolean); /** * Removes the marker with the specified ID. If this marker was in front, the `'changeFrontMarker'` event is emitted. If the marker was in the back, the `'changeBackMarker'` event is emitted. * @param markerId A number representing a marker **/ removeMarker(markerId: number); /** * Returns an array containing the IDs of all the markers, either front or back. * @param inFront If `true`, indicates you only want front markers; `false` indicates only back markers **/ getMarkers(inFront: boolean): any[]; /** * Sets annotations for the `EditSession`. This functions emits the `'changeAnnotation'` event. * @param annotations A list of annotations **/ setAnnotations(annotations: Annotation[]); /** * Returns the annotations for the `EditSession`. **/ getAnnotations(): any; /** * Clears all the annotations for this session. This function also triggers the `'changeAnnotation'` event. **/ clearAnnotations(); /** * If `text` contains either the newline (`\n`) or carriage-return ('\r') characters, `$autoNewLine` stores that value. * @param text A block of text **/ $detectNewLine(text: string); /** * Given a starting row and column, this method returns the `Range` of the first word boundary it finds. * @param row The row to start at * @param column The column to start at **/ getWordRange(row: number, column: number): Range; /** * Gets the range of a word, including its right whitespace. * @param row The row number to start from * @param column The column number to start from **/ getAWordRange(row: number, column: number): any; /** * {:Document.setNewLineMode.desc} * @param newLineMode {:Document.setNewLineMode.param} **/ setNewLineMode(newLineMode: string); /** * Returns the current new line mode. **/ getNewLineMode(): string; /** * Identifies if you want to use a worker for the `EditSession`. * @param useWorker Set to `true` to use a worker **/ setUseWorker(useWorker: boolean); /** * Returns `true` if workers are being used. **/ getUseWorker(): boolean; /** * Reloads all the tokens on the current session. This function calls [[BackgroundTokenizer.start `BackgroundTokenizer.start ()`]] to all the rows; it also emits the `'tokenizerUpdate'` event. **/ onReloadTokenizer(); /** * Sets a new text mode for the `EditSession`. This method also emits the `'changeMode'` event. If a [[BackgroundTokenizer `BackgroundTokenizer`]] is set, the `'tokenizerUpdate'` event is also emitted. * @param mode Set a new text mode **/ $mode(mode: TextMode); /** * Returns the current text mode. **/ getMode(): TextMode; /** * This function sets the scroll top value. It also emits the `'changeScrollTop'` event. * @param scrollTop The new scroll top value **/ setScrollTop(scrollTop: number); /** * [Returns the value of the distance between the top of the editor and the topmost part of the visible content.]{: #EditSession.getScrollTop} **/ getScrollTop(): number; /** * [Sets the value of the distance between the left of the editor and the leftmost part of the visible content.]{: #EditSession.setScrollLeft} **/ setScrollLeft(); /** * [Returns the value of the distance between the left of the editor and the leftmost part of the visible content.]{: #EditSession.getScrollLeft} **/ getScrollLeft(): number; /** * Returns the width of the screen. **/ getScreenWidth(): number; /** * Returns a verbatim copy of the given line as it is in the document * @param row The row to retrieve from **/ getLine(row: number): string; /** * Returns an array of strings of the rows between `firstRow` and `lastRow`. This function is inclusive of `lastRow`. * @param firstRow The first row index to retrieve * @param lastRow The final row index to retrieve **/ getLines(firstRow: number, lastRow: number): string[]; /** * Returns the number of rows in the document. **/ getLength(): number; /** * {:Document.getTextRange.desc} * @param range The range to work with **/ getTextRange(range: Range): string; /** * Inserts a block of `text` and the indicated `position`. * @param position The position {row, column} to start inserting at * @param text A chunk of text to insert **/ insert(position: Position, text: string): any; /** * Removes the `range` from the document. * @param range A specified Range to remove **/ remove(range: Range): any; /** * Reverts previous changes to your document. * @param deltas An array of previous changes * @param dontSelect [If `true`, doesn't select the range of where the change occured]{: #dontSelect} **/ undoChanges(deltas: any[], dontSelect: boolean): Range; /** * Re-implements a previously undone change to your document. * @param deltas An array of previous changes * @param dontSelect {:dontSelect} **/ redoChanges(deltas: any[], dontSelect: boolean): Range; /** * Enables or disables highlighting of the range where an undo occured. * @param enable If `true`, selects the range of the reinserted change **/ setUndoSelect(enable: boolean); /** * Replaces a range in the document with the new `text`. * @param range A specified Range to replace * @param text The new text to use as a replacement **/ replace(range: Range, text: string): any; /** * Moves a range of text from the given range to the given position. `toPosition` is an object that looks like this: * ```json * { row: newRowLocation, column: newColumnLocation } * ``` * @param fromRange The range of text you want moved within the document * @param toPosition The location (row and column) where you want to move the text to **/ moveText(fromRange: Range, toPosition: any): Range; /** * Indents all the rows, from `startRow` to `endRow` (inclusive), by prefixing each row with the token in `indentString`. * If `indentString` contains the `'\t'` character, it's replaced by whatever is defined by [[EditSession.getTabString `getTabString()`]]. * @param startRow Starting row * @param endRow Ending row * @param indentString The indent token **/ indentRows(startRow: number, endRow: number, indentString: string); /** * Outdents all the rows defined by the `start` and `end` properties of `range`. * @param range A range of rows **/ outdentRows(range: Range); /** * Shifts all the lines in the document up one, starting from `firstRow` and ending at `lastRow`. * @param firstRow The starting row to move up * @param lastRow The final row to move up **/ moveLinesUp(firstRow: number, lastRow: number): number; /** * Shifts all the lines in the document down one, starting from `firstRow` and ending at `lastRow`. * @param firstRow The starting row to move down * @param lastRow The final row to move down **/ moveLinesDown(firstRow: number, lastRow: number): number; /** * Duplicates all the text between `firstRow` and `lastRow`. * @param firstRow The starting row to duplicate * @param lastRow The final row to duplicate **/ duplicateLines(firstRow: number, lastRow: number): number; /** * Sets whether or not line wrapping is enabled. If `useWrapMode` is different than the current value, the `'changeWrapMode'` event is emitted. * @param useWrapMode Enable (or disable) wrap mode **/ setUseWrapMode(useWrapMode: boolean); /** * Returns `true` if wrap mode is being used; `false` otherwise. **/ getUseWrapMode(): boolean; /** * Sets the boundaries of wrap. Either value can be `null` to have an unconstrained wrap, or, they can be the same number to pin the limit. If the wrap limits for `min` or `max` are different, this method also emits the `'changeWrapMode'` event. * @param min The minimum wrap value (the left side wrap) * @param max The maximum wrap value (the right side wrap) **/ setWrapLimitRange(min: number, max: number); /** * This should generally only be called by the renderer when a resize is detected. * @param desiredLimit The new wrap limit **/ adjustWrapLimit(desiredLimit: number): boolean; /** * Returns the value of wrap limit. **/ getWrapLimit(): number; /** * Returns an object that defines the minimum and maximum of the wrap limit; it looks something like this: * { min: wrapLimitRange_min, max: wrapLimitRange_max } **/ getWrapLimitRange(): any; /** * Given a string, returns an array of the display characters, including tabs and spaces. * @param str The string to check * @param offset The value to start at **/ $getDisplayTokens(str: string, offset: number); /** * Calculates the width of the string `str` on the screen while assuming that the string starts at the first column on the screen. * @param str The string to calculate the screen width of * @param maxScreenColumn * @param screenColumn **/ $getStringScreenWidth(str: string, maxScreenColumn: number, screenColumn: number): number[]; /** * Returns number of screenrows in a wrapped line. * @param row The row number to check **/ getRowLength(row: number): number; /** * Returns the position (on screen) for the last character in the provided screen row. * @param screenRow The screen row to check **/ getScreenLastRowColumn(screenRow: number): number; /** * For the given document row and column, this returns the column position of the last screen row. * @param docRow * @param docColumn **/ getDocumentLastRowColumn(docRow: number, docColumn: number): number; /** * For the given document row and column, this returns the document position of the last row. * @param docRow * @param docColumn **/ getDocumentLastRowColumnPosition(docRow: number, docColumn: number): number; /** * For the given row, this returns the split data. **/ getRowSplitData(): string; /** * The distance to the next tab stop at the specified screen column. * @param screenColumn The screen column to check **/ getScreenTabSize(screenColumn: number): number; /** * Converts characters coordinates on the screen to characters coordinates within the document. [This takes into account code folding, word wrap, tab size, and any other visual modifications.]{: #conversionConsiderations} * @param screenRow The screen row to check * @param screenColumn The screen column to check **/ screenToDocumentPosition(screenRow: number, screenColumn: number): any; /** * Converts document coordinates to screen coordinates. {:conversionConsiderations} * @param docRow The document row to check * @param docColumn The document column to check **/ documentToScreenPosition(docRow: number, docColumn: number): any; /** * For the given document row and column, returns the screen column. * @param row * @param docColumn **/ documentToScreenColumn(row: number, docColumn: number): number; /** * For the given document row and column, returns the screen row. * @param docRow * @param docColumn **/ documentToScreenRow(docRow: number, docColumn: number); /** * Returns the length of the screen. **/ getScreenLength(): number; } var EditSession: { /** * Sets up a new `EditSession` and associates it with the given `Document` and `TextMode`. * @param text [If `text` is a `Document`, it associates the `EditSession` with it. Otherwise, a new `Document` is created, with the initial text]{: #textParam} * @param mode [The inital language mode to use for the document]{: #modeParam} **/ new(text: string, mode?: TextMode): IEditSession; new(content: string, mode?: string): IEditSession; new (text: string[], mode?: string): IEditSession; } //////////////////////////////// /// Editor //////////////////////////////// /** * The main entry point into the Ace functionality. * The `Editor` manages the [[EditSession]] (which manages [[Document]]s), as well as the [[VirtualRenderer]], which draws everything to the screen. * Event sessions dealing with the mouse and keyboard are bubbled up from `Document` to the `Editor`, which decides what to do with them. **/ export interface Editor { inMultiSelectMode: boolean; selectMoreLines(n: number); onTextInput(text: string); onCommandKey(e, hashId, keyCode); commands: CommandManager; session: IEditSession; selection: Selection; renderer: VirtualRenderer; keyBinding: KeyBinding; container: HTMLElement; onSelectionChange(e); onChangeMode(e?); execCommand(command:string, args?: any); /** * Sets a new key handler, such as "vim" or "windows". * @param keyboardHandler The new key handler **/ setKeyboardHandler(keyboardHandler: string); /** * Returns the keyboard handler, such as "vim" or "windows". **/ getKeyboardHandler(): string; /** * Sets a new editsession to use. This method also emits the `'changeSession'` event. * @param session The new session to use **/ setSession(session: IEditSession); /** * Returns the current session being used. **/ getSession(): IEditSession; /** * Sets the current document to `val`. * @param val The new value to set for the document * @param cursorPos Where to set the new value. `undefined` or 0 is selectAll, -1 is at the document start, and 1 is at the end **/ setValue(val: string, cursorPos?: number): string; /** * Returns the current session's content. **/ getValue(): string; /** * Returns the currently highlighted selection. **/ getSelection(): Selection; /** * {:VirtualRenderer.onResize} * @param force If `true`, recomputes the size, even if the height and width haven't changed **/ resize(force?: boolean); /** * {:VirtualRenderer.setTheme} * @param theme The path to a theme **/ setTheme(theme: string); /** * {:VirtualRenderer.getTheme} **/ getTheme(): string; /** * {:VirtualRenderer.setStyle} * @param style A class name **/ setStyle(style: string); /** * {:VirtualRenderer.unsetStyle} **/ unsetStyle(); /** * Set a new font size (in pixels) for the editor text. * @param size A font size ( _e.g._ "12px") **/ setFontSize(size: string); /** * Brings the current `textInput` into focus. **/ focus(); /** * Returns `true` if the current `textInput` is in focus. **/ isFocused(); /** * Blurs the current `textInput`. **/ blur(); /** * Emitted once the editor comes into focus. **/ onFocus(); /** * Emitted once the editor has been blurred. **/ onBlur(); /** * Emitted whenever the document is changed. * @param e Contains a single property, `data`, which has the delta of changes **/ onDocumentChange(e: any); /** * Emitted when the selection changes. **/ onCursorChange(); /** * Returns the string of text currently highlighted. **/ getCopyText(): string; /** * Called whenever a text "copy" happens. **/ onCopy(); /** * Called whenever a text "cut" happens. **/ onCut(); /** * Called whenever a text "paste" happens. * @param text The pasted text **/ onPaste(text: string); /** * Inserts `text` into wherever the cursor is pointing. * @param text The new text to add **/ insert(text: string); /** * Pass in `true` to enable overwrites in your session, or `false` to disable. If overwrites is enabled, any text you enter will type over any text after it. If the value of `overwrite` changes, this function also emites the `changeOverwrite` event. * @param overwrite Defines wheter or not to set overwrites **/ setOverwrite(overwrite: boolean); /** * Returns `true` if overwrites are enabled; `false` otherwise. **/ getOverwrite(): boolean; /** * Sets the value of overwrite to the opposite of whatever it currently is. **/ toggleOverwrite(); /** * Sets how fast the mouse scrolling should do. * @param speed A value indicating the new speed (in milliseconds) **/ setScrollSpeed(speed: number); /** * Returns the value indicating how fast the mouse scroll speed is (in milliseconds). **/ getScrollSpeed(): number; /** * Sets the delay (in milliseconds) of the mouse drag. * @param dragDelay A value indicating the new delay **/ setDragDelay(dragDelay: number); /** * Returns the current mouse drag delay. **/ getDragDelay(): number; /** * Indicates how selections should occur. * By default, selections are set to "line". There are no other styles at the moment, * although this code change in the future. * This function also emits the `'changeSelectionStyle'` event. * @param style The new selection style **/ setSelectionStyle(style: string); /** * Returns the current selection style. **/ getSelectionStyle(): string; /** * Determines whether or not the current line should be highlighted. * @param shouldHighlight Set to `true` to highlight the current line **/ setHighlightActiveLine(shouldHighlight: boolean); /** * Returns `true` if current lines are always highlighted. **/ getHighlightActiveLine(); /** * Determines if the currently selected word should be highlighted. * @param shouldHighlight Set to `true` to highlight the currently selected word **/ setHighlightSelectedWord(shouldHighlight: boolean); /** * Returns `true` if currently highlighted words are to be highlighted. **/ getHighlightSelectedWord(): boolean; /** * If `showInvisibiles` is set to `true`, invisible characters&mdash;like spaces or new lines&mdash;are show in the editor. * @param showInvisibles Specifies whether or not to show invisible characters **/ setShowInvisibles(showInvisibles: boolean); /** * Returns `true` if invisible characters are being shown. **/ getShowInvisibles(): boolean; /** * If `showPrintMargin` is set to `true`, the print margin is shown in the editor. * @param showPrintMargin Specifies whether or not to show the print margin **/ setShowPrintMargin(showPrintMargin: boolean); /** * Returns `true` if the print margin is being shown. **/ getShowPrintMargin(): boolean; /** * Sets the column defining where the print margin should be. * @param showPrintMargin Specifies the new print margin **/ setPrintMarginColumn(showPrintMargin: number); /** * Returns the column number of where the print margin is. **/ getPrintMarginColumn(): number; /** * If `readOnly` is true, then the editor is set to read-only mode, and none of the content can change. * @param readOnly Specifies whether the editor can be modified or not **/ setReadOnly(readOnly: boolean); /** * Returns `true` if the editor is set to read-only mode. **/ getReadOnly(): boolean; /** * Specifies whether to use behaviors or not. ["Behaviors" in this case is the auto-pairing of special characters, like quotation marks, parenthesis, or brackets.]{: #BehaviorsDef} * @param enabled Enables or disables behaviors **/ setBehavioursEnabled(enabled: boolean); /** * Returns `true` if the behaviors are currently enabled. {:BehaviorsDef} **/ getBehavioursEnabled(): boolean; /** * Specifies whether to use wrapping behaviors or not, i.e. automatically wrapping the selection with characters such as brackets * when such a character is typed in. * @param enabled Enables or disables wrapping behaviors **/ setWrapBehavioursEnabled(enabled: boolean); /** * Returns `true` if the wrapping behaviors are currently enabled. **/ getWrapBehavioursEnabled(); /** * Indicates whether the fold widgets are shown or not. * @param show Specifies whether the fold widgets are shown **/ setShowFoldWidgets(show: boolean); /** * Returns `true` if the fold widgets are shown. **/ getShowFoldWidgets(); /** * Removes words of text from the editor. A "word" is defined as a string of characters bookended by whitespace. * @param dir The direction of the deletion to occur, either "left" or "right" **/ remove(dir: string); /** * Removes the word directly to the right of the current selection. **/ removeWordRight(); /** * Removes the word directly to the left of the current selection. **/ removeWordLeft(); /** * Removes all the words to the left of the current selection, until the start of the line. **/ removeToLineStart(); /** * Removes all the words to the right of the current selection, until the end of the line. **/ removeToLineEnd(); /** * Splits the line at the current selection (by inserting an `'\n'`). **/ splitLine(); /** * Transposes current line. **/ transposeLetters(); /** * Converts the current selection entirely into lowercase. **/ toLowerCase(); /** * Converts the current selection entirely into uppercase. **/ toUpperCase(); /** * Inserts an indentation into the current cursor position or indents the selected lines. **/ indent(); /** * Indents the current line. **/ blockIndent(); /** * Outdents the current line. **/ blockOutdent(arg?: string); /** * Given the currently selected range, this function either comments all the lines, or uncomments all of them. **/ toggleCommentLines(); /** * Works like [[EditSession.getTokenAt]], except it returns a number. **/ getNumberAt(): number; /** * If the character before the cursor is a number, this functions changes its value by `amount`. * @param amount The value to change the numeral by (can be negative to decrease value) **/ modifyNumber(amount: number); /** * Removes all the lines in the current selection **/ removeLines(); /** * Shifts all the selected lines down one row. **/ moveLinesDown(): number; /** * Shifts all the selected lines up one row. **/ moveLinesUp(): number; /** * Moves a range of text from the given range to the given position. `toPosition` is an object that looks like this: * ```json * { row: newRowLocation, column: newColumnLocation } * ``` * @param fromRange The range of text you want moved within the document * @param toPosition The location (row and column) where you want to move the text to **/ moveText(fromRange: Range, toPosition: any): Range; /** * Copies all the selected lines up one row. **/ copyLinesUp(): number; /** * Copies all the selected lines down one row. **/ copyLinesDown(): number; /** * {:VirtualRenderer.getFirstVisibleRow} **/ getFirstVisibleRow(): number; /** * {:VirtualRenderer.getLastVisibleRow} **/ getLastVisibleRow(): number; /** * Indicates if the row is currently visible on the screen. * @param row The row to check **/ isRowVisible(row: number): boolean; /** * Indicates if the entire row is currently visible on the screen. * @param row The row to check **/ isRowFullyVisible(row: number): boolean; /** * Selects the text from the current position of the document until where a "page down" finishes. **/ selectPageDown(); /** * Selects the text from the current position of the document until where a "page up" finishes. **/ selectPageUp(); /** * Shifts the document to wherever "page down" is, as well as moving the cursor position. **/ gotoPageDown(); /** * Shifts the document to wherever "page up" is, as well as moving the cursor position. **/ gotoPageUp(); /** * Scrolls the document to wherever "page down" is, without changing the cursor position. **/ scrollPageDown(); /** * Scrolls the document to wherever "page up" is, without