on master help sign in
Make parse_macro work for "-" outside "<..>" (#8475)

* Translate to when a part of the outher string in * Changed the if a little

commit574f82130892d4a388bfdcce63fe2c4a190e479e authorBjorn Ove Hay Andersen <bjrnove@gmail.com> dateThu 12 Oct 2023, 14:09 (3 years ago) parent07a006d
1 file changed+59−1
helix-view/src/input.rs+59−1
helix-view/src/input.rs+59−1
@@ -549,7 +549,7 @@ pub fn parse_macro(keys_str: &str) -> anyhow::Result<Vec<KeyEvent>> {
549549 if c == ">" {
550550 keys_res = Err(anyhow!("Unmatched '>'"));
551551 } else if c != "<" {
552− keys.push(c);
552+ keys.push(if c == "-" { keys::MINUS } else { c });
553553 i += end_i;
554554 } else {
555555 match s.find('>').context("'>' expected") {
@@ -813,6 +813,64 @@ mod test {
813813 },
814814 ])
815815 );
816+
817+ assert_eq!(
818+ parse_macro(":w aa-bb.txt<ret>").ok(),
819+ Some(vec![
820+ KeyEvent {
821+ code: KeyCode::Char(':'),
822+ modifiers: KeyModifiers::NONE,
823+ },
824+ KeyEvent {
825+ code: KeyCode::Char('w'),
826+ modifiers: KeyModifiers::NONE,
827+ },
828+ KeyEvent {
829+ code: KeyCode::Char(' '),
830+ modifiers: KeyModifiers::NONE,
831+ },
832+ KeyEvent {
833+ code: KeyCode::Char('a'),
834+ modifiers: KeyModifiers::NONE,
835+ },
836+ KeyEvent {
837+ code: KeyCode::Char('a'),
838+ modifiers: KeyModifiers::NONE,
839+ },
840+ KeyEvent {
841+ code: KeyCode::Char('-'),
842+ modifiers: KeyModifiers::NONE,
843+ },
844+ KeyEvent {
845+ code: KeyCode::Char('b'),
846+ modifiers: KeyModifiers::NONE,
847+ },
848+ KeyEvent {
849+ code: KeyCode::Char('b'),
850+ modifiers: KeyModifiers::NONE,
851+ },
852+ KeyEvent {
853+ code: KeyCode::Char('.'),
854+ modifiers: KeyModifiers::NONE,
855+ },
856+ KeyEvent {
857+ code: KeyCode::Char('t'),
858+ modifiers: KeyModifiers::NONE,
859+ },
860+ KeyEvent {
861+ code: KeyCode::Char('x'),
862+ modifiers: KeyModifiers::NONE,
863+ },
864+ KeyEvent {
865+ code: KeyCode::Char('t'),
866+ modifiers: KeyModifiers::NONE,
867+ },
868+ KeyEvent {
869+ code: KeyCode::Enter,
870+ modifiers: KeyModifiers::NONE,
871+ },
872+ ])
873+ );
816874 }
817875
818876 #[test]