请问一下有什么方式可以判断某个窗口在minibuffer上方

像上面的各个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)的结果比较一下就知道。