+Thu Sep 24 20:28:31 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Pterodactyl Gnus v0.33 is released.
+
+1998-09-24 18:47:31 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (gnus-insert-mime-button): Get buffer size.
+
+ * mm-decode.el (mm-display-external): Don't switch for externals.
+ (mm-dissect-multipart): Don't include end-sep.
+
+ * mm-util.el (mm-get-coding-system-list): New function.
+ (mm-coding-system-list): New variable.
+
+Thu Sep 24 02:08:10 1998 ZHU Shenghuo <zsh@cs.rochester.edu>
+
+ * gnus-cus.el (gnus-group-parameters): Add charset as a parameter
+
+Thu Sep 24 02:05:48 1998 ZHU Shenghuo <zsh@cs.rochester.edu>
+
+ * gnus-cus.el (gnus-group-customize): Use variable as cons not as
+ group
+
+Thu Sep 24 01:41:03 1998 ZHU Shenghuo <zsh@cs.rochester.edu>
+
+ * base64.el (base64-run-command-on-region): External base64
+ decoder do not use coding system
+
+Thu Sep 24 01:39:44 1998 ZHU Shenghuo <zsh@cs.rochester.edu>
+
+ * mm-decode.el (mm-interactively-view-part): Typo.
+
+Thu Sep 24 01:37:30 1998 ZHU Shenghuo <zsh@cs.rochester.edu>
+
+ * mm-decode.el (mm-dissect-multipart): Display last part when the
+ article has no close-delimiter
+
+Thu Sep 24 01:28:54 1998 ZHU Shenghuo <zsh@cs.rochester.edu>
+
+ * mm-decode.el (mm-dissect-buffer): Display parts which have no
+ content-type.
+
+Thu Sep 24 01:23:57 1998 ZHU Shenghuo <zsh@cs.rochester.edu>
+
+ * gnus-art.el (gnus-display-mime): Typo.
+
Thu Sep 24 02:29:57 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Pterodactyl Gnus v0.32 is released.
(defun base64-run-command-on-region (start end output-buffer command
&rest arg-list)
- (let ((tempfile nil) status errstring)
+ (let ((tempfile nil) status errstring default-process-coding-system)
(unwind-protect
(progn
(setq tempfile (make-temp-name "base64"))
(defvar gnus-agent-spam-hashtb nil)
(defvar gnus-agent-file-name nil)
(defvar gnus-agent-send-mail-function nil)
-(defvar gnus-agent-article-file-coding-system 'no-conversion)
+(defvar gnus-agent-file-coding-system 'no-conversion)
(defconst gnus-agent-scoreable-headers
(list
(let* ((gnus-command-method method)
(file (gnus-agent-lib-file "active")))
(gnus-make-directory (file-name-directory file))
- (let ((coding-system-for-write gnus-agent-article-file-coding-system))
+ (let ((coding-system-for-write gnus-agent-file-coding-system))
(write-region (point-min) (point-max) file nil 'silent))
(when (file-exists-p (gnus-agent-lib-file "groups"))
(delete-file (gnus-agent-lib-file "groups"))))))
(let* ((gnus-command-method method)
(file (gnus-agent-lib-file "groups")))
(gnus-make-directory (file-name-directory file))
- (write-region (point-min) (point-max) file nil 'silent))
+ (let ((coding-system-for-write gnus-agent-file-coding-system))
+ (write-region (point-min) (point-max) file nil 'silent))
(when (file-exists-p (gnus-agent-lib-file "active"))
- (delete-file (gnus-agent-lib-file "active"))))
+ (delete-file (gnus-agent-lib-file "active")))))
(defun gnus-agent-save-group-info (method group active)
(when (gnus-agent-method-p method)
(concat "^" (regexp-quote group) " ") nil t)
(gnus-delete-line))
(insert group " " (number-to-string (cdr active)) " "
- (number-to-string (car active)) "\n"))
+ (number-to-string (car active)) " y\n"))
(when (re-search-forward (concat (regexp-quote group) " ") nil t)
(gnus-delete-line))
(insert-buffer-substring nntp-server-buffer))))))
(save-excursion
(set-buffer gnus-agent-current-history)
(gnus-make-directory (file-name-directory gnus-agent-file-name))
- (write-region (1+ (point-min)) (point-max)
- gnus-agent-file-name nil 'silent)))
+ (let ((coding-system-for-write gnus-agent-file-coding-system))
+ (write-region (1+ (point-min)) (point-max)
+ gnus-agent-file-name nil 'silent))))
(defun gnus-agent-close-history ()
(when (gnus-buffer-live-p gnus-agent-current-history)
(setq id "No-Message-ID-in-article")
(setq id (buffer-substring (match-beginning 1) (match-end 1))))
(let ((coding-system-for-write
- gnus-agent-article-file-coding-system))
+ gnus-agent-file-coding-system))
(write-region (point-min) (point-max)
(concat dir (number-to-string (caar pos)))
nil 'silent))
(save-excursion
(while gnus-agent-buffer-alist
(set-buffer (cdar gnus-agent-buffer-alist))
- (write-region (point-min) (point-max)
- (gnus-agent-article-name ".overview"
- (caar gnus-agent-buffer-alist))
- nil 'silent)
+ (let ((coding-system-for-write
+ gnus-agent-file-coding-system))
+ (write-region (point-min) (point-max)
+ (gnus-agent-article-name ".overview"
+ (caar gnus-agent-buffer-alist))
+ nil 'silent))
(pop gnus-agent-buffer-alist))
(while gnus-agent-group-alist
(with-temp-file (caar gnus-agent-group-alist)
(gnus-agent-braid-nov group articles file))
(gnus-make-directory (nnheader-translate-file-chars
(file-name-directory file)))
- (write-region (point-min) (point-max) file nil 'silent)
+ (let ((coding-system-for-write
+ gnus-agent-file-coding-system))
+ (write-region (point-min) (point-max) file nil 'silent))
(gnus-agent-save-alist group articles nil)
(gnus-agent-enter-history
"last-header-fetched-for-session"
;; Schedule the history line for nuking.
(push (cdr elem) histories)))
(gnus-make-directory (file-name-directory nov-file))
- (write-region (point-min) (point-max) nov-file nil 'silent)
+ (let ((coding-system-for-write
+ gnus-agent-file-coding-system))
+ (write-region (point-min) (point-max) nov-file nil 'silent))
;; Delete the unwanted entries in the alist.
(setq gnus-agent-article-alist
(sort gnus-agent-article-alist 'car-less-than-car))
(let ((gnus-tmp-name (mail-content-type-get (mm-handle-type handle) 'name))
(gnus-tmp-type (car (mm-handle-type handle)))
(gnus-tmp-description (mm-handle-description handle))
- (gnus-tmp-length (with-temp-buffer (mm-handle-buffer handle)
- (buffer-size)))
+ (gnus-tmp-length (save-excursion
+ (set-buffer (mm-handle-buffer handle))
+ (buffer-size)))
b e)
(setq gnus-tmp-name
(if gnus-tmp-name
(mail-narrow-to-head)
(when (setq ct (mail-fetch-field "content-type"))
(setq ctl (condition-case ()
- (mail-header-parse-content-type ct) (error nil)))
- (let* ((handles (mm-dissect-buffer))
- handle name type b e)
- (mapcar 'mm-destroy-part gnus-article-mime-handles)
- (setq gnus-article-mime-handles handles)
- (when handles
- (goto-char (point-min))
- (search-forward "\n\n" nil t)
- (delete-region (point) (point-max))
- (if (not (equal (car ctl) "multipart/alternative"))
- (while (setq handle (pop handles))
- (gnus-insert-mime-button handle)
- (insert "\n\n")
- (when (and (mm-automatic-display-p
- (car (mm-handle-type handle)))
- (or (not (mm-handle-disposition handle))
- (equal (car (mm-handle-disposition handle))
- "inline")))
- (forward-line -2)
- (mm-display-part handle t)
- (goto-char (point-max))))
- ;; Here we have multipart/alternative
- (gnus-mime-display-alternative handles))))))))
+ (mail-header-parse-content-type ct) (error nil)))))
+ (let* ((handles (mm-dissect-buffer))
+ handle name type b e)
+ (mapcar 'mm-destroy-part gnus-article-mime-handles)
+ (setq gnus-article-mime-handles handles)
+ (when handles
+ (goto-char (point-min))
+ (search-forward "\n\n" nil t)
+ (delete-region (point) (point-max))
+ (if (not (equal (car ctl) "multipart/alternative"))
+ (while (setq handle (pop handles))
+ (gnus-insert-mime-button handle)
+ (insert "\n\n")
+ (when (and (mm-automatic-display-p
+ (car (mm-handle-type handle)))
+ (or (not (mm-handle-disposition handle))
+ (equal (car (mm-handle-disposition handle))
+ "inline")))
+ (forward-line -2)
+ (mm-display-part handle t)
+ (goto-char (point-max))))
+ ;; Here we have multipart/alternative
+ (gnus-mime-display-alternative handles))))))
(defun gnus-mime-display-alternative (handles &optional preferred)
(let* ((preferred (mm-preferred-alternative handles preferred))
(visible (const :tag "Permanently visible" t) "\
Always display this group, even when there are no unread articles
-in it.."))
+in it..")
+
+ (charset (string :tag "Charset") "\
+The default charset to use in the group.")
+)
"Alist of valid group parameters.
Each entry has the form (NAME TYPE DOC), where NAME is the parameter
put something like `(dummy-variable (ding))' in the parameters of that
group. `dummy-variable' will be set to the result of the `(ding)'
form, but who cares?"
- (group :value (nil nil)
+ (cons :format "%v" :value (nil . nil)
(symbol :tag "Variable")
(sexp :tag
"Value")))
(let ((article (gnus-summary-article-number)))
(gnus-summary-mark-as-read article gnus-canceled-mark)
(gnus-draft-setup article gnus-newsgroup-name)
+ (set-buffer-modified-p t)
+ (save-buffer)
(let ((gnus-verbose-backends nil))
(gnus-request-expire-articles (list article) gnus-newsgroup-name t))
(push
(defcustom gnus-summary-respool-default-method nil
"Default method for respooling an article.
If nil, use to the current newsgroup method."
- :type `(choice (gnus-select-method :value (nnml ""))
+ :type '(choice (gnus-select-method :value (nnml ""))
(const nil))
:group 'gnus-summary-mail)
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "0.32"
+(defconst gnus-version-number "0.33"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number)
gnus-summary-mail-forward gnus-summary-mail-other-window
gnus-summary-resend-message gnus-summary-resend-bounced-mail
gnus-summary-wide-reply gnus-summary-followup-to-mail
- gnus-summary-followup-to-mail-with-original gnus-bug)
+ gnus-summary-followup-to-mail-with-original gnus-bug
+ gnus-summary-wide-reply-with-original
+ gnus-summary-post-forward gnus-summary-wide-reply-with-original
+ gnus-summary-post-forward)
("gnus-picon" :interactive t gnus-article-display-picons
gnus-group-display-picons gnus-picons-article-display-x-face
gnus-picons-display-x-face)
cd (mail-fetch-field "content-disposition")
description (mail-fetch-field "content-description")
id (mail-fetch-field "content-id"))))
- (when ctl
+ (if (not ctl)
+ (mm-dissect-singlepart '("text/plain") nil no-strict-mime nil nil)
(setq type (split-string (car ctl) "/"))
(setq subtype (cadr type)
type (pop type))
(defun mm-dissect-multipart (ctl)
(goto-char (point-min))
- (let ((boundary (concat "\n--" (mail-content-type-get ctl 'boundary)))
- start parts end)
- (while (search-forward boundary nil t)
+ (let* ((boundary (concat "\n--" (mail-content-type-get ctl 'boundary)))
+ (close-delimiter (concat boundary "--[ \t]*$"))
+ start parts
+ (end (save-excursion
+ (goto-char (point-max))
+ (if (re-search-backward close-delimiter nil t)
+ (match-beginning 0)
+ (point-max)))))
+ (while (search-forward boundary end t)
(goto-char (match-beginning 0))
(when start
(save-excursion
(setq parts (nconc (mm-dissect-buffer t) parts)))))
(forward-line 2)
(setq start (point)))
+ (when start
+ (save-excursion
+ (save-restriction
+ (narrow-to-region start end)
+ (setq parts (nconc (mm-dissect-buffer t) parts)))))
(nreverse parts)))
(defun mm-copy-to-buffer ()
(start-process "*display*" nil
"xterm"
"-e" (format method file))
- (switch-to-buffer (generate-new-buffer "*mm*"))
- (buffer-disable-undo)
- (mm-set-buffer-file-coding-system 'no-conversion)
- (start-process "*display*" (current-buffer)
+ (start-process "*display*" (generate-new-buffer "*mm*")
shell-file-name
"-c" (format method file))))
(mm-handle-set-undisplayer handle (cons file process))
"Display HANDLE using METHOD."
(let* ((type (car (mm-handle-type handle)))
(methods
- (mapcar (lambda (i) (list (cdr (assoc "viewer" i))))
+ (mapcar (lambda (i) (list (cdr (assoc 'viewer i))))
(mailcap-mime-info type 'all)))
(method (completing-read "Viewer: " methods)))
(mm-display-external (copy-sequence handle) method)))
'((decode-coding-string . (lambda (s a) s))
(encode-coding-string . (lambda (s a) s))
(encode-coding-region . ignore)
- (decode-coding-region . ignore)
(coding-system-list . ignore)
+ (decode-coding-region . ignore)
(char-int . identity)
(device-type . ignore)
(coding-system-equal . equal)
prompt (mapcar (lambda (s) (list (symbol-name (car s))))
mm-mime-mule-charset-alist)))))))
+(defvar mm-coding-system-list nil)
+(defun mm-get-coding-system-list ()
+ "Get the coding system list."
+ (or mm-coding-system-list
+ (setq mm-coding-system-list (mm-coding-system-list))))
+
(defvar mm-charset-coding-system-alist
(let ((rest
'((gb2312 . cn-gb-2312)
(iso-2022-jp-2 . iso-2022-7bit-ss2)
(x-ctext . ctext)))
- (systems (mm-coding-system-list))
+ (systems (mm-get-coding-system-list))
dest)
(while rest
(let ((pair (car rest)))
dest)
"Charset/coding system alist.")
-
(defun mm-mule-charset-to-mime-charset (charset)
"Return the MIME charset corresponding to MULE CHARSET."
(let ((alist mm-mime-mule-charset-alist)
(setq charset (intern (format "%s-%s" charset lbt))))
(cond
;; Running in a non-MULE environment.
- ((and (null (mm-coding-system-list))
+ ((and (null (mm-get-coding-system-list))
(memq charset mm-known-charsets))
charset)
;; ascii
((eq charset 'us-ascii)
'ascii)
;; Check to see whether we can handle this charset.
- ((memq charset (mm-coding-system-list))
+ ((memq charset (mm-get-coding-system-list))
charset)
;; Nope.
(t
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Pterodactyl Gnus 0.32 Manual
+@settitle Pterodactyl Gnus 0.33 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Pterodactyl Gnus 0.32 Manual
+@title Pterodactyl Gnus 0.33 Manual
@author by Lars Magne Ingebrigtsen
@page
spool or your mbox file. All at the same time, if you want to push your
luck.
-This manual corresponds to Pterodactyl Gnus 0.32.
+This manual corresponds to Pterodactyl Gnus 0.33.
@end ifinfo
word scoring process will never bring down the score of an article to
below this number. The default is @code{nil}.
-@vindex gnus-adative-word-no-group-words
-If @code{gnus-adative-word-no-group-words} is set to t, gnus won't
-adaptively word score any of the words in the group name. Useful for
-groups like comp.editors.emacs, where most of the subject lines contain
-the word "emacs".
+@vindex gnus-adaptive-word-no-group-words
+If @code{gnus-adaptive-word-no-group-words} is set to @code{t}, gnus
+won't adaptively word score any of the words in the group name. Useful
+for groups like @samp{comp.editors.emacs}, where most of the subject
+lines contain the word @samp{emacs}.
After using this scheme for a while, it might be nice to write a
@code{gnus-psychoanalyze-user} command to go through the rules and see
like.
@item
-Boucing articles should do MIME.
+Bouncing articles should do MIME.
@item
Solve the halting problem.
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Pterodactyl Message 0.32 Manual
+@settitle Pterodactyl Message 0.33 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Pterodactyl Message 0.32 Manual
+@title Pterodactyl Message 0.33 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Pterodactyl Message 0.32. Message is
+This manual corresponds to Pterodactyl Message 0.33. Message is
distributed with the Gnus distribution bearing the same version number
as this manual.