auto-completeとbbdbでメールのアドレス補完する
欲しくなったから書いてみた。
必要なもの
- bbdb(http://bbdb.sourceforge.net/)
- 最新のauto-complete(http://github.com/m2ym/auto-complete)
- WanderlustとかのEmacsで動くMUA
設定
(defun wl-draft-turn-on-ac () (setq ac-sources '(ac-source-bbdb)) (auto-complete-mode 1)) (add-hook 'wl-draft-mode-hook 'wl-draft-turn-on-ac))
- 以下をどっかに書いとく
(defvar ac-bbdb-header-list '("to" "from" "cc" "bcc")) (defun ac-bbdb-candidate () (delete-dups (apply 'append (mapcar (lambda (rec) (mapcar (lambda (n) (bbdb-dwim-net-address rec n)) (bbdb-record-net rec))) (bbdb-records))))) (defun ac-bbdb-prefix () (interactive) (let ((case-fold-search t)) (when (and (< (point) (save-excursion (goto-char (point-min)) (search-forward (concat "\n" mail-header-separator "\n") nil t) (point))) (save-excursion (beginning-of-line) (while (and (looking-at "^[ \t]") (not (= (point) (point-min)))) (forward-line -1)) (looking-at (concat (regexp-opt ac-bbdb-header-list t) ":")))) (ac-prefix-symbol)))) (defvar ac-source-bbdb '((candidates . ac-bbdb-candidate) (match . substring) (prefix . ac-bbdb-prefix)))