¿Hay alguna manera de completar automáticamente las direcciones de correo electrónico en la ventana de redacción de mu4e usando Ido o Helm en lugar del búfer estándar * Completions *?
La variable mu4e~contacts-for-completion
almacena una lista de contactos que mu4e
conoce. Los contactos se almacenan convenientemente como "name <email>"
cadenas, que es lo mismo que desea insertar.
Aquí hay una función de ejemplo que usa la variable junto con ido
para seleccionar e insertar un contacto:
(defun select-and-insert-contact ()
(interactive)
(insert (ido-completing-read "Contact: " mu4e~contacts-for-completion)))
Aquí hay una versión más elaborada que utilizará el contacto parcial antes del punto (si lo hay) como entrada inicial al completar. (La mayor parte del código es directamente de mu4e~compose-complete-contact
).
(defun select-and-insert-contact (&optional start)
(interactive)
(let ((mail-abbrev-mode-regexp mu4e~compose-address-fields-regexp)
(eoh ;; end-of-headers
(save-excursion
(goto-char (point-min))
(search-forward-regexp mail-header-separator nil t))))
(when (and eoh (> eoh (point)) (mail-abbrev-in-expansion-header-p))
(let* ((end (point))
(start
(or start
(save-excursion
(re-search-backward "\\(\\`\\|[\n:,]\\)[ \t]*")
(goto-char (match-end 0))
(point))))
(contact
(ido-completing-read "Contact: "
mu4e~contacts-for-completion
nil
nil
(buffer-substring-no-properties start end))))
(unless (equal contact "")
(kill-region start end)
(insert contact))))))
Descargo de responsabilidad : ya no uso mu4e, por lo que esta no es una copia / pegar o una respuesta probada.
La función mu4e~compose-complete-contact
parece proporcionar una lista de contactos disponibles para completar:
https://github.com/djcb/mu/blob/master/mu4e/mu4e-compose.el#L236
Podrías simplemente alimentar la lista a ido-completing-read
.
(ido-completing-read "Complete contact: " (mu4e~compose-complete-contact)))))