diff options
| author | Daniel Mendler <mail@daniel-mendler.de> | 2022-12-05 08:23:00 +0100 |
|---|---|---|
| committer | Daniel Mendler <mail@daniel-mendler.de> | 2022-12-05 08:23:48 +0100 |
| commit | 14d4179caa9c1b335b67fe16bc0bb5427c757912 (patch) | |
| tree | fecfe42460d2b4ac9c94aa6f45e6f715dbaf2464 | |
| parent | 6240888105377be8c37ea5a118567a138a8e33a4 (diff) | |
corfu-popupinfo: Align popups at the bottom, if above input (Fix #271, Fix #272)
| -rw-r--r-- | extensions/corfu-popupinfo.el | 13 |
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))))) |
