Як дізнатися видимий / зосереджений стан мого буфера?


16

Я пишу розширення, яке розмовляє із зовнішнім процесом, тому воно дає можливість зменшити кількість запитів на "ей, що", коли мій буфер не зосереджений.

Отже, який найкращий спосіб розпізнати:

  1. Коли мій буфер видно і зосереджено
  2. Коли мій буфер видно, але не зосереджений
  3. Коли мій буфер ні видно, ні зосереджено

Уточнююче запитання: ви маєте на увазі "як зовнішній процес розпізнає" ці характеристики?
Дан

@Dan Я думаю, що у нього функція, яка запускається в режимі очікування, і це потрібно знати з цієї функції.
Малабарба

Відповіді:


24
  • window-buffer повертає буфер, що відображається в даному вікні.

  • get-buffer-window, Навпаки, повертається в вікно , яке відображає в даний час даний буфер (або , nilякщо немає такого вікна, гра з додатковим 2 - й аргумент , щоб сказати йому , як вести себе в тих випадках , коли у вас є кілька кадрів).

За допомогою цих двох інгредієнтів ви маєте змогу розмежувати всі ваші випадки:

;; 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")))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.