diff --git a/src/perform.rs b/src/perform.rs index e36cfd8..cd39d53 100644 --- a/src/perform.rs +++ b/src/perform.rs @@ -110,7 +110,9 @@ impl vte::Perform for WrappedScreen { 'E' => self.screen.cnl(canonicalize_params_1(params, 1)), 'F' => self.screen.cpl(canonicalize_params_1(params, 1)), 'G' => self.screen.cha(canonicalize_params_1(params, 1)), - 'H' => self.screen.cup(canonicalize_params_2(params, 1, 1)), + 'H' | 'f' => { + self.screen.cup(canonicalize_params_2(params, 1, 1)); + } 'J' => self .screen .ed(canonicalize_params_1(params, 0), unhandled), diff --git a/tests/csi.rs b/tests/csi.rs index 7ebcfaa..cbc76dc 100644 --- a/tests/csi.rs +++ b/tests/csi.rs @@ -15,6 +15,15 @@ fn row_clamp() { assert_eq!(vt.screen().cursor_position(), (23, 0)); } +#[test] +fn hvp() { + let mut vt = vt100::Parser::new(3, 3, 0); + + vt.process(b"\x1b[2;3fX"); + + assert_eq!(vt.screen().cell(1, 2).unwrap().contents(), "X"); +} + #[test] fn relative_movement() { helpers::fixture("relative_movement");