From fcc480d1592bebf474edc4b63f91d9251e4f1071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Tom=C3=A1s?= Date: Sun, 3 May 2020 13:07:36 -0300 Subject: Scroll only when cursor goes off screen --- jet.c | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/jet.c b/jet.c index 5f7e5b1..294b822 100644 --- a/jet.c +++ b/jet.c @@ -61,32 +61,22 @@ int main(int argc, char *argv[]) { mode = INSERT_MODE; break; case 'k': - prev_line(&window_start, window_width); prev_line(&cursor, window_width); + if (y <= 0) { + prev_line(&window_start, window_width); + } break; case 'j': - if (element(&window_end)) { - next_line(&window_start, window_width); - } next_line(&cursor, window_width); - if (same_point(&cursor, &window_end)) { - move_point_backward(&cursor); + if (y >= window_height - 2) { + next_line(&window_start, window_width); } break; case 'h': - if (same_point(&cursor, &window_start)) { - prev_line(&window_start, window_width); - } move_point_backward(&cursor); break; case 'l': - if (same_point(&cursor, &window_end)) { - next_line(&window_start, window_width); - } move_point_forward(&cursor); - if (same_point(&cursor, &window_end)) { - move_point_backward(&cursor); - } break; } } else { @@ -95,23 +85,15 @@ int main(int argc, char *argv[]) { mode = NORMAL_MODE; break; case KEY_BACKSPACE: - if (same_point(&cursor, &window_start)) { - prev_line(&window_start, window_width); - } delete_at_point(&cursor); break; default: - if (same_point(&cursor, &window_end)) { - next_line(&window_start, window_width); - } insert_at_point(&cursor, input); - move_point_backward(&cursor); - if (element(&cursor) == '\n') { - next_line(&window_start, window_width); - } - move_point_forward(&cursor); } } + if (element(&cursor) == 0) { + move_point_backward(&cursor); + } } endwin(); -- cgit v1.2.3