*** empty log message ***
[gnus] / lisp / message.el
index f104384..519a7b9 100644 (file)
@@ -53,7 +53,7 @@
 (defvar message-fcc-handler-function 'rmail-output
   "*A function called to save outgoing articles.
 This function will be called with the name of the file to store the
-article in. The default function is `rmail-output' which saves in Unix
+article in.  The default function is `rmail-output' which saves in Unix
 mailbox format.")
 
 ;;;###autoload
@@ -92,7 +92,8 @@ Don't touch this variable unless you really know what you're doing.
 
 Checks include subject-cmsg multiple-headers sendsys message-id from
 long-lines control-chars size new-text redirected-followup signature
-approved sender empty empty-headers message-id from subject.")
+approved sender empty empty-headers message-id from subject
+shorten-followup-to existing-newsgroups.")
 
 ;;;###autoload
 (defvar message-required-news-headers
@@ -119,11 +120,11 @@ included.  Organization, Lines and X-Mailer are optional.")
 
 ;;;###autoload
 (defvar message-ignored-news-headers 
-  "^NNTP-Posting-Host:\\|^Xref:\\|^Bcc:\\|^Gcc:\\|^Fcc:"
+  "^NNTP-Posting-Host:\\|^Xref:\\|^Bcc:\\|^Gcc:\\|^Fcc:\\|^Resent-Fcc:"
   "*Regexp of headers to be removed unconditionally before posting.")
 
 ;;;###autoload
-(defvar message-ignored-mail-headers "^Gcc:\\|^Fcc:"
+(defvar message-ignored-mail-headers "^Gcc:\\|^Fcc:\\|^Resent-Fcc:"
   "*Regexp of headers to be removed unconditionally before mailing.")
 
 ;;;###autoload
@@ -193,7 +194,7 @@ If nil, message won't autosave.")
 
 ;;;###autoload
 (defvar message-ignored-cited-headers "."
-  "Delete these headers from the messages you yank.")
+  "*Delete these headers from the messages you yank.")
 
 (defvar message-cancel-message "I am canceling my own article."
   "Message to be inserted in the cancel message.")
@@ -235,7 +236,7 @@ and respond with new To and Cc headers.")
 ;;;###autoload
 (defvar message-use-followup-to 'ask
   "*Specifies what to do with Followup-To header.
-If nil, ignore the header. If it is t, use its value, but query before
+If nil, ignore the header.  If it is t, use its value, but query before
 using the \"poster\" value.  If it is the symbol `ask', query the user
 whether to ignore the \"poster\" value.  If it is the symbol `use',
 always use the value.")
@@ -378,8 +379,8 @@ these lines.")
                     (re-search-forward "^OR\\>" nil t)))
               (kill-buffer buffer))))
       ;; According to RFC822, "The field-name must be composed of printable
-      ;; ASCII characters (i.e. characters that have decimal values between
-      ;; 33 and 126, except colon)", i.e. any chars except ctl chars,
+      ;; ASCII characters (i. e., characters that have decimal values between
+      ;; 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.
@@ -412,7 +413,7 @@ Defaults to `text-mode-abbrev-table'.")
                        "\\([" cite-prefix "]+[" cite-suffix "]*\\)?"
                        "[>|}].*")
                'font-lock-reference-face)
-         '("^\\(X-[A-Za-z0-9-]+\\|In-reply-to\\):.*"
+         '("^\\(X-[A-Za-z0-9-]+\\|In-Reply-To\\):.*"
            . font-lock-string-face)))
   "Additional expressions to highlight in Message mode.")
 
@@ -501,7 +502,7 @@ The cdr of ech entry is a function for applying the face to a region.")
     (Lines)
     (Expires)
     (Message-ID)
-    (References . message-fill-header)
+    (References)
     (X-Mailer)
     (X-Newsreader))
   "Alist used for formatting headers.")
@@ -773,7 +774,7 @@ Return the number of headers removed."
     ["To" message-goto-to t]
     ["Subject" message-goto-subject t]
     ["Cc" message-goto-cc t]
-    ["Reply-to" message-goto-reply-to t]
+    ["Reply-To" message-goto-reply-to t]
     ["Summary" message-goto-summary t]
     ["Keywords" message-goto-keywords t]
     ["Newsgroups" message-goto-newsgroups t]
@@ -817,7 +818,7 @@ C-c C-i  message-goto-signature (move to the beginning of the signature).
 C-c C-w  message-insert-signature (insert `message-signature-file' file).
 C-c C-y  message-yank-original (insert current message, if any).
 C-c C-q  message-fill-yanked-message (fill what was yanked).
-C-c C-r  message-ceasar-buffer-body (rot13 the message body)."
+C-c C-r  message-caesar-buffer-body (rot13 the message body)."
   (interactive)
   (kill-all-local-variables)
   (make-local-variable 'message-reply-buffer)
@@ -1088,7 +1089,7 @@ name, rather than giving an automatic name."
                     name-default))
             (default-directory
               (file-name-as-directory message-autosave-directory)))
