Comment connaître l'état visible / ciblé de mon tampon?

16

J'écris une extension qui parle à un processus externe, il est donc normal de réduire le nombre de demandes `` hey whats up '' lorsque mon tampon n'est pas concentré.

Alors, quelle est la meilleure façon de reconnaître:

  1. Quand mon tampon est visible et concentré
  2. Quand mon tampon est visible mais pas focalisé
  3. Quand mon tampon n'est ni visible ni focalisé
Łukasz Gruner
la source
Question de clarification: voulez-vous dire "comment le processus extérieur reconnaît-il" ces caractéristiques?
Dan
@Dan Je pense qu'il a une fonction qui s'exécute comme un temporisateur inactif, et a besoin de savoir de cette fonction.
Malabarba

Réponses:

24
  • window-buffer renvoie le tampon actuellement affiché par une fenêtre donnée.

  • get-buffer-window, au contraire, retourne une fenêtre affichant actuellement le tampon donné (ou nils'il n'y a pas une telle fenêtre; jouez avec le 2ème argument optionnel pour lui dire comment se comporter dans les cas où vous avez plusieurs images).

Avec ces deux ingrédients, vous devriez pouvoir discriminer tous vos cas:

;; 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
la source