ansi/
ansi.rs

1extern crate skim;
2use skim::{prelude::*, reader::CommandCollector};
3
4pub fn main() {
5    env_logger::init();
6
7    let glogm = Some(String::from("git log --oneline --color=always | head -n10"));
8
9    let options = SkimOptionsBuilder::default()
10        .height(String::from("50%"))
11        .cmd(glogm)
12        .preview(Some(String::from("echo {}")))
13        .multi(true)
14        .reverse(true)
15        .cmd_collector(Rc::new(RefCell::new(SkimItemReader::new(
16            SkimItemReaderOption::default().ansi(true),
17        ))) as Rc<RefCell<dyn CommandCollector>>)
18        .build()
19        .unwrap();
20
21    log::debug!("Options: ansi {}", options.ansi);
22
23    let selected_items = Skim::run_with(options, None)
24        .map(|out| out.selected_items)
25        .unwrap_or_default();
26
27    for item in selected_items.iter() {
28        print!("selected: {}{}", item.output(), "\n");
29    }
30}