branch: externals/posframe commit e15b39ccf3dc4d6efa41951f28663a4d8736f00c Author: Feng Shu <tuma...@163.com> Commit: Feng Shu <tuma...@163.com>
Add posframe--get-valid-poshandler --- posframe.el | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/posframe.el b/posframe.el index fe33656fd3..fd81d92814 100644 --- a/posframe.el +++ b/posframe.el @@ -829,18 +829,8 @@ of `posframe-show'." posframe--last-posframe-pixel-position (setq posframe--last-poshandler-info info) (let* ((ref-position (plist-get info :ref-position)) - (position - (funcall - (or (plist-get info :poshandler) - (let ((position (plist-get info :position))) - (cond ((integerp position) - #'posframe-poshandler-point-bottom-left-corner) - ((and (consp position) - (integerp (car position)) - (integerp (cdr position))) - #'posframe-poshandler-absolute-x-y) - (t (error "Posframe: have no valid poshandler"))))) - info)) + (poshandler (posframe--get-valid-poshandler info)) + (position (funcall poshandler info)) (x (car position)) (y (cdr position))) (if (not ref-position) @@ -858,6 +848,18 @@ of `posframe-show'." (cons (+ ref-x x) (+ ref-y y))))))) +(defun posframe--get-valid-poshandler (info) + "Get valid poshandler function with the help of INFO." + (or (plist-get info :poshandler) + (let ((position (plist-get info :position))) + (cond ((integerp position) + #'posframe-poshandler-point-bottom-left-corner) + ((and (consp position) + (integerp (car position)) + (integerp (cdr position))) + #'posframe-poshandler-absolute-x-y) + (t (error "Posframe: have no valid poshandler")))))) + (defun posframe--set-frame-position (posframe position parent-frame-width parent-frame-height)