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

From: Thiago Melo <[email-masked]>
Date: Sat, 27 May 2023 19:48:54 +0000

On Sat, May 27, 2023 at 5:14 PM Eli Zaretskii <[email-masked]> wrote:
> 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.

Cool.  I've tested, it's working nicely.  Thanks for the fix.

> (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.)

Sorry if my comment is out of place, but I also gave a try to
`tmm-mid-prompt' = nil.  Since it disables the tmm shortcuts, maybe it
would be more intuitive to let users input keys and do completion at
the minibuffer in this situation? (unless I'm missing some unwanted
side effect here)

With this little change, for example:

--- tmm.el.orig    2023-05-27 21:26:44.594743965 +0200
+++ tmm.el    2023-05-27 21:27:13.571769823 +0200
@@ -305,7 +305,7 @@
 ;; This returns the old map.
 (defun tmm-define-keys (minibuffer)
   (let ((map (make-sparse-keymap)))
-    (suppress-keymap map t)
+    (when tmm-mid-prompt (suppress-keymap map t))
     (dolist (c tmm-short-cuts)
       (if (listp tmm-shortcut-style)
           (define-key map (char-to-string c) 'tmm-shortcut)