diff options
author | nicm <nicm> | 2017-05-07 22:27:57 +0000 |
---|---|---|
committer | nicm <nicm> | 2017-05-07 22:27:57 +0000 |
commit | 5fee4638e08b1642a3b8882c5cf8825dd76b3a81 (patch) | |
tree | 5f05c50a17e78893cfee68f343c63ce114fd0ddd | |
parent | d52f579fd5e7fd21d7dcf837780cbf98498b10ce (diff) | |
download | rtmux-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.c | 3 | ||||
-rw-r--r-- | tmux.1 | 1 | ||||
-rw-r--r-- | tmux.h | 21 | ||||
-rw-r--r-- | window-choose.c | 2 | ||||
-rw-r--r-- | window-clock.c | 2 | ||||
-rw-r--r-- | window-copy.c | 2 |
6 files changed, 22 insertions, 9 deletions
@@ -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", @@ -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" @@ -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, |