From e307e56d5591f844c77425a9e72dca6c1cabd766 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Tue, 15 Oct 2024 11:30:18 +0300 Subject: netbsd-curses: fixed the default escape delay * Apparently, netbsd-curses overwrites the escdelay on initscr() (if $ESCDELAY is not set), so we have to apply the default 25ms after screen initialization. * The info line is not drawn correctly on netbsd-curses, but only on st/simpleterm. I assume this is just a shortcoming of the included terminfo entry. --- src/interface-curses/interface.c | 44 ++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'src/interface-curses/interface.c') diff --git a/src/interface-curses/interface.c b/src/interface-curses/interface.c index 131f474..95e86c9 100644 --- a/src/interface-curses/interface.c +++ b/src/interface-curses/interface.c @@ -634,28 +634,6 @@ teco_interface_init_interactive(GError **error) if (!teco_qreg_table_set_environ(&teco_qreg_table_globals, error)) return FALSE; - /* - * On UNIX terminals, the escape key is usually - * delivered as the escape character even though function - * keys are delivered as escape sequences as well. - * That's why there has to be a timeout for detecting - * escape presses if function key handling is enabled. - * This timeout can be controlled using $ESCDELAY on - * ncurses but its default is much too long. - * We set it to 25ms as Vim does. In the very rare cases - * this won't suffice, $ESCDELAY can still be set explicitly. - * - * NOTE: The only terminal emulator I'm aware of that lets - * us send an escape sequence for the escape key is Mintty - * (see "\e[?7727h"). - * - * FIXME: This appears to be ineffective for netbsd-curses. - */ -#ifdef CURSES_TTY - if (!g_getenv("ESCDELAY")) - set_escdelay(25); -#endif - /* * $TERM must be unset or "#win32con" for the win32 * driver to load. @@ -687,6 +665,28 @@ teco_interface_init_interactive(GError **error) teco_interface_init_screen(); + /* + * On UNIX terminals, the escape key is usually + * delivered as the escape character even though function + * keys are delivered as escape sequences as well. + * That's why there has to be a timeout for detecting + * escape presses if function key handling is enabled. + * This timeout can be controlled using $ESCDELAY on + * ncurses but its default is much too long. + * We set it to 25ms as Vim does. In the very rare cases + * this won't suffice, $ESCDELAY can still be set explicitly. + * + * NOTE: The only terminal emulator I'm aware of that lets + * us send an escape sequence for the escape key is Mintty + * (see "\e[?7727h"). + * + * NOTE: The delay is overwritten by initscr() on netbsd-curses. + */ +#ifdef CURSES_TTY + if (!g_getenv("ESCDELAY")) + set_escdelay(25); +#endif + /* * We always have a CTRL handler on Windows, but doing it * here again, ensures that we have a higher precedence -- cgit v1.2.3