tConstrain horizontal cursor movement during vertical navigation - ve - a minim… | |
git clone git://src.adamsgaard.dk/ve | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit ff5731cf9db9e1933a13654bce29476117121ab5 | |
parent b6a1dc1daa16f2ce59d88fba5bf3bfdb36e61136 | |
Author: Anders Damsgaard <[email protected]> | |
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(-) | |
--- | |
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.cur… | |
+ 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 |