mirror of
https://github.com/tmate-io/tmate.git
synced 2025-08-08 21:44:39 +02:00
Add -F format to new-window and split-window to use with the -P flag,
from George Nachman.
This commit is contained in:
@ -33,9 +33,9 @@ int cmd_split_window_exec(struct cmd *, struct cmd_ctx *);
|
||||
|
||||
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,
|
||||
@ -59,12 +59,16 @@ cmd_split_window_exec(struct cmd *self, struct cmd_ctx *ctx)
|
||||
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);
|
||||
@ -135,9 +139,22 @@ cmd_split_window_exec(struct cmd *self, struct cmd_ctx *ctx)
|
||||
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);
|
||||
|
||||
|
Reference in New Issue
Block a user