Revision: 2716 http://tmux.svn.sourceforge.net/tmux/?rev=2716&view=rev Author: tcunha Date: 2012-03-07 13:39:29 +0000 (Wed, 07 Mar 2012) Log Message: ----------- Sync OpenBSD patchset 1041:
Add -F format to new-window and split-window to use with the -P flag, from George Nachman. Modified Paths: -------------- trunk/cmd-new-window.c trunk/cmd-split-window.c trunk/tmux.1 Modified: trunk/cmd-new-window.c =================================================================== --- trunk/cmd-new-window.c 2012-03-07 13:38:26 UTC (rev 2715) +++ trunk/cmd-new-window.c 2012-03-07 13:39:29 UTC (rev 2716) @@ -30,9 +30,9 @@ const struct cmd_entry cmd_new_window_entry = { "new-window", "neww", - "ac:dkn:Pt:", 0, 1, - "[-adk] [-c start-directory] [-n window-name] [-t target-window] " - "[command]", + "ac:dF:kn:Pt:", 0, 1, + "[-adkP] [-c start-directory] [-F format] [-n window-name] " + "[-t target-window] [command]", 0, NULL, NULL, @@ -42,12 +42,16 @@ int cmd_new_window_exec(struct cmd *self, struct cmd_ctx *ctx) { - struct args *args = self->args; - struct session *s; - struct winlink *wl; - const char *cmd, *cwd; - char *cause; - int idx, last, detached; + struct args *args = self->args; + struct session *s; + struct winlink *wl; + struct client *c; + const char *cmd, *cwd; + const char *template; + char *cause; + int idx, last, detached; + struct format_tree *ft; + char *cp; if (args_has(args, 'a')) { wl = cmd_find_window(ctx, args_get(args, 't'), &s); @@ -116,7 +120,23 @@ } else server_status_session_group(s); - if (args_has(args, 'P')) - ctx->print(ctx, "%s:%u", s->name, wl->idx); + if (args_has(args, 'P')) { + template = "#{session_name}:#{window_index}"; + if (args_has(args, 'F')) + template = args_get(args, 'F'); + + ft = format_create(); + if ((c = cmd_find_client(ctx, NULL)) != NULL) + format_client(ft, c); + format_session(ft, s); + format_winlink(ft, s, wl); + + cp = format_expand(ft, template); + ctx->print(ctx, "%s", cp); + free(cp); + + format_free(ft); + } + return (0); } Modified: trunk/cmd-split-window.c =================================================================== --- trunk/cmd-split-window.c 2012-03-07 13:38:26 UTC (rev 2715) +++ trunk/cmd-split-window.c 2012-03-07 13:39:29 UTC (rev 2716) @@ -32,9 +32,9 @@ const struct cmd_entry cmd_split_window_entry = { "split-window", "splitw", - "c:dl:hp:Pt:v", 0, 1, - "[-dhvP] [-c start-directory] [-p percentage|-l size] [-t target-pane] " - "[command]", + "c:dF:l:hp:Pt:v", 0, 1, + "[-dhvP] [-c start-directory] [-F format] [-p percentage|-l size] " + "[-t target-pane] [command]", 0, cmd_split_window_key_binding, NULL, @@ -58,12 +58,16 @@ struct window *w; struct window_pane *wp, *new_wp = NULL; struct environ env; - const char *cmd, *cwd, *shell; + const char *cmd, *cwd, *shell; char *cause, *new_cause; - u_int hlimit, paneidx; + u_int hlimit; int size, percentage; enum layout_type type; struct layout_cell *lc; + const char *template; + struct client *c; + struct format_tree *ft; + char *cp; if ((wl = cmd_find_pane(ctx, args_get(args, 't'), &s, &wp)) == NULL) return (-1); @@ -134,9 +138,22 @@ environ_free(&env); if (args_has(args, 'P')) { - if (window_pane_index(new_wp, &paneidx) != 0) - fatalx("index not found"); - ctx->print(ctx, "%s:%u.%u", s->name, wl->idx, paneidx); + template = "#{session_name}:#{window_index}.#{pane_index}"; + if (args_has(args, 'F')) + template = args_get(args, 'F'); + + ft = format_create(); + if ((c = cmd_find_client(ctx, NULL)) != NULL) + format_client(ft, c); + format_session(ft, s); + format_winlink(ft, s, wl); + format_window_pane(ft, new_wp); + + cp = format_expand(ft, template); + ctx->print(ctx, "%s", cp); + free(cp); + + format_free(ft); } return (0); Modified: trunk/tmux.1 =================================================================== --- trunk/tmux.1 2012-03-07 13:38:26 UTC (rev 2715) +++ trunk/tmux.1 2012-03-07 13:39:29 UTC (rev 2716) @@ -1253,6 +1253,7 @@ .Op Fl c Ar start-directory .Op Fl n Ar window-name .Op Fl t Ar target-window +.Op Fl F Ar format .Op Ar shell-command .Xc .D1 (alias: Ic neww ) @@ -1310,7 +1311,11 @@ .Pp The .Fl P -option prints the location of the new window after it has been created. +option prints information about the new window after it has been created. +By default, it uses the format +.Ql #{session_name}:#{window_index} +but a different format may be specified with +.Fl F . .It Ic next-layout Op Fl t Ar target-window .D1 (alias: Ic nextl ) Move a window to the next layout and rearrange the panes to fit. @@ -1495,6 +1500,7 @@ .Fl p Ar percentage Oc .Op Fl t Ar target-pane .Op Ar shell-command +.Op Fl F Ar format .Xc .D1 (alias: Ic splitw ) Create a new pane by splitting This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ tmux-cvs mailing list tmux-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-cvs