Câu trả lời:
Biến mu4e~contacts-for-completion
lưu trữ một danh sách các địa chỉ liên lạc mu4e
biết về. Các liên hệ được lưu trữ thuận tiện dưới dạng "name <email>"
chuỗi, đó là điều tương tự bạn muốn chèn.
Đây là một hàm ví dụ sử dụng biến cùng với ido
để chọn và chèn một liên hệ:
(defun select-and-insert-contact ()
(interactive)
(insert (ido-completing-read "Contact: " mu4e~contacts-for-completion)))
Đây là một phiên bản phức tạp hơn sẽ sử dụng liên hệ một phần trước điểm (nếu có) làm đầu vào ban đầu khi hoàn thành. (Hầu hết các mã là trực tiếp từ 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))))))
Tuyên bố miễn trừ trách nhiệm : Tôi không sử dụng mu4e nữa, vì vậy đây không phải là câu trả lời sao chép / dán hoặc thử nghiệm.
Chức năng mu4e~compose-complete-contact
dường như cung cấp danh sách các địa chỉ liên hệ có sẵn để hoàn thành:
https://github.com/djcb/mu/blob/master/mu4e/mu4e-compose.el#L236
Bạn chỉ có thể cung cấp cho danh sách ido-completing-read
.
(ido-completing-read "Complete contact: " (mu4e~compose-complete-contact)))))