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.
 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.
 
 (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)
 
   :type 'string
   :group 'gnus-article-various)
 
@@ -1215,6 +1220,16 @@ always hide."
       (while (re-search-forward "^[ \t]+" nil t)
        (replace-match "" t t)))))
 
       (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)
 (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-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
      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
     (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)))
 
     ;; 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)
 (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."
 
 (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))
   (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)
     (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))
   (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)
         (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)))
   (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))
         (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."
 
 (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
       (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))
 
 (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."
 
 (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."
 
 (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-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)
 
 (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
     "L" gnus-summary-lower-score
     "\M-i" gnus-symbolic-argument
     "h" gnus-summary-select-article-buffer
+
     "b" gnus-article-view-part
     "b" gnus-article-view-part
+    "\M-t" gnus-summary-toggle-display-buttonized
     
     "V" gnus-summary-score-map
     "X" gnus-uu-extract-map
     
     "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
     "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
 
   (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]
                ["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]
               ["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
 ;;;
 
 ;;; 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))
   (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)
 
     
 (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)
 
   :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)
   "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
                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
                 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")
        (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))
            (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 "^;")
                  (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 ";"))
                  (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)
   :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
                 (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
 (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
    ;; 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) "")
             "*")))
               "")
             (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
    ((eq message-generate-new-buffers 'unsent)
     (generate-new-buffer-name
      (concat "*unsent " type
index f4d3abc..196f8cc 100644 (file)
                      (error nil)))
            description))))
        (when id
                      (error nil)))
            description))))
        (when id
+         (when (string-match " *<\\(.*\\)> *" id)
+           (setq id (match-string 1 id)))
          (push (cons id result) mm-content-id-alist))
        result))))
 
          (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)
                (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)))
          (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))))
            (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
        (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)))
       (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)) "/")))
       (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)))))
 
         (< (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
 (provide 'mm-decode)
 
 ;; mm-decode.el ends here
index 51ab0f0..29c65ac 100644 (file)
 
 ;;; Code:
 
 
 ;;; 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.")  
 
 (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-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
     (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)
     (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
                     (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))))
                       ,@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>
 ;; 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
 ;; 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)))
 
     (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")
 (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
       (let ((b (point)))
        (insert text)
        (save-restriction
                 ,(set-marker (make-marker) (point-min))
                 ,(set-marker (make-marker) (point-max)))))))))
      ((equal type "html")
                 ,(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
        (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
            (save-window-excursion
-             (require 'w3-vars)
              (let ((w3-strict-width width))
              (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
      ((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.")
 
   "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.
 \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)))))
                  (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)
       ;; 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
                    (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)))))
     (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)
        (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))))))
 
          (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
         ;; 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)))
               (= 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")
       (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)
        (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.
 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
 \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
 @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
 @tex
 
 @titlepage
-@title Pterodactyl Gnus 0.54 Manual
+@title Pterodactyl Gnus 0.55 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @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.
 
 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
 
 
 @end ifinfo
 
@@ -3471,6 +3471,17 @@ In summary, you'd typically do something like the following:
       "Your Name Here")
 @end lisp
 
       "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
 
 @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}).
 
 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.
 @end table
 
 @xref{Customizing Articles} for how to wash articles automatically.
@@ -6905,6 +6922,12 @@ signature after all.
 @cindex MIME decoding
 
 @table @kbd
 @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
 @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.
 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
 @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.
 
 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.
 @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
 \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
 @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
 @tex
 
 @titlepage
-@title Pterodactyl Message 0.54 Manual
+@title Pterodactyl Message 0.55 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -83,7 +83,7 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
 * 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.
 
 distributed with the Gnus distribution bearing the same version number
 as this manual.