diff options
Diffstat (limited to 'src/widgets/luaeditor/mod.rs')
| -rw-r--r-- | src/widgets/luaeditor/mod.rs | 68 |
1 files changed, 15 insertions, 53 deletions
diff --git a/src/widgets/luaeditor/mod.rs b/src/widgets/luaeditor/mod.rs index 620de4c..4bcb5d2 100644 --- a/src/widgets/luaeditor/mod.rs +++ b/src/widgets/luaeditor/mod.rs @@ -1,17 +1,17 @@ use ratatui::{ - crossterm::event::{KeyCode, KeyEvent, KeyModifiers}, + crossterm::event::{KeyCode, KeyEvent}, layout::Rect, text::{ToLine, ToSpan}, widgets::{Paragraph, Widget}, }; use tree_sitter_highlight::HighlightConfiguration; +use crate::{config::keymap::EditorKeyMap, lua}; use crate::{ config::{theme::editor::bar::EditorBarTheme, GlobalConfig}, - state::{editor::{bar::EditorBarState, EditorState}, window::Window, GlobalState}, + state::{editor::bar::EditorBarState, GlobalState}, tuicursor::TuiCursor, }; -use crate::{cursor::CursorMove, lua}; use super::statusbar::StatusBar; @@ -34,57 +34,19 @@ impl LuaEditor { } pub fn handle_key_event(&mut self, event: KeyEvent) { - match event.code { - KeyCode::Char('r') if event.modifiers == KeyModifiers::CONTROL => { - EditorState::run(&lua::get()) - } - KeyCode::Char(c) => GlobalState::instance_mut().editor.buffer.insert(c), - KeyCode::Backspace => { - GlobalState::instance_mut().editor.buffer.delete(); - } - KeyCode::Enter => { - GlobalState::instance_mut().editor.buffer.insert('\n'); - } - KeyCode::Left => GlobalState::instance_mut() - .editor - .buffer - .move_cursor(CursorMove::Left(1)), - KeyCode::Right => GlobalState::instance_mut() - .editor - .buffer - .move_cursor(CursorMove::Right(1)), - KeyCode::Up => GlobalState::instance_mut() - .editor - .buffer - .move_cursor(CursorMove::Up(1)), - KeyCode::Down => GlobalState::instance_mut() - .editor - .buffer - .move_cursor(CursorMove::Down(1)), - KeyCode::Home => {} - KeyCode::End => {} - KeyCode::PageUp => {} - KeyCode::PageDown => {} - KeyCode::Tab => GlobalState::instance_mut().editor.buffer.insert('\t'), - KeyCode::BackTab => {} - KeyCode::Delete => {} - KeyCode::Insert => {} - KeyCode::F(_) => {} - KeyCode::Null => {} - KeyCode::Esc => { - let mut state = GlobalState::instance_mut(); - state.editor.visible = false; - state.set_focus(Window::View) + let r = EditorKeyMap::handle(event); + + if r.unwrap_or(true) { + match event.code { + KeyCode::Char(c) => GlobalState::instance_mut().editor.buffer.insert(c), + KeyCode::Backspace => { + GlobalState::instance_mut().editor.buffer.delete(); + } + KeyCode::Enter => { + GlobalState::instance_mut().editor.buffer.insert('\n'); + } + _ => {} } - KeyCode::CapsLock => {} - KeyCode::ScrollLock => {} - KeyCode::NumLock => {} - KeyCode::PrintScreen => {} - KeyCode::Pause => {} - KeyCode::Menu => {} - KeyCode::KeypadBegin => {} - KeyCode::Media(_) => {} - KeyCode::Modifier(_) => {} } } |