irc: optimize search of a nick in nicklist (up to 3x faster)
This commit is contained in:
parent
9793649e79
commit
499f36a7cf
@ -37,6 +37,7 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
|
||||
* api: add support of full color option name in functions color() and
|
||||
string_eval_expression() and in command /eval
|
||||
* api: add "_chat_line" (line pointer) in hashtable of hook_focus
|
||||
* irc: optimize search of a nick in nicklist (up to 3x faster)
|
||||
* irc: add support of SHA-256 and SHA-512 algorithms in server option
|
||||
"ssl_fingerprint" (closes #281)
|
||||
* irc: add option "-noswitch" in command /query (closes #394)
|
||||
|
@ -180,12 +180,22 @@ irc_buffer_nickcmp_cb (void *data,
|
||||
const char *nick1,
|
||||
const char *nick2)
|
||||
{
|
||||
IRC_BUFFER_GET_SERVER(buffer);
|
||||
struct t_irc_server *server;
|
||||
|
||||
/* make C compiler happy */
|
||||
(void) data;
|
||||
if (data)
|
||||
server = (struct t_irc_server *)data;
|
||||
else
|
||||
irc_buffer_get_server_and_channel (buffer, &server, NULL);
|
||||
|
||||
return irc_server_strcasecmp (ptr_server, nick1, nick2);
|
||||
if (server)
|
||||
{
|
||||
return irc_server_strcasecmp (server, nick1, nick2);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* default is RFC 1459 casemapping comparison */
|
||||
return weechat_strcasecmp_range (nick1, nick2, 29);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -351,6 +351,8 @@ irc_channel_create_buffer (struct t_irc_server *server,
|
||||
weechat_buffer_set (ptr_buffer, "nicklist_display_groups", "0");
|
||||
weechat_buffer_set_pointer (ptr_buffer, "nickcmp_callback",
|
||||
&irc_buffer_nickcmp_cb);
|
||||
weechat_buffer_set_pointer (ptr_buffer, "nickcmp_callback_data",
|
||||
server);
|
||||
}
|
||||
|
||||
/* set highlights settings on channel buffer */
|
||||
|
@ -245,6 +245,7 @@ irc_upgrade_set_buffer_callbacks ()
|
||||
{
|
||||
struct t_infolist *infolist;
|
||||
struct t_gui_buffer *ptr_buffer;
|
||||
struct t_irc_server *ptr_server;
|
||||
const char *type;
|
||||
|
||||
infolist = weechat_infolist_get ("buffer", NULL, NULL);
|
||||
@ -260,8 +261,17 @@ irc_upgrade_set_buffer_callbacks ()
|
||||
type = weechat_buffer_get_string (ptr_buffer, "localvar_type");
|
||||
if (type && (strcmp (type, "channel") == 0))
|
||||
{
|
||||
ptr_server = irc_server_search (
|
||||
weechat_buffer_get_string (ptr_buffer,
|
||||
"localvar_server"));
|
||||
weechat_buffer_set_pointer (ptr_buffer, "nickcmp_callback",
|
||||
&irc_buffer_nickcmp_cb);
|
||||
if (ptr_server)
|
||||
{
|
||||
weechat_buffer_set_pointer (ptr_buffer,
|
||||
"nickcmp_callback_data",
|
||||
ptr_server);
|
||||
}
|
||||
}
|
||||
if (strcmp (weechat_infolist_string (infolist, "name"),
|
||||
IRC_RAW_BUFFER_NAME) == 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user