-         (rename-buffer name t)))))
+       (rename-buffer name t)))))
 
 (defun message-fill-yanked-message (&optional justifyp)
   "Fill the paragraphs of a message yanked into this one.
@@ -1217,21 +1218,21 @@ The text will also be indented the normal way."
   (save-excursion
     (let ((start (point))
          mark)
-    (if (not (re-search-forward message-signature-separator (mark t) t))
-       ;; No signature here, so we just indent the cited text.
+      (if (not (re-search-forward message-signature-separator (mark t) t))
+         ;; No signature here, so we just indent the cited text.
+         (message-indent-citation)
+       ;; Find the last non-empty line.
+       (forward-line -1)
+       (while (looking-at "[ \t]*$")
+         (forward-line -1))
+       (forward-line 1)
+       (setq mark (set-marker (make-marker) (point)))
+       (goto-char start)
        (message-indent-citation)
-      ;; Find the last non-empty line.
-      (forward-line -1)
-      (while (looking-at "[ \t]*$")
-       (forward-line -1))
-      (forward-line 1)
-      (setq mark (set-marker (make-marker) (point)))
-      (goto-char start)
-      (message-indent-citation)
-      ;; Enable undoing the deletion.
-      (undo-boundary)
-      (delete-region mark (mark t))
-      (set-marker mark nil)))))
+       ;; Enable undoing the deletion.
+       (undo-boundary)
+       (delete-region mark (mark t))
+       (set-marker mark nil)))))
 
 \f
 
@@ -1256,8 +1257,9 @@ The text will also be indented the normal way."
 (defun message-dont-send ()
   "Don't send the message you have been editing."
   (interactive)
-  (message-bury (current-buffer))
-  (message-do-actions message-postpone-actions))
+  (let ((actions message-postpone-actions))
+    (message-bury (current-buffer))
+    (message-do-actions actions)))
 
 (defun message-kill-buffer ()
   "Kill the current buffer."
@@ -1470,10 +1472,10 @@ to find out how to use this."
        ;; yes, it does The Right Thing w.r.t. Resent-To and it's kin.
        ;;
        ;; in general, ALL of qmail-inject's defaults are perfect for simply
-       ;; reading a formatted (i.e., at least a To: or Resent-To header)
+       ;; reading a formatted (i. e., at least a To: or Resent-To header)
        ;; message from stdin.
        ;;
-       ;; qmail also has the advantage of not having being raped by
+       ;; qmail also has the advantage of not having been raped by
        ;; various vendors, so we don't have to allow for that, either --
        ;; compare this with message-send-mail-with-sendmail and weep 
        ;; for sendmail's lost innocence.
@@ -1481,7 +1483,7 @@ to find out how to use this."
        ;; all this is way cool coz it lets us keep the arguments entirely
        ;; free for -inject-arguments -- a big win for the user and for us
        ;; since we don't have to play that double-guessing game and the user
-       ;; gets full control (no gestapo'ish -f's, for instance). --sj
+       ;; gets full control (no gestapo'ish -f's, for instance).  --sj
        message-qmail-inject-args)
     ;; qmail-inject doesn't say anything on it's stdout/stderr,
     ;; we have to look at the retval instead
@@ -1541,10 +1543,10 @@ to find out how to use this."
            (buffer-disable-undo (current-buffer))
            (erase-buffer) 
            ;; Avoid copying text props.
