加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
ace.d.ts 40.76 KB
一键复制 编辑 原始数据 按行查看 历史
nightwing 提交于 2023-05-24 02:16 . refactor and add tests
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155
/// <reference path="./ace-modes.d.ts" />
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<string, HighlightRule[]>;
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<string, string>, 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<string, Record<string, BehaviorAction>>;
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<string | RegExp>;
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<T extends keyof EditSessionOptions>(name: T, value: EditSessionOptions[T]): void;
getOption<T extends keyof EditSessionOptions>(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<T extends keyof VirtualRendererOptions>(name: T, value: VirtualRendererOptions[T]): void;
getOption<T extends keyof VirtualRendererOptions>(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<T extends keyof EditorOptions>(name: T, value: EditorOptions[T]): void;
getOption<T extends keyof EditorOptions>(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<SearchOptions>): number;
replaceAll(replacement: string, options?: Partial<SearchOptions>): number;
getLastSearchOptions(): Partial<SearchOptions>;
find(needle: string | RegExp, options?: Partial<SearchOptions>, animate?: boolean): Ace.Range | undefined;
findNext(options?: Partial<SearchOptions>, animate?: boolean): void;
findPrevious(options?: Partial<SearchOptions>, animate?: boolean): void;
findAll(needle: string | RegExp, options?: Partial<SearchOptions>, 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<RegExp>,
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.EditorOptions>): 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<T> = (editor: Ace.Editor) => T;
interface TooltipCommand extends Ace.Command {
enabled: TooltipCommandFunction<boolean> | boolean,
getValue?: TooltipCommandFunction<any>,
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<string, Ace.Command>
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;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化