*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 5 Mar 1997 05:36:56 +0000 (05:36 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 5 Mar 1997 05:36:56 +0000 (05:36 +0000)
13 files changed:
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-group.el
lisp/gnus-msg.el
lisp/gnus-start.el
lisp/gnus-topic.el
lisp/gnus-util.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/message.el
lisp/nnml.el
lisp/nntp.el
lisp/smiley.el

index 393e893..00baf05 100644 (file)
@@ -1,3 +1,79 @@
+Sat Feb  1 14:19:54 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Gnus v5.4.9 is released.
+
+Sat Feb  1 13:30:33 1997  Hrvoje Niksic  <hniksic@srce.hr>
+
+       * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Insert
+       "-*- emacs-lisp -*-" at the first line.
+
+Sat Feb  1 13:23:19 1997  Mark Borges  <mdb@cdc.noaa.gov>
+
+       * gnus-xmas.el (gnus-xmas-define): Do the right characterp thing. 
+
+Sat Feb  1 12:28:33 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * smiley.el (smiley-mouse-face): New variable.
+       (smiley-buffer): Use it.
+
+       * gnus-start.el (gnus-gnus-to-quick-newsrc-format): Use gnus-prin1.
+
+       * gnus-util.el (gnus-prin1): Bind print-level and print-length to
+       nil 
+
+       * gnus-art.el (gnus-button-alist): Let mailto: be less greedy.
+       (gnus-button-alist): Ditto with news:.
+
+       * gnus-topic.el (gnus-topic-unmark-topic): Let groups be unmarked.
+
+       * gnus.el (gnus-read-group): Place point at bol.
+
+       * gnus-util.el ((fboundp 'point-at-bol)): Use the functions if
+       they exist. 
+
+       * gnus-msg.el (gnus-summary-supersede-article): Mark article as
+       canceled. 
+
+Wed Jan 29 22:28:44 1997  Steven L Baur  <steve@altair.xemacs.org>
+
+       * gnus-xmas.el (gnus-xmas-define): Correct XEmacs version test to
+       handle v20.
+
+Sat Feb  1 12:19:14 1997  Katsumi Yamaoka  <yamaoka@ga.sony.co.jp>
+
+       * nnml.el (nnml-generate-active-info): Don't bug out.
+
+Sat Feb  1 00:52:03 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * message.el (message-fcc-handler-function): Changed default.
+       (message-output): New function.
+       (message-do-fcc): Use it.
+
+       * gnus-util.el (gnus-convert-article-to-rmail,
+       gnus-output-to-rmail): Moved here.
+
+       * message.el (message-check-news-header-syntax): Allow trailing
+       periods. 
+       (message-check-news-header-syntax): Don't allow trailing periods. 
+
+Fri Jan 31 22:18:03 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * message.el (message-resend): Rename "From ".
+
+       * nntp.el (nntp-accept-process-output): Use nnheader-message.
+
+Fri Jan 31 11:51:18 1997  Katsumi Yamaoka  <yamaoka@ga.sony.co.jp>
+
+       * nnml.el (nnml-generate-nov-databases-1): Sort the file alist. 
+
+Thu Jan 30 13:13:39 1997  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * gnus.el: More cleanup of customization groups.
+
+Thu Jan 30 04:33:01 1997  Sudish Joseph  <sudish@mindspring.com>
+
+       * gnus-xmas.el (gnus-xmas-define): Use `char-or-char-int-p'. 
+
 Thu Jan 30 04:15:28 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.4.8 is released.
index 2053dae..a47beb0 100644 (file)
@@ -1453,10 +1453,10 @@ Directory to save to is default to `gnus-article-save-directory'."
       (save-excursion
        (save-restriction
          (widen)
-         (if (and (file-readable-p filename) (mail-file-babyl-p filename))
-             (gnus-output-to-rmail filename)
-           (let ((mail-use-rfc822 t))
-             (rmail-output filename 1 t t))))))
+         (if (and (file-readable-p filename)
+                  (mail-file-babyl-p filename))
+             (gnus-output-to-rmail filename t)
+           (gnus-output-to-mail filename t)))))
     ;; Remember the directory name to save articles.
     (setq gnus-newsgroup-last-mail filename)))
 
@@ -1953,56 +1953,6 @@ Provided for backwards compatibility."
 
 ;;; Article savers.
 
