42.14 Полосы прокрутки

Обычно параметр кадра vertical-scroll-bars управляет тем, имеют ли окна в кадре вертикальные полосы прокрутки и находятся ли они слева или справа. Параметр кадра scroll-bar-width задаёт их ширину (nil означает значение по умолчанию).

Параметр кадра horizontal-scroll-bars управляет тем, имеют ли окна в кадре горизонтальные полосы прокрутки. Параметр кадра scroll-bar-height задаёт их высоту (nil означает значение по умолчанию). См. Параметры компоновки.

Горизонтальные полосы прокрутки доступны не на всех платформах. Функция horizontal-scroll-bars-available-p, которая не принимает аргументов, возвращает не nil, если они доступны в вашей системе.

Следующие три функции принимают в качестве аргумента активный кадр, который по умолчанию равен выбранному.

Функция: frame-current-scroll-bars &optional frame

Эта функция сообщает типы полос прокрутки для кадра frame. Возвращаемое значение — это ячейка cons (vertical-type . horizontal-type), где vertical-type может быть left, right или nil (что означает отсутствие вертикальной полосы прокрутки). horizontal-type может быть bottom или nil (что означает отсутствие горизонтальной полосы прокрутки).

Функция: frame-scroll-bar-width &optional frame

Эта функция возвращает ширину вертикальных полос прокрутки кадра frame в пикселях.

Функция: frame-scroll-bar-height &optional frame

Эта функция возвращает высоту горизонтальных полос прокрутки кадра frame в пикселях.

Вы можете переопределить настройки для конкретного кадра для отдельных окон с помощью следующей функции:

Функция: set-window-scroll-bars window &optional width vertical-type height horizontal-type persistent

Эта функция устанавливает ширину и/или высоту, а также типы полос прокрутки для окна window. Если window равен nil, используется выбранное окно.

width задаёт ширину вертикальной полосы прокрутки в пикселях (nil означает использование ширины, заданной для кадра). vertical-type указывает, нужна ли вертикальная полоса прокрутки и, если да, где. Возможные значения: left, right, t (что означает использование значения по умолчанию для кадра) и nil (отсутствие вертикальной полосы прокрутки).

height задаёт высоту горизонтальной полосы прокрутки в пикселях (nil означает использование высоты, заданной для кадра). horizontal-type указывает, нужна ли горизонтальная полоса прокрутки. Возможные значения: bottom, t (что означает использование значения по умолчанию для кадра) и nil (отсутствие горизонтальной полосы прокрутки). Обратите внимание, что для мини-окна значение t имеет тот же смысл, что и nil, а именно — не показывать горизонтальную полосу прокрутки. Чтобы показать горизонтальную полосу прокрутки в мини-окне, необходимо явно указать bottom.

Если окно window недостаточно велико, чтобы вместить полосу прокрутки желаемого размера, соответствующая полоса прокрутки остаётся без изменений.

Значения, заданные здесь, могут быть впоследствии переопределены вызовом set-window-buffer (см. Буферы и окна) для окна window с аргументом keep-margins, равным nil или опущенным. Однако, если необязательный пятый аргумент persistent не равен nil и остальные аргументы обработаны успешно, заданные здесь значения безусловно сохраняются при последующих вызовах set-window-buffer.

Используя аргумент persistent функций set-window-scroll-bars и set-window-fringes (см. Размер и положение полей), вы можете надёжно и постоянно отключать полосы прокрутки и/или поля в любом окне мини-буфера, добавив следующий фрагмент в ваш ранний init-файл (см. Init-файл).

(add-hook 'after-make-frame-functions
          (lambda (frame)
            (set-window-scroll-bars
             (minibuffer-window frame) 0 nil 0 nil t)
            (set-window-fringes
             (minibuffer-window frame) 0 0 nil t)))

Следующие четыре функции принимают в качестве аргумента активное окно, которое по умолчанию равно выбранному.

Функция: window-scroll-bars &optional window

Эта функция возвращает список вида (width columns vertical-type height lines horizontal-type persistent).

Значение width — это значение, которое было задано для ширины вертикальной полосы прокрутки (может быть nil); columns — это (возможно, округлённое) количество столбцов, которое вертикальная полоса прокрутки фактически занимает.

Значение height — это значение, которое было задано для высоты горизонтальной полосы прокрутки (может быть nil); lines — это (возможно, округлённое) количество строк, которое горизонтальная полоса прокрутки фактически занимает.

Значение persistent — это значение, заданное для окна window при последнем успешном вызове set-window-scroll-bars, или nil, если такого вызова не было.

Функция: window-current-scroll-bars &optional window

Эта функция сообщает тип полосы прокрутки для окна window. Возвращаемое значение — это ячейка cons (vertical-type . horizontal-type). В отличие от window-scroll-bars, эта функция сообщает фактически используемый тип полосы прокрутки с учётом значений по умолчанию для кадра и scroll-bar-mode.

Функция: window-scroll-bar-width &optional window

Эта функция возвращает ширину в пикселях вертикальной полосы прокрутки окна window.

Функция: window-scroll-bar-height &optional window

Эта функция возвращает высоту в пикселях горизонтальной полосы прокрутки окна window.

Если вы не задаёте настройки полос прокрутки окна через set-window-scroll-bars, то буферно-локальные переменные vertical-scroll-bar, horizontal-scroll-bar, scroll-bar-width и scroll-bar-height в отображаемом буфере управляют полосами прокрутки окна. Функция set-window-buffer проверяет эти переменные. Если вы измените их в буфере, который уже отображается в окне, вы можете заставить окно принять новые значения, вызвав set-window-buffer с тем же буфером, который уже отображается.

Вы можете управлять внешним видом полос прокрутки для конкретного буфера, установив следующие переменные, которые автоматически становятся буферно-локальными при установке.

Переменная: vertical-scroll-bar

Эта переменная задаёт расположение вертикальной полосы прокрутки. Возможные значения: left, right, t (что означает использование значения по умолчанию для кадра) и nil (отсутствие полосы прокрутки).

Переменная: horizontal-scroll-bar

Эта переменная задаёт расположение горизонтальной полосы прокрутки. Возможные значения: bottom, t (что означает использование значения по умолчанию для кадра) и nil (отсутствие полосы прокрутки).

Переменная: scroll-bar-width

Эта переменная задаёт ширину вертикальных полос прокрутки буфера, измеряемую в пикселях. Значение nil означает использование значения, заданного для кадра.

Переменная: scroll-bar-height

Эта переменная задаёт высоту горизонтальной полосы прокрутки буфера, измеряемую в пикселях. Значение nil означает использование значения, заданного для кадра.

Наконец, вы можете переключать отображение полос прокрутки на всех кадрах, настраивая переменные scroll-bar-mode и horizontal-scroll-bar-mode.

Пользовательская опция: scroll-bar-mode

Эта переменная управляет тем, где и нужно ли размещать вертикальные полосы прокрутки во всех кадрах. Возможные значения: nil (отсутствие полос прокрутки), left (размещение полос прокрутки слева) и right (размещение полос прокрутки справа).

Пользовательская опция: horizontal-scroll-bar-mode

Эта переменная управляет отображением горизонтальных полос прокрутки на всех кадрах.