static void cmd_window_item(const char *data, void *server, WI_ITEM_REC *item)
{
- command_runsub("window item", data, server, item);
+ while (*data == ' ') data++;
+
+ if (is_numeric(data, '\0'))
+ signal_emit("command window item goto", 3, data, server, item);
+ else
+ command_runsub("window item", data, server, item);
}
/* SYNTAX: WINDOW ITEM PREV */
window_item_next(active_win);
}
-/* SYNTAX: WINDOW ITEM GOTO <name> */
+/* SYNTAX: WINDOW ITEM GOTO <number>|<name> */
static void cmd_window_item_goto(const char *data, SERVER_REC *server)
{
- WI_ITEM_REC *item;
+ WI_ITEM_REC *item;
+ GSList *tmp;
+
+ if (is_numeric(data, '\0')) {
+ /* change to specified number */
+ tmp = g_slist_nth(active_win->items, atoi(data)-1);
+ item = tmp == NULL ? NULL : tmp->data;
+ } else {
+ item = window_item_find_window(active_win, server, data);
+ }
- item = window_item_find_window(active_win, server, data);
if (item != NULL)
window_item_set_active(active_win, item);
}
{
if (window_find_name(data) == NULL)
window_set_name(active_win, data);
- else {
+ else if (active_win->name == NULL ||
+ strcmp(active_win->name, data) != 0) {
printformat_window(active_win, MSGLEVEL_CLIENTERROR,
TXT_WINDOW_NAME_NOT_UNIQUE, data);
}