*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Sun, 23 Nov 1997 15:22:26 +0000 (15:22 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Sun, 23 Nov 1997 15:22:26 +0000 (15:22 +0000)
25 files changed:
lisp/ChangeLog
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-cus.el
lisp/gnus-mh.el
lisp/gnus-msg.el
lisp/gnus-score.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-topic.el
lisp/gnus-util.el
lisp/gnus-win.el
lisp/gnus.el
lisp/lpath.el
lisp/message.el
lisp/nnfolder.el
lisp/nnmail.el
lisp/nnml.el
lisp/nntp.el
lisp/pop3.el
texi/Makefile
texi/dir
texi/gnus.texi
texi/postamble.tex
todo

index 9e05807..d10b6c8 100644 (file)
@@ -1,3 +1,117 @@
+Sun Nov 23 16:21:41 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Quassia Gnus v0.14 is released.
+
+Sun Nov 23 14:04:07 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-start.el (gnus-read-descriptions-file): Make sure Mule is
+       bound.  And gagged.
+
+       * message.el (message-send-mail-with-mh): Use
+       `mh-new-draft-name'. 
+
+       * nnfolder.el (nnfolder-read-folder): Save new buffers.
+
+       * gnus-sum.el (gnus-summary-make-menu-bar): Removed "write to
+       file". 
+
+       * gnus-util.el (gnus-byte-code): Use indirect-function.
+
+       * nntp.el (nntp-open-telnet): Also accept 201.
+
+       * gnus-sum.el (gnus-summary-reparent-thread): Update thread.
+
+       * gnus-score.el (gnus-all-score-files): Don't do anything unless
+       GROUP. 
+
+       * nnmail.el (nnmail-split-it): Save-excursion.
+       (nnmail-group-pathname): Translate file chars.
+
+Sun Nov 23 13:41:10 1997  Gunnar Horrigmo  <horrigmo@online.no>
+
+       * gnus-sum.el (gnus-summary-exit): Don't skip if group
+       disappeared. 
+
+Sun Nov 23 13:32:55 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * nnfolder.el (nnfolder-normalize-buffer): New function.
+       (nnfolder-save-mail): Use it.
+       (nnfolder-request-replace-article): Ditto.
+
+1997-11-19  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * message.el (message-header-lines): New widget.
+       (message-default-headers): Use it.
+       (message-default-mail-headers): Use it.
+       (message-default-news-headers): Use it.
+
+Sun Nov 23 12:44:38 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-win.el (gnus-remove-some-windows): Also delete dead summary
+       windows.
+
+       * gnus-score.el (gnus-score-adaptive): Check whether functions are
+       bound.
+
+Sun Nov 23 12:15:00 1997  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
+
+       * gnus-sum.el (gnus-summary-limit-include-thread): Interactive
+       fix. 
+
+Sun Nov 23 07:06:58 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-sum.el (gnus-summary-reparent-thread): Insert Message-ID in
+       proper place.
+
+Sat Nov 22 18:30:33 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-cus.el (gnus-group-parameters): Add visible.
+
+Sat Nov 22 18:19:39 1997  Kim-Minh Kaplan  <kkaplan@lpthe.jussieu.fr>
+
+       * message.el (message-setup): Add a newline, if necessary.
+
+Sat Nov 22 18:04:34 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-mh.el (gnus-summary-save-in-folder): Fix for default.
+
+Sat Nov 22 18:01:26 1997  Didier Verna  <verna@inf.enst.fr>
+
+       * gnus-sum.el (gnus-summary-remove-bookmark): Interactive spec. 
+
+Mon Nov 17 23:50:51 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-art.el (article-display-x-face): Fold case.
+
+Thu Nov 13 22:57:23 1997  Kenichi Handa  <handa@etl.go.jp>
+
+       * gnus/gnus-start.el (gnus-read-descriptions-file): Decode
+       description if necessary.
+
+       * gnus/nntp.el (nntp-coding-system-for-read): Set default value to
+       binary.
+       (nntp-coding-system-for-write): Likewise.
+
+Thu Nov 13 22:30:19 1997  seokchan lee  <chan@xfer.kren.nm.kr>
+
+       * message.el (message-ignored-supersedes-headers): Ignore more
+       headers. 
+
+Thu Nov 13 22:28:13 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * message.el (message-separator-face): Lightened up.
+       (message-header-other-face): Ditto.
+
+Thu Nov 13 22:22:11 1997  jari aalto  <jari.aalto@poboxes.com>
+
+       * nnmail.el (nnmail-process-mmdf-mail-format): Pop to buffer.
+
+Thu Nov 13 22:09:39 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-start.el (gnus-start-draft-setup): Always create group.
+
+       * gnus-agent.el (gnus-agent-fetch-headers): Translate file chars.
+
 Thu Nov  6 20:43:05 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Quassia Gnus v0.13 is released.
index 853c0ca..5673020 100644 (file)
@@ -608,9 +608,10 @@ the actual number of articles toggled is returned."
            (if (not (re-search-forward "^Message-ID: *<\\([^>\n]+\\)>" nil t))
                (setq id "No-Message-ID-in-article")
              (setq id (buffer-substring (match-beginning 1) (match-end 1))))
-           (write-region (point-min) (point-max)
-                         (concat dir (number-to-string (caar pos)))
-                         nil 'silent)
+           (let ((coding-system-for-write gnus-agent-article-file-coding-system))
+             (write-region (point-min) (point-max)
+                           (concat dir (number-to-string (caar pos)))
+                           nil 'silent))
            (when (setq elem (assq (caar pos) gnus-agent-article-alist))
              (setcdr elem t))
            (gnus-agent-enter-history
@@ -686,7 +687,8 @@ the actual number of articles toggled is returned."
          (when (file-exists-p
                 (setq file (gnus-agent-article-name ".overview" group)))
            (gnus-agent-braid-nov group articles file))
-         (gnus-make-directory (file-name-directory file))
+         (gnus-make-directory (nnheader-translate-file-chars
+                               (file-name-directory file)))
          (write-region (point-min) (point-max) file nil 'silent)
          (gnus-agent-save-alist group articles nil))
        t))))
index c5875af..feb804a 100644 (file)
@@ -878,7 +878,7 @@ characters to translate to."
     (when (process-status "article-x-face")
       (delete-process "article-x-face"))
     (let ((inhibit-point-motion-hooks t)
-         (case-fold-search nil)
+         (case-fold-search t)
          from)
       (save-restriction
        (nnheader-narrow-to-headers)
index 37c0bf9..dfbff5d 100644 (file)
@@ -155,7 +155,11 @@ Which articles to display on entering the group.
      unread and ticked articles.")
 
     (comment (string :tag  "Comment") "\
-An arbitrary comment on the group."))
+An arbitrary comment on the group.")
+
+    (visible (const :tag "Permanently visible" t) "\
+Always display this group, even when there are no unread articles
+in it.."))
   "Alist of valid group parameters.
 
 Each entry has the form (NAME TYPE DOC), where NAME is the parameter
index 0cf74b1..ce15a01 100644 (file)
@@ -55,15 +55,10 @@ Optional argument FOLDER specifies folder name."
   ;; Thanks to yuki@flab.Fujitsu.JUNET and ohm@kaba.junet.
   (mh-find-path)
   (let ((folder
-        (cond ((and (eq folder 'default)
-                    gnus-newsgroup-last-folder)
-               gnus-newsgroup-last-folder)
-              (folder folder)
-              (t (mh-prompt-for-folder
-                  "Save article in"
-                  (funcall gnus-folder-save-name gnus-newsgroup-name
-                           gnus-current-headers gnus-newsgroup-last-folder)
-                  t))))
+        (gnus-read-save-file-name
+                 "Save %s in file:" folder
+                 gnus-folder-save-name gnus-newsgroup-name
+                 gnus-current-headers 'gnus-newsgroup-last-folder))
        (errbuf (get-buffer-create " *Gnus rcvstore*"))
        ;; Find the rcvstore program.
        (exec-path (if mh-lib (cons mh-lib exec-path) exec-path)))
index 4ed6e7c..3e9593c 100644 (file)
@@ -840,6 +840,7 @@ The source file has to be in the Emacs load path."
                 "gnus-art.el" "gnus-start.el" "gnus-async.el"
                 "gnus-msg.el" "gnus-score.el" "gnus-win.el" "gnus-topic.el"
                 "nnmail.el" "message.el"))
+       (point (point))
        file expr olist sym)
     (gnus-message 4 "Please wait while we snoop your variables...")
     (sit-for 0)
@@ -885,11 +886,12 @@ The source file has to be in the Emacs load path."
        (insert ";; (makeunbound '" (symbol-name (car olist)) ")\n"))
       (setq olist (cdr olist)))
     (insert "\n\n")
-    ;; Remove any null chars - they seem to cause trouble for some
+    ;; Remove any control chars - they seem to cause trouble for some
     ;; mailers.  (Byte-compiled output from the stuff above.)
-    (goto-char (point-min))
-    (while (re-search-forward "[\000\200]" nil t)
-      (replace-match "" t t))))
+    (goto-char point)
+    (while (re-search-forward "[\000-\010\013-\037\200-\237]" nil t)
+      (replace-match (format "\\%03o" (string-to-char (match-string 0)))
+                    t t))))
 
 ;;; Treatment of rejected articles.
 ;;; Bounced mail.
index 5888d1a..02511f1 100644 (file)
@@ -2088,7 +2088,7 @@ SCORE is the score to add."
               (alist malist)
               (date (current-time-string))
               (data gnus-newsgroup-data)
-              elem headers match)
+              elem headers match func)
          ;; First we transform the adaptive rule alist into something
          ;; that's faster to process.
          (while malist
@@ -2097,19 +2097,21 @@ SCORE is the score to add."
              (setcar elem (symbol-value (car elem))))
            (setq elem (cdr elem))
            (while elem
-             (setcdr (car elem)
-                     (cons (if (eq (caar elem) 'followup)
-                               "references"
-                             (symbol-name (caar elem)))
-                           (cdar elem)))
-             (setcar (car elem)
-                     `(lambda (h)
-                        (,(intern
+             (when (fboundp
+                    (setq func
+                          (intern
                            (concat "mail-header-"
                                    (if (eq (caar elem) 'followup)
                                        "message-id"
-                                     (downcase (symbol-name (caar elem))))))
-                         h)))
+                                     (downcase (symbol-name (caar elem))))))))
+               (setcdr (car elem)
+                       (cons (if (eq (caar elem) 'followup)
+                                 "references"
+                               (symbol-name (caar elem)))
+                             (cdar elem)))
+               (setcar (car elem)
+                       `(lambda (h)
+                          (,func h))))
              (setq elem (cdr elem)))
            (setq malist (cdr malist)))
          ;; Then we score away.
@@ -2597,57 +2599,58 @@ The list is determined from the variable gnus-score-file-alist."
   (let ((funcs gnus-score-find-score-files-function)
        (group (or group gnus-newsgroup-name))
        score-files)
-    ;; Make sure funcs is a list.
-    (and funcs
-        (not (listp funcs))
-        (setq funcs (list funcs)))
-    ;; Get the initial score files for this group.
-    (when funcs
-      (setq score-files (nreverse (gnus-score-find-alist group))))
-    ;; Add any home adapt files.
-    (let ((home (gnus-home-score-file group t)))
-      (when home
-       (push home score-files)
-       (setq gnus-newsgroup-adaptive-score-file home)))
-    ;; Check whether there is a `adapt-file' group parameter.
-    (let ((param-file (gnus-group-find-parameter group 'adapt-file)))
-      (when param-file
-       (push param-file score-files)
-       (setq gnus-newsgroup-adaptive-score-file param-file)))
-    ;; Go through all the functions for finding score files (or actual
-    ;; scores) and add them to a list.
-    (while funcs
-      (when (gnus-functionp (car funcs))
-       (setq score-files
-             (nconc score-files (nreverse (funcall (car funcs) group)))))
-      (setq funcs (cdr funcs)))
-    ;; Add any home score files.
-    (let ((home (gnus-home-score-file group)))
-      (when home
-       (push home score-files)))
-    ;; Check whether there is a `score-file' group parameter.
-    (let ((param-file (gnus-group-find-parameter group 'score-file)))
-      (when param-file
-       (push param-file score-files)))
-    ;; Expand all files names.
-    (let ((files score-files))
-      (while files
-       (when (stringp (car files))
-         (setcar files (expand-file-name
-                        (car files) gnus-kill-files-directory)))
-       (pop files)))
-    (setq score-files (nreverse score-files))
-    ;; Remove any duplicate score files.
-    (while (and score-files
-               (member (car score-files) (cdr score-files)))
-      (pop score-files))
-    (let ((files score-files))
-      (while (cdr files)
-       (if (member (cadr files) (cddr files))
-           (setcdr files (cddr files))
-         (pop files))))
-    ;; Do the scoring if there are any score files for this group.
-    score-files))
+    (when group
+      ;; Make sure funcs is a list.
+      (and funcs
+          (not (listp funcs))
+          (setq funcs (list funcs)))
+      ;; Get the initial score files for this group.
+      (when funcs
+       (setq score-files (nreverse (gnus-score-find-alist group))))
+      ;; Add any home adapt files.
+      (let ((home (gnus-home-score-file group t)))
+       (when home
+         (push home score-files)
+         (setq gnus-newsgroup-adaptive-score-file home)))
+      ;; Check whether there is a `adapt-file' group parameter.
+      (let ((param-file (gnus-group-find-parameter group 'adapt-file)))
+       (when param-file
+         (push param-file score-files)
+         (setq gnus-newsgroup-adaptive-score-file param-file)))
+      ;; Go through all the functions for finding score files (or actual
+      ;; scores) and add them to a list.
+      (while funcs
+       (when (gnus-functionp (car funcs))
+         (setq score-files
+               (nconc score-files (nreverse (funcall (car funcs) group)))))
+       (setq funcs (cdr funcs)))
+      ;; Add any home score files.
+      (let ((home (gnus-home-score-file group)))
+       (when home
+         (push home score-files)))
+      ;; Check whether there is a `score-file' group parameter.
+      (let ((param-file (gnus-group-find-parameter group 'score-file)))
+       (when param-file
+         (push param-file score-files)))
+      ;; Expand all files names.
+      (let ((files score-files))
+       (while files
+         (when (stringp (car files))
+           (setcar files (expand-file-name
+                          (car files) gnus-kill-files-directory)))
+         (pop files)))
+      (setq score-files (nreverse score-files))
+      ;; Remove any duplicate score files.
+      (while (and score-files
+                 (member (car score-files) (cdr score-files)))
+       (pop score-files))
+      (let ((files score-files))
+       (while (cdr files)
+         (if (member (cadr files) (cddr files))
+             (setcdr files (cddr files))
+           (pop files))))
+      ;; Do the scoring if there are any score files for this group.
+      score-files)))
 
 (defun gnus-possibly-score-headers (&optional trace)
   "Do scoring if scoring is required."
index 6110061..62c4245 100644 (file)
@@ -706,8 +706,8 @@ prompt the user for the name of an NNTP server to use."
 
 (defun gnus-start-draft-setup ()
   "Make sure the draft group exists."
+  (gnus-request-create-group "drafts" '(nndraft ""))
   (unless (gnus-gethash "nndraft:drafts" gnus-newsrc-hashtb)
-    (gnus-request-create-group "drafts" '(nndraft ""))
     (let ((gnus-level-default-subscribed 1))
       (gnus-subscribe-group "nndraft:drafts" nil '(nndraft "")))
     (gnus-group-set-parameter
@@ -1063,7 +1063,6 @@ for new groups."
         hashtb))
       (when new-newsgroups
        (gnus-subscribe-hierarchical-interactive new-newsgroups)))
-    ;; Suggested by Per Abrahamsen <amanda@iesd.auc.dk>.
     (when (> groups 0)
       (gnus-message 6 "%d new newsgroup%s arrived."
                    groups (if (> groups 1) "s have" " has")))
@@ -2476,8 +2475,15 @@ If FORCE is non-nil, the .newsrc file is read."
            (skip-chars-forward " \t")
            ;; ...  which leads to this line being effectively ignored.
            (when (symbolp group)
-             (set group (buffer-substring
-                         (point) (progn (end-of-line) (point)))))
+             (let ((str (buffer-substring
+                         (point) (progn (end-of-line) (point))))
+                   (coding
+                    (and (boundp enable-multibyte-characters)
+                         enable-multibyte-characters
+                         (gnus-mule-get-coding-system (symbol-name group)))))
+               (if coding
+                   (setq str (decode-coding-string str (car coding))))
+               (set group str)))
            (forward-line 1))))
       (gnus-message 5 "Reading descriptions file...done")
       t))))
index dcaa169..152225f 100644 (file)
@@ -572,7 +572,8 @@ Some functions you can use are `+', `max', or `min'."
   :type 'function)
 
 (defcustom gnus-summary-expunge-below nil
-  "All articles that have a score less than this variable will be expunged."
+  "All articles that have a score less than this variable will be expunged.
+This variable is local to the summary buffers."
   :group 'gnus-score-default
   :type '(choice (const :tag "off" nil)
                 integer))
@@ -580,7 +581,9 @@ Some functions you can use are `+', `max', or `min'."
 (defcustom gnus-thread-expunge-below nil
   "All threads that have a total score less than this variable will be expunged.
 See `gnus-thread-score-function' for en explanation of what a
-\"thread score\" is."
+\"thread score\" is.
+
+This variable is local to the summary buffers."
   :group 'gnus-treading
   :group 'gnus-score-default
   :type '(choice (const :tag "off" nil)
@@ -1600,7 +1603,6 @@ increase the score of each group you read."
        ["Save in default format" gnus-summary-save-article t]
        ["Save in file" gnus-summary-save-article-file t]
        ["Save in Unix mail format" gnus-summary-save-article-mail t]
-       ["Write to file" gnus-summary-write-article-mail t]
        ["Save in MH folder" gnus-summary-save-article-folder t]
        ["Save in VM folder" gnus-summary-save-article-vm t]
        ["Save in RMAIL mbox" gnus-summary-save-article-rmail t]
@@ -2690,6 +2692,8 @@ If NO-DISPLAY, don't generate a summary buffer."
        (and gnus-show-threads
             gnus-thread-hide-subtree
             (gnus-summary-hide-all-threads))
+       (when kill-buffer
+         (gnus-kill-or-deaden-summary kill-buffer))
        ;; Show first unread article if requested.
        (if (and (not no-article)
                 (not no-display)
@@ -2704,9 +2708,7 @@ If NO-DISPLAY, don't generate a summary buffer."
          (goto-char (point-min))
          (gnus-summary-position-point)
          (gnus-set-mode-line 'summary)
-         (gnus-configure-windows 'summary 'force))
-       (when kill-buffer
-         (gnus-kill-or-deaden-summary kill-buffer))
+         (gnus-configure-windows 'summary 'force))     
        (when (get-buffer-window gnus-group-buffer t)
          ;; Gotta use windows, because recenter does weird stuff if
          ;; the current buffer ain't the displayed window.
@@ -5053,7 +5055,10 @@ gnus-exit-group-hook is called with no arguments if that value is non-nil."
     (unless quit-config
       (gnus-group-jump-to-group group))
     (run-hooks 'gnus-summary-exit-hook)
-    (unless quit-config
+    (unless (or quit-config
+               ;; If this group has disappeared from the summary
+               ;; buffer, don't skip forwards.
+               (not (string= group (gnus-group-group-name))))
       (gnus-group-next-unread-group 1))
     (setq group-point (point))
     (if temporary
@@ -5982,7 +5987,7 @@ Returns how many articles were removed."
 
 (defun gnus-summary-limit-include-thread (id)
   "Display all the hidden articles that in the current thread."
-  (interactive (mail-header-id (gnus-summary-article-header)))
+  (interactive (list (mail-header-id (gnus-summary-article-header))))
   (gnus-set-global-variables)
   (let ((articles (gnus-articles-in-thread
                   (gnus-id-to-thread (gnus-root-id id)))))
@@ -7487,7 +7492,7 @@ the actual number of articles marked is returned."
 
 (defun gnus-summary-set-bookmark (article)
   "Set a bookmark in current article."
-  (interactive (gnus-summary-article-number))
+  (interactive (list (gnus-summary-article-number)))
   (gnus-set-global-variables)
   (when (or (not (get-buffer gnus-article-buffer))
            (not gnus-current-article)
@@ -7517,7 +7522,7 @@ the actual number of articles marked is returned."
 
 (defun gnus-summary-remove-bookmark (article)
   "Remove the bookmark from the current article."
-  (interactive (gnus-summary-article-number))
+  (interactive (list (gnus-summary-article-number)))
   (gnus-set-global-variables)
   ;; Remove old bookmark, if one exists.
   (let ((old (assq article gnus-newsgroup-bookmarks)))
@@ -8118,8 +8123,12 @@ is non-nil or the Subject: of both articles are the same."
          (nnheader-temp-write nil
            (insert buf)
            (goto-char (point-min))
-           (if (search-forward-regexp "^References: " nil t)
-               (insert message-id " " )
+           (if (re-search-forward "^References: " nil t)
+               (progn
+                 (re-search-forward "^[^ \t]" nil t)
+                 (forward-line -1)
+                 (end-of-line)
+                 (insert " " message-id))
              (insert "References: " message-id "\n"))
            (unless (gnus-request-replace-article
                     current-article (car gnus-article-current)
@@ -8127,6 +8136,7 @@ is non-nil or the Subject: of both articles are the same."
              (error "Couldn't replace article"))))
        (set-buffer gnus-summary-buffer)
        (gnus-summary-unmark-all-processable)
+       (gnus-summary-update-article current-article)
        (gnus-summary-rethread-current)
        (gnus-message 3 "Article %d is now the child of article %d"
                      current-article parent-article)))))
@@ -8710,7 +8720,7 @@ save those articles instead."
 
 (defun gnus-summary-edit-global-kill (article)
   "Edit the \"global\" kill file."
-  (interactive (gnus-summary-article-number))
+  (interactive (list (gnus-summary-article-number)))
   (gnus-set-global-variables)
   (gnus-group-edit-global-kill article))
 
index 379471f..719e466 100644 (file)
@@ -512,7 +512,8 @@ articles in the topic and its subtopics."
         (indentation (make-string (* gnus-topic-indent-level level) ? ))
         (total-number-of-articles unread)
         (number-of-groups (length entries))
-        (active-topic (eq gnus-topic-alist gnus-topic-active-alist)))
+        (active-topic (eq gnus-topic-alist gnus-topic-active-alist))
+        gnus-tmp-header)
     (beginning-of-line)
     ;; Insert the text.
     (gnus-add-text-properties
index 638fb59..d9cb72c 100644 (file)
 
 (defun gnus-byte-code (func)
   "Return a form that can be `eval'ed based on FUNC."
-  (let ((fval (symbol-function func)))
+  (let ((fval (indirect-function func)))
     (if (byte-code-function-p fval)
        (let ((flist (append fval nil)))
          (setcar flist 'byte-code)
index d66d0c5..0384de0 100644 (file)
@@ -534,7 +534,7 @@ should have point."
       (walk-windows
        (lambda (win)
         (let ((buf (window-buffer win)))
-          (when (string-match  "^\\*Summary" (buffer-name buf))
+          (when (string-match  "^\\*\\(Dead \\)?Summary" (buffer-name buf))
             (push buf bufs)
             (pop-to-buffer buf)
             (when (or (not lowest)
index d27aec0..a15f9a3 100644 (file)
@@ -244,7 +244,7 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "0.13"
+(defconst gnus-version-number "0.14"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Quassia Gnus v%s" gnus-version-number)
index a713ff8..bbf43f6 100644 (file)
                     set-face-stipple mail-abbrevs-setup char-int
                     make-char-table set-char-table-range font-create-object
                     x-color-values widget-make-intangible error-message-string
-                    w3-form-encode-xwfu md5))
+                    w3-form-encode-xwfu md5 gnus-mule-get-coding-system
+                    decode-coding-string))
       (maybe-bind '(global-face-data
                    mark-active transient-mark-mode mouse-selection-click-count
                    mouse-selection-click-count-buffer buffer-display-table
                    font-lock-defaults user-full-name user-login-name
                    gnus-newsgroup-name gnus-article-x-face-too-ugly
-                   mail-mode-hook)))
+                   mail-mode-hook enable-multibyte-characters)))
   (defvar browse-url-browser-function nil)
   (maybe-fbind '(color-instance-rgb-components
                 make-color-instance color-instance-name specifier-instance
index ef48290..52c797c 100644 (file)
@@ -211,7 +211,7 @@ included.  Organization, Lines and X-Mailer are optional."
   :group 'message-headers
   :type 'regexp)
 
-(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:"
+(defcustom message-ignored-supersedes-headers "^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|^Received:\\|^X-From-Line:\\||X-Trace:\\|X-Complaints-To:\\|Return-Path:\\|^Supersedes:"
   "*Header lines matching this regexp will be deleted before posting.
 It's best to delete old Path and Date headers before posting to avoid
 any confusion."
@@ -537,25 +537,30 @@ If stringp, use this; if non-nil, use no host name (user name only)."
 (defvar message-postpone-actions nil
   "A list of actions to be performed after postponing a message.")
 
+(define-widget 'message-header-lines 'text
+  "All header lines must be LFD terminated."
+  :valid-regexp "^\\'"
+  :error "All header lines must be newline terminated")
+
 (defcustom message-default-headers ""
   "*A string containing header lines to be inserted in outgoing messages.
 It is inserted before you edit the message, so you can edit or delete
 these lines."
   :group 'message-headers
-  :type 'string)
+  :type 'message-header-lines)
 
 (defcustom message-default-mail-headers ""
   "*A string of header lines to be inserted in outgoing mails."
   :group 'message-headers
   :group 'message-mail
-  :type 'string)
+  :type 'message-header-lines)
 
 (defcustom message-default-news-headers ""
   "*A string of header lines to be inserted in outgoing news
 articles."
   :group 'message-headers
   :group 'message-news
-  :type 'string)
+  :type 'message-header-lines)
 
 ;; Note: could use /usr/ucb/mail instead of sendmail;
 ;; options -t, and -v if not interactive.
@@ -683,7 +688,7 @@ Defaults to `text-mode-abbrev-table'.")
 (defface message-header-other-face
   '((((class color)
       (background dark))
-     (:foreground "red4"))
+     (:foreground "#b00000"))
     (((class color)
       (background light))
      (:foreground "steel blue"))
@@ -719,7 +724,7 @@ Defaults to `text-mode-abbrev-table'.")
 (defface message-separator-face
   '((((class color)
       (background dark))
-     (:foreground "blue4"))
+     (:foreground "blue3"))
     (((class color)
       (background light))
      (:foreground "brown"))
@@ -897,6 +902,7 @@ 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-new-draft-name "mh-comp")
   (autoload 'mh-send-letter "mh-comp")
   (autoload 'gnus-point-at-eol "gnus-util")
   (autoload 'gnus-point-at-bol "gnus-util")
@@ -1537,7 +1543,7 @@ message-elide-elipsis) will be inserted where the text was killed."
 
 (defun message-caesar-buffer-body (&optional rotnum)
   "Caesar rotates all letters in the current buffer by 13 places.
-Used to encode/decode possibly offensive messages (commonly in net.jokes).
+Used to encode/decode possiblyun offensive messages (commonly in net.jokes).
 With prefix arg, specifies the number of places to rotate each letter forward.
 Mail and USENET news headers are not rotated."
   (interactive (if current-prefix-arg
@@ -2022,10 +2028,7 @@ to find out how to use this."
 (defun message-send-mail-with-mh ()
   "Send the prepared message buffer with mh."
   (let ((mh-previous-window-config nil)
-       (name (make-temp-name
-              (concat (file-name-as-directory
-                       (expand-file-name message-autosave-directory))
-                      "msg."))))
+       (name (mh-new-draft-name)))
     (setq buffer-file-name name)
     ;; MH wants to generate these headers itself.
     (when message-mh-deletable-headers
@@ -3026,7 +3029,8 @@ Headers already prepared in the buffer are not modified."
    headers)
   (delete-region (point) (progn (forward-line -1) (point)))
   (when message-default-headers
-    (insert message-default-headers))
+    (insert message-default-headers)
+    (or (bolp) (insert ?\n)))
   (put-text-property
    (point)
    (progn
@@ -3036,7 +3040,8 @@ Headers already prepared in the buffer are not modified."
   (forward-line -1)
   (when (message-news-p)
     (when message-default-news-headers
-      (insert message-default-news-headers))
+      (insert message-default-news-headers)
+      (or (bolp) (insert ?\n)))
     (when message-generate-headers-first
       (message-generate-headers
        (delq 'Lines
@@ -3044,7 +3049,8 @@ Headers already prepared in the buffer are not modified."
                   (copy-sequence message-required-news-headers))))))
   (when (message-mail-p)
     (when message-default-mail-headers
-      (insert message-default-mail-headers))
+      (insert message-default-mail-headers)
+      (or (bolp) (insert ?\n)))
     (when message-generate-headers-first
       (message-generate-headers
        (delq 'Lines
index d6dad19..7baa8d3 100644 (file)
@@ -403,6 +403,8 @@ time saver for large mailboxes.")
 (deffoo nnfolder-request-replace-article (article group buffer)
   (nnfolder-possibly-change-group group)
   (save-excursion
+    (set-buffer buffer)
+    (nnfolder-normalize-buffer)
     (set-buffer nnfolder-current-buffer)
     (goto-char (point-min))
     (if (not (search-forward (nnfolder-article-string article) nil t))
@@ -590,16 +592,19 @@ time saver for large mailboxes.")
              (obuf (current-buffer)))
          (nnfolder-possibly-change-folder (car group-art))
          (let ((buffer-read-only nil))
-           (goto-char (point-max))
-           (unless (eolp)
-             (insert "\n"))
-           (unless (bobp)
-             (insert "\n"))
+           (nnfolder-normalize-buffer)
            (insert-buffer-substring obuf beg end)))))
 
     ;; Did we save it anywhere?
     save-list))
 
+(defun nnfolder-normalize-buffer ()
+  "Make sure there are two newlines at the end of the buffer."
+  (goto-char (point-max))
+  (skip-chars-backward "\n")
+  (delete-region (point) (point-max))
+  (insert "\n\n"))
+
 (defun nnfolder-insert-newsgroup-line (group-art)
   (save-excursion
     (goto-char (point-min))
@@ -653,7 +658,11 @@ time saver for large mailboxes.")
     (if (equal (cadr (assoc group nnfolder-scantime-alist))
               (nth 5 (file-attributes file)))
        ;; This looks up-to-date, so we don't do any scanning.
-       buffer
+       (if (file-exists-p file)
+           buffer
+         (push (list group buffer) nnfolder-buffer-alist)
+         (set-buffer-modified-p t)
+         (save-buffer))
       ;; Parse the damn thing.
       (save-excursion
        (nnmail-activate 'nnfolder)
index e7ed8eb..978a8bd 100644 (file)
@@ -503,6 +503,7 @@ parameter.  It should return nil, `warn' or `delete'."
   "Make pathname for GROUP."
   (concat
    (let ((dir (file-name-as-directory (expand-file-name dir))))
+     (setq group (nnheader-translate-file-chars group))
      ;; If this directory exists, we use it directly.
      (if (or nnmail-use-long-file-names
             (file-directory-p (concat dir group)))
@@ -875,7 +876,9 @@ is a spool.  If not using procmail, return GROUP."
     (if (not (and (re-search-forward "^From " nil t)
                  (goto-char (match-beginning 0))))
        ;; Possibly wrong format?
-       (error "Error, unknown mail format! (Possibly corrupted.)")
+       (progn
+         (pop-to-buffer (current-buffer))
+         (error "Error, unknown mail format! (Possibly corrupted.)"))
       ;; Carry on until the bitter end.
       (while (not (eobp))
        (setq start (point)
@@ -960,7 +963,9 @@ is a spool.  If not using procmail, return GROUP."
     (if (not (and (re-search-forward delim nil t)
                  (forward-line 1)))
        ;; Possibly wrong format?
-       (error "Error, unknown mail format! (Possibly corrupted.)")
+       (progn
+         (pop-to-buffer (current-buffer))
+         (error "Error, unknown mail format! (Possibly corrupted.)"))
       ;; Carry on until the bitter end.
       (while (not (eobp))
        (setq start (point))
@@ -1246,7 +1251,7 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
 
    ;; Builtin : operation.
    ((eq (car split) ':)
-    (nnmail-split-it (eval (cdr split))))
+    (nnmail-split-it (save-excursion (eval (cdr split)))))
 
    ;; Check the cache for the regexp for this split.
    ;; FIX FIX FIX could avoid calling assq twice here
index cee1e1f..fd74ec0 100644 (file)
@@ -98,8 +98,6 @@ all.  This may very well take some time.")
       (let ((file nil)
            (number (length sequence))
            (count 0)
-           ;; 1997/8/12 by MORIOKA Tomohiko
-           ;;  for XEmacs/mule.
            (pathname-coding-system 'binary)
            beg article)
        (if (stringp (car sequence))
@@ -560,8 +558,6 @@ all.  This may very well take some time.")
   (if (not group)
       t
     (let ((pathname (nnmail-group-pathname group nnml-directory))
-         ;; 1997/8/14 by MORIOKA Tomohiko
-         ;;    for XEmacs/mule.
          (pathname-coding-system 'binary))
       (when (not (equal pathname nnml-current-directory))
        (setq nnml-current-directory pathname
index 2971db9..67dde9c 100644 (file)
@@ -153,8 +153,11 @@ server there that you can connect to.  See also `nntp-open-connection-function'"
 (defvoo nntp-warn-about-losing-connection t
   "*If non-nil, beep when a server closes connection.")
 
-(defvoo nntp-coding-system-for-read nil
-  "*coding-system for read from NNTP.")
+(defvoo nntp-coding-system-for-read 'binary
+  "*Coding system to read from NNTP.")
+
+(defvoo nntp-coding-system-for-write 'binary
+    "*Coding system to write to NNTP.")
 
 \f
 
@@ -1080,7 +1083,7 @@ This function is supposed to be called from `nntp-server-opened-hook'."
        (nntp-wait-for-string "bash\\|\$ *\r?$\\|> *\r?")
        (process-send-string
         proc (concat (mapconcat 'identity nntp-telnet-parameters " ") "\n"))
-       (nntp-wait-for-string "^\r*200")
+       (nntp-wait-for-string "^\r*20[01]")
        (beginning-of-line)
        (delete-region (point-min) (point))
        (process-send-string proc "\^]")
@@ -1106,7 +1109,7 @@ This function is supposed to be called from `nntp-server-opened-hook'."
                 (mapconcat 'identity
                            nntp-rlogin-parameters " ")))))
     (set-buffer buffer)
-    (nntp-wait-for-string "^\r*200")
+    (nntp-wait-for-string "^\r*20[01]")
     (beginning-of-line)
     (delete-region (point-min) (point))
     proc))
index 750c2b6..944e2f1 100644 (file)
@@ -60,6 +60,9 @@ values are 'apop.")
   "Timestamp returned when initially connected to the POP server.
 Used for APOP authentication.")
 
+(defvar pop3-movemail-file-coding-system nil
+  "Crashbox made by pop3-movemail with this coding system.")
+
 (defvar pop3-read-point nil)
 (defvar pop3-debug nil)
 
@@ -91,7 +94,8 @@ Used for APOP authentication.")
       (pop3-retr process n crashbuf)
       (save-excursion
        (set-buffer crashbuf)
-       (append-to-file (point-min) (point-max) crashbox)
+       (let ((coding-system-for-write pop3-movemail-file-coding-system))
+         (append-to-file (point-min) (point-max) crashbox))
        (set-buffer (process-buffer process))
        (while (> (buffer-size) 5000)
          (goto-char (point-min))
index 17bf203..ea5ef8f 100644 (file)
@@ -28,34 +28,29 @@ dvi: gnus.dvi message.dvi
 refcard.dvi: refcard.tex gnuslogo.refcard gnusref.tex
        $(LATEX) refcard.tex
 
-sclean:
+clean:
        rm -f gnus.*.bak *.ky *.cp *.fn *.cps *.kys *.log *.aux *.dvi *.vr \
-       *.tp *.toc \
-       *.pg gnus.latexi *.aux *.[cgk]idx \
+       *.tp *.toc *.pg gnus.latexi *.aux *.[cgk]idx \
        gnus.ilg gnus.ind gnus.[cgk]ind gnus.idx \
-       gnus.tmptexi gnus.tmplatexi gnus.tmplatexi1 texput.log *.orig *.rej \
-       gnus.latexi*~*
-
-clean:
-       make sclean 
-       rm -f *.latexi 
-       rm ps/new-herd-[0-9]*.ps
+       gnus.tmptexi *.tmplatexi gnus.tmplatexi1 texput.log *.orig *.rej \
+       gnus.latexi*~* tmp/*.ps xface.tex picons.tex smiley.tex *.latexi
 
 makeinfo: 
        makeinfo -o gnus gnus.texi      
        makeinfo -o message message.texi        
 
 texi2latex.elc: texi2latex.el
-       $(EMACS) -batch -l bytecomp -f batch-byte-recompile-directory
+       $(EMACS) -batch -l bytecomp --eval '(byte-compile-file "texi2latex.el")'
 
-latex: gnus.texi
+latex: gnus.texi texi2latex.elc
        $(EMACS) -batch -q -no-site-file gnus.texi -l ./texi2latex.elc -f latexi-translate
 
 latexps: 
        make texi2latex.elc
+       rm -f gnus.aux
        egrep -v "label.*Index|chapter.*Index" gnus.latexi > gnus.tmplatexi1
        $(LATEX) gnus.tmplatexi1
-       splitindex
+       ./splitindex
        makeindex -o gnus.kind gnus.kidx
        makeindex -o gnus.cind gnus.cidx
        makeindex -o gnus.gind gnus.gidx
@@ -65,10 +60,7 @@ latexps:
        cat postamble.tex >> gnus.tmplatexi
        $(LATEX) gnus.tmplatexi 
        $(LATEX) gnus.tmplatexi 
-       $(DVIPS) -f gnus.dvi > /local/tmp/larsi/gnus.ps
-
-herds:
-       cd ps ; for i in new-herd-[0-9]*.gif; do echo $$i; giftoppm $$i | pnmscale 2 | pnmsmooth -size 5 5 | ppmtopgm | pgmtops > `basename $$i .gif`.ps; done
+       $(DVIPS) -f gnus.dvi > gnus.ps
 
 pss:   
        make latex
@@ -79,9 +71,6 @@ psout:
        make latexboth
        make out
 
-screenp:
-       cd screen; for i in *.gif; do echo $$i; giftopnm $$i | ppmtopgm | pnmtops -scale 1 -noturn -nocenter > `basename $$i .gif`.ps; done
-
 latexboth: 
        rm -f gnus-manual-a4.ps.gz gnus-manual-standard.ps.gz 
        make latexps
@@ -114,3 +103,59 @@ install:
        cp gnus gnus-[0-9] gnus-[0-9][0-9] $(INFODIR)
        cp message $(INFODIR)
 
+
+tmps:
+       if [ ! -e tmp ]; then mkdir tmp; fi
+       make screens
+       make herdss
+       make etcs
+       make piconss
+       make xfaces
+       make smiley
+       make miscs
+
+herdss:
+       cd herds ; for i in new-herd-[0-9]*.gif; do echo $$i; giftopnm $$i | pnmcrop -white | pnmmargin -white 9 | pnmscale 2 | pnmconvol convol5.pnm  | ppmtopgm | pnmdepth 255 | pnmtops -width 100 -height 100 -noturn > ../tmp/`basename $$i .gif`.ps; done
+       cd herds ; giftopnm new-herd-section.gif | pnmscale 4 | pnmconvol convol11.pnm | ppmtopgm | pnmdepth 255 | pnmtops -noturn -width 100 -height 100 > ../tmp/new-herd-section.ps
+
+
+screens:
+       cd screen ; for i in *.gif; do echo $$i; giftopnm $$i | pnmmargin -black 1 | ppmtopgm | pnmtops -width 100 -height 100 -noturn > ../tmp/`basename $$i .gif`.ps; done    
+
+miscs:
+       giftopnm misc/larsi.gif | ppmtopgm | pnmtops -noturn > tmp/larsi.ps
+       tifftopnm misc/eseptember.tif | pnmscale 4 | ppmtopgm | pnmtops -noturn  -width 100 -height 100 > tmp/september.ps
+       tifftopnm misc/fseptember.tif | pnmscale 2 | ppmtopgm | pnmtops -noturn  -width 100 -height 100 > tmp/fseptember.ps
+       tifftopnm misc/fred.tif | pnmscale 2 | ppmtopgm | pnmtops -noturn  -width 100 -height 100 > tmp/fred.ps
+       tifftopnm misc/ered.tif | pnmscale 2 | ppmtopgm | pnmtops -noturn  -width 100 -height 100 > tmp/red.ps
+
+etcs:
+       cd etc; for i in gnus-*.xpm; do echo $$i; xpmtoppm $$i | ppmtopgm | pnmdepth 255 | pnmtops -noturn > ../tmp/`basename $$i .xpm`.ps; done
+
+piconss:
+       cd picons; for i in *.xbm; do echo $$i; xbmtopbm $$i | pnmtops -noturn > ../tmp/picons-`basename $$i .xbm`.ps; done
+       cd picons; for i in *.gif; do echo $$i; giftopnm $$i | ppmtopgm | pnmtops -noturn > ../tmp/picons-`basename $$i .gif`.ps; done
+       for i in tmp/picons-*.ps; do echo "\\gnuspicon{$$i}"; done > picons.tex
+
+xfaces:
+       cd xface; for i in *.gif; do echo $$i; giftopnm $$i | ppmtopgm | pnmtops -noturn > ../tmp/xface-`basename $$i .gif`.ps; done
+       for i in tmp/xface-*.ps; do \
+               if [ -n "$$a" ]; then a=""; echo "{$$i}"; else \
+               a="h"; echo -n "\\gnusxface{$$i}"; fi done > xface.tex; \
+               if [ -n "$$a" ]; then echo "{$$i}" >> xface.tex; fi
+
+smiley:
+       cd smilies; tifftopnm BigFace.tif | ppmtopgm | pnmtops > ../tmp/BigFace.ps
+       cd smilies; for i in *.xpm; do echo $$i; sed "s/none/#FFFFFF/" $$i | xpmtoppm | ppmtopgm | pnmdepth 255 | pnmtops > ../tmp/smiley-`basename $$i .xpm`.ps; done
+       for i in tmp/smiley-*.ps; do \
+               if [ -n "$$a" ]; then a=""; echo "{$$i}"; else \
+               a="h"; echo -n "\\gnussmiley{$$i}"; fi done > smiley.tex; \
+               if [ -n "$$a" ]; then echo "{$$i}" >> smiley.tex; fi
+
+pspackage:
+       tar czvf pspackage.tar.gz gnus-faq.texi gnus.texi herds misc pagestyle.sty picons pixidx.sty postamble.tex ps screen smilies splitindex texi2latex.el xface Makefile README etc
+
+complete:
+       make texi2latex.elc
+       make tmps
+       make pss
index 955cc07..a169da0 100644 (file)
--- a/texi/dir
+++ b/texi/dir
@@ -7,5 +7,3 @@ File: dir       Node: Top       This is the Gnus Info tree
 
 * Gnus: (gnus).                The news reader Gnus.
 * Message: (message).  The Message sending thingamabob.
-* Widget: (widget).    The Widget library.
-* Custom: (custom).    The Custom library.
index 8ebf69c..8d9aa49 100644 (file)
@@ -17,6 +17,7 @@
 \usepackage{pagestyle}
 \usepackage{epsfig}
 \usepackage{bembo}
+\usepackage{pixidx}
 
 \makeindex
 \begin{document}
@@ -34,7 +35,7 @@
 
 \newcommand{\gnustt}[1]{{\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}}
 \newcommand{\gnuscode}[1]{\gnustt{#1}}
-\newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\fontfamily{pcr}\fontsize{10pt}{10}\selectfont #1}''}
+\newcommand{\gnussamp}[1]{``{\fontencoding{OT1}\fontfamily{pfu}\fontsize{10pt}{10}\selectfont #1}''}
 \newcommand{\gnuslisp}[1]{\gnustt{#1}}
 \newcommand{\gnuskbd}[1]{`\gnustt{#1}'}
 \newcommand{\gnusfile}[1]{`\gnustt{#1}'}
@@ -59,7 +60,7 @@
 \newcommand{\gnusless}{{$<$}}
 \newcommand{\gnusgreater}{{$>$}}
 
-\newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=gnus-head.eps,height=1cm}}}
+\newcommand{\gnushead}{\raisebox{-1cm}{\epsfig{figure=ps/gnus-head.eps,height=1cm}}}
 \newcommand{\gnusinteresting}{
 \marginpar[\mbox{}\hfill\gnushead]{\gnushead}
 }
 }
 
 \newcommand{\gnuspicon}[1]{
-\marginpar[\mbox{}\hfill\epsfig{figure=#1,height=1.5cm}]{\epsfig{figure=#1,height=1.5cm}}
+\margindex{\epsfig{figure=#1,width=2cm}}
 }
 
-\newcommand{\gnusxface}[1]{
-\marginpar[\mbox{}\hfill\epsfig{figure=#1,height=1cm}]{\epsfig{figure=#1,height=1cm}}
+\newcommand{\gnusxface}[2]{
+\margindex{\epsfig{figure=#1,width=1cm}\epsfig{figure=#2,width=1cm}}
 }
 
+\newcommand{\gnussmiley}[2]{
+\margindex{\makebox[2cm]{\hfill\epsfig{figure=#1,width=0.5cm}\hfill\epsfig{figure=#2,width=0.5cm}\hfill}}
+}
 
 \newcommand{\gnusitemx}[1]{\mbox{}\vspace*{-\itemsep}\vspace*{-\parsep}\item#1}
 
 {
 \ifodd\count0
 \mbox{} \hfill 
-\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
 \else
-\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
 \hfill \mbox{}
 \fi
 }
 {
 \ifodd\count0
 \mbox{} \hfill 
-\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
 \else
-\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
 \hfill \mbox{}
 \fi
 }
 {
 \ifodd\count0
 \mbox{} \hfill 
-\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
 \else
-\raisebox{-0.5cm}{\epsfig{figure=gnus-big-logo.eps,height=1cm}}
+\raisebox{-0.5cm}{\epsfig{figure=ps/gnus-big-logo.eps,height=1cm}}
 \hfill \mbox{}
 \fi
 }
 \gnustitle{\gnustitlename}\\
 \rule{15cm}{1mm}\\
 \vfill
-\hspace*{0cm}\epsfig{figure=gnus-big-logo.eps,height=15cm}
+\hspace*{0cm}\epsfig{figure=ps/gnus-big-logo.eps,height=15cm}
 \vfill
 \rule{15cm}{1mm}\\
 \gnusauthor{by Lars Magne Ingebrigtsen}
 
 \thispagestyle{empty}
 
-Copyright \copyright{} 1995,96 Free Software Foundation, Inc. 
+Copyright \copyright{} 1995,96,97 Free Software Foundation, Inc. 
 
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
@@ -6333,9 +6337,7 @@ readable to me.
 @vindex gnus-article-x-face-too-ugly
 @iftex
 @iflatex
-\gnusxface{tmp/xface-karlheg.ps}
-\gnusxface{tmp/xface-kyle.ps}
-\gnusxface{tmp/xface-smb.ps}
+\include{xface}
 @end iflatex
 @end iftex
 Look for and display any X-Face headers
@@ -11877,7 +11879,8 @@ Default score of an article, which is 0 by default.
 @vindex gnus-summary-expunge-below
 Don't display the summary lines of articles that have scores lower than
 this variable.  This is @code{nil} by default, which means that no
-articles will be hidden.
+articles will be hidden.  This variable is local to the summary buffers,
+and has to be set from @code{gnus-summary-mode-hook}.
 
 @item gnus-score-over-mark
 @vindex gnus-score-over-mark
@@ -14309,18 +14312,7 @@ advantage of that.
 
 @iftex
 @iflatex
-\gnuspicon{tmp/picons-att.ps}
-\gnuspicon{tmp/picons-berkeley.ps}
-\gnuspicon{tmp/picons-caltech.ps}
-\gnuspicon{tmp/picons-canada.ps}
-\gnuspicon{tmp/picons-cr.ps}
-\gnuspicon{tmp/picons-cygnus.ps}
-\gnuspicon{tmp/picons-gov.ps}
-\gnuspicon{tmp/picons-mit.ps}
-\gnuspicon{tmp/picons-nasa.ps}
-\gnuspicon{tmp/picons-qmw.ps}
-\gnuspicon{tmp/picons-rms.ps}
-\gnuspicon{tmp/picons-ruu.ps}
+\include{picons}
 @end iflatex
 @end iftex
 
@@ -14342,6 +14334,12 @@ over your shoulder as you read news.
 
 What are Picons?  To quote directly from the Picons Web site:
 
+@iftex
+@iflatex
+\margindex{}
+@end iflatex
+@end iftex
+
 @quotation 
 @dfn{Picons} is short for ``personal icons''.  They're small,
 constrained images used to represent users and domains on the net,
@@ -14393,6 +14391,12 @@ To enable displaying picons, simply put the following line in your
 @node Hard Picons
 @subsubsection Hard Picons 
 
+@iftex
+@iflatex
+\margindex{}
+@end iflatex
+@end iftex
+
 Gnus can display picons for you as you enter and leave groups and
 articles.  It knows how to interact with three sections of the picons
 database.  Namely, it can display the picons newsgroup pictures,
@@ -14417,20 +14421,6 @@ displayed.
 
 @end table
 
-@iftex
-@iflatex
-\gnuspicon{tmp/picons-seuu.ps}
-\gnuspicon{tmp/picons-stanford.ps}
-\gnuspicon{tmp/picons-sun.ps}
-\gnuspicon{tmp/picons-ubc.ps}
-\gnuspicon{tmp/picons-ufl.ps}
-\gnuspicon{tmp/picons-uio.ps}
-\gnuspicon{tmp/picons-unit.ps}
-\gnuspicon{tmp/picons-upenn.ps}
-\gnuspicon{tmp/picons-wesleyan.ps}
-@end iflatex
-@end iftex
-
 Note: If you set @code{gnus-use-picons} to @code{t}, it will set up your
 window configuration for you to include the @code{picons} buffer.
 
@@ -14472,6 +14462,12 @@ for the append flag of @code{add-hook}:
 @node Picon Configuration
 @subsubsection Picon Configuration
 
+@iftex
+@iflatex
+\margindex{}
+@end iflatex
+@end iftex
+
 The following variables offer further control over how things are
 done, where things are located, and other useless stuff you really
 don't need to worry about.
@@ -14511,6 +14507,12 @@ gnus-picons-x-face-file-name)}
 Names a temporary file to store the @code{X-Face} bitmap in.  Defaults
 to @code{(format "/tmp/picon-xface.%s.xbm" (user-login-name))}.
 
+@iftex
+@iflatex
+\margindex{}
+@end iflatex
+@end iftex
+
 @item gnus-picons-buffer
 @vindex gnus-picons-buffer
 The name of the buffer that @code{picons} points to.  Defaults to
@@ -14522,6 +14524,13 @@ The name of the buffer that @code{picons} points to.  Defaults to
 @subsection Smileys
 @cindex smileys
 
+@iftex
+@iflatex
+\gnusfig{-3cm}{0.5cm}{\epsfig{figure=tmp/BigFace.ps,height=20cm}}
+\input{smiley}
+@end iflatex
+@end iftex
+
 @dfn{Smiley} is a package separate from Gnus, but since Gnus is
 currently the only package that uses Smiley, it is documented here.
 
@@ -14547,29 +14556,6 @@ and so on), and @code{smiley-nosey-regexp-alist} (which matches
 The alist used is specified by the @code{smiley-regexp-alist} variable,
 which defaults to the value of @code{smiley-deformed-regexp-alist}.
 
-Here's the default value of @code{smiley-smiley-regexp-alist}:
-
-@lisp
-(setq smiley-nosey-regexp-alist
-      '(("\\(:-+[<«]+\\)\\W" 1 "FaceAngry.xpm")
-        ("\\(:-+\\]+\\)\\W" 1 "FaceGoofy.xpm")
-        ("\\(:-+D\\)\\W" 1 "FaceGrinning.xpm")
-        ("\\(:-+[@}»]+\\)\\W" 1 "FaceHappy.xpm")
-        ("\\(:-*)+\\)\\W" 1 "FaceHappy.xpm")        
-        ("\\(:-+[/\\\"]+\\)\\W" 1 "FaceIronic.xpm")
-        ("\\([8|]-+[|Oo%]\\)\\W" 1 "FaceKOed.xpm")
-        ("\\([:|]-+#+\\)\\W" 1 "FaceNyah.xpm")
-        ("\\(:-+[(@{]+\\)\\W" 1 "FaceSad.xpm")
-        ("\\(:-+[Oo\*]\\)\\W" 1 "FaceStartled.xpm")
-        ("\\(:-+|\\)\\W" 1 "FaceStraight.xpm")
-        ("\\(:-+p\\)\\W" 1 "FaceTalking.xpm")
-        ("\\(:-+d\\)\\W" 1 "FaceTasty.xpm")
-        ("\\(;-+[>)@}»]+\\)\\W" 1 "FaceWinking.xpm")
-        ("\\(:-+[Vvµ]\\)\\W" 1 "FaceWry.xpm")
-        ("\\(][:8B]-[)>]\\)\\W" 1 "FaceDevilish.xpm")
-        ("\\([:|]-+P\\)\\W" 1 "FaceYukky.xpm")))
-@end lisp
-
 The first item in each element is the regexp to be matched; the second
 element is the regexp match group that is to be replaced by the picture;
 and the third element is the name of the file to be displayed.
@@ -14611,6 +14597,12 @@ Face used for mouse highlighting over the smiley face.
 
 @table @code
 
+@iftex
+@iflatex
+\margindex{}
+@end iflatex
+@end iftex
+
 @item gnus-use-toolbar
 @vindex gnus-use-toolbar
 If @code{nil}, don't display toolbars.  If non-@code{nil}, it should be
@@ -14659,6 +14651,12 @@ Legal values include @code{flame}, @code{pine}, @code{moss},
 A glyph displayed in all Gnus mode lines.  It is a tiny gnu head by
 default. 
 
+@iftex
+@iflatex
+\margindex{}
+@end iflatex
+@end iftex
+
 @end table
 
 
@@ -15240,6 +15238,7 @@ Jack Vinson.
 
 Also thanks to the following for patches and stuff:
 
+Jari Aalto,
 Adrian Aichner,
 Peter Arius, 
 Matt Armstrong,
@@ -15280,6 +15279,7 @@ David S. Goldberg,
 Michelangelo Grigni,
 D. Hall, 
 Magnus Hammerin,
+Kenichi Handa, @c ?
 Raja R. Harinath,
 Hisashige Kenji, @c Hisashige
 Marc Horowitz,
@@ -15298,6 +15298,7 @@ Peter Skov Knudsen,
 Shuhei Kobayashi, @c Kobayashi
 Thor Kristoffersen,
 Jens Lautenbacher,
+Seokchan Lee, @c ?
 Carsten Leonhardt,
 James LewisMoss,
 Christian Limpach,
@@ -15325,6 +15326,7 @@ Stephen Peters,
 Ulrich Pfeifer,
 John McClary Prevost,
 Colin Rafferty,
+Lars Balker Rasmussen,
 Bart Robinson,
 Jason Rumney,
 Jay Sachs,
@@ -15353,7 +15355,9 @@ Philippe Troin,
 James Troup,
 Enami Tsugutomo, @c ?
 Aaron M. Ucko, 
+Didier Verna,
 Jan Vroonhof,
+Stefan Waldherr,
 Barry A. Warsaw,
 Christoph Wedler,
 Joe Wells,
@@ -15506,6 +15510,12 @@ You can click on buttons instead of using the keyboard
 @node September Gnus
 @subsubsection September Gnus
 
+@iftex
+@iflatex
+\gnusfig{-28cm}{0cm}{\epsfig{figure=tmp/september.ps,height=20cm}}
+@end iflatex
+@end iftex
+
 New features in Gnus 5.2/5.3:
 
 @itemize @bullet
@@ -15647,6 +15657,11 @@ Configuration}).
 
 @item
 Mail can be re-scanned by a daemonic process (@pxref{Daemons}).
+@iftex
+@iflatex
+\marginpar[\mbox{}\hfill\epsfig{figure=tmp/fseptember.ps,height=5cm}]{\epsfig{figure=tmp/fseptember.ps,height=5cm}}
+@end iflatex
+@end iftex
 
 @item
 Gnus can make use of NoCeM files to weed out spam (@pxref{NoCeM}).
@@ -15742,6 +15757,12 @@ Further syntax checking of outgoing articles have been added.
 
 New features in Gnus 5.4/5.5:
 
+@iftex
+@iflatex
+\gnusfig{-5.5cm}{-4cm}{\epsfig{figure=tmp/red.ps,height=20cm}}
+@end iflatex
+@end iftex
+
 @itemize @bullet
 
 @item
@@ -15865,7 +15886,12 @@ Groups}).
 @item
 Cached articles can be pulled into the groups (@pxref{Summary Generation
 Commands}).
-  
+@iftex
+@iflatex
+\marginpar[\mbox{}\hfill\epsfig{figure=tmp/fred.ps,width=3cm}]{\epsfig{figure=tmp/fred.ps,width=3cm}}
+@end iflatex
+@end iftex
+
 @item
 Score files are now applied in a more reliable order (@pxref{Score
 Variables}).
index 8dd1798..a7d0a5c 100644 (file)
@@ -31,13 +31,16 @@ at the altar of Emacs, he can often be found slouching on his couch
 reading while bopping his head gently to some obscure music.  He does
 not have a cat.
 
-Graphics by Luis Fernandes.  Set in Bembo and Futura.
+\marginpar[\vspace*{-2.5cm}\epsfig{figure=tmp/larsi.ps,height=2cm}]{\vspace*{-2.2cm}\epsfig{figure=tmp/larsi.ps,height=2.5cm}}
+
+Graphics by Luis Fernandes.  Set in Adobe Bembo, Adobe Futura and
+Bitstream Courier.
 
 \clearpage
 \mbox{}
 \thispagestyle{empty}
 \begin{picture}(500,500)(0,0)
-\put(-35,325){\makebox(480,350)[tr]{\epsfig{figure=ps/new-herd-section.ps}}}
+\put(-35,325){\makebox(480,350)[tr]{\epsfig{figure=tmp/new-herd-section.ps}}}
 \end{picture}
 
 \end{document}
diff --git a/todo b/todo
index 679c6bc..1a3f412 100644 (file)
--- a/todo
+++ b/todo
@@ -760,3 +760,14 @@ articles.
 
 * command to open a digest group, and copy all the articles there to the
 current group.
+
+* a variable to disable article body highlights if there's more than
+X characters in the body.
+
+* handle 480/381 authinfo requests separately.
+
+* when sending authinfo automatically, things hang.
+
+* include the texi/dir file in the distribution.
+
+* format spec to "tab" to a position.