version 1.29, 2016/10/14 22:14:22 |
version 1.30, 2016/10/16 19:04:05 |
|
|
* List panes on given window. |
* List panes on given window. |
*/ |
*/ |
|
|
static enum cmd_retval cmd_list_panes_exec(struct cmd *, struct cmd_q *); |
static enum cmd_retval cmd_list_panes_exec(struct cmd *, struct cmdq_item *); |
|
|
static void cmd_list_panes_server(struct cmd *, struct cmd_q *); |
static void cmd_list_panes_server(struct cmd *, struct cmdq_item *); |
static void cmd_list_panes_session(struct cmd *, struct session *, |
static void cmd_list_panes_session(struct cmd *, struct session *, |
struct cmd_q *, int); |
struct cmdq_item *, int); |
static void cmd_list_panes_window(struct cmd *, struct session *, |
static void cmd_list_panes_window(struct cmd *, struct session *, |
struct winlink *, struct cmd_q *, int); |
struct winlink *, struct cmdq_item *, int); |
|
|
const struct cmd_entry cmd_list_panes_entry = { |
const struct cmd_entry cmd_list_panes_entry = { |
.name = "list-panes", |
.name = "list-panes", |
|
|
}; |
}; |
|
|
static enum cmd_retval |
static enum cmd_retval |
cmd_list_panes_exec(struct cmd *self, struct cmd_q *cmdq) |
cmd_list_panes_exec(struct cmd *self, struct cmdq_item *item) |
{ |
{ |
struct args *args = self->args; |
struct args *args = self->args; |
struct session *s = cmdq->state.tflag.s; |
struct session *s = item->state.tflag.s; |
struct winlink *wl = cmdq->state.tflag.wl; |
struct winlink *wl = item->state.tflag.wl; |
|
|
if (args_has(args, 'a')) |
if (args_has(args, 'a')) |
cmd_list_panes_server(self, cmdq); |
cmd_list_panes_server(self, item); |
else if (args_has(args, 's')) |
else if (args_has(args, 's')) |
cmd_list_panes_session(self, s, cmdq, 1); |
cmd_list_panes_session(self, s, item, 1); |
else |
else |
cmd_list_panes_window(self, s, wl, cmdq, 0); |
cmd_list_panes_window(self, s, wl, item, 0); |
|
|
return (CMD_RETURN_NORMAL); |
return (CMD_RETURN_NORMAL); |
} |
} |
|
|
static void |
static void |
cmd_list_panes_server(struct cmd *self, struct cmd_q *cmdq) |
cmd_list_panes_server(struct cmd *self, struct cmdq_item *item) |
{ |
{ |
struct session *s; |
struct session *s; |
|
|
RB_FOREACH(s, sessions, &sessions) |
RB_FOREACH(s, sessions, &sessions) |
cmd_list_panes_session(self, s, cmdq, 2); |
cmd_list_panes_session(self, s, item, 2); |
} |
} |
|
|
static void |
static void |
cmd_list_panes_session(struct cmd *self, struct session *s, struct cmd_q *cmdq, |
cmd_list_panes_session(struct cmd *self, struct session *s, |
int type) |
struct cmdq_item *item, int type) |
{ |
{ |
struct winlink *wl; |
struct winlink *wl; |
|
|
RB_FOREACH(wl, winlinks, &s->windows) |
RB_FOREACH(wl, winlinks, &s->windows) |
cmd_list_panes_window(self, s, wl, cmdq, type); |
cmd_list_panes_window(self, s, wl, item, type); |
} |
} |
|
|
static void |
static void |
cmd_list_panes_window(struct cmd *self, struct session *s, struct winlink *wl, |
cmd_list_panes_window(struct cmd *self, struct session *s, struct winlink *wl, |
struct cmd_q *cmdq, int type) |
struct cmdq_item *item, int type) |
{ |
{ |
struct args *args = self->args; |
struct args *args = self->args; |
struct window_pane *wp; |
struct window_pane *wp; |
|
|
|
|
n = 0; |
n = 0; |
TAILQ_FOREACH(wp, &wl->window->panes, entry) { |
TAILQ_FOREACH(wp, &wl->window->panes, entry) { |
ft = format_create(cmdq, 0); |
ft = format_create(item, 0); |
format_add(ft, "line", "%u", n); |
format_add(ft, "line", "%u", n); |
format_defaults(ft, NULL, s, wl, wp); |
format_defaults(ft, NULL, s, wl, wp); |
|
|
line = format_expand(ft, template); |
line = format_expand(ft, template); |
cmdq_print(cmdq, "%s", line); |
cmdq_print(item, "%s", line); |
free(line); |
free(line); |
|
|
format_free(ft); |
format_free(ft); |