- (pattern (buffer-substring beg end))
- completion)
- (setq list (eval arg)
- completion (try-completion pattern list))
- (cond ((eq completion t))
- ((null completion)
- (message "Can't find completion for \"%s\"" pattern)
- (ding))
- ((not (string= pattern completion))
- (delete-region beg end)
- (let ((alist-elt (assoc completion mail-names)))
- (if (cdr alist-elt)
- (cond ((eq mail-complete-style 'parens)
- (insert completion " (" (cdr alist-elt) ")"))
- ((eq mail-complete-style 'angles)
- (insert (cdr alist-elt) " <" completion ">"))
- (t
- (insert completion)))
- (insert completion))))
- (t
- (message "Making completion list...")
- (with-output-to-temp-buffer "*Completions*"
- (display-completion-list
- (all-completions pattern list)))
- (message "Making completion list...%s" "done"))))
+ (table (completion-table-dynamic
+ (lambda (prefix)
+ (let ((pattern prefix)) (eval list-exp))))))
+ (list beg end table)))))
+
+;;;###autoload
+(defun mail-complete (arg)
+ "Perform completion on header field or word preceding point.
+Completable headers are according to `mail-complete-alist'. If none matches
+current header, calls `mail-complete-function' and passes prefix ARG if any."
+ (declare (obsolete mail-completion-at-point-function "24.1"))
+ (interactive "P")
+ ;; Read the defaults first, if we have not done so.
+ (sendmail-sync-aliases)
+ (if (eq mail-aliases t)
+ (progn
+ (setq mail-aliases nil)
+ (if (file-exists-p mail-personal-alias-file)
+ (build-mail-aliases))))
+ (let ((data (mail-completion-at-point-function)))
+ (if data
+ (apply #'completion-in-region data)