Subject: bug#23092: 25.0.92; Minibuffer completion fails to resize completion window if reused during same command

From: Juri Linkov <[email-masked]>
Date: Wed, 23 Mar 2016 23:27:18 +0200

>> But in the case of completion of a file path, this assumption is not
>> valid. (And completing each directory name down a file path is a
>> perfectly normal use case.) The difference is that one is not doing a
>> single completion but several discrete completions.
>
> I'm not sure whether we should by default change something in this case.
> Juri has designed the present concept and I would rather leave it to him
> how to proceed.

I noticed this deficiency, but failed to properly fix it earlier,
because it's only you who completely understands all the intricacies
of window-displaying machinery ;-)

However, after I looked at this again now, it looks natural to just
replace ‘shrink-window-if-larger-than-buffer’ with ‘fit-window-to-buffer’.
But I'd leave it to you to decide how good this change is and what
consequences it might entail.

diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index ecac0ae..6540059 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1835,7 +1835,7 @@ minibuffer-completion-help
                 'display-buffer-below-selected))
 	    ,(if temp-buffer-resize-mode
 		 '(window-height . resize-temp-buffer-window)
-	       '(window-height . shrink-window-if-larger-than-buffer))
+	       '(window-height . fit-window-to-buffer))
 	    ,(when temp-buffer-resize-mode
 	       '(preserve-size . (nil . t))))
           nil