xC: fix newer Readline, allow stdin streaming
All checks were successful
Alpine 3.20 Success
Arch Linux AUR Success
OpenBSD 7.5 Success

Also update NEWS.
This commit is contained in:
2024-12-17 03:28:12 +01:00
parent b3684c4d9f
commit 509cb9f4dd
2 changed files with 17 additions and 3 deletions

12
xC.c
View File

@@ -474,6 +474,10 @@ input_rl_start (void *input, const char *program_name)
// autofilter, and we don't generally want alphabetic ordering at all
rl_sort_completion_matches = false;
// Readline >= 8.0 otherwise prints spurious newlines on EOF.
if (RL_VERSION_MAJOR >= 8)
rl_variable_bind ("enable-bracketed-paste", "off");
hard_assert (self->prompt != NULL);
// The inputrc is read before any callbacks are called, so we need to
// register all functions that our user may want to map up front
@@ -14603,21 +14607,23 @@ on_readline_input (char *line)
if (*line)
add_history (line);
// readline always erases the input line after returning from here,
// Readline always erases the input line after returning from here,
// but we don't want that to happen if the command to be executed
// would switch the buffer (we'd keep the already executed command in
// the old buffer and delete any input restored from the new buffer)
strv_append_owned (&ctx->pending_input, line);
poller_idle_set (&ctx->input_event);
}
else
else if (isatty (STDIN_FILENO))
{
// Prevent readline from showing the prompt twice for w/e reason
// Prevent Readline from showing the prompt twice for w/e reason
CALL (ctx->input, hide);
input_rl__restore (self);
CALL (ctx->input, ding);
}
else
request_quit (ctx, NULL);
if (self->active)
// Readline automatically redisplays it