Usando ido o helm para completar automáticamente las direcciones de correo electrónico en mu4e

7

¿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 *?

Scaramouche
fuente

Respuestas:

5

La variable mu4e~contacts-for-completionalmacena una lista de contactos que mu4econoce. 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 idopara 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))))))
jbm
fuente
0

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-contactparece 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)))))
rimero
fuente