mirror of
https://github.com/wez/wezterm.git
synced 2024-11-30 06:03:39 +03:00
term+termwiz: add Overline support
This commit teaches the terminal model about the overline attribute and the SGR codes to enable/disable overline. The render layer in the GUI doesn't yet understand this attribute.
This commit is contained in:
parent
4e6357b218
commit
badc4f9d9c
@ -2386,6 +2386,9 @@ impl TerminalState {
|
|||||||
Sgr::Underline(underline) => {
|
Sgr::Underline(underline) => {
|
||||||
self.pen.set_underline(underline);
|
self.pen.set_underline(underline);
|
||||||
}
|
}
|
||||||
|
Sgr::Overline(overline) => {
|
||||||
|
self.pen.set_overline(overline);
|
||||||
|
}
|
||||||
Sgr::Blink(blink) => {
|
Sgr::Blink(blink) => {
|
||||||
self.pen.set_blink(blink);
|
self.pen.set_blink(blink);
|
||||||
}
|
}
|
||||||
|
@ -158,6 +158,7 @@ impl CellAttributes {
|
|||||||
bitfield!(strikethrough, set_strikethrough, 8);
|
bitfield!(strikethrough, set_strikethrough, 8);
|
||||||
bitfield!(invisible, set_invisible, 9);
|
bitfield!(invisible, set_invisible, 9);
|
||||||
bitfield!(wrapped, set_wrapped, 10);
|
bitfield!(wrapped, set_wrapped, 10);
|
||||||
|
bitfield!(overline, set_overline, 11);
|
||||||
|
|
||||||
/// Returns true if the attribute bits in both objects are equal.
|
/// Returns true if the attribute bits in both objects are equal.
|
||||||
/// This can be used to cheaply test whether the styles of the two
|
/// This can be used to cheaply test whether the styles of the two
|
||||||
|
@ -1094,6 +1094,7 @@ pub enum Sgr {
|
|||||||
Font(Font),
|
Font(Font),
|
||||||
Foreground(ColorSpec),
|
Foreground(ColorSpec),
|
||||||
Background(ColorSpec),
|
Background(ColorSpec),
|
||||||
|
Overline(bool),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Display for Sgr {
|
impl Display for Sgr {
|
||||||
@ -1135,6 +1136,8 @@ impl Display for Sgr {
|
|||||||
Sgr::Invisible(false) => code!(InvisibleOff),
|
Sgr::Invisible(false) => code!(InvisibleOff),
|
||||||
Sgr::StrikeThrough(true) => code!(StrikeThroughOn),
|
Sgr::StrikeThrough(true) => code!(StrikeThroughOn),
|
||||||
Sgr::StrikeThrough(false) => code!(StrikeThroughOff),
|
Sgr::StrikeThrough(false) => code!(StrikeThroughOff),
|
||||||
|
Sgr::Overline(true) => code!(OverlineOn),
|
||||||
|
Sgr::Overline(false) => code!(OverlineOff),
|
||||||
Sgr::Font(Font::Default) => code!(DefaultFont),
|
Sgr::Font(Font::Default) => code!(DefaultFont),
|
||||||
Sgr::Font(Font::Alternate(1)) => code!(AltFont1),
|
Sgr::Font(Font::Alternate(1)) => code!(AltFont1),
|
||||||
Sgr::Font(Font::Alternate(2)) => code!(AltFont2),
|
Sgr::Font(Font::Alternate(2)) => code!(AltFont2),
|
||||||
@ -1873,6 +1876,8 @@ impl<'a> CSIParser<'a> {
|
|||||||
SgrCode::InvisibleOff => one!(Sgr::Invisible(false)),
|
SgrCode::InvisibleOff => one!(Sgr::Invisible(false)),
|
||||||
SgrCode::StrikeThroughOn => one!(Sgr::StrikeThrough(true)),
|
SgrCode::StrikeThroughOn => one!(Sgr::StrikeThrough(true)),
|
||||||
SgrCode::StrikeThroughOff => one!(Sgr::StrikeThrough(false)),
|
SgrCode::StrikeThroughOff => one!(Sgr::StrikeThrough(false)),
|
||||||
|
SgrCode::OverlineOn => one!(Sgr::Overline(true)),
|
||||||
|
SgrCode::OverlineOff => one!(Sgr::Overline(false)),
|
||||||
SgrCode::DefaultFont => one!(Sgr::Font(Font::Default)),
|
SgrCode::DefaultFont => one!(Sgr::Font(Font::Default)),
|
||||||
SgrCode::AltFont1 => one!(Sgr::Font(Font::Alternate(1))),
|
SgrCode::AltFont1 => one!(Sgr::Font(Font::Alternate(1))),
|
||||||
SgrCode::AltFont2 => one!(Sgr::Font(Font::Alternate(2))),
|
SgrCode::AltFont2 => one!(Sgr::Font(Font::Alternate(2))),
|
||||||
@ -1940,6 +1945,8 @@ pub enum SgrCode {
|
|||||||
BackgroundCyan = 46,
|
BackgroundCyan = 46,
|
||||||
BackgroundWhite = 47,
|
BackgroundWhite = 47,
|
||||||
BackgroundDefault = 49,
|
BackgroundDefault = 49,
|
||||||
|
OverlineOn = 53,
|
||||||
|
OverlineOff = 55,
|
||||||
|
|
||||||
ForegroundBrightBlack = 90,
|
ForegroundBrightBlack = 90,
|
||||||
ForegroundBrightRed = 91,
|
ForegroundBrightRed = 91,
|
||||||
|
Loading…
Reference in New Issue
Block a user