diff --git a/src/main.rs b/src/main.rs index 8eebc086..96b63f04 100644 --- a/src/main.rs +++ b/src/main.rs @@ -373,10 +373,20 @@ fn watch(exercises: &[Exercise], verbose: bool) -> notify::Result { .into_iter() .chain( exercises - .iter() - .filter(|e| !e.looks_done() && !filepath.ends_with(&e.path)), + .into_iter() + .take_while(|e| !filepath.ends_with(&e.path)) + .filter(|e| !e.looks_done()), + ) + .chain( + exercises + .into_iter() + .skip_while(|e| !filepath.ends_with(&e.path)), ); - let num_done = exercises.iter().filter(|e| e.looks_done()).count(); + let num_done = exercises + .iter() + .take_while(|e| !filepath.ends_with(&e.path)) + .filter(|e| e.looks_done()) + .count(); clear_screen(); match verify(pending_exercises, (num_done, exercises.len()), verbose) { Ok(_) => return Ok(WatchStatus::Finished),