Quassia Gnus v0.26.
[elisp/gnus.git-] / lisp / message.el
index 21b9229..3ea01e9 100644 (file)
@@ -1,5 +1,5 @@
 ;;; message.el --- composing mail and news messages
-;; Copyright (C) 1996,97 Free Software Foundation, Inc.
+;; Copyright (C) 1996,97,98 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
 ;; Keywords: mail, news
   :type 'integer)
 
 (defcustom message-send-rename-function nil
-  "Function called to rename the buffer after sending it."
+  "*Function called to rename the buffer after sending it."
   :group 'message-buffers
   :type 'function)
 
@@ -157,7 +157,7 @@ Otherwise, most addresses look like `angles', but they look like
 
 (defcustom message-syntax-checks nil
   ;; Guess this one shouldn't be easy to customize...
-  "Controls what syntax checks should not be performed on outgoing posts.
+  "*Controls what syntax checks should not be performed on outgoing posts.
 To disable checking of long signatures, for instance, add
  `(signature . disabled)' to this list.
 
@@ -173,7 +173,7 @@ shorten-followup-to existing-newsgroups buffer-file-name unchanged."
   '(From Newsgroups Subject Date Message-ID
         (optional . Organization) Lines
         (optional . X-Newsreader))
-  "Headers to be generated or prompted for when posting an article.
+  "*Headers to be generated or prompted for when posting an article.
 RFC977 and RFC1036 require From, Date, Newsgroups, Subject,
 Message-ID.  Organization, Lines, In-Reply-To, Expires, and
 X-Newsreader are optional.  If don't you want message to insert some
@@ -185,7 +185,7 @@ header, remove it from this list."
 (defcustom message-required-mail-headers
   '(From Subject Date (optional . In-Reply-To) Message-ID Lines
         (optional . X-Mailer))
-  "Headers to be generated or prompted for when mailing a message.
+  "*Headers to be generated or prompted for when mailing a message.
 RFC822 required that From, Date, To, Subject and Message-ID be
 included.  Organization, Lines and X-Mailer are optional."
   :group 'message-mail
