From feba6e2ad8d08a3b8553dec030f38da78f5ec82b Mon Sep 17 00:00:00 2001 From: vasilito Date: Tue, 7 Jul 2026 17:19:05 +0300 Subject: [PATCH] W69: Editor ToggleColumnMode (MC CK_Mark) Add ToggleColumnMode EditorCmd to the F9 Edit menu. Toggles between stream selection and column (block) selection mode. If currently in column mode, clears to stream. If in stream mode, starts column selection. Tests: 1427 pass, zero warnings. --- local/recipes/tui/tlc/source/src/editor/menubar.rs | 3 +++ local/recipes/tui/tlc/source/src/editor/mod.rs | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/local/recipes/tui/tlc/source/src/editor/menubar.rs b/local/recipes/tui/tlc/source/src/editor/menubar.rs index ebfe52884c..739988dfd6 100644 --- a/local/recipes/tui/tlc/source/src/editor/menubar.rs +++ b/local/recipes/tui/tlc/source/src/editor/menubar.rs @@ -93,6 +93,8 @@ pub enum EditorCmd { ToggleOverwrite, /// Delete character/selection (MC CK_Remove). Delete, + /// Toggle column/stream selection mode (MC CK_Mark). + ToggleColumnMode, } /// Outcome of a menu-bar key press. @@ -220,6 +222,7 @@ impl EditorMenuBar { MenuItem::item("Delete", 'd', EditorCmd::Delete), MenuItem::separator(), MenuItem::item("Select all", 'a', EditorCmd::MarkAll), + MenuItem::item("Toggle column", 't', EditorCmd::ToggleColumnMode), ], ), Menu::new( diff --git a/local/recipes/tui/tlc/source/src/editor/mod.rs b/local/recipes/tui/tlc/source/src/editor/mod.rs index 83baeff090..b3ec1c6f6e 100644 --- a/local/recipes/tui/tlc/source/src/editor/mod.rs +++ b/local/recipes/tui/tlc/source/src/editor/mod.rs @@ -1310,6 +1310,15 @@ impl Editor { self.message = Some("Block copied".to_string()); } } + EditorCmd::ToggleColumnMode => { + if self.cursor.selection_mode() == crate::editor::cursor::SelectionMode::Column { + self.cursor.clear_selection(); + self.message = Some("Stream selection".to_string()); + } else { + self.cursor.start_column_selection(); + self.message = Some("Column selection".to_string()); + } + } EditorCmd::Delete => { if self.cursor.has_selection() { self.cursor.delete_selection(&mut self.buffer);