getSelectedText method

String? getSelectedText()

Implementation

String? getSelectedText() {
  if (_selection.isEmpty) {
    return null;
  }

  final builder = StringBuffer();

  for (var row = _selection.start!.y; row <= _selection.end!.y; row++) {
    if (row >= buffer.height) {
      break;
    }

    final line = buffer.lines[row];

    var xStart = 0;
    var xEnd = viewWidth - 1;

    if (row == _selection.start!.y) {
      xStart = _selection.start!.x;
    } else if (!line.isWrapped) {
      builder.write("\n");
    }

    if (row == _selection.end!.y) {
      xEnd = _selection.end!.x;
    }

    for (var col = xStart; col <= xEnd; col++) {
      // if (col >= line.length) {
      //   break;
      // }

      if (line.cellGetWidth(col) == 0) {
        continue;
      }

      var char = line.cellGetContent(col);

      if (char == 0x00) {
        const blank = 32;
        char = blank;
      }

      builder.writeCharCode(char);
    }
  }

  return builder.toString();
}