diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2013-03-25 11:44:01 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2013-03-25 11:44:01 +0000 |
commit | 102efa6a47dbba8b95fe3baf85ce9759f08d93fd (patch) | |
tree | 42e08b934d341322afd3365ce08e364a1a8694d5 /usr.bin/tmux/cmd-new-session.c | |
parent | 72f8afdae4309b4a2522f83f5c96d0909f4038a0 (diff) |
Add -P and -F to new-session.
Diffstat (limited to 'usr.bin/tmux/cmd-new-session.c')
-rw-r--r-- | usr.bin/tmux/cmd-new-session.c | 52 |
1 files changed, 35 insertions, 17 deletions
diff --git a/usr.bin/tmux/cmd-new-session.c b/usr.bin/tmux/cmd-new-session.c index f62a74417a1..4b8aaef196f 100644 --- a/usr.bin/tmux/cmd-new-session.c +++ b/usr.bin/tmux/cmd-new-session.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-new-session.c,v 1.49 2013/03/24 09:58:40 nicm Exp $ */ +/* $OpenBSD: cmd-new-session.c,v 1.50 2013/03/25 11:44:00 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -35,9 +35,9 @@ enum cmd_retval cmd_new_session_exec(struct cmd *, struct cmd_q *); const struct cmd_entry cmd_new_session_entry = { "new-session", "new", - "AdDn:s:t:x:y:", 0, 1, - "[-AdD] [-n window-name] [-s session-name] " CMD_TARGET_SESSION_USAGE - " [-x width] [-y height] [command]", + "AdDF:n:Ps:t:x:y:", 0, 1, + "[-AdDP] [-F format] [-n window-name] [-s session-name] " + CMD_TARGET_SESSION_USAGE " [-x width] [-y height] [command]", CMD_STARTSERVER|CMD_CANTNEST|CMD_SENDENVIRON, NULL, cmd_new_session_check, @@ -55,19 +55,20 @@ cmd_new_session_check(struct args *args) enum cmd_retval cmd_new_session_exec(struct cmd *self, struct cmd_q *cmdq) { - struct args *args = self->args; - struct client *c = cmdq->client; - struct session *s, *groupwith; - struct window *w; - struct environ env; - struct termios tio, *tiop; - struct passwd *pw; - const char *newname, *target, *update, *cwd, *errstr; - char *cmd, *cause; - int detached, idx; - u_int sx, sy; - int already_attached; - + struct args *args = self->args; + struct client *c = cmdq->client; + struct session *s, *groupwith; + struct window *w; + struct environ env; + struct termios tio, *tiop; + struct passwd *pw; + const char *newname, *target, *update, *cwd, *errstr; + const char *template; + char *cmd, *cause, *cp; + int detached, idx; + u_int sx, sy; + int already_attached; + struct format_tree *ft; newname = args_get(args, 's'); if (newname != NULL) { @@ -233,6 +234,23 @@ cmd_new_session_exec(struct cmd *self, struct cmd_q *cmdq) if (cfg_finished) cfg_show_causes(s); + /* Print if requested. */ + if (args_has(args, 'P')) { + if ((template = args_get(args, 'F')) == NULL) + template = NEW_SESSION_TEMPLATE; + + ft = format_create(); + if ((c = cmd_find_client(cmdq, NULL, 1)) != NULL) + format_client(ft, c); + format_session(ft, s); + + cp = format_expand(ft, template); + cmdq_print(cmdq, "%s", cp); + free(cp); + + format_free(ft); + } + if (!detached) cmdq->client_exit = 0; return (CMD_RETURN_NORMAL); |