[gdb/build] Remove dependency on _rl_term_autowrap

Commit deb1ba4e38 ("[gdb/tui] Fix TUI resizing for TERM=ansi") introduced a
dependency on readline private variable _rl_term_autowrap.

There is precedent for this, but it's something we want to get rid of
(PR build/10723).

Remove the dependency on _rl_term_autowrap, and instead calculate
readline_hidden_cols by comparing the environment variable COLS with cols as
returned by rl_get_screen_size.

Tested on x86_64-linux.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=10723
This commit is contained in:
Tom de Vries 2023-12-16 10:39:17 +01:00
parent 86a6f9a9fb
commit 14e61dbbbb

View file

@ -1110,10 +1110,6 @@ static bool filter_initialized = false;
/* See readline's rlprivate.h. */
extern "C" int _rl_term_autowrap;
/* See utils.h. */
int readline_hidden_cols = 0;
@ -1154,10 +1150,17 @@ init_page_info (void)
(because rl_change_environment defaults to 1)
- may report one less than the detected screen width in
rl_get_screen_size (when _rl_term_autowrap == 0).
We could set readline_hidden_cols by comparing COLUMNS to cols as
returned by rl_get_screen_size, but instead simply use
_rl_term_autowrap. */
readline_hidden_cols = _rl_term_autowrap ? 0 : 1;
We could use _rl_term_autowrap, but we want to avoid introducing
another dependency on readline private variables, so set
readline_hidden_cols by comparing COLUMNS to cols as returned by
rl_get_screen_size. */
const char *columns_env_str = getenv ("COLUMNS");
gdb_assert (columns_env_str != nullptr);
int columns_env_val = atoi (columns_env_str);
gdb_assert (columns_env_val != 0);
readline_hidden_cols = columns_env_val - cols;
gdb_assert (readline_hidden_cols >= 0);
gdb_assert (readline_hidden_cols <= 1);
lines_per_page = rows;
chars_per_line = cols + readline_hidden_cols;