optimizeMovements method

  1. @override
({bool useBackspace, bool useTabs}) optimizeMovements()
override

Detects terminal capabilities for movement optimizations (e.g. hard tabs).

Returns a record of (useTabs, useBackspace).

Implementation

@override
({bool useTabs, bool useBackspace}) optimizeMovements() {
  final out = _runStty(['-a']);
  if (out == null || out.exitCode != 0) {
    return (useTabs: false, useBackspace: true);
  }

  final s = (out.stdout ?? '').toString();
  // tab0 means no tab expansion (hard tabs supported).
  // tabs is often an alias for tab0 on some systems.
  final useTabs = s.contains('tab0') || s.contains(' tabs');
  // bs0 means no backspace expansion.
  final useBackspace = s.contains('bs0') || !s.contains('-echoe');

  return (useTabs: useTabs, useBackspace: useBackspace);
}