diff options
author | Tom Tromey <tom@tromey.com> | 2018-10-07 12:52:13 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-08-12 10:57:56 -0600 |
commit | 775e241e9c5f2b2ff2b59972ab70e5f20763fae6 (patch) | |
tree | 597ab643dce69ee6e98e46ecac00ee85f447bb4b /readline/terminal.c | |
parent | 08132bdd876fa1825810f90ecc25390dd4ded457 (diff) | |
download | gdb-775e241e9c5f2b2ff2b59972ab70e5f20763fae6.zip gdb-775e241e9c5f2b2ff2b59972ab70e5f20763fae6.tar.gz gdb-775e241e9c5f2b2ff2b59972ab70e5f20763fae6.tar.bz2 |
Import readline 7.0 (patch 5)
This imports readline 7.0 (up to patch 5) while preserving all
gdb-local changes.
This was done by checking out the readline git repository, making a
branch based on the gdb baseline revision, applying the gdb changes to
that branch, and then merging from readline 7.
readline/ChangeLog.gdb
2019-08-12 Tom Tromey <tom@tromey.com>
* Imported readline 7.0 patch 5.
Diffstat (limited to 'readline/terminal.c')
-rw-r--r-- | readline/terminal.c | 66 |
1 files changed, 44 insertions, 22 deletions
diff --git a/readline/terminal.c b/readline/terminal.c index 8094186..ef2884e 100644 --- a/readline/terminal.c +++ b/readline/terminal.c @@ -1,6 +1,6 @@ /* terminal.c -- controlling the terminal with termcap. */ -/* Copyright (C) 1996-2009 Free Software Foundation, Inc. +/* Copyright (C) 1996-2015 Free Software Foundation, Inc. This file is part of the GNU Readline Library (Readline), a library for reading lines of text with interactive input and history editing. @@ -51,15 +51,14 @@ /* System-specific feature definitions and include files. */ #include "rldefs.h" -#if defined (GWINSZ_IN_SYS_IOCTL) && !defined (TIOCGWINSZ) -# include <sys/ioctl.h> -#endif /* GWINSZ_IN_SYS_IOCTL && !TIOCGWINSZ */ - #ifdef __MSDOS__ -# include <pc.h> +# include <pc.h> #endif #include "rltty.h" +#if defined (HAVE_SYS_IOCTL_H) +# include <sys/ioctl.h> /* include for declaration of ioctl */ +#endif #include "tcap.h" /* Some standard library routines. */ @@ -81,14 +80,15 @@ static void _win_get_screensize PARAMS((int *, int *)); static void _emx_get_screensize PARAMS((int *, int *)); #endif -#define CUSTOM_REDISPLAY_FUNC() (rl_redisplay_function != rl_redisplay) -#define CUSTOM_INPUT_FUNC() (rl_getc_function != rl_getc) - -/* If the calling application sets this to a non-zero value, readline will - use the $LINES and $COLUMNS environment variables to set its idea of the - window size before interrogating the kernel. */ +/* If the calling application sets this to a non-zero value, readline will + use the $LINES and $COLUMNS environment variables to set its idea of the + window size before interrogating the kernel. */ int rl_prefer_env_winsize = 0; +/* If this is non-zero, readline will set LINES and COLUMNS in the + environment when it handles SIGWINCH. */ +int rl_change_environment = 1; + /* **************************************************************** */ /* */ /* Terminal and Termcap */ @@ -98,7 +98,7 @@ int rl_prefer_env_winsize = 0; #ifndef __MSDOS__ static char *term_buffer = (char *)NULL; static char *term_string_buffer = (char *)NULL; -#endif /* !__MSDOS__ */ +#endif static int tcap_initialized; @@ -308,7 +308,8 @@ _rl_get_screen_size (tty, ignore_env) /* If we're being compiled as part of bash, set the environment variables $LINES and $COLUMNS to new values. Otherwise, just do a pair of putenv () or setenv () calls. */ - sh_set_lines_and_columns (_rl_screenheight, _rl_screenwidth); + if (rl_change_environment) + sh_set_lines_and_columns (_rl_screenheight, _rl_screenwidth); if (_rl_term_autowrap == 0) _rl_screenwidth--; @@ -358,7 +359,13 @@ rl_reset_screen_size () { _rl_get_screen_size (fileno (rl_instream), 0); } - + +void +_rl_sigwinch_resize_terminal () +{ + _rl_get_screen_size (fileno (rl_instream), 1); +} + void rl_resize_terminal () { @@ -560,7 +567,6 @@ _rl_init_terminal_io (terminal_name) term_has_meta = tgetflag ("km") != 0; if (term_has_meta == 0) _rl_term_mm = _rl_term_mo = (char *)NULL; - #endif /* !__MSDOS__ */ /* Attempt to find and bind the arrow keys. Do not override already @@ -694,17 +700,16 @@ rl_ding () default: break; case VISIBLE_BELL: -#ifdef __MSDOS__ - ScreenVisualBell (); - break; -#else if (_rl_visible_bell) { +#ifdef __DJGPP__ + ScreenVisualBell (); +#else tputs (_rl_visible_bell, 1, _rl_output_character_function); +#endif break; } /* FALLTHROUGH */ -#endif case AUDIBLE_BELL: fprintf (stderr, "\007"); fflush (stderr); @@ -721,12 +726,29 @@ rl_ding () /* */ /* **************************************************************** */ +static int enabled_meta = 0; /* flag indicating we enabled meta mode */ + void _rl_enable_meta_key () { #if !defined (__DJGPP__) if (term_has_meta && _rl_term_mm) - tputs (_rl_term_mm, 1, _rl_output_character_function); + { + tputs (_rl_term_mm, 1, _rl_output_character_function); + enabled_meta = 1; + } +#endif +} + +void +_rl_disable_meta_key () +{ +#if !defined (__DJGPP__) + if (term_has_meta && _rl_term_mo && enabled_meta) + { + tputs (_rl_term_mo, 1, _rl_output_character_function); + enabled_meta = 0; + } #endif } |