Subject: bug#61702: Minibuffer scrolling not working when long lines get truncated

From: João Távora <[email-masked]>
Date: Thu, 2 Mar 2023 11:57:15 +0000

On Thu, Mar 2, 2023 at 11:52 AM Eli Zaretskii <[email-masked]> wrote:
>
> > From: Johann Höchtl <[email-masked]>
> > Date: Thu, 23 Feb 2023 08:12:09 +0100
> > Cc: [email-masked]
> >
> > emacs -Q
> > M-x fido-vertical-mode
> > M-x <consta> <-- any search term to narrow down the potential completions, in this case 12 items remain
> > matching
> > narrow the whole emacs window so the search results have to "break" because of long lines
> > <down> <down> ...
> > The highlighted active line remains visible until the last items, than the active line becomes invisible
>
> Thanks.
>
> It looks like the code in icomplete--render-vertical implicitly
> assumes that every candidate takes just one screen line, which is
> false in your scenario.  A workaround is to set truncate-lines non-nil
> in the minibuffer.
>
> João, can you take a look, please?

I'll take a better look later, but I can say that that truncate-lines
idea sounds very sensible.  Johann can you try this patch?

diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index 014f38b2024..4e85e20fddb 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -644,6 +644,7 @@ icomplete--vertical-minibuffer-setup
   (setq-local icomplete-hide-common-prefix nil
               ;; Ask `icomplete-completions' to return enough
completions candidates.
               icomplete-prospects-height 25
+              truncate-lines t
               redisplay-adhoc-scroll-in-resize-mini-windows nil))

 ;;;###autoload