-         (insert (format 
-                  "%s" (save-excursion
-                         (set-buffer messbuf)
-                         (buffer-string))))
+           (insert (format 
+                    "%s" (save-excursion
+                           (set-buffer messbuf)
+                           (buffer-string))))
            ;; Remove some headers.
            (save-restriction
              (message-narrow-to-headers)
@@ -1555,7 +1557,7 @@ to find out how to use this."
            (or (= (preceding-char) ?\n)
                (insert ?\n))
            (let ((case-fold-search t))
-             ;; Remove the delimeter.
+             ;; Remove the delimiter.
              (goto-char (point-min))
              (re-search-forward
               (concat "^" (regexp-quote mail-header-separator) "\n"))
@@ -1592,7 +1594,7 @@ to find out how to use this."
         (save-excursion
           (if (string-match "^cmsg " (message-fetch-field "subject"))
               (y-or-n-p
-               "The control code \"cmsg \" is in the subject. Really post? ")
+               "The control code \"cmsg \" is in the subject.  Really post? ")
             t)))
        ;; Check for multiple identical headers.
        (or (message-check-element 'multiple-headers)
@@ -1610,14 +1612,14 @@ to find out how to use this."
                        (setq found nil))))
                (if found
                    (y-or-n-p 
-                    (format "Multiple %s headers. Really post? " found))
+                    (format "Multiple %s headers.  Really post? " found))
                  t))))
        ;; Check for Version and Sendsys.
        (or (message-check-element 'sendsys)
            (save-excursion
              (if (re-search-forward "^Sendsys:\\|^Version:" nil t)
                  (y-or-n-p
-                  (format "The article contains a %s command. Really post? "
+                  (format "The article contains a %s command.  Really post? "
                           (buffer-substring (match-beginning 0) 
                                             (1- (match-end 0)))))
                t)))
@@ -1654,9 +1656,9 @@ to find out how to use this."
            (save-excursion
              (if (re-search-forward "^Approved:" nil t)
                  (y-or-n-p
-                  "The article contains an Approved header. Really post? ")
+                  "The article contains an Approved header.  Really post? ")
                t)))
-       ;; Check the Message-Id header.
+       ;; Check the Message-ID header.
        (or (message-check-element 'message-id)
            (save-excursion
              (let* ((case-fold-search t)
@@ -1666,7 +1668,7 @@ to find out how to use this."
                         (string-match "@[^\\.]*\\." message-id))
                    (y-or-n-p
                     (format 
-                     "The Message-ID looks strange: \"%s\". Really post? "
+                     "The Message-ID looks strange: \"%s\".  Really post? "
                      message-id))))))
        ;; Check the Subject header.
        (or 
@@ -1791,13 +1793,13 @@ to find out how to use this."
        (save-excursion
         (if (re-search-forward "[\000-\007\013\015-\037\200-\237]" nil t)
             (y-or-n-p 
-             "The article contains control characters. Really post? ")
+             "The article contains control characters.  Really post? ")
           t)))
    ;; Check excessive size.
    (or (message-check-element 'size)
        (if (> (buffer-size) 60000)
           (y-or-n-p
-           (format "The article is %d octets long. Really post? "
+           (format "The article is %d octets long.  Really post? "
                    (buffer-size)))
         t))
    ;; Check whether any new text has been added.
@@ -2099,7 +2101,7 @@ to find out how to use this."
          (goto-char fullname-start)
          (while (re-search-forward 
                  "\\(\\=\\|[^\\]\\(\\\\\\\\\\)*\\)\\\\(\\(\\([^\\]\\|\\\\\\\\\\)*\\)\\\\)"
-                   nil 1)
+                 nil 1)
            (replace-match "\\1(\\3)" t)
            (goto-char fullname-start)))
        (insert ")")))
@@ -2185,7 +2187,7 @@ Headers already prepared in the buffer are not modified."
               (message-delete-line))
          (pop headers)))
       ;; Go through all the required headers and see if they are in the
-      ;; articles already. If they are not, or are empty, they are
+      ;; articles already.  If they are not, or are empty, they are
       ;; inserted automatically - except for Subject, Newsgroups and
       ;; Distribution. 
       (while headers
@@ -2200,7 +2202,7 @@ Headers already prepared in the buffer are not modified."
                        (concat "^" (downcase (symbol-name header)) ":") 
                        nil t))
                  (progn
-                   ;; The header was found. We insert a space after the
+                   ;; The header was found.  We insert a space after the
                    ;; colon, if there is none.
                    (if (/= (following-char) ? ) (insert " ") (forward-char 1))
                    ;; Find out whether the header is empty...
@@ -2278,19 +2280,19 @@ Headers already prepared in the buffer are not modified."
 (defun message-insert-courtesy-copy ()
   "Insert a courtesy message in mail copies of combined messages."
   (let (newsgroups)
-  (save-excursion
-    (save-restriction
-      (message-narrow-to-headers)
-      (when (setq newsgroups (message-fetch-field "newsgroups"))
-       (goto-char (point-max))
-       (insert "Posted-To: " newsgroups "\n")))
-    (forward-line 1)
-    (when message-courtesy-message
-      (cond
-       ((string-match "%s" message-courtesy-message)
-       (insert (format message-courtesy-message newsgroups)))
-       (t
-       (insert message-courtesy-message)))))))
+    (save-excursion
+      (save-restriction
+       (message-narrow-to-headers)
+       (when (setq newsgroups (message-fetch-field "newsgroups"))
+         (goto-char (point-max))
+         (insert "Posted-To: " newsgroups "\n")))
+      (forward-line 1)
+      (when message-courtesy-message
+       (cond
+        ((string-match "%s" message-courtesy-message)
+         (insert (format message-courtesy-message newsgroups)))
+        (t
+         (insert message-courtesy-message)))))))
     
 ;;;
 ;;; Setting up a message buffer
