mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:44:18 +00:00 
			
		
		
		
	|PatchSet 875
|Date: 2011/03/29 00:13:00 |Author: nicm |Branch: HEAD |Tag: (none) |Log: |Add -a and -s options to lsp to list all panes in the server or session |respectively. Likewise add -s to lsw. From Ben Boeckel.
This commit is contained in:
		@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: cmd-list-panes.c,v 1.8 2011-04-06 22:16:33 nicm Exp $ */
 | 
					/* $Id: cmd-list-panes.c,v 1.9 2011-04-06 22:20:16 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -28,10 +28,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int	cmd_list_panes_exec(struct cmd *, struct cmd_ctx *);
 | 
					int	cmd_list_panes_exec(struct cmd *, struct cmd_ctx *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void	cmd_list_panes_server(struct cmd_ctx *);
 | 
				
			||||||
 | 
					void	cmd_list_panes_session(struct session *, struct cmd_ctx *);
 | 
				
			||||||
 | 
					void	cmd_list_panes_window(struct winlink *, struct cmd_ctx *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct cmd_entry cmd_list_panes_entry = {
 | 
					const struct cmd_entry cmd_list_panes_entry = {
 | 
				
			||||||
	"list-panes", "lsp",
 | 
						"list-panes", "lsp",
 | 
				
			||||||
	"t:", 0, 0,
 | 
						"ast:", 0, 0,
 | 
				
			||||||
	CMD_TARGET_WINDOW_USAGE,
 | 
						"[-as] [-t target]",
 | 
				
			||||||
	0,
 | 
						0,
 | 
				
			||||||
	NULL,
 | 
						NULL,
 | 
				
			||||||
	NULL,
 | 
						NULL,
 | 
				
			||||||
@@ -41,17 +45,54 @@ const struct cmd_entry cmd_list_panes_entry = {
 | 
				
			|||||||
int
 | 
					int
 | 
				
			||||||
cmd_list_panes_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
					cmd_list_panes_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct args		*args = self->args;
 | 
						struct args	*args = self->args;
 | 
				
			||||||
	struct winlink		*wl;
 | 
						struct session	*s;
 | 
				
			||||||
 | 
						struct winlink	*wl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (args_has(args, 'a'))
 | 
				
			||||||
 | 
							cmd_list_panes_server(ctx);
 | 
				
			||||||
 | 
						else if (args_has(args, 's')) {
 | 
				
			||||||
 | 
							s = cmd_find_session(ctx, args_get(args, 't'));
 | 
				
			||||||
 | 
							if (s == NULL)
 | 
				
			||||||
 | 
								return (-1);
 | 
				
			||||||
 | 
							cmd_list_panes_session(s, ctx);
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							wl = cmd_find_window(ctx, args_get(args, 't'), NULL);
 | 
				
			||||||
 | 
							if (wl == NULL)
 | 
				
			||||||
 | 
								return (-1);
 | 
				
			||||||
 | 
							cmd_list_panes_window(wl, ctx);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return (0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					cmd_list_panes_server(struct cmd_ctx *ctx)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct session	*s;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						RB_FOREACH(s, sessions, &sessions)
 | 
				
			||||||
 | 
							cmd_list_panes_session(s, ctx);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					cmd_list_panes_session(struct session *s, struct cmd_ctx *ctx)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct winlink	*wl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						RB_FOREACH(wl, winlinks, &s->windows)
 | 
				
			||||||
 | 
							cmd_list_panes_window(wl, ctx);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					cmd_list_panes_window(struct winlink *wl, struct cmd_ctx *ctx)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	struct window_pane	*wp;
 | 
						struct window_pane	*wp;
 | 
				
			||||||
	struct grid		*gd;
 | 
						struct grid		*gd;
 | 
				
			||||||
	struct grid_line	*gl;
 | 
						struct grid_line	*gl;
 | 
				
			||||||
	u_int			 i, n;
 | 
						u_int			 i, n;
 | 
				
			||||||
	unsigned long long	 size;
 | 
						unsigned long long	 size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((wl = cmd_find_window(ctx, args_get(args, 't'), NULL)) == NULL)
 | 
					 | 
				
			||||||
		return (-1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	n = 0;
 | 
						n = 0;
 | 
				
			||||||
	TAILQ_FOREACH(wp, &wl->window->panes, entry) {
 | 
						TAILQ_FOREACH(wp, &wl->window->panes, entry) {
 | 
				
			||||||
		gd = wp->base.grid;
 | 
							gd = wp->base.grid;
 | 
				
			||||||
@@ -64,12 +105,11 @@ cmd_list_panes_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		size += gd->hsize * sizeof *gd->linedata;
 | 
							size += gd->hsize * sizeof *gd->linedata;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ctx->print(ctx, "%u: [%ux%u] [history %u/%u, %llu bytes] %%%u%s%s",
 | 
							ctx->print(ctx,
 | 
				
			||||||
 | 
							    "%u: [%ux%u] [history %u/%u, %llu bytes] %%%u%s%s",
 | 
				
			||||||
		    n, wp->sx, wp->sy, gd->hsize, gd->hlimit, size, wp->id,
 | 
							    n, wp->sx, wp->sy, gd->hsize, gd->hlimit, size, wp->id,
 | 
				
			||||||
		    wp == wp->window->active ? " (active)" : "",
 | 
							    wp == wp->window->active ? " (active)" : "",
 | 
				
			||||||
		    wp->fd == -1 ? " (dead)" : "");
 | 
							    wp->fd == -1 ? " (dead)" : "");
 | 
				
			||||||
		n++;
 | 
							n++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return (0);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: cmd-list-windows.c,v 1.45 2011-01-07 14:45:34 tcunha Exp $ */
 | 
					/* $Id: cmd-list-windows.c,v 1.46 2011-04-06 22:20:16 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -28,10 +28,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int	cmd_list_windows_exec(struct cmd *, struct cmd_ctx *);
 | 
					int	cmd_list_windows_exec(struct cmd *, struct cmd_ctx *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void	cmd_list_windows_server(struct cmd_ctx *);
 | 
				
			||||||
 | 
					void	cmd_list_windows_session(struct session *, struct cmd_ctx *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct cmd_entry cmd_list_windows_entry = {
 | 
					const struct cmd_entry cmd_list_windows_entry = {
 | 
				
			||||||
	"list-windows", "lsw",
 | 
						"list-windows", "lsw",
 | 
				
			||||||
	"t:", 0, 0,
 | 
						"at:", 0, 0,
 | 
				
			||||||
	CMD_TARGET_SESSION_USAGE,
 | 
						"[-a] " CMD_TARGET_SESSION_USAGE,
 | 
				
			||||||
	0,
 | 
						0,
 | 
				
			||||||
	NULL,
 | 
						NULL,
 | 
				
			||||||
	NULL,
 | 
						NULL,
 | 
				
			||||||
@@ -43,12 +46,34 @@ cmd_list_windows_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	struct args	*args = self->args;
 | 
						struct args	*args = self->args;
 | 
				
			||||||
	struct session	*s;
 | 
						struct session	*s;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (args_has(args, 'a'))
 | 
				
			||||||
 | 
							cmd_list_windows_server(ctx);
 | 
				
			||||||
 | 
						else {
 | 
				
			||||||
 | 
							s = cmd_find_session(ctx, args_get(args, 't'));
 | 
				
			||||||
 | 
							if (s == NULL)
 | 
				
			||||||
 | 
								return (-1);
 | 
				
			||||||
 | 
							cmd_list_windows_session(s, ctx);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return (0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					cmd_list_windows_server(struct cmd_ctx *ctx)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct session	*s;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						RB_FOREACH(s, sessions, &sessions)
 | 
				
			||||||
 | 
							cmd_list_windows_session(s, ctx);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					cmd_list_windows_session(struct session *s, struct cmd_ctx *ctx)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	struct winlink	*wl;
 | 
						struct winlink	*wl;
 | 
				
			||||||
	char		*layout;
 | 
						char		*layout;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ((s = cmd_find_session(ctx, args_get(args, 't'))) == NULL)
 | 
					 | 
				
			||||||
		return (-1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	RB_FOREACH(wl, winlinks, &s->windows) {
 | 
						RB_FOREACH(wl, winlinks, &s->windows) {
 | 
				
			||||||
		layout = layout_dump(wl->window);
 | 
							layout = layout_dump(wl->window);
 | 
				
			||||||
		ctx->print(ctx, "%d: %s [%ux%u] [layout %s]%s",
 | 
							ctx->print(ctx, "%d: %s [%ux%u] [layout %s]%s",
 | 
				
			||||||
@@ -56,6 +81,4 @@ cmd_list_windows_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
				
			|||||||
		    layout, wl == s->curw ? " (active)" : "");
 | 
							    layout, wl == s->curw ? " (active)" : "");
 | 
				
			||||||
		xfree(layout);
 | 
							xfree(layout);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return (0);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								tmux.1
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								tmux.1
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
.\" $Id: tmux.1,v 1.298 2011-04-06 22:19:42 nicm Exp $
 | 
					.\" $Id: tmux.1,v 1.299 2011-04-06 22:20:16 nicm Exp $
 | 
				
			||||||
.\"
 | 
					.\"
 | 
				
			||||||
.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					.\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
.\"
 | 
					.\"
 | 
				
			||||||
@@ -1119,13 +1119,33 @@ exists, it is killed, otherwise an error is generated.
 | 
				
			|||||||
If
 | 
					If
 | 
				
			||||||
.Fl d
 | 
					.Fl d
 | 
				
			||||||
is given, the newly linked window is not selected.
 | 
					is given, the newly linked window is not selected.
 | 
				
			||||||
.It Ic list-panes Op Fl t Ar target-window
 | 
					.It Xo Ic list-panes
 | 
				
			||||||
 | 
					.Op Fl as
 | 
				
			||||||
 | 
					.Op Fl t Ar target
 | 
				
			||||||
 | 
					.Xc
 | 
				
			||||||
.D1 (alias: Ic lsp )
 | 
					.D1 (alias: Ic lsp )
 | 
				
			||||||
List the panes in the current window or in
 | 
					If
 | 
				
			||||||
.Ar target-window .
 | 
					.Fl a
 | 
				
			||||||
.It Ic list-windows Op Fl t Ar target-session
 | 
					is given,
 | 
				
			||||||
 | 
					.Ar target
 | 
				
			||||||
 | 
					is ignored and all panes on the server are listed.
 | 
				
			||||||
 | 
					If
 | 
				
			||||||
 | 
					.Fl s
 | 
				
			||||||
 | 
					is given,
 | 
				
			||||||
 | 
					.Ar target
 | 
				
			||||||
 | 
					is a session (or the current session).
 | 
				
			||||||
 | 
					If neither is given,
 | 
				
			||||||
 | 
					.Ar target
 | 
				
			||||||
 | 
					is a window (or the current window).
 | 
				
			||||||
 | 
					.It Xo Ic list-windows
 | 
				
			||||||
 | 
					.Op Fl a
 | 
				
			||||||
 | 
					.Op Fl t Ar target-session
 | 
				
			||||||
 | 
					.Xc
 | 
				
			||||||
.D1 (alias: Ic lsw )
 | 
					.D1 (alias: Ic lsw )
 | 
				
			||||||
List windows in the current session or in
 | 
					If
 | 
				
			||||||
 | 
					.Fl a
 | 
				
			||||||
 | 
					is given, list all windows on the server.
 | 
				
			||||||
 | 
					Otherwise, list windows in the current session or in
 | 
				
			||||||
.Ar target-session .
 | 
					.Ar target-session .
 | 
				
			||||||
.It Xo Ic move-window
 | 
					.It Xo Ic move-window
 | 
				
			||||||
.Op Fl dk
 | 
					.Op Fl dk
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user