branch: externals/corfu commit 2c876e7bf0590ec5cd8c22fc8965897ffab47e7c Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@daniel-mendler.de>
Try a different frame resizing hack to reduce flicker --- corfu.el | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/corfu.el b/corfu.el index 6e3c5fdf18..7c75fcbd28 100644 --- a/corfu.el +++ b/corfu.el @@ -419,13 +419,16 @@ The completion backend can override this with (set-window-buffer win buffer) ;; Mark window as dedicated to prevent frame reuse (#60) (set-window-dedicated-p win t)) - ;; XXX HACK Make the frame invisible before moving the popup in order to avoid flicker. - (unless (eq (cdr (frame-position corfu--frame)) y) - (make-frame-invisible corfu--frame)) - (set-frame-position corfu--frame x y) (set-frame-size corfu--frame width height t) - (unless (frame-visible-p corfu--frame) + (if (frame-visible-p corfu--frame) + ;; XXX HACK Avoid flicker when frame is already visible. + ;; Redisplay, wait for resize and then move the frame. + (unless (equal (frame-position corfu--frame) (cons x y)) + (redisplay) + (sleep-for 0.01) + (set-frame-position corfu--frame x y)) ;; XXX HACK: Force redisplay, otherwise the popup sometimes does not display content. + (set-frame-position corfu--frame x y) (redisplay) (make-frame-visible corfu--frame))))