deleteTrailingWhitespace function
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;
}