如何知道缓冲区的可见/聚焦状态?


16

我正在编写一个与外部进程进行对话的扩展,因此可以在缓冲区不集中时降低“嘿”消息的请求量。

那么,什么是最好的识别方法:

  1. 当我的缓冲区可见并集中时
  2. 当我的缓冲区可见但不集中时
  3. 当我的缓冲区既不可见也不集中时

澄清的问题:您的意思是“ 外部过程如何识别”这些特征?

@丹我认为他有一个正在作为空闲计时器运行的功能,需要从该功能中了解。
马拉巴巴

Answers:


24
  • window-buffer 返回给定窗口当前显示的缓冲区。

  • get-buffer-window相反,返回当前显示给定缓冲区窗口(或者nil如果没有这样的窗口;请使用可选的2nd参数告诉它在有多个帧的情况下如何工作)。

使用这两种成分,您应该可以区分所有情况:

;; my-buffer is supposed to be the buffer you are looking for
(cond ((eq my-buffer (window-buffer (selected-window)))
       (message "Visible and focused"))
      ((get-buffer-window my-buffer)
       (message "Visible and unfocused")) 
      (t
       (message "Not visible")))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.