deleteTrailingWhitespace function

bool deleteTrailingWhitespace(
  1. StateCommandTarget target
)

Delete all whitespace directly before line ends.

Implementation

bool deleteTrailingWhitespace(StateCommandTarget target) {
  if (target.state.isReadOnly) return false;

  final state = target.state;
  final changes = <ChangeSpec>[];

  for (var lineNum = 1; lineNum <= state.doc.lines; lineNum++) {
    final line = state.doc.line(lineNum);
    final match = RegExp(r'\s+$').firstMatch(line.text);
    if (match != null) {
      changes.add(ChangeSpec(
        from: line.from + match.start,
        to: line.to,
      ));
    }
  }

  if (changes.isEmpty) return false;

  target.dispatch(state.update([
    TransactionSpec(changes: changes, userEvent: 'delete'),
  ]));
  return true;
}