aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornicm <nicm>2020-06-11 09:55:47 +0000
committernicm <nicm>2020-06-11 09:55:47 +0000
commit50ee41423f6f7b4c0bc83ecf9468a37fc8bf9e99 (patch)
treed2c7dec252a8331249a05f5b1d1b7f61e4537579
parent23d79cfda87f822c7440fd572ce5fc440c079ac2 (diff)
downloadrtmux-50ee41423f6f7b4c0bc83ecf9468a37fc8bf9e99.tar.gz
rtmux-50ee41423f6f7b4c0bc83ecf9468a37fc8bf9e99.tar.bz2
rtmux-50ee41423f6f7b4c0bc83ecf9468a37fc8bf9e99.zip
Add a -A option to pause a pane manually.
-rw-r--r--cmd-refresh-client.c2
-rw-r--r--control.c14
-rw-r--r--tmux.111
-rw-r--r--tmux.h1
4 files changed, 25 insertions, 3 deletions
diff --git a/cmd-refresh-client.c b/cmd-refresh-client.c
index bbe0c736..f7b6269b 100644
--- a/cmd-refresh-client.c
+++ b/cmd-refresh-client.c
@@ -68,6 +68,8 @@ cmd_refresh_client_update_offset(struct client *tc, const char *value)
control_set_pane_off(tc, wp);
else if (strcmp(colon, "continue") == 0)
control_continue_pane(tc, wp);
+ else if (strcmp(colon, "pause") == 0)
+ control_pause_pane(tc, wp);
out:
free(copy);
diff --git a/control.c b/control.c
index 140849e1..8ff7736f 100644
--- a/control.c
+++ b/control.c
@@ -265,6 +265,20 @@ control_continue_pane(struct client *c, struct window_pane *wp)
}
}
+/* Pause a pane. */
+void
+control_pause_pane(struct client *c, struct window_pane *wp)
+{
+ struct control_pane *cp;
+
+ cp = control_add_pane(c, wp);
+ if (~cp->flags & CONTROL_PANE_PAUSED) {
+ cp->flags |= CONTROL_PANE_PAUSED;
+ control_discard_pane(c, cp);
+ control_write(c, "%%pause %%%u", wp->id);
+ }
+}
+
/* Write a line. */
static void
control_vwrite(struct client *c, const char *fmt, va_list ap)
diff --git a/tmux.1 b/tmux.1
index 1a3cde5d..44806c34 100644
--- a/tmux.1
+++ b/tmux.1
@@ -1304,9 +1304,10 @@ The argument is a pane ID (with leading
.Ql % ) ,
a colon, then one of
.Ql on ,
-.Ql off
+.Ql off ,
+.Ql continue
or
-.Ql continue .
+.Ql pause .
If
.Ql off ,
.Nm
@@ -1315,9 +1316,13 @@ the pane off, will stop reading from the pane.
If
.Ql continue ,
.Nm
-will return to sending output to a paused pane (see the
+will return to sending output to the pane if it was paused (manually or with the
.Ar pause-after
flag).
+If
+.Ql pause ,
+.Nm
+will pause the pane.
.Fl A
may be given multiple times for different panes.
.Pp
diff --git a/tmux.h b/tmux.h
index ee59b4b3..c6c84e86 100644
--- a/tmux.h
+++ b/tmux.h
@@ -2846,6 +2846,7 @@ void control_stop(struct client *);
void control_set_pane_on(struct client *, struct window_pane *);
void control_set_pane_off(struct client *, struct window_pane *);
void control_continue_pane(struct client *, struct window_pane *);
+void control_pause_pane(struct client *, struct window_pane *);
struct window_pane_offset *control_pane_offset(struct client *,
struct window_pane *, int *);
void control_reset_offsets(struct client *);