Terminal Markdown previewer — GUI-like experience.
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: optimize search cache

RivoLink 535ef9d0 fdde1b3f

+9 -19
+8 -5
src/app/mod.rs
··· 62 62 pub(crate) struct App { 63 63 pub(super) lines: Vec<Line<'static>>, 64 64 pub(super) plain_lines: Vec<String>, 65 - pub(super) folded_plain_lines: Option<Vec<String>>, 66 65 pub(super) scroll: usize, 67 66 pub(super) toc: Vec<TocEntry>, 68 67 toc_visible: bool, ··· 138 137 filepath, 139 138 last_file_state, 140 139 } = config; 141 - let plain_lines = build_plain_lines(&lines); 140 + let plain_lines = build_plain_lines(&lines) 141 + .into_iter() 142 + .map(|line| line.to_lowercase()) 143 + .collect(); 142 144 let mut app = Self { 143 145 lines, 144 146 plain_lines, 145 - folded_plain_lines: None, 146 147 scroll: 0, 147 148 toc, 148 149 toc_visible: false, ··· 248 249 } 249 250 250 251 pub(crate) fn replace_content(&mut self, lines: Vec<Line<'static>>, toc: Vec<TocEntry>) { 251 - self.plain_lines = build_plain_lines(&lines); 252 - self.folded_plain_lines = None; 252 + self.plain_lines = build_plain_lines(&lines) 253 + .into_iter() 254 + .map(|line| line.to_lowercase()) 255 + .collect(); 253 256 self.lines = lines; 254 257 self.toc = toc; 255 258 self.highlighted_line_cache = None;
+1 -14
src/app/search.rs
··· 60 60 self.search.draft.push(ch); 61 61 } 62 62 63 - pub(crate) fn folded_plain_lines(&mut self) -> &[String] { 64 - if self.folded_plain_lines.is_none() { 65 - self.folded_plain_lines = Some( 66 - self.plain_lines 67 - .iter() 68 - .map(|line| line.to_lowercase()) 69 - .collect(), 70 - ); 71 - } 72 - self.folded_plain_lines.as_deref().unwrap_or(&[]) 73 - } 74 - 75 63 pub(crate) fn run_search(&mut self) { 76 64 let q = self.search.query.to_lowercase(); 77 65 if q.is_empty() { 78 66 return; 79 67 } 80 68 let search_matches = { 81 - let folded_lines = self.folded_plain_lines(); 82 - folded_lines 69 + self.plain_lines 83 70 .iter() 84 71 .enumerate() 85 72 .filter(|(_, line)| line.contains(&q))