aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorConrad Ludgate <conradludgate@gmail.com>2023-07-24 19:47:50 +0100
committerGitHub <noreply@github.com>2023-07-24 19:47:50 +0100
commita0f95ad7b1faf368c8bb05ce09a52989dac94774 (patch)
tree813bc8435ca9054597cf3303d7b0b0937b095248
parentUnvendor ratatui (#1101) (diff)
downloadatuin-a0f95ad7b1faf368c8bb05ce09a52989dac94774.zip
skim: fix filtering aggregates (#1114)
* skim: fix filtering aggregates * comments
-rw-r--r--atuin/src/command/client/search/engines/skim.rs21
1 files changed, 18 insertions, 3 deletions
diff --git a/atuin/src/command/client/search/engines/skim.rs b/atuin/src/command/client/search/engines/skim.rs
index 76049312..375a018f 100644
--- a/atuin/src/command/client/search/engines/skim.rs
+++ b/atuin/src/command/client/search/engines/skim.rs
@@ -5,6 +5,7 @@ use atuin_client::{database::Database, history::History, settings::FilterMode};
use chrono::Utc;
use eyre::Result;
use fuzzy_matcher::{skim::SkimMatcherV2, FuzzyMatcher};
+use itertools::Itertools;
use tokio::task::yield_now;
use super::{SearchEngine, SearchState};
@@ -52,11 +53,25 @@ async fn fuzzy_search(
if i % 256 == 0 {
yield_now().await;
}
+ let context = &state.context;
match state.filter_mode {
FilterMode::Global => {}
- FilterMode::Host if history.hostname == state.context.hostname => {}
- FilterMode::Session if history.session == state.context.session => {}
- FilterMode::Directory if history.cwd == state.context.cwd => {}
+ // we aggregate host by ',' separating them
+ FilterMode::Host
+ if history
+ .hostname
+ .split(',')
+ .contains(&context.hostname.as_str()) => {}
+ // we aggregate session by concattenating them.
+ // sessions are 32 byte simple uuid formats
+ FilterMode::Session
+ if history
+ .session
+ .as_bytes()
+ .chunks(32)
+ .contains(&context.session.as_bytes()) => {}
+ // we aggregate directory by ':' separating them
+ FilterMode::Directory if history.cwd.split(':').contains(&context.cwd.as_str()) => {}
_ => continue,
}
#[allow(clippy::cast_lossless, clippy::cast_precision_loss)]