显式设置Emacs窗口的大小

时间:2013-08-25 19:36:21

标签: emacs compilation height elisp

如何(或尝试)将Emacs窗口的窗口大小(不是帧大小)设置为特定值?我知道Emacs的功能适合内容,但没有一个允许我设置一个确切的高度。我知道如果沿着我正在调整的尺寸存在其他窗口,我只能这样做。我需要这个来自动调整我的编译缓冲区中的高度(当然是高达某个阈值,比如说frame-height()的2/3)到编译器/解释器输出的消息行数。

到目前为止我已经

  (balance-windows (get-buffer-window compilation-buffer))
  (fit-window-to-buffer (get-buffer-window compilation-buffer)
                        (/ (frame-height) 2))

但由于某种原因,当编译窗口很小时,第一个语句无效。也就是说,当编译窗口太大时代码可以正常工作,但是当编译窗口太小时,代码就不能正常工作。

1 个答案:

答案 0 :(得分:3)

  1. 获取要更改的窗口的当前高度。
  2. 计算当前高度所需的变化:delta。
  3. 将增量传递给enlarge-window
  4. 如,

    (let* ((curr-ht  (window-height window))
           (delta    (- DESIRED-HEIGHT curr-ht)))
      (save-excursion
        (save-selected-window (select-window window)
                              (enlarge-window delta))))