tConstrain horizontal cursor movement during vertical navigation - ve - a minimal text editor (work in progress)
HTML git clone git://src.adamsgaard.dk/ve
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit ff5731cf9db9e1933a13654bce29476117121ab5
DIR parent b6a1dc1daa16f2ce59d88fba5bf3bfdb36e61136
HTML Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Tue, 6 Aug 2019 13:22:48 +0200
Constrain horizontal cursor movement during vertical navigation
Diffstat:
M input.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
---
DIR diff --git a/input.c b/input.c
t@@ -5,9 +5,13 @@
#define CTRL_KEY(k) ((k) & 0x1f)
+/* move cursor according to screen, file, and line limits */
void
editor_move_cursor(char key)
{
+ int row_len;
+ eRow *row;
+
switch(key) {
case 'h':
if (E.cursor_x > 0)
t@@ -22,9 +26,17 @@ editor_move_cursor(char key)
E.cursor_y--;
break;
case 'l':
- E.cursor_x++;
+ row = (E.cursor_y >= E.num_rows) ? NULL : &E.row[E.cursor_y];
+ if (row && E.cursor_x < row->size)
+ E.cursor_x++;
break;
}
+
+ /* do not allow navigation past EOL by vertical navigation */
+ row = (E.cursor_y >= E.num_rows) ? NULL : &E.row[E.cursor_y];
+ row_len = row ? row->size : 0;
+ if (E.cursor_x > row_len)
+ E.cursor_x = row_len;
}
void