emacs - 尽可能使缓冲区在窗口中可见,而不是在缓冲区后显示空白区域

标签 emacs elisp

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

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

换句话说,窗口显示“缓冲区结束以下”的唯一时间是窗口太大。

有没有一种模式或选项可以做到这一点?

enter image description here

最佳答案

编辑:所以像这样的东西?

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

原答案:

如果您有一个大于其内容的窗口,并且您想将其缩小以适应,则有一个绑定(bind)。

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)

关于emacs - 尽可能使缓冲区在窗口中可见,而不是在缓冲区后显示空白区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16527669/

相关文章:

r - 尽管有.Rprofile,但ESS-R“没有历史可保存”

emacs - 如何在 emacs org-mode 中将函数限制为子树?

sqlite - 如何使用elisp创建一个sqlite特定的shell?

emacs - 指定 elisp 命令的输出窗口

emacs - 如何让 Emacs 按键绑定(bind)识别大写字母?

Emacs - evil-mode 导致 eldoc 模式闪烁

vim - 如何在 Vim 中模拟 Emacs 的转置词?

emacs - 在Emacs组织模式下以粗体和斜体标记

emacs - 在 Emacs 中异步运行命令,但以增量方式显示输出

emacs - 使用书签打开文件但始终在给定位置