d4cb65fcff
Adds MC's column-block selection to the editor. Algorithm
cross-references MC WEdit::column_highlight + MarkColumn* key
bindings in misc/mc.default.keymap.
Cursor changes:
- SelectionMode::{Stream, Column} enum
- column_anchor: Option<usize> (parallel to anchor)
- column_selection_rect() → normalized ColumnRect
- selected_text() / delete_selection() handle column mode:
* Column copy text = rows joined by \n
* Column delete strips rectangle cols from each line,
cursor lands at top-left corner, anchor cleared
- start_selection() / start_column_selection() are
mutually exclusive (switching clears other anchor)
- has_selection() / clear_selection() honor both modes
Keybindings (editor/handlers.rs):
- Alt+Left/Right → MarkColumnLeft/Right (column horiz extend)
- Alt+Up/Down → MarkColumnUp/Down (column vert extend)
- Alt+PgUp/PgDn → MarkColumnPageUp/Down (column page extend)
- Existing Shift+Arrow still produces stream selections
Renderer (editor/render.rs):
- new line_selection_range() helper returns per-line byte
range from either stream or column source
- column cells get [editor] editmarked background highlight
- syntect path naturally uses byte ranges, so column highlight
composes with syntax coloring
Tests: 1119 passed (was 1117, +2 handler tests; cursor +7 tests).
PLAN.md: §15d row 21 marked ✅ Done; Changelog entry added.