branch: externals/posframe
commit 962520d5da6f70dbaf350590178b6ea838908752
Author: Naofumi Yasufuku <naof...@yasufuku.dev>
Commit: tumashu <tuma...@163.com>

    Check if given BUFFER-OR-NAME is non-nil in posframe-hide
    
    posframe-hide should not attempt to make non-posframe frames
    invisible.
    
    Debugger entered--Lisp error: (error "Attempt to make invisible the sole 
visible or icon...")
      posframe--make-frame-invisible(#<frame *scratch* 0x1489bb230>)
      posframe-hide(nil)
      vertico-posframe-mode(0)
      ...
---
 posframe.el | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/posframe.el b/posframe.el
index 206ab83478..c3b8251206 100644
--- a/posframe.el
+++ b/posframe.el
@@ -1037,12 +1037,13 @@ BUFFER-OR-NAME can be a buffer or a buffer name."
   ;; 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))))))
+  (when buffer-or-name
+    (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-hidehandler-daemon ()
   "Run posframe hidehandler daemon."

Reply via email to