Нахождение окна с указанным режимом

Мне нужно программно изменить размер окна, поэтому я не знаю, как:

среди всех окон в текущем фрейме найдите окно, которое работает в указанном режиме, например, "dired".

скажем, у меня есть:

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

(с точкой, находящейся во втором окне), теперь мне нужно программно найти окно с режимом Dired (обратите внимание, что оно может быть в любой позиции) и отрегулировать его ширину.

Я знаю, что для настройки ширины я могу использовать что-то вроде:

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

но сначала мне нужно обнаружить окно

1 ответ

Это также может быть сделано более декларативным / функциональным способом. Вернуть первое окно текущих оконных буферов используя dired-mode или же nilесли не найдено:

(cl-find-if
 (lambda (window)
   (with-current-buffer (window-buffer window) (eq major-mode 'dired-mode)))
 (window-list))
Другие вопросы по тегам