2013-08-25 118 views
2

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

到目前为止,我有

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

,但由于某种原因,第一条语句没有任何效果,当编辑窗口很小。这就是代码在编译窗口过大时能够正常工作,但在编译窗口过小时却不能正常工作。

回答

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

例如,

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