summaryrefslogtreecommitdiffstats
path: root/src/commands/filter.rs
blob: fbf1d307651abcd792a73546318cb38489fa8b47 (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
28
use crate::context::{AppContext, MatchContext};
use crate::error::JoshutoResult;

use super::reload;

pub fn filter(context: &mut AppContext, pattern: &str) -> JoshutoResult {
    let case_sensitivity = context
        .config_ref()
        .search_options_ref()
        .string_case_sensitivity;

    let filter_context = MatchContext::new_string(pattern, case_sensitivity);

    let curr_tab = context.tab_context_mut().curr_tab_mut();
    let path = curr_tab.cwd().to_path_buf();

    curr_tab
        .option_mut()
        .dirlist_options_mut(&path)
        .set_filter_context(filter_context);

    if let Some(list) = curr_tab.curr_list_mut() {
        list.depreciate();
    }

    reload::soft_reload_curr_tab(context)?;
    Ok(())
}