-(defun gnus-output-to-rmail (file-name)
-  "Append the current article to an Rmail file named FILE-NAME."
-  (require 'rmail)
-  ;; Most of these codes are borrowed from rmailout.el.
-  (setq file-name (expand-file-name file-name))
-  (setq rmail-default-rmail-file file-name)
-  (let ((artbuf (current-buffer))
-       (tmpbuf (get-buffer-create " *Gnus-output*")))
-    (save-excursion
-      (or (get-file-buffer file-name)
-         (file-exists-p file-name)
-         (if (gnus-yes-or-no-p
-              (concat "\"" file-name "\" does not exist, create it? "))
-             (let ((file-buffer (create-file-buffer file-name)))
-               (save-excursion
-                 (set-buffer file-buffer)
-                 (rmail-insert-rmail-file-header)
-                 (let ((require-final-newline nil))
-                   (gnus-write-buffer file-name)))
-               (kill-buffer file-buffer))
-           (error "Output file does not exist")))
-      (set-buffer tmpbuf)
-      (buffer-disable-undo (current-buffer))
-      (erase-buffer)
-      (insert-buffer-substring artbuf)
-      (gnus-convert-article-to-rmail)
-      ;; Decide whether to append to a file or to an Emacs buffer.
-      (let ((outbuf (get-file-buffer file-name)))
-       (if (not outbuf)
-           (append-to-file (point-min) (point-max) file-name)
-         ;; File has been visited, in buffer OUTBUF.
-         (set-buffer outbuf)
-         (let ((buffer-read-only nil)
-               (msg (and (boundp 'rmail-current-message)
-                         (symbol-value 'rmail-current-message))))
-           ;; If MSG is non-nil, buffer is in RMAIL mode.
-           (when msg
-             (widen)
-             (narrow-to-region (point-max) (point-max)))
-           (insert-buffer-substring tmpbuf)
-           (when msg
-             (goto-char (point-min))
-             (widen)
-             (search-backward "\^_")
-             (narrow-to-region (point) (point-max))
-             (goto-char (1+ (point-min)))
-             (rmail-count-new-messages t)
-             (rmail-show-message msg))))))
-    (kill-buffer tmpbuf)))
-
 (defun gnus-output-to-file (file-name)
   "Append the current article to a file named FILE-NAME."
   (let ((artbuf (current-buffer)))
@@ -2014,18 +1964,6 @@ Provided for backwards compatibility."
       (insert "\n")
       (append-to-file (point-min) (point-max) file-name))))
 
-(defun gnus-convert-article-to-rmail ()
-  "Convert article in current buffer to Rmail message format."
-  (let ((buffer-read-only nil))
-    ;; Convert article directly into Babyl format.
-    ;; Suggested by Rob Austein <sra@lcs.mit.edu>
-    (goto-char (point-min))
-    (insert "\^L\n0, unseen,,\n*** EOOH ***\n")
-    (while (search-forward "\n\^_" nil t) ;single char
-      (replace-match "\n^_" t t))      ;2 chars: "^" and "_"
-    (goto-char (point-max))
-    (insert "\^_")))
-
 (defun gnus-narrow-to-page (&optional arg)
   "Narrow the article buffer to a page.
 If given a numerical ARG, move forward ARG pages."
@@ -2517,13 +2455,16 @@ groups."
   :type 'regexp)
 
 (defcustom gnus-button-alist 
-  `(("\\(\\b<?\\(url: ?\\)?news:\\([^>\n\t ]*\\)>?\\)" 1 t
+  `(("\\(\\b<\\(url: ?\\)?news:\\([^>\n\t ]*\\)>\\)" 1 t
      gnus-button-message-id 3)
-    ("\\(\\b<?\\(url: ?\\)?news:\\(//\\)?\\([^>\n\t ]*\\)>?\\)" 1 t
+    ("\\bnews:\\([^\n\t ]+\\)" 0 t gnus-button-message-id 1)
+    ("\\(\\b<\\(url: ?\\)?news:\\(//\\)?\\([^>\n\t ]*\\)>\\)" 1 t
      gnus-button-fetch-group 4)
+    ("\\bnews:\\(//\\)?\\([^>\n\t ]+\\)" 0 t gnus-button-fetch-group 2)
     ("\\bin\\( +article\\)? +\\(<\\([^\n @<>]+@[^\n @<>]+\\)>\\)" 2 
      t gnus-button-message-id 3)
-    ("\\(<URL: *\\)?mailto: *\\([^> \n\t]+\\)>?" 0 t gnus-url-mailto 2)
+    ("\\(<URL: *\\)mailto: *\\([^> \n\t]+\\)>" 0 t gnus-url-mailto 1)
+    ("\\bmailto:\\([^ \n\t]+\\)" 0 t gnus-url-mailto 2)
     ;; This is how URLs _should_ be embedded in text...
     ("<URL: *\\([^>]*\\)>" 0 t gnus-button-embedded-url 1)
     ;; Raw URLs.
index 4f8c2dc..b6798d1 100644 (file)
@@ -46,8 +46,7 @@
   :group 'gnus-group-foreign
   :type 'directory)
 
-;; Suggested by Andrew Eskilsson <pi92ae@lelle.pt.hk-r.se>.
-(defcustom gnus-no-groups-message "No news is horrible news"
+(defcustom gnus-no-groups-message "No news is no news"
   "*Message displayed by Gnus when no groups are available."
   :group 'gnus-start
   :type 'string)
@@ -1827,15 +1826,14 @@ and NEW-NAME will be prompted for."
       (unless (gnus-check-backend-function
               'request-rename-group (gnus-group-group-name))
        (error "This backend does not support renaming groups"))
-      (gnus-read-group "Rename group to: " (gnus-group-group-name)))))
+      (gnus-read-group "Rename group to: "
+                      (gnus-group-real-name (gnus-group-group-name))))))
 
   (unless (gnus-check-backend-function 'request-rename-group group)
     (error "This backend does not support renaming groups"))
   (unless group 
     (error "No group to rename"))
-  (when (string-match "^[ \t]*$" new-name)
-    (error "Not a valid group name"))
-  (when (equal group new-name)
+  (when (equal (gnus-group-real-name group) new-name)
     (error "Can't rename to the same name"))
 
   ;; We find the proper prefixed name.
index cdcbd68..7d72d54 100644 (file)
@@ -309,6 +309,13 @@ header line with the old Message-ID."
       (push
        `((lambda ()
           (gnus-cache-possibly-remove-article ,article nil nil nil t)))
+       message-send-actions)
+      (push
+       `((lambda ()
+          (when (buffer-name (get-buffer ,gnus-summary-buffer))
+            (save-excursion
+              (set-buffer (get-buffer ,gnus-summary-buffer))
+              (gnus-summary-mark-as-read ,article gnus-canceled-mark)))))
        message-send-actions))))
 
 \f
index 6e24f90..ef715fb 100644 (file)
@@ -2183,6 +2183,7 @@ If FORCE is non-nil, the .newsrc file is read."
 (defun gnus-gnus-to-quick-newsrc-format ()
   "Insert Gnus variables such as gnus-newsrc-alist in lisp format."
   (let ((print-quoted t))
+    (insert ";; -*- emacs-lisp -*-\n")
     (insert ";; Gnus startup file.\n")
     (insert
      ";; Never delete this file - touch .newsrc instead to force Gnus\n")
@@ -2201,15 +2202,13 @@ If FORCE is non-nil, the .newsrc file is read."
              (delq 'gnus-killed-list (copy-sequence gnus-variable-list))))
           ;; Peel off the "dummy" group.
           (gnus-newsrc-alist (cdr gnus-newsrc-alist))
-          ;; Make sure the printing isn't abbreviated.
-          (print-length nil)
           variable)
       ;; Insert the variables into the file.
       (while variables
        (when (and (boundp (setq variable (pop variables)))
                   (symbol-value variable))
          (insert "(setq " (symbol-name variable) " '")
-         (prin1 (symbol-value variable) (current-buffer))
+         (gnus-prin1 (symbol-value variable))
          (insert ")\n"))))))
 
 (defun gnus-strip-killed-list ()
index 4f22227..894d80b 100644 (file)
@@ -1147,7 +1147,7 @@ If COPYP, copy the groups instead."
   "Remove the process mark from all groups in the topic."
   (interactive (list (gnus-group-topic-name)))
   (if (not topic)
-      (call-interactively 'gnus-group-mark-group)
+      (call-interactively 'gnus-group-unmark-group)
     (gnus-topic-mark-topic topic t)))
 
 (defun gnus-topic-get-new-news-this-topic (&optional n)
index 5953306..d3f9f38 100644 (file)
      (when (gnus-buffer-exists-p buf)
        (kill-buffer buf))))
 
-(defsubst gnus-point-at-bol ()
-  "Return point at the beginning of the line."
-  (let ((p (point)))
-    (beginning-of-line)
-    (prog1
-       (point)
-      (goto-char p))))
-
-(defsubst gnus-point-at-eol ()
-  "Return point at the end of the line."
-  (let ((p (point)))
-    (end-of-line)
-    (prog1
-       (point)
-      (goto-char p))))
+(if (fboundp 'point-at-bol)
+    (fset 'gnus-point-at-bol 'point-at-bol)
+  (defsubst gnus-point-at-bol ()
+    "Return point at the beginning of the line."
+    (let ((p (point)))
+      (beginning-of-line)
+      (prog1
+         (point)
+       (goto-char p)))))
+
+(if (fboundp 'point-at-eol)
+    (fset 'gnus-point-at-eol 'point-at-eol)
+  (defsubst gnus-point-at-eol ()
+    "Return point at the end of the line."
+    (let ((p (point)))
+      (end-of-line)
+      (prog1
+         (point)
+       (goto-char p)))))
 
 (defun gnus-delete-first (elt list)
   "Delete by side effect the first occurrence of ELT as a member of LIST."
@@ -570,7 +574,8 @@ Timezone package is used."
 (defun gnus-prin1 (form)
   "Use `prin1' on FORM in the current buffer.
 Bind `print-quoted' to t while printing."
-  (let ((print-quoted t))
+  (let ((print-quoted t)
+       print-level print-length)
     (prin1 form (current-buffer))))
 
 (defun gnus-prin1-to-string (form)
@@ -697,6 +702,105 @@ with potentially long computations."
 ;(put 'gnus-atomic-setq 'edebug-form-spec '(body))
 
 
+;;; Functions for saving to babyl/mail files.
+
+(defun gnus-output-to-rmail (filename &optional ask)
+  "Append the current article to an Rmail file named FILENAME."
+  (require 'rmail)
+  ;; Most of these codes are borrowed from rmailout.el.
+  (setq filename (expand-file-name filename))
+  (setq rmail-default-rmail-file filename)
+  (let ((artbuf (current-buffer))
+       (tmpbuf (get-buffer-create " *Gnus-output*")))
+    (save-excursion
+      (or (get-file-buffer filename)
+         (file-exists-p filename)
+         (if (or (not ask)
+                 (gnus-yes-or-no-p
+                  (concat "\"" filename "\" does not exist, create it? ")))
+             (let ((file-buffer (create-file-buffer filename)))
+               (save-excursion
+                 (set-buffer file-buffer)
+                 (rmail-insert-rmail-file-header)
+                 (let ((require-final-newline nil))
+                   (gnus-write-buffer filename)))
+               (kill-buffer file-buffer))
+           (error "Output file does not exist")))
+      (set-buffer tmpbuf)
+      (erase-buffer)
+      (insert-buffer-substring artbuf)
+      (gnus-convert-article-to-rmail)
+      ;; Decide whether to append to a file or to an Emacs buffer.
+      (let ((outbuf (get-file-buffer filename)))
+       (if (not outbuf)
+           (append-to-file (point-min) (point-max) filename)
+         ;; File has been visited, in buffer OUTBUF.
+         (set-buffer outbuf)
+         (let ((buffer-read-only nil)
+               (msg (and (boundp 'rmail-current-message)
+                         (symbol-value 'rmail-current-message))))
+           ;; If MSG is non-nil, buffer is in RMAIL mode.
+           (when msg
+             (widen)
+             (narrow-to-region (point-max) (point-max)))
+           (insert-buffer-substring tmpbuf)
+           (when msg
+             (goto-char (point-min))
+             (widen)
+             (search-backward "\^_")
+             (narrow-to-region (point) (point-max))
+             (goto-char (1+ (point-min)))
+             (rmail-count-new-messages t)
+             (rmail-show-message msg))))))
+    (kill-buffer tmpbuf)))
+
+(defun gnus-output-to-mail (filename &optional ask)
+  "Append the current article to a mail file named FILENAME."
+  (setq filename (expand-file-name filename))
+  (let ((artbuf (current-buffer))
+       (tmpbuf (get-buffer-create " *Gnus-output*")))
+    (save-excursion
+      ;; Create the file, if it doesn't exist.
+      (when (and (not (get-file-buffer filename))
+                (not (file-exists-p filename)))
+       (if (or (not ask)
+               (gnus-yes-or-no-p
+                (concat "\"" filename "\" does not exist, create it? ")))
+           (let ((file-buffer (create-file-buffer filename)))
+             (save-excursion
+               (set-buffer file-buffer)
+               (let ((require-final-newline nil))
+                 (gnus-write-buffer filename)))
+             (kill-buffer file-buffer))
+         (error "Output file does not exist")))
+      (set-buffer tmpbuf)
+      (erase-buffer)
+      (insert-buffer-substring artbuf)
+      (goto-char (point-min))
+      (unless (looking-at "From ")
+       (insert "From nobody " (current-time-string) "\n"))
+      ;; Decide whether to append to a file or to an Emacs buffer.
+      (let ((outbuf (get-file-buffer filename)))
+       (if (not outbuf)
+           (append-to-file (point-min) (point-max) filename)
+         ;; File has been visited, in buffer OUTBUF.
+         (set-buffer outbuf)
+         (let ((buffer-read-only nil))
+           (goto-char (point-max))
+           (insert-buffer-substring tmpbuf)))))
+    (kill-buffer tmpbuf)))
+
+(defun gnus-convert-article-to-rmail ()
+  "Convert article in current buffer to Rmail message format."
+  (let ((buffer-read-only nil))
+    ;; Convert article directly into Babyl format.
+    (goto-char (point-min))
+    (insert "\^L\n0, unseen,,\n*** EOOH ***\n")
+    (while (search-forward "\n\^_" nil t) ;single char
+      (replace-match "\n^_" t t))      ;2 chars: "^" and "_"
+    (goto-char (point-max))
+    (insert "\^_")))
+
 (provide 'gnus-util)
 
 ;;; gnus-util.el ends here
index ee3bc36..581f819 100644 (file)
@@ -381,7 +381,14 @@ call it with the value of the `gnus-data' text property."
   (unless (face-differs-from-default-p 'underline)
     (funcall (intern "set-face-underline-p") 'underline t))
 
-  (fset 'gnus-characterp 'characterp)
+  (cond
+   ((fboundp 'char-or-char-int-p)
+    ;; Handle both types of marks for XEmacs-20.x.
+    (fset 'gnus-characterp 'char-or-char-int-p))
+   ;; V19 of XEmacs, probably.
+   (t
+    (fset 'gnus-characterp 'characterp)))
+
   (fset 'gnus-make-overlay 'make-extent)
   (fset 'gnus-overlay-put 'set-extent-property)
   (fset 'gnus-move-overlay 'gnus-xmas-move-overlay)
@@ -391,8 +398,9 @@ call it with the value of the `gnus-data' text property."
   (fset 'gnus-put-text-property 'gnus-xmas-put-text-property)
       
   (require 'text-props)
-  (when (< emacs-minor-version 14)
-    (fset 'gnus-set-text-properties 'gnus-xmas-set-text-properties))
+  (if (and (<= emacs-major-version 19)
+          (< emacs-minor-version 14))
+      (fset 'gnus-set-text-properties 'gnus-xmas-set-text-properties))
 
   (when (fboundp 'turn-off-scroll-in-place)
     (add-hook 'gnus-article-mode-hook 'turn-off-scroll-in-place))
index 395e46d..041eab7 100644 (file)
   :link '(custom-manual "(gnus)Various Summary Stuff")
   :group 'gnus-summary)
 
-;; Belongs to to gnus-uu.el
+;; Belongs to gnus-uu.el
 (defgroup gnus-extract-view nil
   "Viewing extracted files."
   :link '(custom-manual "(gnus)Viewing Files")
   :group 'gnus-extract)
 
-;; Other
+;; Belongs to gnus-score.el
 (defgroup gnus-score nil
   "Score and kill file handling."
-  :group 'gnus )
+  :group 'gnus)
 
-(defgroup gnus-exit nil
-  "Exiting gnus."
-  :link '(custom-manual "(gnus)Exiting Gnus")
+(defgroup gnus-score-kill nil
+  "Kill files."
+  :group 'gnus-score)
+
+(defgroup gnus-score-adapt nil
+  "Adaptive score files."
+  :group 'gnus-score)
+
+(defgroup gnus-score-files nil
+  "Score and kill file names."
+  :group 'gnus-score
+  :group 'gnus-files)
+
+(defgroup gnus-score-various nil
+  "Various scoring and killing options."
+  :group 'gnus-score)
+
+;; Other
+(defgroup gnus-visual nil
+  "Options controling the visual fluff."
+  :group 'gnus)
+
+(defgroup gnus-mail-expire nil
+  "Expiring articles in mail backends."
+  :group 'gnus-mail)
+
+(defgroup gnus-files nil
+  "Files used by Gnus."
+  :group 'gnus)
+
+(defgroup gnus-server nil
+  "Options related to newsservers and other servers used by Gnus."
+  :group 'gnus)
+
+(defgroup gnus-message '((message custom-group))
+  "Composing replies and followups in Gnus."
+  :group 'gnus)
+
+(defgroup gnus-meta nil
+  "Meta variables controling major portions of Gnus.
+In general, modifying these variables does not take affect until Gnus
+is restarted, and sometimes reloaded."
   :group 'gnus)
 
 (defgroup gnus-various nil
   :link '(custom-manual "(gnus)Various Various")
   :group 'gnus)
 
-(defconst gnus-version-number "5.4.8"
+(defgroup gnus-exit nil
+  "Exiting gnus."
+  :link '(custom-manual "(gnus)Exiting Gnus")
+  :group 'gnus)
+
+(defconst gnus-version-number "5.4.9"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
@@ -640,20 +684,14 @@ be set in `.emacs' instead."
 (require 'gnus-util)
 (require 'nnheader)
 
-(defgroup gnus-meta nil
-  "Meta variables controling major portions of Gnus.
-In general, modifying these variables does not take affect until Gnus
-is restarted, and sometimes reloaded."
-  :group 'gnus)
-
 (defcustom gnus-directory (or (getenv "SAVEDIR") "~/News/")
   "Directory variable from which all other Gnus file variables are derived."
-  :group 'gnus-meta
+  :group 'gnus-files
   :type 'directory)
 
 (defcustom gnus-default-directory nil
   "*Default directory for all Gnus buffers."
-  :group 'gnus-start
+  :group 'gnus-files
   :type '(choice (const :tag "current" nil)
                 directory))
 
@@ -678,7 +716,8 @@ used to 899, you would say something along these lines:
 
 (defcustom gnus-nntpserver-file "/etc/nntpserver"
   "A file with only the name of the nntp server in it."
-  :group 'gnus-start
+  :group 'gnus-files
+  :group 'gnus-server
   :type 'file)
 
 ;; This function is used to check both the environment variable
@@ -728,7 +767,7 @@ If you use this variable, you must set `gnus-nntp-server' to nil.
 
 There is a lot more to know about select methods and virtual servers -
 see the manual for details."
-  :group 'gnus-start
+  :group 'gnus-server
   :type 'gnus-select-method)
 
 (defcustom gnus-message-archive-method 
@@ -745,13 +784,10 @@ This should be a mail method.
 It's probably not a very effective to change this variable once you've
 run Gnus once.  After doing that, you must edit this server from the
 server buffer."
-  :group 'gnus-start
+  :group 'gnus-server
+  :group 'gnus-message
   :type 'gnus-select-method)
 
-(defgroup gnus-message '((message custom-group))
-  "Interface from gnus to message mode."
-  :group 'gnus)
-
 (defcustom gnus-message-archive-group nil
   "*Name of the group in which to save the messages you've written.
 This can either be a string, a list of strings; or an alist
@@ -780,14 +816,14 @@ that case, just return a fully prefixed name of the group --
   "List of NNTP servers that the user can choose between interactively.
 To make Gnus query you for a server, you have to give `gnus' a
 non-numeric prefix - `C-u M-x gnus', in short."
-  :group 'gnus-start
+  :group 'gnus-server
   :type '(repeat string))
 
 (defcustom gnus-nntp-server nil
   "*The name of the host running the NNTP server.
 This variable is semi-obsolete.         Use the `gnus-select-method'
 variable instead."
-  :group 'gnus-start
+  :group 'gnus-server
   :type '(choice (const :tag "disable" nil)
                 string))
 
@@ -800,7 +836,7 @@ If, for instance, you want to read your mail with the nnml backend,
 you could set this variable:
 
 \(setq gnus-secondary-select-methods '((nnml \"\")))"
-:group 'gnus-start
+:group 'gnus-server
 :type '(repeat gnus-select-method))
 
 (defvar gnus-backup-default-subscribed-newsgroups
@@ -813,7 +849,7 @@ Should be set in paths.el, and shouldn't be touched by the user.")
 The DOMAINNAME environment variable is used instead if it is defined.
 If the `system-name' function returns the full Internet name, there is
 no need to set this variable."
-  :group 'gnus-start
+  :group 'gnus-message
   :type '(choice (const :tag "default" nil)
                 string))
 
@@ -827,7 +863,7 @@ return a string.
 In any case, if the string (either in the variable, in the environment
 variable, or returned by the function) is a file name, the contents of
 this file will be used as the organization."
-  :group 'gnus-start
+  :group 'gnus-message
   :type '(choice (const :tag "default" nil)
                 string))
 
@@ -841,7 +877,7 @@ nntp method, you might get acceptable results.
 
 The value of this variable must be a valid select method as discussed
 in the documentation of `gnus-select-method'."
-  :group 'gnus-start
+  :group 'gnus-server
   :type '(choice (const :tag "default" nil)
                 gnus-select-method))
 
@@ -890,7 +926,7 @@ If the default site is too slow, try one of these:
 If nil, ignore cross references.  If t, mark articles as read in
 subscribed newsgroups. If neither t nor nil, mark as read in all
 newsgroups."
-  :group 'gnus-start
+  :group 'gnus-server
   :type '(choice (const :tag "off" nil)
                 (const :tag "subscribed" t)
                 (sexp :format "all"
@@ -898,12 +934,13 @@ newsgroups."
 
 (defcustom gnus-process-mark ?#
   "*Process mark."
-  :group 'gnus-start
+  :group 'gnus-group-visual
+  :group 'gnus-summary-marks
   :type 'character)
 
 (defcustom gnus-asynchronous nil
   "*If non-nil, Gnus will supply backends with data needed for async article fetching."
-  :group 'gnus-start
+  :group 'gnus-asynchronous
   :type 'boolean)
 
 (defcustom gnus-large-newsgroup 200
@@ -931,12 +968,13 @@ to nil while on all other systems it defaults to t."
 
 (defcustom gnus-kill-files-directory gnus-directory
   "*Name of the directory where kill files will be stored (default \"~/News\")."
-  :group 'gnus-score
+  :group 'gnus-score-files
+  :group 'gnus-score-kill
   :type 'directory)
 
 (defcustom gnus-save-score nil
   "*If non-nil, save group scoring info."
-  :group 'gnus-score
+  :group 'gnus-score-various
   :group 'gnus-start
   :type 'boolean)
 
@@ -951,6 +989,7 @@ If a list, then the values `word' and `line' are meaningful.  The
 former will perform adaption on individual words in the subject
 header while `line' will perform adaption on several headers."
   :group 'gnus-meta
+  :group 'gnus-score-adapt
   :type '(set (const word) (const line)))
 
 (defcustom gnus-use-cache 'passive
@@ -1046,7 +1085,7 @@ Two pre-defined function exist: `gnus-extract-address-components',
 which is the default, quite fast, and too simplistic solution, and
 `mail-extract-address-components', which works much better, but is
 slower."
-  :group 'gnus-start
+  :group 'gnus-summary-format
   :type '(radio (function-item gnus-extract-address-components)
                (function-item mail-extract-address-components)
                (function :tag "Other")))
@@ -1058,7 +1097,7 @@ slower."
 
 (defcustom gnus-shell-command-separator ";"
   "String used to separate to shell commands."
-  :group 'gnus-start
+  :group 'gnus-files
   :type 'string)
 
 (defcustom gnus-valid-select-methods
@@ -1085,7 +1124,7 @@ this method (i. e., `post', `mail', `none' or whatever) or other
 properties that this method has (like being respoolable).
 If you implement a new select method, all you should have to change is
 this variable. I think."
-  :group 'gnus-start
+  :group 'gnus-server
   :type '(repeat (group (string :tag "Name")
                        (radio-button-choice (const :format "%v " post)
                                             (const :format "%v " mail)
@@ -1116,7 +1155,7 @@ The list may contain the symbols `group', `article', `tree' and
 `summary'.  If the corresponding symbol is present, Gnus will keep
 that mode line updated with information that may be pertinent.
 If this variable is nil, screen refresh may be quicker."
-  :group 'gnus-start
+  :group 'gnus-various
   :type '(set (const group)
              (const article)
              (const summary)
@@ -1127,7 +1166,7 @@ If this variable is nil, screen refresh may be quicker."
   "*Max length of mode-line non-string contents.
 If this is nil, Gnus will take space as is needed, leaving the rest
 of the modeline intact."
-  :group 'gnus-start
+  :group 'gnus-various
   :type '(choice (const nil)
                 integer))
 
@@ -1135,7 +1174,7 @@ of the modeline intact."
   "*Groups in which to automatically mark read articles as expirable.
 If non-nil, this should be a regexp that should match all groups in
 which to perform auto-expiry.  This only makes sense for mail groups."
-  :group 'gnus-mail
+  :group 'gnus-mail-expire
   :type '(choice (const nil)
                 regexp))
 
@@ -1145,7 +1184,7 @@ Use with extreme caution.  All groups that match this regexp will be
 expiring - which means that all read articles will be deleted after
 \(say) one week.        (This only goes for mail groups and the like, of
 course.)"
-  :group 'gnus-mail
+  :group 'gnus-mail-expire
   :type '(choice (const nil)
                 regexp))
 
@@ -1183,22 +1222,18 @@ following hook:
          (cond ((string-match \"control\" gnus-newsgroup-name)
                 (gnus-kill \"Subject\" \"rmgroup\")
                 (gnus-expunge \"X\"))))))"
-  :group 'gnus-score
+  :group 'gnus-score-kill
   :options '(gnus-apply-kill-file)
   :type 'hook)
 
 (defcustom gnus-group-change-level-function nil
   "Function run when a group level is changed.
 It is called with three parameters -- GROUP, LEVEL and OLDLEVEL."
-  :group 'gnus-start
+  :group 'gnus-group-level
   :type 'function)
 
 ;;; Face thingies.
 
-(defgroup gnus-visual nil
-  "Options controling the visual fluff."
-  :group 'gnus)
-
 (defcustom gnus-visual 
   '(summary-highlight group-highlight article-highlight 
                      mouse-face
@@ -2272,7 +2307,8 @@ Returns the number of articles marked as read."
 
 (defcustom gnus-kill-file-name "KILL"
   "Suffix of the kill files."
-  :group 'gnus-score
+  :group 'gnus-score-kill
+  :group 'gnus-score-files
   :type 'string)
 
 (defun gnus-newsgroup-kill-file (newsgroup)
@@ -2393,7 +2429,7 @@ Disallow illegal group names."
       (when (string-match
             "[: `'\"/]\\|^$"
             (setq group (read-string (concat prefix prompt)
-                                     (or default "")
+                                     (cons (or default "") 0)
                                      'gnus-group-history)))
        (setq prefix (format "Illegal group name: \"%s\".  " group)
              group nil)))
index de5481f..a4416d7 100644 (file)
   :type 'function)
 
 ;;;###autoload
-(defcustom message-fcc-handler-function 'rmail-output
+(defcustom message-fcc-handler-function 'message-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
@@ -725,7 +725,9 @@ The cdr of ech entry is a function for applying the face to a region.")
 
 (eval-and-compile
   (autoload 'message-setup-toolbar "messagexmas")
-  (autoload 'mh-send-letter "mh-comp"))
+  (autoload 'mh-send-letter "mh-comp")
+  (autoload 'gnus-output-to-mail "gnus-util")
+  (autoload 'gnus-output-to-rmail "gnus-util"))
 
 \f
 
@@ -2139,15 +2141,17 @@ to find out how to use this."
          (setq file (expand-file-name file))
          (unless (file-exists-p (file-name-directory file))
            (make-directory (file-name-directory file) t))
-         (if (and message-fcc-handler-function
-                  (not (eq message-fcc-handler-function 'rmail-output)))
-             (funcall message-fcc-handler-function file)
-           (if (and (file-readable-p file) (mail-file-babyl-p file))
-               (rmail-output file 1 nil t)
-             (let ((mail-use-rfc822 t))
-               (rmail-output file 1 t t))))))
+         (funcall message-fcc-handler-function file)))
+      
       (kill-buffer (current-buffer)))))
 
+(defun message-output (filename)
+  "Append this article to Unix/babyl mail file.."
+  (if (and (file-readable-p filename)
+          (mail-file-babyl-p filename))
+      (gnus-output-to-rmail filename t)
+    (gnus-output-to-mail filename t)))
+
 (defun message-cleanup-headers ()
   "Do various automatic cleanups of the headers."
   ;; Remove empty lines in the header.
@@ -3183,6 +3187,10 @@ Optional NEWS will use news to forward instead of mail."
       (while (re-search-backward "^\\(Also-\\)?Resent-" beg t)
        (beginning-of-line)
        (insert "Also-"))
+      ;; Quote any "From " lines at the beginning.
+      (goto-char beg)
+      (when (looking-at "From ")
+       (replace-match "X-From-Line: "))
       ;; Send it.
       (message-send-mail)
       (kill-buffer (current-buffer)))
index 62c9fd5..72ba080 100644 (file)
@@ -710,7 +710,8 @@ all.  This may very well take some time.")
                   (file-directory-p dir))
          (nnml-generate-nov-databases-1 dir seen))))
     ;; Do this directory.
-    (let ((files (nreverse (nnheader-article-to-file-alist dir))))
+    (let ((files (sort (nnheader-article-to-file-alist dir)
+                      (lambda (a b) (< (car a) (car b))))))
       (when files
        (funcall nnml-generate-active-function dir)
        ;; Generate the nov file.
@@ -724,10 +725,10 @@ all.  This may very well take some time.")
     (setq nnml-group-alist
          (delq (assoc group nnml-group-alist) nnml-group-alist))
     (push (list group
-               (cons (cdaar files)
+               (cons (caar files)
                      (let ((f files))
                        (while (cdr f) (setq f (cdr f)))
-                       (cdaar f))))
+                       (caar f))))
          nnml-group-alist)))
 
 (defun nnml-generate-nov-file (dir files)
index 6ece559..39147f8 100644 (file)
@@ -225,8 +225,8 @@ server there that you can connect to.  See also `nntp-open-connection-function'"
              (and (numberp nntp-large-newsgroup)
                   (> number nntp-large-newsgroup)
                   (zerop (% received 20))
-                  (message "NNTP: Receiving headers... %d%%"
-                           (/ (* received 100) number)))
+                  (nnheader-message 6 "NNTP: Receiving headers... %d%%"
+                                    (/ (* received 100) number)))
              (nntp-accept-response))))
        ;; Wait for text of last command.
        (goto-char (point-max))
@@ -238,7 +238,7 @@ server there that you can connect to.  See also `nntp-open-connection-function'"
            (nntp-accept-response)))
        (and (numberp nntp-large-newsgroup)
             (> number nntp-large-newsgroup)
-            (message "NNTP: Receiving headers...done"))
+            (nnheader-message 6 "NNTP: Receiving headers...done"))
 
        ;; Now all of replies are received.  Fold continuation lines.
        (nnheader-fold-continuation-lines)
@@ -353,12 +353,12 @@ server there that you can connect to.  See also `nntp-open-connection-function'"
            (and (numberp nntp-large-newsgroup)
                 (> number nntp-large-newsgroup)
                 (zerop (% received 20))
-                (message "NNTP: Receiving articles... %d%%"
-                         (/ (* received 100) number)))
+                (nnheader-message 6 "NNTP: Receiving articles... %d%%"
+                                  (/ (* received 100) number)))
            (nntp-accept-response))))
       (and (numberp nntp-large-newsgroup)
           (> number nntp-large-newsgroup)
-          (message "NNTP: Receiving headers...done"))
+          (nnheader-message 6 "NNTP: Receiving headers...done"))
 
       ;; Now we have all the responses.  We go through the results,
       ;; washes it and copies it over to the server buffer.
@@ -823,7 +823,7 @@ It will prompt for a password."
     (let ((len (/ (point-max) 1024)))
       (unless (< len 10)
        (setq nntp-have-messaged t)
-       (message "nntp read: %dk" len)))
+       (nnheader-message 7 "nntp read: %dk" len)))
     (accept-process-output process 1)))
 
 (defun nntp-accept-response ()
index b9449a7..ebf7cb2 100644 (file)
@@ -131,6 +131,15 @@ If this is a symbol, take its value."
   :type 'string
   :group 'smiley)
 
+(defcustom smiley-mouse-face 'highlight
+  "Face used for mouse highlighting in the smiley buffer.
+
+Smiley buttons will be displayed in this face when the cursor is
+above them."
+  :type 'face
+  :group 'smiley)
+
+
 (defvar smiley-glyph-cache nil)
 (defvar smiley-running-xemacs (string-match "XEmacs" emacs-version))
 
@@ -215,10 +224,10 @@ If this is a symbol, take its value."
                  (set-extent-property ext 'start-open t)
                  (set-extent-property ext 'invisible t)
                  (set-extent-property ext 'keymap smiley-map)
-                 (set-extent-property ext 'mouse-face gnus-article-mouse-face)
+                 (set-extent-property ext 'mouse-face 'smiley-mouse-face)
                  (set-extent-property ext 'intangible t)
                  ;; set annotation params
-                 (set-extent-property ant 'mouse-face gnus-article-mouse-face)
+                 (set-extent-property ant 'mouse-face 'smiley-mouse-face)
                  (set-extent-property ant 'keymap smiley-map)
                  ;; remember each other
                  (set-extent-property ant 'smiley-extent ext)