@@ -2602,7 +2604,7 @@ Headers already prepared in the buffer are not modified."
                                    (lambda (addr) (cdr addr)) ccalist ", "))))
                (when (string-match "^ +" (cdr ccs))
                  (setcdr ccs (substring (cdr ccs) (match-end 0))))
-             (push ccs follow-to))))))
+               (push ccs follow-to))))))
       (widen))
 
     (message-pop-to-buffer (message-buffer-name
@@ -2709,7 +2711,7 @@ used to direct the following discussion to one newsgroup only,
 because discussions that are spread over several newsgroup tend to
 be fragmented and very difficult to follow.
 
-Also, some source/announcment newsgroups are not indented for discussion;
+Also, some source/announcement newsgroups are not indented for discussion;
 responses here are directed to other newsgroups."))
                  (cons 'Newsgroups followup-to)
                (cons 'Newsgroups newsgroups))))))
@@ -2822,7 +2824,8 @@ header line with the old Message-ID."
 
 (defun message-make-forward-subject ()
   "Return a Subject header suitable for the message in the current buffer."
-  (concat "[" (or (message-fetch-field (if (message-news-p) "newsgroups" "from"))
+  (concat "[" (or (message-fetch-field 
+                  (if (message-news-p) "newsgroups" "from"))
                  "(nowhere)")
          "] " (or (message-fetch-field "Subject") "")))
 
@@ -2866,6 +2869,7 @@ Optional NEWS will use news to forward instead of mail."
 (defun message-resend (address)
   "Resend the current article to ADDRESS."
   (interactive "sResend message to: ")
+  (message "Resending message to %s..." address)
   (save-excursion
     (let ((cur (current-buffer))
          beg)
@@ -2901,7 +2905,8 @@ Optional NEWS will use news to forward instead of mail."
        (insert "Also-"))
       ;; Send it.
       (message-send-mail)
-      (kill-buffer (current-buffer)))))
+      (kill-buffer (current-buffer)))
+    (message "Resending message to %s...done" address)))
 
 ;;;###autoload
 (defun message-bounce ()
@@ -3011,13 +3016,13 @@ Called from program, takes two arguments START and END
 which specify the range to operate on."
   (interactive "r")
   (save-excursion
-   (let ((end1 (make-marker)))
-     (move-marker end1 (max start end))
-     (goto-char (min start end))
-     (while (< (point) end1)
-       (or (looking-at "[_\^@- ]")
-          (insert (following-char) "\b"))
-       (forward-char 1)))))
+    (let ((end1 (make-marker)))
+      (move-marker end1 (max start end))
+      (goto-char (min start end))
+      (while (< (point) end1)
+       (or (looking-at "[_\^@- ]")
+           (insert (following-char) "\b"))
+       (forward-char 1)))))
 
 ;;;###autoload
 (defun unbold-region (start end)
@@ -3026,12 +3031,12 @@ Called from program, takes two arguments START and END
 which specify the range to operate on."
   (interactive "r")
   (save-excursion
-   (let ((end1 (make-marker)))
-     (move-marker end1 (max start end))
-     (goto-char (min start end)) 
-     (while (re-search-forward "\b" end1 t)
-       (if (eq (following-char) (char-after (- (point) 2)))
-          (delete-char -2))))))
+    (let ((end1 (make-marker)))
+      (move-marker end1 (max start end))
+      (goto-char (min start end)) 
+      (while (re-search-forward "\b" end1 t)
+       (if (eq (following-char) (char-after (- (point) 2)))
+           (delete-char -2))))))
 
 (defalias 'message-exchange-point-and-mark 'exchange-point-and-mark)