尽可能多地在窗口中显示缓冲区,而不是在缓冲区后显示空白区域

时间:2013-05-13 17:23:06

标签: emacs elisp

可以在窗口中“滚动缓冲区的末尾”。这很有用,因为当缓冲区没有填充用于显示它的窗口的整个区域时,Emacs必须以某种方式使用额外的空间。

然而,有时当整个缓冲区完全适合窗口时,顶部仍未显示,并且在缓冲区内容下方浪费了超出必要的空间以填充可用空间。如果窗口自动滚动显示完整的缓冲区或者它是否尽可能大于窗口,那会更好。

换句话说,窗口显示“缓冲区末端下方”的唯一时间是窗口变大。

是否有这样的模式或选项?

enter image description here

2 个答案:

答案 0 :(得分:1)

编辑:这样的事情?

(add-hook 'post-command-hook 'my-eob-recenter)
(defun my-eob-recenter ()
  (when (pos-visible-in-window-p (point-max))
    (save-excursion
      (goto-char (point-max))
      (recenter -1))))

原始回答:

如果你有一个比它的内容大的窗口而你想缩小它以适应它,那就有一个绑定。

C-x - 运行shrink-window-if-larger-than-buffer

我个人怀疑如果它自动发生会很烦人,但你可以试试这个:

(defadvice split-window (after my-split-window-shrink)
  "Shrink the selected window after a window split
if it is larger than its contents."
  (shrink-window-if-larger-than-buffer))
(ad-activate 'split-window)

答案 1 :(得分:0)

第二个缓冲空间看起来不大,同意了。但是,基本上这种行为是合理的,因为它会让你立刻掌握这种行为。

填充缓冲区不会告诉结束。在大多数情况下,您将在最后继续,或从信号中获取利润。

正如我设想的那样......