#[macro_export]
macro_rules! cond_bg {
($dst:ident, $self:ident, $selected:expr, $src:expr) => {
let mut cloned_style;
let $dst = if $selected {
cloned_style = $src.clone();
if let Some(c) = $self.skin.selected_line.get_bg() {
cloned_style.set_bg(c);
}
&cloned_style
} else {
&$src
};
};
}
mod areas;
mod col;
mod crop_writer;
mod displayable_tree;
mod filling;
mod git_status_display;
pub mod flags_display;
pub mod status_line;
mod matched_string;
mod screen;
mod cell_size;
#[cfg(not(any(target_family="windows",target_os="android")))]
mod permissions;
pub use {
areas::Areas,
col::*,
cond_bg,
crop_writer::CropWriter,
displayable_tree::DisplayableTree,
filling::*,
git_status_display::GitStatusDisplay,
matched_string::MatchedString,
screen::Screen,
cell_size::*,
};
use {
crate::{
errors::ProgramError,
},
crossterm::{
style::{
Color,
SetBackgroundColor,
},
QueueableCommand,
},
once_cell::sync::Lazy,
};
#[cfg(not(any(target_family="windows",target_os="android")))]
pub use {
permissions::PermWriter,
};
pub static TAB_REPLACEMENT: &str = " ";
pub static SPACE_FILLING: Lazy<Filling> = Lazy::new(|| { Filling::from_char(' ') });
pub static BRANCH_FILLING: Lazy<Filling> = Lazy::new(|| { Filling::from_char('─') });
pub const WIDE_STATUS: bool = true;
pub type W = std::io::BufWriter<std::io::Stderr>;
pub fn writer() -> W {
std::io::BufWriter::new(std::io::stderr())
}
pub fn fill_bg(
w: &mut W,
len: usize,
bg: Color,
) -> Result<(), ProgramError> {
w.queue(SetBackgroundColor(bg))?;
SPACE_FILLING.queue_unstyled(w, len)?;
Ok(())
}