1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-12 14:14:48 +02:00

irc: set callback "nickcmp" in channel buffers

This commit is contained in:
Sebastien Helleu
2012-06-14 20:07:06 +02:00
parent d66555f387
commit 00a9028f42
4 changed files with 36 additions and 0 deletions
+23
View File
@@ -160,6 +160,29 @@ irc_buffer_close_cb (void *data, struct t_gui_buffer *buffer)
return WEECHAT_RC_OK;
}
/*
* irc_buffer_nickcmp_cb: callback for comparing nick in nicklist
* (called when searching a nick in nicklist)
* Return (according to casemapping of irc server):
* 0 if nick1 == nick2
* -1 if nick1 < nick2
* +1 if nick1 > nick2
*/
int
irc_buffer_nickcmp_cb (void *data,
struct t_gui_buffer *buffer,
const char *nick1,
const char *nick2)
{
IRC_BUFFER_GET_SERVER(buffer);
/* make C compiler happy */
(void) data;
return irc_server_strcasecmp (ptr_server, nick1, nick2);
}
/*
* irc_buffer_search_first_for_all_servers: search first server buffer that
* will be used to merge all IRC
+4
View File
@@ -53,6 +53,10 @@ extern void irc_buffer_get_server_and_channel (struct t_gui_buffer *buffer,
struct t_irc_channel **channel);
extern char *irc_buffer_build_name (const char *server, const char *channel);
extern int irc_buffer_close_cb (void *data, struct t_gui_buffer *buffer);
extern int irc_buffer_nickcmp_cb (void *data,
struct t_gui_buffer *buffer,
const char *nick1,
const char *nick2);
extern struct t_gui_buffer *irc_buffer_search_first_for_all_servers ();
#endif /* __WEECHAT_IRC_BUFFER_H */
+2
View File
@@ -226,6 +226,8 @@ irc_channel_new (struct t_irc_server *server, int channel_type,
{
weechat_buffer_set (new_buffer, "nicklist", "1");
weechat_buffer_set (new_buffer, "nicklist_display_groups", "0");
weechat_buffer_set_pointer (new_buffer, "nickcmp_callback",
&irc_buffer_nickcmp_cb);
}
/* set highlights settings on channel buffer */
+7
View File
@@ -240,6 +240,7 @@ irc_upgrade_set_buffer_callbacks ()
{
struct t_infolist *infolist;
struct t_gui_buffer *ptr_buffer;
const char *type;
infolist = weechat_infolist_get ("buffer", NULL, NULL);
if (infolist)
@@ -251,6 +252,12 @@ irc_upgrade_set_buffer_callbacks ()
ptr_buffer = weechat_infolist_pointer (infolist, "pointer");
weechat_buffer_set_pointer (ptr_buffer, "close_callback", &irc_buffer_close_cb);
weechat_buffer_set_pointer (ptr_buffer, "input_callback", &irc_input_data_cb);
type = weechat_buffer_get_string (ptr_buffer, "localvar_type");
if (type && (strcmp (type, "channel") == 0))
{
weechat_buffer_set_pointer (ptr_buffer, "nickcmp_callback",
&irc_buffer_nickcmp_cb);
}
if (strcmp (weechat_infolist_string (infolist, "name"),
IRC_RAW_BUFFER_NAME) == 0)
{