Skip to content

Commit

Permalink
Increase CSI param limit to 256 to match Kitty
Browse files Browse the repository at this point in the history
  • Loading branch information
jdugan6240 committed Sep 25, 2024
1 parent 2b76c63 commit 364160f
Showing 1 changed file with 236 additions and 10 deletions.
246 changes: 236 additions & 10 deletions vtparse/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ impl VTActor for CollectingVTActor {

const MAX_INTERMEDIATES: usize = 2;
const MAX_OSC: usize = 64;
const MAX_PARAMS: usize = 32;
const MAX_PARAMS: usize = 256;

struct OscState {
buffer: Vec<u8>,
Expand Down Expand Up @@ -367,7 +367,7 @@ pub struct VTParser {
/// and I are intermediate bytes in the range 0x20-0x2F
/// and F is the final byte in the range 0x40-0x7E
///
#[derive(Clone, PartialEq, Eq, Debug, Hash)]
#[derive(Copy, Clone, PartialEq, Eq, Debug, Hash)]
pub enum CsiParam {
Integer(i64),
P(u8),
Expand Down Expand Up @@ -422,7 +422,7 @@ impl VTParser {
full: false,
},

params: Default::default(),
params: [CsiParam::Integer(0); MAX_PARAMS],
num_params: 0,
params_full: false,
current_param: None,
Expand Down Expand Up @@ -894,11 +894,13 @@ mod test {

#[test]
fn test_csi_too_many_params() {
// To be honest, I'm not sure this test is meaningful anymore
// now that MAX_PARAMS is so high...
assert_eq!(
parse_as_vec(b"\x1b[0;1;2;3;4;5;6;7;8;9;0;1;2;3;4;51;6p"),
parse_as_vec(b"\x1b[0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55;56;57;58;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;81;82;83;84;85;86;87;88;89;90;91;92;93;94;95;96;97;98;99;100;101;102;103;104;105;106;107;108;109;110;111;112;113;114;115;116;117;118;119;120;121;122;123;124;125;126;127;128p"),
vec![VTAction::CsiDispatch {
params: vec![
CsiParam::Integer(0),
CsiParam::Integer(0),
CsiParam::P(b';'),
CsiParam::Integer(1),
CsiParam::P(b';'),
Expand All @@ -918,18 +920,242 @@ mod test {
CsiParam::P(b';'),
CsiParam::Integer(9),
CsiParam::P(b';'),
CsiParam::Integer(0),
CsiParam::Integer(10),
CsiParam::P(b';'),
CsiParam::Integer(1),
CsiParam::Integer(11),
CsiParam::P(b';'),
CsiParam::Integer(2),
CsiParam::Integer(12),
CsiParam::P(b';'),
CsiParam::Integer(3),
CsiParam::Integer(13),
CsiParam::P(b';'),
CsiParam::Integer(4),
CsiParam::Integer(14),
CsiParam::P(b';'),
CsiParam::Integer(15),
CsiParam::P(b';'),
CsiParam::Integer(16),
CsiParam::P(b';'),
CsiParam::Integer(17),
CsiParam::P(b';'),
CsiParam::Integer(18),
CsiParam::P(b';'),
CsiParam::Integer(19),
CsiParam::P(b';'),
CsiParam::Integer(20),
CsiParam::P(b';'),
CsiParam::Integer(21),
CsiParam::P(b';'),
CsiParam::Integer(22),
CsiParam::P(b';'),
CsiParam::Integer(23),
CsiParam::P(b';'),
CsiParam::Integer(24),
CsiParam::P(b';'),
CsiParam::Integer(25),
CsiParam::P(b';'),
CsiParam::Integer(26),
CsiParam::P(b';'),
CsiParam::Integer(27),
CsiParam::P(b';'),
CsiParam::Integer(28),
CsiParam::P(b';'),
CsiParam::Integer(29),
CsiParam::P(b';'),
CsiParam::Integer(30),
CsiParam::P(b';'),
CsiParam::Integer(31),
CsiParam::P(b';'),
CsiParam::Integer(32),
CsiParam::P(b';'),
CsiParam::Integer(33),
CsiParam::P(b';'),
CsiParam::Integer(34),
CsiParam::P(b';'),
CsiParam::Integer(35),
CsiParam::P(b';'),
CsiParam::Integer(36),
CsiParam::P(b';'),
CsiParam::Integer(37),
CsiParam::P(b';'),
CsiParam::Integer(38),
CsiParam::P(b';'),
CsiParam::Integer(39),
CsiParam::P(b';'),
CsiParam::Integer(40),
CsiParam::P(b';'),
CsiParam::Integer(41),
CsiParam::P(b';'),
CsiParam::Integer(42),
CsiParam::P(b';'),
CsiParam::Integer(43),
CsiParam::P(b';'),
CsiParam::Integer(44),
CsiParam::P(b';'),
CsiParam::Integer(45),
CsiParam::P(b';'),
CsiParam::Integer(46),
CsiParam::P(b';'),
CsiParam::Integer(47),
CsiParam::P(b';'),
CsiParam::Integer(48),
CsiParam::P(b';'),
CsiParam::Integer(49),
CsiParam::P(b';'),
CsiParam::Integer(50),
CsiParam::P(b';'),
CsiParam::Integer(51),
CsiParam::P(b';'),
CsiParam::Integer(52),
CsiParam::P(b';'),
CsiParam::Integer(53),
CsiParam::P(b';'),
CsiParam::Integer(54),
CsiParam::P(b';'),
CsiParam::Integer(55),
CsiParam::P(b';'),
CsiParam::Integer(56),
CsiParam::P(b';'),
CsiParam::Integer(57),
CsiParam::P(b';'),
CsiParam::Integer(58),
CsiParam::P(b';'),
CsiParam::Integer(59),
CsiParam::P(b';'),
CsiParam::Integer(60),
CsiParam::P(b';'),
CsiParam::Integer(61),
CsiParam::P(b';'),
CsiParam::Integer(62),
CsiParam::P(b';'),
CsiParam::Integer(63),
CsiParam::P(b';'),
CsiParam::Integer(64),
CsiParam::P(b';'),
CsiParam::Integer(65),
CsiParam::P(b';'),
CsiParam::Integer(66),
CsiParam::P(b';'),
CsiParam::Integer(67),
CsiParam::P(b';'),
CsiParam::Integer(68),
CsiParam::P(b';'),
CsiParam::Integer(69),
CsiParam::P(b';'),
CsiParam::Integer(70),
CsiParam::P(b';'),
CsiParam::Integer(71),
CsiParam::P(b';'),
CsiParam::Integer(72),
CsiParam::P(b';'),
CsiParam::Integer(73),
CsiParam::P(b';'),
CsiParam::Integer(74),
CsiParam::P(b';'),
CsiParam::Integer(75),
CsiParam::P(b';'),
CsiParam::Integer(76),
CsiParam::P(b';'),
CsiParam::Integer(77),
CsiParam::P(b';'),
CsiParam::Integer(78),
CsiParam::P(b';'),
CsiParam::Integer(79),
CsiParam::P(b';'),
CsiParam::Integer(80),
CsiParam::P(b';'),
CsiParam::Integer(81),
CsiParam::P(b';'),
CsiParam::Integer(82),
CsiParam::P(b';'),
CsiParam::Integer(83),
CsiParam::P(b';'),
CsiParam::Integer(84),
CsiParam::P(b';'),
CsiParam::Integer(85),
CsiParam::P(b';'),
CsiParam::Integer(86),
CsiParam::P(b';'),
CsiParam::Integer(87),
CsiParam::P(b';'),
CsiParam::Integer(88),
CsiParam::P(b';'),
CsiParam::Integer(89),
CsiParam::P(b';'),
CsiParam::Integer(90),
CsiParam::P(b';'),
CsiParam::Integer(91),
CsiParam::P(b';'),
CsiParam::Integer(92),
CsiParam::P(b';'),
CsiParam::Integer(93),
CsiParam::P(b';'),
CsiParam::Integer(94),
CsiParam::P(b';'),
CsiParam::Integer(95),
CsiParam::P(b';'),
CsiParam::Integer(96),
CsiParam::P(b';'),
CsiParam::Integer(97),
CsiParam::P(b';'),
CsiParam::Integer(98),
CsiParam::P(b';'),
CsiParam::Integer(99),
CsiParam::P(b';'),
CsiParam::Integer(100),
CsiParam::P(b';'),
CsiParam::Integer(101),
CsiParam::P(b';'),
CsiParam::Integer(102),
CsiParam::P(b';'),
CsiParam::Integer(103),
CsiParam::P(b';'),
CsiParam::Integer(104),
CsiParam::P(b';'),
CsiParam::Integer(105),
CsiParam::P(b';'),
CsiParam::Integer(106),
CsiParam::P(b';'),
CsiParam::Integer(107),
CsiParam::P(b';'),
CsiParam::Integer(108),
CsiParam::P(b';'),
CsiParam::Integer(109),
CsiParam::P(b';'),
CsiParam::Integer(110),
CsiParam::P(b';'),
CsiParam::Integer(111),
CsiParam::P(b';'),
CsiParam::Integer(112),
CsiParam::P(b';'),
CsiParam::Integer(113),
CsiParam::P(b';'),
CsiParam::Integer(114),
CsiParam::P(b';'),
CsiParam::Integer(115),
CsiParam::P(b';'),
CsiParam::Integer(116),
CsiParam::P(b';'),
CsiParam::Integer(117),
CsiParam::P(b';'),
CsiParam::Integer(118),
CsiParam::P(b';'),
CsiParam::Integer(119),
CsiParam::P(b';'),
CsiParam::Integer(120),
CsiParam::P(b';'),
CsiParam::Integer(121),
CsiParam::P(b';'),
CsiParam::Integer(122),
CsiParam::P(b';'),
CsiParam::Integer(123),
CsiParam::P(b';'),
CsiParam::Integer(124),
CsiParam::P(b';'),
CsiParam::Integer(125),
CsiParam::P(b';'),
CsiParam::Integer(126),
CsiParam::P(b';'),
CsiParam::Integer(127),
CsiParam::P(b';'),
],
parameters_truncated: false,
byte: b'p'
Expand Down

0 comments on commit 364160f

Please sign in to comment.