more improvements

This commit is contained in:
Priec
2025-08-20 23:52:14 +02:00
parent aea2c39215
commit 1320884409
5 changed files with 67 additions and 58 deletions

View File

@@ -16,7 +16,7 @@ use crate::modes::{
};
use crate::services::auth::AuthClient;
use crate::services::grpc_client::GrpcClient;
use canvas::FormEditor;
use canvas::{FormEditor, AppMode as CanvasMode};
use crate::state::{
app::{
buffer::{AppView, BufferState},
@@ -42,7 +42,6 @@ use crate::ui::handlers::context::UiContext;
use crate::ui::handlers::rat_state::UiStateHandler;
use anyhow::Result;
use common::proto::komp_ac::search::search_response::Hit;
use crossterm::cursor::SetCursorStyle;
use crossterm::event::KeyModifiers;
use crossterm::event::{Event, KeyCode, KeyEvent};
use tokio::sync::mpsc;
@@ -695,10 +694,12 @@ impl EventHandler {
else if config.get_read_only_action_for_key(key_code, modifiers).as_deref() == Some("enter_edit_mode_before")
&& ModeManager::can_enter_edit_mode(current_mode)
{
if let Some(editor) = &mut app_state.form_editor {
editor.enter_edit_mode();
}
self.is_edit_mode = true;
self.edit_mode_cooldown = true;
self.command_message = "Edit mode".to_string();
terminal.set_cursor_style(SetCursorStyle::BlinkingBar)?;
return Ok(EventOutcome::Ok(self.command_message.clone()));
}
else if config.get_read_only_action_for_key(key_code, modifiers).as_deref() == Some("enter_edit_mode_after")
@@ -734,16 +735,21 @@ impl EventHandler {
);
}
if let Some(editor) = &mut app_state.form_editor {
editor.enter_edit_mode();
}
self.is_edit_mode = true;
self.edit_mode_cooldown = true;
app_state.ui.focus_outside_canvas = false;
self.command_message = "Edit mode (after cursor)".to_string();
terminal.set_cursor_style(SetCursorStyle::BlinkingBar)?;
return Ok(EventOutcome::Ok(self.command_message.clone()));
}
else if config.get_read_only_action_for_key(key_code, modifiers) == Some("enter_command_mode")
&& ModeManager::can_enter_command_mode(current_mode)
{
if let Some(editor) = &mut app_state.form_editor {
editor.set_mode(CanvasMode::Command);
}
self.command_mode = true;
self.command_input.clear();
self.command_message.clear();
@@ -772,14 +778,15 @@ impl EventHandler {
// Try canvas action for form first
if app_state.ui.show_form {
let mut editor = FormEditor::new(form_state.clone());
if let Ok(Some(canvas_message)) = self.handle_form_canvas_action(
key_event,
&mut editor,
config,
false,
).await {
return Ok(EventOutcome::Ok(canvas_message));
if let Some(editor) = &mut app_state.form_editor {
if let Ok(Some(canvas_message)) = self.handle_form_canvas_action(
key_event,
editor,
config,
false,
).await {
return Ok(EventOutcome::Ok(canvas_message));
}
}
}
@@ -788,9 +795,11 @@ impl EventHandler {
AppMode::Highlight => {
if config.get_highlight_action_for_key(key_code, modifiers) == Some("exit_highlight_mode") {
if let Some(editor) = &mut app_state.form_editor {
editor.exit_highlight_mode();
}
self.highlight_state = HighlightState::Off;
self.command_message = "Exited highlight mode".to_string();
terminal.set_cursor_style(SetCursorStyle::SteadyBlock)?;
return Ok(EventOutcome::Ok(self.command_message.clone()));
} else if config.get_highlight_action_for_key(key_code, modifiers) == Some("enter_highlight_mode_linewise") {
if let HighlightState::Characterwise { anchor } = self.highlight_state {
@@ -827,17 +836,18 @@ impl EventHandler {
// Try canvas action for form first
if app_state.ui.show_form {
let mut editor = FormEditor::new(form_state.clone());
if let Ok(Some(canvas_message)) = self.handle_form_canvas_action(
key_event,
&mut editor,
config,
true,
).await {
if !canvas_message.is_empty() {
self.command_message = canvas_message.clone();
if let Some(editor) = &mut app_state.form_editor {
if let Ok(Some(canvas_message)) = self.handle_form_canvas_action(
key_event,
editor,
config,
true,
).await {
if !canvas_message.is_empty() {
self.command_message = canvas_message.clone();
}
return Ok(EventOutcome::Ok(canvas_message));
}
return Ok(EventOutcome::Ok(canvas_message));
}
}
@@ -850,6 +860,9 @@ impl EventHandler {
self.command_message.clear();
self.command_mode = false;
self.key_sequence_tracker.reset();
if let Some(editor) = &mut app_state.form_editor {
editor.set_mode(CanvasMode::ReadOnly);
}
return Ok(EventOutcome::Ok(
"Exited command mode".to_string(),
));
@@ -1079,6 +1092,9 @@ impl EventHandler {
}
}
"force_quit" => {
if let Some(editor) = &mut app_state.form_editor {
editor.cleanup_cursor()?;
}
terminal.cleanup()?;
Ok(EventOutcome::Exit(
"Force exiting without saving.".to_string(),
@@ -1106,6 +1122,9 @@ impl EventHandler {
SaveOutcome::CreatedNew(_) => "New entry created.".to_string(),
}
};
if let Some(editor) = &mut app_state.form_editor {
editor.cleanup_cursor()?;
}
terminal.cleanup()?;
Ok(EventOutcome::Exit(format!(
"{}. Exiting application.",