mirror of
https://github.com/wez/wezterm.git
synced 2024-11-23 06:54:45 +03:00
vtparse: increase MAX_OSC to load dynamic color scripts
This commit is contained in:
parent
d7fa541745
commit
c8cb99a512
@ -39,6 +39,7 @@ As features stabilize some brief notes about them will accumulate here.
|
|||||||
* Wayland: transparent gap under tab bar when window is transparent, split and using per-pane color schemes [#1620](https://github.com/wez/wezterm/issues/1620)
|
* Wayland: transparent gap under tab bar when window is transparent, split and using per-pane color schemes [#1620](https://github.com/wez/wezterm/issues/1620)
|
||||||
* Tab bar could show a gap to the right when resizing
|
* Tab bar could show a gap to the right when resizing
|
||||||
* Padding could show window background rather than pane background around split panes at certain window sizes [#2210](https://github.com/wez/wezterm/issues/2210)
|
* Padding could show window background rather than pane background around split panes at certain window sizes [#2210](https://github.com/wez/wezterm/issues/2210)
|
||||||
|
* Loading dynamic escape sequence scripts from the [iTerm2-Color-Scheme dynamic-colors directory](https://github.com/mbadolato/iTerm2-Color-Schemes/tree/master/dynamic-colors) would only apply the first 7 colors
|
||||||
|
|
||||||
#### Updated
|
#### Updated
|
||||||
* Bundled harfbuzz to 4.4.1
|
* Bundled harfbuzz to 4.4.1
|
||||||
|
@ -845,4 +845,201 @@ mod test {
|
|||||||
let mut p = Parser::new();
|
let mut p = Parser::new();
|
||||||
p.parse_as_vec(b"\x9d1337\xff;File\x1b");
|
p.parse_as_vec(b"\x9d1337\xff;File\x1b");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// vtparse's MAX_OSC was set too low to fully parse this escape sequence.
|
||||||
|
/// This test verifies that the correct number of actions comes back.
|
||||||
|
#[test]
|
||||||
|
fn dynamic_colors() {
|
||||||
|
let mut p = Parser::new();
|
||||||
|
let actions = p.parse_as_vec(b"\x1b]4;0;#000000;1;#aa3731;2;#448c27;3;#cb9000;4;#325cc0;5;#7a3e9d;6;#0083b2;7;#f7f7f7;8;#777777;9;#f05050;10;#60cb00;11;#ffbc5d;12;#007acc;13;#e64ce6;14;#00aacb;15;#f7f7f7\x07");
|
||||||
|
k9::snapshot!(
|
||||||
|
actions,
|
||||||
|
"
|
||||||
|
[
|
||||||
|
OperatingSystemCommand(
|
||||||
|
ChangeColorNumber(
|
||||||
|
[
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 0,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 1,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.6666667,
|
||||||
|
0.21568628,
|
||||||
|
0.19215687,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 2,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.26666668,
|
||||||
|
0.54901963,
|
||||||
|
0.15294118,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 3,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.79607844,
|
||||||
|
0.5647059,
|
||||||
|
0.0,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 4,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.19607843,
|
||||||
|
0.36078432,
|
||||||
|
0.7529412,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 5,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.47843137,
|
||||||
|
0.24313726,
|
||||||
|
0.6156863,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 6,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.0,
|
||||||
|
0.5137255,
|
||||||
|
0.69803923,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 7,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.96862745,
|
||||||
|
0.96862745,
|
||||||
|
0.96862745,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 8,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.46666667,
|
||||||
|
0.46666667,
|
||||||
|
0.46666667,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 9,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.9411765,
|
||||||
|
0.3137255,
|
||||||
|
0.3137255,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 10,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.3764706,
|
||||||
|
0.79607844,
|
||||||
|
0.0,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 11,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
1.0,
|
||||||
|
0.7372549,
|
||||||
|
0.3647059,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 12,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.0,
|
||||||
|
0.47843137,
|
||||||
|
0.8,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 13,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.9019608,
|
||||||
|
0.29803923,
|
||||||
|
0.9019608,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 14,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.0,
|
||||||
|
0.6666667,
|
||||||
|
0.79607844,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
ChangeColorPair {
|
||||||
|
palette_index: 15,
|
||||||
|
color: Color(
|
||||||
|
SrgbaTuple(
|
||||||
|
0.96862745,
|
||||||
|
0.96862745,
|
||||||
|
0.96862745,
|
||||||
|
1.0,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
"
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -294,7 +294,7 @@ impl VTActor for CollectingVTActor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const MAX_INTERMEDIATES: usize = 2;
|
const MAX_INTERMEDIATES: usize = 2;
|
||||||
const MAX_OSC: usize = 16;
|
const MAX_OSC: usize = 64;
|
||||||
const MAX_PARAMS: usize = 32;
|
const MAX_PARAMS: usize = 32;
|
||||||
|
|
||||||
struct OscState {
|
struct OscState {
|
||||||
@ -779,28 +779,20 @@ mod test {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_osc_too_many_params() {
|
fn test_osc_too_many_params() {
|
||||||
assert_eq!(
|
let fields = (0..MAX_OSC + 2)
|
||||||
parse_as_vec(b"\x1b]0;1;2;3;4;5;6;7;8;9;a;b;c;d;e;f;g\x07"),
|
.into_iter()
|
||||||
vec![VTAction::OscDispatch(vec![
|
.map(|i| i.to_string())
|
||||||
b"0".to_vec(),
|
.collect::<Vec<_>>();
|
||||||
b"1".to_vec(),
|
let input = format!("\x1b]{}\x07", fields.join(";"));
|
||||||
b"2".to_vec(),
|
let actions = parse_as_vec(input.as_bytes());
|
||||||
b"3".to_vec(),
|
assert_eq!(actions.len(), 1);
|
||||||
b"4".to_vec(),
|
match &actions[0] {
|
||||||
b"5".to_vec(),
|
VTAction::OscDispatch(parsed_fields) => {
|
||||||
b"6".to_vec(),
|
let fields: Vec<_> = fields.into_iter().map(|s| s.as_bytes().to_vec()).collect();
|
||||||
b"7".to_vec(),
|
assert_eq!(parsed_fields.as_slice(), &fields[0..MAX_OSC]);
|
||||||
b"8".to_vec(),
|
}
|
||||||
b"9".to_vec(),
|
other => panic!("Expected OscDispatch but got {:?}", other),
|
||||||
b"a".to_vec(),
|
}
|
||||||
b"b".to_vec(),
|
|
||||||
b"c".to_vec(),
|
|
||||||
b"d".to_vec(),
|
|
||||||
b"e".to_vec(),
|
|
||||||
b"f".to_vec(),
|
|
||||||
// g is discarded
|
|
||||||
])]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
Reference in New Issue
Block a user