668
669
public getNearestChunk(offset: number): string {
671
>
if (nodePos.remainder === nodePos.node.piece.length) {
672
>
// the offset is at the head of next node.
673
>
const matchingNode = nodePos.node.next();
674
>
if (!matchingNode || matchingNode === SENTINEL) {
675
return '';
676
}
678
>
const buffer = this._buffers[matchingNode.piece.bufferIndex];
679
>
const startOffset = this.offsetInBuffer(matchingNode.piece.bufferIndex, matchingNode.piece.start);
680
>
return buffer.buffer.substring(startOffset, startOffset + matchingNode.piece.length);
681
>
} else {
682
>
const buffer = this._buffers[nodePos.node.piece.bufferIndex];
683
>
const startOffset = this.offsetInBuffer(nodePos.node.piece.bufferIndex, nodePos.node.piece.start);
684
>
const targetOffset = startOffset + nodePos.remainder;
685
>
const targetEnd = startOffset + nodePos.node.piece.length;
686
>
return buffer.buffer.substring(targetOffset, targetEnd);
687
>
}
688
>
}
689
690
public findMatchesInNode(node: TreeNode, searcher: Searcher, startLineNumber: number, startColumn: number, startCursor: BufferCursor, endCursor: BufferCursor, searchData: SearchData, captureMatches: boolean, limitResultCount: number, resultLen: number, result: FindMatch[]) {