all: lick info
lick:
- cd lisp && $(MAKE) EMACS=$(EMACS) lispdir=$(lispdir) all
+ cd lisp && $(MAKE) EMACS="$(EMACS)" lispdir="$(lispdir)" all
install:
- cd lisp && $(MAKE) EMACS=$(EMACS) lispdir=$(lispdir) install
- cd texi && $(MAKE) EMACS=$(EMACS) install
+ cd lisp && $(MAKE) EMACS="$(EMACS)" lispdir="$(lispdir)" install
+ cd texi && $(MAKE) EMACS="$(EMACS)" install
# Rule for Lars and nobody else.
some:
- cd lisp && $(MAKE) EMACS=$(EMACS) some
+ cd lisp && $(MAKE) EMACS="$(EMACS)" some
l:
- cd lisp && $(MAKE) EMACS=$(EMACS) clever
+ cd lisp && $(MAKE) EMACS="$(EMACS)" clever
info:
- cd texi && $(MAKE) EMACS=$(EMACS) all
+ cd texi && $(MAKE) EMACS="$(EMACS)" all
clean:
rm -f */*.orig */*.rej *.orig *.rej
xsome:
- cd lisp && $(MAKE) EMACS=$(XEMACS) some
+ cd lisp && $(MAKE) EMACS="$(XEMACS)" some
elclean:
rm lisp/*.elc
+Tue Sep 1 10:29:33 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Pterodactyl Gnus v0.13 is released.
+
+1998-09-01 09:14:33 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-util.el (gnus-strip-whitespace): Already defined.
+ Removed.
+
+ * gnus-art.el (gnus-article-decode-charset): Strip whitespace.
+
+ * gnus-util.el (gnus-strip-whitespace): New function.
+
+ * mm-util.el (mm-content-type-charset): Downcase.
+
+1998-08-31 23:04:29 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus-art.el (gnus-article-decode-charset): Accept a prefix.
+ (gnus-article-decode-charset): Don't fetch all headers.
+
+ * mm-util.el (mm-read-coding-system): New function.
+
+ * mm-bodies.el (mm-decode-body): Check the right charset.
+
+ * gnus-sum.el (gnus-summary-mode-line-format): Ditto.
+
+ * gnus-art.el (gnus-article-mode-line-format): Use short group
+ format.
+
+Mon Aug 31 23:03:13 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Pterodactyl Gnus v0.12 is released.
+
+1998-08-31 22:39:36 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * mm-bodies.el (mm-decode-body): Don't do charset unless MULE.
+
+ * gnus-art.el (gnus-article-decode-charset): Supply cte.
+ (gnus-article-decode-charset): Always run.
+
+ * mm-bodies.el (mm-decode-body): Decode cte.
+
+Mon Aug 31 22:14:50 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Pterodactyl Gnus v0.11 is released.
+
+1998-08-31 14:27:25 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.el (message-encode-message-body): Ditto.
+
+ * gnus-art.el (gnus-article-decode-mime-words): New command and
+ keystroke.
+ (gnus-article-decode-charset): Ditto.
+ (gnus-article-decode-charset): Only work under MULE.
+
+ * mm-util.el (mm-content-type-charset): New function.
+
+ * nnmail.el (nnmail-delete-incoming): Changed to nil.
+
+ * message.el (message-send-mail): Insert MIME headers.
+ (message-check-news-body-syntax): Don't warn for escape sequences.
+ (message-check-news-body-syntax): Insert MIME headers.
+
+ * mm-bodies.el (mm-body-encoding): New function.
+
+ * message.el (message-encode-message-body): New function.
+
+ * mm-bodies.el: New file.
+
+ * mm-util.el (mm-narrow-to-head): New function.
+
+ * rfc2047.el (rfc2047-encode): Use it.
+
+ * mm-util.el: Provide mm-encode-coding-region.
+
+ * gnus-sum.el (gnus-summary-mode): Enable multibyte.
+
+ * gnus-util.el (gnus-set-work-buffer): Enable multibyte.
+
+ * mm-util.el (mm-enable-multibyte): New function.
+
+ * message.el (message-set-work-buffer): Set multibyte.
+
+ * gnus.el (gnus-continuum-version): Be valid forever and ever.
+
+ * gnus-util.el (gnus-point-at-eol): Removed.
+ (gnus-point-at-bol): Ditto.
+
+ * base64.el (base64-decode-region): Commented out messaging.
+
+1998-08-31 Didier Verna <verna@inf.enst.fr>
+
+ * gnus-msg.el (gnus-group-mail): make it behave like
+ gnus-group-post-news with regards to the prefix (this enables the
+ use of posting styles).
+
+1998-08-31 12:53:32 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * gnus.el (gnus-article-display-hook): Added
+ gnus-article-decode-rfc1522 to hook.
+
Mon Aug 31 12:43:46 1998 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Pterodactyl Gnus v0.10 is released.
(defun base64-decode-region (start end)
(interactive "r")
- (message "Decoding base64...")
+ ;;(message "Decoding base64...")
(let ((work-buffer nil)
(done nil)
(counter 0)
(insert-buffer-substring work-buffer)
(delete-region (point) end))
(and work-buffer (kill-buffer work-buffer))))
- (message "Decoding base64... done"))
+ ;;(message "Decoding base64... done")
+ )
(defun base64-encode-region (start end)
(interactive "r")
(require 'browse-url)
(require 'alist)
(require 'mime-view)
+(require 'mm-bodies)
(defgroup gnus-article nil
"Article display."
:type 'regexp
:group 'gnus-article-various)
-(defcustom gnus-article-mode-line-format "Gnus: %%b %S"
+(defcustom gnus-article-mode-line-format "Gnus: %g %S"
"*The format specification for the article mode line.
See `gnus-summary-mode-line-format' for a closer description."
:type 'string
default-mime-charset)))
(eword-decode-header charset)
)))
+;; Semi-gnus specific
+;;
+
+;; - pgnus specific
+(defun gnus-article-decode-mime-words ()
+ "Decode all MIME-encoded words in the article."
+ (interactive)
+ (save-excursion
+ (set-buffer gnus-article-buffer)
+ (let ((inhibit-point-motion-hooks t)
+ buffer-read-only)
+ (rfc2047-decode-region (point-min) (point-max)))))
+
+(defun gnus-article-decode-charset (&optional prompt)
+ "Decode charset-encoded text in the article.
+If PROMPT (the prefix), prompt for a coding system to use."
+ (interactive "P")
+ (save-excursion
+ (set-buffer gnus-article-buffer)
+ (let* ((inhibit-point-motion-hooks t)
+ (ct (message-fetch-field "Content-Type" t))
+ (cte (message-fetch-field "Content-Transfer-Encoding" t))
+ (charset (cond
+ (prompt
+ (mm-read-coding-system "Charset to decode: "))
+ (ct
+ (mm-content-type-charset ct))
+ (gnus-newsgroup-name
+ (gnus-group-find-parameter
+ gnus-newsgroup-name 'charset))))
+ buffer-read-only)
+ (save-restriction
+ (goto-char (point-min))
+ (search-forward "\n\n" nil 'move)
+ (narrow-to-region (point) (point-max))
+ (mm-decode-body
+ charset (and cte (intern (downcase (gnus-strip-whitespace cte)))))))))
+
+(defalias 'gnus-decode-rfc1522 'article-decode-rfc1522)
+(defalias 'gnus-article-decode-rfc1522 'article-decode-rfc1522)
+(defun article-decode-rfc1522 ()
+ "Remove QP encoding from headers."
+ (let ((inhibit-point-motion-hooks t)
+ (buffer-read-only nil))
+ (save-restriction
+ (message-narrow-to-head)
+ (rfc2047-decode-region (point-min) (point-max)))))
+
+(defun article-de-quoted-unreadable (&optional force)
+ "Translate a quoted-printable-encoded article.
+If FORCE, decode the article whether it is marked as quoted-printable
+or not."
+ (interactive (list 'force))
+ (save-excursion
+ (let ((buffer-read-only nil)
+ (type (gnus-fetch-field "content-transfer-encoding")))
+ (gnus-article-decode-rfc1522)
+ (when (or force
+ (and type (string-match "quoted-printable" (downcase type))))
+ (goto-char (point-min))
+ (search-forward "\n\n" nil 'move)
+ (quoted-printable-decode-region (point) (point-max))))))
+
+(defun article-mime-decode-quoted-printable-buffer ()
+ "Decode Quoted-Printable in the current buffer."
+ (quoted-printable-decode-region (point-min) (point-max)))
+;; - pgnus specific
(defun article-hide-pgp (&optional arg)
"Toggle hiding of any PGP headers and signatures in the current article.
(buffer-disable-undo (current-buffer))
(setq buffer-read-only t)
(set-syntax-table gnus-article-mode-syntax-table)
- (when (fboundp 'set-buffer-multibyte)
- (set-buffer-multibyte t))
+ (mm-enable-multibyte)
(gnus-run-hooks 'gnus-article-mode-hook))
(defun gnus-article-setup-buffer ()
;;; Post news commands of Gnus group mode and summary mode
-(defun gnus-group-mail ()
- "Start composing a mail."
- (interactive)
- (gnus-setup-message 'message
- (message-mail)))
+(defun gnus-group-mail (&optional arg)
+ "Start composing a mail.
+If ARG, use the group under the point to find a posting style.
+If ARG is 1, prompt for a group name to find the posting style."
+ (interactive "P")
+ (let ((gnus-newsgroup-name
+ (if arg
+ (if (= 1 (prefix-numeric-value arg))
+ (completing-read "Use style of group: " gnus-active-hashtb nil
+ (gnus-read-active-file-p))
+ (gnus-group-group-name))
+ "")))
+ (gnus-setup-message 'message (message-mail))
+ ))
(defun gnus-group-post-news (&optional arg)
"Start composing a news message.
(buffer-disable-undo gnus-article-copy)
(save-excursion
(set-buffer gnus-article-copy)
- (when (fboundp 'set-buffer-multibyte)
- (set-buffer-multibyte t)))
+ (mm-enable-multibyte))
(let ((article-buffer (or article-buffer gnus-article-buffer))
end beg)
(if (not (and (get-buffer article-buffer)
:group 'gnus-threading
:type 'string)
-(defcustom gnus-summary-mode-line-format "Gnus: %%b [%A] %Z"
+(defcustom gnus-summary-mode-line-format "Gnus: %g [%A] %Z"
"*The format specification for the summary mode line.
It works along the same lines as a normal formatting string,
with some simple extensions:
"c" gnus-article-highlight-citation
"s" gnus-article-highlight-signature)
+ (gnus-define-keys (gnus-summary-wash-mime-map "M" gnus-summary-wash-map)
+ "w" gnus-article-decode-mime-words
+ "c" gnus-article-decode-charset)
+
(gnus-define-keys (gnus-summary-wash-time-map "T" gnus-summary-wash-map)
"z" gnus-article-date-ut
"u" gnus-article-date-ut
["Headers" gnus-article-highlight-headers t]
["Signature" gnus-article-highlight-signature t]
["Citation" gnus-article-highlight-citation t])
+ ("MIME"
+ ["Words" gnus-article-decode-mime-words t]
+ ["Charset" gnus-article-decode-charset t]
+ ["QP" gnus-article-de-quoted-unreadable t])
("Date"
["Local" gnus-article-date-local t]
["ISO8601" gnus-article-date-iso8601 t]
(make-local-hook 'pre-command-hook)
(add-hook 'pre-command-hook 'gnus-set-global-variables nil t)
(gnus-run-hooks 'gnus-summary-mode-hook)
+ (mm-enable-multibyte)
(gnus-update-format-specifications nil 'summary 'summary-mode 'summary-dummy)
(gnus-update-summary-mark-positions))
number dependencies force-new))))
(push header headers))
(forward-line 1))
- ;(error
- ; (gnus-error 4 "Strange nov line (%d)"
- ; (count-lines (point-min) (point))))
- )
+ (error
+ (gnus-error 4 "Strange nov line (%d)"
+ (count-lines (point-min) (point)))))
(forward-line 1))
;; A common bug in inn is that if you have posted an article and
;; then retrieves the active file, it will answer correctly --
(when (gnus-buffer-exists-p buf)
(kill-buffer buf))))
-(cond
- ((fboundp 'point-at-bol)
- (fset 'gnus-point-at-bol 'point-at-bol))
- ((fboundp 'line-beginning-position)
- (fset 'gnus-point-at-bol 'line-beginning-position))
- (t
- (defun gnus-point-at-bol ()
- "Return point at the beginning of the line."
- (let ((p (point)))
- (beginning-of-line)
- (prog1
- (point)
- (goto-char p))))))
-
-(cond
- ((fboundp 'point-at-eol)
- (fset 'gnus-point-at-eol 'point-at-eol))
- ((fboundp 'line-end-position)
- (fset 'gnus-point-at-eol 'line-end-position))
- (t
- (defun gnus-point-at-eol ()
- "Return point at the end of the line."
- (let ((p (point)))
- (end-of-line)
- (prog1
- (point)
- (goto-char p))))))
+(fset 'gnus-point-at-bol
+ (if (fboundp 'point-at-bol)
+ 'point-at-bol
+ 'line-beginning-position))
+
+(fset 'gnus-point-at-eol
+ (if (fboundp 'point-at-eol)
+ 'point-at-eol
+ 'line-end-position))
(defun gnus-delete-first (elt list)
"Delete by side effect the first occurrence of ELT as a member of LIST."
(erase-buffer))
(set-buffer (gnus-get-buffer-create gnus-work-buffer))
(kill-all-local-variables)
- (buffer-disable-undo (current-buffer))))
+ (mm-enable-multibyte)))
(defmacro gnus-group-real-name (group)
"Find the real name of a foreign newsgroup."
(defconst gnus-product-name "T-gnus"
"Product name of this version of gnus.")
-(defconst gnus-version-number "6.9.04"
+(defconst gnus-version-number "6.9.07"
"Version number for this version of gnus.")
-(defconst gnus-original-version-number "0.10"
+(defconst gnus-original-version-number "0.13"
"Version number for this version of Gnus.")
(defconst gnus-original-product-name "Pterodactyl Gnus"
(defcustom gnus-article-display-hook
(if (and (string-match "XEmacs" emacs-version)
(featurep 'xface))
+;; '(gnus-article-decode-charset - comment out for Semi-gnus
+;; gnus-article-decode-rfc1522 - comment out for Semi-gnus
'(gnus-article-hide-headers-if-wanted
gnus-article-hide-boring-headers
gnus-article-treat-overstrike
gnus-article-maybe-highlight
gnus-article-display-x-face)
+;; '(gnus-article-decode-charset - comment out for Semi-gnus
+;; gnus-article-decode-rfc1522 - comment out for Semi-gnus
'(gnus-article-hide-headers-if-wanted
gnus-article-hide-boring-headers
gnus-article-treat-overstrike
'(("info" Info-goto-node)
("pp" pp pp-to-string pp-eval-expression)
("qp" quoted-printable-decode-region quoted-printable-decode-string)
+ ("rfc2047" rfc2047-decode-region rfc2047-decode-string)
("ps-print" ps-print-preprint)
("mail-extr" mail-extract-address-components)
("browse-url" browse-url)
gnus-article-next-page gnus-article-prev-page
gnus-request-article-this-buffer gnus-article-mode
gnus-article-setup-buffer gnus-narrow-to-page
- gnus-article-delete-invisible-text)
+ gnus-article-delete-invisible-text gnus-hack-decode-rfc1522)
("gnus-art" :interactive t
gnus-article-hide-headers gnus-article-hide-boring-headers
gnus-article-treat-overstrike gnus-article-word-wrap
gnus-article-date-original gnus-article-date-lapsed
gnus-article-show-all-headers
gnus-article-edit-mode gnus-article-edit-article
- gnus-article-edit-done
+ gnus-article-edit-done gnus-decode-rfc1522 article-decode-rfc1522
gnus-start-date-timer gnus-stop-date-timer)
("gnus-int" gnus-request-type)
("gnus-start" gnus-newsrc-parse-options gnus-1 gnus-no-server-1
(string-to-number
(if (zerop major)
(format "%s00%02d%02d"
- (cond
- ((member alpha '("(ding)" "d")) "4.99")
- ((member alpha '("September" "s")) "5.01")
- ((member alpha '("Red" "r")) "5.03")
- ((member alpha '("Quassia" "q")) "5.05")
- ((member alpha '("Pterodactyl" "p")) "5.07")
- ((member alpha '("o")) "5.09")
- ((member alpha '("n")) "5.11"))
+ (if (member alpha '("(ding)" "d"))
+ "4.99"
+ (+ 5 (* 0.02
+ (abs
+ (- (char-int (aref (downcase alpha) 0))
+ (char-int ?t))))
+ -0.01))
minor least)
(format "%d.%02d%02d" major minor least))))))
(require 'mail-abbrevs)
(require 'mailabbrev))
(require 'mime-edit)
+(require 'rfc2047)
+(require 'mm-bodies)
(defgroup message '((user-mail-address custom-variable)
(user-full-name custom-variable))
(erase-buffer))
(set-buffer (get-buffer-create " *message work*"))
(kill-all-local-variables)
- (buffer-disable-undo (current-buffer))))
+ (mm-enable-multibyte)))
(defun message-functionp (form)
"Return non-nil if FORM is funcallable."
(setq adaptive-fill-first-line-regexp
(concat "[ \t]*[-a-z0-9A-Z]*>+[ \t]*\\|"
adaptive-fill-first-line-regexp))
- (when (fboundp 'set-buffer-multibyte)
- (set-buffer-multibyte t))
+ (mm-enable-multibyte)
(run-hooks 'text-mode-hook 'message-mode-hook))
\f
(let ((message-deletable-headers
(if news nil message-deletable-headers)))
(message-generate-headers message-required-mail-headers))
+;; (rfc2047-encode-message-header)
;; Let the user do all of the above.
(run-hooks 'message-header-hook))
+;; (message-encode-message-body)
(unwind-protect
(save-excursion
(set-buffer tembuf)
(message-narrow-to-headers)
;; Insert some headers.
(message-generate-headers message-required-news-headers)
+;; (rfc2047-encode-message-header)
;; Let the user do all of the above.
(run-hooks 'message-header-hook))
+;; (message-encode-message-body)
(message-cleanup-headers)
(if (not (message-check-news-syntax))
(progn
(y-or-n-p "Empty article. Really post? "))))
;; Check for control characters.
(message-check 'control-chars
- (if (re-search-forward "[\000-\007\013\015-\037\200-\237]" nil t)
+ (if (re-search-forward "[\000-\007\013\015-\032\034-\037\200-\237]" nil t)
(y-or-n-p
"The article contains control characters. Really post? ")
t))
(setq idx (1+ idx)))
string))
+;;;
+;;; MIME functions
+;;;
+
+(defun message-encode-message-body ()
+ "Examine the message body, encode it, and add the requisite headers."
+ (when (featurep 'mule)
+ (save-excursion
+ (save-restriction
+ (message-narrow-to-headers)
+ (message-remove-header
+ "^Content-Transfer-Encoding:\\|^Content-Type:\\|^Mime-Version:" t)
+ (goto-char (point-max))
+ (widen)
+ (narrow-to-region (point) (point-max))
+ (let* ((charset (mm-encode-body))
+ (encoding (mm-body-encoding)))
+ (when (consp charset)
+ (error "Can't encode messages with multiple charsets (yet)"))
+ (widen)
+ (message-narrow-to-headers)
+ (goto-char (point-max))
+ (mm-insert-rfc822-headers
+ (or charset (mm-mule-charset-to-mime-charset 'ascii))
+ encoding))))))
+
(run-hooks 'message-load-hook)
(provide 'message)
--- /dev/null
+;;; mm-bodies.el --- Functions for decoding MIME things
+;; Copyright (C) 1998 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
+;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(require 'mm-util)
+
+(defun mm-encode-body ()
+ "Encode a body.
+Should be called narrowed to the body that is to be encoded.
+If there is more than one non-ASCII MULE charset, then list of found
+MULE charsets are returned.
+If successful, the MIME charset is returned.
+If no encoding was done, nil is returned."
+ (save-excursion
+ (goto-char (point-min))
+ (let ((charsets
+ (delq 'ascii (find-charset-region (point-min) (point-max))))
+ charset)
+ (cond
+ ;; No encoding.
+ ((null charsets)
+ nil)
+ ;; Too many charsets.
+ ((> (length charsets) 1)
+ charsets)
+ ;; We encode.
+ (t
+ (let ((mime-charset (mm-mule-charset-to-mime-charset (car charsets)))
+ start)
+ (when (not (mm-coding-system-equal
+ mime-charset buffer-file-coding-system))
+ (while (not (eobp))
+ (if (eq (char-charset (following-char)) 'ascii)
+ (when start
+ (mm-encode-coding-region start (point) mime-charset)
+ (setq start nil))
+ (unless start
+ (setq start (point))))
+ (forward-char 1))
+ (when start
+ (mm-encode-coding-region start (point) mime-charset)
+ (setq start nil)))
+ mime-charset))))))
+
+(defun mm-body-encoding ()
+ "Return the encoding of the current buffer."
+ (if (null (delq 'ascii (find-charset-region (point-min) (point-max))))
+ '7bit
+ '8bit))
+
+;;;
+;;; Functions for decoding
+;;;
+
+(defun mm-decode-body (charset encoding)
+ "Decode the current article that has been encoded with ENCODING.
+The characters in CHARSET should then be decoded."
+ (save-excursion
+ (when encoding
+ (cond
+ ((eq encoding 'quoted-printable)
+ (quoted-printable-decode-region (point-min) (point-max)))
+ ((eq encoding 'base64)
+ (base64-decode-region (point-min) (point-max)))
+ ((memq encoding '(7bit 8bit binary))
+ )
+ (t
+ (error "Can't decode encoding %s" encoding))))
+ (when (featurep 'mule)
+ (let (mule-charset)
+ (when (and charset
+ (setq mule-charset (mm-charset-to-coding-system charset))
+ (not (mm-coding-system-equal
+ buffer-file-coding-system mule-charset)))
+ (mm-decode-coding-region (point-min) (point-max) mule-charset))))))
+
+(provide 'mm-bodies)
+
+;; mm-bodies.el ends here
-;;; mm-decode.el --- Function for decoding MIME things
+;;; mm-decode.el --- Functions for decoding MIME things
;; Copyright (C) 1998 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
(fset 'mm-encode-coding-string (lambda (s a) s))))
(eval-and-compile
+ (if (fboundp 'encode-coding-region)
+ (fset 'mm-encode-coding-region 'encode-coding-region)
+ (fset 'mm-encode-coding-string 'ignore)))
+
+(eval-and-compile
+ (if (fboundp 'decode-coding-region)
+ (fset 'mm-decode-coding-region 'decode-coding-region)
+ (fset 'mm-decode-coding-string 'ignore)))
+
+(eval-and-compile
(if (fboundp 'coding-system-list)
(fset 'mm-coding-system-list 'coding-system-list)
(fset 'mm-coding-system-list 'ignore)))
+(eval-and-compile
+ (if (fboundp 'coding-system-equal)
+ (fset 'mm-coding-system-equal 'coding-system-equal)
+ (fset 'mm-coding-system-equal 'equal)))
+
(defvar mm-mime-mule-charset-alist
'((us-ascii ascii)
(iso-8859-1 latin-iso8859-1)
(setq idx (1+ idx)))
string))
+(defun mm-enable-multibyte ()
+ "Enable multibyte in the current buffer."
+ (when (fboundp 'set-buffer-multibyte)
+ (set-buffer-multibyte t)))
+
+(defun mm-insert-rfc822-headers (charset encoding)
+ "Insert text/plain headers with CHARSET and ENCODING."
+ (insert "MIME-Version: 1.0\n")
+ (insert "Content-Type: text/plain; charset=\""
+ (downcase (symbol-name charset)) "\"\n")
+ (insert "Content-Transfer-Encoding: "
+ (downcase (symbol-name encoding)) "\n"))
+
+(defun mm-content-type-charset (header)
+ "Return the charset parameter from HEADER."
+ (when (string-match "charset *= *\"? *\\([-0-9a-zA-Z_]+\\)\"? *$" header)
+ (intern (downcase (match-string 1 header)))))
+
+(defun mm-read-coding-system (prompt)
+ "Prompt the user for a coding system."
+ (completing-read
+ prompt (mapcar (lambda (s) (list (symbol-name (car s))))
+ mm-mime-mule-charset-alist)))
+
(provide 'mm-util)
;;; mm-util.el ends here
(unless (gnus-buffer-live-p nntp-server-buffer)
(setq nntp-server-buffer (get-buffer-create " *nntpd*")))
(set-buffer nntp-server-buffer)
- (buffer-disable-undo (current-buffer))
(erase-buffer)
(kill-all-local-variables)
(setq case-fold-search t) ;Should ignore case.
:group 'nnmail-split
:type '(repeat (cons :format "%v" symbol regexp)))
-(defcustom nnmail-delete-incoming t
+(defcustom nnmail-delete-incoming nil
"*If non-nil, the mail backends will delete incoming files after
splitting."
:group 'nnmail-retrieve
(downcase (symbol-name encoding)) "?")))
(save-restriction
(narrow-to-region b e)
- (insert
- (prog1
- (mm-encode-coding-string (buffer-string) mime-charset)
- (delete-region (point-min) (point-max))))
+ (mm-encode-coding-region b e mime-charset)
(funcall (cdr (assq encoding rfc2047-encoding-function-alist))
(point-min) (point-max))
(goto-char (point-min))
(defun rfc2047-decode-string (string)
"Decode the quoted-printable-encoded STRING and return the results."
(with-temp-buffer
+ (mm-enable-multibyte)
(insert string)
(inline
(rfc2047-decode-region (point-min) (point-max)))
word)))
(defun rfc2047-decode (charset encoding string)
- "Decode STRING as an encoded text.
+ "Decode STRING that uses CHARSET with ENCODING.
Valid ENCODINGs are \"B\" and \"Q\".
If your Emacs implementation can't decode CHARSET, it returns nil."
(let ((cs (mm-charset-to-coding-system charset)))
1998-08-31 11:46:57 Lars Magne Ingebrigtsen <larsi@gnus.org>
* gnus.texi (Mail Folders): Addition.
+ (Group Parameters): Addition.
+ (MIME Commands): New.
1998-08-27 07:29:17 Lars Magne Ingebrigtsen <larsi@gnus.org>
\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Semi-gnus 6.9.04 Manual
+@settitle Semi-gnus 6.0.07 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Semi-gnus 6.9.04 Manual
+@title Semi-gnus 6.0.07 Manual
@author by Lars Magne Ingebrigtsen
@page
API. So Semi-gnus does not discriminate various language communities.
Oh, if you are a Klingon, please wait Unicode Next Generation.
-This manual corresponds to Semi-gnus 6.9.04.
+This manual corresponds to Semi-gnus 6.0.07.
@end ifinfo
arbitrary comments on the group. They are currently ignored by gnus,
but provide a place for you to store information on particular groups.
+@item charset
+Elements that look like @code{(charset . iso-8859-1)} will make
+@code{iso-8859-1} the default charset; that is, the charset that will be
+used for all articles that do not specify a charset.
+
@item @var{(variable form)}
You can use the group parameters to set variables local to the group you
are entering. If you want to turn threading off in @samp{news.answers},
* Saving Articles:: Ways of customizing article saving.
* Decoding Articles:: Gnus can treat series of (uu)encoded articles.
* Article Treatment:: The article buffer can be mangled at will.
+* MIME Commands:: Doing MIMEy things with the articles.
* Article Commands:: Doing various things with the article buffer.
* Summary Sorting:: Sorting the summary buffer in various ways.
* Finding the Parent:: No child support? Get the parent.
signature after all.
+@node MIME Commands
+@section MIME Commands
+@cindex MIME decoding
+
+@table @kbd
+@item W M w
+@kindex W M w (Summary)
+Decode RFC2047-encoded words in the article headers
+(@code{gnus-article-decode-mime-words}).
+
+@item W M c
+@kindex W M c (Summary)
+Decode encoded article bodies as well as charsets
+(@code{gnus-article-decode-charset}).
+
+This command looks in the @code{Content-Type} header to determine the
+charset. If there is no such header in the article, you can give it a
+prefix, which will prompt for the charset to decode as. In regional
+groups where people post using some common encoding (but do not include
+MIME headers), you can set the @code{charset} group/topic parameter to
+the required charset (@pxref{Group Parameters}).
+
+@end table
+
+
@node Article Commands
@section Article Commands
@item summary-highlight
Do highlights in the summary buffer.
@item article-highlight
-Do highlights in the article buffer.
+Do highlights according to @code{gnus-article-display-hook} in the
+article buffer.
@item highlight
Turn on highlighting in all buffers.
@item group-menu
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Pterodactyl Message 0.10 Manual
+@settitle Pterodactyl Message 0.13 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
@tex
@titlepage
-@title Pterodactyl Message 0.10 Manual
+@title Pterodactyl Message 0.13 Manual
@author by Lars Magne Ingebrigtsen
@page
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Pterodactyl Message 0.10. Message is
+This manual corresponds to Pterodactyl Message 0.13. Message is
distributed with the Gnus distribution bearing the same version number
as this manual has.