From 97a6a281fd9780ecdccfcf30079f339e305fdc78 Mon Sep 17 00:00:00 2001 From: Jonas Maier <> Date: Mon, 20 Apr 2026 10:27:04 +0200 Subject: move ansi escape code parsing into own module --- src/run/builtin.rs | 27 ++++++++++++++++++++++++++- src/run/mod.rs | 2 ++ 2 files changed, 28 insertions(+), 1 deletion(-) (limited to 'src/run') diff --git a/src/run/builtin.rs b/src/run/builtin.rs index 7ca1e5e..c080c93 100644 --- a/src/run/builtin.rs +++ b/src/run/builtin.rs @@ -487,7 +487,8 @@ impl Builtin for alias { let mut parse_fail = false; let mut alias_args = Vec::new(); for arg in args { - match as crate::parse::Parse>::parse_from_bytes(&arg[..]) { + match as crate::parse::Parse>::parse_from_bytes(&arg[..]) + { Ok(mut parsed) => { alias_args.append(&mut parsed); } @@ -539,3 +540,27 @@ impl Builtin for unalias { Ok(()) } } + +pub struct debug; +impl Builtin for debug { + fn name(&self) -> &str { + "debug" + } + + fn io( + &self, + session: Arc>, + args: &[BString], + _stdin: &mut dyn Read, + stdout: &mut dyn Write, + ) -> Result { + let mut se = session.lock().unwrap(); + for arg in args { + match &arg[..] { + b"keys" | b"keystrokes" => se.debug_keystrokes = !se.debug_keystrokes, + _ => writeln!(stdout, "debug: unknown option {}", arg.escape_ascii())?, + } + } + Ok(()) + } +} diff --git a/src/run/mod.rs b/src/run/mod.rs index 36cd454..6fe0d45 100644 --- a/src/run/mod.rs +++ b/src/run/mod.rs @@ -539,6 +539,8 @@ const BUILTINS: &[&'static dyn Builtin] = &[ &builtin::completion, &builtin::alias, &builtin::unalias, + #[cfg(debug_assertions)] + &builtin::debug, ]; pub fn builtin_map() -> HashMap { -- cgit v1.2.3