diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2022-09-18 02:40:53 +0200 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2022-09-18 02:48:28 +0200 |
commit | 21e5d80ab1505442c96e11075f09d98bcaa211ba (patch) | |
tree | 0db38202d1882286cc233601a8303f357f402f21 | |
parent | ff243c1d110b646329fa0b0d8d4f1a52f320d03b (diff) | |
download | xK-21e5d80ab1505442c96e11075f09d98bcaa211ba.tar.gz xK-21e5d80ab1505442c96e11075f09d98bcaa211ba.tar.xz xK-21e5d80ab1505442c96e11075f09d98bcaa211ba.zip |
xC: improve Readline completion
The autocomplete for /set used to be extremely annoying,
and menu-complete-display-prefix also prevents mistaken highlights.
One downside is that using plain Tab in channels no longer
just inserts the last-talking nickname, one needs to press it twice.
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | xC.c | 12 |
2 files changed, 15 insertions, 0 deletions
@@ -18,6 +18,9 @@ * xC: unsolicited JOINs will no longer automatically activate the buffer + * xC: made Readline insert the longest common completion prefix first, + and prevented the possible-completions command from duplicating the prompt + * xC: normalized editline's history behaviour, making it a viable frontend * xC: various bugfixes @@ -14434,6 +14434,15 @@ app_readline_completion (const char *text, int start, int end) return make_input_completions (g_ctx, rl_line_buffer, start, end); } +static void +app_readline_display_matches (char **matches, int len, int longest) +{ + struct app_context *ctx = g_ctx; + CALL (ctx->input, hide); + rl_display_match_list (matches, len, longest); + CALL (ctx->input, show); +} + static int app_readline_init (void) { @@ -14458,7 +14467,10 @@ app_readline_init (void) rl_bind_key (RETURN, rl_named_function ("send-line")); CALL_ (self, bind_control, 'j', "send-line"); + rl_completion_display_matches_hook = app_readline_display_matches; + rl_variable_bind ("completion-ignore-case", "on"); + rl_variable_bind ("menu-complete-display-prefix", "on"); rl_bind_key (TAB, rl_named_function ("menu-complete")); if (key_btab) CALL_ (self, bind, key_btab, "menu-complete-backward"); |