finally a working space

This commit is contained in:
Priec
2025-09-12 19:14:21 +02:00
parent e4e9594a9d
commit 9672b9949c
2 changed files with 42 additions and 19 deletions

View File

@@ -50,7 +50,7 @@ move_down = ["j", "Down"]
move_line_end = ["$"] move_line_end = ["$"]
move_word_next = ["w"] move_word_next = ["w"]
next_field = ["Tab"] next_field = ["Tab"]
# move_word_prev = ["b"] move_word_prev = ["b"]
move_word_end = ["e"] move_word_end = ["e"]
move_last_line = ["shift+g"] move_last_line = ["shift+g"]
move_word_end_prev = ["ge"] move_word_end_prev = ["ge"]

View File

@@ -26,6 +26,7 @@ use crate::buffer::state::AppView;
use crate::state::app::state::AppState; use crate::state::app::state::AppState;
use crate::tui::terminal::{EventReader, TerminalCore}; use crate::tui::terminal::{EventReader, TerminalCore};
use crate::ui::handlers::render::render_ui; use crate::ui::handlers::render::render_ui;
use crate::input::leader::leader_has_any_start;
use crate::pages::login; use crate::pages::login;
use crate::pages::register; use crate::pages::register;
use crate::pages::login::LoginResult; use crate::pages::login::LoginResult;
@@ -237,6 +238,27 @@ pub async fn run_ui() -> Result<()> {
}; };
if inside_canvas { if inside_canvas {
// Do NOT forward to canvas while a leader is active or about to start.
// This prevents the canvas from stealing the second/third key (b/d/r).
let leader_in_progress = event_handler.input_engine.has_active_sequence();
let is_space = matches!(key_event.code, crossterm_event::KeyCode::Char(' '));
let can_start_leader = leader_has_any_start(&config);
let form_in_edit_mode = match &router.current {
Page::Form(path) => app_state
.editor_for_path_ref(path)
.map(|e| e.mode() == canvas::AppMode::Edit)
.unwrap_or(false),
_ => false,
};
let defer_to_engine_for_leader = leader_in_progress
|| (is_space && can_start_leader && !form_in_edit_mode);
if defer_to_engine_for_leader {
info!(
"Skipping canvas pre-handle: leader sequence active or starting"
);
} else {
if let Page::Form(path) = &router.current { if let Page::Form(path) = &router.current {
if let Some(editor) = app_state.editor_for_path(path) { if let Some(editor) = app_state.editor_for_path(path) {
match editor.handle_key_event(*key_event) { match editor.handle_key_event(*key_event) {
@@ -262,6 +284,7 @@ pub async fn run_ui() -> Result<()> {
} }
} }
} }
}
// Call handle_event directly // Call handle_event directly
let event_outcome_result = event_handler.handle_event( let event_outcome_result = event_handler.handle_event(