From 14da99940806dd63c2180ad238886fcb6735db04 Mon Sep 17 00:00:00 2001 From: nicm Date: Fri, 23 Oct 2015 16:02:21 +0000 Subject: [PATCH] Format for scroll position, from Jorge Morante. --- format.c | 6 +++++- tmux.1 | 1 + tmux.h | 1 + window-copy.c | 10 ++++++++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/format.c b/format.c index 2fae8da0..1d80fbf7 100644 --- a/format.c +++ b/format.c @@ -1005,7 +1005,7 @@ format_defaults_pane(struct format_tree *ft, struct window_pane *wp) { struct grid *gd = wp->base.grid; u_int idx; - int status; + int status, scroll_position; if (ft->w == NULL) ft->w = wp->window; @@ -1052,6 +1052,10 @@ 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); + format_add(ft, "alternate_on", "%d", wp->saved_grid ? 1 : 0); format_add(ft, "alternate_saved_x", "%u", wp->saved_cx); format_add(ft, "alternate_saved_y", "%u", wp->saved_cy); diff --git a/tmux.1 b/tmux.1 index 1e85a898..7744785a 100644 --- a/tmux.1 +++ b/tmux.1 @@ -3406,6 +3406,7 @@ The following variables are available, where appropriate: .It Li "pid" Ta "" Ta "Server PID" .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 "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 72495100..528c22c7 100644 --- a/tmux.h +++ b/tmux.h @@ -2082,6 +2082,7 @@ 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 *); void window_copy_start_drag(struct client *, struct mouse_event *); +int window_copy_scroll_position(struct window_pane *); /* window-choose.c */ extern const struct window_mode window_choose_mode; diff --git a/window-copy.c b/window-copy.c index c7d360de..f81a2a16 100644 --- a/window-copy.c +++ b/window-copy.c @@ -2219,6 +2219,16 @@ window_copy_scroll_down(struct window_pane *wp, u_int ny) screen_write_stop(&ctx); } +int +window_copy_scroll_position(struct window_pane *wp) +{ + struct window_copy_mode_data *data = wp->modedata; + + if (wp->mode != &window_copy_mode) + return (-1); + return (data->oy); +} + void window_copy_rectangle_toggle(struct window_pane *wp) {