Как и в случае с вопросом, мне бы хотелось, чтобы функция подсчитывала количество окон, которые в данный момент отображаются в этом кадре.
Итак, это:
+--------------+-------------+
| | |
| | |
| *scratch* | *Messages* |
| | |
| | |
| | |
+--------------+-------------+
| *Help* |
| |
+----------------------------+
Вернется => 3
Я запустил функцию ниже:
(defun count-windows ()
"Count how many buffers are currently being shown."
(interactive)
)
*scratch*
, вы хотите, чтобы функция возвращала 3 или 2?count-windows
).Ответы:
Если вы имеете в виду количество окон независимо от того, какие буферы отображаются, то:
(length (window-list))
сделаем это. Более того, вы можете просто использовать существующую(count-windows)
функцию.Если вы хотите посчитать количество уникальных буферов, видимых в окнах на фрейме, вы можете использовать:
(Обратите внимание, что
window-list
также может принимать необязательный аргумент FRAME, если вы хотите что-то, кроме выбранного кадра.)Заключение последнего в ваш вызов функции даст вам:
(Обратите внимание, что эта функция предполагает, что вы загрузили
'cl-lib
. Согласно комментариям, вы можете использоватьdelete-dups
вместо,cl-delete-duplicates
если вы хотите избежатьcl-lib
.)источник
cl-delete-duplicates
должно быть доступно с помощьюrequire
ingcl
.'cl-lib
?delete-dups
это тоже сработает и не требует cl-lib.