summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--format.c6
-rw-r--r--tmux.11
-rw-r--r--tmux.h1
-rw-r--r--window-copy.c10
4 files changed, 17 insertions, 1 deletions
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)
{