summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2019-01-06 14:40:16 -0500
committerJiayi Zhao <jeff.no.zhao@gmail.com>2019-01-06 14:40:16 -0500
commit8148183e7754d89bbd5c8c95c8498907299c42c0 (patch)
treeeea9722d539e96356dfae34092f29fe7c6d216dd
parentd565bc5f81d82650b152cb551f065651e84b18d2 (diff)
fix search finding the same thing everytime
-rw-r--r--src/joshuto/command/search.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/joshuto/command/search.rs b/src/joshuto/command/search.rs
index f3747fd..077828b 100644
--- a/src/joshuto/command/search.rs
+++ b/src/joshuto/command/search.rs
@@ -45,10 +45,14 @@ impl command::Runnable for Search {
let mut index: Option<i32> = None;
if let Some(user_input) = input::get_str(&win, (0, PROMPT.len() as i32)) {
+ let user_input = user_input.to_lowercase();
if let Some(curr_list) = context.curr_list.as_ref() {
- for (i, dirent) in (&curr_list.contents).into_iter().enumerate() {
- if dirent.file_name_as_string.contains(user_input.as_str()) {
- index = Some(i as i32);
+ let offset = curr_list.index as usize;
+ let contents_len = curr_list.contents.len();
+ for i in 0..contents_len {
+ let file_name_lower = curr_list.contents[(offset + i) % contents_len].file_name_as_string.to_lowercase();
+ if file_name_lower.contains(user_input.as_str()) {
+ index = Some(((offset + i) % contents_len) as i32);
break;
}
}