summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2023-08-23 08:40:26 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2023-08-23 08:40:26 +0000
commit9f922816e7ebceca933e9fce38c5acbe3e7f2656 (patch)
treecb9cffa47a5c9c245d6f5c3db7a26a2952dd2d83 /usr.bin
parentd771da95738fdc452b63ee2d3e82f26e1d71e74e (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.c16
-rw-r--r--usr.bin/tmux/tmux.19
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