Как получить текущую позицию прокрутки в режиме копирования tmux

1

Есть ли какой-либо способ получить текущую позицию в буфере прокрутки, когда я прокрутил назад в режиме копирования?

Например: я вошел в режим копирования, прокрутил назад довольно далеко вверх. и теперь показанный режим копирования показывает [36828/42969]. Я хочу запустить что-то вроде

:display-message #{scrollback-position}#

Это возможно?

woodstok
источник
В дополнение к общему случаю, на который здесь дан ответ, я столкнулся с конкретным случаем выхода из режима копирования, если позиция прокрутки была нулевой. Оказывается там, что это copy-mode -eуже обеспечивает. unix.stackexchange.com/questions/516142/…
Марк Перриман

Ответы:

3

Я считаю, что tmuxисточник потребует модификации, чтобы получить доступ к одному из двух чисел в качестве имени переменной формата. Большее число (42969 в этом примере), по-видимому, доступно как history_size, и оно видно в format.cvia tmux.hкак hsizeэлемент gridэлемента struct screen, как видно из первого вызова format_addin format_defaults_pane.

Меньшее число (36828 в этом примере) представляется oyэлементом struct window_copy_mode_data, к которому осуществляется доступ в modedataэлементе struct window_paneкак a void *. Короче говоря, меньшее число - это элемент структуры, который не виден внутри format.c. oyЭлемент используется в window_copy_write_lineпостроить строку как один , упомянутых в вопросе.

Эйрик Фуллер
источник
Огромное спасибо. Я планировал покопаться в коде, когда у меня появилось немного свободного времени.
Вудсток
@woodstok Ты с этим справился?
Марк Перриман
@MarkPerryman, я разместил это как ответ ниже.
Вудсток
2

Начиная с версии 2.2, они добавили scroll_positionпеременную. Руководство Tmux описывает это как

scroll_position - Scroll position in copy mode,

woodstok
источник