本节介绍在不改变框架大小的前提下调整窗口大小的函数。由于活动窗口互不重叠,这些函数仅在包含两个或更多窗口的框架上才有意义:调整一个窗口的大小同时也会改变至少一个其他窗口的大小。如果一个框架上只有一个窗口,则无法改变其大小,除非同时调整框架大小(see 框架尺寸)。
除特别注明外,这些函数也接受内部窗口作为参数。调整一个内部窗口的大小会使其子窗口随之适配相同空间。
该函数在窗口 window 可以垂直缩放 delta 行时返回 delta。如果可选参数 horizontal 为非 nil,则在窗口可水平缩放 delta 列时返回 delta。该函数**不会**实际改变窗口大小。
如果 window 为 nil,则默认为选中窗口。
delta 为正值表示检查窗口是否可以放大对应行数或列数;为负值表示检查是否可以缩小对应行数或列数。如果 delta 非零而返回值为 0,表示该窗口无法缩放。
通常,变量 window-min-height 和 window-min-width 指定了窗口允许的最小尺寸(see 窗口尺寸)。但如果可选参数 ignore 为非 nil,该函数会忽略上述两个变量以及 window-size-fixed。此时,窗口最小高度为上下装饰区域高度加一行文本;最小宽度为左右装饰区域宽度加两列文本宽度。
如果可选参数 pixelwise 为非 nil,delta 按像素计算。
该函数按 delta 增量调整窗口 window 的大小。如果 horizontal 为 nil,则按行调整高度;否则按列调整宽度。delta 为正表示放大窗口,为负表示缩小。
如果 window 为 nil,默认为选中窗口。如果无法按要求调整窗口大小,会抛出错误。
可选参数 ignore 含义与上述 window-resizable 相同。
如果可选参数 pixelwise 为非 nil,delta 按像素计算。
该函数调整窗口哪一侧边缘,取决于选项 window-combination-resize 的值以及相关窗口的组合限制;某些情况下可能同时调整两侧边缘。See 重组窗口。若只想移动窗口下边缘或右边缘来调整大小,使用函数 adjust-window-trailing-edge。
该函数将窗口 window 的下边缘移动 delta 行。如果可选参数 horizontal 为非 nil,则将右边缘移动 delta 列。如果 window 为 nil,默认为选中窗口。
如果可选参数 pixelwise 为非 nil,delta 按像素计算。
delta 为正表示边缘向下或向右移动;为负表示向上或向左移动。如果无法移动到 delta 指定的距离,函数会尽可能移动但不报错。
该函数会尝试调整被移动边缘相邻窗口的大小。如果因某种原因无法调整(例如相邻窗口为固定尺寸),则可能调整其他窗口。
如果该选项值为非 nil,Emacs 以像素为单位调整窗口大小。目前会影响的函数包括 split-window(see 拆分窗口)、maximize-window、minimize-window、fit-window-to-buffer、fit-frame-to-buffer 以及 shrink-window-if-larger-than-buffer(均见下文)。
注意,当框架的像素尺寸不是字符尺寸的整数倍时,即使该选项为 nil,至少也会有一个窗口按像素调整大小。默认值为 nil。
下列命令以更具体的方式调整窗口大小。交互式调用时,它们作用于选中窗口。
该命令调整窗口 window 的高度或宽度以适配其中的文本。如果成功调整窗口大小则返回非 nil,否则返回 nil。如果 window 被省略或为 nil,默认为选中窗口;否则必须为活动窗口。
如果窗口属于垂直组合,该函数调整其高度。新高度根据缓冲区可访问部分的实际高度计算。可选参数 max-height(非 nil 时)指定窗口可被设置的最大总高度。可选参数 min-height(非 nil 时)指定最小总高度,会覆盖变量 window-min-height。max-height 和 min-height 均以行为单位,并包含窗口的上下装饰区域。
如果窗口属于水平组合,且选项 fit-window-to-buffer-horizontally(见下文)的值为非 nil,该函数调整窗口宽度。新宽度根据窗口当前起始位置之后缓冲区行的最大长度计算。可选参数 max-width 指定最大宽度,默认为窗口所在框架的宽度。min-width 指定最小宽度,默认为 window-min-width。二者均以列为单位,并包含窗口的左右装饰区域。
可选参数 preserve-size 为非 nil 时,会设置一个参数以在后续调整操作中保留该窗口大小(see 保留窗口尺寸)。
如果选项 fit-frame-to-buffer(见下文)为非 nil,该函数会通过调用 fit-frame-to-buffer(见下文)尝试调整窗口所在框架以适配内容。
如果该选项为非 nil,fit-window-to-buffer 可以水平调整窗口大小。若为 nil(默认),则永远不会水平调整。若为 only,则**仅**水平调整。其他值表示可在两个方向上调整窗口大小。
如果该选项为非 nil,fit-window-to-buffer 可以让框架适配其缓冲区。框架仅在其根窗口为活动窗口且该选项非 nil 时才会被适配。若为 horizontally,则仅水平适配;若为 vertically,则仅垂直适配;其他非 nil 值表示可在两个方向上调整框架大小。
如果框架只显示一个窗口,可以使用命令 fit-frame-to-buffer 让框架直接适配缓冲区。
该命令调整框架 frame 的大小,使其恰好显示缓冲区内容。frame 可以是任意活动框架,默认为选中框架。仅当框架根窗口为活动窗口时才会执行适配。
参数 max-height、min-height、max-width、min-width 非 nil 时,指定框架根窗口新主体尺寸的上下限。这些参数会覆盖下文所述 fit-frame-to-buffer-sizes 中的对应值。
如果可选参数 only 为 vertically,函数仅垂直调整框架大小;若为 horizontally,则仅水平调整。
fit-frame-to-buffer 的行为可通过下面两个选项控制。
该选项用于指定 fit-frame-to-buffer 适配框架时四周保留的边距。这些边距可避免调整后的框架遮挡任务栏或父框架的部分区域。
它指定框架左、上、右、下四个方向应保留的自由像素数。默认均为 nil,表示不留边距。特定框架可通过自身的 fit-frame-to-buffer-margins 参数覆盖该全局设置。
该选项为 fit-frame-to-buffer 指定尺寸边界。它指定所有要适配缓冲区的框架,其根窗口主体的最大/最小行数和最大/最小列数。该选项的值会被 fit-frame-to-buffer 对应非 nil 参数覆盖。
该命令尝试在仍能完整显示缓冲区内容的前提下,尽可能缩小窗口 window 的高度,但不小于 window-min-height 规定的行数。如果窗口被调整则返回非 nil,否则返回 nil。如果 window 被省略或为 nil,默认为选中窗口;否则必须为活动窗口。
如果窗口本身已不足以显示全部缓冲区、缓冲区内容有滚出屏幕的部分,或该窗口是框架内唯一活动窗口,该命令不执行任何操作。
该命令通过调用 fit-window-to-buffer(见上文)完成工作。
该函数按一定规则平衡窗口大小,为全宽和/或全高窗口分配更多空间。如果 window-or-frame 指定一个框架,则平衡该框架上所有窗口;如果指定一个窗口,则仅平衡该窗口与其兄弟窗口(see 窗口与框架)。
该函数尝试让选中框架上所有窗口占据大致相同的屏幕区域。全宽或全高窗口不会比其他窗口获得更多空间。
该函数尝试让窗口 window 在不调整框架大小、不删除其他窗口的前提下,在两个方向上尽可能放大。如果 window 被省略或为 nil,默认为选中窗口。
该函数尝试让窗口 window 在不删除自身、不调整框架大小的前提下,在两个方向上尽可能缩小。如果 window 被省略或为 nil,默认为选中窗口。