aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornicm <nicm>2017-05-07 22:27:57 +0000
committernicm <nicm>2017-05-07 22:27:57 +0000
commit5fee4638e08b1642a3b8882c5cf8825dd76b3a81 (patch)
tree5f05c50a17e78893cfee68f343c63ce114fd0ddd
parentd52f579fd5e7fd21d7dcf837780cbf98498b10ce (diff)
downloadrtmux-5fee4638e08b1642a3b8882c5cf8825dd76b3a81.tar.gz
rtmux-5fee4638e08b1642a3b8882c5cf8825dd76b3a81.tar.bz2
rtmux-5fee4638e08b1642a3b8882c5cf8825dd76b3a81.zip
Add a format for the name of the pane's mode, lets it be used as a
conditional for key bindings.
-rw-r--r--format.c3
-rw-r--r--tmux.11
-rw-r--r--tmux.h21
-rw-r--r--window-choose.c2
-rw-r--r--window-clock.c2
-rw-r--r--window-copy.c2
6 files changed, 22 insertions, 9 deletions
diff --git a/format.c b/format.c
index b64af61e..d6bc9ceb 100644
--- a/format.c
+++ b/format.c
@@ -1371,6 +1371,9 @@ format_defaults_pane(struct format_tree *ft, struct window_pane *wp)
}
format_add(ft, "pane_in_mode", "%d", wp->screen != &wp->base);
+ if (wp->mode != NULL)
+ format_add(ft, "pane_mode", "%s", wp->mode->name);
+
format_add(ft, "pane_synchronized", "%d",
!!options_get_number(wp->window->options, "synchronize-panes"));
format_add(ft, "pane_search_string", "%s",
diff --git a/tmux.1 b/tmux.1
index 39e8d0df..96320f56 100644
--- a/tmux.1
+++ b/tmux.1
@@ -3561,6 +3561,7 @@ The following variables are available, where appropriate:
.It Li "pane_input_off" Ta "" Ta "If input to pane is disabled"
.It Li "pane_index" Ta "#P" Ta "Index of pane"
.It Li "pane_left" Ta "" Ta "Left of pane"
+.It Li "pane_mode" Ta "" Ta "Name of pane mode, if any."
.It Li "pane_pid" Ta "" Ta "PID of first process in pane"
.It Li "pane_right" Ta "" Ta "Right of pane"
.It Li "pane_search_string" Ta "" Ta "Last search string in copy mode"
diff --git a/tmux.h b/tmux.h
index 378c937a..1b1343b7 100644
--- a/tmux.h
+++ b/tmux.h
@@ -689,15 +689,18 @@ struct screen_write_ctx {
* right function to handle input and output.
*/
struct window_mode {
- struct screen *(*init)(struct window_pane *);
- void (*free)(struct window_pane *);
- void (*resize)(struct window_pane *, u_int, u_int);
- void (*key)(struct window_pane *, struct client *, struct session *,
- key_code, struct mouse_event *);
-
- const char *(*key_table)(struct window_pane *);
- void (*command)(struct window_pane *, struct client *,
- struct session *, struct args *, struct mouse_event *);
+ const char *name;
+
+ struct screen *(*init)(struct window_pane *);
+ void (*free)(struct window_pane *);
+ void (*resize)(struct window_pane *, u_int, u_int);
+ void (*key)(struct window_pane *, struct client *,
+ struct session *, key_code, struct mouse_event *);
+
+ const char *(*key_table)(struct window_pane *);
+ void (*command)(struct window_pane *, struct client *,
+ struct session *, struct args *,
+ struct mouse_event *);
};
#define WINDOW_MODE_TIMEOUT 180
diff --git a/window-choose.c b/window-choose.c
index 0e2f1bf9..2f3a1631 100644
--- a/window-choose.c
+++ b/window-choose.c
@@ -57,6 +57,8 @@ enum window_choose_input_type {
};
const struct window_mode window_choose_mode = {
+ .name = "choose-mode",
+
.init = window_choose_init,
.free = window_choose_free,
.resize = window_choose_resize,
diff --git a/window-clock.c b/window-clock.c
index 94f014fc..d23ac136 100644
--- a/window-clock.c
+++ b/window-clock.c
@@ -34,6 +34,8 @@ static void window_clock_timer_callback(int, short, void *);
static void window_clock_draw_screen(struct window_pane *);
const struct window_mode window_clock_mode = {
+ .name = "clock-mode",
+
.init = window_clock_init,
.free = window_clock_free,
.resize = window_clock_resize,
diff --git a/window-copy.c b/window-copy.c
index 7def63db..8424bfa6 100644
--- a/window-copy.c
+++ b/window-copy.c
@@ -105,6 +105,8 @@ static void window_copy_move_mouse(struct mouse_event *);
static void window_copy_drag_update(struct client *, struct mouse_event *);
const struct window_mode window_copy_mode = {
+ .name = "copy-mode",
+
.init = window_copy_init,
.free = window_copy_free,
.resize = window_copy_resize,