29.22 Вертикальная дробная прокрутка

Вертикальная дробная прокрутка означает смещение текста в окне вверх или вниз на заданное кратное или дробное количество строк. Emacs использует это, например, для изображений и строк экрана, которые выше окна. Каждое окно имеет вертикальное положение прокрутки, которое является числом, никогда не меньше нуля. Оно указывает, насколько поднять содержимое окна при его отображении. Поднятие содержимого окна обычно приводит к тому, что все или часть некоторых строк исчезает сверху, а все или часть других строк появляется снизу. Обычно используется значение ноль.

Вертикальное положение прокрутки измеряется в единицах высоты нормальной строки, то есть высоты шрифта по умолчанию. Таким образом, если значение равно .5, это означает, что содержимое окна будет прокручено вверх на половину высоты нормальной строки. Если оно равно 3.3, это означает, что содержимое окна прокручено вверх примерно на три с половиной высоты нормальной строки.

Какую долю строки покрывает вертикальная прокрутка или сколько строк зависит от содержимого строк. Значение .5 может прокрутить строку, высота которой очень мала, за пределы экрана, в то время как значение 3.3 может прокрутить только часть пути через высокую строку или изображение.

Функция: window-vscroll &optional window pixels-p

Эта функция возвращает текущее вертикальное положение прокрутки window. По умолчанию для window используется выбранное окно. Если pixels-p не равно nil, возвращаемое значение измеряется в пикселях, а не в единицах высоты нормальной строки.

(window-vscroll)
     ⇒ 0
Функция: set-window-vscroll window lines &optional pixels-p preserve-vscroll-p

Эта функция устанавливает вертикальное положение прокрутки window равным lines. Если window равно nil, используется выбранное окно. Аргумент lines должен быть нулем или положительным; в противном случае он принимается как ноль.

Фактическое вертикальное положение прокрутки всегда должно соответствовать целому числу пикселей, поэтому указанное вами значение округляется соответствующим образом.

Возвращаемое значение — это результат этого округления.

(set-window-vscroll (selected-window) 1.2)
     ⇒ 1.13

Если pixels-p не равно nil, lines указывает количество пикселей. В этом случае возвращаемое значение равно lines.

Обычно vscroll не применяется к окнам, которые не являются minibuffer-scroll-window или выбранным окном при изменении размера мини-окна (см. Окна мини-буфера). Это поведение «заморозки» отключается, когда параметр preserve-vscroll-p не равен nil, что означает установку vscroll как обычно.

Переменная: auto-window-vscroll

Если эта переменная не равна nil, функции line-move, scroll-up и scroll-down будут автоматически изменять вертикальное положение прокрутки для прокрутки отображаемых строк, которые выше высоты окна, например, при наличии больших изображений.