diff options
| author | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2025-11-09 19:26:37 +0100 |
|---|---|---|
| committer | Robin Haberkorn <rhaberkorn@fmsbw.de> | 2025-11-09 19:26:37 +0100 |
| commit | 5d7e8df952b2e51c28fad3443d7c9973659fc2ed (patch) | |
| tree | 65db863c7cc409159532ea22cceb4fec34df1db8 /src/interface-curses/interface.c | |
| parent | 6e9e09b7d23fcc300dc469c1f410e53d0a111bfa (diff) | |
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.
Diffstat (limited to 'src/interface-curses/interface.c')
| -rw-r--r-- | src/interface-curses/interface.c | 27 |
1 files changed, 17 insertions, 10 deletions
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. |
