diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2023-08-23 08:40:26 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2023-08-23 08:40:26 +0000 |
commit | 9f922816e7ebceca933e9fce38c5acbe3e7f2656 (patch) | |
tree | cb9cffa47a5c9c245d6f5c3db7a26a2952dd2d83 /usr.bin | |
parent | d771da95738fdc452b63ee2d3e82f26e1d71e74e (diff) |
Add -c to run-shell to set working directory, from someone in GitHub
issue 3661.
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/tmux/cmd-run-shell.c | 16 | ||||
-rw-r--r-- | usr.bin/tmux/tmux.1 | 9 |
2 files changed, 17 insertions, 8 deletions
diff --git a/usr.bin/tmux/cmd-run-shell.c b/usr.bin/tmux/cmd-run-shell.c index 8b9ec15477b..d962eedd28d 100644 --- a/usr.bin/tmux/cmd-run-shell.c +++ b/usr.bin/tmux/cmd-run-shell.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-run-shell.c,v 1.84 2022/06/02 21:19:32 nicm Exp $ */ +/* $OpenBSD: cmd-run-shell.c,v 1.85 2023/08/23 08:40:25 nicm Exp $ */ /* * Copyright (c) 2009 Tiago Cunha <me@tiagocunha.org> @@ -44,8 +44,9 @@ const struct cmd_entry cmd_run_shell_entry = { .name = "run-shell", .alias = "run", - .args = { "bd:Ct:", 0, 1, cmd_run_shell_args_parse }, - .usage = "[-bC] [-d delay] " CMD_TARGET_PANE_USAGE " [shell-command]", + .args = { "bd:Ct:c:", 0, 2, cmd_run_shell_args_parse }, + .usage = "[-bC] [-c start-directory] [-d delay] " CMD_TARGET_PANE_USAGE + " [shell-command]", .target = { 't', CMD_FIND_PANE, CMD_FIND_CANFAIL }, @@ -103,6 +104,7 @@ cmd_run_shell_exec(struct cmd *self, struct cmdq_item *item) struct args *args = cmd_get_args(self); struct cmd_find_state *target = cmdq_get_target(item); struct cmd_run_shell_data *cdata; + struct client *c = cmdq_get_client(item); struct client *tc = cmdq_get_target_client(item); struct session *s = target->s; struct window_pane *wp = target->wp; @@ -137,7 +139,7 @@ cmd_run_shell_exec(struct cmd *self, struct cmdq_item *item) cdata->wp_id = -1; if (wait) { - cdata->client = cmdq_get_client(item); + cdata->client = c; cdata->item = item; } else { cdata->client = tc; @@ -145,8 +147,10 @@ cmd_run_shell_exec(struct cmd *self, struct cmdq_item *item) } if (cdata->client != NULL) cdata->client->references++; - - cdata->cwd = xstrdup(server_client_get_cwd(cmdq_get_client(item), s)); + if (args_has(args, 'c')) + cdata->cwd = xstrdup(args_get(args, 'c')); + else + cdata->cwd = xstrdup(server_client_get_cwd(c, s)); cdata->s = s; if (s != NULL) diff --git a/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1 index 34ee4037bac..e3a6d843f23 100644 --- a/usr.bin/tmux/tmux.1 +++ b/usr.bin/tmux/tmux.1 @@ -1,4 +1,4 @@ -.\" $OpenBSD: tmux.1,v 1.928 2023/08/17 14:10:28 nicm Exp $ +.\" $OpenBSD: tmux.1,v 1.929 2023/08/23 08:40:25 nicm Exp $ .\" .\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com> .\" @@ -14,7 +14,7 @@ .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: August 17 2023 $ +.Dd $Mdocdate: August 23 2023 $ .Dt TMUX 1 .Os .Sh NAME @@ -6639,6 +6639,7 @@ option. .Tg run .It Xo Ic run-shell .Op Fl bC +.Op Fl c Ar start-directory .Op Fl d Ar delay .Op Fl t Ar target-pane .Op Ar shell-command @@ -6666,6 +6667,10 @@ waits for .Ar delay seconds before starting the command. If +.Fl c +is given, the current working directory is set to +.Ar start-directory . +If .Fl C is not given, any output to stdout is displayed in view mode (in the pane specified by |