Skip to content
10 changes: 7 additions & 3 deletions addons/xterm-addon-search/src/SearchAddon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,12 @@ export class SearchAddon implements ITerminalAddon {
}
}

// If there is only one result, return true.
if (!result && currentSelection) return true;
// If there is only one result, wrap back and return selection if it exists.
if (!result && currentSelection) {
searchPosition.startRow = currentSelection.startRow;
searchPosition.startCol = 0;
result = this._findInLine(term, searchPosition, searchOptions);
}

// Set selection and scroll if a result was found
return this._selectResult(result);
Expand Down Expand Up @@ -175,7 +179,7 @@ export class SearchAddon implements ITerminalAddon {
}
// If we hit the top and didn't search from the very bottom wrap back down
if (!result && startRow !== (this._terminal.buffer.active.baseY + this._terminal.rows)) {
for (let y = (this._terminal.buffer.active.baseY + this._terminal.rows); y > startRow; y--) {
for (let y = (this._terminal.buffer.active.baseY + this._terminal.rows); y >= startRow; y--) {
searchPosition.startRow = y;
result = this._findInLine(term, searchPosition, searchOptions, isReverseSearch);
if (result) {
Expand Down