Нахождение окна с указанным режимом
Мне нужно программно изменить размер окна, поэтому я не знаю, как:
среди всех окон в текущем фрейме найдите окно, которое работает в указанном режиме, например, "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))