2013-08-25 2 views
2

Как мне (или попытаться) установить размер окна (а не размер кадра) окна Emacs для определенного значения? Я знаю функции Emacs для подгонки к контенту, но ни один из них не позволяет установить точную высоту. Я знаю, что я могу сделать это только в том случае, если существуют другие окна по измеренным параметрам. Мне нужно это, чтобы автоматически адаптировать высоту в моем буфере компиляции (до определенного порога, скажем, 2/3 из frame-height()) к числу строк сообщений, выводимых компилятором/интерпретатором.Явное определение размера окна 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))))