From 044a0ad2b153781fdab9984b7d1615869765f539 Mon Sep 17 00:00:00 2001 From: WormHeamer Date: Sun, 28 Dec 2025 05:02:54 -0500 Subject: grow view window upwards when at end of document --- main.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index 31b9354..18550ac 100644 --- a/main.c +++ b/main.c @@ -1,7 +1,5 @@ -#include #include #include -#include #include #include @@ -154,12 +152,13 @@ u32 move_par_down(Txt *t, u32 cur) { void find_view_window(Txt *t, u32 curs, TxtLoc *start, TxtLoc *end) { TxtLoc l = txt_at(t, curs); - u32 n = LINES; u32 u = LINES / 2; TxtLoc a = l; for (u32 i = 0; i < u; i++) a = prev_newline(t, a); + u32 n = 0; TxtLoc b = a; - while (!txt_at_end(t, b) && n--) b = next_newline(t, b); + while (!txt_at_end(t, b) && n++ < LINES) b = next_newline(t, b); + while (!txt_at_start(t, a) && n++ < LINES) a = prev_newline(t, a); if (!txt_at_start(t,a) && txt_byte(t,a) == '\n') a = txt_next(t, a); *start = a; *end = b; @@ -263,6 +262,12 @@ int main(int argc, const char **argv) { case KEY_END: cur = txt_ofs(&txt, next_newline(&txt, txt_at(&txt, cur))); break; + case KEY_HOME | KEY_CTRL_BIT: + cur = 0; + break; + case KEY_END | KEY_CTRL_BIT: + cur = txt.len; + break; case 0x17 /* ^W */: cur = del_between(&txt, move_word_back(&txt, cur), cur); break; -- cgit v1.2.3