Làm thế nào để biết trạng thái tập trung / hiển thị của bộ đệm của tôi?


16

Tôi đang viết một phần mở rộng nói về một quy trình bên ngoài, vì vậy nó được đưa ra để giảm lượng yêu cầu 'hey whats up' khi bộ đệm của tôi không tập trung.

Vì vậy, cách tốt nhất để nhận ra là gì:

  1. Khi bộ đệm của tôi hiển thị và tập trung
  2. Khi bộ đệm của tôi hiển thị nhưng không tập trung
  3. Khi bộ đệm của tôi không nhìn thấy cũng không tập trung

Làm rõ câu hỏi: bạn có nghĩa là "làm thế nào quá trình bên ngoài nhận ra" những đặc điểm này?
Dân

@Dan Tôi nghĩ rằng anh ta có một chức năng đang chạy như một bộ đếm thời gian nhàn rỗi, và cần biết từ chức năng này.
Malabarba

Câu trả lời:


24
  • window-buffer trả về bộ đệm hiện được hiển thị bởi một cửa sổ nhất định.

  • get-buffer-window, ngược lại, trả về một cửa sổ hiện đang hiển thị bộ đệm đã cho (hoặc nilnếu không có cửa sổ đó; hãy chơi với đối số thứ 2 tùy chọn để cho nó biết cách ứng xử trong trường hợp bạn có nhiều khung).

Với hai thành phần này, bạn sẽ có thể phân biệt tất cả các trường hợp của bạn:

;; 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")))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.