twm 0.2.0

A customizable workspace manager for tmux
Documentation
use std::io;

use anyhow::{Context, Result};

pub fn get_skim_selection_from_slice(items: &[&str], prompt: &str) -> Result<String> {
    let opts = skim::prelude::SkimOptionsBuilder::default()
        .prompt(Some(prompt))
        .color(Some("blue"))
        .tiebreak(Some("score".to_string()))
        .tiebreak(Some("length".to_string()))
        .build()?;
    let item_reader = skim::prelude::SkimItemReader::default();
    let items_skim = items.join("\n");
    let receiver = item_reader.of_bufread(io::Cursor::new(items_skim));
    let result =
        skim::Skim::run_with(&opts, Some(receiver)).with_context(|| "Failed to run skim picker")?;
    if result.is_abort {
        anyhow::bail!("Skim finder aborted");
    }
    match result.selected_items.first() {
        Some(item) => Ok(item.output().to_string()),
        None => anyhow::bail!("No item selected from skim finder!"),
    }
}