• Glenn Morris's avatar
    Stop message.el from loading about 40 libraries it doesn't always need. · aa8f8277
    Glenn Morris authored
    The general approach is to autoload rather than require, and to
    require in the specific functions rather than the file.  (Bug#5642)
    
    * url/url.el: Move mailcap require earlier in the file.
    
    * gnus/gmm-utils.el: Don't require wid-edit.
    (widget-create-child-value, widget-convert, widget-default-get):
    Autoload.
    
    * gnus/gnus-util.el: Don't require time-date, netrc.
    (message-fetch-field, gnus-group-name-decode): Declare rather than
    autoloading.
    (gnus-fetch-field): Require message.
    (gnus-decode-newsgroups): Require gnus-group.
    
    * gnus/ietf-drums.el: Don't require time-date.
    
    * gnus/message.el: Don't require hashcash, canlock, ecomplete.
    Do require mail-utils.  Require nnheader only when compiling.
    (smtpmail-default-smtp-server): Remove declaration.
    (message-send-mail-function): Check smtpmail-default-smtp-server
    is bound rather than requiring smtpmail.
    (message-auto-save-directory, message-insert-signature): Use
    expand-file-name rather than nnheader-concat.
    (nnheader-insert-file-contents): Autoload.
    (hashcash-wait-async): Declare.
    (message-send-mail): Only call gnus-setup-posting-charset if
    gnus-group-posting-charset-alist is bound.  Require hashcash if needed.
    (message-send-mail-with-sendmail): Require sendmail.
    (canlock-password, canlock-password-for-verify): Declare.
    (message-canlock-password): Require canlock.
    (nnheader-get-report): Autoload.
    (gnus-setup-posting-charset): Declare.
    (message-send-news): Require gnus-msg.
    (message-make-references, message-make-in-reply-to): Use mail-header-id
    rather than the alias mail-header-message-id.
    (ecomplete-add-item, ecomplete-save): Declare.
    (message-put-addresses-in-ecomplete): Require ecomplete.
    (ecomplete-display-matches): Autoload.
    
    * gnus/mm-decode.el: Don't require mailcap, gnus-util.
    (gnus-map-function, gnus-replace-in-string, gnus-read-shell-command)
    (message-fetch-field, mailcap-parse-mailcaps, mailcap-mime-info):
    Autoload.
    (mailcap-mime-extensions): Declare.
    
    * gnus/mm-encode.el: Don't require mailcap.
    (mailcap-extension-to-mime): Autoload.
    
    * gnus/mml-sec.el: Don't require password-cache.
    
    * gnus/mml.el (gnus-setup-posting-charset): Declare rather than autoload.
    (mailcap-parse-mimetypes, mailcap-mime-types): Declare.
    (mml-minibuffer-read-type): Require mailcap.
    (mml-preview): Require gnus-msg.
    
    * gnus/mml1991.el: Require password-cache.
    (password-cache-expiry): Remove declaration.
    
    * gnus/mml2015.el: Require password-cache.
    (password-cache-expiry): Remove declaration.
    
    * gnus/nneething.el (mailcap): Require mailcap.
    
    * gnus/nnheader.el: (declare-function): Add compatibility stub.
    (message-remove-header): Declare rather than autoload.
    (nnheader-replace-header): Require message.
    
    * gnus/nnimap.el (declare-function): Add compatibility stub.
    (netrc-parse, netrc-machine-user-or-password): Declare.
    (nnimap-open-connection): Require netrc.
    
    * gnus/nntp.el (declare-function): Add compatibility stub.
    (netrc-parse, netrc-machine, netrc-get): Declare.
    (nntp-send-authinfo): Require netrc.
    
    * gnus/rfc2047.el: Don't require qp.
    (quoted-printable-encode-region, quoted-printable-decode-string):
    Autoload.
    
    * gnus/sieve-mode.el: Don't require easymenu.
    (easy-menu-add-item): Autoload it.
    
    * gnus/spam-stat.el (time-to-number-of-days): Autoload it.
    
    * password-cache.el (password-cache, password-cache-expiry):
    Autoload.
    aa8f8277
message.el 286 KB