查找具有指定模式的窗口

时间:2016-06-05 02:23:41

标签: emacs elisp emacs25

我需要以编程方式调整窗口大小,所以我不知道如何:

当前帧中的所有窗口中找到一个正在运行指定模式的窗口,例如“dired”。

让我们说,我有:

|-------+------------+-----|
| Dired | Emacs-lisp | Org |
|       | -x-        |     |
|       |            |     |
|-------+------------+-----|

(点在第二个窗口)现在我需要以编程方式找到具有Dired模式的窗口(注意它可以在任何位置)并调整其宽度。

为了调整宽度,我知道我可以使用类似的东西:

(defun fit-w ()
  (let ((fit-window-to-buffer-horizontally t))
(fit-window-to-buffer)))

但首先我需要检测窗口

1 个答案:

答案 0 :(得分:1)

这也可以以更具声明性/功能性的方式完成。如果找不到,则使用dired-modenil返回当前窗口缓冲区的第一个窗口:

(cl-find-if
 (lambda (window)
   (with-current-buffer (window-buffer window) (eq major-mode 'dired-mode)))
 (window-list))