;;ak [TAB] --> akihisa... (setq mail-personal-alias-file "~/data/.mailrc");; ファイル名は変更してください (add-hook 'message-mode-hook 'build-mail-aliases) (defun invoke-mail-complete-address() (interactive) (let ((cp (point))) ;current position (beginning-of-line) (if (not (or (looking-at "To: ") (looking-at "Cc: ") (looking-at "Reply-to: ") (looking-at "Bcc: "))) (if (looking-at "Newsgroups: ") (progn (goto-char cp) (message-tab)) (progn (goto-char cp))) (progn (goto-char cp) (mail-complete-address))))) (defun mail-complete-address () (let* ((end (point)) (start (save-excursion (skip-chars-backward "^ \t\n,") (point))) (completion) (pattern (buffer-substring-no-properties start end)) (cl mail-aliases)) (if (null cl) nil (setq completion (try-completion pattern cl)) (cond ((eq completion t) (let ((alias (if (featurep 'xemacs) (cons pattern (abbrev-expansion pattern mail-aliases)) (assoc pattern mail-aliases)))) (if alias (progn (delete-region start end) (insert (cdr alias)))))) ((null completion) (message "Can't find completion for \"%s\"" pattern) (ding)) ((not (string= pattern completion)) (delete-region start end) (insert completion)) (t (message "Making completion list...") (let ((list (all-completions pattern cl))) (with-output-to-temp-buffer "*Completion*" (display-completion-list list))) (message "Making completion list... done")))))) (define-key message-mode-map [tab] 'invoke-mail-complete-address)