[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)