From 5d7e8df952b2e51c28fad3443d7c9973659fc2ed Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Sun, 9 Nov 2025 19:26:37 +0100 Subject: allow configuring the command line height using h,5EJ * This allows for several customizations. * You can simply increase the visible command line history. For that you must also set SCI_SETWRAPMODE(SC_WRAP_CHAR). An example was added to fallback.teco_ini. * You could also set SCI_SETLINEENDTYPESALLOWED(SC_LINE_END_TYPE_DEFAULT) to see the structure of inserted text. * Alternatively we could have introduced a new command like EP or FW and also overload it to replace the current ED&2048 (e.g. -EP and EP). In DEC TECO `W` comes closest to what 5EJ now does. --- src/interface-curses/interface.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'src/interface-curses/interface.c') diff --git a/src/interface-curses/interface.c b/src/interface-curses/interface.c index 2effdb6..ed376c2 100644 --- a/src/interface-curses/interface.c +++ b/src/interface-curses/interface.c @@ -772,11 +772,12 @@ teco_interface_init_interactive(GError **error) leaveok(stdscr, TRUE); teco_interface.info_window = newwin(1, 0, 0, 0); - teco_interface.msg_window = newwin(1, 0, LINES - 2, 0); + teco_interface.msg_window = newwin(1, 0, LINES - teco_cmdline.height - 1, 0); - wresize(teco_view_get_window(teco_cmdline.view), 1, COLS); - mvwin(teco_view_get_window(teco_cmdline.view), LINES - 1, 0); - teco_cmdline_resize(COLS); + WINDOW *cmdline_win = teco_view_get_window(teco_cmdline.view); + wresize(cmdline_win, teco_cmdline.height, COLS); + mvwin(cmdline_win, LINES - teco_cmdline.height, 0); + teco_cmdline_resized(COLS); teco_interface.input_pad = newpad(1, 1); /* @@ -881,13 +882,14 @@ teco_interface_resize_all_windows(void) { wresize(teco_interface.info_window, 1, COLS); wresize(teco_view_get_window(teco_interface_current_view), - LINES - 3, COLS); + LINES - 2 - teco_cmdline.height, COLS); wresize(teco_interface.msg_window, 1, COLS); - mvwin(teco_interface.msg_window, LINES - 2, 0); + mvwin(teco_interface.msg_window, LINES - 1 - teco_cmdline.height, 0); - wresize(teco_view_get_window(teco_cmdline.view), 1, COLS); - mvwin(teco_view_get_window(teco_cmdline.view), LINES - 1, 0); - teco_cmdline_resize(COLS); + WINDOW *cmdline_win = teco_view_get_window(teco_cmdline.view); + wresize(cmdline_win, teco_cmdline.height, COLS); + mvwin(cmdline_win, LINES - teco_cmdline.height, 0); + teco_cmdline_resized(COLS); teco_interface_draw_info(); teco_interface_msg_clear(); /* FIXME: use saved message */ @@ -1009,7 +1011,7 @@ teco_interface_show_view(teco_view_t *view) * screen size might have changed since * this view's WINDOW was last active */ - wresize(current_view_win, LINES - 3, COLS); + wresize(current_view_win, LINES - 2 - teco_cmdline.height, COLS); /* Set up window position: never changes */ mvwin(current_view_win, 1, 0); } @@ -2027,6 +2029,7 @@ teco_interface_event_loop_iter(void) const teco_view_t *last_view = teco_interface_current_view; sptr_t last_vpos = teco_interface_ssm(SCI_GETFIRSTVISIBLELINE, 0, 0); + guint last_cmdline_height = teco_cmdline.height; switch (key) { case ERR: @@ -2153,6 +2156,10 @@ teco_interface_event_loop_iter(void) } } + if (G_UNLIKELY(teco_cmdline.height != last_cmdline_height)) + /* command line height was changed with h,5EJ */ + teco_interface_resize_all_windows(); + /* * Scintilla has been patched to avoid any automatic scrolling since that * has been benchmarked to be a very costly operation. -- cgit v1.2.3