42 lines
1.6 KiB
Org Mode
42 lines
1.6 KiB
Org Mode
|
#+TITLE: Ask for selection in emacs
|
||
|
#+DESCRIPTION: Something I came across
|
||
|
|
||
|
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.
|
||
|
|
||
|
I use ~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
|
||
|
start ~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
|
||
|
the ~<XF86Mail>~ key, this turned it into, for example ~<XF86Mail>
|
||
|
ryu~ and ~<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:
|
||
|
|
||
|
#+BEGIN_SRC emacs-lisp
|
||
|
(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")))))
|
||
|
#+END_SRC
|
||
|
|
||
|
I've left out the definitions and some mail accounts for brevity.
|
||
|
|
||
|
~tmm-prompt~ is usually used when using the text-mode menu with ~M-`~,
|
||
|
but it works very well here too. This changes mailbox selection to,
|
||
|
for example ~<XF86Mail> r~ or ~<XF86Mail> n~.
|