diff options
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/tmux/Makefile | 5 | ||||
-rw-r--r-- | usr.bin/tmux/cmd-list-panes.c | 78 | ||||
-rw-r--r-- | usr.bin/tmux/cmd-list-windows.c | 35 | ||||
-rw-r--r-- | usr.bin/tmux/cmd.c | 3 | ||||
-rw-r--r-- | usr.bin/tmux/tmux.1 | 6 | ||||
-rw-r--r-- | usr.bin/tmux/tmux.h | 3 |
6 files changed, 93 insertions, 37 deletions
diff --git a/usr.bin/tmux/Makefile b/usr.bin/tmux/Makefile index 04c255d42f6..82d27d1a33c 100644 --- a/usr.bin/tmux/Makefile +++ b/usr.bin/tmux/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.20 2009/10/10 15:03:01 nicm Exp $ +# $OpenBSD: Makefile,v 1.21 2009/10/10 17:19:38 nicm Exp $ PROG= tmux SRCS= attributes.c buffer-poll.c buffer.c cfg.c client-fn.c \ @@ -11,7 +11,8 @@ SRCS= attributes.c buffer-poll.c buffer.c cfg.c client-fn.c \ cmd-kill-server.c cmd-kill-session.c cmd-kill-window.c \ cmd-last-window.c cmd-link-window.c cmd-list-buffers.c \ cmd-list-clients.c cmd-list-commands.c cmd-list-keys.c \ - cmd-list-sessions.c cmd-list-windows.c cmd-list.c cmd-load-buffer.c \ + cmd-list-sessions.c cmd-list-windows.c cmd-list-panes.c \ + cmd-list.c cmd-load-buffer.c \ cmd-lock-server.c cmd-lock-client.c cmd-lock-session.c \ cmd-move-window.c cmd-new-session.c cmd-new-window.c \ cmd-next-layout.c cmd-next-window.c cmd-paste-buffer.c \ diff --git a/usr.bin/tmux/cmd-list-panes.c b/usr.bin/tmux/cmd-list-panes.c new file mode 100644 index 00000000000..6308994a627 --- /dev/null +++ b/usr.bin/tmux/cmd-list-panes.c @@ -0,0 +1,78 @@ +/* $OpenBSD: cmd-list-panes.c,v 1.1 2009/10/10 17:19:38 nicm Exp $ */ + +/* + * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <sys/types.h> + +#include <unistd.h> + +#include "tmux.h" + +/* + * List panes on given window.. + */ + +int cmd_list_panes_exec(struct cmd *, struct cmd_ctx *); + +const struct cmd_entry cmd_list_panes_entry = { + "list-panes", "lsp", + CMD_TARGET_WINDOW_USAGE, + 0, 0, + cmd_target_init, + cmd_target_parse, + cmd_list_panes_exec, + cmd_target_free, + cmd_target_print +}; + +int +cmd_list_panes_exec(struct cmd *self, struct cmd_ctx *ctx) +{ + struct cmd_target_data *data = self->data; + struct winlink *wl; + struct window_pane *wp; + struct grid *gd; + struct grid_line *gl; + u_int i; + unsigned long long size; + const char *name; + + if ((wl = cmd_find_window(ctx, data->target, NULL)) == NULL) + return (-1); + + TAILQ_FOREACH(wp, &wl->window->panes, entry) { + gd = wp->base.grid; + + size = 0; + for (i = 0; i < gd->hsize; i++) { + gl = &gd->linedata[i]; + size += gl->cellsize * sizeof *gl->celldata; + size += gl->utf8size * sizeof *gl->utf8data; + } + size += gd->hsize * sizeof *gd->linedata; + + name = NULL; + if (wp->fd != -1) + name = ttyname(wp->fd); + if (name == NULL) + name = "unknown"; + ctx->print(ctx, "%s [%ux%u] [history %u/%u, %llu bytes]", + name, wp->sx, wp->sy, gd->hsize, gd->hlimit, size); + } + + return (0); +} diff --git a/usr.bin/tmux/cmd-list-windows.c b/usr.bin/tmux/cmd-list-windows.c index 7c050ca32ca..0cfdb7b2888 100644 --- a/usr.bin/tmux/cmd-list-windows.c +++ b/usr.bin/tmux/cmd-list-windows.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-list-windows.c,v 1.6 2009/08/08 16:05:01 nicm Exp $ */ +/* $OpenBSD: cmd-list-windows.c,v 1.7 2009/10/10 17:19:38 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -45,42 +45,13 @@ cmd_list_windows_exec(struct cmd *self, struct cmd_ctx *ctx) struct cmd_target_data *data = self->data; struct session *s; struct winlink *wl; - struct window *w; - struct window_pane *wp; - struct grid *gd; - struct grid_line *gl; - u_int i; - unsigned long long size; - const char *name; if ((s = cmd_find_session(ctx, data->target)) == NULL) return (-1); RB_FOREACH(wl, winlinks, &s->windows) { - w = wl->window; - ctx->print(ctx, - "%3d: %s [%ux%u]", wl->idx, w->name, w->sx, w->sy); - - TAILQ_FOREACH(wp, &w->panes, entry) { - gd = wp->base.grid; - - size = 0; - for (i = 0; i < gd->hsize; i++) { - gl = &gd->linedata[i]; - size += gl->cellsize * sizeof *gl->celldata; - size += gl->utf8size * sizeof *gl->utf8data; - } - size += gd->hsize * sizeof *gd->linedata; - - name = NULL; - if (wp->fd != -1) - name = ttyname(wp->fd); - if (name == NULL) - name = "unknown"; - ctx->print(ctx, - " %s [%ux%u] [history %u/%u, %llu bytes]", - name, wp->sx, wp->sy, gd->hsize, gd->hlimit, size); - } + ctx->print(ctx, "%d: %s [%ux%u]", + wl->idx, wl->window->name, wl->window->sx, wl->window->sy); } return (0); diff --git a/usr.bin/tmux/cmd.c b/usr.bin/tmux/cmd.c index c05b02b45c3..8b8f07f60d6 100644 --- a/usr.bin/tmux/cmd.c +++ b/usr.bin/tmux/cmd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd.c,v 1.22 2009/10/07 07:02:40 nicm Exp $ */ +/* $OpenBSD: cmd.c,v 1.23 2009/10/10 17:19:38 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -58,6 +58,7 @@ const struct cmd_entry *cmd_table[] = { &cmd_list_clients_entry, &cmd_list_commands_entry, &cmd_list_keys_entry, + &cmd_list_panes_entry, &cmd_list_sessions_entry, &cmd_list_windows_entry, &cmd_load_buffer_entry, diff --git a/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1 index 43ee7df544e..99ffed5a0d8 100644 --- a/usr.bin/tmux/tmux.1 +++ b/usr.bin/tmux/tmux.1 @@ -1,4 +1,4 @@ -.\" $OpenBSD: tmux.1,v 1.103 2009/10/10 15:03:01 nicm Exp $ +.\" $OpenBSD: tmux.1,v 1.104 2009/10/10 17:19:38 nicm Exp $ .\" .\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> .\" @@ -775,6 +775,10 @@ exists, it is killed, otherwise an error is generated. If .Fl d is given, the newly linked window is not selected. +.It Ic list-panes Op Fl t Ar target-window +.D1 (alias: Ic lsp ) +List the panes in the current window or in +.Ar target-window . .It Ic list-windows Op Fl t Ar target-session .D1 (alias: Ic lsw ) List windows in the current session or in diff --git a/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h index 47d23cbdd06..acae732b0e6 100644 --- a/usr.bin/tmux/tmux.h +++ b/usr.bin/tmux/tmux.h @@ -1,4 +1,4 @@ -/* $OpenBSD: tmux.h,v 1.126 2009/10/10 15:03:01 nicm Exp $ */ +/* $OpenBSD: tmux.h,v 1.127 2009/10/10 17:19:38 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -1367,6 +1367,7 @@ extern const struct cmd_entry cmd_list_buffers_entry; extern const struct cmd_entry cmd_list_clients_entry; extern const struct cmd_entry cmd_list_commands_entry; extern const struct cmd_entry cmd_list_keys_entry; +extern const struct cmd_entry cmd_list_panes_entry; extern const struct cmd_entry cmd_list_sessions_entry; extern const struct cmd_entry cmd_list_windows_entry; extern const struct cmd_entry cmd_load_buffer_entry; |