像上面的各个window,2,5,6在minibuffer上方且与minibuffer接触,其它window则不接触,请问如何从(window-list)
中筛选出2,5,6这三个window呢
为啥要有这种需求啊
主要是想要关闭除2,5,6以外的window的mode-line
办法应该有很多,文档很多 API,比如 window-in-direction 'below 就可以判断,查看文档。
window-in-direction
这个函数我有用过,但它最多只会返回一个window
(window-in-direction 'above (minibuffer-window))
可以拿root window然后看它的子窗口的位置。用window-tree
或者可以用(window-in-direction 'above (minibuffer-window))
然后看它的siblings。用window-next-sibling
。
底下没其它窗口的不就等于在mnibuffer上?
–
(seq-filter
(lambda (w) (not (window-in-direction 'below w)))
(window-list))
;; => (#<window 229 on *scratch*> #<window 250 on *Messages*>)
窗口底边界像素和框架底边界的一比就知道了要不就用窗口树,具体看手册
正好搞过类似的,如楼上所说,把(window-absolute-pixel-edges)
和(frame-edges)
的结果比较一下就知道。