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:
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user