バッファの表示/フォーカス状態を知る方法は?


16

私は外部プロセスと通信する拡張機能を書いているので、バッファがフォーカスされていないときの「ちょっと元気」のリクエストの量を減らすことは当然のことです。

だから、認識するための最良の方法は何ですか:

  1. バッファが表示されフォーカスされているとき
  2. バッファーは表示されているがフォーカスされていない場合
  3. バッファーが表示もフォーカスもされていないとき

明確な質問:これらの特性を「外部プロセスはどのように認識するか」という意味ですか?
ダン

@Danアイドルタイマーとして実行される関数があり、この関数から知る必要があると思います。
マラバルバ

回答:


24
  • window-buffer 指定されたウィンドウに現在表示されているバッファを返します。

  • get-buffer-window反対に、指定されたバッファを現在表示しているウィンドウを返します(またはnil、そのようなウィンドウがない場合、オプションの2番目の引数を使用して、複数のフレームがある場合の動作を指示します)。

これらの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")))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.