emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/posframe 6d604a7 5/6: * posframe.el (posframe-hide): le


From: Feng Shu
Subject: [elpa] externals/posframe 6d604a7 5/6: * posframe.el (posframe-hide): let posframe-hide can work as buffer-list-update-hook function
Date: Mon, 3 Aug 2020 03:35:29 -0400 (EDT)

branch: externals/posframe
commit 6d604a71deb45295f7b6ff3f98e06aeece9888be
Author: Feng Shu <tumashu@163.com>
Commit: Feng Shu <tumashu@163.com>

    * posframe.el (posframe-hide): let posframe-hide can work as 
buffer-list-update-hook function
---
 posframe.el | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/posframe.el b/posframe.el
index c8106ec..60f7aed 100644
--- a/posframe.el
+++ b/posframe.el
@@ -802,11 +802,16 @@ to do similar job:
 (defun posframe-hide (buffer-or-name)
   "Hide posframe pertaining to BUFFER-OR-NAME.
 BUFFER-OR-NAME can be a buffer or a buffer name."
-  (dolist (frame (frame-list))
-    (let ((buffer-info (frame-parameter frame 'posframe-buffer)))
-      (when (or (equal buffer-or-name (car buffer-info))
-                (equal buffer-or-name (cdr buffer-info)))
-        (posframe--make-frame-invisible frame)))))
+  ;; Make sure buffer-list-update-hook is nil when posframe-hide is
+  ;; called, otherwise:
+  ;;   (add-hook 'buffer-list-update-hook  #'posframe-hide)
+  ;; will lead to infinite recursion.
+  (let ((buffer-list-update-hook nil))
+    (dolist (frame (frame-list))
+      (let ((buffer-info (frame-parameter frame 'posframe-buffer)))
+        (when (or (equal buffer-or-name (car buffer-info))
+                  (equal buffer-or-name (cdr buffer-info)))
+          (posframe--make-frame-invisible frame))))))
 
 (defun posframe-delete (buffer-or-name)
   "Delete posframe pertaining to BUFFER-OR-NAME and kill the buffer.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]