ace.d.ts 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903
  1. /// <reference path="./ace-modules.d.ts" />
  2. export namespace Ace {
  3. export type NewLineMode = 'auto' | 'unix' | 'windows';
  4. export interface Anchor extends EventEmitter {
  5. getPosition(): Point;
  6. getDocument(): Document;
  7. setPosition(row: number, column: number, noClip?: boolean): void;
  8. detach(): void;
  9. attach(doc: Document): void;
  10. }
  11. export interface Document extends EventEmitter {
  12. setValue(text: string): void;
  13. getValue(): string;
  14. createAnchor(row: number, column: number): Anchor;
  15. getNewLineCharacter(): string;
  16. setNewLineMode(newLineMode: NewLineMode): void;
  17. getNewLineMode(): NewLineMode;
  18. isNewLine(text: string): boolean;
  19. getLine(row: number): string;
  20. getLines(firstRow: number, lastRow: number): string[];
  21. getAllLines(): string[];
  22. getLength(): number;
  23. getTextRange(range: Range): string;
  24. getLinesForRange(range: Range): string[];
  25. insert(position: Point, text: string): Point;
  26. insertInLine(position: Point, text: string): Point;
  27. insertNewLine(position: Point): Point;
  28. clippedPos(row: number, column: number): Point;
  29. clonePos(pos: Point): Point;
  30. pos(row: number, column: number): Point;
  31. insertFullLines(row: number, lines: string[]): void;
  32. insertMergedLines(position: Point, lines: string[]): Point;
  33. remove(range: Range): Point;
  34. removeInLine(row: number, startColumn: number, endColumn: number): Point;
  35. removeFullLines(firstRow: number, lastRow: number): string[];
  36. removeNewLine(row: number): void;
  37. replace(range: Range, text: string): Point;
  38. applyDeltas(deltas: Delta[]): void;
  39. revertDeltas(deltas: Delta[]): void;
  40. applyDelta(delta: Delta, doNotValidate?: boolean): void;
  41. revertDelta(delta: Delta): void;
  42. indexToPosition(index: number, startRow: number): Point;
  43. positionToIndex(pos: Point, startRow?: number): number;
  44. }
  45. export interface FoldLine {
  46. folds: Fold[];
  47. range: Range;
  48. start: Point;
  49. end: Point;
  50. shiftRow(shift: number): void;
  51. addFold(fold: Fold): void;
  52. containsRow(row: number): boolean;
  53. walk(callback: Function, endRow?: number, endColumn?: number): void;
  54. getNextFoldTo(row: number, column: number): null | { fold: Fold, kind: string };
  55. addRemoveChars(row: number, column: number, len: number): void;
  56. split(row: number, column: number): FoldLine;
  57. merge(foldLineNext: FoldLine): void;
  58. idxToPosition(idx: number): Point;
  59. }
  60. export interface Fold {
  61. range: Range;
  62. start: Point;
  63. end: Point;
  64. foldLine?: FoldLine;
  65. sameRow: boolean;
  66. subFolds: Fold[];
  67. setFoldLine(foldLine: FoldLine): void;
  68. clone(): Fold;
  69. addSubFold(fold: Fold): Fold;
  70. restoreRange(range: Range): void;
  71. }
  72. interface Folding {
  73. getFoldAt(row: number, column: number, side: number): Fold;
  74. getFoldsInRange(range: Range): Fold[];
  75. getFoldsInRangeList(ranges: Range[]): Fold[];
  76. getAllFolds(): Fold[];
  77. getFoldStringAt(row: number,
  78. column: number,
  79. trim?: number,
  80. foldLine?: FoldLine): string | null;
  81. getFoldLine(docRow: number, startFoldLine?: FoldLine): FoldLine | null;
  82. getNextFoldLine(docRow: number, startFoldLine?: FoldLine): FoldLine | null;
  83. getFoldedRowCount(first: number, last: number): number;
  84. addFold(placeholder: string | Fold, range?: Range): Fold;
  85. addFolds(folds: Fold[]): void;
  86. removeFold(fold: Fold): void;
  87. removeFolds(folds: Fold[]): void;
  88. expandFold(fold: Fold): void;
  89. expandFolds(folds: Fold[]): void;
  90. unfold(location: null | number | Point | Range,
  91. expandInner?: boolean): Fold[] | undefined;
  92. isRowFolded(docRow: number, startFoldRow?: FoldLine): boolean;
  93. getFoldRowEnd(docRow: number, startFoldRow?: FoldLine): number;
  94. getFoldRowStart(docRow: number, startFoldRow?: FoldLine): number;
  95. getFoldDisplayLine(foldLine: FoldLine,
  96. endRow: number | null,
  97. endColumn: number | null,
  98. startRow: number | null,
  99. startColumn: number | null): string;
  100. getDisplayLine(row: number,
  101. endColumn: number | null,
  102. startRow: number | null,
  103. startColumn: number | null): string;
  104. toggleFold(tryToUnfold?: boolean): void;
  105. getCommentFoldRange(row: number,
  106. column: number,
  107. dir: number): Range | undefined;
  108. foldAll(startRow?: number, endRow?: number, depth?: number): void;
  109. setFoldStyle(style: string): void;
  110. getParentFoldRangeData(row: number, ignoreCurrent?: boolean): {
  111. range?: Range,
  112. firstRange: Range
  113. };
  114. toggleFoldWidget(toggleParent?: boolean): void;
  115. updateFoldWidgets(delta: Delta): void;
  116. }
  117. export interface Range {
  118. start: Point;
  119. end: Point;
  120. isEqual(range: Range): boolean;
  121. toString(): string;
  122. contains(row: number, column: number): boolean;
  123. compareRange(range: Range): number;
  124. comparePoint(p: Point): number;
  125. containsRange(range: Range): boolean;
  126. intersects(range: Range): boolean;
  127. isEnd(row: number, column: number): boolean;
  128. isStart(row: number, column: number): boolean;
  129. setStart(row: number, column: number): void;
  130. setEnd(row: number, column: number): void;
  131. inside(row: number, column: number): boolean;
  132. insideStart(row: number, column: number): boolean;
  133. insideEnd(row: number, column: number): boolean;
  134. compare(row: number, column: number): number;
  135. compareStart(row: number, column: number): number;
  136. compareEnd(row: number, column: number): number;
  137. compareInside(row: number, column: number): number;
  138. clipRows(firstRow: number, lastRow: number): Range;
  139. extend(row: number, column: number): Range;
  140. isEmpty(): boolean;
  141. isMultiLine(): boolean;
  142. clone(): Range;
  143. collapseRows(): Range;
  144. toScreenRange(session: EditSession): Range;
  145. moveBy(row: number, column: number): void;
  146. }
  147. export interface EditSessionOptions {
  148. wrap: "off" | "free" | "printmargin" | boolean | number;
  149. wrapMethod: 'code' | 'text' | 'auto';
  150. indentedSoftWrap: boolean;
  151. firstLineNumber: number;
  152. useWorker: boolean;
  153. useSoftTabs: boolean;
  154. tabSize: number;
  155. navigateWithinSoftTabs: boolean;
  156. foldStyle: 'markbegin' | 'markbeginend' | 'manual';
  157. overwrite: boolean;
  158. newLineMode: NewLineMode;
  159. mode: string;
  160. }
  161. export interface VirtualRendererOptions {
  162. animatedScroll: boolean;
  163. showInvisibles: boolean;
  164. showPrintMargin: boolean;
  165. printMarginColumn: number;
  166. printMargin: boolean | number;
  167. showGutter: boolean;
  168. fadeFoldWidgets: boolean;
  169. showFoldWidgets: boolean;
  170. showLineNumbers: boolean;
  171. displayIndentGuides: boolean;
  172. highlightGutterLine: boolean;
  173. hScrollBarAlwaysVisible: boolean;
  174. vScrollBarAlwaysVisible: boolean;
  175. fontSize: number;
  176. fontFamily: string;
  177. maxLines: number;
  178. minLines: number;
  179. scrollPastEnd: boolean;
  180. fixedWidthGutter: boolean;
  181. theme: string;
  182. hasCssTransforms: boolean;
  183. maxPixelHeight: number;
  184. }
  185. export interface MouseHandlerOptions {
  186. scrollSpeed: number;
  187. dragDelay: number;
  188. dragEnabled: boolean;
  189. focusTimeout: number;
  190. tooltipFollowsMouse: boolean;
  191. }
  192. export interface EditorOptions extends EditSessionOptions,
  193. MouseHandlerOptions,
  194. VirtualRendererOptions {
  195. selectionStyle: string;
  196. highlightActiveLine: boolean;
  197. highlightSelectedWord: boolean;
  198. readOnly: boolean;
  199. copyWithEmptySelection: boolean;
  200. cursorStyle: 'ace' | 'slim' | 'smooth' | 'wide';
  201. mergeUndoDeltas: true | false | 'always';
  202. behavioursEnabled: boolean;
  203. wrapBehavioursEnabled: boolean;
  204. enableAutoIndent: boolean;
  205. autoScrollEditorIntoView: boolean;
  206. keyboardHandler: string;
  207. placeholder: string;
  208. value: string;
  209. session: EditSession;
  210. }
  211. export interface SearchOptions {
  212. needle: string | RegExp;
  213. preventScroll: boolean;
  214. backwards: boolean;
  215. start: Range;
  216. skipCurrent: boolean;
  217. range: Range;
  218. preserveCase: boolean;
  219. regExp: RegExp;
  220. wholeWord: boolean;
  221. caseSensitive: boolean;
  222. wrap: boolean;
  223. }
  224. export interface EventEmitter {
  225. once(name: string, callback: Function): void;
  226. setDefaultHandler(name: string, callback: Function): void;
  227. removeDefaultHandler(name: string, callback: Function): void;
  228. on(name: string, callback: Function, capturing?: boolean): void;
  229. addEventListener(name: string, callback: Function, capturing?: boolean): void;
  230. off(name: string, callback: Function): void;
  231. removeListener(name: string, callback: Function): void;
  232. removeEventListener(name: string, callback: Function): void;
  233. }
  234. export interface Point {
  235. row: number;
  236. column: number;
  237. }
  238. export interface Delta {
  239. action: 'insert' | 'remove';
  240. start: Point;
  241. end: Point;
  242. lines: string[];
  243. }
  244. export interface Annotation {
  245. row?: number;
  246. column?: number;
  247. text: string;
  248. type: string;
  249. }
  250. export interface Command {
  251. name?: string;
  252. bindKey?: string | { mac?: string, win?: string };
  253. readOnly?: boolean;
  254. exec: (editor: Editor, args?: any) => void;
  255. }
  256. export type CommandLike = Command | ((editor: Editor) => void);
  257. export interface KeyboardHandler {
  258. handleKeyboard: Function;
  259. }
  260. export interface MarkerLike {
  261. range: Range;
  262. type: string;
  263. renderer?: MarkerRenderer;
  264. clazz: string;
  265. inFront: boolean;
  266. id: number;
  267. update?: (html: string[],
  268. // TODO maybe define Marker class
  269. marker: any,
  270. session: EditSession,
  271. config: any) => void;
  272. }
  273. export type MarkerRenderer = (html: string[],
  274. range: Range,
  275. left: number,
  276. top: number,
  277. config: any) => void;
  278. export interface Token {
  279. type: string;
  280. value: string;
  281. index?: number;
  282. start?: number;
  283. }
  284. export interface Completion {
  285. value: string;
  286. score: number;
  287. meta?: string;
  288. name?: string;
  289. caption?: string;
  290. }
  291. export interface Tokenizer {
  292. removeCapturingGroups(src: string): string;
  293. createSplitterRegexp(src: string, flag?: string): RegExp;
  294. getLineTokens(line: string, startState: string | string[]): Token[];
  295. }
  296. interface TokenIterator {
  297. getCurrentToken(): Token;
  298. getCurrentTokenColumn(): number;
  299. getCurrentTokenRow(): number;
  300. getCurrentTokenPosition(): Point;
  301. getCurrentTokenRange(): Range;
  302. stepBackward(): Token;
  303. stepForward(): Token;
  304. }
  305. export interface SyntaxMode {
  306. getTokenizer(): Tokenizer;
  307. toggleCommentLines(state: any,
  308. session: EditSession,
  309. startRow: number,
  310. endRow: number): void;
  311. toggleBlockComment(state: any,
  312. session: EditSession,
  313. range: Range,
  314. cursor: Point): void;
  315. getNextLineIndent(state: any, line: string, tab: string): string;
  316. checkOutdent(state: any, line: string, input: string): boolean;
  317. autoOutdent(state: any, doc: Document, row: number): void;
  318. // TODO implement WorkerClient types
  319. createWorker(session: EditSession): any;
  320. createModeDelegates(mapping: { [key: string]: string }): void;
  321. transformAction(state: string,
  322. action: string,
  323. editor: Editor,
  324. session: EditSession,
  325. text: string): any;
  326. getKeywords(append?: boolean): Array<string | RegExp>;
  327. getCompletions(state: string,
  328. session: EditSession,
  329. pos: Point,
  330. prefix: string): Completion[];
  331. }
  332. export interface Config {
  333. get(key: string): any;
  334. set(key: string, value: any): void;
  335. all(): { [key: string]: any };
  336. moduleUrl(name: string, component?: string): string;
  337. setModuleUrl(name: string, subst: string): string;
  338. loadModule(moduleName: string | [string, string],
  339. onLoad?: (module: any) => void): void;
  340. init(packaged: any): any;
  341. defineOptions(obj: any, path: string, options: { [key: string]: any }): Config;
  342. resetOptions(obj: any): void;
  343. setDefaultValue(path: string, name: string, value: any): void;
  344. setDefaultValues(path: string, optionHash: { [key: string]: any }): void;
  345. }
  346. export interface OptionsProvider {
  347. setOptions(optList: { [key: string]: any }): void;
  348. getOptions(optionNames?: string[] | { [key: string]: any }): { [key: string]: any };
  349. setOption(name: string, value: any): void;
  350. getOption(name: string): any;
  351. }
  352. export interface UndoManager {
  353. addSession(session: EditSession): void;
  354. add(delta: Delta, allowMerge: boolean, session: EditSession): void;
  355. addSelection(selection: string, rev?: number): void;
  356. startNewGroup(): void;
  357. markIgnored(from: number, to?: number): void;
  358. getSelection(rev: number, after?: boolean): { value: string, rev: number };
  359. getRevision(): number;
  360. getDeltas(from: number, to?: number): Delta[];
  361. undo(session: EditSession, dontSelect?: boolean): void;
  362. redo(session: EditSession, dontSelect?: boolean): void;
  363. reset(): void;
  364. canUndo(): boolean;
  365. canRedo(): boolean;
  366. bookmark(rev?: number): void;
  367. isAtBookmark(): boolean;
  368. }
  369. export interface EditSession extends EventEmitter, OptionsProvider, Folding {
  370. selection: Selection;
  371. // TODO: define BackgroundTokenizer
  372. on(name: 'changeFold',
  373. callback: (obj: { data: Fold, action: string }) => void): Function;
  374. on(name: 'changeScrollLeft', callback: (scrollLeft: number) => void): Function;
  375. on(name: 'changeScrollTop', callback: (scrollTop: number) => void): Function;
  376. on(name: 'tokenizerUpdate',
  377. callback: (obj: { data: { first: number, last: number } }) => void): Function;
  378. setOption<T extends keyof EditSessionOptions>(name: T, value: EditSessionOptions[T]): void;
  379. getOption<T extends keyof EditSessionOptions>(name: T): EditSessionOptions[T];
  380. setDocument(doc: Document): void;
  381. getDocument(): Document;
  382. resetCaches(): void;
  383. setValue(text: string): void;
  384. getValue(): string;
  385. getSelection(): Selection;
  386. getState(row: number): string;
  387. getTokens(row: number): Token[];
  388. getTokenAt(row: number, column: number): Token | null;
  389. setUndoManager(undoManager: UndoManager): void;
  390. markUndoGroup(): void;
  391. getUndoManager(): UndoManager;
  392. getTabString(): string;
  393. setUseSoftTabs(val: boolean): void;
  394. getUseSoftTabs(): boolean;
  395. setTabSize(tabSize: number): void;
  396. getTabSize(): number;
  397. isTabStop(position: Point): boolean;
  398. setNavigateWithinSoftTabs(navigateWithinSoftTabs: boolean): void;
  399. getNavigateWithinSoftTabs(): boolean;
  400. setOverwrite(overwrite: boolean): void;
  401. getOverwrite(): boolean;
  402. toggleOverwrite(): void;
  403. addGutterDecoration(row: number, className: string): void;
  404. removeGutterDecoration(row: number, className: string): void;
  405. getBreakpoints(): string[];
  406. setBreakpoints(rows: number[]): void;
  407. clearBreakpoints(): void;
  408. setBreakpoint(row: number, className: string): void;
  409. clearBreakpoint(row: number): void;
  410. addMarker(range: Range,
  411. className: string,
  412. type: "fullLine" | "screenLine" | "text" | MarkerRenderer,
  413. inFront?: boolean): number;
  414. addDynamicMarker(marker: MarkerLike, inFront: boolean): MarkerLike;
  415. removeMarker(markerId: number): void;
  416. getMarkers(inFront?: boolean): MarkerLike[];
  417. highlight(re: RegExp): void;
  418. highlightLines(startRow: number,
  419. endRow: number,
  420. className: string,
  421. inFront?: boolean): Range;
  422. setAnnotations(annotations: Annotation[]): void;
  423. getAnnotations(): Annotation[];
  424. clearAnnotations(): void;
  425. getWordRange(row: number, column: number): Range;
  426. getAWordRange(row: number, column: number): Range;
  427. setNewLineMode(newLineMode: NewLineMode): void;
  428. getNewLineMode(): NewLineMode;
  429. setUseWorker(useWorker: boolean): void;
  430. getUseWorker(): boolean;
  431. setMode(mode: string | SyntaxMode, callback?: () => void): void;
  432. getMode(): SyntaxMode;
  433. setScrollTop(scrollTop: number): void;
  434. getScrollTop(): number;
  435. setScrollLeft(scrollLeft: number): void;
  436. getScrollLeft(): number;
  437. getScreenWidth(): number;
  438. getLineWidgetMaxWidth(): number;
  439. getLine(row: number): string;
  440. getLines(firstRow: number, lastRow: number): string[];
  441. getLength(): number;
  442. getTextRange(range: Range): string;
  443. insert(position: Point, text: string): void;
  444. remove(range: Range): void;
  445. removeFullLines(firstRow: number, lastRow: number): void;
  446. undoChanges(deltas: Delta[], dontSelect?: boolean): void;
  447. redoChanges(deltas: Delta[], dontSelect?: boolean): void;
  448. setUndoSelect(enable: boolean): void;
  449. replace(range: Range, text: string): void;
  450. moveText(fromRange: Range, toPosition: Point, copy?: boolean): void;
  451. indentRows(startRow: number, endRow: number, indentString: string): void;
  452. outdentRows(range: Range): void;
  453. moveLinesUp(firstRow: number, lastRow: number): void;
  454. moveLinesDown(firstRow: number, lastRow: number): void;
  455. duplicateLines(firstRow: number, lastRow: number): void;
  456. setUseWrapMode(useWrapMode: boolean): void;
  457. getUseWrapMode(): boolean;
  458. setWrapLimitRange(min: number, max: number): void;
  459. adjustWrapLimit(desiredLimit: number): boolean;
  460. getWrapLimit(): number;
  461. setWrapLimit(limit: number): void;
  462. getWrapLimitRange(): { min: number, max: number };
  463. getRowLineCount(row: number): number;
  464. getRowWrapIndent(screenRow: number): number;
  465. getScreenLastRowColumn(screenRow: number): number;
  466. getDocumentLastRowColumn(docRow: number, docColumn: number): number;
  467. getdocumentLastRowColumnPosition(docRow: number, docColumn: number): Point;
  468. getRowSplitData(row: number): string | undefined;
  469. getScreenTabSize(screenColumn: number): number;
  470. screenToDocumentRow(screenRow: number, screenColumn: number): number;
  471. screenToDocumentColumn(screenRow: number, screenColumn: number): number;
  472. screenToDocumentPosition(screenRow: number,
  473. screenColumn: number,
  474. offsetX?: number): Point;
  475. documentToScreenPosition(docRow: number, docColumn: number): Point;
  476. documentToScreenPosition(position: Point): Point;
  477. documentToScreenColumn(row: number, docColumn: number): number;
  478. documentToScreenRow(docRow: number, docColumn: number): number;
  479. getScreenLength(): number;
  480. destroy(): void;
  481. }
  482. export interface KeyBinding {
  483. setDefaultHandler(handler: KeyboardHandler): void;
  484. setKeyboardHandler(handler: KeyboardHandler): void;
  485. addKeyboardHandler(handler: KeyboardHandler, pos: number): void;
  486. removeKeyboardHandler(handler: KeyboardHandler): boolean;
  487. getKeyboardHandler(): KeyboardHandler;
  488. getStatusText(): string;
  489. onCommandKey(e: any, hashId: number, keyCode: number): boolean;
  490. onTextInput(text: string): boolean;
  491. }
  492. interface CommandMap {
  493. [name: string]: Command;
  494. }
  495. type execEventHandler = (obj: {
  496. editor: Editor,
  497. command: Command,
  498. args: any[]
  499. }) => void;
  500. export interface CommandManager extends EventEmitter {
  501. byName: CommandMap,
  502. commands: CommandMap,
  503. on(name: 'exec', callback: execEventHandler): Function;
  504. on(name: 'afterExec', callback: execEventHandler): Function;
  505. once(name: string, callback: Function): void;
  506. setDefaultHandler(name: string, callback: Function): void;
  507. removeDefaultHandler(name: string, callback: Function): void;
  508. on(name: string, callback: Function, capturing?: boolean): Function;
  509. addEventListener(name: string, callback: Function, capturing?: boolean): void;
  510. off(name: string, callback: Function): void;
  511. removeListener(name: string, callback: Function): void;
  512. removeEventListener(name: string, callback: Function): void;
  513. exec(command: string, editor: Editor, args: any): boolean;
  514. toggleRecording(editor: Editor): void;
  515. replay(editor: Editor): void;
  516. addCommand(command: Command): void;
  517. addCommands(command: Command[]): void;
  518. removeCommand(command: Command | string, keepCommand?: boolean): void;
  519. removeCommands(command: Command[]): void;
  520. bindKey(key: string | { mac?: string, win?: string },
  521. command: CommandLike,
  522. position?: number): void;
  523. bindKeys(keys: {[s: string]: Function}): void;
  524. parseKeys(keyPart: string): {key: string, hashId: number};
  525. findKeyCommand(hashId: number, keyString: string): string | undefined;
  526. handleKeyboard(data: {}, hashId: number, keyString: string, keyCode: string | number): void | {command: string};
  527. getStatusText(editor: Editor, data: {}): string;
  528. }
  529. export interface VirtualRenderer extends OptionsProvider, EventEmitter {
  530. container: HTMLElement;
  531. setOption<T extends keyof VirtualRendererOptions>(name: T, value: VirtualRendererOptions[T]): void;
  532. getOption<T extends keyof VirtualRendererOptions>(name: T): VirtualRendererOptions[T];
  533. setSession(session: EditSession): void;
  534. updateLines(firstRow: number, lastRow: number, force?: boolean): void;
  535. updateText(): void;
  536. updateFull(force?: boolean): void;
  537. updateFontSize(): void;
  538. adjustWrapLimit(): boolean;
  539. setAnimatedScroll(shouldAnimate: boolean): void;
  540. getAnimatedScroll(): boolean;
  541. setShowInvisibles(showInvisibles: boolean): void;
  542. getShowInvisibles(): boolean;
  543. setDisplayIndentGuides(display: boolean): void;
  544. getDisplayIndentGuides(): boolean;
  545. setShowPrintMargin(showPrintMargin: boolean): void;
  546. getShowPrintMargin(): boolean;
  547. setPrintMarginColumn(showPrintMargin: boolean): void;
  548. getPrintMarginColumn(): boolean;
  549. setShowGutter(show: boolean): void;
  550. getShowGutter(): boolean;
  551. setFadeFoldWidgets(show: boolean): void;
  552. getFadeFoldWidgets(): boolean;
  553. setHighlightGutterLine(shouldHighlight: boolean): void;
  554. getHighlightGutterLine(): boolean;
  555. getContainerElement(): HTMLElement;
  556. getMouseEventTarget(): HTMLElement;
  557. getTextAreaContainer(): HTMLElement;
  558. getFirstVisibleRow(): number;
  559. getFirstFullyVisibleRow(): number;
  560. getLastFullyVisibleRow(): number;
  561. getLastVisibleRow(): number;
  562. setPadding(padding: number): void;
  563. setScrollMargin(top: number,
  564. bottom: number,
  565. left: number,
  566. right: number): void;
  567. setHScrollBarAlwaysVisible(alwaysVisible: boolean): void;
  568. getHScrollBarAlwaysVisible(): boolean;
  569. setVScrollBarAlwaysVisible(alwaysVisible: boolean): void;
  570. getVScrollBarAlwaysVisible(): boolean;
  571. freeze(): void;
  572. unfreeze(): void;
  573. updateFrontMarkers(): void;
  574. updateBackMarkers(): void;
  575. updateBreakpoints(): void;
  576. setAnnotations(annotations: Annotation[]): void;
  577. updateCursor(): void;
  578. hideCursor(): void;
  579. showCursor(): void;
  580. scrollSelectionIntoView(anchor: Point,
  581. lead: Point,
  582. offset?: number): void;
  583. scrollCursorIntoView(cursor: Point, offset?: number): void;
  584. getScrollTop(): number;
  585. getScrollLeft(): number;
  586. getScrollTopRow(): number;
  587. getScrollBottomRow(): number;
  588. scrollToRow(row: number): void;
  589. alignCursor(cursor: Point | number, alignment: number): number;
  590. scrollToLine(line: number,
  591. center: boolean,
  592. animate: boolean,
  593. callback: () => void): void;
  594. animateScrolling(fromValue: number, callback: () => void): void;
  595. scrollToY(scrollTop: number): void;
  596. scrollToX(scrollLeft: number): void;
  597. scrollTo(x: number, y: number): void;
  598. scrollBy(deltaX: number, deltaY: number): void;
  599. isScrollableBy(deltaX: number, deltaY: number): boolean;
  600. textToScreenCoordinates(row: number, column: number): { pageX: number, pageY: number };
  601. visualizeFocus(): void;
  602. visualizeBlur(): void;
  603. showComposition(position: number): void;
  604. setCompositionText(text: string): void;
  605. hideComposition(): void;
  606. setTheme(theme: string, callback?: () => void): void;
  607. getTheme(): string;
  608. setStyle(style: string, include?: boolean): void;
  609. unsetStyle(style: string): void;
  610. setCursorStyle(style: string): void;
  611. setMouseCursor(cursorStyle: string): void;
  612. attachToShadowRoot(): void;
  613. destroy(): void;
  614. }
  615. export interface Selection extends EventEmitter {
  616. moveCursorWordLeft(): void;
  617. moveCursorWordRight(): void;
  618. fromOrientedRange(range: Range): void;
  619. setSelectionRange(match: any): void;
  620. getAllRanges(): Range[];
  621. addRange(range: Range): void;
  622. isEmpty(): boolean;
  623. isMultiLine(): boolean;
  624. setCursor(row: number, column: number): void;
  625. setAnchor(row: number, column: number): void;
  626. getAnchor(): Point;
  627. getCursor(): Point;
  628. isBackwards(): boolean;
  629. getRange(): Range;
  630. clearSelection(): void;
  631. selectAll(): void;
  632. setRange(range: Range, reverse?: boolean): void;
  633. selectTo(row: number, column: number): void;
  634. selectToPosition(pos: any): void;
  635. selectUp(): void;
  636. selectDown(): void;
  637. selectRight(): void;
  638. selectLeft(): void;
  639. selectLineStart(): void;
  640. selectLineEnd(): void;
  641. selectFileEnd(): void;
  642. selectFileStart(): void;
  643. selectWordRight(): void;
  644. selectWordLeft(): void;
  645. getWordRange(): void;
  646. selectWord(): void;
  647. selectAWord(): void;
  648. selectLine(): void;
  649. moveCursorUp(): void;
  650. moveCursorDown(): void;
  651. moveCursorLeft(): void;
  652. moveCursorRight(): void;
  653. moveCursorLineStart(): void;
  654. moveCursorLineEnd(): void;
  655. moveCursorFileEnd(): void;
  656. moveCursorFileStart(): void;
  657. moveCursorLongWordRight(): void;
  658. moveCursorLongWordLeft(): void;
  659. moveCursorBy(rows: number, chars: number): void;
  660. moveCursorToPosition(position: any): void;
  661. moveCursorTo(row: number, column: number, keepDesiredColumn?: boolean): void;
  662. moveCursorToScreen(row: number, column: number, keepDesiredColumn: boolean): void;
  663. toJSON(): SavedSelection | SavedSelection[];
  664. fromJSON(selection: SavedSelection | SavedSelection[]): void;
  665. }
  666. interface SavedSelection {
  667. start: Point;
  668. end: Point;
  669. isBackwards: boolean;
  670. }
  671. var Selection: {
  672. new(session: EditSession): Selection;
  673. }
  674. export interface Editor extends OptionsProvider, EventEmitter {
  675. container: HTMLElement;
  676. renderer: VirtualRenderer;
  677. id: string;
  678. commands: CommandManager;
  679. keyBinding: KeyBinding;
  680. session: EditSession;
  681. selection: Selection;
  682. on(name: 'blur', callback: (e: Event) => void): Function;
  683. on(name: 'input', callback: () => void): Function;
  684. on(name: 'change', callback: (delta: Delta) => void): Function;
  685. on(name: 'changeSelectionStyle', callback: (obj: { data: string }) => void): Function;
  686. on(name: 'changeSession',
  687. callback: (obj: { session: EditSession, oldSession: EditSession }) => void
  688. ): Function;
  689. on(name: 'copy', callback: (obj: { text: string }) => void): Function;
  690. on(name: 'focus', callback: (e: Event) => void): Function;
  691. on(name: 'paste', callback: (obj: { text: string }) => void): Function;
  692. setOption<T extends keyof EditorOptions>(name: T, value: EditorOptions[T]): void;
  693. getOption<T extends keyof EditorOptions>(name: T): EditorOptions[T];
  694. setKeyboardHandler(keyboardHandler: string, callback?: () => void): void;
  695. getKeyboardHandler(): string;
  696. setSession(session: EditSession): void;
  697. getSession(): EditSession;
  698. setValue(val: string, cursorPos?: number): string;
  699. getValue(): string;
  700. getSelection(): Selection;
  701. resize(force?: boolean): void;
  702. setTheme(theme: string, callback?: () => void): void;
  703. getTheme(): string;
  704. setStyle(style: string): void;
  705. unsetStyle(style: string): void;
  706. getFontSize(): string;
  707. setFontSize(size: string): void;
  708. focus(): void;
  709. isFocused(): boolean;
  710. blur(): void;
  711. getSelectedText(): string;
  712. getCopyText(): string;
  713. execCommand(command: string | string[], args?: any): boolean;
  714. insert(text: string, pasted?: boolean): void;
  715. setOverwrite(overwrite: boolean): void;
  716. getOverwrite(): boolean;
  717. toggleOverwrite(): void;
  718. setScrollSpeed(speed: number): void;
  719. getScrollSpeed(): number;
  720. setDragDelay(dragDelay: number): void;
  721. getDragDelay(): number;
  722. setSelectionStyle(val: string): void;
  723. getSelectionStyle(): string;
  724. setHighlightActiveLine(shouldHighlight: boolean): void;
  725. getHighlightActiveLine(): boolean;
  726. setHighlightGutterLine(shouldHighlight: boolean): void;
  727. getHighlightGutterLine(): boolean;
  728. setHighlightSelectedWord(shouldHighlight: boolean): void;
  729. getHighlightSelectedWord(): boolean;
  730. setAnimatedScroll(shouldAnimate: boolean): void;
  731. getAnimatedScroll(): boolean;
  732. setShowInvisibles(showInvisibles: boolean): void;
  733. getShowInvisibles(): boolean;
  734. setDisplayIndentGuides(display: boolean): void;
  735. getDisplayIndentGuides(): boolean;
  736. setShowPrintMargin(showPrintMargin: boolean): void;
  737. getShowPrintMargin(): boolean;
  738. setPrintMarginColumn(showPrintMargin: number): void;
  739. getPrintMarginColumn(): number;
  740. setReadOnly(readOnly: boolean): void;
  741. getReadOnly(): boolean;
  742. setBehavioursEnabled(enabled: boolean): void;
  743. getBehavioursEnabled(): boolean;
  744. setWrapBehavioursEnabled(enabled: boolean): void;
  745. getWrapBehavioursEnabled(): boolean;
  746. setShowFoldWidgets(show: boolean): void;
  747. getShowFoldWidgets(): boolean;
  748. setFadeFoldWidgets(fade: boolean): void;
  749. getFadeFoldWidgets(): boolean;
  750. remove(dir?: 'left' | 'right'): void;
  751. removeWordRight(): void;
  752. removeWordLeft(): void;
  753. removeLineToEnd(): void;
  754. splitLine(): void;
  755. transposeLetters(): void;
  756. toLowerCase(): void;
  757. toUpperCase(): void;
  758. indent(): void;
  759. blockIndent(): void;
  760. blockOutdent(): void;
  761. sortLines(): void;
  762. toggleCommentLines(): void;
  763. toggleBlockComment(): void;
  764. modifyNumber(amount: number): void;
  765. removeLines(): void;
  766. duplicateSelection(): void;
  767. moveLinesDown(): void;
  768. moveLinesUp(): void;
  769. moveText(range: Range, toPosition: Point, copy?: boolean): Range;
  770. copyLinesUp(): void;
  771. copyLinesDown(): void;
  772. getFirstVisibleRow(): number;
  773. getLastVisibleRow(): number;
  774. isRowVisible(row: number): boolean;
  775. isRowFullyVisible(row: number): boolean;
  776. selectPageDown(): void;
  777. selectPageUp(): void;
  778. gotoPageDown(): void;
  779. gotoPageUp(): void;
  780. scrollPageDown(): void;
  781. scrollPageUp(): void;
  782. scrollToRow(row: number): void;
  783. scrollToLine(line: number, center: boolean, animate: boolean, callback: () => void): void;
  784. centerSelection(): void;
  785. getCursorPosition(): Point;
  786. getCursorPositionScreen(): Point;
  787. getSelectionRange(): Range;
  788. selectAll(): void;
  789. clearSelection(): void;
  790. moveCursorTo(row: number, column: number): void;
  791. moveCursorToPosition(pos: Point): void;
  792. jumpToMatching(select: boolean, expand: boolean): void;
  793. gotoLine(lineNumber: number, column: number, animate: boolean): void;
  794. navigateTo(row: number, column: number): void;
  795. navigateUp(): void;
  796. navigateDown(): void;
  797. navigateLeft(): void;
  798. navigateRight(): void;
  799. navigateLineStart(): void;
  800. navigateLineEnd(): void;
  801. navigateFileEnd(): void;
  802. navigateFileStart(): void;
  803. navigateWordRight(): void;
  804. navigateWordLeft(): void;
  805. replace(replacement: string, options?: Partial<SearchOptions>): number;
  806. replaceAll(replacement: string, options?: Partial<SearchOptions>): number;
  807. getLastSearchOptions(): Partial<SearchOptions>;
  808. find(needle: string | RegExp, options?: Partial<SearchOptions>, animate?: boolean): Ace.Range | undefined;
  809. findNext(options?: Partial<SearchOptions>, animate?: boolean): void;
  810. findPrevious(options?: Partial<SearchOptions>, animate?: boolean): void;
  811. findAll(needle: string | RegExp, options?: Partial<SearchOptions>, additive?: boolean): number;
  812. undo(): void;
  813. redo(): void;
  814. destroy(): void;
  815. setAutoScrollEditorIntoView(enable: boolean): void;
  816. completers: Completer[];
  817. }
  818. type CompleterCallback = (error: any, completions: Completion[]) => void;
  819. interface Completer {
  820. identifierRegexps?: Array<RegExp>,
  821. getCompletions(editor: Editor,
  822. session: EditSession,
  823. position: Point,
  824. prefix: string,
  825. callback: CompleterCallback): void;
  826. }
  827. }
  828. export const version: string;
  829. export const config: Ace.Config;
  830. export function require(name: string): any;
  831. export function edit(el: Element | string, options?: Partial<Ace.EditorOptions>): Ace.Editor;
  832. export function createEditSession(text: Ace.Document | string, mode: Ace.SyntaxMode): Ace.EditSession;
  833. export const VirtualRenderer: {
  834. new(container: HTMLElement, theme?: string): Ace.VirtualRenderer;
  835. };
  836. export const EditSession: {
  837. new(text: string | Document, mode?: Ace.SyntaxMode): Ace.EditSession;
  838. };
  839. export const UndoManager: {
  840. new(): Ace.UndoManager;
  841. };
  842. export const Range: {
  843. new(startRow: number, startColumn: number, endRow: number, endColumn: number): Ace.Range;
  844. fromPoints(start: Ace.Point, end: Ace.Point): Ace.Range;
  845. comparePoints(p1: Ace.Point, p2: Ace.Point): number;
  846. };