diff options
| -rw-r--r-- | src/main.rs | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index ea151c8..7f84646 100644 --- a/src/main.rs +++ b/src/main.rs @@ -185,10 +185,13 @@ impl Ivy { 'j' => { self.handle_movement(async |ivy: &mut Ivy| { + let buffer = ivy.buffer.read().await; let window = ivy.window.write().await; let mut row = window.cursor_row.write().await; - *row += 1; + if *row + 1 < buffer.lines.read().await.len() { + *row += 1; + }; Ok(()) }).await?; @@ -209,10 +212,18 @@ impl Ivy { 'l' => { self.handle_movement(async |ivy: &mut Ivy| { + let buffer = ivy.buffer.read().await; let window = ivy.window.write().await; - let mut column = window.cursor_column.write().await; - *column += 1; + let row = *window.cursor_row.read().await; + if let Some(span) = buffer.line_span(row).await { + let width = span.end - span.start; + + let mut column = window.cursor_column.write().await; + if *column + 1 < width { + *column += 1; + } + } Ok(()) }).await?; |