Emacs - 如何收集信息并删除窗口而不选择它

时间:2014-03-21 15:08:09

标签: emacs elisp

我正在寻找一些帮助,请收集有关特定窗口的一些信息而不必选择它,然后在符合指定条件的情况下删除该窗口。

以下代码片段仅在选择了目标窗口时才有效,但是,无论窗口有焦点,我都希望该函数能够运行。

  
(defconst lawlist-calendar-buffer "*Calendar*"
  "Name of the buffer used for the lawlist-calendar.")

(if
    (and
      (get-buffer-window lawlist-calendar-buffer (selected-frame))
      (with-current-buffer (get-buffer lawlist-calendar-buffer)
        (eq (window-height) 12)))
  (delete-window (get-buffer-window lawlist-calendar-buffer (selected-frame))))

1 个答案:

答案 0 :(得分:1)

尝试以下代码

(let ((target-window (get-buffer-window "*Calendar*")))
  (when (and target-window
             (eq (window-height target-window) 12))
    (delete-window target-window)))

如果缓冲区在当前帧中不可见,则函数get-buffer-window将返回nil。函数window-height传递给现有窗口,它返回窗口的高度。上面的代码结合了这两个函数来删除缓冲区*Calendar*打开的窗口,如果窗口的高度等于12。