Importing pgnus-0.55
authorichikawa <ichikawa>
Sat, 28 Nov 1998 06:02:59 +0000 (06:02 +0000)
committerichikawa <ichikawa>
Sat, 28 Nov 1998 06:02:59 +0000 (06:02 +0000)
19 files changed:
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-sum.el
lisp/gnus.el
lisp/lpath.el
lisp/mailcap.el
lisp/message.el
lisp/mm-decode.el
lisp/mm-util.el
lisp/mm-uu.el
lisp/mm-view.el
lisp/nneething.el
lisp/nntp.el
lisp/nnvirtual.el
lisp/pop3.el
make.bat
texi/ChangeLog
texi/gnus.texi
texi/message.texi

index f2ba265..c2e8f7a 100644 (file)
@@ -1,3 +1,57 @@
+Fri Nov 27 12:26:10 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Pterodactyl Gnus v0.55 is released.
+
+1998-11-27 12:38:52  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * mm-view.el (mm-setup-w3): New function.
+
+       * mm-decode.el (mm-content-id-get-contents): New function.
+       (mm-content-id-get-type): Ditto.
+       (mm-content-id-get-encoding): Ditto.
+       (mm-get-handle-by-content-id): Removed.
+
+1998-11-25  Colin Rafferty  <colin@xemacs.org>
+
+       * message.el (message-generate-new-buffers): Fix tag.
+
+1998-11-25 10:43:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * message.el (message-buffer-name): Check for unique first.
+
+       * gnus-art.el (gnus-unbuttonized-mime-type-p): use
+       gnus-inhibit-mime-unbuttonizing. 
+
+       * gnus-sum.el (t): Bind M-t.
+       (gnus-inhibit-unbuttonizing): New variable.
+       (gnus-summary-toggle-display-buttonized): New command.
+
+       * gnus-art.el (gnus-display-mime): Select article window.
+       (article-strip-trailing-space): New command and keystroke.
+
+       * nneething.el (nneething-include-files): New variable.
+       (nneething-create-mapping): Use it.
+
+       * nntp.el (nntp-possibly-change-group): Use nntp-send-command. 
+
+       * nnvirtual.el (nnvirtual-request-update-mark): Only yodate
+       ayto-expirable marks.
+
+1998-11-24 21:00:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-art.el (gnus-mime-view-all-parts): Set buffer.
+
+       * gnus-sum.el (gnus-summary-display-buttonized): Don't pass on
+       ARG. 
+
+       * gnus-art.el (gnus-article-mode-line-format): Doc fix.
+
+Tue Nov 24 14:57:41 1998  Shenghuo ZHU  <zsh@cs.rochester.edu>
+
+       * mm-util.el (mm-binary-coding-system): New variable.
+       (mm-with-unibyte-buffer): Use mm-binary-coding-system.
+       * mm-decode.el (mm-display-external): Ditto.
+
 Tue Nov 24 10:43:06 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Pterodactyl Gnus v0.54 is released.
index 7dfb754..65d38ce 100644 (file)
@@ -388,7 +388,12 @@ beginning of a line."
 
 (defcustom gnus-article-mode-line-format "Gnus: %g %S%m"
   "*The format specification for the article mode line.
-See `gnus-summary-mode-line-format' for a closer description."
+See `gnus-summary-mode-line-format' for a closer description.
+
+The following additional specs are available:
+
+%w  The article washing status.
+%m  The number of MIME parts in the article."
   :type 'string
   :group 'gnus-article-various)
 
@@ -1215,6 +1220,16 @@ always hide."
       (while (re-search-forward "^[ \t]+" nil t)
        (replace-match "" t t)))))
 
