From 81fbd24a4ad534fe6fca24463c0a7d31a67c35ee 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. --- usr.bin/tmux/format.c | 8 ++++++-- usr.bin/tmux/tmux.1 | 5 +++-- usr.bin/tmux/tmux.h | 3 ++- usr.bin/tmux/window-copy.c | 12 +++++++++++- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/usr.bin/tmux/format.c b/usr.bin/tmux/format.c index 21e48f2d277..fcd1fc8ab43 100644 --- a/usr.bin/tmux/format.c +++ b/usr.bin/tmux/format.c @@ -1,4 +1,4 @@ -/* $OpenBSD: format.c,v 1.84 2015/09/14 10:25:52 nicm Exp $ */ +/* $OpenBSD: format.c,v 1.85 2015/10/23 16:02:21 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott @@ -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/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1 index fe2253d88d6..d2de3b266d2 100644 --- a/usr.bin/tmux/tmux.1 +++ b/usr.bin/tmux/tmux.1 @@ -1,4 +1,4 @@ -.\" $OpenBSD: tmux.1,v 1.451 2015/10/21 13:14:36 nicm Exp $ +.\" $OpenBSD: tmux.1,v 1.452 2015/10/23 16:02:21 nicm Exp $ .\" .\" Copyright (c) 2007 Nicholas Marriott .\" @@ -14,7 +14,7 @@ .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: October 21 2015 $ +.Dd $Mdocdate: October 23 2015 $ .Dt TMUX 1 .Os .Sh NAME @@ -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/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h index 61ce3820da8..10addf6601b 100644 --- a/usr.bin/tmux/tmux.h +++ b/usr.bin/tmux/tmux.h @@ -1,4 +1,4 @@ -/* $OpenBSD: tmux.h,v 1.563 2015/10/18 20:42:42 nicm Exp $ */ +/* $OpenBSD: tmux.h,v 1.564 2015/10/23 16:02:21 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -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/usr.bin/tmux/window-copy.c b/usr.bin/tmux/window-copy.c index 60552f3a608..06521dc78eb 100644 --- a/usr.bin/tmux/window-copy.c +++ b/usr.bin/tmux/window-copy.c @@ -1,4 +1,4 @@ -/* $OpenBSD: window-copy.c,v 1.134 2015/09/14 11:57:22 nicm Exp $ */ +/* $OpenBSD: window-copy.c,v 1.135 2015/10/23 16:02:21 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -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) { -- 2.20.1