# HG changeset patch # User Stefan Monnier # Date 1291687260 18000 # Node ID 25e3c2636c1fad5b8445488df62df219916d1242 # Parent b050075901af36c1debec50d7432782a25b8d060 * lisp/gnus/message.el: Use completion-at-point. (message-completion-function): New fun, extracted from message-tab. (message-mode): Use it for completion-at-point-functions. (message-tab): Use it and completion-at-point. diff -r b050075901af -r 25e3c2636c1f lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Tue Dec 07 01:21:09 2010 +0000 +++ b/lisp/gnus/ChangeLog Mon Dec 06 21:01:00 2010 -0500 @@ -1,3 +1,10 @@ +2010-12-07 Stefan Monnier + + * message.el: Use completion-at-point. + (message-completion-function): New fun, extracted from message-tab. + (message-mode): Use it for completion-at-point-functions. + (message-tab): Use it and completion-at-point. + 2010-12-07 Katsumi Yamaoka * shr.el (shr-find-fill-point): Don't break a line after a kinsoku-bol diff -r b050075901af -r 25e3c2636c1f lisp/gnus/message.el --- a/lisp/gnus/message.el Tue Dec 07 01:21:09 2010 +0000 +++ b/lisp/gnus/message.el Mon Dec 06 21:01:00 2010 -0500 @@ -277,7 +277,7 @@ regexp)) (defcustom message-ignored-mail-headers - "^[GF]cc:\\|^Resent-Fcc:\\|^Xref:\\|^X-Draft-From:\\|^X-Gnus-Agent-Meta-Information:" + "^\\([GF]cc\\|Resent-Fcc\\|Xref\\|X-Draft-From\\|X-Gnus-Agent-Meta-Information\\):" "*Regexp of headers to be removed unconditionally before mailing." :group 'message-mail :group 'message-headers @@ -2914,6 +2914,7 @@ (mail-aliases-setup)))) ((message-mail-alias-type-p 'ecomplete) (ecomplete-setup))) + (add-hook 'completion-at-point-functions 'message-completion-function nil t) (unless buffer-file-name (message-set-auto-save-file-name)) (unless (buffer-base-buffer) @@ -7743,7 +7744,7 @@ :type '(alist :key-type regexp :value-type function)) (defcustom message-expand-name-databases - (list 'bbdb 'eudc) + '(bbdb eudc) "List of databases to try for name completion (`message-expand-name'). Each element is a symbol and can be `bbdb' or `eudc'." :group 'message @@ -7765,15 +7766,25 @@ Execute function specified by `message-tab-body-function' when not in those headers." (interactive) + (cond + ((if (and (boundp 'completion-fail-discreetly) + (fboundp 'completion-at-point)) + (let ((completion-fail-discreetly t)) (completion-at-point)) + (funcall (or (message-completion-function) #'ignore))) + ;; Completion was performed; nothing else to do. + nil) + (message-tab-body-function (funcall message-tab-body-function)) + (t (funcall (or (lookup-key text-mode-map "\t") + (lookup-key global-map "\t") + 'indent-relative))))) + +(defun message-completion-function () (let ((alist message-completion-alist)) (while (and alist (let ((mail-abbrev-mode-regexp (caar alist))) (not (mail-abbrev-in-expansion-header-p)))) (setq alist (cdr alist))) - (funcall (or (cdar alist) message-tab-body-function - (lookup-key text-mode-map "\t") - (lookup-key global-map "\t") - 'indent-relative)))) + (cdar alist))) (eval-and-compile (condition-case nil