summaryrefslogtreecommitdiffstats
path: root/src/skim.rs
blob: 582af07f0cf39c278f4fb9752ff509bf1b2f44fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use skim::prelude::*;
use tuikit::term::Term;

/// Used to call skim, a clone of fzf.
pub struct Skimer {
    skim: Skim,
}

impl Skimer {
    /// Creates a new `Skimer` instance.
    /// `term` is an `Arc<term>` clone of the default term.
    pub fn new(term: Arc<Term>) -> Self {
        Self {
            skim: Skim::new_from_term(term),
        }
    }

    /// Call skim on its term.
    /// Once the user has selected a file, it will returns its results
    /// as a vec of skimitems.
    pub fn no_source(&self, path_str: &str) -> Vec<Arc<dyn SkimItem>> {
        self.skim
            .run_internal(None, path_str.to_owned())
            .map(|out| out.selected_items)
            .unwrap_or_else(Vec::new)
    }
}