diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 426449ac05..f17b7788de 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -281,6 +281,7 @@ All definitions files include a header with the author and editors, so at some p * [TV4](https://github.com/geraintluff/tv4) (by [Bart van der Schoor](https://github.com/Bartvds)) * [Tags Manager](http://welldonethings.com/tags/manager) (by [Vincent Bortone](https://github.com/vbortone)) * [Teechart](http://www.steema.com) (by [Steema](http://www.steema.com)) +* [text-buffer](https://github.com/atom/text-buffer) (by [vvakame](https://github.com/vvakame)) * [three.js](http://mrdoob.github.com/three.js/) (by [Kon](http://phyzkit.net/)) * [Toastr](https://github.com/CodeSeven/toastr) (by [Boris Yankov](https://github.com/borisyankov)) * [trunk8](https://github.com/rviscomi/trunk8) (by [Blake Niemyjski](https://github.com/niemyjski)) diff --git a/atom/atom.d.ts b/atom/atom.d.ts index ad767f34d1..7fead9efdd 100644 --- a/atom/atom.d.ts +++ b/atom/atom.d.ts @@ -7,6 +7,7 @@ /// /// /// +/// // Policy: this definition file only declare element related to `atom`. // if js file include to another npm package (e.g. "space-pen", "mixto" and "emissary"). @@ -104,11 +105,42 @@ declare module AtomCore { // TBD } - interface ICommandPanel { - // TBD + interface IGutterViewStatic { + new(): IGutterView; + content():any; } - interface ITextBuffer { + interface IGutterView extends View { + firstScreenRow:any; + lastScreenRow:any; + initialize():void; + initialize(view:View, args:any):void; // do not use + afterAttach(onDom?:any):any; + beforeRemove():any; + handleMouseEvents(e:JQueryMouseEventObject):any; + getEditorView():any /* EditorView */ + ; + getEditor():IEditor; + getLineNumberElements():HTMLCollection; + getLineNumberElementsForClass(klass:string):NodeList; + getLineNumberElement(bufferRow:number):NodeList; + addClassToAllLines(klass:string):boolean; + removeClassFromAllLines(klass:string):boolean; + addClassToLine(bufferRow:number, klass:string):boolean; + removeClassFromLine(bufferRow:number, klass:string):boolean; + updateLineNumbers(changes:any[], startScreenRow?:number, endScreenRow?:number):any; + prependLineElements(lineElements:any):void; + appendLineElements(lineElements:any):void; + removeLineElements(numberOfElements:number):void; + buildLineElements(startScreenRow:any, endScreenRow:any):any; + buildLineElementsHtml(startScreenRow:any, endScreenRow:any):any; + updateFoldableClasses(changes:any[]):any; + removeLineHighlights():void; + addLineHighlight(row:number, emptySelection?:boolean):any; + highlightLines():boolean; + } + + interface ICommandPanel { // TBD } @@ -126,7 +158,7 @@ declare module AtomCore { declaredPropertyValues:any; tokenizedBuffer: ITokenizedBuffer; - buffer: ITextBuffer; + buffer: TextBuffer.ITextBuffer; charWidthsByScope:any; markers:{ [index:number]:IDisplayBufferMarker; }; foldsByMarkerId:any; @@ -183,7 +215,7 @@ declare module AtomCore { scrollToScreenRange(screenRange:any):any; scrollToScreenPosition(screenPosition:any):any; scrollToBufferPosition(bufferPosition:any):any; - pixelRectForScreenRange(screenRange:IRange):any; + pixelRectForScreenRange(screenRange:TextBuffer.IRange):any; getTabLength():number; setTabLength(tabLength:number):any; setSoftWrap(softWrap:boolean):boolean; @@ -211,59 +243,59 @@ declare module AtomCore { lastScreenRowForBufferRow(bufferRow:number):number; bufferRowForScreenRow(screenRow:number):number; - screenRangeForBufferRange(bufferRange:IPoint[]):IRange; + screenRangeForBufferRange(bufferRange:TextBuffer.IPoint[]):TextBuffer.IRange; - screenRangeForBufferRange(bufferRange:IRange):IRange; + screenRangeForBufferRange(bufferRange:TextBuffer.IRange):TextBuffer.IRange; - screenRangeForBufferRange(bufferRange:{start: IPoint; end: IPoint}):IRange; - screenRangeForBufferRange(bufferRange:{start: number[]; end: IPoint}):IRange; - screenRangeForBufferRange(bufferRange:{start: {row:number; col:number;}; end: IPoint}):IRange; + screenRangeForBufferRange(bufferRange:{start: TextBuffer.IPoint; end: TextBuffer.IPoint}):TextBuffer.IRange; + screenRangeForBufferRange(bufferRange:{start: number[]; end: TextBuffer.IPoint}):TextBuffer.IRange; + screenRangeForBufferRange(bufferRange:{start: {row:number; col:number;}; end: TextBuffer.IPoint}):TextBuffer.IRange; - screenRangeForBufferRange(bufferRange:{start: IPoint; end: number[]}):IRange; - screenRangeForBufferRange(bufferRange:{start: number[]; end: number[]}):IRange; - screenRangeForBufferRange(bufferRange:{start: {row:number; col:number;}; end: number[]}):IRange; + screenRangeForBufferRange(bufferRange:{start: TextBuffer.IPoint; end: number[]}):TextBuffer.IRange; + screenRangeForBufferRange(bufferRange:{start: number[]; end: number[]}):TextBuffer.IRange; + screenRangeForBufferRange(bufferRange:{start: {row:number; col:number;}; end: number[]}):TextBuffer.IRange; - screenRangeForBufferRange(bufferRange:{start: IPoint; end: {row:number; col:number;}}):IRange; - screenRangeForBufferRange(bufferRange:{start: number[]; end: {row:number; col:number;}}):IRange; - screenRangeForBufferRange(bufferRange:{start: {row:number; col:number;}; end: {row:number; col:number;}}):IRange; + screenRangeForBufferRange(bufferRange:{start: TextBuffer.IPoint; end: {row:number; col:number;}}):TextBuffer.IRange; + screenRangeForBufferRange(bufferRange:{start: number[]; end: {row:number; col:number;}}):TextBuffer.IRange; + screenRangeForBufferRange(bufferRange:{start: {row:number; col:number;}; end: {row:number; col:number;}}):TextBuffer.IRange; - bufferRangeForScreenRange(screenRange:IPoint[]):IRange; + bufferRangeForScreenRange(screenRange:TextBuffer.IPoint[]):TextBuffer.IRange; - bufferRangeForScreenRange(screenRange:IRange):IRange; + bufferRangeForScreenRange(screenRange:TextBuffer.IRange):TextBuffer.IRange; - bufferRangeForScreenRange(screenRange:{start: IPoint; end: IPoint}):IRange; - bufferRangeForScreenRange(screenRange:{start: number[]; end: IPoint}):IRange; - bufferRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: IPoint}):IRange; + bufferRangeForScreenRange(screenRange:{start: TextBuffer.IPoint; end: TextBuffer.IPoint}):TextBuffer.IRange; + bufferRangeForScreenRange(screenRange:{start: number[]; end: TextBuffer.IPoint}):TextBuffer.IRange; + bufferRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: TextBuffer.IPoint}):TextBuffer.IRange; - bufferRangeForScreenRange(screenRange:{start: IPoint; end: number[]}):IRange; - bufferRangeForScreenRange(screenRange:{start: number[]; end: number[]}):IRange; - bufferRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: number[]}):IRange; + bufferRangeForScreenRange(screenRange:{start: TextBuffer.IPoint; end: number[]}):TextBuffer.IRange; + bufferRangeForScreenRange(screenRange:{start: number[]; end: number[]}):TextBuffer.IRange; + bufferRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: number[]}):TextBuffer.IRange; - bufferRangeForScreenRange(screenRange:{start: IPoint; end: {row:number; col:number;}}):IRange; - bufferRangeForScreenRange(screenRange:{start: number[]; end: {row:number; col:number;}}):IRange; - bufferRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: {row:number; col:number;}}):IRange; + bufferRangeForScreenRange(screenRange:{start: TextBuffer.IPoint; end: {row:number; col:number;}}):TextBuffer.IRange; + bufferRangeForScreenRange(screenRange:{start: number[]; end: {row:number; col:number;}}):TextBuffer.IRange; + bufferRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: {row:number; col:number;}}):TextBuffer.IRange; - pixelRangeForScreenRange(screenRange:IPoint[], clip?:boolean):IRange; + pixelRangeForScreenRange(screenRange:TextBuffer.IPoint[], clip?:boolean):TextBuffer.IRange; - pixelRangeForScreenRange(screenRange:IRange, clip?:boolean):IRange; + pixelRangeForScreenRange(screenRange:TextBuffer.IRange, clip?:boolean):TextBuffer.IRange; - pixelRangeForScreenRange(screenRange:{start: IPoint; end: IPoint}, clip?:boolean):IRange; - pixelRangeForScreenRange(screenRange:{start: number[]; end: IPoint}, clip?:boolean):IRange; - pixelRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: IPoint}, clip?:boolean):IRange; + pixelRangeForScreenRange(screenRange:{start: TextBuffer.IPoint; end: TextBuffer.IPoint}, clip?:boolean):TextBuffer.IRange; + pixelRangeForScreenRange(screenRange:{start: number[]; end: TextBuffer.IPoint}, clip?:boolean):TextBuffer.IRange; + pixelRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: TextBuffer.IPoint}, clip?:boolean):TextBuffer.IRange; - pixelRangeForScreenRange(screenRange:{start: IPoint; end: number[]}, clip?:boolean):IRange; - pixelRangeForScreenRange(screenRange:{start: number[]; end: number[]}, clip?:boolean):IRange; - pixelRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: number[]}, clip?:boolean):IRange; + pixelRangeForScreenRange(screenRange:{start: TextBuffer.IPoint; end: number[]}, clip?:boolean):TextBuffer.IRange; + pixelRangeForScreenRange(screenRange:{start: number[]; end: number[]}, clip?:boolean):TextBuffer.IRange; + pixelRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: number[]}, clip?:boolean):TextBuffer.IRange; - pixelRangeForScreenRange(screenRange:{start: IPoint; end: {row:number; col:number;}}, clip?:boolean):IRange; - pixelRangeForScreenRange(screenRange:{start: number[]; end: {row:number; col:number;}}, clip?:boolean):IRange; - pixelRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: {row:number; col:number;}}, clip?:boolean):IRange; + pixelRangeForScreenRange(screenRange:{start: TextBuffer.IPoint; end: {row:number; col:number;}}, clip?:boolean):TextBuffer.IRange; + pixelRangeForScreenRange(screenRange:{start: number[]; end: {row:number; col:number;}}, clip?:boolean):TextBuffer.IRange; + pixelRangeForScreenRange(screenRange:{start: {row:number; col:number;}; end: {row:number; col:number;}}, clip?:boolean):TextBuffer.IRange; - pixelPositionForScreenPosition(screenPosition:IPoint, clip?:boolean):IPoint; - pixelPositionForScreenPosition(screenPosition:number[], clip?:boolean):IPoint; - pixelPositionForScreenPosition(screenPosition:{row:number; col:number;}, clip?:boolean):IPoint; + pixelPositionForScreenPosition(screenPosition:TextBuffer.IPoint, clip?:boolean):TextBuffer.IPoint; + pixelPositionForScreenPosition(screenPosition:number[], clip?:boolean):TextBuffer.IPoint; + pixelPositionForScreenPosition(screenPosition:{row:number; col:number;}, clip?:boolean):TextBuffer.IPoint; - screenPositionForPixelPosition(pixelPosition:any):IPoint; + screenPositionForPixelPosition(pixelPosition:any):TextBuffer.IPoint; pixelPositionForBufferPosition(bufferPosition:any):any; getLineCount():number; @@ -279,14 +311,14 @@ declare module AtomCore { reloadGrammar():any; clipScreenPosition(screenPosition:any, options:any):any; findWrapColumn(line:any, softWrapColumn:any):any; - rangeForAllLines():IRange; + rangeForAllLines():TextBuffer.IRange; getMarker(id:number):IDisplayBufferMarker; getMarkers():IDisplayBufferMarker[]; getMarkerCount():number; - markScreenRange(range:IRange, ...args:any[]):IDisplayBufferMarker; - markBufferRange(range:IRange, options?:any):IDisplayBufferMarker; - markScreenPosition(screenPosition:IPoint, options?:any):IDisplayBufferMarker; - markBufferPosition(bufferPosition:IPoint, options?:any):IDisplayBufferMarker; + markScreenRange(range:TextBuffer.IRange, ...args:any[]):IDisplayBufferMarker; + markBufferRange(range:TextBuffer.IRange, options?:any):IDisplayBufferMarker; + markScreenPosition(screenPosition:TextBuffer.IPoint, options?:any):IDisplayBufferMarker; + markBufferPosition(bufferPosition:TextBuffer.IPoint, options?:any):IDisplayBufferMarker; destroyMarker(id:number):any; findMarker(params?:any):IDisplayBufferMarker; findMarkers(params?:any):IDisplayBufferMarker[]; @@ -333,17 +365,17 @@ declare module AtomCore { isEmpty():boolean; isReversed():boolean; isSingleScreenLine():boolean; - getScreenRange():IRange; + getScreenRange():TextBuffer.IRange; setScreenRange(screenRange:any, options:any):any; - getBufferRange():IRange; + getBufferRange():TextBuffer.IRange; setBufferRange(bufferRange:any, options:any):any; getBufferRowRange():number[]; autoscroll():void; getText():string; clear():boolean; - selectWord():IRange; + selectWord():TextBuffer.IRange; expandOverWord():any; - selectLine(row?:any):IRange; + selectLine(row?:any):TextBuffer.IRange; expandOverLine():boolean; selectToScreenPosition(position:any):any; selectToBufferPosition(position:any):any; @@ -368,7 +400,7 @@ declare module AtomCore { insertText(text:string, options?:any):any; normalizeIndents(text:string, indentBasis:number):any; indent(_arg?:any):any; - indentSelectedRows():IRange[]; + indentSelectedRows():TextBuffer.IRange[]; setIndentationForLine(line:string, indentLevel:number):any; backspace():any; backspaceToBeginningOfWord():any; @@ -402,7 +434,7 @@ declare module AtomCore { deserializing:boolean; callDisplayBufferCreatedHook:boolean; registerEditor:boolean; - buffer:ITextBuffer; + buffer:TextBuffer.ITextBuffer; languageMode: ILanguageMode; cursors:ICursor[]; selections: ISelection[]; @@ -456,14 +488,14 @@ declare module AtomCore { setText(text:any):void; getTextInRange(range:any):any; getLineCount():number; - getBuffer():ITextBuffer; + getBuffer():TextBuffer.ITextBuffer; getUri():string; isBufferRowBlank(bufferRow:any):boolean; isBufferRowCommented(bufferRow:any):void; nextNonBlankBufferRow(bufferRow:any):void; - getEofBufferPosition():IPoint; + getEofBufferPosition():TextBuffer.IPoint; getLastBufferRow():number; - bufferRangeForBufferRow(row:any, options:any):IRange; + bufferRangeForBufferRow(row:any, options:any):TextBuffer.IRange; lineForBufferRow(row:number):string; lineLengthForBufferRow(row:number):number; scan():any; @@ -471,11 +503,11 @@ declare module AtomCore { backwardsScanInBufferRange():any; isModified():boolean; shouldPromptToSave():boolean; - screenPositionForBufferPosition(bufferPosition:any, options?:any):IPoint; - bufferPositionForScreenPosition(screenPosition:any, options?:any):IPoint; - screenRangeForBufferRange(bufferRange:any):IRange; - bufferRangeForScreenRange(screenRange:any):IRange; - clipScreenPosition(screenPosition:any, options:any):IRange; + screenPositionForBufferPosition(bufferPosition:any, options?:any):TextBuffer.IPoint; + bufferPositionForScreenPosition(screenPosition:any, options?:any):TextBuffer.IPoint; + screenRangeForBufferRange(bufferRange:any):TextBuffer.IRange; + bufferRangeForScreenRange(screenRange:any):TextBuffer.IRange; + clipScreenPosition(screenPosition:any, options:any):TextBuffer.IRange; lineForScreenRow(row:any):ITokenizedLine; linesForScreenRows(start?:any, end?:any):ITokenizedLine[]; getScreenLineCount():number; @@ -487,9 +519,9 @@ declare module AtomCore { bufferRangeForScopeAtCursor(selector:string):any; tokenForBufferPosition(bufferPosition:any):IToken; getCursorScopes():string[]; - insertText(text:string, options?:any):IRange[]; - insertNewline():IRange[]; - insertNewlineBelow():IRange[]; + insertText(text:string, options?:any):TextBuffer.IRange[]; + insertNewline():TextBuffer.IRange[]; + insertNewlineBelow():TextBuffer.IRange[]; insertNewlineAbove():any; indent(options?:any):any; backspace():any[]; @@ -497,16 +529,16 @@ declare module AtomCore { backspaceToBeginningOfLine():any[]; delete():any[]; deleteToEndOfWord():any[]; - deleteLine():IRange[]; - indentSelectedRows():IRange[][]; - outdentSelectedRows():IRange[][]; - toggleLineCommentsInSelection():IRange[]; - autoIndentSelectedRows():IRange[][]; + deleteLine():TextBuffer.IRange[]; + indentSelectedRows():TextBuffer.IRange[][]; + outdentSelectedRows():TextBuffer.IRange[][]; + toggleLineCommentsInSelection():TextBuffer.IRange[]; + autoIndentSelectedRows():TextBuffer.IRange[][]; normalizeTabsInBufferRange(bufferRange:any):any; cutToEndOfLine():boolean[]; cutSelectedText():boolean[]; copySelectedText():boolean[]; - pasteText(options?:any):IRange[]; + pasteText(options?:any):TextBuffer.IRange[]; undo():any[]; redo():any[]; foldCurrentRow():any; @@ -564,17 +596,17 @@ declare module AtomCore { getLastSelectionInBuffer():ISelection; selectionIntersectsBufferRange(bufferRange:any):any; setCursorScreenPosition(position:any, options:any):any; - getCursorScreenPosition():IPoint; + getCursorScreenPosition():TextBuffer.IPoint; getCursorScreenRow():number; setCursorBufferPosition(position:any, options:any):any; - getCursorBufferPosition():IPoint; - getSelectedScreenRange():IRange; - getSelectedBufferRange():IRange; - getSelectedBufferRanges():IRange[]; + getCursorBufferPosition():TextBuffer.IPoint; + getSelectedScreenRange():TextBuffer.IRange; + getSelectedBufferRange():TextBuffer.IRange; + getSelectedBufferRanges():TextBuffer.IRange[]; getSelectedText():string; - getTextInBufferRange(range:IRange):string; - setTextInBufferRange(range:IRange, text:string):any; - getCurrentParagraphBufferRange():IRange; + getTextInBufferRange(range:TextBuffer.IRange):string; + setTextInBufferRange(range:TextBuffer.IRange, text:string):any; + getCurrentParagraphBufferRange():TextBuffer.IRange; getWordUnderCursor(options?:any):string; moveCursorUp(lineCount?:number):void; moveCursorDown(lineCount?:number):void; @@ -593,7 +625,7 @@ declare module AtomCore { moveCursorToPreviousWordBoundary():void; moveCursorToNextWordBoundary():void; moveCursors(fn:(cursor:ICursor)=>any):any; - selectToScreenPosition(position:IPoint):any; + selectToScreenPosition(position:TextBuffer.IPoint):any; selectRight():ISelection[]; selectLeft():ISelection[]; selectUp(rowCount?:number):ISelection[]; @@ -610,7 +642,7 @@ declare module AtomCore { addSelectionBelow():ISelection[]; addSelectionAbove():ISelection[]; splitSelectionsIntoLines():any[]; - transpose():IRange[]; + transpose():TextBuffer.IRange[]; upperCase():boolean[]; lowerCase():boolean[]; joinLines():any[]; @@ -993,157 +1025,6 @@ declare module AtomCore { interface IGit { } - interface IPointStatic { - new (row?:number, column?:number):IPoint; - - fromObject(point:IPoint, copy?:boolean):IPoint; - fromObject(object:number[]):IPoint; - fromObject(object:{row:number; col:number;}):IPoint; - - min(point1:IPoint, point2:IPoint):IPoint; - min(point1:number[], point2:IPoint):IPoint; - min(point1:{row:number; col:number;}, point2:IPoint):IPoint; - - min(point1:IPoint, point2:number[]):IPoint; - min(point1:number[], point2:number[]):IPoint; - min(point1:{row:number; col:number;}, point2:number[]):IPoint; - - min(point1:IPoint, point2:{row:number; col:number;}):IPoint; - min(point1:number[], point2:{row:number; col:number;}):IPoint; - min(point1:{row:number; col:number;}, point2:{row:number; col:number;}):IPoint; - } - - interface IPoint { - constructor: IPointStatic; - - row:number; - column:number; - - copy():IPoint; - freeze():IPoint; - - translate(delta:IPoint):IPoint; - translate(delta:number[]):IPoint; - translate(delta:{row:number; col:number;}):IPoint; - - add(other:IPoint):IPoint; - add(other:number[]):IPoint; - add(other:{row:number; col:number;}):IPoint; - - splitAt(column:number):IPoint[]; - compare(other:IPoint):number; - isEqual(other:IPoint):boolean; - isLessThan(other:IPoint):boolean; - isLessThanOrEqual(other:IPoint):boolean; - isGreaterThan(other:IPoint):boolean; - isGreaterThanOrEqual(other:IPoint):boolean; - toArray():number[]; - serialize():number[]; - } - - interface IRangeStatic { - deserialize(array:IPoint[]):IRange; - - fromObject(object:IPoint[]):IRange; - - fromObject(object:IRange, copy?:boolean):IRange; - - fromObject(object:{start: IPoint; end: IPoint}):IRange; - fromObject(object:{start: number[]; end: IPoint}):IRange; - fromObject(object:{start: {row:number; col:number;}; end: IPoint}):IRange; - - fromObject(object:{start: IPoint; end: number[]}):IRange; - fromObject(object:{start: number[]; end: number[]}):IRange; - fromObject(object:{start: {row:number; col:number;}; end: number[]}):IRange; - - fromObject(object:{start: IPoint; end: {row:number; col:number;}}):IRange; - fromObject(object:{start: number[]; end: {row:number; col:number;}}):IRange; - fromObject(object:{start: {row:number; col:number;}; end: {row:number; col:number;}}):IRange; - - fromText(point:IPoint, text:string):IRange; - fromText(point:number[], text:string):IRange; - fromText(point:{row:number; col:number;}, text:string):IRange; - fromText(text:string):IRange; - - fromPointWithDelta(startPoint:IPoint, rowDelta:number, columnDelta:number):IRange; - fromPointWithDelta(startPoint:number[], rowDelta:number, columnDelta:number):IRange; - fromPointWithDelta(startPoint:{row:number; col:number;}, rowDelta:number, columnDelta:number):IRange; - - new(point1:IPoint, point2:IPoint):IRange; - new(point1:number[], point2:IPoint):IRange; - new(point1:{row:number; col:number;}, point2:IPoint):IRange; - - new(point1:IPoint, point2:number[]):IRange; - new(point1:number[], point2:number[]):IRange; - new(point1:{row:number; col:number;}, point2:number[]):IRange; - - new(point1:IPoint, point2:{row:number; col:number;}):IRange; - new(point1:number[], point2:{row:number; col:number;}):IRange; - new(point1:{row:number; col:number;}, point2:{row:number; col:number;}):IRange; - } - - interface IRange { - constructor:IRangeStatic; - - start: IPoint; - end: IPoint; - - serialize():number[][]; - copy():IRange; - freeze():IRange; - isEqual(other:IRange):boolean; - isEqual(other:IPoint[]):boolean; - - compare(object:IPoint[]):number; - - compare(object:{start: IPoint; end: IPoint}):number; - compare(object:{start: number[]; end: IPoint}):number; - compare(object:{start: {row:number; col:number;}; end: IPoint}):number; - - compare(object:{start: IPoint; end: number[]}):number; - compare(object:{start: number[]; end: number[]}):number; - compare(object:{start: {row:number; col:number;}; end: number[]}):number; - - compare(object:{start: IPoint; end: {row:number; col:number;}}):number; - compare(object:{start: number[]; end: {row:number; col:number;}}):number; - compare(object:{start: {row:number; col:number;}; end: {row:number; col:number;}}):number; - - isSingleLine():boolean; - coversSameRows(other:IRange):boolean; - - add(object:IPoint[]):IRange; - - add(object:{start: IPoint; end: IPoint}):IRange; - add(object:{start: number[]; end: IPoint}):IRange; - add(object:{start: {row:number; col:number;}; end: IPoint}):IRange; - - add(object:{start: IPoint; end: number[]}):IRange; - add(object:{start: number[]; end: number[]}):IRange; - add(object:{start: {row:number; col:number;}; end: number[]}):IRange; - - add(object:{start: IPoint; end: {row:number; col:number;}}):IRange; - add(object:{start: number[]; end: {row:number; col:number;}}):IRange; - add(object:{start: {row:number; col:number;}; end: {row:number; col:number;}}):IRange; - - translate(startPoint:IPoint, endPoint:IPoint):IRange; - translate(startPoint:IPoint):IRange; - - intersectsWith(otherRange:IRange):boolean; - containsRange(otherRange:IRange, exclusive:boolean):boolean; - - containsPoint(point:IPoint, exclusive:boolean):boolean; - containsPoint(point:number[], exclusive:boolean):boolean; - containsPoint(point:{row:number; col:number;}, exclusive:boolean):boolean; - - intersectsRow(row:number):boolean; - intersectsRowRange(startRow:number, endRow:number):boolean; - union(otherRange:IRange):IRange; - isEmpty():boolean; - toDelta():IPoint; - getRowCount():number; - getRows():number[]; - } - interface ITokenizedBuffer { // TBD } @@ -1179,10 +1060,10 @@ declare module AtomCore { id: number; bufferMarkerSubscription:any; - oldHeadBufferPosition:IPoint; - oldHeadScreenPosition:IPoint; - oldTailBufferPosition:IPoint; - oldTailScreenPosition:IPoint; + oldHeadBufferPosition:TextBuffer.IPoint; + oldHeadScreenPosition:TextBuffer.IPoint; + oldTailBufferPosition:TextBuffer.IPoint; + oldTailScreenPosition:TextBuffer.IPoint; wasValid:boolean; bufferMarker: IMarker; @@ -1194,18 +1075,18 @@ declare module AtomCore { subscriptionsByObject:any; // WeakMap copy(attributes?:any /* maybe IMarker */):IDisplayBufferMarker; - getScreenRange():IRange; + getScreenRange():TextBuffer.IRange; setScreenRange(screenRange:any, options:any):any; - getBufferRange():IRange; + getBufferRange():TextBuffer.IRange; setBufferRange(bufferRange:any, options:any):any; getPixelRange():any; - getHeadScreenPosition():IPoint; + getHeadScreenPosition():TextBuffer.IPoint; setHeadScreenPosition(screenPosition:any, options:any):any; - getHeadBufferPosition():IPoint; + getHeadBufferPosition():TextBuffer.IPoint; setHeadBufferPosition(bufferPosition:any):any; - getTailScreenPosition():IPoint; + getTailScreenPosition():TextBuffer.IPoint; setTailScreenPosition(screenPosition:any, options:any):any; - getTailBufferPosition():IPoint; + getTailBufferPosition():TextBuffer.IPoint; setTailBufferPosition(bufferPosition:any):any; plantTail():boolean; clearTail():boolean; @@ -1255,8 +1136,8 @@ declare module "atom" { var BufferedNodeProcess:AtomCore.IBufferedNodeProcessStatic; var BufferedProcess:AtomCore.IBufferedProcessStatic; var Git:AtomCore.IGitStatic; - var Point:AtomCore.IPointStatic; - var Range:AtomCore.IRangeStatic; + var Point:TextBuffer.IPointStatic; + var Range:TextBuffer.IRangeStatic; class View extends spacePen.View implements Emissary.ISubscriber { // Subscriber.includeInto(spacePen.View); @@ -1299,10 +1180,11 @@ declare module "atom" { newSelections:any[]; redrawOnReattach:any; bottomPaddingInLines:number; + active:boolean; id:number; - gutter:any/* GutterView */; + gutter:AtomCore.IGutterView; overlayer:JQuery; scrollView:JQuery; renderedLines:JQuery; @@ -1326,7 +1208,7 @@ declare module "atom" { setText(text:string):void; - insertText(text:string, options?:any):AtomCore.IRange[]; + insertText(text:string, options?:any):TextBuffer.IRange[]; setHeightInLines(heightInLines:number):number; diff --git a/text-buffer/text-buffer-tests.ts b/text-buffer/text-buffer-tests.ts new file mode 100644 index 0000000000..075851a3b7 --- /dev/null +++ b/text-buffer/text-buffer-tests.ts @@ -0,0 +1,19 @@ +/// + +declare var Point: TextBuffer.IPointStatic; + +var pointA = new Point(1, 2); +pointA.row; +pointA.column; + +var pointB = Point.fromObject({row: 2, col: 3}); +var pointC = Point.min(pointA, pointB); + +declare var TRange: TextBuffer.IRangeStatic; + +var rangeA = new TRange(pointA, pointB); + +declare var TextBufferStatic: TextBuffer.ITextBufferStatic; + +var textBuffer = new TextBufferStatic("Hello, world!"); +textBuffer.getLineCount(); diff --git a/text-buffer/text-buffer.d.ts b/text-buffer/text-buffer.d.ts new file mode 100644 index 0000000000..7fd28b904a --- /dev/null +++ b/text-buffer/text-buffer.d.ts @@ -0,0 +1,298 @@ +// Type definitions for Atom +// Project: https://github.com/atom/text-buffer +// Definitions by: vvakame +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// +/// +/// + + +declare module TextBuffer { + + interface IPointStatic { + new (row?:number, column?:number):IPoint; + + fromObject(point:IPoint, copy?:boolean):IPoint; + fromObject(object:number[]):IPoint; + fromObject(object:{row:number; col:number;}):IPoint; + + min(point1:IPoint, point2:IPoint):IPoint; + min(point1:number[], point2:IPoint):IPoint; + min(point1:{row:number; col:number;}, point2:IPoint):IPoint; + + min(point1:IPoint, point2:number[]):IPoint; + min(point1:number[], point2:number[]):IPoint; + min(point1:{row:number; col:number;}, point2:number[]):IPoint; + + min(point1:IPoint, point2:{row:number; col:number;}):IPoint; + min(point1:number[], point2:{row:number; col:number;}):IPoint; + min(point1:{row:number; col:number;}, point2:{row:number; col:number;}):IPoint; + } + + interface IPoint { + constructor: IPointStatic; + + row:number; + column:number; + + copy():IPoint; + freeze():IPoint; + + translate(delta:IPoint):IPoint; + translate(delta:number[]):IPoint; + translate(delta:{row:number; col:number;}):IPoint; + + add(other:IPoint):IPoint; + add(other:number[]):IPoint; + add(other:{row:number; col:number;}):IPoint; + + splitAt(column:number):IPoint[]; + compare(other:IPoint):number; + isEqual(other:IPoint):boolean; + isLessThan(other:IPoint):boolean; + isLessThanOrEqual(other:IPoint):boolean; + isGreaterThan(other:IPoint):boolean; + isGreaterThanOrEqual(other:IPoint):boolean; + toArray():number[]; + serialize():number[]; + } + + interface IRangeStatic { + deserialize(array:IPoint[]):IRange; + + fromObject(object:IPoint[]):IRange; + + fromObject(object:IRange, copy?:boolean):IRange; + + fromObject(object:{start: IPoint; end: IPoint}):IRange; + fromObject(object:{start: number[]; end: IPoint}):IRange; + fromObject(object:{start: {row:number; col:number;}; end: IPoint}):IRange; + + fromObject(object:{start: IPoint; end: number[]}):IRange; + fromObject(object:{start: number[]; end: number[]}):IRange; + fromObject(object:{start: {row:number; col:number;}; end: number[]}):IRange; + + fromObject(object:{start: IPoint; end: {row:number; col:number;}}):IRange; + fromObject(object:{start: number[]; end: {row:number; col:number;}}):IRange; + fromObject(object:{start: {row:number; col:number;}; end: {row:number; col:number;}}):IRange; + + fromText(point:IPoint, text:string):IRange; + fromText(point:number[], text:string):IRange; + fromText(point:{row:number; col:number;}, text:string):IRange; + fromText(text:string):IRange; + + fromPointWithDelta(startPoint:IPoint, rowDelta:number, columnDelta:number):IRange; + fromPointWithDelta(startPoint:number[], rowDelta:number, columnDelta:number):IRange; + fromPointWithDelta(startPoint:{row:number; col:number;}, rowDelta:number, columnDelta:number):IRange; + + new(point1:IPoint, point2:IPoint):IRange; + new(point1:number[], point2:IPoint):IRange; + new(point1:{row:number; col:number;}, point2:IPoint):IRange; + + new(point1:IPoint, point2:number[]):IRange; + new(point1:number[], point2:number[]):IRange; + new(point1:{row:number; col:number;}, point2:number[]):IRange; + + new(point1:IPoint, point2:{row:number; col:number;}):IRange; + new(point1:number[], point2:{row:number; col:number;}):IRange; + new(point1:{row:number; col:number;}, point2:{row:number; col:number;}):IRange; + } + + interface IRange { + constructor:IRangeStatic; + + start: IPoint; + end: IPoint; + + serialize():number[][]; + copy():IRange; + freeze():IRange; + isEqual(other:IRange):boolean; + isEqual(other:IPoint[]):boolean; + + compare(object:IPoint[]):number; + + compare(object:{start: IPoint; end: IPoint}):number; + compare(object:{start: number[]; end: IPoint}):number; + compare(object:{start: {row:number; col:number;}; end: IPoint}):number; + + compare(object:{start: IPoint; end: number[]}):number; + compare(object:{start: number[]; end: number[]}):number; + compare(object:{start: {row:number; col:number;}; end: number[]}):number; + + compare(object:{start: IPoint; end: {row:number; col:number;}}):number; + compare(object:{start: number[]; end: {row:number; col:number;}}):number; + compare(object:{start: {row:number; col:number;}; end: {row:number; col:number;}}):number; + + isSingleLine():boolean; + coversSameRows(other:IRange):boolean; + + add(object:IPoint[]):IRange; + + add(object:{start: IPoint; end: IPoint}):IRange; + add(object:{start: number[]; end: IPoint}):IRange; + add(object:{start: {row:number; col:number;}; end: IPoint}):IRange; + + add(object:{start: IPoint; end: number[]}):IRange; + add(object:{start: number[]; end: number[]}):IRange; + add(object:{start: {row:number; col:number;}; end: number[]}):IRange; + + add(object:{start: IPoint; end: {row:number; col:number;}}):IRange; + add(object:{start: number[]; end: {row:number; col:number;}}):IRange; + add(object:{start: {row:number; col:number;}; end: {row:number; col:number;}}):IRange; + + translate(startPoint:IPoint, endPoint:IPoint):IRange; + translate(startPoint:IPoint):IRange; + + intersectsWith(otherRange:IRange):boolean; + containsRange(otherRange:IRange, exclusive:boolean):boolean; + + containsPoint(point:IPoint, exclusive:boolean):boolean; + containsPoint(point:number[], exclusive:boolean):boolean; + containsPoint(point:{row:number; col:number;}, exclusive:boolean):boolean; + + intersectsRow(row:number):boolean; + intersectsRowRange(startRow:number, endRow:number):boolean; + union(otherRange:IRange):IRange; + isEmpty():boolean; + toDelta():IPoint; + getRowCount():number; + getRows():number[]; + } + + interface IHistory { + // TBD + } + + interface IMarkerManager { + // TBD + } + + interface IMarker { + // TBD + } + + interface IBufferPatch { + // TBD + } + + interface ITextBufferStatic { + Point: IPointStatic; + Range: IRangeStatic; + newlineRegex:any; + + new (text:string): ITextBuffer; + new (params:any): ITextBuffer; + } + + interface ITextBuffer extends Emissary.IEmitter, Emissary.ISubscriber { + // Delegator.includeInto(TextBuffer); + // Serializable.includeInto(TextBuffer); + + cachedText:string; + stoppedChangingDelay:number; + stoppedChangingTimeout:any; + cachedDiskContents:string; + conflict:boolean; + file:any; // pathwatcher.IFile + refcount:number; + + lines:string[]; + lineEndings:string[]; + offsetIndex:any; // span-skip-list.SpanSkipList + history:IHistory; + markers:IMarkerManager; + loaded:boolean; + digestWhenLastPersisted:string; + modifiedWhenLastPersisted:boolean; + useSerializedText:boolean; + + deserializeParams(params:any):any; + serializeParams():any; + + getText():string; + getLines():string; + isEmpty():boolean; + getLineCount():number; + getLastRow():number; + lineForRow(row:number):string; + getLastLine():string; + lineEndingForRow(row:number):string; + lineLengthForRow(row:number):number; + setText(text:string):IRange; + setTextViaDiff(text:any):any[]; + setTextInRange(range:IRange, text:string, normalizeLineEndings?:boolean):IRange; + insert(position:IPoint, text:string, normalizeLineEndings?:boolean):IRange; + append(text:string, normalizeLineEndings?:boolean):IRange; + delete(range:IRange):IRange; + deleteRow(row:number):IRange; + deleteRows(startRow:number, endRow:number):IRange; + buildPatch(oldRange:IRange, newText:string, normalizeLineEndings?:boolean):IBufferPatch; + applyPatch(patch:IBufferPatch):any; + getTextInRange(range:IRange):string; + clipRange(range:IRange):IRange; + clipPosition(position:IPoint):IPoint; + getFirstPosition():IPoint; + getEndPosition():IPoint; + getRange():IRange; + rangeForRow(row:number, includeNewline?:boolean):IRange; + characterIndexForPosition(position:IPoint):number; + positionForCharacterIndex(offset:number):IPoint; + getMaxCharacterIndex():number; + loadSync():ITextBuffer; + load():Q.IPromise; + finishLoading():ITextBuffer; + handleTextChange(event:any):any; + destroy():any; + isAlive():boolean; + isDestroyed():boolean; + isRetained():boolean; + retain():ITextBuffer; + release():ITextBuffer; + subscribeToFile():any; + hasMultipleEditors():boolean; + reload():any; + updateCachedDiskContentsSync():string; + updateCachedDiskContents():Q.IPromise; + getBaseName():string; + getPath():string; + getUri():string; + setPath(filePath:string):any; + save():void; + saveAs(filePath:string):any; + isModified():boolean; + isInConflict():boolean; + destroyMarker(id:any):any; + matchesInCharacterRange(regex:any, startIndex:any, endIndex:any):any[]; + scan(regex:any, iterator:any):any; + backwardsScan(regex:any, iterator:any):any; + replace(regex:any, replacementText:any):any; + scanInRange(regex:any, range:any, iterator:any, reverse:any):any; + backwardsScanInRange(regex:any, range:any, iterator:any):any; + isRowBlank(row:number):boolean; + previousNonBlankRow(startRow:number):number; + nextNonBlankRow(startRow:number):number; + usesSoftTabs():boolean; + cancelStoppedChangingTimeout():any; + scheduleModifiedEvents():any; + emitModifiedStatusChanged(modifiedStatus:any):any; + logLines(start:number, end:number):void; + + // delegate to history property + undo():any; + redo():any; + transact(fn:Function):any; + beginTransaction():any; + commitTransaction():any; + abortTransaction():any; + clearUndoStack():any; + + // delegate to markers property + markRange(range:any, properties:any):any; + markPosition(range:any, properties:any):any; + getMarker(id:number):IMarker; + getMarkers():IMarker[]; + getMarkerCount():number; + } +}