Add SmartNewline command with tests and editor integration

- Introduced `CommandId::SmartNewline` for auto-indented newlines, enhancing text editing workflows.
- Added `cmd_smart_newline` to implement indentation-aware newline logic.
- Integrated SmartNewline with keymaps, mouse/keyboard input handlers, and terminal/editor commands.
- Wrote comprehensive tests in `test_smart_newline.cc` to validate behavior for spaces, tabs, and no-indentation cases.
- Updated `Command.h` and `CMakeLists.txt` to register and build the new command.
This commit is contained in:
2026-02-26 13:08:56 -08:00
parent 690c51b0f3
commit bc3433e988
8 changed files with 206 additions and 38 deletions

View File

@@ -226,8 +226,12 @@ KLookupEscCommand(const int ascii_key, CommandId &out) -> bool
case 'q':
out = CommandId::ReflowParagraph; // Esc q (reflow paragraph)
return true;
case '\n':
case '\r':
out = CommandId::SmartNewline; // Shift+Enter (some terminals send this as Alt+Enter sequences)
return true;
default:
break;
}
return false;
}
}