codeIndentUnit function

String codeIndentUnit(
  1. String text,
  2. String language
)

A stable editing step: two spaces, four for Python, or an existing tab. Re-inferring a space width after indenting makes Tab/Shift-Tab asymmetric.

Implementation

String codeIndentUnit(String text, String language) {
  for (final line in text.split('\n')) {
    final leading = codeLeadingWhitespace(line);
    if (leading.contains('\t')) return '\t';
  }
  return language == 'python' ? '    ' : '  ';
}