Add "Ask for selection in emacs" archive post
This commit is contained in:
parent
f3059faaab
commit
1a33c04074
1 changed files with 42 additions and 0 deletions
42
posts/Ask_for_selection_in_emacs.mdwn
Normal file
42
posts/Ask_for_selection_in_emacs.mdwn
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
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:
|
||||||
|
|
||||||
|
[[!format el """
|
||||||
|
(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
|
||||||
|
|
||||||
|
``M-` ``, but it works very well here too. This changes mailbox
|
||||||
|
selection to, for example `<XF86Mail r` or `<XF86Mail> n`.
|
||||||
|
|
||||||
|
[[!meta date="2012-05-02 21:09:00"]]
|
||||||
|
[[!tag emacs elisp coding]]
|
Loading…
Reference in a new issue