Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Can I complete and then immediately launch a new ivy completion? #596
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 '("firstname.lastname@example.org" "email@example.com" "firstname.lastname@example.org")) (defun counsel-email-action (x) (with-ivy-window (insert x))) (defvar counsel-email-map (let ((map (make-sparse-keymap))) (define-key map "," 'counsel-email-more) map)) (defun counsel-email-more () (interactive) (ivy-call) (with-ivy-window (insert ", ")) (delete-minibuffer-contents) (setq ivy-text "")) (defun counsel-email () (interactive) (ivy-read "email: " contacts :action 'counsel-email-action :keymap counsel-email-map))
Pressing RET inserts an email and exits. Pressing , inserts and email and a comma, and clears the current input.