terminalSearchString property

String get terminalSearchString

returns the current terminal search string. The search string will be refreshed on demand if

Implementation

String get terminalSearchString {
  final bufferLength = _terminal.buffer.lines.length;
  final terminalWidth = _terminal.terminalWidth;

  var isAnySearchStringInvalid = false;
  for (var i = 0; i < bufferLength; i++) {
    if (!_terminal.buffer.lines[i].hasCachedSearchString) {
      isAnySearchStringInvalid = true;
    }
  }

  late String completeSearchString;
  if (_cachedSearchString != null &&
      _lastTerminalWidth != null &&
      _lastTerminalWidth! == terminalWidth &&
      !isAnySearchStringInvalid) {
    completeSearchString = _cachedSearchString!;
  } else {
    final bufferContent = StringBuffer();
    for (var i = 0; i < bufferLength; i++) {
      final BufferLine line = _terminal.buffer.lines[i];
      final searchString = line.toSearchString(terminalWidth);
      bufferContent.write(searchString);
      if (searchString.length < terminalWidth) {
        // fill up so that the row / col can be mapped back later on
        bufferContent.writeAll(
            List<String>.filled(terminalWidth - searchString.length, ' '));
      }
    }
    completeSearchString = bufferContent.toString();
    _cachedSearchString = completeSearchString;
    _lastTerminalWidth = terminalWidth;
  }

  return completeSearchString;
}