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

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

[elpa] externals/posframe ad6c4bc943 1/2: posframe--find-existing-posfra


From: ELPA Syncer
Subject: [elpa] externals/posframe ad6c4bc943 1/2: posframe--find-existing-posframe: Add last-args arguments.
Date: Fri, 7 Jan 2022 06:57:39 -0500 (EST)

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

    posframe--find-existing-posframe: Add last-args arguments.
    
            * posframe.el (posframe--find-existing-posframe): Add last-args 
arguments.
            (posframe--create-posframe): Update.
---
 posframe.el | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/posframe.el b/posframe.el
index 94570ea637..c429a57fe7 100644
--- a/posframe.el
+++ b/posframe.el
@@ -207,7 +207,8 @@ ACCEPT-FOCUS."
       ;; existing posframe first if possible.
       (unless (or posframe--frame posframe--last-args)
         (setq-local posframe--frame
-                    (posframe--find-existing-posframe buffer-or-name))
+                    (posframe--find-existing-posframe
+                     buffer-or-name args))
         (setq-local posframe--last-args args))
 
       ;; Create child-frame
@@ -264,6 +265,7 @@ ACCEPT-FOCUS."
                        (inhibit-double-buffering . 
,posframe-inhibit-double-buffering)
                        ;; Do not save child-frame when use desktop.el
                        (desktop-dont-save . t))))
+        (set-frame-parameter posframe--frame 'last-args args)
         (when border-color
          (set-face-background
            (if (facep 'child-frame-border)
@@ -1014,13 +1016,18 @@ BUFFER-OR-NAME can be a buffer or a buffer name."
               (cancel-timer timer)))))
       (delete-frame posframe))))
 
-(defun posframe--find-existing-posframe (buffer-or-name)
-  "Find existing posframe of BUFFER-OR-NAME."
+(defun posframe--find-existing-posframe (buffer-or-name &optional last-args)
+  "Find existing posframe with BUFFER-OR-NAME and LAST-ARGS."
   (cl-find-if
    (lambda (frame)
-     (let ((buffer-info (frame-parameter frame 'posframe-buffer)))
-       (or (equal buffer-or-name (car buffer-info))
-           (equal buffer-or-name (cdr buffer-info)))))
+     (let* ((buffer-info (frame-parameter frame 'posframe-buffer))
+            (buffer-equal-p
+             (or (equal buffer-or-name (car buffer-info))
+                 (equal buffer-or-name (cdr buffer-info)))))
+       (if last-args
+           (and buffer-equal-p
+                (equal last-args (frame-parameter frame 'last-args)))
+         buffer-equal-p)))
    (frame-list)))
 
 (defun posframe--kill-buffer (buffer-or-name)



reply via email to

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