จะรู้สถานะของบัฟเฟอร์ที่มองเห็น / ได้อย่างไร


16

ฉันกำลังเขียนส่วนขยายที่พูดถึงกระบวนการภายนอกดังนั้นจึงเป็นการกำหนดให้ลดจำนวนคำขอ 'hey whats up' เมื่อบัฟเฟอร์ของฉันไม่ได้โฟกัส

ดังนั้นวิธีที่ดีที่สุดในการรับรู้คืออะไร:

  1. เมื่อบัฟเฟอร์ของฉันสามารถมองเห็นและมุ่งเน้น
  2. เมื่อบัฟเฟอร์ของฉันสามารถมองเห็นได้ แต่ไม่ได้โฟกัส
  3. เมื่อบัฟเฟอร์ของฉันไม่สามารถมองเห็นหรือไม่โฟกัส

คำถามที่ทำให้กระจ่าง: คุณหมายถึง " กระบวนการภายนอกรู้จัก" ลักษณะเหล่านี้อย่างไร
แดน

@ ฉันคิดว่าเขามีฟังก์ชั่นที่กำลังทำงานเป็นตัวจับเวลาว่างและจำเป็นต้องรู้จากฟังก์ชั่นนี้
Malabarba

คำตอบ:


24
  • window-buffer ส่งคืนบัฟเฟอร์ที่แสดงในปัจจุบันโดยหน้าต่างที่กำหนด

  • get-buffer-windowในทางตรงกันข้ามกลับหน้าต่างปัจจุบันแสดงบัฟเฟอร์ที่กำหนด (หรือถ้าไม่มีหน้าต่างดังกล่าวเล่นกับอาร์กิวเมนต์ 2 ตัวเลือกที่จะบอกว่าวิธีการปฏิบัติตนในกรณีที่คุณมีเฟรมหลาย)nil

ด้วยส่วนผสมสองอย่างนี้คุณควรแยกแยะกรณีของคุณทั้งหมด:

;; 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")))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.