From 41dbb877cade868137360d2e676f4c2ad4594317 Mon Sep 17 00:00:00 2001 From: Jonas Maier Date: Fri, 6 Mar 2026 21:07:22 +0100 Subject: builtin command to display escape characters --- src/run/builtin.rs | 20 ++++++++++++++++++++ src/run/mod.rs | 1 + 2 files changed, 21 insertions(+) (limited to 'src') diff --git a/src/run/builtin.rs b/src/run/builtin.rs index 7a60017..5c7cffd 100644 --- a/src/run/builtin.rs +++ b/src/run/builtin.rs @@ -177,3 +177,23 @@ impl Builtin for history { todo!("need session") } } + +pub struct escape; +impl Builtin for escape { + fn name(&self) -> &str { + "escape" + } + fn io( + &self, + args: &[BString], + _stdin: &mut dyn Read, + stdout: &mut dyn Write, + ) -> std::io::Result<()> { + for arg in args.iter() { + let escaped = arg.escape_ascii().to_string(); + stdout.write_all(escaped.as_bytes())?; + stdout.write_all(b" ")?; + } + Ok(()) + } +} diff --git a/src/run/mod.rs b/src/run/mod.rs index c9a156d..8c629b0 100644 --- a/src/run/mod.rs +++ b/src/run/mod.rs @@ -286,6 +286,7 @@ const BUILTINS: &[&'static dyn Builtin] = &[ &builtin::builtins, &builtin::_type, &builtin::history, + &builtin::escape, ]; pub struct CommandDispatch { -- cgit v1.2.3