diff options
| author | Jonas Maier <> | 2026-05-03 11:57:14 +0200 |
|---|---|---|
| committer | Jonas Maier <> | 2026-05-03 11:57:14 +0200 |
| commit | d8eee55eda8f1b083367c8cb8c2956612847ce5f (patch) | |
| tree | 0902d2636b8728fa864a4d9d8682ad04ddc81ac9 /src/run/builtin.rs | |
| parent | 110b179e3651570f6ede3090e2e8f304dac7024d (diff) | |
| download | pish-d8eee55eda8f1b083367c8cb8c2956612847ce5f.tar.gz | |
command to dump keybinds
Diffstat (limited to 'src/run/builtin.rs')
| -rw-r--r-- | src/run/builtin.rs | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/run/builtin.rs b/src/run/builtin.rs index 2886d71..56dda97 100644 --- a/src/run/builtin.rs +++ b/src/run/builtin.rs @@ -658,11 +658,34 @@ impl Builtin for bind { let mut usage = || { writeln!( stdout, - "usage: bind ti NAMED_KEYBIND COMMAND | bind key KEY COMMAND | bind [i|interactive]" + "usage: bind | bind ti NAMED_KEYBIND COMMAND | bind key KEY COMMAND | bind [i|interactive]" )?; Err(Error::Exit(1)) }; + if args.len() == 0 { + let mut dump = |map: &HashMap<BString, crate::parse::Command<PostExpansion>>, + category: &str| + -> std::io::Result<()> { + let mut entries: Vec<_> = map.iter().collect(); + entries.sort_by_key(|x| x.0); + for (key, cmd) in entries.iter() { + write!(stdout, "bind {category} {} ", key.escape_ascii())?; + stdout.write_all(&cmd.cmd)?; + for arg in cmd.args.iter() { + stdout.write_all(b" ")?; + stdout.write_all(arg)?; + } + writeln!(stdout)?; + } + Ok(()) + }; + let se = session.lock().unwrap(); + dump(&se.ti_keybinds, "ti ")?; + dump(&se.ascii_keybinds, "key")?; + return Ok(()); + } + if args.len() < 2 { return usage(); } @@ -693,11 +716,11 @@ impl Builtin for bind { let x = match key { ansi::KbInput::Escape(e) => { - bind0(&mut se.ascii_keybinds, e.keys[0].as_bytes(), &args[1..]); + bind0(&mut se.ti_keybinds, e.keys[0].as_bytes(), &args[1..]); format!("ti {}", e.keys[0]) } _ => { - bind0(&mut se.ti_keybinds, key.as_bytes(), &args[1..]); + bind0(&mut se.ascii_keybinds, key.as_bytes(), &args[1..]); format!("key {}", key.as_bytes().escape_ascii()) } }; |
