Come sapere lo stato visibile / focalizzato del mio buffer?


16

Sto scrivendo un'estensione che parla a un processo esterno, quindi è un dato di fatto ridurre la quantità di richieste 'hey whats up' quando il mio buffer non è focalizzato.

Quindi, qual è il modo migliore per riconoscere:

  1. Quando il mio buffer è visibile e focalizzato
  2. Quando il mio buffer è visibile ma non focalizzato
  3. Quando il mio buffer non è né visibile né focalizzato

Domanda di chiarimento: intendi "in che modo il processo esterno riconosce" queste caratteristiche?
Dan

@Dan Penso che abbia una funzione in esecuzione come timer inattivo, e deve sapere da questa funzione.
Malabarba,

Risposte:


24
  • window-buffer restituisce il buffer attualmente visualizzato da una determinata finestra.

  • get-buffer-window, al contrario, restituisce una finestra che attualmente mostra il buffer dato (o nilse non esiste tale finestra; gioca con il secondo argomento opzionale per dirgli come comportarsi nei casi in cui hai più frame).

Con questi due ingredienti, dovresti essere in grado di discriminare tutti i tuoi casi:

;; 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")))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.