¿Cómo saber el estado visible / enfocado de mi búfer?

16

Estoy escribiendo una extensión que se dirige a un proceso externo, por lo que es un hecho reducir la cantidad de solicitudes de 'hey whats up' cuando mi búfer no está enfocado.

Entonces, ¿cuál es la mejor manera de reconocer:

  1. Cuando mi buffer es visible y enfocado
  2. Cuando mi buffer es visible pero no enfocado
  3. Cuando mi buffer no es visible ni enfocado
Łukasz Gruner
fuente
Pregunta aclaratoria: ¿quiere decir "cómo reconoce el proceso externo " estas características?
Dan
@ Dan, creo que tiene una función que se ejecuta como un temporizador inactivo y necesita saber de esta función.
Malabarba

Respuestas:

24
  • window-buffer devuelve el búfer que se muestra actualmente en una ventana determinada.

  • get-buffer-window, por el contrario, devuelve una ventana que muestra actualmente el búfer dado (o nilsi no existe dicha ventana; juegue con el segundo argumento opcional para indicarle cómo comportarse en los casos en que tiene varios cuadros).

Con estos dos ingredientes, debería poder discriminar todos sus casos:

;; 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")))
François Févotte
fuente