+(defun article-strip-trailing-space ()
+  "Remove all white space from the end of the lines in the article."
+  (interactive)
+  (save-excursion
+    (let ((inhibit-point-motion-hooks t)
+         buffer-read-only)
+      (article-goto-body)
+      (while (re-search-forward "[ \t]+$" nil t)
+       (replace-match "" t t)))))
+
 (defun article-strip-blank-lines ()
   "Strip leading, trailing and multiple blank lines."
   (interactive)
@@ -1919,6 +1934,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is
      article-strip-leading-blank-lines
      article-strip-multiple-blank-lines
      article-strip-leading-space
+     article-strip-trailing-space
      article-strip-blank-lines
      article-strip-all-blank-lines
      article-date-local
@@ -2211,8 +2227,10 @@ If ALL-HEADERS is non-nil, no headers are hidden."
     (gnus-run-hooks 'gnus-tmp-internal-hook)
     (gnus-run-hooks 'gnus-article-prepare-hook)
     (when gnus-display-mime-function
-      (let ((url-standalone-mode (not gnus-plugged)))
-       (funcall gnus-display-mime-function)))
+      ;(let ((url-standalone-mode (not gnus-plugged)))
+       (funcall gnus-display-mime-function)
+       )
+    ;)
     ;; Perform the article display hooks.
     (gnus-run-hooks 'gnus-article-display-hook)))
 
@@ -2280,12 +2298,13 @@ If ALL-HEADERS is non-nil, no headers are hidden."
 (defun gnus-mime-view-all-parts ()
   "View all the MIME parts."
   (interactive)
-  (gnus-article-check-buffer)
-  (let ((handles gnus-article-mime-handles)
-       (rfc2047-default-charset gnus-newsgroup-default-charset)
-       (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
-    (while handles
-      (mm-display-part (pop handles)))))
+  (save-current-buffer
+    (set-buffer gnus-article-buffer)
+    (let ((handles gnus-article-mime-handles)
+         (rfc2047-default-charset gnus-newsgroup-default-charset)
+         (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
+      (while handles
+       (mm-display-part (pop handles))))))
 
 (defun gnus-mime-save-part ()
   "Save the MIME part under point."
@@ -2306,7 +2325,8 @@ If ALL-HEADERS is non-nil, no headers are hidden."
   (interactive)
   (gnus-article-check-buffer)
   (let ((data (get-text-property (point) 'gnus-data))
-       (url-standalone-mode (not gnus-plugged)))
+       ;(url-standalone-mode (not gnus-plugged))
+       )
     (mm-interactively-view-part data)))
 
 (defun gnus-mime-copy-part (&optional handle)
@@ -2333,7 +2353,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
   (gnus-article-check-buffer)
   (let* ((data (get-text-property (point) 'gnus-data))
         (contents (mm-get-part data))
-        (url-standalone-mode (not gnus-plugged))
+        ;(url-standalone-mode (not gnus-plugged))
         (b (point))
         buffer-read-only)
     (if (mm-handle-undisplayer data)
@@ -2351,7 +2371,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
   (interactive)
   (gnus-article-check-buffer)
   (let* ((handle (or handle (get-text-property (point) 'gnus-data)))
-        (url-standalone-mode (not gnus-plugged))
+        ;(url-standalone-mode (not gnus-plugged))
         (mm-user-display-methods nil)
         (rfc2047-default-charset gnus-newsgroup-default-charset)
         (mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
@@ -2477,30 +2497,34 @@ If ALL-HEADERS is non-nil, no headers are hidden."
 
 (defun gnus-display-mime (&optional ihandles)
   "Insert MIME buttons in the buffer."
-  (let* ((handles (or ihandles (mm-dissect-buffer) (mm-uu-dissect)))
-        handle name type b e display)
-    (unless ihandles
-      ;; Top-level call; we clean up.
-      (mm-destroy-parts gnus-article-mime-handles)
-      (setq gnus-article-mime-handles handles
-           gnus-article-mime-handle-alist nil)
-      ;; We allow users to glean info from the handles.
-      (when gnus-article-mime-part-function
-       (gnus-mime-part-function handles)))
-    (when (and handles
-              (or (not (stringp (car handles)))
-                  (cdr handles)))
+  (save-selected-window
+    (let ((window (get-buffer-window gnus-article-buffer)))
+      (when window
+       (select-window window)))
+    (let* ((handles (or ihandles (mm-dissect-buffer) (mm-uu-dissect)))
+          handle name type b e display)
       (unless ihandles
-       ;; Clean up for mime parts.
-       (article-goto-body)
-       (delete-region (point) (point-max)))
-      (if (stringp (car handles))
-         (if (equal (car handles) "multipart/alternative")
-             (let ((id (1+ (length gnus-article-mime-handle-alist))))
-               (push (cons id handles) gnus-article-mime-handle-alist)
-               (gnus-mime-display-alternative (cdr handles) nil nil id))
-           (gnus-mime-display-mixed (cdr handles)))
-       (gnus-mime-display-single handles)))))
+       ;; Top-level call; we clean up.
+       (mm-destroy-parts gnus-article-mime-handles)
+       (setq gnus-article-mime-handles handles
+             gnus-article-mime-handle-alist nil)
+       ;; We allow users to glean info from the handles.
+       (when gnus-article-mime-part-function
+         (gnus-mime-part-function handles)))
+      (when (and handles
+                (or (not (stringp (car handles)))
+                    (cdr handles)))
+       (unless ihandles
+         ;; Clean up for mime parts.
+         (article-goto-body)
+         (delete-region (point) (point-max)))
+       (if (stringp (car handles))
+           (if (equal (car handles) "multipart/alternative")
+               (let ((id (1+ (length gnus-article-mime-handle-alist))))
+                 (push (cons id handles) gnus-article-mime-handle-alist)
+                 (gnus-mime-display-alternative (cdr handles) nil nil id))
+             (gnus-mime-display-mixed (cdr handles)))
+         (gnus-mime-display-single handles))))))
 
 (defun gnus-mime-part-function (handles)
   (if (stringp (car handles))
@@ -2564,11 +2588,12 @@ If ALL-HEADERS is non-nil, no headers are hidden."
 
 (defun gnus-unbuttonized-mime-type-p (type)
   "Say whether TYPE is to be unbuttonized."
-  (catch 'found
-    (let ((types gnus-unbuttonized-mime-types))
-      (while types
-       (when (string-match (pop types) type)
-         (throw 'found t))))))
+  (unless gnus-inhibit-mime-unbuttonizing
+    (catch 'found
+      (let ((types gnus-unbuttonized-mime-types))
+       (while types
+         (when (string-match (pop types) type)
+           (throw 'found t)))))))
 
 (defun gnus-article-insert-newline ()
   "Insert a newline, but mark it as undeletable."
index 434c2db..70df894 100644 (file)
@@ -819,6 +819,7 @@ which it may alter in any way.")
 (defvar gnus-article-decoded-p nil)
 (defvar gnus-scores-exclude-files nil)
 (defvar gnus-page-broken nil)
+(defvar gnus-inhibit-mime-unbuttonizing nil)
 
 (defvar gnus-original-article nil)
 (defvar gnus-article-internal-prepare-hook nil)
@@ -1317,7 +1318,9 @@ increase the score of each group you read."
     "L" gnus-summary-lower-score
     "\M-i" gnus-symbolic-argument
     "h" gnus-summary-select-article-buffer
+
     "b" gnus-article-view-part
+    "\M-t" gnus-summary-toggle-display-buttonized
     
     "V" gnus-summary-score-map
     "X" gnus-uu-extract-map
@@ -1496,7 +1499,8 @@ increase the score of each group you read."
     "m" gnus-article-strip-multiple-blank-lines
     "a" gnus-article-strip-blank-lines
     "A" gnus-article-strip-all-blank-lines
-    "s" gnus-article-strip-leading-space)
+    "s" gnus-article-strip-leading-space
+    "e" gnus-article-strip-trailing-space)
 
   (gnus-define-keys (gnus-summary-help-map "H" gnus-summary-mode-map)
     "v" gnus-version
@@ -1608,7 +1612,8 @@ increase the score of each group you read."
                ["Trailing" gnus-article-remove-trailing-blank-lines t]
                ["All of the above" gnus-article-strip-blank-lines t]
                ["All" gnus-article-strip-all-blank-lines t]
-               ["Leading space" gnus-article-strip-leading-space t])
+               ["Leading space" gnus-article-strip-leading-space t]
+              ["Trailing space" gnus-article-strip-trailing-space t])
               ["Overstrike" gnus-article-treat-overstrike t]
               ["Dumb quotes" gnus-article-treat-dumbquotes t]
               ["Emphasis" gnus-article-emphasize t]
@@ -9190,12 +9195,22 @@ save those articles instead."
 ;;; MIME Commands
 ;;;
 
-(defun gnus-summary-display-buttonized (&optional arg)
-  "Display the current buffer fully MIME-buttonized."
-  (interactive "P")
+(defun gnus-summary-display-buttonized ()
+  "Display the current article buffer fully MIME-buttonized."
+  (interactive)
   (require 'gnus-art)
   (let ((gnus-unbuttonized-mime-types nil))
-    (gnus-summary-show-article arg)))
+    (gnus-summary-show-article)))
+    
+(defun gnus-summary-toggle-display-buttonized ()
+  "Toggle the buttonizing of the article buffer."
+  (interactive)
+  (require 'gnus-art)
+  (if (setq gnus-inhibit-mime-unbuttonizing
+           (not gnus-inhibit-mime-unbuttonizing))
+      (let ((gnus-unbuttonized-mime-types nil))
+       (gnus-summary-show-article))
+    (gnus-summary-show-article)))
     
 (gnus-ems-redefine)
 
index d64720b..5819603 100644 (file)
@@ -254,7 +254,7 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "0.54"
+(defconst gnus-version-number "0.55"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number)
index 13728ab..11a6030 100644 (file)
@@ -55,6 +55,8 @@
                adaptive-fill-first-line-regexp adaptive-fill-regexp
                url-current-mime-headers))
   (maybe-fbind '(color-instance-rgb-components
+                glyph-width annotation-glyph window-pixel-width glyph-height
+                window-pixel-height
                 make-color-instance color-instance-name specifier-instance
                 device-type device-class get-popup-menu-response event-object
                 x-defined-colors read-color add-submenu set-font-family
index 6e85b13..9a8307e 100644 (file)
@@ -412,7 +412,7 @@ If FORCE, re-parse even if already parsed."
        (downcase-region name-pos (point))
        (setq name (buffer-substring name-pos (point)))
        (skip-chars-forward " \t\n")
-       (if (not (eq (or (char-after (point)) 0) ?=)) ; There is no value
+       (if (not (eq (char-after (point)) ?=)) ; There is no value
            (setq value nil)
          (skip-chars-forward " \t\n=")
          (setq val-pos (point))
@@ -426,7 +426,7 @@ If FORCE, re-parse even if already parsed."
                  (error (goto-char (point-max)))))
            (while (not done)
              (skip-chars-forward "^;")
-             (if (eq (or (char-after (1- (point))) 0) ?\\ )
+             (if (eq (char-after (1- (point))) ?\\ )
                  (progn
                    (subst-char-in-region (1- (point)) (point) ?\\ ? )
                    (skip-chars-forward ";"))
index c88a1f5..87ffcb4 100644 (file)
@@ -251,7 +251,7 @@ should return the new buffer name."
   :group 'message-buffers
   :type '(choice (const :tag "off" nil)
                 (const :tag "unique" unique)
-                (const :tag "unsuniqueent" unsent)
+                (const :tag "unsent" unsent)
                 (function fun)))
 
 (defcustom message-kill-buffer-on-exit nil
@@ -3177,10 +3177,6 @@ Headers already prepared in the buffer are not modified."
 (defun message-buffer-name (type &optional to group)
   "Return a new (unique) buffer name based on TYPE and TO."
   (cond
-   ;; Check whether `message-generate-new-buffers' is a function,
-   ;; and if so, call it.
-   ((message-functionp message-generate-new-buffers)
-    (funcall message-generate-new-buffers type to group))
    ;; Generate a new buffer name The Message Way.
    ((eq message-generate-new-buffers 'unique)
     (generate-new-buffer-name
@@ -3192,6 +3188,10 @@ Headers already prepared in the buffer are not modified."
               "")
             (if (and group (not (string= group ""))) (concat " on " group) "")
             "*")))
+   ;; Check whether `message-generate-new-buffers' is a function,
+   ;; and if so, call it.
+   ((message-functionp message-generate-new-buffers)
+    (funcall message-generate-new-buffers type to group))
    ((eq message-generate-new-buffers 'unsent)
     (generate-new-buffer-name
      (concat "*unsent " type
index f4d3abc..196f8cc 100644 (file)
                      (error nil)))
            description))))
        (when id
+         (when (string-match " *<\\(.*\\)> *" id)
+           (setq id (match-string 1 id)))
          (push (cons id result) mm-content-id-alist))
        result))))
 
@@ -241,7 +243,7 @@ external if displayed external."
                (select-window win)))
            (switch-to-buffer (generate-new-buffer "*mm*")))
          (buffer-disable-undo)
-         (mm-set-buffer-file-coding-system 'binary)
+         (mm-set-buffer-file-coding-system mm-binary-coding-system)
          (insert-buffer-substring cur)
          (message "Viewing with %s" method)
          (let ((mm (current-buffer)))
@@ -264,8 +266,7 @@ external if displayed external."
            (setq file (expand-file-name (file-name-nondirectory filename)
                                         dir))
          (setq file (make-temp-name (expand-file-name "mm." dir))))
-       (write-region (point-min) (point-max)
-                     file nil 'nomesg nil 'binary)
+       (write-region (point-min) (point-max) file nil 'nomesg)
        (message "Viewing with %s" method)
        (unwind-protect
            (setq process
@@ -451,6 +452,8 @@ This overrides entries in the mailcap file."
       (when (or (not (file-exists-p file))
                (yes-or-no-p (format "File %s already exists; overwrite? "
                                     file)))
+       ;; Now every coding system is 100% binary within mm-with-unibyte-buffer
+       ;; Is text still special?
       (let ((coding-system-for-write
              (if (equal "text" (car (split-string
                                      (car (mm-handle-type handle)) "/")))
@@ -526,6 +529,30 @@ This overrides entries in the mailcap file."
         (< (glyph-height (annotation-glyph image))
            (window-pixel-height)))))
 
+(defun url-cid (url)
+  (set-buffer (get-buffer-create url-working-buffer))
+  (let ((content-type nil)
+       (encoding nil)
+       (part nil)
+       (data nil))
+    (if (not (string-match "^cid:\\(.*\\)" url))
+       (message "Malformed CID URL: %s" url)
+      (setq url (url-unhex-string (match-string 1 url))
+           part (mm-get-content-id url))
+      (if (not part)
+         (message "Unknown CID encounterred: %s" url)
+       (setq data (buffer-string nil nil (mm-handle-buffer part))
+             content-type (mm-handle-type part)
+             encoding (symbol-name (mm-handle-encoding part)))
+       (if (= 0 (length content-type)) (setq content-type "text/plain"))
+       (if (= 0 (length encoding)) (setq encoding "8bit"))
+       (setq url-current-content-length (length data)
+             url-current-mime-type content-type
+             url-current-mime-encoding encoding
+             url-current-mime-headers (list (cons "content-type" content-type)
+                                            (cons "content-encoding" encoding)))
+       (and data (insert data))))))
+
 (provide 'mm-decode)
 
 ;; mm-decode.el ends here
index 51ab0f0..29c65ac 100644 (file)
 
 ;;; Code:
 
+(defvar mm-binary-coding-system 
+    (if (string-match "XEmacs" emacs-version)
+       'binary 'no-conversion)
+    "100% binary coding system.")   
+
 (defvar mm-default-coding-system nil
   "The default coding system to use.")  
 
@@ -42,8 +47,9 @@
     (iso-8859-7 greek-iso8859-7)
     (iso-8859-8 hebrew-iso8859-8)
     (iso-8859-9 latin-iso8859-9)
+    (iso-2022-jp-2 japanese-jisx0208)
     (iso-2022-jp latin-jisx0201
-                japanese-jisx0208-1978 japanese-jisx0208)
+                japanese-jisx0208-1978)
     (euc-kr korean-ksc5601)
     (cn-gb-2312 chinese-gb2312)
     (cn-big5 chinese-big5-1 chinese-big5-2)
@@ -220,7 +226,9 @@ See also `with-temp-file' and `with-output-to-string'."
                     (get-buffer-create (generate-new-buffer-name " *temp*")))
               (unwind-protect
                   (with-current-buffer ,temp-buffer
-                    (let ((buffer-file-coding-system 'binary))
+                    (let ((buffer-file-coding-system mm-binary-coding-system)
+                          (coding-system-for-read mm-binary-coding-system)
+                          (coding-system-for-write mm-binary-coding-system))
                       ,@forms))
                 (and (buffer-name ,temp-buffer)
                      (kill-buffer ,temp-buffer))))
index ebcc923..50b5310 100644 (file)
@@ -2,7 +2,7 @@
 ;; Copyright (c) 1998 by Shenghuo Zhu <zsh@cs.rochester.edu>
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
-;; $Revision: 1.1.1.3 $
+;; $Revision: 1.1.1.4 $
 ;; Keywords: news postscript uudecode binhex shar
   
 ;; This file is not part of GNU Emacs, but the same permissions
index d7a94b1..d366bdc 100644 (file)
     (set-extent-property annot 'mm t)
     (set-extent-property annot 'duplicable t)))
 
+(defvar mm-w3-setup nil)
+(defun mm-setup-w3 ()
+  (unless mm-w3-setup
+    (w3-do-setup)
+    (require 'url)
+    (require 'w3-vars)
+    (url-register-protocol 'cid nil 'url-identity-expander)
+    (setq mm-w3-setup t)))
+
 (defun mm-inline-text (handle)
   (let ((type (cadr (split-string (car (mm-handle-type handle)) "/")))
        text buffer-read-only)
     (cond
      ((equal type "plain")
-      (with-temp-buffer
-       (insert-buffer-substring (mm-handle-buffer handle))
-       (mm-decode-content-transfer-encoding
-        (mm-handle-encoding handle)
-        (car (mm-handle-type handle)))
-       (setq text (buffer-string)))
+      (setq text (mm-get-part handle))
       (let ((b (point)))
        (insert text)
        (save-restriction
                 ,(set-marker (make-marker) (point-min))
                 ,(set-marker (make-marker) (point-max)))))))))
      ((equal type "html")
-      (let ((width (window-width)))
+      (mm-setup-w3)
+      (setq text (mm-get-part handle))
+      (let ((b (point))
+           (width (window-width)))
        (save-excursion
-         (w3-do-setup)
-         (mm-with-unibyte-buffer
-           (insert-buffer-substring (mm-handle-buffer handle))
-           (mm-decode-content-transfer-encoding
-            (mm-handle-encoding handle)
-            (car (mm-handle-type handle)))
-           (require 'url)
+         (insert text)
+         (save-restriction
+           (narrow-to-region b (point))
            (save-window-excursion
-             (require 'w3-vars)
              (let ((w3-strict-width width))
-               (w3-region (point-min) (point-max)))
-             (setq text (buffer-string))))))
-      (mm-insert-inline handle text))
+               (w3-region (point-min) (point-max)))))
+         (mm-handle-set-undisplayer
+          handle
+          `(lambda ()
+             (let (buffer-read-only)
+               (delete-region
+                ,(set-marker (make-marker) (point-min))
+                ,(set-marker (make-marker) (point-max)))))))))
      ((or (equal type "enriched")
          (equal type "richtext"))
       (save-excursion
index 8048849..61e8276 100644 (file)
   "Regexp saying what files to exclude from the group.
 If this variable is nil, no files will be excluded.")
 
+(defvoo nneething-include-files nil
+  "Regexp saying what files to include in the group.
+If this variable is non-nil, only files matching this regexp will be
+included.")
+
 \f
 
 ;;; Internal variables.
@@ -211,6 +216,16 @@ If this variable is nil, no files will be excluded.")
                  (setq files (cdr files)))
              (setq prev f))
            (setq f (cdr f)))))
+      ;; Remove files not matching the inclusion regexp.
+      (when nneething-include-files
+       (let ((f files)
+             prev)
+         (while f
+           (if (not (string-match nneething-include-files (car f)))
+               (if prev (setcdr prev (cdr f))
+                 (setq files (cdr files)))
+             (setq prev f))
+           (setq f (cdr f)))))
       ;; Remove deleted files from the map.
       (let ((map nneething-map)
            prev)
index 40319c1..237c04a 100644 (file)
@@ -937,11 +937,12 @@ password contained in '~/.nntp-authinfo'."
                    (nntp-inside-change-function t))
                (setq nntp-process-callback nil)
                (save-excursion
-                 (funcall callback (buffer-name
-                                    (get-buffer nntp-process-to-buffer)))))))))
+                 (funcall callback
+                          (buffer-name (get-buffer
+                                        nntp-process-to-buffer)))))))))
 
-    ;; any throw from after-change-functions will leave it
-    ;; set to nil.  so we reset it here, if necessary.
+    ;; Any throw from after-change-functions will leave it
+    ;; set to nil.  So we reset it here, if necessary.
     (when quit-flag
       (setq after-change-functions
            (list 'nntp-after-change-function-callback)))))
@@ -986,10 +987,7 @@ password contained in '~/.nntp-authinfo'."
        (save-excursion
          (set-buffer (process-buffer (car entry)))
          (erase-buffer)
-         (nntp-send-string (car entry) (concat "GROUP " group))
-         ;; allow for unexpected responses, since this can be called
-         ;; from a timer with quit inhibited
-         (nntp-wait-for-string "^[245].*\n")
+         (nntp-send-command "^[245].*\n" "GROUP" group)
          (setcar (cddr entry) group)
          (erase-buffer))))))
 
index b1d4119..1a676ea 100644 (file)
@@ -287,6 +287,7 @@ to virtual article number.")
         ;; The component group might be a virtual group.
         (nmark (gnus-request-update-mark cgroup (cdr nart) mark)))
     (when (and nart
+              (memq mark gnus-auto-expirable-marks)
               (= mark nmark)
               (gnus-group-auto-expirable-p cgroup))
       (setq mark gnus-expirable-mark)))
index 3d5cdf5..8a47fb3 100644 (file)
@@ -163,7 +163,7 @@ Return the response string if optional second argument is non-nil."
       (setq match-end (point))
       (goto-char pop3-read-point)
       (if (looking-at "-ERR")
-         (error (buffer-substring (point) (- match-end 2)))
+         (signal 'error (list (buffer-substring (point) (- match-end 2))))
        (if (not (looking-at "+OK"))
            (progn (setq pop3-read-point match-end) nil)
          (setq pop3-read-point match-end)
index b203277..c3c9e2e 100755 (executable)
--- a/make.bat
+++ b/make.bat
@@ -1,64 +1,64 @@
-@echo off\r
-\r
-rem Written by David Charlap <shamino@writeme.com>\r
-\r
-rem There are two catches, however.  The emacs.bat batch file may not exist\r
-rem in all distributions.  It is part of the Voelker build of Emacs 19.34\r
-rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html).  If the user\r
-rem installs Gnus with some other build, he may have to replace calls to\r
-rem %1\emacs.bat with something else.\r
-rem \r
-rem Also, the emacs.bat file that Voelker ships does not accept more than 9\r
-rem parameters, so the attempts to compile the .texi files will fail.  To\r
-rem fix that (at least on NT.  I don't know about Win95), the following\r
-rem change should be made to emacs.bat:\r
-rem \r
-rem     %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9\r
-rem \r
-rem should become\r
-rem \r
-rem     %emacs_dir%\bin\emacs.exe %*\r
-rem \r
-rem which will allow the batch file to accept an unlimited number of\r
-rem parameters.\r
-\r
-rem Clear PWD so emacs doesn't get confused\r
-set GNUS_PWD_SAVE=%PWD%\r
-set PWD=\r
-\r
-if "%1" == "" goto usage\r
-\r
-cd lisp\r
-call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile\r
-if not "%2" == "copy" goto info\r
-copy *.el* %1\lisp\r
-\r
-:info\r
-cd ..\texi\r
-call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
-call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
-if not "%2" == "copy" goto done\r
-copy gnus %1\info\r
-copy gnus-?? %1\info\r
-copy message %1\info\r
-\r
-:etc\r
-cd ..\etc\r
-copy gnus-tut.txt %1\etc\r
-\r
-:done\r
-cd ..\r
-goto end\r
-\r
-:usage\r
-echo Usage: make ^<emacs-dir^> [copy]\r
-echo.\r
-echo where: ^<emacs-dir^> is the directory you installed emacs in\r
-echo                    eg. d:\emacs\19.34\r
-echo        copy indicates that the compiled files should be copied to your\r
-echo             emacs lisp, info, and etc directories\r
-\r
-rem Restore PWD so whoever called this batch file doesn't get confused\r
-set PWD=%GNUS_PWD_SAVE%\r
-set GNUS_PWD_SAVE=\r
-:end\r
+@echo off
+
+rem Written by David Charlap <shamino@writeme.com>
+
+rem There are two catches, however.  The emacs.bat batch file may not exist
+rem in all distributions.  It is part of the Voelker build of Emacs 19.34
+rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html).  If the user
+rem installs Gnus with some other build, he may have to replace calls to
+rem %1\emacs.bat with something else.
+rem 
+rem Also, the emacs.bat file that Voelker ships does not accept more than 9
+rem parameters, so the attempts to compile the .texi files will fail.  To
+rem fix that (at least on NT.  I don't know about Win95), the following
+rem change should be made to emacs.bat:
+rem 
+rem     %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
+rem 
+rem should become
+rem 
+rem     %emacs_dir%\bin\emacs.exe %*
+rem 
+rem which will allow the batch file to accept an unlimited number of
+rem parameters.
+
+rem Clear PWD so emacs doesn't get confused
+set GNUS_PWD_SAVE=%PWD%
+set PWD=
+
+if "%1" == "" goto usage
+
+cd lisp
+call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile
+if not "%2" == "copy" goto info
+copy *.el* %1\lisp
+
+:info
+cd ..\texi
+call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
+call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
+if not "%2" == "copy" goto done
+copy gnus %1\info
+copy gnus-?? %1\info
+copy message %1\info
+
+:etc
+cd ..\etc
+copy gnus-tut.txt %1\etc
+
+:done
+cd ..
+goto end
+
+:usage
+echo Usage: make ^<emacs-dir^> [copy]
+echo.
+echo where: ^<emacs-dir^> is the directory you installed emacs in
+echo                    eg. d:\emacs\19.34
+echo        copy indicates that the compiled files should be copied to your
+echo             emacs lisp, info, and etc directories
+
+rem Restore PWD so whoever called this batch file doesn't get confused
+set PWD=%GNUS_PWD_SAVE%
+set GNUS_PWD_SAVE=
+:end
index a16f6bf..60671c8 100644 (file)
@@ -1,3 +1,10 @@
+1998-11-25 10:56:08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (To From Newsgroups): Addition.
+       (Anything Groups): Addition.
+       (Article Washing): Addition.
+       (MIME Commands): Addition.
+
 1998-11-19 04:05:15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * gnus.texi (Really Various Summary Commands): Addition.
index 3fd40b9..3ec9b51 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Pterodactyl Gnus 0.54 Manual
+@settitle Pterodactyl Gnus 0.55 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -318,7 +318,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Pterodactyl Gnus 0.54 Manual
+@title Pterodactyl Gnus 0.55 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -354,7 +354,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Pterodactyl Gnus 0.54.
+This manual corresponds to Pterodactyl Gnus 0.55.
 
 @end ifinfo
 
@@ -3471,6 +3471,17 @@ In summary, you'd typically do something like the following:
       "Your Name Here")
 @end lisp
 
+Now, this is mostly useful for mail groups, where you have control over
+the @sc{nov} files that are created.  However, if you can persuade your
+nntp admin to add:
+
+@example
+Newsgroups:full
+@end example
+
+to the end of her @file{overview.fmt} file, then you can use that just
+as you would the extra headers from the mail groups.
+
 
 @node Summary Buffer Mode Line
 @subsection Summary Buffer Mode Line
@@ -6677,6 +6688,12 @@ Remove all blank lines
 Remove all white space from the beginning of all lines of the article
 body (@code{gnus-article-strip-leading-space}).
 
+@item W E e
+@kindex W E e (Summary)
+@findex gnus-article-strip-trailing-space
+Remove all white space from the end of all lines of the article
+body (@code{gnus-article-strip-trailing-space}).
+
 @end table
 
 @xref{Customizing Articles} for how to wash articles automatically.
@@ -6905,6 +6922,12 @@ signature after all.
 @cindex MIME decoding
 
 @table @kbd
+@item M-tgnus-summary-display-buttonized
+@kindex M-t (Summary)
+@findex gnus-summary-display-buttonized
+Toggle the buttonized display of the article buffer
+(@code{gnus-summary-toggle-display-buttonized}).
+
 @item W M w
 @kindex W M w (Summary)
 Decode RFC2047-encoded words in the article headers
@@ -8301,6 +8324,8 @@ extension:
 The @dfn{wash status} of the article.  This is a short string with one
 character for each possible article wash operation that may have been
 performed.
+@item m
+The number of @sc{mime} parts in the article.
 @end table
 
 @vindex gnus-break-pages
@@ -10787,6 +10812,11 @@ in this directory, which defaults to @file{~/.nneething/}.
 All files that match this regexp will be ignored.  Nice to use to exclude
 auto-save files and the like, which is what it does by default.
 
+@item nneething-include-files
+@vindex nneething-include-files
+Regexp saying what files to include in the group.  If this variable is
+non-@code{nil}, only files matching this regexp will be included.
+
 @item nneething-map-file
 @vindex nneething-map-file
 Name of the map files.
index dc741aa..b33c0be 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Pterodactyl Message 0.54 Manual
+@settitle Pterodactyl Message 0.55 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Pterodactyl Message 0.54 Manual
+@title Pterodactyl Message 0.55 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -83,7 +83,7 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Pterodactyl Message 0.54.  Message is
+This manual corresponds to Pterodactyl Message 0.55.  Message is
 distributed with the Gnus distribution bearing the same version number
 as this manual.