summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2012-11-05 23:58:20 +0100
committerGravatar Tom Willemsen2012-11-05 23:58:20 +0100
commit1a33c04074351da15309d02de5234e8db68cfdf5 (patch)
treef801d5208e0f90fb80e9ed481f41447f12d0d393
parentf3059faaab05a35cd818519d255a5441d2694240 (diff)
downloadsite-1a33c04074351da15309d02de5234e8db68cfdf5.tar.gz
site-1a33c04074351da15309d02de5234e8db68cfdf5.zip
Add "Ask for selection in emacs" archive post
-rw-r--r--posts/Ask_for_selection_in_emacs.mdwn42
1 files changed, 42 insertions, 0 deletions
diff --git a/posts/Ask_for_selection_in_emacs.mdwn b/posts/Ask_for_selection_in_emacs.mdwn
new file mode 100644
index 0000000..b2ddeee
--- /dev/null
+++ b/posts/Ask_for_selection_in_emacs.mdwn
@@ -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]]