parent
fa579df623
commit
17ae6d845e
@ -774,6 +774,81 @@ twc_cmd_name(const void *pointer, void *data, struct t_gui_buffer *buffer,
|
|||||||
return WEECHAT_RC_OK;
|
return WEECHAT_RC_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command /names callback.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
twc_cmd_names(const void *pointer, void *data, struct t_gui_buffer *buffer,
|
||||||
|
int argc, char **argv, char **argv_eol)
|
||||||
|
{
|
||||||
|
struct t_twc_chat *chat = twc_chat_search_buffer(buffer);
|
||||||
|
TWC_CHECK_CHAT(chat);
|
||||||
|
TWC_CHECK_PROFILE_LOADED(chat->profile);
|
||||||
|
|
||||||
|
if (chat->group_number < 0)
|
||||||
|
{
|
||||||
|
weechat_printf(NULL,
|
||||||
|
"%s%s: command \"%s\" must be executed in a group chat "
|
||||||
|
"buffer",
|
||||||
|
weechat_prefix("error"), weechat_plugin->name, argv[0]);
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t const num_names = weechat_list_size(chat->nicks);
|
||||||
|
|
||||||
|
if (num_names == 0)
|
||||||
|
return WEECHAT_RC_ERROR;
|
||||||
|
|
||||||
|
char const *names[num_names];
|
||||||
|
char const *colors[num_names];
|
||||||
|
size_t total_names_length = 0;
|
||||||
|
|
||||||
|
/* iterate over all names, retrieving length and string representation */
|
||||||
|
struct t_weelist_item *name = weechat_list_get(chat->nicks, 0);
|
||||||
|
size_t index = 0;
|
||||||
|
while (name != NULL)
|
||||||
|
{
|
||||||
|
char const *const name_string = weechat_list_string(name);
|
||||||
|
char const *const color = weechat_info_get("nick_color", name_string);
|
||||||
|
|
||||||
|
names[index] = name_string;
|
||||||
|
colors[index] = color;
|
||||||
|
|
||||||
|
total_names_length += strlen(name_string) + strlen(color);
|
||||||
|
|
||||||
|
++index;
|
||||||
|
name = weechat_list_next(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* allocate space for all names, plus spaces and colours, plus \0 */
|
||||||
|
char *const names_str = malloc(total_names_length + num_names);
|
||||||
|
if (!names_str)
|
||||||
|
return WEECHAT_RC_ERROR;
|
||||||
|
|
||||||
|
/* copy all names into name_str buffer, with nick coloring */
|
||||||
|
size_t loc = 0;
|
||||||
|
for (size_t index = 0; index < num_names; ++index)
|
||||||
|
{
|
||||||
|
if (loc > 0)
|
||||||
|
names_str[loc++] = ' ';
|
||||||
|
|
||||||
|
char const *const name = names[index];
|
||||||
|
char const *const color = colors[index];
|
||||||
|
|
||||||
|
strcpy(names_str + loc, color);
|
||||||
|
loc += strlen(color);
|
||||||
|
|
||||||
|
strcpy(names_str + loc, name);
|
||||||
|
loc += strlen(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
weechat_printf(chat->buffer, "%s%zu names: %s", weechat_prefix("network"),
|
||||||
|
num_names, names_str);
|
||||||
|
|
||||||
|
free(names_str);
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command /nospam callback.
|
* Command /nospam callback.
|
||||||
*/
|
*/
|
||||||
@ -1177,6 +1252,9 @@ twc_commands_init()
|
|||||||
weechat_hook_command("name", "change your Tox name", "<name>",
|
weechat_hook_command("name", "change your Tox name", "<name>",
|
||||||
"name: your new name", NULL, twc_cmd_name, NULL, NULL);
|
"name: your new name", NULL, twc_cmd_name, NULL, NULL);
|
||||||
|
|
||||||
|
weechat_hook_command("names", "list names in a group chat", "", "", NULL,
|
||||||
|
twc_cmd_names, NULL, NULL);
|
||||||
|
|
||||||
weechat_hook_command("nospam", "change nospam value", "[<hex value>]",
|
weechat_hook_command("nospam", "change nospam value", "[<hex value>]",
|
||||||
"hex value: new nospam value; when omitted, a random "
|
"hex value: new nospam value; when omitted, a random "
|
||||||
"new value is used\n\n"
|
"new value is used\n\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user