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

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

[elpa] externals/posframe 59911917d5: add posframe-poshandler-frame-top-


From: ELPA Syncer
Subject: [elpa] externals/posframe 59911917d5: add posframe-poshandler-frame-top-left-or-right-other-corner
Date: Thu, 1 Jun 2023 12:59:50 -0400 (EDT)

branch: externals/posframe
commit 59911917d57f77577e1aa6df7584fa00636de84a
Author: JJPandari <airbrownie@hotmail.com>
Commit: tumashu <tumashu@163.com>

    add posframe-poshandler-frame-top-left-or-right-other-corner
---
 posframe.el | 50 +++++++++++++++++++++++++++++++++++---------------
 1 file changed, 35 insertions(+), 15 deletions(-)

diff --git a/posframe.el b/posframe.el
index 32f730c83b..db26dd143b 100644
--- a/posframe.el
+++ b/posframe.el
@@ -217,21 +217,22 @@ The builtin poshandler functions are listed below:
 2.  `posframe-poshandler-frame-top-center'
 3.  `posframe-poshandler-frame-top-left-corner'
 4.  `posframe-poshandler-frame-top-right-corner'
-5.  `posframe-poshandler-frame-bottom-center'
-6.  `posframe-poshandler-frame-bottom-left-corner'
-7.  `posframe-poshandler-frame-bottom-right-corner'
-8.  `posframe-poshandler-window-center'
-9.  `posframe-poshandler-window-top-center'
-10. `posframe-poshandler-window-top-left-corner'
-11. `posframe-poshandler-window-top-right-corner'
-12. `posframe-poshandler-window-bottom-center'
-13. `posframe-poshandler-window-bottom-left-corner'
-14. `posframe-poshandler-window-bottom-right-corner'
-15. `posframe-poshandler-point-top-left-corner'
-16. `posframe-poshandler-point-bottom-left-corner'
-17. `posframe-poshandler-point-bottom-left-corner-upward'
-18. `posframe-poshandler-point-window-center'
-19. `posframe-poshandler-point-frame-center'
+5.  `posframe-poshandler-frame-top-left-or-right-other-corner'
+6.  `posframe-poshandler-frame-bottom-center'
+7.  `posframe-poshandler-frame-bottom-left-corner'
+8.  `posframe-poshandler-frame-bottom-right-corner'
+9.  `posframe-poshandler-window-center'
+10.  `posframe-poshandler-window-top-center'
+11. `posframe-poshandler-window-top-left-corner'
+12. `posframe-poshandler-window-top-right-corner'
+13. `posframe-poshandler-window-bottom-center'
+14. `posframe-poshandler-window-bottom-left-corner'
+15. `posframe-poshandler-window-bottom-right-corner'
+16. `posframe-poshandler-point-top-left-corner'
+17. `posframe-poshandler-point-bottom-left-corner'
+18. `posframe-poshandler-point-bottom-left-corner-upward'
+19. `posframe-poshandler-point-window-center'
+20. `posframe-poshandler-point-frame-center'
 
  (3) POSHANDLER-EXTRA-INFO
 
@@ -1281,6 +1282,25 @@ The structure of INFO can be found in docstring of
 `posframe-show'."
   '(-1 . 0))
 
+(defun posframe-poshandler-frame-top-left-or-right-other-corner (info)
+  "Posframe's position handler.
+
+This poshandler function let posframe align to top left or top right corner of 
frame,
+based on whether current window is relatively at left or right in the current 
frame.
+If window is at left, place posframe on right, and vice versa.
+(This is calculated by whether current window center is left or right to frame 
center)
+
+The structure of INFO can be found in docstring of
+`posframe-show'."
+  (let ((window-left (plist-get info :parent-window-left))
+        (window-width (plist-get info :parent-window-width))
+        (frame-width (plist-get info :parent-frame-width)))
+    ;; when equal, put posframe on right because content in window tend to be 
on left
+    (if (<= (+ window-left (/ window-width 2))
+            (/ frame-width 2))
+        '(-1 . 0)
+      '(0 . 0))))
+
 (defun posframe-poshandler-frame-bottom-left-corner (info)
   "Posframe's position handler.
 



reply via email to

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