degesch: order nick autocomplete by time
This commit is contained in:
parent
acddfe2cfa
commit
3cb93d24e8
5
NEWS
5
NEWS
|
@ -1,3 +1,8 @@
|
||||||
|
1.3.0 (20xx-xx-xx)
|
||||||
|
|
||||||
|
* degesch: made nick autocompletion ordered by the time of last action
|
||||||
|
|
||||||
|
|
||||||
1.2.0 (2021-07-08) "There Are Other Countries As Well"
|
1.2.0 (2021-07-08) "There Are Other Countries As Well"
|
||||||
|
|
||||||
* degesch: added a /squery command for IRCnet
|
* degesch: added a /squery command for IRCnet
|
||||||
|
|
17
degesch.c
17
degesch.c
|
@ -459,6 +459,10 @@ input_rl_start (void *input, const char *program_name)
|
||||||
rl_completer_word_break_characters = NULL;
|
rl_completer_word_break_characters = NULL;
|
||||||
rl_attempted_completion_function = app_readline_completion;
|
rl_attempted_completion_function = app_readline_completion;
|
||||||
|
|
||||||
|
// We shouldn't produce any duplicates that the library would help us
|
||||||
|
// autofilter, and we don't generally want alphabetic ordering at all
|
||||||
|
rl_sort_completion_matches = false;
|
||||||
|
|
||||||
hard_assert (self->prompt != NULL);
|
hard_assert (self->prompt != NULL);
|
||||||
// The inputrc is read before any callbacks are called, so we need to
|
// 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
|
// register all functions that our user may want to map up front
|
||||||
|
@ -7266,6 +7270,19 @@ irc_handle_privmsg_text (struct server *s,
|
||||||
char *prefixes = irc_get_privmsg_prefix
|
char *prefixes = irc_get_privmsg_prefix
|
||||||
(s, str_map_find (&s->irc_users, nickname), target);
|
(s, str_map_find (&s->irc_users, nickname), target);
|
||||||
|
|
||||||
|
// Make autocomplete offer the last speakers first on partial matches
|
||||||
|
// TODO: might want to do this on notices as well, and the behaviour
|
||||||
|
// shouldn't change depending on whether CAP echo-message is enabled
|
||||||
|
struct user *user;
|
||||||
|
struct channel_user *channel_user;
|
||||||
|
if (buffer->channel
|
||||||
|
&& (user = str_map_find (&s->irc_users, nickname))
|
||||||
|
&& (channel_user = irc_channel_get_user (buffer->channel, user)))
|
||||||
|
{
|
||||||
|
LIST_UNLINK (buffer->channel->users, channel_user);
|
||||||
|
LIST_PREPEND (buffer->channel->users, channel_user);
|
||||||
|
}
|
||||||
|
|
||||||
// IRCv3.2 echo-message could otherwise cause us to highlight ourselves
|
// IRCv3.2 echo-message could otherwise cause us to highlight ourselves
|
||||||
if (irc_is_this_us (s, msg->prefix) || !irc_is_highlight (s, text->str))
|
if (irc_is_this_us (s, msg->prefix) || !irc_is_highlight (s, text->str))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue