Emacs中出现模式挂钩的奇怪行为

时间:2014-01-04 09:40:24

标签: emacs elisp

我正在尝试调整occur-mode缓冲区窗口的大小以适应其缓冲区的内容。

有关详细信息,请参阅Resize occur window in Emacs

我添加了以下钩子:

(add-hook 'occur-mode-hook
       (lambda ()
         (save-selected-window
           (pop-to-buffer "*Occur*")
       (message-box "ok")
       (fit-window-to-buffer nil 10))))

然后我有以下缓冲区窗口:

enter image description here

我现在执行(occur "test"),它首先给我

enter image description here

按下“确定”按钮后我得到了

enter image description here

请注意,发生的窗口已缩小为帧底部的单行高度。这显然不是我想要的......

我现在再次在“t.txt”缓冲区中输入(occur "test"),按“确定”到消息框后,我得到以下内容:

enter image description here

所以现在它突然完美无缺。为什么这不是第一次工作?

2 个答案:

答案 0 :(得分:2)

这有效:

(defadvice occur (after occur-advice activate)
  "Resize window."
  (save-selected-window
    (pop-to-buffer "*Occur*")
    (fit-window-to-buffer nil 10)))

答案 1 :(得分:0)

IIUC,重要的一部分是在fit-window-to-buffer内保持对save-selected-window的号召。