diff options
author | Bjorn Ove Hay Andersen | 2023-10-12 12:09:57 +0000 |
---|---|---|
committer | GitHub | 2023-10-12 12:09:57 +0000 |
commit | 574f82130892d4a388bfdcce63fe2c4a190e479e (patch) | |
tree | ec72580a29dfa297d2f90e295827501baf58d0ba /helix-view/src/input.rs | |
parent | 07a006d1d5270e81c57bbc0e712614741d3b31a7 (diff) |
Make parse_macro work for "-" outside "<..>" (#8475)
* Translate to when a part of the outher string in
* Changed the if a little
Diffstat (limited to 'helix-view/src/input.rs')
-rw-r--r-- | helix-view/src/input.rs | 60 |
1 files changed, 59 insertions, 1 deletions
diff --git a/helix-view/src/input.rs b/helix-view/src/input.rs index 87a0bfca..0f4ffaac 100644 --- a/helix-view/src/input.rs +++ b/helix-view/src/input.rs @@ -549,7 +549,7 @@ pub fn parse_macro(keys_str: &str) -> anyhow::Result<Vec<KeyEvent>> { if c == ">" { keys_res = Err(anyhow!("Unmatched '>'")); } else if c != "<" { - keys.push(c); + keys.push(if c == "-" { keys::MINUS } else { c }); i += end_i; } else { match s.find('>').context("'>' expected") { @@ -813,6 +813,64 @@ mod test { }, ]) ); + + assert_eq!( + parse_macro(":w aa-bb.txt<ret>").ok(), + Some(vec![ + KeyEvent { + code: KeyCode::Char(':'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char('w'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char(' '), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char('a'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char('a'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char('-'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char('b'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char('b'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char('.'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char('t'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char('x'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Char('t'), + modifiers: KeyModifiers::NONE, + }, + KeyEvent { + code: KeyCode::Enter, + modifiers: KeyModifiers::NONE, + }, + ]) + ); } #[test] |