42.14 滚动条

通常,框架参数 vertical-scroll-bars 控制框架中的窗口是否显示垂直滚动条, 以及滚动条位于左侧还是右侧。 框架参数 scroll-bar-width 指定滚动条宽度(nil 表示使用默认值)。

框架参数 horizontal-scroll-bars 控制框架中的窗口是否显示水平滚动条。 框架参数 scroll-bar-height 指定滚动条高度(nil 表示使用默认值)。See 布局参数

并非所有平台都支持水平滚动条。 无参数函数 horizontal-scroll-bars-available-p 在系统支持时返回非 nil

以下三个函数的参数为活动框架,默认为当前选中框架。

Function: frame-current-scroll-bars &optional frame

该函数返回框架 frame 的滚动条类型。 返回值为 cons 单元格 (vertical-type . horizontal-type), 其中 vertical-typeleftrightnil(表示无垂直滚动条)。 horizontal-typebottomnil(表示无水平滚动条)。

Function: frame-scroll-bar-width &optional frame

该函数返回框架 frame 垂直滚动条的像素宽度。

Function: frame-scroll-bar-height &optional frame

该函数返回框架 frame 水平滚动条的像素高度。

可使用以下函数为单个窗口覆盖框架级设置:

Function: set-window-scroll-bars window &optional width vertical-type height horizontal-type persistent

该函数设置窗口 window 滚动条的宽度、高度及类型。 若 windownil,则使用选中窗口。

width 指定垂直滚动条的像素宽度(nil 表示使用框架指定宽度)。 vertical-type 指定是否显示垂直滚动条及位置, 可选值为 leftrightt(使用框架默认)和 nil(无垂直滚动条)。

height 指定水平滚动条的像素高度(nil 表示使用框架指定高度)。 horizontal-type 指定是否显示水平滚动条, 可选值为 bottomt(使用框架默认)和 nil(无水平滚动条)。 注意:对于迷你窗口,tnil 含义相同,均表示不显示水平滚动条, 必须显式指定 bottom 才能在迷你窗口显示水平滚动条。

window 尺寸不足以容纳指定尺寸的滚动条, 则对应滚动条设置保持不变。

此处指定的值可能在后续对 window 调用 set-window-buffer (see 缓冲区与窗口) 且其 keep-margins 参数为 nil 或省略时被覆盖。 但若可选第五个参数 persistent 为非 nil 且其他参数处理成功,则此处指定的值将不受后续 set-window-buffer 调用影响。

使用 set-window-scroll-barsset-window-fringes (see 侧边栏尺寸与位置) 的 persistent 参数,可通过在初始化文件开头添加以下代码片段, 可靠且永久地关闭任意迷你窗口的滚动条和/或侧边栏 (see 初始化文件)。

(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)))

以下四个函数的参数为活动窗口,默认为当前选中窗口。

Function: window-scroll-bars &optional window

该函数返回格式为 (width columns vertical-type height lines horizontal-type persistent) 的列表。

width 为垂直滚动条宽度的指定值(可为 nil); columns 为垂直滚动条实际占用的列数(可能经过取整)。

height 为水平滚动条高度的指定值(可为 nil); lines 为水平滚动条实际占用的行数(可能经过取整)。

persistent 为上次成功调用 set-window-scroll-barswindow 指定的值,从未调用则为 nil

Function: window-current-scroll-bars &optional window

该函数返回窗口 window 的滚动条类型。 返回值为 cons 单元格 (vertical-type . horizontal-type)。 与 window-scroll-bars 不同,该函数返回实际使用的滚动条类型, 已综合框架默认值与 scroll-bar-mode

Function: window-scroll-bar-width &optional window

该函数返回窗口 window 垂直滚动条的像素宽度。

Function: window-scroll-bar-height &optional window

该函数返回窗口 window 水平滚动条的像素高度。

若未通过 set-window-scroll-bars 指定窗口的滚动条设置, 则显示缓冲区中缓冲区局部变量 vertical-scroll-barhorizontal-scroll-barscroll-bar-widthscroll-bar-height 控制窗口滚动条。函数 set-window-buffer 会读取这些变量。 若在已显示于窗口的缓冲区中修改这些变量, 可通过对同一缓冲区调用 set-window-buffer 使窗口应用新值。

可通过设置以下变量控制特定缓冲区滚动条的外观, 这些变量在设置时会自动变为缓冲区局部变量。

Variable: vertical-scroll-bar

该变量指定垂直滚动条的位置。 可选值为 leftrightt(使用框架默认)和 nil(无滚动条)。

Variable: horizontal-scroll-bar

该变量指定水平滚动条的位置。 可选值为 bottomt(使用框架默认)和 nil(无滚动条)。

Variable: scroll-bar-width

该变量指定缓冲区垂直滚动条的像素宽度。 值为 nil 时使用框架指定值。

Variable: scroll-bar-height

该变量指定缓冲区水平滚动条的像素高度。 值为 nil 时使用框架指定值。

最后,可通过自定义变量 scroll-bar-modehorizontal-scroll-bar-mode 切换所有框架的滚动条显示。

User Option: scroll-bar-mode

该变量控制所有框架是否显示垂直滚动条及位置。 可选值为 nil(无滚动条)、left(左侧滚动条)和 right(右侧滚动条)。

User Option: horizontal-scroll-bar-mode

该变量控制所有框架是否显示水平滚动条。