I use ivy to complete email addresses in mu4e, and at the moment, if I want to add multiple addresses, I use RET to complete the current address, then insert a comma and manually start a new completion. I'd like to adapt this so that I can hit comma at the ivy prompt it will complete the current selection, inserting the selected address and a comma in the buffer, and then clear the ivy filter in the minibuffer so I can start typing a new address. This emulates the address completion in e.g. thunderbird and gmail.
Any suggestions would be greatly appreciated!
My current code is described here
Here's a template for implementing what you want:
(defvar contacts '("email@example.com"
(defun counsel-email-action (x)
(let ((map (make-sparse-keymap)))
(define-key map "," 'counsel-email-more)
(defun counsel-email-more ()
(insert ", "))
(setq ivy-text ""))
(defun counsel-email ()
(ivy-read "email: " contacts
Pressing RET inserts an email and exits. Pressing , inserts and email and a comma, and clears the current input.
Thanks - this is exactly what I needed to build my solution.