From 6f9b9655d7014f304b371574659fbca853a71091 Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 2 Aug 2017 11:10:48 +0000 Subject: Add selection_present format so commands in copy mode can use it, GitHub issue 1028. --- format.c | 6 ++---- tmux.1 | 1 + tmux.h | 3 ++- window-copy.c | 11 +++++++---- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/format.c b/format.c index 160052c4..6fee6434 100644 --- a/format.c +++ b/format.c @@ -1373,7 +1373,7 @@ format_defaults_pane(struct format_tree *ft, struct window_pane *wp) { struct grid *gd = wp->base.grid; u_int idx; - int status, scroll_position; + int status; if (ft->w == NULL) ft->w = wp->window; @@ -1430,9 +1430,7 @@ format_defaults_pane(struct format_tree *ft, struct window_pane *wp) format_add(ft, "scroll_region_upper", "%u", wp->base.rupper); format_add(ft, "scroll_region_lower", "%u", wp->base.rlower); - scroll_position = window_copy_scroll_position(wp); - if (scroll_position != -1) - format_add(ft, "scroll_position", "%d", scroll_position); + window_copy_add_formats(wp, ft); format_add(ft, "alternate_on", "%d", wp->saved_grid ? 1 : 0); format_add(ft, "alternate_saved_x", "%u", wp->saved_cx); diff --git a/tmux.1 b/tmux.1 index 2afdffd4..b183ccba 100644 --- a/tmux.1 +++ b/tmux.1 @@ -3639,6 +3639,7 @@ The following variables are available, where appropriate: .It Li "scroll_region_lower" Ta "" Ta "Bottom of scroll region in pane" .It Li "scroll_region_upper" Ta "" Ta "Top of scroll region in pane" .It Li "scroll_position" Ta "" Ta "Scroll position in copy mode" +.It Li "selection_present" Ta "" Ta "1 if selection started in copy mode" .It Li "session_alerts" Ta "" Ta "List of window indexes with alerts" .It Li "session_attached" Ta "" Ta "Number of clients session is attached to" .It Li "session_activity" Ta "" Ta "Integer time of session last activity" diff --git a/tmux.h b/tmux.h index d8959571..e493a793 100644 --- a/tmux.h +++ b/tmux.h @@ -2257,7 +2257,8 @@ void printflike(2, 3) window_copy_add(struct window_pane *, const char *, ...); void window_copy_vadd(struct window_pane *, const char *, va_list); void window_copy_pageup(struct window_pane *, int); void window_copy_start_drag(struct client *, struct mouse_event *); -int window_copy_scroll_position(struct window_pane *); +void window_copy_add_formats(struct window_pane *, + struct format_tree *); /* names.c */ void check_window_name(struct window *); diff --git a/window-copy.c b/window-copy.c index 3ad6084f..6502cccf 100644 --- a/window-copy.c +++ b/window-copy.c @@ -2407,14 +2407,17 @@ window_copy_scroll_down(struct window_pane *wp, u_int ny) screen_write_stop(&ctx); } -int -window_copy_scroll_position(struct window_pane *wp) +void +window_copy_add_formats(struct window_pane *wp, struct format_tree *ft) { struct window_copy_mode_data *data = wp->modedata; + struct screen *s = &data->screen; if (wp->mode != &window_copy_mode) - return (-1); - return (data->oy); + return; + + format_add(ft, "selection_present", "%d", s->sel.flag); + format_add(ft, "scroll_position", "%d", data->oy); } static void -- cgit