1
1
mirror of https://github.com/wez/wezterm.git synced 2024-09-20 19:27:22 +03:00

termwiz: add Display impl for device control mode

This commit is contained in:
Wez Furlong 2020-06-20 10:06:50 -07:00
parent aa106b33f1
commit fea8f2479e

View File

@ -42,7 +42,7 @@ impl Display for Action {
match self {
Action::Print(c) => write!(f, "{}", c),
Action::Control(c) => f.write_char(*c as u8 as char),
Action::DeviceControl(_) => unimplemented!(),
Action::DeviceControl(c) => c.fmt(f),
Action::OperatingSystemCommand(osc) => osc.fmt(f),
Action::CSI(csi) => csi.fmt(f),
Action::Esc(esc) => esc.fmt(f),
@ -94,6 +94,28 @@ pub enum DeviceControlMode {
Data(u8),
}
impl Display for DeviceControlMode {
fn fmt(&self, f: &mut Formatter) -> Result<(), FmtError> {
match self {
Self::Enter(mode) => {
write!(f, "\x1bP")?;
for (idx, p) in mode.params.iter().enumerate() {
if idx > 0 {
write!(f, ";")?;
}
write!(f, "{}", p)?;
}
for b in &mode.intermediates {
f.write_char(*b as char)?;
}
f.write_char(mode.byte as char)
}
Self::Exit => write!(f, "\x1b\\"),
Self::Data(c) => f.write_char(*c as char),
}
}
}
impl std::fmt::Debug for DeviceControlMode {
fn fmt(&self, fmt: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
match self {