use crate::terminal::AnsiStyle;
pub mod iterm2;
pub mod kitty;
pub mod terminology;
#[derive(Debug, Copy, Clone)]
pub enum StyleCapability {
Ansi(AnsiStyle),
}
#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub enum LinkCapability {
Osc8(crate::terminal::osc::Osc8Links),
}
#[derive(Debug, Copy, Clone)]
pub enum MarkCapability {
ITerm2(self::iterm2::ITerm2Marks),
}
#[derive(Debug, Copy, Clone)]
pub enum ImageCapability {
Terminology(self::terminology::TerminologyImages),
ITerm2(self::iterm2::ITerm2Images),
Kitty(self::kitty::KittyImages),
}
#[derive(Debug)]
pub struct TerminalCapabilities {
pub style: Option<StyleCapability>,
pub links: Option<LinkCapability>,
pub image: Option<ImageCapability>,
pub marks: Option<MarkCapability>,
}
impl Default for TerminalCapabilities {
fn default() -> Self {
TerminalCapabilities {
style: None,
links: None,
image: None,
marks: None,
}
}
}
impl TerminalCapabilities {
pub(crate) fn with_image_capability(mut self, cap: ImageCapability) -> Self {
self.image = Some(cap);
self
}
pub(crate) fn with_mark_capability(mut self, cap: MarkCapability) -> Self {
self.marks = Some(cap);
self
}
}