diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2019-01-06 14:40:16 -0500 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2019-01-06 14:40:16 -0500 |
commit | 8148183e7754d89bbd5c8c95c8498907299c42c0 (patch) | |
tree | eea9722d539e96356dfae34092f29fe7c6d216dd | |
parent | d565bc5f81d82650b152cb551f065651e84b18d2 (diff) |
fix search finding the same thing everytime
-rw-r--r-- | src/joshuto/command/search.rs | 10 |
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; } } |