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

From: [email-masked] (N. Jackson)
Date: Wed, 23 Mar 2016 13:45:15 -0300

At 09:09 +0100 on Wednesday 2016-03-23, martin rudalics wrote:
>
> 	    ,(if temp-buffer-resize-mode
> 		 '(window-height . resize-temp-buffer-window)
> 	       '(window-height . shrink-window-if-larger-than-buffer))

Thanks Martin, that indeed captures the observed behaviour in a
nutshell.

> Obviously, the second branch is based on the assumption that a user will
> "refine" her completions in the sense that she starts with a large
> number of possible completions and, by typing characters in the
> minibuffer, reduces the number of possible completions until she found
> the right one.

This is a valid assumption and basis of design when the completion is of
something like a command or a function name, because then the completion
list is gradually narrowed.

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.

For example, I was doing a find-file to find something in my Emacs init.
I started with `~/.em TAB' expecting a single match of ~/.emacs.d/ but
instead (of course) I got the initial completions window with .emacs and
.emacs.d in it -- a very small completions window. Then I needed a
subdirectory in ~/.emacs.d/ but couldn't remember its name at all, so I
hit TAB again and got the entire contents of emacs.d/ which is a very
long list [it seems to be jammed up full of session files for some
reason] all displayed in a buffer sized to show one line of
completion candidates.

> Apparently, the OP works in the opposite direction - he starts with
> few suggestions and removes characters from the minibuffer ending up
> with more and more suggestions.

No, not normally. When I was trying to come up with a simple
reproducible recipe I wanted an example in the emacs tree, and the
example I was able to up with was a bit contrived. (Although I don't
think it's an unlikely use case.)

N.