Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

*** empty log message ***

  • Loading branch information...
commit 3ed6dd43f86e57d9111ef8d21a2663a810b1d889 1 parent 53fb4e6
@larsmagne larsmagne authored
View
88 lisp/ChangeLog
@@ -1,3 +1,91 @@
+Tue Nov 24 10:43:06 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Pterodactyl Gnus v0.54 is released.
+
+1998-11-24 11:21:32 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-sum.el (gnus-newsgroup-default-charset-alist): Note fj.
+
+1998-11-24 11:14:54 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mm-decode.el (mm-save-part): Unquote.
+
+1998-11-24 11:14:39 Matt Armstrong <matta@geoworks.com>
+
+ * mm-decode.el (mm-save-part): Bind coding system for write.
+
+1998-11-24 10:42:30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (gnus-article-mode-line-format): New default.
+ (gnus-article-mime-part-status): New function.
+
+ * message.el (message-send-news): Check the body syntax before
+ encoding.
+
+ * gnus-art.el (gnus-unbuttonized-mime-type): New function.
+ (gnus-mime-display-single): Use it.
+ (gnus-mime-display-alternative): Ditto.
+
+ * mm-decode.el: Check for whether we are running under a term.
+
+1998-11-22 08:12:25 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mm-decode.el (mm-preferred-alternative): Default to first
+ alternative.
+ (mm-preferred-alternative): No, we dont.
+
+Tue Nov 24 03:01:48 1998 Shenghuo ZHU <zsh@cs.rochester.edu>
+
+ * mm-decode.el (mm-display-external): Use binary instead of
+ no-conversion.
+ * gnus-agent.el (gnus-agent-file-coding-system): Ditto.
+ * nnheader.el (nnheader-file-coding-system): Ditto.
+ * mm-util.el (mm-with-unibyte-buffer): Use binary instead of nil.
+
+Mon Nov 23 01:51:57 1998 Shenghuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus-sum.el (gnus-newsgroup-setup-default-charset): Use group
+ name without method.
+
+Mon Nov 23 01:26:40 1998 Shenghuo ZHU <zsh@cs.rochester.edu>
+
+ * gnus-sum.el (gnus-newsgroup-default-charset): Rename
+ coding-system -> default-charset.
+ (gnus-newsgroup-default-charset-alist): Ditto.
+ (gnus-summary-local-variables): Ditto.
+ (gnus-set-global-variables): Ditto.
+ (gnus-get-newsgroup-headers): Ditto.
+ (gnus-summary-from-or-to-or-newsgroups): Ditto.
+ (gnus-get-newsgroup-headers-xover): Ditto.
+ (gnus-newsgroup-setup-default-charset): Ditto.
+ (article-decode-mime-words): Ditto.
+ (article-decode-charset): Ditto.
+ (article-decode-encoded-words): Ditto.
+ (article-de-quoted-unreadable): Ditto.
+ (gnus-mime-view-all-parts): Ditto.
+ (gnus-mime-externalize-part): Ditto.
+ (gnus-mm-display-part): Ditto.
+ (gnus-mime-display-single): Ditto.
+ (gnus-mime-display-alternative): Ditto.
+ * lpath.el : Ditto.
+
+Mon Nov 23 00:54:33 1998 Shenghuo ZHU <zsh@cs.rochester.edu>
+
+ * rfc2047.el (rfc2047-decode-region): Do not decode nil charset.
+ * gnus-art.el (article-decode-charset): Overlay
+ rfc2047-default-charset.
+ * message.el (message-draft-coding-system): New variable.
+ (message-set-auto-save-file-name): Use message-draft-coding-system.
+ * nndraft.el (nndraft-request-article): Ditto.
+ * gnus-start.el (gnus-start-draft-setup): Set charset nil.
+ * gnus-agent.el (gnus-agent-queue-setup): Ditto.
+
+Sun Nov 22 04:42:22 1998 Shenghuo ZHU <zsh@cs.rochester.edu>
+
+ * mm-uu.el (mm-uu-test): New function.
+ (mm-uu-dissect): Inherit charset and cte from head.
+ * gnus-art.el (article-decode-charset): Use mm-uu-test.
+
Sat Nov 21 09:57:01 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Pterodactyl Gnus v0.53 is released.
View
3  lisp/gnus-agent.el
@@ -92,7 +92,7 @@ If nil, only read articles will be expired."
(defvar gnus-agent-spam-hashtb nil)
(defvar gnus-agent-file-name nil)
(defvar gnus-agent-send-mail-function nil)
-(defvar gnus-agent-file-coding-system 'no-conversion)
+(defvar gnus-agent-file-coding-system 'binary)
(defconst gnus-agent-scoreable-headers
(list
@@ -332,6 +332,7 @@ agent minor mode in all Gnus buffers."
(gnus-request-create-group "queue" '(nndraft ""))
(let ((gnus-level-default-subscribed 1))
(gnus-subscribe-group "nndraft:queue" nil '(nndraft "")))
+ (gnus-group-set-parameter "nndraft:queue" 'charset "nil")
(gnus-group-set-parameter
"nndraft:queue" 'gnus-dummy '((gnus-draft-mode)))))
View
174 lisp/gnus-art.el
@@ -386,7 +386,7 @@ beginning of a line."
:type 'regexp
:group 'gnus-article-various)
-(defcustom gnus-article-mode-line-format "Gnus: %g %S"
+(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."
:type 'string
@@ -594,6 +594,7 @@ displayed by the first non-nil matching CONTENT face."
;;; Internal variables
+(defvar gnus-article-mime-handle-alist-1 nil)
(defvar gnus-treatment-function-alist
'((gnus-treat-body-highlight-signature gnus-article-highlight-signature nil)
))
@@ -614,7 +615,8 @@ Initialized from `text-mode-syntax-table.")
(defvar gnus-save-article-buffer nil)
(defvar gnus-article-mode-line-format-alist
- (nconc '((?w (gnus-article-wash-status) ?s))
+ (nconc '((?w (gnus-article-wash-status) ?s)
+ (?m (gnus-article-mime-part-status) ?s))
gnus-summary-mode-line-format-alist))
(defvar gnus-number-of-articles-to-be-saved nil)
@@ -1018,7 +1020,7 @@ MAP is an alist where the elements are on the form (\"from\" \"to\")."
(set-buffer gnus-article-buffer)
(let ((inhibit-point-motion-hooks t)
buffer-read-only
- (rfc2047-default-charset gnus-newsgroup-coding-system)
+ (rfc2047-default-charset gnus-newsgroup-default-charset)
(mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
(mail-decode-encoded-word-region (point-min) (point-max)))))
@@ -1040,17 +1042,17 @@ If PROMPT (the prefix), prompt for a coding system to use."
(prompt
(mm-read-coding-system "Charset to decode: "))
(ctl
- (mail-content-type-get ctl 'charset))
- (t
- gnus-newsgroup-coding-system)))
+ (mail-content-type-get ctl 'charset))))
+ (rfc2047-default-charset gnus-newsgroup-default-charset)
(mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced)
buffer-read-only)
(goto-char (point-max))
(widen)
(forward-line 1)
(narrow-to-region (point) (point-max))
- (when (or (not ctl)
- (equal (car ctl) "text/plain"))
+ (when (and (or (not ctl)
+ (equal (car ctl) "text/plain"))
+ (not (mm-uu-test)))
(mm-decode-body
charset (and cte (intern (downcase
(gnus-strip-whitespace cte))))
@@ -1060,7 +1062,7 @@ If PROMPT (the prefix), prompt for a coding system to use."
"Remove encoded-word encoding from headers."
(let ((inhibit-point-motion-hooks t)
buffer-read-only
- (rfc2047-default-charset gnus-newsgroup-coding-system)
+ (rfc2047-default-charset gnus-newsgroup-default-charset)
(mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
(save-restriction
(message-narrow-to-head)
@@ -1075,7 +1077,7 @@ or not."
(let ((buffer-read-only nil)
(type (gnus-fetch-field "content-transfer-encoding"))
(charset
- (or gnus-newsgroup-coding-system mm-default-coding-system))
+ (or gnus-newsgroup-default-charset mm-default-coding-system))
(mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
(when (or force
(and type (string-match "quoted-printable" (downcase type))))
@@ -2142,7 +2144,9 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(gnus-configure-windows 'summary)
(gnus-configure-windows 'article))
(gnus-set-global-variables))
- (gnus-set-mode-line 'article))
+ (let ((gnus-article-mime-handle-alist-1
+ gnus-article-mime-handle-alist))
+ (gnus-set-mode-line 'article)))
;; The result from the `request' was an actual article -
;; or at least some text that is now displayed in the
;; article buffer.
@@ -2187,7 +2191,9 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(when gnus-break-pages
(gnus-narrow-to-page)
t)))
- (gnus-set-mode-line 'article)
+ (let ((gnus-article-mime-handle-alist-1
+ gnus-article-mime-handle-alist))
+ (gnus-set-mode-line 'article))
(gnus-configure-windows 'article)
(article-goto-body)
(set-window-point (get-buffer-window (current-buffer)) (point))
@@ -2241,6 +2247,11 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(gnus-mime-externalize-part "e" "View Externally")
(gnus-mime-pipe-part "|" "Pipe To Command...")))
+(defun gnus-article-mime-part-status ()
+ (if gnus-article-mime-handle-alist-1
+ (format " (%d parts)" (length gnus-article-mime-handle-alist-1))
+ ""))
+
(defvar gnus-mime-button-map nil)
(unless gnus-mime-button-map
(setq gnus-mime-button-map (make-sparse-keymap))
@@ -2271,7 +2282,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(interactive)
(gnus-article-check-buffer)
(let ((handles gnus-article-mime-handles)
- (rfc2047-default-charset gnus-newsgroup-coding-system)
+ (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)))))
@@ -2298,11 +2309,11 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(url-standalone-mode (not gnus-plugged)))
(mm-interactively-view-part data)))
-(defun gnus-mime-copy-part ()
+(defun gnus-mime-copy-part (&optional handle)
"Put the the MIME part under point into a new buffer."
(interactive)
(gnus-article-check-buffer)
- (let* ((handle (get-text-property (point) 'gnus-data))
+ (let* ((handle (or handle (get-text-property (point) 'gnus-data)))
(contents (mm-get-part handle))
(buffer (generate-new-buffer
(file-name-nondirectory
@@ -2318,7 +2329,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(defun gnus-mime-inline-part (&optional charset)
"Insert the MIME part under point into the current buffer."
- (interactive "P") ; For compatible reason, not using "z".
+ (interactive "P") ; For compatibility reasons we are not using "z".
(gnus-article-check-buffer)
(let* ((data (get-text-property (point) 'gnus-data))
(contents (mm-get-part data))
@@ -2335,19 +2346,52 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(mm-insert-inline data contents)
(goto-char b))))
-(defun gnus-mime-externalize-part ()
+(defun gnus-mime-externalize-part (&optional handle)
"Insert the MIME part under point into the current buffer."
(interactive)
(gnus-article-check-buffer)
- (let* ((handle (get-text-property (point) 'gnus-data))
+ (let* ((handle (or handle (get-text-property (point) 'gnus-data)))
(url-standalone-mode (not gnus-plugged))
(mm-user-display-methods nil)
- (rfc2047-default-charset gnus-newsgroup-coding-system)
+ (rfc2047-default-charset gnus-newsgroup-default-charset)
(mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
(if (mm-handle-undisplayer handle)
(mm-remove-part handle)
(mm-display-part handle))))
+(defun gnus-article-part-wrapper (n function)
+ (save-current-buffer
+ (set-buffer gnus-article-buffer)
+ (when (> n (length gnus-article-mime-handle-alist))
+ (error "No such part"))
+ (let ((handle (cdr (assq n gnus-article-mime-handle-alist))))
+ (funcall function handle))))
+
+(defun gnus-article-pipe-part (n)
+ "Pipe MIME part N, which is the numerical prefix."
+ (interactive "p")
+ (gnus-article-part-wrapper n 'mm-pipe-part))
+
+(defun gnus-article-save-part (n)
+ "Save MIME part N, which is the numerical prefix."
+ (interactive "p")
+ (gnus-article-part-wrapper n 'mm-save-part))
+
+(defun gnus-article-interactively-view-part (n)
+ "Pipe MIME part N, which is the numerical prefix."
+ (interactive "p")
+ (gnus-article-part-wrapper n 'mm-interactively-view-part))
+
+(defun gnus-article-copy-part (n)
+ "Pipe MIME part N, which is the numerical prefix."
+ (interactive "p")
+ (gnus-article-part-wrapper n 'gnus-mime-copy-part))
+
+(defun gnus-article-externalize-part (n)
+ "Pipe MIME part N, which is the numerical prefix."
+ (interactive "p")
+ (gnus-article-part-wrapper n 'gnus-mime-externalize-part))
+
(defun gnus-article-view-part (n)
"View MIME part N, which is the numerical prefix."
(interactive "p")
@@ -2372,7 +2416,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
handle id (list (not (mm-handle-displayed-p handle))))
(prog1
(let ((window (selected-window))
- (rfc2047-default-charset gnus-newsgroup-coding-system)
+ (rfc2047-default-charset gnus-newsgroup-default-charset)
(mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
(save-excursion
(unwind-protect
@@ -2497,11 +2541,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(let ((id (1+ (length gnus-article-mime-handle-alist))))
(push (cons id handle) gnus-article-mime-handle-alist)
(when (or (not display)
- (not (catch 'found
- (let ((types gnus-unbuttonized-mime-types))
- (while types
- (when (string-match (pop types) type)
- (throw 'found t)))))))
+ (not (gnus-unbuttonized-mime-type-p type)))
(gnus-article-insert-newline)
(gnus-insert-mime-button
handle id (list (or display
@@ -2511,7 +2551,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(cond
(display
(forward-line -2)
- (let ((rfc2047-default-charset gnus-newsgroup-coding-system)
+ (let ((rfc2047-default-charset gnus-newsgroup-default-charset)
(mm-charset-iso-8859-1-forced
gnus-newsgroup-iso-8859-1-forced))
(mm-display-part handle t))
@@ -2522,6 +2562,14 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(mm-insert-inline handle (mm-get-part handle))
(goto-char (point-max))))))))
+(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))))))
+
(defun gnus-article-insert-newline ()
"Insert a newline, but mark it as undeletable."
(gnus-put-text-property
@@ -2535,44 +2583,25 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(save-window-excursion
(save-restriction
(when ibegend
- (narrow-to-region (car ibegend) (cdr ibegend))
+ (narrow-to-region (car ibegend)
+ (or (cdr ibegend)
+ (progn
+ (goto-char (car ibegend))
+ (forward-line 2)
+ (point))))
(delete-region (point-min) (point-max))
(mm-remove-parts handles))
(setq begend (list (point-marker)))
;; Do the toggle.
(unless (setq not-pref (cadr (member preferred ihandles)))
(setq not-pref (car ihandles)))
- (gnus-add-text-properties
- (setq from (point))
- (progn
- (insert (format "%d. " id))
- (point))
- `(gnus-callback
- (lambda (handles)
- (unless ,(not ibegend)
- (setq gnus-article-mime-handle-alist
- ',gnus-article-mime-handle-alist))
- (gnus-mime-display-alternative
- ',ihandles ',not-pref ',begend ,id))
- local-map ,gnus-mime-button-map
- ,gnus-mouse-face-prop ,gnus-article-mouse-face
- face ,gnus-article-button-face
- keymap ,gnus-mime-button-map
- gnus-part ,id
- gnus-data ,handle))
- (widget-convert-button 'link from (point)
- :action 'gnus-widget-press-button
- :button-keymap gnus-widget-button-keymap)
- ;; Do the handles
- (while (setq handle (pop handles))
+ (when (or ibegend
+ (not (gnus-unbuttonized-mime-type-p
+ "multipart/alternative")))
(gnus-add-text-properties
(setq from (point))
(progn
- (insert (format "[%c] %-18s"
- (if (equal handle preferred) ?* ? )
- (if (stringp (car handle))
- (car handle)
- (car (mm-handle-type handle)))))
+ (insert (format "%d. " id))
(point))
`(gnus-callback
(lambda (handles)
@@ -2580,7 +2609,7 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(setq gnus-article-mime-handle-alist
',gnus-article-mime-handle-alist))
(gnus-mime-display-alternative
- ',ihandles ',handle ',begend ,id))
+ ',ihandles ',not-pref ',begend ,id))
local-map ,gnus-mime-button-map
,gnus-mouse-face-prop ,gnus-article-mouse-face
face ,gnus-article-button-face
@@ -2590,12 +2619,39 @@ If ALL-HEADERS is non-nil, no headers are hidden."
(widget-convert-button 'link from (point)
:action 'gnus-widget-press-button
:button-keymap gnus-widget-button-keymap)
- (insert " "))
- (insert "\n\n")
+ ;; Do the handles
+ (while (setq handle (pop handles))
+ (gnus-add-text-properties
+ (setq from (point))
+ (progn
+ (insert (format "[%c] %-18s"
+ (if (equal handle preferred) ?* ? )
+ (if (stringp (car handle))
+ (car handle)
+ (car (mm-handle-type handle)))))
+ (point))
+ `(gnus-callback
+ (lambda (handles)
+ (unless ,(not ibegend)
+ (setq gnus-article-mime-handle-alist
+ ',gnus-article-mime-handle-alist))
+ (gnus-mime-display-alternative
+ ',ihandles ',handle ',begend ,id))
+ local-map ,gnus-mime-button-map
+ ,gnus-mouse-face-prop ,gnus-article-mouse-face
+ face ,gnus-article-button-face
+ keymap ,gnus-mime-button-map
+ gnus-part ,id
+ gnus-data ,handle))
+ (widget-convert-button 'link from (point)
+ :action 'gnus-widget-press-button
+ :button-keymap gnus-widget-button-keymap)
+ (insert " "))
+ (insert "\n\n"))
(when preferred
(if (stringp (car preferred))
(gnus-display-mime preferred)
- (let ((rfc2047-default-charset gnus-newsgroup-coding-system)
+ (let ((rfc2047-default-charset gnus-newsgroup-default-charset)
(mm-charset-iso-8859-1-forced
gnus-newsgroup-iso-8859-1-forced))
(mm-display-part preferred)))
View
1  lisp/gnus-start.el
@@ -721,6 +721,7 @@ prompt the user for the name of an NNTP server to use."
(unless (gnus-gethash "nndraft:drafts" gnus-newsrc-hashtb)
(let ((gnus-level-default-subscribed 1))
(gnus-subscribe-group "nndraft:drafts" nil '(nndraft "")))
+ (gnus-group-set-parameter "nndraft:drafts" 'charset "nil")
(gnus-group-set-parameter
"nndraft:drafts" 'gnus-dummy '((gnus-draft-mode)))))
View
88 lisp/gnus-sum.el
@@ -797,12 +797,12 @@ which it may alter in any way.")
:group 'gnus-summary
:type 'regexp)
-(defcustom gnus-newsgroup-coding-system-alist
+(defcustom gnus-newsgroup-default-charset-alist
'(("^hk\\>\\|^tw\\>\\|\\<big5\\>" . cn-big5)
("^cn\\>\\|\\<chinese\\>" . cn-gb-2312)
- ("^fj\\>" . iso-2022-jp-2)
+ ("^fj\\>\\|^japan\\>" . iso-2022-jp-2)
("^relcom\\>" . koi8-r))
- "Alist of Regexps (to match group names) and CODING-SYSTEMs to be applied."
+ "Alist of Regexps (to match group names) and default charsets to be applied."
:type '(repeat (cons (regexp :tag "Group")
(symbol :tag "Charset")))
:group 'gnus)
@@ -1001,7 +1001,7 @@ variable (string, integer, character, etc).")
(defvar gnus-last-article nil)
(defvar gnus-newsgroup-history nil)
-(defvar gnus-newsgroup-coding-system nil)
+(defvar gnus-newsgroup-default-charset nil)
(defvar gnus-newsgroup-iso-8859-1-forced nil)
(defconst gnus-summary-local-variables
@@ -1035,7 +1035,7 @@ variable (string, integer, character, etc).")
gnus-cache-removable-articles gnus-newsgroup-cached
gnus-newsgroup-data gnus-newsgroup-data-reverse
gnus-newsgroup-limit gnus-newsgroup-limits
- gnus-newsgroup-coding-system gnus-newsgroup-iso-8859-1-forced)
+ gnus-newsgroup-default-charset gnus-newsgroup-iso-8859-1-forced)
"Variables that are buffer-local to the summary buffers.")
;; Byte-compiler warning.
@@ -1533,7 +1533,12 @@ increase the score of each group you read."
"s" gnus-soup-add-article)
(gnus-define-keys (gnus-summary-mime-map "K" gnus-summary-mode-map)
- "b" gnus-summary-display-buttonized)
+ "b" gnus-summary-display-buttonized
+ "v" gnus-article-view-part
+ "o" gnus-article-save-part
+ "c" gnus-article-copy-part
+ "e" gnus-article-externalize-part
+ "|" gnus-article-pipe-part)
)
(defun gnus-summary-make-menu-bar ()
@@ -2399,7 +2404,7 @@ marks of articles."
(gac gnus-article-current)
(reffed gnus-reffed-article-number)
(score-file gnus-current-score-file)
- (coding-system gnus-newsgroup-coding-system)
+ (default-charset gnus-newsgroup-default-charset)
(iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
(save-excursion
(set-buffer gnus-group-buffer)
@@ -2414,7 +2419,7 @@ marks of articles."
gnus-original-article-buffer original
gnus-reffed-article-number reffed
gnus-current-score-file score-file
- gnus-newsgroup-coding-system coding-system
+ gnus-newsgroup-default-charset default-charset
gnus-newsgroup-iso-8859-1-forced iso-8859-1-forced)
;; The article buffer also has local variables.
(when (gnus-buffer-live-p gnus-article-buffer)
@@ -2491,7 +2496,7 @@ marks of articles."
(defun gnus-summary-from-or-to-or-newsgroups (header)
(let ((to (cdr (assq 'To (mail-header-extra header))))
(newsgroups (cdr (assq 'Newsgroups (mail-header-extra header))))
- (rfc2047-default-charset gnus-newsgroup-coding-system)
+ (rfc2047-default-charset gnus-newsgroup-default-charset)
(mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
(cond
((and to
@@ -4011,7 +4016,7 @@ If SELECT-ARTICLES, only select those articles from GROUP."
(setq gnus-newsgroup-name group)
(setq gnus-newsgroup-unselected nil)
(setq gnus-newsgroup-unreads (gnus-list-of-unread-articles group))
- (gnus-newsgroup-setup-coding-system)
+ (gnus-newsgroup-setup-default-charset)
;; Adjust and set lists of article marks.
(when info
@@ -4523,7 +4528,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
(save-excursion (set-buffer gnus-summary-buffer)
gnus-newsgroup-dependencies)))
headers id end ref
- (rfc2047-default-charset gnus-newsgroup-coding-system)
+ (rfc2047-default-charset gnus-newsgroup-default-charset)
(mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced))
(save-excursion
(set-buffer nntp-server-buffer)
@@ -4677,7 +4682,7 @@ list of headers that match SEQUENCE (see `nntp-retrieve-headers')."
;; Get the Xref when the users reads the articles since most/some
;; NNTP servers do not include Xrefs when using XOVER.
(setq gnus-article-internal-prepare-hook '(gnus-article-get-xrefs))
- (let ((rfc2047-default-charset gnus-newsgroup-coding-system)
+ (let ((rfc2047-default-charset gnus-newsgroup-default-charset)
(mm-charset-iso-8859-1-forced gnus-newsgroup-iso-8859-1-forced)
(cur nntp-server-buffer)
(dependencies (or dependencies gnus-newsgroup-dependencies))
@@ -9145,37 +9150,42 @@ save those articles instead."
(gnus-summary-exit))
buffers)))))
-(defun gnus-newsgroup-setup-coding-system ()
- "Setup newsgroup default coding system."
- (setq gnus-newsgroup-coding-system
- (or (and gnus-newsgroup-name
- (or (gnus-group-find-parameter
- gnus-newsgroup-name 'charset)
- (let ((alist gnus-newsgroup-coding-system-alist)
- elem (charset nil))
- (while alist
- (if (string-match
- (car (setq elem (pop alist)))
- gnus-newsgroup-name)
- (setq alist nil
- charset (cdr elem))))
- charset)))
- rfc2047-default-charset))
- (setq gnus-newsgroup-iso-8859-1-forced
- (and gnus-newsgroup-name
- (or (gnus-group-find-parameter
- gnus-newsgroup-name 'iso-8859-1-forced)
- (string-match gnus-newsgroup-iso-8859-1-forced-regexp
- gnus-newsgroup-name))))
- (if (stringp gnus-newsgroup-coding-system)
- (setq gnus-newsgroup-coding-system
- (intern (downcase gnus-newsgroup-coding-system))))
+(defun gnus-newsgroup-setup-default-charset ()
+ "Setup newsgroup default charset."
+ (let ((name (and gnus-newsgroup-name
+ (string-match "[^:]+$" gnus-newsgroup-name)
+ (match-string 0 gnus-newsgroup-name))))
+ (setq gnus-newsgroup-default-charset
+ (or (and gnus-newsgroup-name
+ (or (gnus-group-find-parameter
+ gnus-newsgroup-name 'charset)
+ (let ((alist gnus-newsgroup-default-charset-alist)
+ elem (charset nil))
+ (while alist
+ (if (and name
+ (string-match
+ (car (setq elem (pop alist)))
+ name))
+ (setq alist nil
+ charset (cdr elem))))
+ charset)))
+ rfc2047-default-charset))
+ (setq gnus-newsgroup-iso-8859-1-forced
+ (and gnus-newsgroup-name
+ (or (gnus-group-find-parameter
+ gnus-newsgroup-name 'iso-8859-1-forced)
+ (and name
+ (string-match gnus-newsgroup-iso-8859-1-forced-regexp
+ name))))))
+ (if (stringp gnus-newsgroup-default-charset)
+ (setq gnus-newsgroup-default-charset
+ (intern (downcase gnus-newsgroup-default-charset))))
(setq gnus-newsgroup-iso-8859-1-forced
(if (stringp gnus-newsgroup-iso-8859-1-forced)
(intern (downcase gnus-newsgroup-iso-8859-1-forced))
(and gnus-newsgroup-iso-8859-1-forced
- gnus-newsgroup-coding-system))))
-
+ gnus-newsgroup-default-charset))))
+
;;;
;;; MIME Commands
;;;
View
2  lisp/gnus.el
@@ -254,7 +254,7 @@ is restarted, and sometimes reloaded."
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "0.53"
+(defconst gnus-version-number "0.54"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number)
View
2  lisp/lpath.el
@@ -45,7 +45,7 @@
mouse-selection-click-count-buffer buffer-display-table
font-lock-defaults user-full-name user-login-name
gnus-newsgroup-name gnus-article-x-face-too-ugly
- gnus-newsgroup-coding-system
+ gnus-newsgroup-default-charset
gnus-newsgroup-iso-8859-1-forced
mail-mode-hook enable-multibyte-characters
adaptive-fill-first-line-regexp adaptive-fill-regexp
View
125 lisp/message.el
@@ -873,6 +873,11 @@ The cdr of ech entry is a function for applying the face to a region.")
(defvar message-send-coding-system 'binary
"Coding system to encode outgoing mail.")
+(defvar message-draft-coding-system
+ (if (string-match "XEmacs\\|Lucid" emacs-version)
+ 'escape-quoted 'emacs-mule)
+ "Coding system to compose mail.")
+
;;; Internal variables.
(defvar message-default-charset nil)
@@ -2253,59 +2258,61 @@ to find out how to use this."
message-syntax-checks)
message-syntax-checks))
result)
- (message-encode-message-body)
- (save-restriction
- (message-narrow-to-headers)
- ;; Insert some headers.
- (message-generate-headers message-required-news-headers)
- (mail-encode-encoded-word-buffer)
- ;; Let the user do all of the above.
- (run-hooks 'message-header-hook))
- (message-cleanup-headers)
- (if (not (message-check-news-syntax))
+ (if (not (message-check-news-body-syntax))
nil
- (unwind-protect
- (save-excursion
- (set-buffer tembuf)
- (buffer-disable-undo)
- (erase-buffer)
- ;; Avoid copying text props.
- (insert (format
- "%s" (save-excursion
- (set-buffer messbuf)
- (buffer-string))))
- ;; Remove some headers.
- (save-restriction
- (message-narrow-to-headers)
+ (message-encode-message-body)
+ (save-restriction
+ (message-narrow-to-headers)
+ ;; Insert some headers.
+ (message-generate-headers message-required-news-headers)
+ (mail-encode-encoded-word-buffer)
+ ;; Let the user do all of the above.
+ (run-hooks 'message-header-hook))
+ (message-cleanup-headers)
+ (if (not (message-check-news-syntax))
+ nil
+ (unwind-protect
+ (save-excursion
+ (set-buffer tembuf)
+ (buffer-disable-undo)
+ (erase-buffer)
+ ;; Avoid copying text props.
+ (insert (format
+ "%s" (save-excursion
+ (set-buffer messbuf)
+ (buffer-string))))
;; Remove some headers.
- (message-remove-header message-ignored-news-headers t))
- (goto-char (point-max))
- ;; require one newline at the end.
- (or (= (preceding-char) ?\n)
- (insert ?\n))
- (let ((case-fold-search t))
- ;; Remove the delimiter.
- (goto-char (point-min))
- (re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "\n"))
- (replace-match "\n")
- (backward-char 1))
- (run-hooks 'message-send-news-hook)
- ;;(require (car method))
- ;;(funcall (intern (format "%s-open-server" (car method)))
- ;;(cadr method) (cddr method))
- ;;(setq result
- ;; (funcall (intern (format "%s-request-post" (car method)))
- ;; (cadr method)))
- (gnus-open-server method)
- (setq result (gnus-request-post method)))
- (kill-buffer tembuf))
- (set-buffer messbuf)
- (if result
- (push 'news message-sent-message-via)
- (message "Couldn't send message via news: %s"
- (nnheader-get-report (car method)))
- nil))))
+ (save-restriction
+ (message-narrow-to-headers)
+ ;; Remove some headers.
+ (message-remove-header message-ignored-news-headers t))
+ (goto-char (point-max))
+ ;; require one newline at the end.
+ (or (= (preceding-char) ?\n)
+ (insert ?\n))
+ (let ((case-fold-search t))
+ ;; Remove the delimiter.
+ (goto-char (point-min))
+ (re-search-forward
+ (concat "^" (regexp-quote mail-header-separator) "\n"))
+ (replace-match "\n")
+ (backward-char 1))
+ (run-hooks 'message-send-news-hook)
+ ;;(require (car method))
+ ;;(funcall (intern (format "%s-open-server" (car method)))
+ ;;(cadr method) (cddr method))
+ ;;(setq result
+ ;; (funcall (intern (format "%s-request-post" (car method)))
+ ;; (cadr method)))
+ (gnus-open-server method)
+ (setq result (gnus-request-post method)))
+ (kill-buffer tembuf))
+ (set-buffer messbuf)
+ (if result
+ (push 'news message-sent-message-via)
+ (message "Couldn't send message via news: %s"
+ (nnheader-get-report (car method)))
+ nil)))))
;;;
;;; Header generation & syntax checking.
@@ -2324,14 +2331,11 @@ to find out how to use this."
(save-excursion
(save-restriction
(widen)
- (and
- ;; We narrow to the headers and check them first.
- (save-excursion
- (save-restriction
- (message-narrow-to-headers)
- (message-check-news-header-syntax)))
- ;; Check the body.
- (message-check-news-body-syntax)))))
+ ;; We narrow to the headers and check them first.
+ (save-excursion
+ (save-restriction
+ (message-narrow-to-headers)
+ (message-check-news-header-syntax))))))
(defun message-check-news-header-syntax ()
(and
@@ -3311,7 +3315,8 @@ Headers already prepared in the buffer are not modified."
(setq buffer-file-name (expand-file-name "*message*"
message-auto-save-directory))
(setq buffer-auto-save-file-name (make-auto-save-file-name)))
- (clear-visited-file-modtime)))
+ (clear-visited-file-modtime)
+ (setq buffer-file-coding-system message-draft-coding-system)))
(defun message-disassociate-draft ()
"Disassociate the message buffer from the drafts directory."
View
47 lisp/mm-decode.el
@@ -47,17 +47,20 @@
(defvar mm-inline-media-tests
'(("image/jpeg" mm-inline-image
- (and (featurep 'jpeg) (mm-image-fit-p handle)))
+ (and window-system (featurep 'jpeg) (mm-image-fit-p handle)))
("image/png" mm-inline-image
- (and (featurep 'png) (mm-image-fit-p handle)))
+ (and window-system (featurep 'png) (mm-image-fit-p handle)))
("image/gif" mm-inline-image
- (and (featurep 'gif) (mm-image-fit-p handle)))
+ (and window-system (featurep 'gif) (mm-image-fit-p handle)))
("image/tiff" mm-inline-image
- (and (featurep 'tiff) (mm-image-fit-p handle)))
- ("image/xbm" mm-inline-image (and (fboundp 'device-type)
- (eq (device-type) 'x)))
- ("image/xpm" mm-inline-image (featurep 'xpm))
- ("image/bmp" mm-inline-image (featurep 'bmp))
+ (and window-system (featurep 'tiff) (mm-image-fit-p handle)))
+ ("image/xbm" mm-inline-image
+ (and window-system (fboundp 'device-type)
+ (eq (device-type) 'x)))
+ ("image/xpm" mm-inline-image
+ (and window-system (featurep 'xpm)))
+ ("image/bmp" mm-inline-image
+ (and window-system (featurep 'bmp)))
("text/plain" mm-inline-text t)
("text/enriched" mm-inline-text t)
("text/richtext" mm-inline-text t)
@@ -81,7 +84,8 @@
"image/.*" "message/delivery-status" "multipart/.*"))
(defvar mm-alternative-precedence
- '("text/html" "text/enriched" "text/richtext" "text/plain")
+ '("image/jpeg" "image/gif" "text/html" "text/enriched"
+ "text/richtext" "text/plain")
"List that describes the precedence of alternative parts.")
(defvar mm-tmp-directory "/tmp/"
@@ -237,7 +241,7 @@ external if displayed external."
(select-window win)))
(switch-to-buffer (generate-new-buffer "*mm*")))
(buffer-disable-undo)
- (mm-set-buffer-file-coding-system 'no-conversion)
+ (mm-set-buffer-file-coding-system 'binary)
(insert-buffer-substring cur)
(message "Viewing with %s" method)
(let ((mm (current-buffer)))
@@ -261,7 +265,7 @@ external if displayed external."
dir))
(setq file (make-temp-name (expand-file-name "mm." dir))))
(write-region (point-min) (point-max)
- file nil 'nomesg nil 'no-conversion)
+ file nil 'nomesg nil 'binary)
(message "Viewing with %s" method)
(unwind-protect
(setq process
@@ -447,7 +451,12 @@ 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)))
- (write-region (point-min) (point-max) file)))))
+ (let ((coding-system-for-write
+ (if (equal "text" (car (split-string
+ (car (mm-handle-type handle)) "/")))
+ buffer-file-coding-system
+ 'binary)))
+ (write-region (point-min) (point-max) file))))))
(defun mm-pipe-part (handle)
"Pipe HANDLE to a process."
@@ -473,7 +482,7 @@ This overrides entries in the mailcap file."
(defun mm-preferred-alternative (handles &optional preferred)
"Say which of HANDLES are preferred."
(let ((prec (if preferred (list preferred) mm-alternative-precedence))
- p h result type)
+ p h result type handle)
(while (setq p (pop prec))
(setq h handles)
(while h
@@ -481,6 +490,7 @@ This overrides entries in the mailcap file."
(if (stringp (caar h))
(caar h)
(car (mm-handle-type (car h)))))
+ (setq handle (car h))
(when (and (equal p type)
(mm-automatic-display-p type)
(or (stringp (caar h))
@@ -510,12 +520,11 @@ This overrides entries in the mailcap file."
(defun mm-image-fit-p (handle)
"Say whether the image in HANDLE will fit the current window."
- (or t
- (let ((image (make-image-instance (mm-get-image handle))))
- (and (< (image-instance-width image)
- (window-pixel-width))
- (< (image-instance-height image)
- (window-pixel-height))))))
+ (let ((image (make-annotation (mm-get-image handle))))
+ (and (< (glyph-width (annotation-glyph image))
+ (window-pixel-width))
+ (< (glyph-height (annotation-glyph image))
+ (window-pixel-height)))))
(provide 'mm-decode)
View
2  lisp/mm-util.el
@@ -220,7 +220,7 @@ 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)
+ (let ((buffer-file-coding-system 'binary))
,@forms))
(and (buffer-name ,temp-buffer)
(kill-buffer ,temp-buffer))))
View
56 lisp/mm-uu.el
@@ -2,7 +2,7 @@
;; Copyright (c) 1998 by Shenghuo Zhu <zsh@cs.rochester.edu>
;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
-;; $Revision: 5.2 $
+;; $Revision: 5.3 $
;; Keywords: news postscript uudecode binhex shar
;; This file is not part of GNU Emacs, but the same permissions
@@ -72,13 +72,27 @@
(defun mm-uu-dissect ()
"Dissect the current buffer and return a list of uu handles."
- (save-excursion
- (save-restriction
- (mail-narrow-to-head)
- (goto-char (point-max)))
- (forward-line)
- (let ((text-start (point)) start-char end-char
- type file-name end-line result)
+ (let (ct ctl cte charset text-start start-char end-char
+ type file-name end-line result text-plain-type)
+ (save-excursion
+ (save-restriction
+ (mail-narrow-to-head)
+ (when (and (mail-fetch-field "mime-version")
+ (setq ct (mail-fetch-field "content-type")))
+ (setq cte (message-fetch-field "content-transfer-encoding" t)
+ ctl (condition-case () (mail-header-parse-content-type ct)
+ (error nil))
+ charset (and ctl (mail-content-type-get ctl 'charset)))
+ (if (stringp cte)
+ (setq cte (intern (downcase (mail-header-remove-whitespace
+ (mail-header-remove-comments
+ cte)))))))
+ (goto-char (point-max)))
+ (forward-line)
+ (setq text-start (point)
+ text-plain-type (cons "text/plain"
+ (if charset
+ (list (cons 'charset charset)))))
(while (re-search-forward mm-uu-begin-line nil t)
(beginning-of-line)
(setq start-char (point))
@@ -93,7 +107,7 @@
(nnheader-translate-file-chars (match-string 1))))))
(setq end-line (symbol-value
(intern (concat "mm-uu-" (symbol-name type)
- "-end-line"))))
+ "-end-line"))))
(when (re-search-forward end-line nil t)
(forward-line)
(setq end-char (point))
@@ -105,7 +119,7 @@
(if (> start-char text-start)
(push
(list (mm-uu-copy-to-buffer text-start start-char)
- '("text/plain") nil nil nil nil)
+ text-plain-type cte nil nil nil)
result))
(push
(cond
@@ -143,11 +157,31 @@
(if (> (point-max) (1+ text-start))
(push
(list (mm-uu-copy-to-buffer text-start (point-max))
- '("text/plain") nil nil nil nil)
+ text-plain-type cte nil nil nil)
result))
(setq result (cons "multipart/mixed" (nreverse result))))
result)))
+;;;### autoload
+(defun mm-uu-test ()
+ "Check whether the current buffer contains uu stuffs."
+ (save-excursion
+ (save-restriction
+ (mail-narrow-to-head)
+ (goto-char (point-max)))
+ (forward-line)
+ (let (type end-line result)
+ (while (and (not result) (re-search-forward mm-uu-begin-line nil t))
+ (forward-line)
+ (setq type (cdr (assq (aref (match-string 0) 0)
+ mm-uu-identifier-alist)))
+ (setq end-line (symbol-value
+ (intern (concat "mm-uu-" (symbol-name type)
+ "-end-line"))))
+ (if (re-search-forward end-line nil t)
+ (setq result t)))
+ result)))
+
(provide 'mm-uu)
;;; mm-uu.el ends here
View
4 lisp/nndraft.el
@@ -109,7 +109,9 @@
(newest (if (file-newer-than-file-p file auto) file auto))
(nntp-server-buffer (or buffer nntp-server-buffer)))
(when (and (file-exists-p newest)
- (nnmail-find-file newest))
+ (let ((nnmail-file-coding-system
+ message-draft-coding-system))
+ (nnmail-find-file newest)))
(save-excursion
(set-buffer nntp-server-buffer)
(goto-char (point-min))
View
2  lisp/nnheader.el
@@ -754,7 +754,7 @@ If FILE, find the \".../etc/PACKAGE\" file instead."
(when (string-match (car ange-ftp-path-format) path)
(ange-ftp-re-read-dir path)))))
-(defvar nnheader-file-coding-system 'no-conversion
+(defvar nnheader-file-coding-system 'binary
"Coding system used in file backends of Gnus.")
(defun nnheader-insert-file-contents (filename &optional visit beg end replace)
View
4 lisp/rfc2047.el
@@ -270,10 +270,10 @@ Should be called narrowed to the head of the message."
(prog1
(match-string 0)
(delete-region (match-beginning 0) (match-end 0)))))
- (when (mm-multibyte-p)
+ (when (and (mm-multibyte-p) rfc2047-default-charset)
(mm-decode-coding-region b e rfc2047-default-charset))
(setq b (point)))
- (when (mm-multibyte-p)
+ (when (and (mm-multibyte-p) rfc2047-default-charset)
(mm-decode-coding-region b (point-max) rfc2047-default-charset))))))
(defun rfc2047-decode-string (string)
View
6 texi/gnus.texi
@@ -1,7 +1,7 @@
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Pterodactyl Gnus 0.53 Manual
+@settitle Pterodactyl Gnus 0.54 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.53 Manual
+@title Pterodactyl Gnus 0.54 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.53.
+This manual corresponds to Pterodactyl Gnus 0.54.
@end ifinfo
View
6 texi/message.texi
@@ -1,7 +1,7 @@
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Pterodactyl Message 0.53 Manual
+@settitle Pterodactyl Message 0.54 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.53 Manual
+@title Pterodactyl Message 0.54 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.53. Message is
+This manual corresponds to Pterodactyl Message 0.54. Message is
distributed with the Gnus distribution bearing the same version number
as this manual.
Please sign in to comment.
Something went wrong with that request. Please try again.