diff --git a/src/main.rs b/src/main.rs index 8a625a2..3ac0cb2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -92,10 +92,15 @@ fn main() -> Result<(), Box> { if let Some(i) = state.selected() && i < marked.len() { - marked[i] = true; - // move cursor down - let next = if i + 1 < lines.len() { i + 1 } else { i }; - state.select(Some(next)); + assert!(i < marked.len()); + if marked[i] { + marked[i] = false; + } else { + marked[i] = true; + // move cursor down + let next = lines.len().min(i + 1); + state.select(Some(next)); + } } } _ => {}