From 7890ab5809abe4ea3b061084a1ded07ee4086d79 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 15 Feb 2024 12:30:11 -0700 Subject: [PATCH] Implement word count, fixes #129 --- src/main.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index f991e7f..e01be3c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -651,25 +651,35 @@ impl App { let mut character_count = 0; let mut character_count_no_spaces = 0; let mut line_count = 0; + let mut word_count = 0; if let Some(Tab::Editor(tab)) = self.active_tab() { let editor = tab.editor.lock().unwrap(); editor.with_buffer(|buffer| { line_count = buffer.lines.len(); for line in buffer.lines.iter() { + let mut last_whitespace = true; //TODO: do graphemes? for c in line.text().chars() { character_count += 1; - if !c.is_whitespace() { + let is_whitespace = c.is_whitespace(); + if !is_whitespace { character_count_no_spaces += 1; + if last_whitespace { + word_count += 1; + } } + last_whitespace = is_whitespace; } } }); } widget::settings::view_column(vec![widget::settings::view_section("") - .add(widget::settings::item::builder(fl!("word-count")).control("TODO")) + .add( + widget::settings::item::builder(fl!("word-count")) + .control(widget::text(word_count.to_string())), + ) .add( widget::settings::item::builder(fl!("character-count")) .control(widget::text(character_count.to_string())),