diff options
author | Kyohei Uto <im@kyoheiu.dev> | 2023-11-25 05:45:46 +0900 |
---|---|---|
committer | Kyohei Uto <im@kyoheiu.dev> | 2023-11-25 05:45:46 +0900 |
commit | 2043f939905d26d165229eba302c3fa005ba46f9 (patch) | |
tree | 887f1fdf06df3272c0a40f19bfbab72f94da1e48 | |
parent | b95b2619a2a56afab4bfbae9bbfb81d722fccb23 (diff) | |
parent | e0c65849abe1653cc18120370740d37891dbc33c (diff) |
Merge branch 'main' into develop
-rw-r--r-- | src/run.rs | 31 | ||||
-rw-r--r-- | src/state.rs | 5 |
2 files changed, 22 insertions, 14 deletions
@@ -390,7 +390,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> { show_cursor(); screen.flush()?; - if let Event::Key(KeyEvent { code, .. }) = event::read()? { + if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? { match code { KeyCode::Char('g') => { hide_cursor(); @@ -414,7 +414,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> { show_cursor(); screen.flush()?; - if let Event::Key(KeyEvent { code, .. }) = event::read()? { + if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? { match code { KeyCode::Char('g') => { hide_cursor(); @@ -629,7 +629,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> { let mut current_pos = 3; 'zoxide: loop { - if let Event::Key(KeyEvent { code, .. }) = event::read()? { + if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? { match code { KeyCode::Esc => { go_to_info_line_and_reset(); @@ -790,14 +790,15 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> { let mut current_char_pos = 0; 'insert: loop { if let Event::Key(KeyEvent { - code, modifiers, .. + code, modifiers, + kind: KeyEventKind::Press, .. }) = event::read()? { // <C-r> to put the item name(s) from register if modifiers == KeyModifiers::CONTROL && code == KeyCode::Char('r') { - if let Event::Key(KeyEvent { code, .. }) = + if let Event::Key(KeyEvent { code, kind:KeyEventKind::Press, .. }) = event::read()? { if let Some(reg) = state.registers.check_reg(&code) @@ -1066,7 +1067,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> { show_cursor(); screen.flush()?; - if let Event::Key(KeyEvent { code, .. }) = event::read()? { + if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? { match code { KeyCode::Char('d') => { if let Err(e) = @@ -1171,7 +1172,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> { let (mut current_pos, _) = cursor_pos()?; let mut current_char_pos = rename.len(); loop { - if let Event::Key(KeyEvent { code, .. }) = event::read()? { + if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? { match code { //rename item KeyCode::Enter => { @@ -1305,7 +1306,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> { // express position in Vec<Char> let mut current_char_pos = 0; loop { - if let Event::Key(KeyEvent { code, .. }) = event::read()? { + if let Event::Key(KeyEvent { code,kind: KeyEventKind::Press, .. }) = event::read()? { match code { KeyCode::Enter => { go_to_info_line_and_reset(); @@ -1509,7 +1510,7 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> { let mut current_pos = INITIAL_POS_COMMAND_LINE; 'reg: loop { - if let Event::Key(KeyEvent { code, .. }) = event::read()? { + if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? { match code { KeyCode::Esc => { go_to_info_line_and_reset(); @@ -1887,14 +1888,14 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> { let mut current_char_pos = 0; 'command: loop { if let Event::Key(KeyEvent { - code, modifiers, .. + code, modifiers, kind: KeyEventKind::Press, .. }) = event::read()? { // <C-r> to put the item name(s) in register if modifiers == KeyModifiers::CONTROL && code == KeyCode::Char('r') { - if let Event::Key(KeyEvent { code, .. }) = + if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = event::read()? { if let Some(reg) = state.registers.check_reg(&code) @@ -2230,7 +2231,13 @@ fn _run(mut state: State, session_path: PathBuf) -> Result<(), FxError> { show_cursor(); screen.flush()?; - if let Event::Key(KeyEvent { code, .. }) = event::read()? { + let mut next_key:Event = event::read()?; + // ignore exactly one keypress Release after a Z is entered + if let Event::Key(KeyEvent { kind: KeyEventKind::Release, .. }) = next_key { + next_key = event::read()?; + } + + if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = next_key { match code { KeyCode::Char('Q') => { if state.match_vim_exit_behavior diff --git a/src/state.rs b/src/state.rs index bbfd149..29fa9d4 100644 --- a/src/state.rs +++ b/src/state.rs @@ -12,6 +12,7 @@ use super::session::*; use super::term::*; use chrono::prelude::*; +use crossterm::event::KeyEventKind; use crossterm::event::{Event, KeyCode, KeyEvent}; use crossterm::style::Stylize; use log::{error, info}; @@ -1398,7 +1399,7 @@ impl State { let mut skip = 0; loop { - if let Event::Key(KeyEvent { code, .. }) = crossterm::event::read()? { + if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press, .. }) = crossterm::event::read()? { match code { KeyCode::Char('j') | KeyCode::Down => { clear_all(); @@ -1432,7 +1433,7 @@ impl State { print_warning(EMPTY_WARNING, self.layout.y); screen.flush()?; - if let Event::Key(KeyEvent { code, .. }) = crossterm::event::read()? { + if let Event::Key(KeyEvent { code, kind: KeyEventKind::Press,.. }) = crossterm::event::read()? { match code { KeyCode::Char('y') | KeyCode::Char('Y') => { print_info("EMPTY: Processing...", self.layout.y); |