summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mendler <mail@daniel-mendler.de>2022-12-05 08:23:00 +0100
committerDaniel Mendler <mail@daniel-mendler.de>2022-12-05 08:23:48 +0100
commit14d4179caa9c1b335b67fe16bc0bb5427c757912 (patch)
treefecfe42460d2b4ac9c94aa6f45e6f715dbaf2464
parent6240888105377be8c37ea5a118567a138a8e33a4 (diff)
corfu-popupinfo: Align popups at the bottom, if above input (Fix #271, Fix #272)
-rw-r--r--extensions/corfu-popupinfo.el13
1 files changed, 8 insertions, 5 deletions
diff --git a/extensions/corfu-popupinfo.el b/extensions/corfu-popupinfo.el
index 89975c2..d0cee7b 100644
--- a/extensions/corfu-popupinfo.el
+++ b/extensions/corfu-popupinfo.el
@@ -287,18 +287,21 @@ form (X Y WIDTH HEIGHT DIR)."
(`(,_pfx ,_pfy ,pfw ,pfh)
(corfu-popupinfo--frame-geometry (frame-parent corfu--frame)))
(`(,cfx ,cfy ,cfw ,cfh) (corfu-popupinfo--frame-geometry corfu--frame))
+ ;; Candidates popup below input
+ (below (>= cfy (+ lh (cadr (window-inside-pixel-edges))
+ (window-tab-line-height)
+ (or (cdr (posn-x-y (posn-at-point (point)))) 0))))
;; Left display area
- (al (list (max 0 (- cfx (car ps) border)) cfy
+ (ahy (if below cfy (- (+ cfy cfh) (cdr ps) border border)))
+ (al (list (max 0 (- cfx (car ps) border)) ahy
(min (- cfx border) (car ps)) (cdr ps) 'left))
;; Right display area
(arx (+ cfx cfw (- border)))
- (ar (list arx cfy (min (- pfw arx border border) (car ps))
+ (ar (list arx ahy (min (- pfw arx border border) (car ps))
(cdr ps) 'right))
;; Vertical display area
(avw (min (car ps) (- pfw cfx border border)))
- (av (if (>= cfy (+ lh (cadr (window-inside-pixel-edges))
- (window-tab-line-height)
- (or (cdr (posn-x-y (posn-at-point (point)))) 0)))
+ (av (if below
(list cfx (+ cfy cfh (- border)) avw (min (- pfh cfy cfh border) (cdr ps)) 'vertical)
(let ((h (min (- cfy border border) (cdr ps))))
(list cfx (max 0 (- cfy h border)) avw h 'vertical)))))