@@ -193,7 +193,7 @@ included.  Organization, Lines and X-Mailer are optional."
   :type '(repeat sexp))
 
 (defcustom message-deletable-headers '(Message-ID Date Lines)
-  "Headers to be deleted if they already exist and were generated by message previously."
+  "*Headers to be deleted if they already exist and were generated by message previously."
   :group 'message-headers
   :type 'sexp)
 
@@ -219,7 +219,7 @@ any confusion."
 
 ;;;###autoload
 (defcustom message-signature-separator "^-- *$"
-  "Regexp matching the signature separator."
+  "*Regexp matching the signature separator."
   :type 'regexp
   :group 'message-various)
 
@@ -227,7 +227,7 @@ any confusion."
   "*The string which is inserted for elided text.")
 
 (defcustom message-interactive nil
-  "Non-nil means when sending a message wait for and display errors.
+  "*Non-nil means when sending a message wait for and display errors.
 nil means let mailer mail back a message to report errors."
   :group 'message-sending
   :group 'message-mail
@@ -308,14 +308,14 @@ If nil, Message won't autosave."
   :type 'regexp)
 
 (defcustom message-cancel-message "I am canceling my own article."
-  "Message to be inserted in the cancel message."
+  "*Message to be inserted in the cancel message."
   :group 'message-interface
   :type 'string)
 
 ;; Useful to set in site-init.el
 ;;;###autoload
 (defcustom message-send-mail-function 'message-send-mail-with-sendmail
-  "Function to call to send the current buffer as mail.
+  "*Function to call to send the current buffer as mail.
 The headers should be delimited by a line whose contents match the
 variable `mail-header-separator'.
 
@@ -331,7 +331,7 @@ Legal values include `message-send-mail-with-sendmail' (the default),
   :group 'message-mail)
 
 (defcustom message-send-news-function 'message-send-news
-  "Function to call to send the current buffer as news.
+  "*Function to call to send the current buffer as news.
 The headers should be delimited by a line whose contents match the
 variable `mail-header-separator'."
   :group 'message-sending
@@ -339,21 +339,21 @@ variable `mail-header-separator'."
   :type 'function)
 
 (defcustom message-reply-to-function nil
-  "Function that should return a list of headers.
+  "*Function that should return a list of headers.
 This function should pick out addresses from the To, Cc, and From headers
 and respond with new To and Cc headers."
   :group 'message-interface
   :type 'function)
 
 (defcustom message-wide-reply-to-function nil
-  "Function that should return a list of headers.
+  "*Function that should return a list of headers.
 This function should pick out addresses from the To, Cc, and From headers
 and respond with new To and Cc headers."
   :group 'message-interface
   :type 'function)
 
 (defcustom message-followup-to-function nil
-  "Function that should return a list of headers.
+  "*Function that should return a list of headers.
 This function should pick out addresses from the To, Cc, and From headers
 and respond with new To and Cc headers."
   :group 'message-interface
@@ -379,12 +379,12 @@ command line, because it is even more evil than leaving it out."
 
 ;; qmail-related stuff
 (defcustom message-qmail-inject-program "/var/qmail/bin/qmail-inject"
-  "Location of the qmail-inject program."
+  "*Location of the qmail-inject program."
   :group 'message-sending
   :type 'file)
 
 (defcustom message-qmail-inject-args nil
-  "Arguments passed to qmail-inject programs.
+  "*Arguments passed to qmail-inject programs.
 This should be a list of strings, one string for each argument.
 
 For e.g., if you wish to set the envelope sender address so that bounces
@@ -402,7 +402,7 @@ might set this variable to '(\"-f\" \"you@some.where\")."
        ((boundp 'gnus-select-method)
         gnus-select-method)
        (t '(nnspool "")))
-  "Method used to post news."
+  "*Method used to post news."
   :group 'message-news
   :group 'message-sending
   ;; This should be the `gnus-select-method' widget, but that might
@@ -415,30 +415,30 @@ might set this variable to '(\"-f\" \"you@some.where\")."
   :type 'boolean)
 
 (defcustom message-setup-hook nil
-  "Normal hook, run each time a new outgoing message is initialized.
+  "*Normal hook, run each time a new outgoing message is initialized.
 The function `message-setup' runs this hook."
   :group 'message-various
   :type 'hook)
 
 (defcustom message-signature-setup-hook nil
-  "Normal hook, run each time a new outgoing message is initialized.
+  "*Normal hook, run each time a new outgoing message is initialized.
 It is run after the headers have been inserted and before
 the signature is inserted."
   :group 'message-various
   :type 'hook)
 
 (defcustom message-mode-hook nil
-  "Hook run in message mode buffers."
+  "*Hook run in message mode buffers."
   :group 'message-various
   :type 'hook)
 
 (defcustom message-header-hook nil
-  "Hook run in a message mode buffer narrowed to the headers."
+  "*Hook run in a message mode buffer narrowed to the headers."
   :group 'message-various
   :type 'hook)
 
 (defcustom message-header-setup-hook nil
-  "Hook called narrowed to the headers when setting up a message
+  "*Hook called narrowed to the headers when setting up a message
 buffer."
   :group 'message-various
   :type 'hook)
@@ -510,14 +510,14 @@ If a form, the result from the form will be used instead."
   :type 'function)
 
 (defcustom message-expires 14
-  "Number of days before your article expires."
+  "*Number of days before your article expires."
   :group 'message-news
   :group 'message-headers
   :link '(custom-manual "(message)News Headers")
   :type 'integer)
 
 (defcustom message-user-path nil
-  "If nil, use the NNTP server name in the Path header.
+  "*If nil, use the NNTP server name in the Path header.
 If stringp, use this; if non-nil, use no host name (user name only)."
   :group 'message-news
   :group 'message-headers
@@ -586,7 +586,7 @@ articles."
       ;; 33 and 126, except colon)", i. e., any chars except ctl chars,
       ;; space, or colon.
       '(looking-at "[ \t]\\|[][!\"#$%&'()*+,-./0-9;<=>?@A-Z\\\\^_`a-z{|}~]+:"))
-  "Set this non-nil if the system's mailer runs the header and body together.
+  "*Set this non-nil if the system's mailer runs the header and body together.
 \(This problem exists on Sunos 4 when sendmail is run in remote mode.)
 The value should be an expression to test whether the problem will
 actually occur."
@@ -793,23 +793,23 @@ Defaults to `text-mode-abbrev-table'.")
 The cdr of ech entry is a function for applying the face to a region.")
 
 (defcustom message-send-hook nil
-  "Hook run before sending messages."
+  "*Hook run before sending messages."
   :group 'message-various
   :options '(ispell-message)
   :type 'hook)
 
 (defcustom message-send-mail-hook nil
-  "Hook run before sending mail messages."
+  "*Hook run before sending mail messages."
   :group 'message-various
   :type 'hook)
 
 (defcustom message-send-news-hook nil
-  "Hook run before sending news messages."
+  "*Hook run before sending news messages."
   :group 'message-various
   :type 'hook)
 
 (defcustom message-sent-hook nil
-  "Hook run after sending messages."
+  "*Hook run after sending messages."
   :group 'message-various
   :type 'hook)
 
@@ -1316,7 +1316,7 @@ C-c C-r  message-caesar-buffer-body (rot13 the message body)."
        (mail-abbrevs-setup)
       (funcall (intern "mail-aliases-setup"))))
   (message-set-auto-save-file-name)
-  (run-hooks 'text-mode-hook 'message-mode-hook)
+  (gnus-run-hooks 'text-mode-hook 'message-mode-hook)
   (unless (string-match "XEmacs" emacs-version)
     (set (make-local-variable 'font-lock-defaults)
         '(message-font-lock-keywords t))))
@@ -1850,7 +1850,7 @@ the user from the mailer."
     (let ((inhibit-read-only t))
       (put-text-property (point-min) (point-max) 'read-only nil))
     (message-fix-before-sending)
-    (run-hooks 'message-send-hook)
+    (gnus-run-hooks 'message-send-hook)
     (message "Sending...")
     (let ((alist message-send-method-alist)
          (success t)
@@ -1870,7 +1870,7 @@ the user from the mailer."
        (message-do-fcc)
        ;;(when (fboundp 'mail-hist-put-headers-into-history)
        ;; (mail-hist-put-headers-into-history))
-       (run-hooks 'message-sent-hook)
+       (gnus-run-hooks 'message-sent-hook)
        (message "Sending...done")
        ;; Mark the buffer as unmodified and delete autosave.
        (set-buffer-modified-p nil)
@@ -1931,7 +1931,7 @@ the user from the mailer."
             (if news nil message-deletable-headers)))
        (message-generate-headers message-required-mail-headers))
       ;; Let the user do all of the above.
-      (run-hooks 'message-header-hook))
+      (gnus-run-hooks 'message-header-hook))
     (unwind-protect
        (save-excursion
          (set-buffer tembuf)
@@ -1976,7 +1976,7 @@ the user from the mailer."
       (replace-match "\n")
       (backward-char 1)
       (setq delimline (point-marker))
-      (run-hooks 'message-send-mail-hook)
+      (gnus-run-hooks 'message-send-mail-hook)
       ;; Insert an extra newline if we need it to work around
       ;; Sun's bug that swallows newlines.
       (goto-char (1+ delimline))
@@ -2032,7 +2032,7 @@ to find out how to use this."
   (re-search-forward
    (concat "^" (regexp-quote mail-header-separator) "\n"))
   (replace-match "\n")
-  (run-hooks 'message-send-mail-hook)
+  (gnus-run-hooks 'message-send-mail-hook)
   ;; send the message
   (case
       (let ((coding-system-for-write 'binary))
@@ -2079,7 +2079,7 @@ to find out how to use this."
                (concat "^" (symbol-name (car headers)) ": *") nil t)
               (message-delete-line))
          (pop headers))))
-    (run-hooks 'message-send-mail-hook)
+    (gnus-run-hooks 'message-send-mail-hook)
     ;; Pass it on to mh.
     (mh-send-letter)))
 
@@ -2101,7 +2101,7 @@ to find out how to use this."
       ;; Insert some headers.
       (message-generate-headers message-required-news-headers)
       ;; Let the user do all of the above.
-      (run-hooks 'message-header-hook))
+      (gnus-run-hooks 'message-header-hook))
     (message-cleanup-headers)
     (if (not (message-check-news-syntax))
        (progn
@@ -2133,7 +2133,7 @@ to find out how to use this."
               (concat "^" (regexp-quote mail-header-separator) "\n"))
              (replace-match "\n")
              (backward-char 1))
-           (run-hooks 'message-send-news-hook)
+           (gnus-run-hooks 'message-send-news-hook)
            ;;(require (car method))
            ;;(funcall (intern (format "%s-open-server" (car method)))
            ;;(cadr method) (cddr method))
@@ -2265,8 +2265,12 @@ to find out how to use this."
      (let* ((case-fold-search t)
            (message-id (message-fetch-field "message-id" t)))
        (or (not message-id)
+          ;; Is there an @ in the ID?
           (and (string-match "@" message-id)
-               (string-match "@[^\\.]*\\." message-id))
+               ;; Is there a dot in the ID?
+               (string-match "@[^.]*\\." message-id)
+               ;; Does the ID end with a dot?
+               (not (string-match "\\.>" message-id)))
           (y-or-n-p
            (format "The Message-ID looks strange: \"%s\".  Really post? "
                    message-id)))))
@@ -3095,14 +3099,14 @@ Headers already prepared in the buffer are not modified."
        (delq 'Lines
             (delq 'Subject
                   (copy-sequence message-required-mail-headers))))))
-  (run-hooks 'message-signature-setup-hook)
+  (gnus-run-hooks 'message-signature-setup-hook)
   (message-insert-signature)
   (save-restriction
     (message-narrow-to-headers)
-    (run-hooks 'message-header-setup-hook))
+    (gnus-run-hooks 'message-header-setup-hook))
   (set-buffer-modified-p nil)
   (setq buffer-undo-list nil)
-  (run-hooks 'message-setup-hook)
+  (gnus-run-hooks 'message-setup-hook)
   (message-position-point)
   (undo-boundary))