I came across an email on one of the emacs mailing lists today, where
someone asked how to ask a user for input whilst providing
completions. The first answer he got was to try
tmm-prompt, so I
looked into it a little.
mu4e as my primary email program, but since it isn't designed
(seemingly) for use with multiple accounts I've got some wrapper
functions that set some variables according to my liking and then
mu4e. This works very well, but it's a pain to have to use
M-x view-ryu-mail or
M-x view-ninthfloor-mail and such, so I wrote a
function to read a string from the minibuffer, which I then bound to
<XF86Mail> key, this turned it into, for example
<XF86Mail> ninthfloor and so on, but this doesn't have any
completion or notification of my options.
So after looking at
tmm-prompt I came up with the following:
(defvar oni:mailbox-map '(("ryulash.org" . "ryu") ("ninthfloor" . "ninthfloor")) "A mailbox map for use with `tmm-prompt'.") (defun view-ryu-mail ()...) (defun view-ninthfloor-mail ()...) (defun view-mu () (interactive) (let* ((tmm-completion-prompt "Choose a mailbox\n") (inbox (tmm-prompt oni:mailbox-map))) (funcall (intern (concat "view-" inbox "-mail")))))
I've left out the definitions and some mail accounts for brevity.
tmm-prompt is usually used when using the text-mode menu with
it works very well here too. This changes mailbox selection to, for
<XF86Mail> r or