aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crates/atuin-client/src/database.rs6
-rw-r--r--crates/atuin/src/command/client/search/engines/db.rs2
2 files changed, 7 insertions, 1 deletions
diff --git a/crates/atuin-client/src/database.rs b/crates/atuin-client/src/database.rs
index b194e655..d51c2637 100644
--- a/crates/atuin-client/src/database.rs
+++ b/crates/atuin-client/src/database.rs
@@ -509,6 +509,9 @@ impl Database for Sqlite {
QueryToken::MatchEnd(term) => {
format!("{glob}{term}")
}
+ QueryToken::MatchFull(term) => {
+ format!("{glob}{term}{glob}")
+ }
QueryToken::Negation(term) => {
is_inverse = true;
format!("{glob}{term}{glob}")
@@ -1189,6 +1192,7 @@ pub enum QueryToken<'a> {
Negation(&'a str),
MatchStart(&'a str),
MatchEnd(&'a str),
+ MatchFull(&'a str),
Or,
Regex(&'a str),
}
@@ -1243,6 +1247,8 @@ impl<'a> Iterator for QueryTokenizer<'a> {
QueryToken::MatchEnd(s)
} else if let Some(s) = part.strip_prefix('!') {
QueryToken::Negation(s)
+ } else if let Some(s) = part.strip_prefix('\'') {
+ QueryToken::MatchFull(s)
} else if part == "|" {
QueryToken::Or
} else {
diff --git a/crates/atuin/src/command/client/search/engines/db.rs b/crates/atuin/src/command/client/search/engines/db.rs
index 9e7964f3..a1d22e9f 100644
--- a/crates/atuin/src/command/client/search/engines/db.rs
+++ b/crates/atuin/src/command/client/search/engines/db.rs
@@ -85,7 +85,7 @@ fn get_highlight_indices_fulltext(command: &str, search_input: &str) -> Vec<usiz
ranges.push((l - term.len())..l);
}
}
- QueryToken::Match(term) => {
+ QueryToken::Match(term) | QueryToken::MatchFull(term) => {
for (idx, m) in matchee.match_indices(term) {
ranges.push(idx..(idx + m.len()));
}