Subject: bug#63754: 29.0.91; tmm breaks when tmm-completion-prompt is nil

From: Eli Zaretskii <[email-masked]>
Date: Sat, 27 May 2023 20:15:12 +0300

> From: Thiago Melo <[email-masked]>
> Date: Sat, 27 May 2023 14:53:59 +0000
> 
> Issue doesn't happen with Emacs 28.
> 
> * How to reproduce
> 
> run:
> emacs -Q
> 
> eval:
> (setq tmm-completion-prompt nil)
> (tmm-menubar) ; or `tmm-prompt' with any menu/keymap
> 
> * Backtrace
> 
> Debugger entered--Lisp error: (search-failed "Possible completions are:\n")
>   search-forward("Possible completions are:\n")
>   tmm-completion-delete-prompt()
>   run-hooks(completion-setup-hook)
>   display-completion-list((#("f==>File" 0 1 (face

Thanks.  This was caused by a change in the completion heading line in
Emacs 29: it is now a customizable format string, and can be nil.  So
the method used by tmm.el for finding the prompt (so it could delete
it) is no longer workable, and must be replaced by a different method.

Should be fixed now on the emacs-29 branch.  (I also fixed it to work
when 'tmm-mid-prompt' is nil, something that seems to have been broken
since about forever -- I found that bug while testing the patch,
because the patch has to work also when 'tmm-mid-prompt' is nil, and
there are no menu shortcuts shown.)