aboutsummaryrefslogtreecommitdiffstats
path: root/src/run
diff options
context:
space:
mode:
Diffstat (limited to 'src/run')
-rw-r--r--src/run/builtin.rs29
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())
}
};